Thread tag names from collect_tags() through generate_sitemap_file to generate_sitemap, appending /tags/<tag>.html entries to sitemap.xml output. Refactor: hoist collect_tags into run(), rename generate_tag_pages to write_tag_pages. Test suite: 83 → 84, phase 3 complete.
sukr
Minimal static site compiler — suckless, Rust, zero JS.
sukr transforms Markdown content into high-performance static HTML. No bloated runtimes, no client-side JavaScript, just clean output.
Why sukr?
Most static site generators punt rich content to the browser. sukr doesn't.
- Tree-sitter syntax highlighting — Proper parsing, not regex. Supports language injection (Nix shells, HTML scripts).
- Build-time math — KaTeX renders LaTeX to static HTML. No 300KB JavaScript bundle.
- Build-time diagrams — Mermaid compiles to inline SVG. Diagrams load instantly.
- Tera templates — Customize layouts without recompiling.
- Monorepo support — Multiple sites via
-cflag.
See the full feature comparison with Zola, Hugo, and Eleventy.
Quick Start
cargo build --release
sukr # Build with ./site.toml
sukr -c docs/site.toml # Custom config (monorepo)
See the Getting Started guide for installation and first-site setup, Configuration for site.toml options, and Content Organization for directory layout.
Security
sukr processes content at build time only — there is no runtime attack surface.
- Untrusted: Markdown content, frontmatter, third-party templates
- Trusted: The compiled sukr binary, Tree-sitter grammars
Raw HTML in Markdown is passed through per CommonMark spec — review content from untrusted sources before building. Templates use Tera's auto-escaping by default.
For deployment security (CSP headers, platform configs), see the Security docs.
Documentation
Full documentation at sukr.io (built with sukr).
License
MIT
