neko_ssg
markdown files go into content/, html comes out in public/, and a singlebase.html decides what it looks like. three commands: new makes a post,update fixes its front matter, build renders the lot and writes an index.
the constraint was no dependencies at all — the standard library only. front
matter is parsed by hand between two --- lines, tomllib reads the config,
and everything that goes into a page is escaped through html.escape rather
than trusted. it is the same shape as the pipeline behind this site, just
written out by hand instead of handed to a bundler, which is exactly why it was
worth writing: you find out what a generator actually does when there is no
framework doing it for you.