I stopped copy-pasting my lint rules into 12 different config files
Every project I work on has the same problem: my lint/test/build rules exist in my CI workflow, my pre-commit hook, my .cursorrules, my AGENTS.md, my GEMINI.md, and 7 more files. When I change a ru...

Source: DEV Community
Every project I work on has the same problem: my lint/test/build rules exist in my CI workflow, my pre-commit hook, my .cursorrules, my AGENTS.md, my GEMINI.md, and 7 more files. When I change a rule in one place, the others drift. I built crag to fix this. What it does You write one ~20-line governance.md. crag compiles it to 12 downstream files atomically: .github/workflows/gates.yml (GitHub Actions) .husky/pre-commit .pre-commit-config.yaml AGENTS.md (Codex, Aider, Factory) .cursor/rules/governance.mdc GEMINI.md .github/copilot-instructions.md .clinerules, .continuerules, .windsurfrules .zed/rules.md .sourcegraph/cody-instructions.md Change one line, regenerate everything. Try it in 3 seconds npx @whitehatd/crag demo No install. No config. No network. No LLM. ~500ms to a verified 12-target pipeline with a determinism SHA printed inline. What backs it up 512 tests passing across Ubuntu + macOS + Windows Ă— Node 18/20/22 Stress-tested on 101 OSS repos (4,400 invocations, 0 crashes) Ref