Add draft filtering at discovery source functions: collect_items(), discover_nav(), discover_pages(). Posts, feed, and sitemap inherit filtering automatically via collect_items(). Items with frontmatter draft = true are excluded from section listings, navigation, feed, and sitemap. Default is false — no behavior change for existing content. Add 3 tests. Test suite: 73 → 76, all passing.
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
