Files
sukr/AGENTS.md
Timothy DeHerrera a73359098e docs: humanize documentation and update architecture
- 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.
2026-01-24 22:28:38 -07:00

128 lines
3.4 KiB
Markdown

# Project Agent Configuration
## Predicates
This project uses [predicate](https://github.com/nrdxp/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**:
1. **Ingest:** Walk `content/`, parse TOML frontmatter
2. **Stream:** Feed Markdown to `pulldown-cmark` event parser
3. **Intercept:** Route code blocks to Tree-sitter, Mermaid, KaTeX
4. **Render:** Push modified events to HTML writer
5. **Layout:** Wrap in `maud` templates
6. **Write:** Output to `public/`
---
## Build & Commands
```bash
# 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.md` conventions
- 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`:
```toml
title = "nrd.sh"
author = "nrdxp"
base_url = "https://nrd.sh/"
```