canon is a CLI and Claude Code plugin that keeps one authoritative copy and installs it into each project on demand.
See how it installsThe 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
Working
Completed
… 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.
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
Read from the catalogs when this page was built.
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
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.
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.
.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.
Everything above is read from this repository. The documentation is the same way.