Moving from CLAUDE.md rules to infrastructure enforcement with Citadel

The problem with rule accumulation
When Claude ignored instructions, the instinct was to add more rules to CLAUDE.md. Starting at 45 lines, it grew to 190 lines over three months, but compliance worsened. Instructions past line 100 started being treated as suggestions rather than rules. A forensic audit revealed 40% redundancy—rules saying the same thing in different words, rules contradicting each other, and outdated rules. Trimming to 123 lines improved compliance immediately.
The infrastructure shift
The real fix was recognizing CLAUDE.md as an intake point for orientation (project conventions, tech stack, key priorities), not a permanent home for all rules. Everything else should be loaded only when needed. The key shift: moving enforcement from instructions to the environment.
For example, instead of a rule saying "always run typecheck after editing a file," which Claude followed inconsistently, a lifecycle hook script runs automatically on every file save. This ensures typechecking happens without agent choice, surfacing errors immediately rather than 20 edits later. This cut review time dramatically, allowing focus on intent and design rather than chasing type errors.
The progression system
The author outlines a five-level progression:
- Level 1: Raw prompting (nothing persists, same mistakes repeat)
- Level 2: CLAUDE.md (rules help but hit a ceiling around 100 lines)
- Level 3: Skills (modular expertise that loads on demand, zero tokens when inactive)
- Level 4: Hooks (environment enforces quality, not instructions)
- Level 5: Orchestration (parallel agents, persistent campaigns, coordinated waves)
Most projects are fine at Level 2 or 3. The critical insight: when CLAUDE.md stops working, the answer isn't more rules—it's moving enforcement into infrastructure.
Specific implementations
The author implemented three key systems:
- Skills: Markdown files encoding patterns, constraints, and examples for specific domains. The agent loads relevant skills for the current task, avoiding token waste on irrelevant context.
- Campaign files: Structured documents tracking what was built, decisions made, and what remains. These persist across sessions, eliminating daily re-explanations.
- Automated hooks: Typecheck on every edit, anti-pattern scanning on session end, circuit breaker killing the agent after 3 repeated failures on the same issue, and compaction protection saving state before Claude compresses context.
Citadel: The open-source system
The full system, called Citadel, has been open-sourced at https://github.com/SethGammon/Citadel. It includes the skill system, hooks, campaign persistence, and a /do command that routes tasks to the right orchestration level automatically. Built from 27 documented failures across 198 agents on a 668K-line codebase, every rule traces to something that broke.
📖 Read the full source: r/ClaudeAI
👀 See Also

EvalShift: Open-source CLI for detecting LLM regressions during model migration
EvalShift is an MIT-licensed Python CLI that compares source vs target LLM outputs across prompts, agents, and tool-calling workflows, generating a local HTML regression report.

One-Command Docker Setup for OpenClaw with Full-Disk Encryption and Monitoring
A Docker setup for OpenClaw that provides full-disk encryption guides, Tini as PID 1, built-in monitoring tools, and data stored as plain files on the host. Deployment requires just two commands: git clone and ./shell.

Tilde.run: An Agent Sandbox with a Transactional, Versioned Filesystem
Tilde.run provides isolated, reversible sandboxes for AI agents, with a versioned filesystem that mounts GitHub, S3, and Google Drive, and network isolation by default.

ARP: Stateless WebSocket Relay for Autonomous Agent Communication
ARP (Agent Relay Protocol) is a stateless WebSocket relay for autonomous agent communication featuring Ed25519 identity, HPKE encryption per RFC 9180, binary TLV framing, and 33 bytes overhead per message. No accounts or registration required—just generate a keypair and connect.