About canon
canon is a skill that guides agents to check project governance, design intent, and implementation guidance before making changes. It uses the doctrine CLI to consult relevant sources and calls for clarification when rules are missing or conflicting.
Key features
- 01Check project instructions and governance
- 02Find and read guidance with doctrine commands
- 03Select authoritative sources relevant to a task
- 04Pause for clarification when governance is unclear
Use cases
- 01Confirm project conventions before editing code
- 02Use design documents and ADRs to guide implementation
- 03Find file-specific constraints and established patterns
Install
Copy the command and run it in a terminal.
npx skills add https:/ / github.com/ davidlee/ doctrine --skill canonAfter installing, type/canonin Claude Code to confirm it loaded.
Details
From the project READMECanon
Understand project governance before you act, so you do not spread heresy.
Articles of truth
Identify the authorities that bear on your task, then read the ones that carry meaning for it — not all of them, every time. The CLI is the source of truth — see [[mem.fact.doctrine.cli-source-of-truth]].
CLAUDE.md,AGENTS.md— standing instructions and conventions. Project conventions are documented in [[mem.pattern.doctrine.conventions]].- project governance - list each of these; read any which are potentially relevant
in full, with
doctrine <kind> show <id>:doctrine spec list- specs describing product intent / technical architecturedoctrine adr list- architecture decision recordsdoctrine policy list- policiesdoctrine standard list- standards of practice- or jump straight to the ones bearing on your task:
doctrine search "<keywords>" -k governance. Policies and standards sit outside the default kind scope, so a bare search misses exactly the rules you came for —lib:reference/using-doctrine.mdhas the scope and the widening flags.
- the governing slice's
design.md— canon for this change's design intent.
For implementation truth (gotchas, patterns, invariants tied to files or
commands), /retrieve-memory rather than rediscovering it.
Read entities tier-aware — via show, never a single raw file. The storage
rule + read-via-show discipline are resident in the boot digest and detailed in
lib:reference/using-doctrine.md. The storage model and storage rule are
documented in
[[mem.concept.doctrine.storage-model]]; storage tiers: authored, runtime,
derived — see [[mem.fact.doctrine.storage-tiers]]. Reading one tier and
concluding "empty" is false witness.
The mortal sins
Beware — and refuse to commit:
- assumption — acting on what you guessed instead of what you confirmed.
- guesswork — inventing ids, command shapes, or file locations.
- duplication — a parallel implementation where a seam already exists.
- architectural infidelity — violating the design or an ADR.
- heretical coupling — new imports or dependencies that breach boundaries.
If governance is missing, contradictory, or ambiguous on a choice that matters,
stop and /consult rather than normalizing around a guess.