- content/about.md: Rewrite with first-person voice, remove
"next-generation" and "craft tools that emphasize" patterns.
Add personality ("probably more than it should").
- content/collab.md: More direct language, remove "find value in"
and "broader community" hedging. Shorter bullet lists.
- AGENTS.md: Remove "state-of-the-art", update architecture tree
to reflect current modules (config, feed, templates), fix
stale config section to show actual site.toml usage.
3.4 KiB
3.4 KiB
Project Agent Configuration
Predicates
This project uses predicate for agent configuration.
Installation Location: .agent/predicates/
The agent MUST read and adhere to the global engineering ruleset and any active fragments:
.agent/
├── predicates/
│ ├── global.md # Base engineering ruleset (required)
│ └── fragments/ # Active extensions
│ └── rust.md # Rust conventions
└── workflows/
└── ... # Task-specific workflows
Active Fragments:
- Rust idioms (
.agent/predicates/fragments/rust.md) - DepMap MCP tools (
.agent/predicates/fragments/depmap.md)
Available Workflows:
/ai-audit— Audit code for AI-generated patterns/core— C.O.R.E. structured interaction protocol/predicate— Re-read global rules; combats context drift/humanizer— Remove AI writing patterns from text
Project Overview
nrd.sh is a bespoke static site compiler written in Rust. It transforms Markdown content into a minimal, high-performance static site with zero client-side dependencies.
Philosophy
- Suckless: No bloated runtimes, no unnecessary JavaScript
- Hermetic: Single binary with all dependencies compiled in
- Elegant: Syntax highlighting via Tree-sitter
Architecture
The compiler implements an Interceptor Pipeline:
- Ingest: Walk
content/, parse TOML frontmatter - Stream: Feed Markdown to
pulldown-cmarkevent parser - Intercept: Route code blocks to Tree-sitter, Mermaid, KaTeX
- Render: Push modified events to HTML writer
- Layout: Wrap in
maudtemplates - Write: Output to
public/
Build & Commands
# Development
nix develop # Enter dev shell with Rust toolchain
cargo build # Build compiler
cargo run # Run compiler (builds site to public/)
# Production
nix build # Build hermetic release binary
./result/bin/nrd-sh # Run release compiler
Code Style
- Rust 2024 edition
- Follow
.agent/predicates/fragments/rust.mdconventions - Prefer standard library over external crates
- No
unwrap()in library code; use proper error handling
Architecture
.
├── Cargo.toml # Rust manifest
├── flake.nix # Nix build environment
├── site.toml # Site configuration
├── src/
│ ├── main.rs # Pipeline orchestrator
│ ├── config.rs # TOML config loader
│ ├── feed.rs # Atom feed generation
│ ├── highlight.rs # Tree-sitter highlighting
│ ├── render.rs # Pulldown-cmark interception
│ └── templates.rs # Maud HTML templates
├── content/ # Blog content (Markdown + YAML frontmatter)
├── static/ # CSS, images, _headers
└── public/ # Generated output
Testing
- Test runner:
cargo test - Naming:
test_<scenario>_<expected_outcome> - Focus on content transformation correctness
Security
- No user input at runtime (build-time only)
- Validate frontmatter schema during parsing
- No secrets in content or templates
Configuration
Site configuration lives in site.toml:
title = "nrd.sh"
author = "nrdxp"
base_url = "https://nrd.sh/"