Once you work across more than one repository, your AI conventions start to drift.
canon is a CLI and Claude Code plugin that keeps one authoritative copy and installs it into each project on demand.
See how it installsIt runs on itself
The workflow this toolkit ships is the workflow that built it. Several Claude Code sessions run at once, each in its own git worktree on its own branch, and each opens its own pull request.
4 working 4 completed
3 working 5 completed
Pinned
- orchestrator-canon-lead dispatching the planners that need a plan 4d
Working
- worker-canon-agent-view-and-deploy PR #1510 open (landing page) #1510 5h
- planner-canon-context-wireframe-draft drafting the context and wireframe plan 2m
- planner-canon-skill-coverage-pointers reading the skill coverage pointers 1m
- planner-canon-screenshot-trap-guard planning the screenshot trap guard 1m
Completed
- worker-canon-agent-view-and-deploy pull request opened #1510 5h
- planner-canon-write-route-hook-bypass plan written; tested write probe 32m
- planner-canon-indexes-list-lookup plan and task board consistent 13m
- worker-canon-labels-scan-body-file address-review pass finished #1508 21m
- worker-canon-web-context-entry PR #1507 addressed with commit #1507 20m
… 16 more
Session rows are a real canon sessions list --json read taken on . The activity text and the pull request number are transcribed, since no verb here reports either.
Two commands and the toolkit is present
Add the marketplace, then install the Claude Code plugin.
claude plugin marketplace add https://github.com/erclx/canon claude plugin install canon@canon The skills land as /canon:<name>. If your session was already open, run /reload-plugins to pick them up.
Several skills call the canon CLI to read catalogs and run installs, and the plugin doesn't put it on your path.
bun install --global @erclx/canon The size of what installs
- 78
- skills
- 71
- rules
- 30
- standards
- 11
- snippets
- 41
- commands
- 20
- audits
Read from the catalogs when this page was built.
Rules load into a Claude session when a matching path is edited. Every domain is listed below with the number of rules it holds, and a sample of each.
All 8 domains, a sample of each. 71 rules, read from the catalog when this page was built.
- Claude Code plugin
- skills that plan a feature, review a diff, sync the planning docs, and run the ship chain from branch through pull request
- Governance rules
- coding and authoring rules that load into a Claude session when a matching path is edited
- Standards
- authoring conventions read by name with canon standards <name> rather than copied into your project
- Snippets
- reusable prompts fired by @ reference, resolved live from the plugin with no install step
- Tooling stacks
- golden configs, seeds, and a reference per framework, laid down by canon init
- Design system
- a DESIGN.md token format, a skill that drafts one, and a render command
A rule arrives because of what you touched, not at startup
Governance rules load into a Claude session when a matching path is edited, installed per project and refreshed by sync.
Editing
src/design/tokens.ts src/**/*.ts
Naming standards
Prefix booleans with is, has, should, or can: isLoading, hasAccess.
.claude/rules/canon/core/060-naming.md
What a target receives
Some domains are copied into your project and become yours to edit, and some are never copied at all. A tooling stack lands as real files under version control. A standard stays here and is opened by name, so there is no copy in your repo to drift from this one.
Both columns are read from the tooling and standards catalogs when this page is built.
A rule with a glob loads only when a matching path is edited, and a rule with none loads every session. Stacks compose, so a project inherits every rule its stack depends on.
Work tracked in files, archived by a merge
.canon/tasks/ is gitignored session scratch, one row per task in flight, each naming the files it touches and the plan it runs under. A merge is what closes it, not a checkbox someone remembers to tick.
A hand-taken snapshot rather than something this build reads live, and it goes stale the moment the board moves.
Read the rest, or install it now
Everything above is read from this repository. The documentation is the same way.