Standards

A versioned catalogue of 376 rules — core plus 16 stacks — and the only files a human edits. Everything a developer's tooling actually sees is generated from these.

What a standard is here

Two paths and a version number: standards/core.md for the rules every repository gets, standards/stacks/*.md for the sixteen stack sets, both versioned together in standards/manifest.json. What a repository ends up with — .github/copilot-instructions.md, AGENTS.md, CLAUDE.md, .cursor/rules/ — is rendered from those by the CLI and written in by redline init.

What a developer actually sees

A developer never opens standards/. They meet it as a review comment. This is the output contract the standard specifies for a reviewer — every finding begins with a machine-readable prefix, a real rule pulled straight out of standards/core.md:

a real finding
Redline/BLOCKER [core/query-string-concatenation]: No query built by string concatenation with external input — parameterised only.
Use a parameterised query: db.Query("SELECT id FROM users WHERE name = $1", name)

Then one or two sentences: why it breaks, and the concrete fix. One finding per comment. What each severity obliges the developer to do, why the bracketed id is permanent, and the “what NOT to flag” section every standard ships are all on The output contract.

A repo installs exactly one profile

A profile names exactly which stacks apply, and never composes two rule sets that contradict each other — which is what keeps every stack's globs plain and unambiguous inside a repository. redline init proposes one by scanning the repo; --profile <name> overrides the guess. The sixteen of them, and why glob negation was not the answer, are on Profiles & stacks.

Browse the standards

The full source, plus a rule reference table grouped by severity, per stack.