@erclx/canon 5.31.0 → 5.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/claude/.claude-plugin/plugin.json +1 -1
- package/claude/skills/api-design/references/adopted.md +1 -1
- package/claude/skills/auto-ship/REQUIREMENT.md +4 -16
- package/claude/skills/auto-ship/SKILL.md +13 -58
- package/claude/skills/auto-ship/references/draft-mark.md +2 -2
- package/claude/skills/auto-ship/references/failure-recovery.md +1 -5
- package/claude/skills/auto-ship/references/tier-failures.md +1 -1
- package/claude/skills/auto-ship/references/ui-checklist.md +2 -2
- package/claude/skills/auto-ship/references/verb-absent.md +3 -27
- package/claude/skills/auto-ship/references/worktree-name.md +1 -1
- package/claude/skills/backlog-triage/REQUIREMENT.md +2 -2
- package/claude/skills/backlog-triage/SKILL.md +2 -2
- package/claude/skills/canon-cli/REQUIREMENT.md +19 -18
- package/claude/skills/canon-cli/SKILL.md +75 -32
- package/claude/skills/canon-feedback/REQUIREMENT.md +1 -1
- package/claude/skills/canon-feedback/SKILL.md +11 -14
- package/claude/skills/canon-feedback-triage/REQUIREMENT.md +13 -14
- package/claude/skills/canon-feedback-triage/SKILL.md +49 -30
- package/claude/skills/{canvas → canvas-board}/REQUIREMENT.md +5 -6
- package/claude/skills/{canvas → canvas-board}/SKILL.md +7 -7
- package/{standards → claude/skills/canvas-board/references}/canvas.md +12 -1
- package/{standards → claude/skills/canvas-board/references}/design.md +13 -5
- package/claude/skills/ci-workflow/REQUIREMENT.md +0 -1
- package/claude/skills/context-fold/REQUIREMENT.md +28 -48
- package/claude/skills/context-fold/SKILL.md +26 -95
- package/claude/skills/context-fold/references/classify.md +7 -8
- package/claude/skills/context-fold/references/completion-report.md +4 -8
- package/claude/skills/context-fold/references/context-refresh.md +7 -17
- package/{standards → claude/skills/context-fold/references}/context.md +19 -10
- package/claude/skills/context-fold/references/unusable-baseline.md +4 -8
- package/claude/skills/create-rule/REQUIREMENT.md +0 -1
- package/claude/skills/create-rule/SKILL.md +2 -2
- package/{standards → claude/skills/create-rule/references}/rule.md +12 -5
- package/claude/skills/create-skill/REQUIREMENT.md +6 -4
- package/claude/skills/create-skill/SKILL.md +10 -9
- package/{standards → claude/skills/create-skill/references}/skill-paths.md +1 -0
- package/{standards → claude/skills/create-skill/references}/skill.md +18 -15
- package/claude/skills/decision-escalate/REQUIREMENT.md +1 -1
- package/claude/skills/decision-escalate/SKILL.md +1 -1
- package/claude/skills/design-taste/REQUIREMENT.md +3 -5
- package/claude/skills/design-taste/SKILL.md +2 -4
- package/claude/skills/design-taste/references/vocabulary.md +1 -1
- package/claude/skills/docs-sync/REQUIREMENT.md +3 -3
- package/claude/skills/docs-sync/SKILL.md +3 -3
- package/{standards → claude/skills/docs-sync/references}/docs.md +11 -0
- package/{standards → claude/skills/docs-sync/references}/readme.md +9 -2
- package/claude/skills/document-health/REQUIREMENT.md +2 -2
- package/claude/skills/document-health/SKILL.md +4 -5
- package/claude/skills/document-health/references/axes.md +4 -6
- package/claude/skills/draft-and-pick/REQUIREMENT.md +16 -14
- package/claude/skills/draft-and-pick/SKILL.md +40 -32
- package/claude/skills/draft-and-pick/references/live-arms.md +9 -9
- package/claude/skills/draft-doc/REQUIREMENT.md +5 -5
- package/claude/skills/draft-doc/SKILL.md +9 -10
- package/claude/skills/draft-doc/references/requirements.md +61 -0
- package/claude/skills/draft-doc/references/wiki-kind.md +53 -0
- package/claude/skills/draft-doc/references/wiki.md +50 -30
- package/claude/skills/draft-figure/REQUIREMENT.md +2 -2
- package/claude/skills/draft-figure/SKILL.md +5 -5
- package/claude/skills/draft-figure/references/architecture-set.md +4 -4
- package/claude/skills/draft-figure/references/hand-drawn.md +2 -2
- package/claude/skills/draft-figure/references/mermaid-path.md +55 -0
- package/claude/skills/draft-figure/references/mermaid.md +43 -34
- package/claude/skills/draft-identity/REQUIREMENT.md +3 -3
- package/claude/skills/draft-identity/SKILL.md +10 -8
- package/claude/skills/draft-ready/REQUIREMENT.md +1 -1
- package/claude/skills/draft-ready/SKILL.md +7 -7
- package/claude/skills/draft-ready/references/assembly.md +1 -1
- package/{standards → claude/skills/draft-ready/references}/ready.md +13 -5
- package/claude/skills/git-branch/SKILL.md +1 -1
- package/{standards → claude/skills/git-branch/references}/branch.md +1 -1
- package/claude/skills/git-commit/SKILL.md +2 -2
- package/claude/skills/git-followup/REQUIREMENT.md +1 -1
- package/claude/skills/git-followup/SKILL.md +1 -1
- package/claude/skills/git-issue/SKILL.md +1 -1
- package/claude/skills/git-issue/references/issue.md +3 -3
- package/claude/skills/git-pr/SKILL.md +13 -13
- package/claude/skills/git-pr/references/evidence.md +2 -2
- package/claude/skills/git-pr/references/final-command.md +38 -14
- package/claude/skills/git-pr/references/labels.md +5 -1
- package/{standards → claude/skills/git-pr/references}/pr.md +19 -9
- package/{standards → claude/skills/git-pr/references}/publish.md +5 -3
- package/claude/skills/git-pr/references/task-number.md +1 -1
- package/claude/skills/git-ship/REQUIREMENT.md +0 -2
- package/claude/skills/git-ship/SKILL.md +5 -12
- package/claude/skills/git-split/SKILL.md +3 -3
- package/claude/skills/git-stage/SKILL.md +1 -1
- package/claude/skills/plan-feature/REQUIREMENT.md +1 -1
- package/claude/skills/plan-feature/SKILL.md +2 -6
- package/{standards → claude/skills/plan-feature/references}/plan.md +9 -10
- package/claude/skills/plan-groundwork/SKILL.md +5 -6
- package/{standards → claude/skills/plan-groundwork/references}/groundwork.md +17 -4
- package/claude/skills/plan-intake/SKILL.md +2 -3
- package/{standards → claude/skills/plan-intake/references}/intake.md +17 -2
- package/claude/skills/plan-intake-answer/REQUIREMENT.md +1 -1
- package/claude/skills/plan-intake-answer/SKILL.md +1 -1
- package/claude/skills/review-address/SKILL.md +2 -2
- package/claude/skills/review-address/references/post-review-findings.md +1 -1
- package/claude/skills/review-craft/REQUIREMENT.md +3 -3
- package/claude/skills/review-craft/SKILL.md +2 -2
- package/claude/skills/review-craft/references/ui.md +4 -4
- package/claude/skills/review-pr/REQUIREMENT.md +2 -2
- package/claude/skills/review-pr/SKILL.md +8 -10
- package/claude/skills/review-pr/references/body-variants.md +2 -2
- package/claude/skills/review-pr/references/key-changes.md +3 -3
- package/claude/skills/review-pr/references/post.md +4 -2
- package/claude/skills/review-ui/REQUIREMENT.md +1 -2
- package/claude/skills/review-ui/SKILL.md +2 -2
- package/claude/skills/review-ui/references/post.md +1 -1
- package/claude/skills/role-orchestrator/REQUIREMENT.md +3 -3
- package/claude/skills/role-orchestrator/SKILL.md +10 -10
- package/claude/skills/role-orchestrator/references/orchestrator-dispatch.md +3 -3
- package/claude/skills/role-orchestrator/references/orchestrator-handoff.md +9 -9
- package/claude/skills/role-orchestrator/references/orchestrator-launch.md +23 -1
- package/claude/skills/role-orchestrator/references/orchestrator-parked.md +2 -2
- package/claude/skills/role-orchestrator/references/orchestrator-refill.md +2 -5
- package/claude/skills/role-orchestrator/references/orchestrator-resume.md +4 -1
- package/claude/skills/role-planner/REQUIREMENT.md +2 -1
- package/claude/skills/role-planner/SKILL.md +15 -4
- package/claude/skills/role-reviewer/SKILL.md +2 -2
- package/claude/skills/role-worker/REQUIREMENT.md +1 -0
- package/claude/skills/role-worker/SKILL.md +11 -3
- package/claude/skills/session-compact/REQUIREMENT.md +1 -4
- package/claude/skills/session-compact/SKILL.md +3 -13
- package/claude/skills/session-compact/references/handoff-note.md +2 -2
- package/claude/skills/session-map/REQUIREMENT.md +1 -9
- package/claude/skills/session-map/SKILL.md +9 -17
- package/{standards → claude/skills/session-map/references}/session.md +17 -11
- package/claude/skills/session-relay/REQUIREMENT.md +1 -1
- package/claude/skills/session-resume/REQUIREMENT.md +6 -8
- package/claude/skills/session-resume/SKILL.md +3 -9
- package/claude/skills/session-worktree/SKILL.md +6 -6
- package/claude/skills/session-worktree/references/main-root-writes.md +2 -2
- package/claude/skills/systematic-debugging/REQUIREMENT.md +0 -1
- package/claude/skills/target-check/REQUIREMENT.md +3 -3
- package/claude/skills/target-check/SKILL.md +1 -1
- package/claude/skills/target-check/references/domains.md +1 -1
- package/claude/skills/target-setup/REQUIREMENT.md +4 -4
- package/claude/skills/target-setup/SKILL.md +3 -3
- package/claude/skills/target-setup/references/detect.md +2 -2
- package/claude/skills/task-board/REQUIREMENT.md +7 -12
- package/claude/skills/task-board/SKILL.md +9 -21
- package/{standards → claude/skills/task-board/references}/board.md +9 -0
- package/claude/skills/task-board/references/decline.md +1 -1
- package/{standards → claude/skills/task-board/references}/tasks.md +15 -10
- package/claude/skills/task-complete/REQUIREMENT.md +47 -0
- package/claude/skills/task-complete/SKILL.md +86 -0
- package/claude/skills/{task-board → task-complete}/references/archive.md +5 -5
- package/claude/skills/task-complete/references/receipt-sweep.md +32 -0
- package/claude/skills/task-complete/references/unusable-baseline.md +19 -0
- package/claude/skills/teach-workspace/REQUIREMENT.md +6 -2
- package/claude/skills/teach-workspace/SKILL.md +9 -5
- package/claude/skills/teach-workspace/references/lesson-craft.md +1 -1
- package/claude/skills/teach-workspace/references/promotion-fold.md +29 -0
- package/claude/skills/teach-workspace/references/promotion.md +3 -3
- package/claude/skills/teach-workspace/references/revisit.md +1 -1
- package/{standards → claude/skills/teach-workspace/references}/teach.md +17 -5
- package/claude/skills/ui-checklist/SKILL.md +1 -1
- package/claude/skills/ux-audit/REQUIREMENT.md +2 -2
- package/claude/skills/ux-audit/SKILL.md +3 -4
- package/claude/skills/ux-measure/SKILL.md +1 -1
- package/claude/skills/write-human/REQUIREMENT.md +0 -1
- package/claude/skills/write-human/SKILL.md +1 -1
- package/docs/agents/audits.md +1 -1
- package/docs/agents/canvas.md +1 -1
- package/docs/agents/commands.md +4 -8
- package/docs/agents/context-audit-checks.md +11 -25
- package/docs/agents/context-audit.md +7 -15
- package/docs/agents/context-classify.md +5 -5
- package/docs/agents/counts.md +5 -5
- package/docs/agents/drift-surfaces.md +2 -2
- package/docs/agents/index.md +5 -7
- package/docs/agents/indexes.md +1 -1
- package/docs/agents/install-and-sync.md +6 -11
- package/docs/agents/intake.md +1 -1
- package/docs/agents/key-changes.md +5 -5
- package/docs/agents/label-coverage.md +11 -0
- package/docs/agents/migrate.md +1 -1
- package/docs/agents/records-push.md +2 -2
- package/docs/agents/records-stale.md +13 -48
- package/docs/agents/records-validate.md +4 -8
- package/docs/agents/records.md +6 -28
- package/docs/agents/restated.md +1 -1
- package/docs/agents/rule-citations.md +2 -2
- package/docs/agents/sandbox.md +4 -4
- package/docs/agents/skills-audit.md +2 -2
- package/docs/agents/state-scoped-risk.md +2 -2
- package/docs/agents/superseded.md +2 -2
- package/docs/agents/tasks-plans.md +1 -1
- package/docs/agents/tasks-validate.md +1 -1
- package/docs/agents/tasks.md +3 -3
- package/docs/agents/teach.md +1 -1
- package/docs/agents/upstream.md +26 -2
- package/docs/target/migrations.md +32 -0
- package/docs/target/projects.md +5 -7
- package/docs/target/scenarios.md +2 -2
- package/docs/target/sync.md +4 -4
- package/docs/workflow/ai-workflow.md +7 -38
- package/docs/workflow/index.md +1 -1
- package/docs/workflow/operating-model.md +10 -10
- package/docs/workflow/parallel-features.md +12 -12
- package/docs/workflow/skill-map-on-request.md +21 -24
- package/docs/workflow/skill-map.md +23 -34
- package/docs/workflow/visual-design-workflow.md +13 -16
- package/governance/renames.toml +0 -30
- package/governance/rules/canon/605-worktrees.md +1 -1
- package/governance/rules/canon/context.md +13 -0
- package/governance/rules/{standards → canon}/plan.md +4 -5
- package/governance/rules/canon/tasks.md +18 -0
- package/governance/rules/claude/skill.md +17 -0
- package/governance/stacks/base.toml +2 -4
- package/package.json +4 -4
- package/scripts/core/install-check.sh +4 -4
- package/scripts/core/regen-web-previews.ts +1 -1
- package/scripts/lib/ui.sh +0 -159
- package/src/audits/catalog.ts +5 -98
- package/src/claude/cases/authoring.ts +0 -18
- package/src/claude/cases/misc.ts +1 -14
- package/src/claude/cases/setup.ts +7 -20
- package/src/claude/cases/workflow.ts +6 -34
- package/src/claude/seeds.ts +1 -7
- package/src/claude/skills-audit.ts +3 -3
- package/src/cli/help.ts +4 -5
- package/src/cli/ui.ts +2 -3
- package/src/cli.ts +0 -4
- package/src/commands/claude.ts +9 -15
- package/src/commands/context.ts +18 -280
- package/src/commands/feedback.ts +22 -91
- package/src/commands/gov.ts +2 -15
- package/src/commands/labels.ts +326 -7
- package/src/commands/migrate.ts +6 -1
- package/src/commands/pr.ts +1 -1
- package/src/commands/records.ts +17 -403
- package/src/commands/sandbox.ts +3 -6
- package/src/commands/sync.ts +5 -3
- package/src/commands/tasks.ts +3 -3
- package/src/commands/upstream.ts +135 -0
- package/src/context/audit.ts +10 -19
- package/src/context/classify/extract.ts +6 -13
- package/src/context/classify/patterns.ts +2 -41
- package/src/context/classify/prompts.ts +2 -6
- package/src/context/classify/run.ts +3 -3
- package/src/context/folders.ts +8 -13
- package/src/context/gate.ts +11 -91
- package/src/context/requirements.ts +13 -4
- package/src/counts/scan.ts +3 -3
- package/src/design/budget.ts +1 -1
- package/src/design/components.ts +3 -3
- package/src/design/document.ts +1 -1
- package/src/design/regen.ts +1 -1
- package/src/design/render.ts +1 -1
- package/src/feedback/body.ts +0 -12
- package/src/gate/measures.ts +7 -58
- package/src/gate/sequencer.ts +56 -1
- package/src/gate/stages.ts +1 -7
- package/src/gov/citations.ts +9 -3
- package/src/gov/install.ts +2 -3
- package/src/gov/restated.ts +3 -3
- package/src/gov/stacks.ts +1 -1
- package/src/hooks/post-merge.ts +1 -1
- package/src/labels/apply.ts +39 -0
- package/src/labels/format.ts +3 -3
- package/src/labels/phase.ts +3 -3
- package/src/labels/sections.ts +43 -0
- package/src/markdown/structure.ts +2 -2
- package/src/migrate/record-layout.ts +3 -3
- package/src/migrate/skill-names.ts +20 -1
- package/src/pr/paths.ts +4 -4
- package/src/records/backup.ts +16 -6
- package/src/records/ordinal.ts +1 -1
- package/src/records/prune.ts +2 -1
- package/src/records/stale-canonical.ts +33 -3
- package/src/records/validate.ts +2 -188
- package/src/roots/record.ts +1 -1
- package/src/sandbox/census.ts +1 -1
- package/src/sandbox/coverage.ts +2 -6
- package/src/sandbox/equivalence.ts +5 -44
- package/src/sandbox/expect.ts +4 -4
- package/src/sandbox/provision.ts +13 -36
- package/src/sandbox/scenario.ts +137 -55
- package/src/sandbox/tree.ts +2 -6
- package/src/shipped/references.ts +3 -3
- package/src/standards/read.ts +44 -0
- package/src/sync/git.ts +1 -1
- package/src/sync/seeds-report.ts +1 -1
- package/src/tasks/archive.ts +5 -5
- package/src/tasks/branch.ts +3 -3
- package/src/tasks/label.ts +1 -1
- package/src/tasks/reach.ts +2 -2
- package/src/tasks/record.ts +2 -2
- package/src/tasks/validate.ts +2 -2
- package/src/teach/workspace.ts +1 -1
- package/src/upstream/cursor.ts +1 -1
- package/src/upstream/due.ts +128 -0
- package/src/upstream/releases.ts +2 -1
- package/standards/index.md +0 -35
- package/standards/standard.md +1 -7
- package/tooling/base/reference.md +2 -2
- package/tooling/base/seeds/.github/pull_request_template.md +2 -2
- package/tooling/claude/reference.md +7 -21
- package/tooling/claude/seeds/.claude/hooks/pr-create-log.sh +9 -1
- package/tooling/claude/seeds/.claude/hooks/records-index.sh +8 -20
- package/tooling/claude/seeds/.claude/hooks/review-post-scan.sh +171 -0
- package/tooling/claude/seeds/.claude/hooks/standards-audit.sh +3 -3
- package/tooling/claude/seeds/.claude/settings.json +9 -0
- package/tooling/claude/seeds/CLAUDE.md +1 -3
- package/tooling/claude/seeds/canon/REQUIREMENTS.md +2 -9
- package/tooling/web/configs/e2e/screenshot.ts +0 -1
- package/claude/skills/auto-ship/references/review-findings.md +0 -20
- package/claude/skills/bash-cli-script/REQUIREMENT.md +0 -43
- package/claude/skills/bash-cli-script/SKILL.md +0 -53
- package/claude/skills/bash-cli-script/references/template.md +0 -19
- package/claude/skills/canon-operator/REQUIREMENT.md +0 -62
- package/claude/skills/canon-operator/SKILL.md +0 -113
- package/claude/skills/canon-rollout/REQUIREMENT.md +0 -59
- package/claude/skills/canon-rollout/SKILL.md +0 -140
- package/claude/skills/canon-rollout/references/failure-recovery.md +0 -20
- package/claude/skills/context-fold/references/anchor-sweep.md +0 -58
- package/claude/skills/context-fold/references/promoted-pages.md +0 -29
- package/claude/skills/context-fold/references/receipt-sweep.md +0 -43
- package/claude/skills/context-fold/references/wireframe-sweep.md +0 -45
- package/claude/skills/create-standard/REQUIREMENT.md +0 -33
- package/claude/skills/create-standard/SKILL.md +0 -31
- package/claude/skills/design-extract/REQUIREMENT.md +0 -42
- package/claude/skills/design-extract/SKILL.md +0 -108
- package/claude/skills/draft-and-pick/references/frame.html +0 -118
- package/claude/skills/draft-doc/references/wireframes.md +0 -48
- package/claude/skills/markdown-propose/REQUIREMENT.md +0 -47
- package/claude/skills/markdown-propose/SKILL.md +0 -122
- package/claude/skills/markdown-propose/references/format.md +0 -118
- package/claude/skills/memory-capture/REQUIREMENT.md +0 -50
- package/claude/skills/memory-capture/SKILL.md +0 -117
- package/claude/skills/memory-review/REQUIREMENT.md +0 -52
- package/claude/skills/memory-review/SKILL.md +0 -129
- package/claude/skills/memory-review/references/later-phases.md +0 -118
- package/claude/skills/memory-review/references/receipt-format.md +0 -64
- package/claude/skills/project-commands/REQUIREMENT.md +0 -42
- package/claude/skills/project-commands/SKILL.md +0 -87
- package/claude/skills/repo-metadata/REQUIREMENT.md +0 -37
- package/claude/skills/repo-metadata/SKILL.md +0 -54
- package/claude/skills/restate-plainly/REQUIREMENT.md +0 -41
- package/claude/skills/restate-plainly/SKILL.md +0 -41
- package/claude/skills/review-branch/REQUIREMENT.md +0 -40
- package/claude/skills/review-branch/SKILL.md +0 -137
- package/claude/skills/seed-sync/REQUIREMENT.md +0 -45
- package/claude/skills/seed-sync/SKILL.md +0 -158
- package/claude/skills/sketch-design/REQUIREMENT.md +0 -38
- package/claude/skills/sketch-design/SKILL.md +0 -94
- package/claude/skills/ux-walkthrough/REQUIREMENT.md +0 -56
- package/claude/skills/ux-walkthrough/SKILL.md +0 -53
- package/claude/skills/ux-walkthrough/references/builds.md +0 -15
- package/claude/skills/ux-walkthrough/references/candidate-pages.md +0 -11
- package/claude/skills/ux-walkthrough/references/measuring.md +0 -22
- package/claude/skills/ux-walkthrough/references/record.md +0 -36
- package/claude/skills/ux-walkthrough/references/relay.md +0 -25
- package/docs/agents/architecture-record.md +0 -36
- package/docs/agents/review-classification.md +0 -76
- package/governance/rules/canon/603-memory.md +0 -11
- package/governance/rules/lang/120-bash.md +0 -18
- package/governance/rules/standards/architecture.md +0 -13
- package/governance/rules/standards/context.md +0 -14
- package/governance/rules/standards/design.md +0 -12
- package/governance/rules/standards/groundwork.md +0 -13
- package/governance/rules/standards/intake.md +0 -12
- package/governance/rules/standards/memory.md +0 -12
- package/governance/rules/standards/readme.md +0 -12
- package/governance/rules/standards/ready.md +0 -13
- package/governance/rules/standards/requirements.md +0 -12
- package/governance/rules/standards/rule.md +0 -13
- package/governance/rules/standards/session.md +0 -13
- package/governance/rules/standards/skill.md +0 -21
- package/governance/rules/standards/standard.md +0 -13
- package/governance/rules/standards/tasks.md +0 -15
- package/governance/rules/standards/teach.md +0 -14
- package/governance/rules/standards/wiki.md +0 -13
- package/governance/rules/standards/wireframes.md +0 -13
- package/scripts/config.sh +0 -11
- package/scripts/lib/gov.sh +0 -14
- package/scripts/lib/sandbox-fixtures.sh +0 -191
- package/scripts/lib/sandbox-git.sh +0 -125
- package/scripts/lib/sandbox-path.sh +0 -50
- package/scripts/sandbox-hook.sh +0 -99
- package/src/autoship/classify.ts +0 -75
- package/src/autoship/paths.ts +0 -50
- package/src/commands/autoship.ts +0 -129
- package/src/commands/repo.ts +0 -393
- package/src/context/architecture.ts +0 -654
- package/src/context/wireframe-states.ts +0 -238
- package/src/gov/standard-rules.ts +0 -179
- package/src/records/migrate.ts +0 -78
- package/src/records/stale.ts +0 -243
- package/src/repo/metadata.ts +0 -206
- package/src/sandbox/hooks.ts +0 -128
- package/standards/architecture.md +0 -127
- package/standards/memory.md +0 -158
- package/standards/mermaid.md +0 -64
- package/standards/requirements.md +0 -79
- package/standards/wiki.md +0 -77
- package/standards/wireframes.md +0 -143
- package/tooling/claude/seeds/.claude/memory/index.md +0 -8
- package/tooling/claude/seeds/canon/ARCHITECTURE.md +0 -23
- package/tooling/claude/seeds/canon/wireframes/index.md +0 -8
- /package/{standards → claude/skills/create-skill/references}/skill-practice.md +0 -0
- /package/{standards → claude/skills/create-skill/references}/skill-requirement.md +0 -0
- /package/{standards → claude/skills/draft-figure/references}/figures.md +0 -0
- /package/{standards → claude/skills/git-branch/references}/slug.md +0 -0
- /package/{standards → claude/skills/git-commit/references}/commit.md +0 -0
- /package/{standards → claude/skills/git-commit/references}/versioning.md +0 -0
- /package/{standards → claude/skills/plan-feature/references}/plan-lifecycle.md +0 -0
- /package/{standards → claude/skills/plan-groundwork/references}/groundwork-spikes.md +0 -0
- /package/{standards → claude/skills/task-board/references}/tasks-decline.md +0 -0
- /package/{standards → claude/skills/teach-workspace/references}/glossary.md +0 -0
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Architecture reference
|
|
3
|
-
description: Shape and content rules for canon/ARCHITECTURE.md
|
|
4
|
-
paths:
|
|
5
|
-
- 'canon/ARCHITECTURE.md'
|
|
6
|
-
rule:
|
|
7
|
-
- "Add a decision here only when it fills one of the standard's slots, and write any other decision into the context entry for the domain it constrains. At the record's stated cap, merge or retire an entry before adding one."
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# Architecture reference
|
|
11
|
-
|
|
12
|
-
Applies to `canon/ARCHITECTURE.md`. Describes the system shape and the decisions behind it, not a tutorial, setup guide, or implementation walkthrough. Pair it with `CLAUDE.md`: session behavior lives there, and the system's shape lives here. Update when a decision is made or a risk is resolved.
|
|
13
|
-
|
|
14
|
-
## Scope
|
|
15
|
-
|
|
16
|
-
Governs the system-shape document at `canon/ARCHITECTURE.md`: the overview, the decision entries, and the open risks.
|
|
17
|
-
|
|
18
|
-
Does not govern:
|
|
19
|
-
|
|
20
|
-
- Per-domain structure and narrative: `context.md`
|
|
21
|
-
- Setup commands and install instructions: `readme.md`
|
|
22
|
-
- Product scope, goals, and non-goals: `requirements.md`
|
|
23
|
-
|
|
24
|
-
## What goes in
|
|
25
|
-
|
|
26
|
-
- A high-level overview of how the system is structured and why
|
|
27
|
-
- Key technical decisions as named H3 entries, each filling one of the five slots below: what was chosen and why over the alternatives
|
|
28
|
-
- Risks and open questions still unresolved
|
|
29
|
-
|
|
30
|
-
A decision belongs here only when it fills a slot:
|
|
31
|
-
|
|
32
|
-
- Stack and runtime: the language, the runtime, and the major libraries the system is built on
|
|
33
|
-
- Delivery: how the system's content or code reaches the place it runs
|
|
34
|
-
- Enforced boundaries: a boundary the system checks mechanically, and what enforces it
|
|
35
|
-
- Layout: how the project's top-level roots and context tiers divide what they hold
|
|
36
|
-
- Build principles: a rule for how a behavior is built that changes work in more than one domain, stated in one sentence
|
|
37
|
-
|
|
38
|
-
The slots come from a scale test. Ask whether the decision would still be in this file if the project were ten times its size. At that size an always-loaded file holding one entry per decision fits no context window, and what survives is the shape: the stack, the delivery, the boundaries, the layout, and the principles. A decision that fits no slot is a domain decision, and its home is that domain's `canon/context/<domain>.md` entry under `## Decisions`, however many domains its reasoning touches. Reach is not the test, since nearly every decision reaches a second domain.
|
|
39
|
-
|
|
40
|
-
## What does not go in
|
|
41
|
-
|
|
42
|
-
- How individual functions work line by line. The code carries its own behavior.
|
|
43
|
-
- Full type definitions. They live in code. Reference the shape conceptually if needed.
|
|
44
|
-
- A decision that fills no slot. It lives in the domain context entry it constrains, and this file carries at most one line pointing at it.
|
|
45
|
-
- A measurement paragraph specific to one domain's own mechanism, even behind a slot decision. Route it to that domain's context entry and keep the choice, the alternative that lost, and one reason here.
|
|
46
|
-
- The instances of a build principle. The principle takes one sentence here, and each instance lives in the domain entry where it applies.
|
|
47
|
-
- The history of how a decision was reached or revised: rounds of candidates, a figure followed by its correction, a branch or change that moved a number. Cut it. Git and the change that introduced it keep the trail.
|
|
48
|
-
|
|
49
|
-
## Sections
|
|
50
|
-
|
|
51
|
-
Use `## Overview`, `## Key technical decisions` with one named H3 per decision, and `## Risks / open questions`. Name each decision and give the reasoning, especially for non-obvious choices. Skip entries where the rationale is self-evident.
|
|
52
|
-
|
|
53
|
-
## Keeping it current
|
|
54
|
-
|
|
55
|
-
- Rewrite a decision a later one changed rather than appending the change beside it. A reader should find the design that stands in one place, with the alternative that lost stated once.
|
|
56
|
-
- Hold only what is open under `## Risks / open questions`. An entry leaves the section in the change that settles it, becoming a decision here when it fills a slot and moving to the domain context entry it constrains when it does not.
|
|
57
|
-
- Carry an optional `reviewed: YYYY-MM-DD` frontmatter field naming the day someone last read the record whole for drift. Whoever finishes that review sets it as the review's last edit, and `canon records stale canonical` reads it to count the releases shipped since. A record with no field reads as never reviewed.
|
|
58
|
-
|
|
59
|
-
## Verification anchors
|
|
60
|
-
|
|
61
|
-
A decision's reasoning stays correct while the numbers it cites move. The anchor records what a measured claim was read against, so a reader can tell a number that was checked and held from one nobody has looked at since.
|
|
62
|
-
|
|
63
|
-
- Close a decision entry whose reasoning cites a measured number with a trailing sentence naming the short commit SHA and the ISO date that number was read: `Measured at <short-sha> on <YYYY-MM-DD>.`
|
|
64
|
-
- Name a commit, never a pull request number or a branch. A branch is gone after merge, and a pull request number resolves only on the forge.
|
|
65
|
-
- Carry one anchor per figure. When a number is re-measured, rewrite the number and its anchor in place, and leave the old value to the change that moved it.
|
|
66
|
-
- Point at a generated file that already records a figure and its commit, rather than copying the figure and anchoring the copy.
|
|
67
|
-
- Anchor on the number alone. A decision citing none takes no anchor whatever its reasoning rests on, because a marker over a claim nobody can re-measure is one no reader can falsify.
|
|
68
|
-
- Anchor a decision when writing it or when amending its reasoning. Leave an entry written before the rule unanchored rather than dating it by blame, which is archaeology for a marker nothing reads back.
|
|
69
|
-
- Read an absent anchor as unchecked rather than as current. On an entry citing no number there is nothing to check. On one citing a number the number is due a read.
|
|
70
|
-
- Do not edit a claim in the pass that first anchors it. The anchor states what the claim was measured against, so changing both at once leaves nothing to check the anchor against.
|
|
71
|
-
- Refresh the anchor whenever the number is re-read, whether or not it moved. A confirmed number and an unread one are the same text without the date.
|
|
72
|
-
|
|
73
|
-
## Revisit condition
|
|
74
|
-
|
|
75
|
-
A decision says why it won and rarely says when that reason stops holding, so an entry can go stale while every word in it stays true. The revisit sentence names the finding that would show the harm the decision prevents has gone or moved.
|
|
76
|
-
|
|
77
|
-
- Close each decision with one sentence of the form `Revisit when <finding>.` Name something a reader could notice, such as a platform release, a measured count crossing a line, or a dependency dropping a behavior.
|
|
78
|
-
- Draft it from the harm the decision prevents, never from the mechanism it uses. A mechanism can keep working long after the reason for choosing it is gone, so re-checking it confirms the wrong fact.
|
|
79
|
-
- Place the sentence after the reasoning and before any verification anchor, so the anchor stays the entry's last sentence.
|
|
80
|
-
- Give a heading holding several principles one sentence, for the premise they share, rather than one per principle.
|
|
81
|
-
- Adopt the requirement by stating the clause `Every decision closes with a revisit sentence.` in the record itself. The clause is the record's own, like the caps, so a checker reads it from the file and gates only a record that states it. A record stating none is reported and never gated.
|
|
82
|
-
- A checker reads presence alone. A vacuous sentence passes it, so the sentence is only as useful as the finding it names.
|
|
83
|
-
|
|
84
|
-
## Caps
|
|
85
|
-
|
|
86
|
-
Every session pays for this file before any work starts, so a heavy read is a real cost. Weight comes from two places, too many decisions and decisions written too long, so the record caps both, and caps the open risks beside them.
|
|
87
|
-
|
|
88
|
-
- State each cap in the record itself. A checker reads only these spellings, so a clause worded another way is reported and never gated:
|
|
89
|
-
- `This record holds at most <n> decisions.`
|
|
90
|
-
- `at most <n> words a decision`, counting a decision's prose below its heading, fenced lines left out
|
|
91
|
-
- `at most <n> risk bullets`, counting every list item under `## Risks / open questions`, nested ones included
|
|
92
|
-
- The three can share one sentence, such as `This record holds at most 12 decisions, at most 150 words a decision, and at most 6 risk bullets.` Each cap is the record's own, so a record stating none is measured and never gated. The template and the seed a new project installs state all three, and a project loosens one by editing the number in its own record.
|
|
93
|
-
- Set the decision cap near one decision per slot plus a small margin, the word cap near what one trade takes to state, about 150, and the risk cap at what a reader holds in mind at once, about 6.
|
|
94
|
-
- At the decision cap, merge two decisions or retire one before adding another, and name which in the change that does it. Never pack two decisions under one heading, which the count cannot see.
|
|
95
|
-
- At the word cap, cut a decision to the choice, the alternative that lost, the reason, and the revisit sentence. What it sheds is a mechanism or a measurement, which goes to the domain context entry it constrains, never under a second heading.
|
|
96
|
-
- At the risk cap, drop what is no longer open before adding a risk.
|
|
97
|
-
- Retire a decision by moving it to the domain context entry it constrains, not by deleting its reasoning.
|
|
98
|
-
- The whole file's word count stays a report, read alongside the judgment, and never gates.
|
|
99
|
-
- Yield to the paragraph weight checkpoint in `markdown.md`. A paragraph past the checkpoint is a defect no length guideline licenses.
|
|
100
|
-
|
|
101
|
-
## Template
|
|
102
|
-
|
|
103
|
-
The revisit sentence closes the reasoning of every decision. The anchor sentence follows it on a decision whose reasoning cites a measured number and is absent from one that cites none. Each heading below names a slot, so a record starts with one decision per slot and renames each heading to the choice it records.
|
|
104
|
-
|
|
105
|
-
```markdown
|
|
106
|
-
# Architecture
|
|
107
|
-
|
|
108
|
-
## Overview
|
|
109
|
-
|
|
110
|
-
This record holds at most 12 decisions, at most 150 words a decision, and at most 6 risk bullets. Every decision closes with a revisit sentence.
|
|
111
|
-
|
|
112
|
-
## Key technical decisions
|
|
113
|
-
|
|
114
|
-
### Stack and runtime
|
|
115
|
-
|
|
116
|
-
What was chosen, the alternative that lost, and why. Revisit when <finding>. Measured at <short-sha> on <YYYY-MM-DD>.
|
|
117
|
-
|
|
118
|
-
### Delivery
|
|
119
|
-
|
|
120
|
-
### Enforced boundaries
|
|
121
|
-
|
|
122
|
-
### Layout
|
|
123
|
-
|
|
124
|
-
### Build principles
|
|
125
|
-
|
|
126
|
-
## Risks / open questions
|
|
127
|
-
```
|
package/standards/memory.md
DELETED
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Memory reference
|
|
3
|
-
description: Filename and type prefix, frontmatter, the body shape per type, links between entries, and the lifecycle from write to retire
|
|
4
|
-
paths:
|
|
5
|
-
- '.canon/memory/**'
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Memory reference
|
|
9
|
-
|
|
10
|
-
Applies to a memory entry at `.canon/memory/<type>-<slug>.md`. One file holds one rule or one fact, written at the end of the session that produced it and read by a session that holds none of it. Which surface owns a given fact is settled before an entry is written at all, and that routing is project policy rather than a shape rule.
|
|
11
|
-
|
|
12
|
-
The folder is gitignored, and backed wherever a records remote is configured: `canon records push` and `canon records pull` protect it against the machine being lost there, refuse with `no-remote` where it is not, and protect nothing against an entry deleted before anyone has pushed. That is why the retire step below is a move rather than a cleanup: a retired entry stays readable regardless of push timing, where a deleted one is gone the moment nothing has captured it yet.
|
|
13
|
-
|
|
14
|
-
## Scope
|
|
15
|
-
|
|
16
|
-
Governs a memory entry under `.canon/memory/<type>-<slug>.md`: the filename and its type prefix, the frontmatter, the body shape each type carries, links between entries, and the lifecycle from the first write to retirement.
|
|
17
|
-
|
|
18
|
-
Does not govern:
|
|
19
|
-
|
|
20
|
-
- The per-domain entry a domain fact is routed to instead of memory: `context.md`
|
|
21
|
-
- The feature plan a session executes, and its answer contract: `plan.md`
|
|
22
|
-
- The task file tracking what is being built: `tasks.md`
|
|
23
|
-
- Voice, rhythm, and sentence construction: the `write-human` skill
|
|
24
|
-
- Headings, punctuation, word choice, and file references: `markdown.md`
|
|
25
|
-
- Which facts a project captures at all, and where the folder sits, which are project policy
|
|
26
|
-
|
|
27
|
-
## What a working entry looks like
|
|
28
|
-
|
|
29
|
-
An entry works when a session holding none of the conversation that produced it can act on the rule from the file alone:
|
|
30
|
-
|
|
31
|
-
- What is the rule or the fact, stated in one line?
|
|
32
|
-
- What happened in a session to earn it, so a later reader can tell whether it still holds?
|
|
33
|
-
- When does it fire next, and what does the reader do at that moment?
|
|
34
|
-
- Does another surface already own this, which would make the entry a duplicate of something sessions trust more?
|
|
35
|
-
|
|
36
|
-
An entry failing these is non-conforming even when it satisfies every shape rule below.
|
|
37
|
-
|
|
38
|
-
## Types
|
|
39
|
-
|
|
40
|
-
Four types, and the type decides both the filename prefix and the body shape.
|
|
41
|
-
|
|
42
|
-
| Type | Holds | Fires on |
|
|
43
|
-
| ----------- | -------------------------------------------------------------------- | ------------------------------------------- |
|
|
44
|
-
| `feedback` | a correction or a confirmed approach governing how the agent works | explicit correction, or the same slip twice |
|
|
45
|
-
| `project` | a decision, constraint, or measured fact not derivable from the code | first disclosure |
|
|
46
|
-
| `user` | role, expertise, responsibilities, or working preferences | first disclosure |
|
|
47
|
-
| `reference` | a pointer to an external system, repository, or channel | first disclosure |
|
|
48
|
-
|
|
49
|
-
Hold a feedback entry to the higher bar. A first-occurrence slip is noise, and a folder that records every one of them buries the rules that were paid for.
|
|
50
|
-
|
|
51
|
-
Write no entry for a fact another surface already owns. A fact about a domain belongs in that domain's entry, where sessions working the domain already read it, and the same fact in memory sits in a folder nothing opens. Memory keeps the residue, which is whatever the ownership test leaves rather than any one type.
|
|
52
|
-
|
|
53
|
-
## Filename
|
|
54
|
-
|
|
55
|
-
- Name the file `<type>-<slug>.md`, with `<type>` one of the four above and `<slug>` kebab-case naming the rule rather than the incident.
|
|
56
|
-
- Write one rule per file. Two rules under one slug cannot be retired or promoted separately, and one of them always outlives the other.
|
|
57
|
-
- Keep the prefix and the `category` field the same fact in two spellings. A prefix outside the four types reads as a fifth type to anything grouping the folder, and it silently belongs to none.
|
|
58
|
-
|
|
59
|
-
## Frontmatter
|
|
60
|
-
|
|
61
|
-
Every entry carries the three required fields, and a reviewed entry carries a fourth.
|
|
62
|
-
|
|
63
|
-
```yaml
|
|
64
|
-
---
|
|
65
|
-
title: A scope glob wide enough for a correct run can be wide enough for every wrong one
|
|
66
|
-
description: Omit a declaration key whose only passing value admits the whole tree
|
|
67
|
-
category: Project
|
|
68
|
-
reviewed: 2026-09-26
|
|
69
|
-
---
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
- `title` (required): the rule stated as a line a reader can act on, in sentence case.
|
|
73
|
-
- `description` (required): one line naming what the entry settles, so a reader scanning the catalog decides whether to open it.
|
|
74
|
-
- `category` (required): the type in sentence case, which is what groups the catalog.
|
|
75
|
-
- `reviewed` (optional): the `YYYY-MM-DD` date a review last read the entry and kept it. A review writes it and capture never does, so an entry without the field has never been reviewed. A rewrite of the entry carries the field through untouched, since dropping it sends a kept entry back to the front of the queue.
|
|
76
|
-
|
|
77
|
-
Never write the filename stem as the `title`. The stem is a slug, and an entry titled with it reads as an unwritten file in every catalog that renders the field.
|
|
78
|
-
|
|
79
|
-
Quote a `description` opening with a backtick or a colon. An unquoted one fails to parse and takes the whole folder's catalog with it.
|
|
80
|
-
|
|
81
|
-
## Body
|
|
82
|
-
|
|
83
|
-
A `feedback` or `project` body carries three parts in this order. Blank lines between them are optional and the three parts are not.
|
|
84
|
-
|
|
85
|
-
- The rule or the fact, stated in one or two sentences as something to do rather than something that happened.
|
|
86
|
-
- A `**Why:**` line naming the session signal that earned it. This is what a later reader tests the rule against when the tree has moved.
|
|
87
|
-
- A `**How to apply:**` line naming the next moment the rule fires and what to do then.
|
|
88
|
-
|
|
89
|
-
A `user` or `reference` body is a single sentence and carries neither marker. There is no rule to apply and no signal to date, so the two lines would be filler.
|
|
90
|
-
|
|
91
|
-
Capture the pattern rather than the recovery. What was tried, what failed, and who noticed belong to the session that is ending, and a body carrying them is a story where the next reader needs an instruction.
|
|
92
|
-
|
|
93
|
-
## Links
|
|
94
|
-
|
|
95
|
-
Link a related entry as `[[name]]`, where `name` is the target's filename stem without the extension. Link freely: an entry sits flat at the top level and the links are the only structure among them. `review/` and `archive/` hold receipts and retirements rather than entries, so neither takes a link.
|
|
96
|
-
|
|
97
|
-
- Place links inside the body part they support, not in a list of their own at the end.
|
|
98
|
-
- A link naming an entry nobody has written yet is legal, and it marks a rule worth writing rather than a defect.
|
|
99
|
-
- A bracketed token inside a code span is not a link. Backticked syntax from another language routinely reads as one.
|
|
100
|
-
|
|
101
|
-
## Lifecycle
|
|
102
|
-
|
|
103
|
-
- Check the folder for an entry on the same topic before writing a new one, and update that entry in place when one exists. Two entries on one rule disagree the moment either is edited.
|
|
104
|
-
- Rewrite an entry the tree has moved under rather than appending a second passage narrating the change. A reader cannot tell which of two claims is current.
|
|
105
|
-
- Never delete an entry. Retire one by moving it to an archive under its own name, because a bulk judgment made before the next push has no undo behind it, and moving keeps the record where deleting would not.
|
|
106
|
-
- Treat the folder as a holding pen rather than a destination. An entry whose rule belongs on a durable surface is promoted there and retired here, and the rest is what the pen is for.
|
|
107
|
-
|
|
108
|
-
The catalog is generated from sibling frontmatter rather than authored. Never hand-edit it, since the next regeneration discards whatever was added by hand.
|
|
109
|
-
|
|
110
|
-
## Reading
|
|
111
|
-
|
|
112
|
-
Nothing loads the pen into every session, and that is the design. An entry reaches a reader through one of three paths:
|
|
113
|
-
|
|
114
|
-
- A review reads the pen in batches, taking entries in the order `canon records stale memory` reports: due entries first, those citing a path the tree no longer holds ahead of the rest, then the longest unreviewed.
|
|
115
|
-
- A resuming session reads the entries matching the task it picks up.
|
|
116
|
-
- Capture reads the catalog to find an existing entry on the same topic before writing a new one.
|
|
117
|
-
|
|
118
|
-
An entry none of the three reaches is one the pen holds for a review to promote or retire.
|
|
119
|
-
|
|
120
|
-
## Collecting a review receipt
|
|
121
|
-
|
|
122
|
-
A review of the pen writes a receipt recording what it proposed per entry and what was decided. The receipt is collected once every item on it has resolved, and it is held while any item is still pending, since a pending item is decision state the next round reads back.
|
|
123
|
-
|
|
124
|
-
Fold the declines before the receipt goes. A promoted entry survives in its target and in git and a retired one survives in the archive, so the one thing a receipt uniquely holds is the record that a rule was considered and turned down.
|
|
125
|
-
|
|
126
|
-
- Fold into the entry the item was about, and only into that entry. A decline whose proposed target was another surface still lands here.
|
|
127
|
-
- Fold a `feedback` or `project` entry alone. The decline belongs in the `**Why:**` line, which is what a later reader tests the rule against.
|
|
128
|
-
- Fold nothing into a `user` or `reference` entry. Its body is one sentence carrying neither marker, and such an entry is declined for having no in-repo target, which its type already states. Writing that on the entry restates the type and breaks the body shape.
|
|
129
|
-
- Record the decline by rewriting the entry, never by appending to it, per the lifecycle rule above.
|
|
130
|
-
|
|
131
|
-
Which surface runs the collection is project policy. More than one may, so a collector finding no receipt has been beaten to it rather than misconfigured.
|
|
132
|
-
|
|
133
|
-
## Anti-patterns
|
|
134
|
-
|
|
135
|
-
- **The domain fact filed as memory.** It reads as a capture and lands in the one folder no session opens while working that domain.
|
|
136
|
-
- **The incident narrative.** A body recounting what went wrong states no rule, so the next reader has to infer one and infers a different one.
|
|
137
|
-
- **The entry titled with its own slug.** Every catalog rendering the field shows a filename where the rule should be.
|
|
138
|
-
- **The duplicate written beside the original.** Two entries on one topic drift, and nothing says which is current.
|
|
139
|
-
- **The first-occurrence capture.** A folder recording every slip buries the rules that repeated.
|
|
140
|
-
- **The entry deleted on retire.** The folder has no history, so the judgment that discarded it cannot be reviewed or reversed.
|
|
141
|
-
|
|
142
|
-
## Template
|
|
143
|
-
|
|
144
|
-
```markdown
|
|
145
|
-
---
|
|
146
|
-
title: <the rule, stated as a line a reader can act on>
|
|
147
|
-
description: <one line naming what the entry settles>
|
|
148
|
-
category: <Feedback|Project|User|Reference>
|
|
149
|
-
---
|
|
150
|
-
|
|
151
|
-
<the rule or fact, in one or two sentences, as something to do>
|
|
152
|
-
|
|
153
|
-
**Why:** <the session signal that earned it, with the measurement where one exists>
|
|
154
|
-
|
|
155
|
-
**How to apply:** <the next moment it fires, and what to do then> See [[related-entry]].
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
A `user` or `reference` entry carries the same frontmatter and a single sentence in place of the three parts.
|
package/standards/mermaid.md
DELETED
|
@@ -1,64 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Mermaid reference
|
|
3
|
-
description: Direction and layout, node and edge budgets, accessibility fields, label punctuation, and render verification for a Mermaid diagram
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# Mermaid reference
|
|
7
|
-
|
|
8
|
-
Applies to every Mermaid fence, wherever it is written. A fence sits inside a document some other standard shapes, so this file reaches the drawing and stops at the fence markers.
|
|
9
|
-
|
|
10
|
-
## Scope
|
|
11
|
-
|
|
12
|
-
Governs the Mermaid attribute wherever a fence is written, naming no path because an attribute standard governs a drawing rather than a document type: direction and layout, node and edge budgets, the accessibility fields, how punctuation reaches a label, and how a rendered diagram is verified. It carries no template, since a fence has no document shape of its own and sits inside one another standard sets.
|
|
13
|
-
|
|
14
|
-
Does not govern:
|
|
15
|
-
|
|
16
|
-
- Which architecture view a figure draws and what question it answers: the `draft-figure` skill's architecture set
|
|
17
|
-
- Language, word choice, punctuation, and formatting in the prose around a fence: `markdown.md`
|
|
18
|
-
- Voice, rhythm, and sentence construction in that prose: the `write-human` skill
|
|
19
|
-
- The mechanism behind any component a diagram draws: `context.md`
|
|
20
|
-
|
|
21
|
-
## What a working diagram looks like
|
|
22
|
-
|
|
23
|
-
A diagram works when a reviewer holding the rendered image, and nothing else, answers yes four times:
|
|
24
|
-
|
|
25
|
-
- Did the declared direction hold?
|
|
26
|
-
- Is every row of siblings free of a sequential reading the system does not have?
|
|
27
|
-
- Is every convergence free of a crossing edge bundle?
|
|
28
|
-
- Is it taller than wide, outside a sequence diagram?
|
|
29
|
-
|
|
30
|
-
A diagram failing these is non-conforming even when it satisfies every shape rule below. The rules are the means. These four questions are the test.
|
|
31
|
-
|
|
32
|
-
## Layout
|
|
33
|
-
|
|
34
|
-
- Declare `flowchart TB` by default. Mermaid ignores a subgraph's direction whenever that subgraph links outward, and an architecture diagram links across its subgraphs as the normal case, so top-bottom is a declaration rather than a guarantee.
|
|
35
|
-
- Restructure a diagram that renders diagonal or left-to-right. Repeating the direction keyword does not fix it.
|
|
36
|
-
- Render a context, component, or pipeline diagram taller than wide. A `sequenceDiagram` is wide by construction and is exempt.
|
|
37
|
-
- Do not let independent nodes render in a row. A row of siblings reads as a sequential chain and asserts a pipeline the system does not have.
|
|
38
|
-
- Do not converge many edges on one node from one side. A crossing bundle is unreadable whatever it encodes.
|
|
39
|
-
- Keep node labels short. Three or four words max. Detail goes in the paragraph below the diagram.
|
|
40
|
-
- Use `<br/>` for a second short line on a node when the label is two ideas, never for a sentence.
|
|
41
|
-
- Subgraphs are for grouping unrelated lanes such as offline versus online or browser versus server. Do not subgraph a single linear flow.
|
|
42
|
-
|
|
43
|
-
## Budgets
|
|
44
|
-
|
|
45
|
-
- Hold a diagram to roughly 5 to 10 nodes. Split it past 15.
|
|
46
|
-
- Watch edge count harder than node count. It binds first, and a diagram whose edges outnumber its nodes is already too dense to read.
|
|
47
|
-
- Treat a diagram that cannot be described in one sentence as two diagrams.
|
|
48
|
-
- Warn rather than refuse on a budget, and name the split that would fix it. These numbers come from published Mermaid practice rather than from a measurement against a corpus, so a hard refusal on them will be wrong sometimes and unarguable when it is.
|
|
49
|
-
|
|
50
|
-
## Labels
|
|
51
|
-
|
|
52
|
-
- Apply the punctuation bans in `markdown.md` to node and subgraph labels. A label is not prose, so a check scoped to prose does not reach it, and reading the labels before shipping is the only gate they have.
|
|
53
|
-
- Treat the prose around a fence and the text inside it as two surfaces. The paragraphs are prose and follow `markdown.md` and the `write-human` skill. The fenced block is not, which is why a check scoped to prose is the wrong thing to rely on for what sits inside it.
|
|
54
|
-
|
|
55
|
-
## Accessibility
|
|
56
|
-
|
|
57
|
-
- Give every diagram `accTitle` and `accDescr`. `accTitle` names what the diagram answers. `accDescr` states the structure in one sentence for a reader who cannot see the render.
|
|
58
|
-
|
|
59
|
-
## Verification
|
|
60
|
-
|
|
61
|
-
- Judge a diagram from its rendered image, not from its source. Direction, sibling rows, and edge bundles are visible only in the output.
|
|
62
|
-
- Render to PNG. An SVG export reads back as markup with no recoverable spatial meaning.
|
|
63
|
-
- Apply the four questions above as a reviewer, against the same render the author judged.
|
|
64
|
-
- State which verification was skipped when no renderer is available. A diagram written without a render is still shippable, and one reported as verified without a render is not.
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Requirements reference
|
|
3
|
-
description: Shape and content rules for canon/REQUIREMENTS.md
|
|
4
|
-
paths:
|
|
5
|
-
- 'canon/REQUIREMENTS.md'
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
# Requirements reference
|
|
9
|
-
|
|
10
|
-
Applies to `canon/REQUIREMENTS.md`. Describes what the product does and why, not how it works. Update when scope changes, goals shift, or a non-goal is promoted to a feature.
|
|
11
|
-
|
|
12
|
-
## Scope
|
|
13
|
-
|
|
14
|
-
Governs the product-scope document at `canon/REQUIREMENTS.md`: problem, goals, non-goals, MVP features, distribution, and constraints.
|
|
15
|
-
|
|
16
|
-
Does not govern:
|
|
17
|
-
|
|
18
|
-
- Rationale for a technical choice: `architecture.md`
|
|
19
|
-
- Execution order across the work the scope generates: `board.md`
|
|
20
|
-
- Per-domain structure and narrative: `context.md`
|
|
21
|
-
|
|
22
|
-
## What goes in
|
|
23
|
-
|
|
24
|
-
- The problem being solved and for whom
|
|
25
|
-
- User-facing goals stated as outcomes, not implementation
|
|
26
|
-
- Explicit non-goals that prevent feature creep. Mark deferred items "(deferred)" so they read as paused, not excluded. A non-goal resting on how an outside tool, an installer, or the model behaves may close with one `Revisit when <finding>.` sentence, and a non-goal resting on scope alone takes none.
|
|
27
|
-
- MVP features as a numbered list: feature name and one-line description
|
|
28
|
-
- Hard constraints that shape every decision
|
|
29
|
-
|
|
30
|
-
## What does not go in
|
|
31
|
-
|
|
32
|
-
- Implementation details, API names, or internal component references
|
|
33
|
-
- Anything that describes how a feature is built rather than what it does
|
|
34
|
-
- Measured results, such as scores, benchmark figures, or token counts. They move on every run and this file changes least. Name where the results live instead.
|
|
35
|
-
- Content another canonical doc owns, such as the stack list, which the stack-and-runtime slot of `canon/ARCHITECTURE.md` holds, or the rules of this standard itself
|
|
36
|
-
|
|
37
|
-
## Sections
|
|
38
|
-
|
|
39
|
-
Use `## Problem`, `## Goals`, `## Non-goals`, `## MVP features`, and `## Constraints`. Add `## Distribution` when the rule below applies. Add `## Worldview` when the project holds beliefs that shape every decision, and keep a belief there only when it changes a decision, since a padded worldview turns into a second goals list. Add `## Premise` when the project exists to answer a question, stated as the question and what would count as an answer, never as the answer measured so far. Drop a section rather than pad it with filler.
|
|
40
|
-
|
|
41
|
-
## Length
|
|
42
|
-
|
|
43
|
-
This file loads into every session, so its weight is paid before any work starts. Cap it by stating the clause `This record holds at most <n> words.` in the record itself, where a checker reads it and counts every word below the frontmatter. The cap is the record's own, so a record stating none is measured and never gated. The template and the seed a new project installs state it at 600, and a project loosens it by editing the number in its own record. At the cap, cut a goal or a constraint that no longer changes a decision before adding one.
|
|
44
|
-
|
|
45
|
-
## Lifecycle
|
|
46
|
-
|
|
47
|
-
Once every entry in the MVP list, or in a later scope section, has shipped, delete the section. Git keeps the old text, and the document states the project as it stands. Do not annotate an entry as shipped and leave it in place. While any entry is unshipped, do not renumber the list or append to it.
|
|
48
|
-
|
|
49
|
-
The record may carry an optional `reviewed: YYYY-MM-DD` frontmatter field naming the day someone last read it whole for identity drift. Whoever finishes that review sets it as the review's last edit, and `canon records stale canonical` reads it to count the releases shipped since. A record with no field reads as never reviewed.
|
|
50
|
-
|
|
51
|
-
Later scope arrives as a new section rather than as an extension of the MVP list. Name the section for what it delivers and state its entries as outcomes, the same way the goals are stated. Nothing sequences either list into versions. Work reaches the board as discrete tasks under `tasks.md`, and `board.md` orders them by readiness, so a section here states what is wanted and never when it lands.
|
|
52
|
-
|
|
53
|
-
## Distribution
|
|
54
|
-
|
|
55
|
-
Include `## Distribution` only when the project ships to consumers outside its own repository. An internal service or a monorepo application has nothing to put in it, and a section every project is told to fill is one most projects pad. Place it after `## MVP features`.
|
|
56
|
-
|
|
57
|
-
State each entry as an outcome the consumer reaches, never as the mechanism that delivers it. A registry name, a manifest format, a version scheme, or a release tool is implementation and belongs in `canon/ARCHITECTURE.md`. Distribution pulls harder toward mechanism than any other section, which is why the rule is repeated here.
|
|
58
|
-
|
|
59
|
-
## Template
|
|
60
|
-
|
|
61
|
-
```markdown
|
|
62
|
-
# Requirements
|
|
63
|
-
|
|
64
|
-
This record holds at most 600 words.
|
|
65
|
-
|
|
66
|
-
## Problem
|
|
67
|
-
|
|
68
|
-
## Goals
|
|
69
|
-
|
|
70
|
-
## Non-goals
|
|
71
|
-
|
|
72
|
-
## MVP features
|
|
73
|
-
|
|
74
|
-
1. Feature: description
|
|
75
|
-
|
|
76
|
-
<!-- ## Distribution: include only when shipping outside the repository -->
|
|
77
|
-
|
|
78
|
-
## Constraints
|
|
79
|
-
```
|
package/standards/wiki.md
DELETED
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
title: Wiki reference
|
|
3
|
-
description: Folder split, frontmatter, naming convention, and sourcing for a wiki reference page
|
|
4
|
-
paths:
|
|
5
|
-
- 'wiki/**/*.md'
|
|
6
|
-
rule:
|
|
7
|
-
- 'Read it before drafting a page. Do not work the placement criterion or the naming convention from memory.'
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
# Wiki reference
|
|
11
|
-
|
|
12
|
-
Applies to each authored page under `wiki/`. Skip for `index.md` at any depth, which is a hand-maintained catalog rather than a reference page, and carries `subtitle` rather than `description`.
|
|
13
|
-
|
|
14
|
-
## Scope
|
|
15
|
-
|
|
16
|
-
Governs each authored page under `wiki/`: which folder it belongs in, its frontmatter, its filename, and how it cites the subject it documents.
|
|
17
|
-
|
|
18
|
-
Does not govern:
|
|
19
|
-
|
|
20
|
-
- Voice, rhythm, sentence construction, and information density: the `write-human` skill
|
|
21
|
-
- Headings, punctuation, word choice, and file references: `markdown.md`
|
|
22
|
-
|
|
23
|
-
## What a working wiki page looks like
|
|
24
|
-
|
|
25
|
-
A page works when a reader who has never opened it settles two things without asking anyone:
|
|
26
|
-
|
|
27
|
-
- Which folder holds it, decided from the subject alone rather than from where it happened to get written
|
|
28
|
-
- Where the content came from, so a claim can be checked against its owner rather than against this repository
|
|
29
|
-
|
|
30
|
-
A page failing either is non-conforming even when it satisfies every shape rule below.
|
|
31
|
-
|
|
32
|
-
## Placement
|
|
33
|
-
|
|
34
|
-
- Write a page here only when its subject is owned outside this repository. Route anything about how this repository works to `docs/`, `canon/context/`, or a skill body instead.
|
|
35
|
-
- File the page under `wiki/claude/`. A subject Anthropic does not own, whether a third-party tool or a vendor-neutral concept, is out of scope for this folder split. Route it to `docs/` or a skill body instead of adding a second wiki folder for it.
|
|
36
|
-
|
|
37
|
-
## Frontmatter
|
|
38
|
-
|
|
39
|
-
- `title` (required): sentence case, naming the subject
|
|
40
|
-
- `description` (required): one line naming what the page covers
|
|
41
|
-
|
|
42
|
-
## Naming
|
|
43
|
-
|
|
44
|
-
- Name a page by its kebab subject alone. The vendor folder it sits in already names the vendor, so a prefix repeats the folder.
|
|
45
|
-
- The `codebase-layout` skill carries the same rule for every folder in a project, beyond the wiki.
|
|
46
|
-
|
|
47
|
-
## Sourcing
|
|
48
|
-
|
|
49
|
-
- Close the intro paragraph with a `Source:` sentence naming the owner. Link the canonical page where one exists, and name the owner alone where the subject has no single URL.
|
|
50
|
-
- Link a docs page in its fetchable form, `https://code.claude.com/docs/en/<page>.md`, so a session reads the live text rather than a copy.
|
|
51
|
-
- Fetch current information through the `claude-code-guide` agent when the subject is Claude Code. Do not work from training knowledge.
|
|
52
|
-
- Propose an addition or correction and wait for confirmation. Do not write to a wiki file unasked.
|
|
53
|
-
|
|
54
|
-
## Shape
|
|
55
|
-
|
|
56
|
-
- Keep a page thin: the `Source:` sentence, an orientation paragraph, and lesson sections. The source owns the reference detail and a paraphrase of it falls behind within days.
|
|
57
|
-
- Apply the lesson test per section: keep a fact about the subject only when the source page does not state it. Such a fact is a gotcha this project hit, a constraint it relies on, or how it uses the feature.
|
|
58
|
-
- Read the current source before keeping or cutting a section. A fact kept from memory is the drift this shape exists to prevent.
|
|
59
|
-
- Send a session that wants reference detail to the source and fetch it live. The page answers orientation and lessons only.
|
|
60
|
-
- Leave a page with no lessons as the source link and the orientation paragraph. A catalog routes a reader by page, so the stub stays.
|
|
61
|
-
|
|
62
|
-
## Template
|
|
63
|
-
|
|
64
|
-
```markdown
|
|
65
|
-
---
|
|
66
|
-
title: <Subject>
|
|
67
|
-
description: <one line naming what this page covers>
|
|
68
|
-
---
|
|
69
|
-
|
|
70
|
-
# <Subject>
|
|
71
|
-
|
|
72
|
-
<What the subject is and why it matters, in a short orientation.> Source: <owner, with a link to the canonical page where one exists>.
|
|
73
|
-
|
|
74
|
-
## <Lesson>
|
|
75
|
-
|
|
76
|
-
<A fact the source page does not state.>
|
|
77
|
-
```
|