@erclx/canon 5.30.0 → 5.32.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/backlog-triage/SKILL.md +1 -1
- package/claude/skills/build-in-slices/REQUIREMENT.md +1 -1
- package/claude/skills/build-in-slices/references/adopted.md +1 -1
- package/claude/skills/canon-cli/REQUIREMENT.md +4 -6
- package/claude/skills/canon-cli/SKILL.md +2 -2
- package/claude/skills/canon-feedback/REQUIREMENT.md +1 -1
- package/claude/skills/canon-feedback/SKILL.md +10 -13
- package/claude/skills/canon-feedback-triage/REQUIREMENT.md +13 -14
- package/claude/skills/canon-feedback-triage/SKILL.md +50 -29
- package/claude/skills/canvas/REQUIREMENT.md +3 -4
- package/claude/skills/canvas/SKILL.md +5 -5
- package/{standards → claude/skills/canvas/references}/canvas.md +12 -1
- package/claude/skills/ci-workflow/REQUIREMENT.md +0 -1
- package/claude/skills/context-fold/REQUIREMENT.md +8 -20
- package/claude/skills/context-fold/SKILL.md +21 -45
- package/claude/skills/context-fold/references/classify.md +7 -8
- package/claude/skills/context-fold/references/completion-report.md +2 -6
- package/claude/skills/context-fold/references/context-refresh.md +5 -15
- package/claude/skills/context-fold/references/promoted-pages.md +3 -3
- package/claude/skills/context-fold/references/receipt-sweep.md +6 -17
- package/claude/skills/context-fold/references/unusable-baseline.md +4 -6
- package/claude/skills/create-rule/REQUIREMENT.md +0 -1
- package/claude/skills/create-skill/REQUIREMENT.md +6 -4
- package/claude/skills/create-skill/SKILL.md +9 -8
- package/{standards → claude/skills/create-skill/references}/skill-paths.md +1 -0
- 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 +0 -2
- 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 +1 -1
- 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 +10 -11
- 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 +1 -1
- 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 +1 -1
- package/claude/skills/draft-identity/SKILL.md +9 -7
- package/claude/skills/draft-ready/REQUIREMENT.md +1 -1
- package/claude/skills/draft-ready/SKILL.md +6 -6
- 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-issue/SKILL.md +1 -1
- package/claude/skills/git-issue/references/issue.md +3 -3
- package/claude/skills/git-pr/SKILL.md +1 -1
- package/claude/skills/git-ship/REQUIREMENT.md +0 -2
- package/claude/skills/git-ship/SKILL.md +16 -24
- package/claude/skills/git-stage/SKILL.md +1 -1
- package/claude/skills/markdown-craft/REQUIREMENT.md +23 -0
- package/claude/skills/markdown-craft/SKILL.md +17 -0
- package/{standards → claude/skills/markdown-craft/references}/markdown.md +14 -7
- package/claude/skills/plan-feature/REQUIREMENT.md +2 -1
- package/claude/skills/plan-feature/SKILL.md +14 -8
- package/{standards → claude/skills/plan-feature/references}/plan.md +33 -21
- 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 +1 -1
- package/claude/skills/review-pr/SKILL.md +5 -7
- package/claude/skills/review-pr/references/post.md +2 -2
- package/claude/skills/review-ui/REQUIREMENT.md +0 -1
- package/claude/skills/review-ui/SKILL.md +1 -1
- package/claude/skills/review-ui/references/post.md +1 -1
- package/claude/skills/role-orchestrator/REQUIREMENT.md +0 -3
- package/claude/skills/role-orchestrator/SKILL.md +8 -8
- package/claude/skills/role-orchestrator/references/orchestrator-dispatch.md +4 -3
- package/claude/skills/role-orchestrator/references/orchestrator-handoff.md +7 -10
- package/claude/skills/role-orchestrator/references/orchestrator-parked.md +2 -2
- package/claude/skills/role-orchestrator/references/orchestrator-refill.md +0 -3
- package/claude/skills/role-orchestrator/references/orchestrator-resume.md +1 -1
- package/claude/skills/role-planner/SKILL.md +2 -2
- package/claude/skills/role-reviewer/SKILL.md +1 -1
- package/claude/skills/role-worker/SKILL.md +2 -2
- 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 +8 -16
- 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 +4 -6
- package/claude/skills/session-resume/SKILL.md +3 -9
- package/claude/skills/session-worktree/SKILL.md +1 -1
- 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 +1 -1
- package/claude/skills/target-setup/references/indexes.md +1 -1
- package/claude/skills/task-board/SKILL.md +4 -4
- package/claude/skills/task-board/references/archive.md +1 -1
- 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 +13 -8
- package/claude/skills/teach-workspace/SKILL.md +1 -1
- package/claude/skills/teach-workspace/references/revisit.md +1 -1
- package/{standards → claude/skills/teach-workspace/references}/teach.md +17 -5
- package/claude/skills/test-first/REQUIREMENT.md +1 -1
- package/claude/skills/ux-audit/REQUIREMENT.md +2 -2
- package/claude/skills/ux-audit/SKILL.md +2 -3
- package/claude/skills/write-human/REQUIREMENT.md +0 -1
- package/claude/skills/write-human/SKILL.md +2 -2
- package/docs/agents/audits.md +1 -1
- package/docs/agents/canvas.md +1 -1
- package/docs/agents/commands.md +6 -10
- package/docs/agents/context-audit-checks.md +10 -24
- 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 +3 -4
- package/docs/agents/install-and-sync.md +6 -6
- package/docs/agents/intake.md +1 -1
- package/docs/agents/markdown-audit.md +1 -1
- package/docs/agents/records-stale.md +5 -5
- package/docs/agents/records-validate.md +1 -1
- package/docs/agents/records.md +2 -2
- package/docs/agents/restated.md +1 -1
- package/docs/agents/routing.md +1 -1
- package/docs/agents/rule-citations.md +1 -1
- 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 +2 -2
- package/docs/agents/tasks-validate.md +1 -1
- package/docs/agents/tasks.md +1 -1
- package/docs/agents/teach.md +1 -1
- package/docs/agents/test-order.md +1 -1
- package/docs/agents/upstream.md +94 -0
- package/docs/target/migrations.md +24 -0
- package/docs/target/projects.md +5 -7
- package/docs/target/scenarios.md +2 -2
- package/docs/target/sync.md +3 -3
- package/docs/workflow/ai-workflow.md +7 -38
- package/docs/workflow/index.md +1 -1
- package/docs/workflow/operating-model.md +8 -8
- package/docs/workflow/parallel-features.md +7 -7
- package/docs/workflow/skill-map-on-request.md +13 -16
- package/docs/workflow/skill-map.md +20 -32
- package/docs/workflow/visual-design-workflow.md +11 -14
- package/governance/renames.toml +0 -23
- package/governance/rules/canon/605-worktrees.md +1 -1
- package/governance/rules/{standards → canon}/plan.md +5 -5
- package/governance/rules/canon/tasks.md +18 -0
- package/governance/rules/writing/markdown.md +23 -0
- package/governance/stacks/base.toml +1 -1
- package/package.json +1 -1
- package/scripts/core/install-check.sh +2 -2
- package/scripts/core/regen-web-previews.ts +1 -1
- package/src/audits/catalog.ts +5 -97
- package/src/claude/cases/authoring.ts +5 -18
- package/src/claude/cases/misc.ts +0 -17
- package/src/claude/cases/setup.ts +3 -20
- package/src/claude/cases/workflow.ts +0 -33
- package/src/claude/seeds.ts +1 -7
- package/src/claude/skills-audit.ts +1 -1
- package/src/claude/skills-reach.ts +1 -1
- package/src/cli/help.ts +3 -4
- package/src/cli.ts +2 -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 -2
- package/src/commands/records.ts +24 -6
- package/src/commands/sync.ts +5 -3
- package/src/commands/upstream.ts +430 -0
- package/src/context/audit.ts +6 -15
- 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 +7 -12
- package/src/context/gate.ts +11 -91
- package/src/context/requirements.ts +13 -4
- package/src/counts/scan.ts +3 -3
- package/src/design/components.ts +2 -2
- package/src/feedback/body.ts +0 -12
- package/src/gate/measures.ts +6 -57
- package/src/gate/stages.ts +0 -1
- package/src/gov/citations.ts +9 -3
- package/src/gov/restated.ts +3 -3
- package/src/markdown/structure.ts +3 -3
- package/src/migrate/record-layout.ts +3 -3
- package/src/records/backup.ts +1 -0
- package/src/records/ordinal.ts +1 -1
- package/src/records/prune.ts +2 -1
- package/src/records/stale-canonical.ts +2 -2
- package/src/records/validate.ts +55 -0
- package/src/roots/record.ts +2 -1
- package/src/sandbox/scenario.ts +115 -11
- package/src/shipped/references.ts +3 -3
- package/src/standards/read.ts +52 -1
- package/src/sync/seeds-report.ts +1 -1
- package/src/tasks/answers.ts +14 -1
- package/src/tasks/reach.ts +2 -2
- package/src/tasks/stack.ts +176 -0
- package/src/tasks/validate.ts +1 -1
- package/src/teach/workspace.ts +1 -1
- package/src/upstream/catalog.ts +112 -0
- package/src/upstream/cursor.ts +120 -0
- package/src/upstream/digest.ts +75 -0
- package/src/upstream/due.ts +128 -0
- package/src/upstream/releases.ts +170 -0
- package/standards/context.md +3 -5
- package/standards/design.md +2 -3
- package/standards/index.md +0 -23
- package/standards/publish.md +1 -1
- package/standards/rule.md +1 -1
- package/standards/skill.md +1 -1
- package/tooling/base/reference.md +1 -1
- package/tooling/claude/reference.md +6 -20
- package/tooling/claude/seeds/.claude/hooks/index-reminder.sh +1 -1
- package/tooling/claude/seeds/.claude/hooks/records-index.sh +8 -20
- package/tooling/claude/seeds/.claude/hooks/standards-audit.sh +3 -3
- 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/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/index-lookup/REQUIREMENT.md +0 -35
- package/claude/skills/index-lookup/SKILL.md +0 -44
- 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/601-indexes.md +0 -9
- package/governance/rules/canon/603-memory.md +0 -11
- package/governance/rules/claude/565-behavior.md +0 -27
- package/governance/rules/claude/567-planning.md +0 -16
- package/governance/rules/claude/575-hooks.md +0 -16
- package/governance/rules/claude/576-settings.md +0 -13
- package/governance/rules/claude/592-claude-md.md +0 -19
- package/governance/rules/lang/120-bash.md +0 -18
- package/governance/rules/standards/architecture.md +0 -13
- package/governance/rules/standards/groundwork.md +0 -13
- package/governance/rules/standards/intake.md +0 -12
- package/governance/rules/standards/markdown.md +0 -16
- package/governance/rules/standards/memory.md +0 -12
- package/governance/rules/standards/ready.md +0 -13
- package/governance/rules/standards/requirements.md +0 -12
- package/governance/rules/standards/session.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/governance/rules/writing/800-prose.md +0 -15
- 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/repo/metadata.ts +0 -206
- 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/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
|
@@ -9,22 +9,21 @@ description: Why resuming reads the handoff before the board, reads an index bef
|
|
|
9
9
|
|
|
10
10
|
Without this skill, a session picking up old work reconstructs state from the git log, which records what shipped and not what is queued, so finished work reads as pending and the actual next item goes unmentioned. The alternative failure is worse for a different reason. A session that reads every task file and every plan to be thorough spends the context the work needs before the work starts, and the summary arrives in a session with no room left to act on it.
|
|
11
11
|
|
|
12
|
-
A compaction keeps conclusions and drops the reasoning that produced them, and the previous session can write that reasoning to a handoff before it goes. A resume that reads the board
|
|
12
|
+
A compaction keeps conclusions and drops the reasoning that produced them, and the previous session can write that reasoning to a handoff before it goes. A resume that reads the board and the plans alone walks past that file, so the one artifact written to survive the compaction reaches nobody and the next session re-derives what it holds.
|
|
13
13
|
|
|
14
14
|
The task index is a folder catalog rather than a task filter, so it carries a row for the ordering file and one for every handoff on the board. A session reporting each row as a backlog item queues work nobody filed, and the count grows with every session that ever wrote a handoff.
|
|
15
15
|
|
|
16
16
|
From a linked worktree the shared scratch folders resolve against the worktree rather than the main root, where they are empty. That reports no tracked work on a repository carrying a full backlog, and the report is indistinguishable from the true empty case.
|
|
17
17
|
|
|
18
|
-
A resume is a read, and a session that treats it as a cleanup pass offers to archive finished entries or
|
|
18
|
+
A resume is a read, and a session that treats it as a cleanup pass offers to archive finished entries or rewrite a plan it decided was stale. Both change tracked state on the strength of a summary the user has not confirmed yet.
|
|
19
19
|
|
|
20
20
|
## Must
|
|
21
21
|
|
|
22
22
|
- Read the newest handoff before the board, and report what it carries attributed to its writer
|
|
23
|
-
- Resolve the handoff, plans,
|
|
23
|
+
- Resolve the handoff, plans, and tasks folders at the main worktree root
|
|
24
24
|
- Read the task index before any individual task file, and open only the task files the summary needs
|
|
25
25
|
- Drop the board siblings from the index before reporting it as the backlog, since the catalog filters nothing and carries a row per handoff
|
|
26
26
|
- Preserve the index's order in the report, since the order is the priority
|
|
27
|
-
- Surface only the memory entries that inform the top item
|
|
28
27
|
- Close with one recommendation naming the first item and whether a plan backs it
|
|
29
28
|
|
|
30
29
|
## Must not
|
|
@@ -33,11 +32,10 @@ A resume is a read, and a session that treats it as a cleanup pass offers to arc
|
|
|
33
32
|
- Report the absence of a handoff, which is the common case and would train a reader to skip the line on the run where one exists
|
|
34
33
|
- Restate a handoff's counts, sizes, or costs as current. Each was true when written.
|
|
35
34
|
- Offer to remove, archive, or reorder an entry. Resume reports and does not mutate.
|
|
36
|
-
- Update memory, which changes when a recorded fact becomes wrong rather than on a resume
|
|
37
35
|
|
|
38
36
|
## Guards
|
|
39
37
|
|
|
40
|
-
-
|
|
38
|
+
- Every surface absent or empty reports no tracked work and stops, rather than inventing a next step from the repository
|
|
41
39
|
- A handoff found beside an empty board recommends what the handoff leaves open, since the guard passes on the handoff alone and the recommendation has no backlog item to name
|
|
42
40
|
|
|
43
41
|
## Out of scope
|
|
@@ -9,18 +9,16 @@ metadata:
|
|
|
9
9
|
|
|
10
10
|
## Step 1: read tracked work
|
|
11
11
|
|
|
12
|
-
Resolve `.canon/plans/`, `.canon/
|
|
12
|
+
Resolve `.canon/plans/`, `.canon/compact/`, and `.canon/tasks/` at the main worktree root the way `session-worktree` does.
|
|
13
13
|
|
|
14
14
|
Read these in parallel, skipping any that do not exist:
|
|
15
15
|
|
|
16
|
-
- the newest `.canon/compact/*.md`, then the newest `.canon/tasks/session-*.md`: the handoff a previous session wrote before a compaction. The first is the note `session-compact` writes, and the second is the board-side map per `${CLAUDE_SKILL_DIR}
|
|
16
|
+
- the newest `.canon/compact/*.md`, then the newest `.canon/tasks/session-*.md`: the handoff a previous session wrote before a compaction. The first is the note `session-compact` writes, and the second is the board-side map per `${CLAUDE_SKILL_DIR}/../session-map/references/session.md`, which stays readable. Whichever exists leads the report rather than the reads, and both lead it when both exist.
|
|
17
17
|
- `.canon/tasks/index.md`: the folder catalog. Read this before any individual task file, and take the task list from it by dropping the `index`, `priority`, `backlog`, and `session-` rows, which are siblings rather than tasks.
|
|
18
18
|
- `.canon/plans/*.md`: execution detail for in-progress tasks
|
|
19
19
|
|
|
20
20
|
Then read only the task files the summary needs, typically the top one. Do not read the whole folder.
|
|
21
21
|
|
|
22
|
-
Once the top task is known, grep `.canon/memory/index.md` for two or three terms from its title and read at most three of the entries whose rows match. Never read the index whole, since a grown pen's index runs to hundreds of rows and the report shows three at most. With no top task, or no row matching, read no memory entry and say nothing about it.
|
|
23
|
-
|
|
24
22
|
Most projects carry no handoff. Say nothing about its absence, since a line reporting it every run trains a reader to skip the line on the run where a handoff exists.
|
|
25
23
|
|
|
26
24
|
If the handoff, task, and plan surfaces are all absent or empty, stop: `✅ No tracked work found. Start a new task.`
|
|
@@ -35,17 +33,13 @@ Output these sections, omitting the first when no handoff was found:
|
|
|
35
33
|
|
|
36
34
|
**Active plans:** one line per file in `.canon/plans/`, linking each to its task file in `.canon/tasks/`. Say "None" if empty.
|
|
37
35
|
|
|
38
|
-
**Relevant context:** the memory entries Step 1 matched to the top backlog item, three at most. Skip if none matched.
|
|
39
|
-
|
|
40
36
|
## Step 3: recommend
|
|
41
37
|
|
|
42
38
|
End with one line: `Start with: <first Up next item>` and note whether it has a linked plan.
|
|
43
39
|
|
|
44
40
|
When the board is empty and a handoff was found, name what the handoff leaves open instead: `Start with: <the open thread the handoff names>`. A recommendation slot filled with nothing reads as a failed run, and a handoff on an empty board is the shape a session leaves when it was reasoning rather than shipping.
|
|
45
41
|
|
|
46
|
-
Do not offer to remove entries. A completed task is archived out of `.canon/tasks/` when work ships. The git log is the authoritative record of shipped work. Plan files are archived per the lifecycle rule in `${CLAUDE_SKILL_DIR}
|
|
47
|
-
|
|
48
|
-
Memory is updated only when a recorded fact becomes wrong, never on resume. A domain fact reaches a session through `canon/context/`, which `memory-capture` routes to and the three-tier model loads on demand, so the memory folder read here is the residue no context entry owns.
|
|
42
|
+
Do not offer to remove entries. A completed task is archived out of `.canon/tasks/` when work ships. The git log is the authoritative record of shipped work. Plan files are archived per the lifecycle rule in `${CLAUDE_SKILL_DIR}/../plan-feature/references/plan-lifecycle.md`.
|
|
49
43
|
|
|
50
44
|
## Writing the next one
|
|
51
45
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: session-worktree
|
|
3
|
-
description: Enters a Claude Code worktree at `.claude/worktrees/<name>/` with a name derived from the active plan or branch. Use when asked to "enter a worktree", "start a worktree", "work in a worktree", or at the plan-to-execute boundary after `/plan-feature`. Also use when an `Edit` or `Write` to a main-root file such as a plan, a task, or a
|
|
3
|
+
description: Enters a Claude Code worktree at `.claude/worktrees/<name>/` with a name derived from the active plan or branch. Use when asked to "enter a worktree", "start a worktree", "work in a worktree", or at the plan-to-execute boundary after `/plan-feature`. Also use when an `Edit` or `Write` to a main-root file such as a plan, a task, or a review report was refused for session isolation. Do NOT use to list, clean up, or rotate worktrees (use `git-worktree`).
|
|
4
4
|
metadata:
|
|
5
5
|
family: build
|
|
6
6
|
---
|
|
@@ -3,7 +3,7 @@ title: Main-root write routing
|
|
|
3
3
|
description: Which tools the isolation refusal covers, the route each kind of main-root write takes, the fallback when a heredoc is refused, and the index cost a shell write carries
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
Shared session scratch, being `.canon/plans/`, `.canon/review/`,
|
|
6
|
+
Shared session scratch, being `.canon/plans/`, `.canon/review/`, and `.canon/tasks/`, lives at the main worktree root. Resolve that root with the first `worktree` entry of `git worktree list --porcelain`, falling back to `pwd` outside a git repository.
|
|
7
7
|
|
|
8
8
|
## The refusal
|
|
9
9
|
|
|
@@ -21,4 +21,4 @@ Shared session scratch, being `.canon/plans/`, `.canon/review/`, `.canon/memory/
|
|
|
21
21
|
|
|
22
22
|
## The index cost
|
|
23
23
|
|
|
24
|
-
A shell write skips every `PostToolUse` hook, since those match `Write|Edit|MultiEdit` and never fire on `Bash`. That costs nothing on `.canon/plans/` and `.canon/review/`, which no hook indexes, and costs the generated `index.md` on `.canon/tasks
|
|
24
|
+
A shell write skips every `PostToolUse` hook, since those match `Write|Edit|MultiEdit` and never fire on `Bash`. That costs nothing on `.canon/plans/` and `.canon/review/`, which no hook indexes, and costs the generated `index.md` on `.canon/tasks/`. Regenerate positionally after a shell write there, by an explicit `canon indexes regen` call, unless the verb that made the write already calls it, as `canon tasks archive` does.
|
|
@@ -51,5 +51,4 @@ A stated phase is also one a session can talk itself out of. The reasons it give
|
|
|
51
51
|
## Out of scope
|
|
52
52
|
|
|
53
53
|
- A typo fix and a cause already agreed on, where the phases cost more than they return
|
|
54
|
-
- Reviewing a change for defects it has not yet exhibited: `review-branch`
|
|
55
54
|
- Deciding whether the architecture should change, which the three-attempt stop hands to the user rather than answering
|
|
@@ -7,7 +7,7 @@ description: What the target check is for, the gap it closes, and the repairing
|
|
|
7
7
|
|
|
8
8
|
## Gap
|
|
9
9
|
|
|
10
|
-
Without this skill, a session landing in a target project decides for itself what to look at.
|
|
10
|
+
Without this skill, a session landing in a target project decides for itself what to look at. An orchestrator dispatches a worker into each target and gets a pull request out, and nothing told that worker what a target holds against what the toolkit ships, so a wave is only as good as whatever each session happened to examine. Four hand-driven repairs across two waves examined four different sets of surfaces and none of them read the same domain twice.
|
|
11
11
|
|
|
12
12
|
The second half of the gap is silence. A session that runs a verb the target's binary does not carry, or reads a report key that is absent, has no instruction telling it apart from a clean answer, so an unexamined domain reaches the reader as a domain that passed.
|
|
13
13
|
|
|
@@ -32,11 +32,11 @@ The second half of the gap is silence. A session that runs a verb the target's b
|
|
|
32
32
|
|
|
33
33
|
- `canon` absent from the path: stop, since no domain can be read
|
|
34
34
|
- No `.claude/` at the working root: stop and name the scaffold command, since nothing is installed to check
|
|
35
|
-
- The working root is the toolkit itself: stop and
|
|
35
|
+
- The working root is the toolkit itself: stop and ask the orchestrator for a worker per repository, since this skill reads what the toolkit installed into rather than the source
|
|
36
36
|
|
|
37
37
|
## Out of scope
|
|
38
38
|
|
|
39
39
|
- Document health, which asks a content question rather than a structural one and takes its own surface
|
|
40
40
|
- Repairing anything a section names. Each routes to the command or skill that owns it.
|
|
41
41
|
- A target's own routes, which `canon inventory` reports as a listing rather than a verdict and which is a fact about the project rather than about what the toolkit ships
|
|
42
|
-
- First-time scaffold, which is `target-setup
|
|
42
|
+
- First-time scaffold, which is `target-setup`
|
|
@@ -15,7 +15,7 @@ Six domains carry the report. Five answer from a verb that already exists and th
|
|
|
15
15
|
|
|
16
16
|
- `canon` absent from the path: stop. `❌ canon is not on PATH, so no domain can be read.`
|
|
17
17
|
- No `.claude/` directory at the working root: stop. `❌ No .claude/ here, so nothing is installed to check. Run canon init first.`
|
|
18
|
-
- A `claude/skills/` folder at the working root, with no leading dot: stop. `❌ This is the toolkit itself rather than a target.
|
|
18
|
+
- A `claude/skills/` folder at the working root, with no leading dot: stop. `❌ This is the toolkit itself rather than a target. Ask the orchestrator for a worker per repository to take a change out to the targets.` A target receives skills at `.claude/skills/` and authors none, so the spelling without the dot separates the source from what it installs into.
|
|
19
19
|
- Run every command under `CANON_NON_INTERACTIVE=1` and prompt at no point. Every caller in the near term is a worker a wave dispatched, with nobody present to answer, so the non-interactive path is the only path rather than a flag a caller remembers.
|
|
20
20
|
- Branch on each record's own fields rather than on an exit status. An operator's shell profile may wrap `canon` in a function whose status comes from a trailing command, which reports every refusal as success.
|
|
21
21
|
|
|
@@ -77,7 +77,7 @@ Read `seeds.entries` off the report. Each entry is `matching`, `stale`, `drifted
|
|
|
77
77
|
- Behind: anything else. Report `stale` and `missing` separately from `drifted`, which means the content matches no version the toolkit ever published, so the project wrote it.
|
|
78
78
|
- Unread: `historyUnavailable` set on `seeds`, which leaves every difference unattributed. Say so rather than reporting a file as untouched.
|
|
79
79
|
|
|
80
|
-
|
|
80
|
+
Report a `stale` seed as safe to take whole and a `drifted` one as a hand merge against the toolkit copy, since a sync command would overwrite the project's edits.
|
|
81
81
|
|
|
82
82
|
A seed entry matching says the file's bytes match the shipped seed. It says nothing about whether the harness those files configure is wired, which is the next domain.
|
|
83
83
|
|
|
@@ -36,12 +36,12 @@ two copies could disagree with nothing comparing them.
|
|
|
36
36
|
|
|
37
37
|
## Must not
|
|
38
38
|
|
|
39
|
-
- Guard against clobbering an existing project's configs, which
|
|
39
|
+
- Guard against clobbering an existing project's configs, which `canon sync` covers on an existing project and `target-check` reports on
|
|
40
40
|
- Author a rule or a stack in the target project on the fly
|
|
41
41
|
- Generate a config the tooling stack ships as a golden file
|
|
42
42
|
- Install Claude Code plugins, which provision a machine rather than a project
|
|
43
43
|
- Fail an unattended scaffold on a server start, which is flaky enough to be a depth the operator asks for
|
|
44
|
-
- Survive as a skill nothing invokes but a person typing its name.
|
|
44
|
+
- Survive as a skill nothing invokes but a person typing its name. The target projects page names it as the scaffold step, so a later read finding no caller but the author has found a body that should have stayed a verb
|
|
45
45
|
|
|
46
46
|
## Guards
|
|
47
47
|
|
|
@@ -51,6 +51,6 @@ two copies could disagree with nothing comparing them.
|
|
|
51
51
|
|
|
52
52
|
## Out of scope
|
|
53
53
|
|
|
54
|
-
- An existing project's per-domain drift, which `
|
|
55
|
-
- Reaching
|
|
54
|
+
- An existing project's per-domain drift, which `target-check` reports
|
|
55
|
+
- Reaching the project's history, which `git-commit` owns
|
|
56
56
|
- Provisioning Claude Code plugins on a machine, which the `claude plugin` CLI does directly
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: target-setup
|
|
3
|
-
description: Gets a project onto the toolkit. Detects the stack, resolves per-domain arguments, previews the chain, runs `canon init`, then verifies at a stated depth and bootstraps the `index.md` system. Use when asked to "set up this project", "init this project", "bootstrap the toolkit", "install governance", "install gov rules", "set up indexes", "verify the scaffold", "run the smoke tests", or "one-shot install". Assumes the `canon` CLI is on PATH. Do NOT use on a project that already carries the toolkit,
|
|
3
|
+
description: Gets a project onto the toolkit. Detects the stack, resolves per-domain arguments, previews the chain, runs `canon init`, then verifies at a stated depth and bootstraps the `index.md` system. Use when asked to "set up this project", "init this project", "bootstrap the toolkit", "install governance", "install gov rules", "set up indexes", "verify the scaffold", "run the smoke tests", or "one-shot install". Assumes the `canon` CLI is on PATH. Do NOT use on a project that already carries the toolkit, or to report per-domain drift without repairing it, which is `target-check`.
|
|
4
4
|
metadata:
|
|
5
5
|
family: setup
|
|
6
6
|
---
|
|
@@ -50,14 +50,14 @@ else. Do not pause for a separate confirmation.
|
|
|
50
50
|
## Scope
|
|
51
51
|
|
|
52
52
|
- This skill and `canon init` run once on a fresh scaffold, never on an existing project. They do not guard against clobbering existing configs. When tempted to add guards, mode switches, or an existing-project branch, stop. Extend the per-domain `canon <domain> install` or `canon sync` paths instead.
|
|
53
|
-
- The chain stops at the project edge. `
|
|
53
|
+
- The chain stops at the project edge. `git-commit` also ships, reaching the project's history, and does not run here.
|
|
54
54
|
- Claude Code plugins are a machine concern rather than a project one, so no phase here installs them. Install them with `claude plugin install <name> --scope user`, which applies in every project on the machine and is copied into none.
|
|
55
55
|
|
|
56
56
|
## Declined states
|
|
57
57
|
|
|
58
58
|
Three states reach this skill that the chain does not serve. Name the destination for each, so the refusal routes rather than ends. The first two stop the chain outright and the third runs it on a default the person may not want.
|
|
59
59
|
|
|
60
|
-
- **An existing project.** Stop and hand off to `
|
|
60
|
+
- **An existing project.** Stop and hand off to `target-check`, which reports what the target already carries before anything is repaired. This chain never reads that, so any per-domain install picked here is a guess against configs nobody read. The Scope bullet above names the same commands as the authoring alternative, and this is the destination a person takes.
|
|
61
61
|
- **An install wanting the `.claude/` folder alone.** Stop. Run `canon claude init` for the seed docs, then run the `indexes` phase over the project's own documentation folders. Neither needs the tooling sync the `install` phase runs.
|
|
62
62
|
- **A language the toolkit carries no stack for.** The chain still runs, on `base`, with the fallback marked in the preview. A project that wants none of what `base` carries declines there and takes the `gov` phase, which is language-neutral and installs rules without the `base` development dependencies the tooling layer would drop on it. Say so at the preview rather than resolving it here, since the fallback is a working default and only the person can say whether it fits.
|
|
63
63
|
|
|
@@ -67,7 +67,7 @@ folder is a Go or PHP root rather than a JavaScript one.
|
|
|
67
67
|
|
|
68
68
|
Read these once, from the repository root:
|
|
69
69
|
|
|
70
|
-
- `canon/REQUIREMENTS.md`
|
|
70
|
+
- `canon/REQUIREMENTS.md` if present
|
|
71
71
|
- Directory structure via `ls -1` of the project root and `src/` if present
|
|
72
72
|
|
|
73
73
|
## Resolve arguments
|
|
@@ -75,7 +75,7 @@ candidate list and stop rather than choosing on the operator's behalf.
|
|
|
75
75
|
For each chosen folder, read every `*.md` sibling and draft frontmatter:
|
|
76
76
|
|
|
77
77
|
- `title`: derived from the first H1. If absent, derive from the filename in sentence case.
|
|
78
|
-
- `description`: one line summarizing the file's purpose, drawn from the first paragraph after the H1. Follow `${CLAUDE_SKILL_DIR}
|
|
78
|
+
- `description`: one line summarizing the file's purpose, drawn from the first paragraph after the H1. Follow `${CLAUDE_SKILL_DIR}/../markdown-craft/references/markdown.md` § Frontmatter descriptions for length and style.
|
|
79
79
|
|
|
80
80
|
Surface every drafted entry to the user grouped by file:
|
|
81
81
|
|
|
@@ -9,7 +9,7 @@ metadata:
|
|
|
9
9
|
|
|
10
10
|
Owns the two operations that bring a task file into existence and take it out of the folder. `context-fold` edits the contents of a task that already exists, marking outcomes `[x]`. Do not mark outcomes here, and do not move a plan by hand: the archive carries it.
|
|
11
11
|
|
|
12
|
-
Read `${CLAUDE_SKILL_DIR}
|
|
12
|
+
Read `${CLAUDE_SKILL_DIR}/references/tasks.md` before writing any file. It holds the filename convention, the frontmatter contract, and the file format. Do not work them from memory.
|
|
13
13
|
|
|
14
14
|
## Guards
|
|
15
15
|
|
|
@@ -43,7 +43,7 @@ Do not derive the label from a version file. `${CLAUDE_SKILL_DIR}/../../standard
|
|
|
43
43
|
|
|
44
44
|
### Step 3: write the file
|
|
45
45
|
|
|
46
|
-
Write `.canon/tasks/vXX.Y-<slug>.md` under the claimed label, reading the file first if a session ever stubbed it, following the format in `${CLAUDE_SKILL_DIR}
|
|
46
|
+
Write `.canon/tasks/vXX.Y-<slug>.md` under the claimed label, reading the file first if a session ever stubbed it, following the format in `${CLAUDE_SKILL_DIR}/references/tasks.md`. Include a link line only when the file or folder it names exists. A link to a plan nobody has written yet is the broken pointer the archive rules exist to prevent.
|
|
47
47
|
|
|
48
48
|
Write `Plan:`, `Groundwork:`, and `Intake:` as markdown links relative to `.canon/tasks/`, as in `Plan: [feature-<slug>](../plans/feature-<slug>.md)`. Leave `Issue:` a bare `#NNN`. A task written in the older bare-path form still parses, so it costs the board a clickable line rather than an archive, but it leaves the board in two shapes for every reader after.
|
|
49
49
|
|
|
@@ -55,7 +55,7 @@ Write it immediately. Claude Code's tool permission dialog is the confirmation g
|
|
|
55
55
|
|
|
56
56
|
A task file with no row is a dropped task, so name the surface it lands on in the same pass that creates it. A task that would plausibly be planned within the next few waves takes a row under `## Needs a plan` in `.canon/tasks/priority.md`, positioned by where it sits against the rows already there, with the reason for that position in its `Waiting on` cell. Anything else takes a line in `.canon/tasks/backlog.md`, which is unordered and where in the file it goes means nothing.
|
|
57
57
|
|
|
58
|
-
The test and both file shapes are in `${CLAUDE_SKILL_DIR}
|
|
58
|
+
The test and both file shapes are in `${CLAUDE_SKILL_DIR}/references/board.md`.
|
|
59
59
|
|
|
60
60
|
Check the roster for a live orchestrator before writing either file. Read `canon sessions list --self --json` for this session's own `sessionId` and `name`, then read `canon sessions list --json` and match a row whose `repository` matches this session's own, whose `sessionId` differs from it, and whose `name` starts with `orchestrator-`. That is the convention every hand-launched controller on this machine currently uses, and it excludes every `worker-` and `planner-` session cleanly. Treat a refusal from either call the same as a roster read that failed.
|
|
61
61
|
|
|
@@ -71,7 +71,7 @@ Scan for work that has been decided and would otherwise be forgotten. Three orig
|
|
|
71
71
|
|
|
72
72
|
List `.canon/groundwork/` and run `gh issue list --state open` when a remote is configured, then grep the board for each track name and issue number. Report any with no task, one line each.
|
|
73
73
|
|
|
74
|
-
Read the dumps through `canon intake list --json`, which reports items, open, unread, and malformed per folder and owns the parse of the answer contract `${CLAUDE_SKILL_DIR}
|
|
74
|
+
Read the dumps through `canon intake list --json`, which reports items, open, unread, and malformed per folder and owns the parse of the answer contract `${CLAUDE_SKILL_DIR}/../plan-intake/references/intake.md` fixes. Then grep `.canon/tasks/`, `.canon/tasks/archive/`, and `.canon/tasks/declined/` for each folder slug. A dump with no live task is the ordinary shape of one already promoted and either shipped or declined, so a check reading the board by itself reports every settled folder as abandoned.
|
|
75
75
|
|
|
76
76
|
A dump is the stronger case for this scan rather than the weaker one. A track holds one question and stays visible, while a dump holds dozens of items whose verdicts were reached and then left with nothing carrying them forward.
|
|
77
77
|
|
|
@@ -40,7 +40,7 @@ On success the record carries `from`, `to`, `priorityRowRemoved`, and `indexRege
|
|
|
40
40
|
Each reason has one resolution and none of them is to archive around it:
|
|
41
41
|
|
|
42
42
|
- `open-outcomes`: the named outcomes are unmarked or genuinely open. Run `context-fold` when the work shipped and nothing marked it. Leave the task on the board when the outcome is real. When the work is being abandoned, cut it by striking the body, `- ~~<outcome>~~ <why>`, whatever the checkbox holds, so the board records what was dropped rather than meeting this refusal a second time.
|
|
43
|
-
- `ambiguous`: two tasks name one pull request, which is the misfile `${CLAUDE_SKILL_DIR}
|
|
43
|
+
- `ambiguous`: two tasks name one pull request, which is the misfile `${CLAUDE_SKILL_DIR}/references/tasks.md` rules out. Resolve the citation by hand, since no sweep repairs it.
|
|
44
44
|
- `earlier-slice`: the number is listed on the task but is not the last, so a later slice is still to merge. Leave the task on the board. Its last slice's merge archives it.
|
|
45
45
|
- `pending-branch`: a branch named in `detail` ticked an outcome before its own pull request number was recorded. Leave the task live, since that branch's merge archives it once `git-pr` records the number. When the operator decides a named branch was abandoned, archive by stem, which is the one case for it.
|
|
46
46
|
- `no-match`: the stem or number names nothing on the board. Check the name against the listed stems.
|
|
@@ -7,6 +7,15 @@ description: Readiness groups, row cells, and ordering for priority.md, the unor
|
|
|
7
7
|
|
|
8
8
|
Applies to `.canon/tasks/priority.md`, `.canon/tasks/backlog.md`, and `.canon/tasks/index.md`, the three files beside the tasks that say which one runs next. Update `priority.md` when a task is filed, planned, dispatched, or blocked, and `backlog.md` whenever the board is swept.
|
|
9
9
|
|
|
10
|
+
## Contents
|
|
11
|
+
|
|
12
|
+
- [Scope](#scope)
|
|
13
|
+
- [What a working board looks like](#what-a-working-board-looks-like)
|
|
14
|
+
- [The files](#the-files)
|
|
15
|
+
- [Ordering](#ordering)
|
|
16
|
+
- [The backlog](#the-backlog)
|
|
17
|
+
- [Validation](#validation)
|
|
18
|
+
|
|
10
19
|
## Scope
|
|
11
20
|
|
|
12
21
|
Governs the board files under `.canon/tasks/`: the readiness groups and their columns in `priority.md`, row order and the reason each row states, the backlog beside it, and the generated index.
|
|
@@ -7,7 +7,7 @@ description: How task-board gathers the reason a task is decided against, runs c
|
|
|
7
7
|
|
|
8
8
|
The Decline mode of `task-board`. The session reads this file when the request names a task decided against.
|
|
9
9
|
|
|
10
|
-
Read `${CLAUDE_SKILL_DIR}
|
|
10
|
+
Read `${CLAUDE_SKILL_DIR}/references/tasks-decline.md` first. It holds the declined folder, the `Declined:` line, and what the move does to a plan and a board row.
|
|
11
11
|
|
|
12
12
|
A task decided against carries no `post-merge` hook of its own, so every decline request arrives here directly rather than through work the hook already did.
|
|
13
13
|
|
|
@@ -1,12 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Tasks reference
|
|
3
3
|
description: Folder layout, filename convention, file format, origin lines, and archiving for task files under .canon/tasks/
|
|
4
|
-
paths:
|
|
5
|
-
- '.canon/tasks/**'
|
|
6
|
-
rule:
|
|
7
|
-
- 'Follow the board standard for `priority.md` and `backlog.md`, their readiness groups, and row order. Read it with `canon standards board`.'
|
|
8
|
-
- 'Never hand-edit `.canon/tasks/index.md`. A hook regenerates it from sibling frontmatter.'
|
|
9
|
-
- 'Follow the task decline standard for a task decided against. Read it with `canon standards tasks-decline`.'
|
|
10
4
|
---
|
|
11
5
|
|
|
12
6
|
# Tasks reference
|
|
@@ -17,6 +11,18 @@ Update when a task starts, completes, or changes scope. When to open a task at a
|
|
|
17
11
|
|
|
18
12
|
The folder is gitignored. Board state changes when work ships rather than when a branch is written, so committing it would put a claim about the future into the diff of an unrelated pull request. The git log records what shipped.
|
|
19
13
|
|
|
14
|
+
## Contents
|
|
15
|
+
|
|
16
|
+
- [Scope](#scope)
|
|
17
|
+
- [Layout](#layout)
|
|
18
|
+
- [Filenames](#filenames)
|
|
19
|
+
- [Frontmatter](#frontmatter)
|
|
20
|
+
- [File format](#file-format)
|
|
21
|
+
- [Origin](#origin)
|
|
22
|
+
- [What goes in](#what-goes-in)
|
|
23
|
+
- [What does not go in](#what-does-not-go-in)
|
|
24
|
+
- [Archiving](#archiving)
|
|
25
|
+
|
|
20
26
|
## Scope
|
|
21
27
|
|
|
22
28
|
Governs the task files under `.canon/tasks/`: folder layout, filenames, frontmatter, file format, origin lines, and archiving.
|
|
@@ -27,7 +33,6 @@ Does not govern:
|
|
|
27
33
|
- Execution order, readiness groups, the backlog, and the generated index beside the tasks: `board.md`
|
|
28
34
|
- The plan file a task cites, its sections, and its answer contract: `plan.md`
|
|
29
35
|
- Phase-label format and which surfaces a label may appear on: `versioning.md`
|
|
30
|
-
- Architectural reasoning that outlives a task: `architecture.md`
|
|
31
36
|
- The pre-compaction handoff sitting in the folder, its filename and its sections: `session.md`
|
|
32
37
|
- When a project opens a task at all, which is project policy rather than a shape rule
|
|
33
38
|
|
|
@@ -154,7 +159,7 @@ The line is what lets a merge close its own task. `canon tasks archive --pull-re
|
|
|
154
159
|
|
|
155
160
|
- Class names, file paths, function names, or prop names in any entry or title
|
|
156
161
|
- Code-level steps or implementation detail. Behavioral specifics are fine.
|
|
157
|
-
- Architectural reasoning that outlives the task. A finding explains why this task is shaped as it is. A decision the system keeps after the task closes belongs in
|
|
162
|
+
- Architectural reasoning that outlives the task. A finding explains why this task is shaped as it is. A decision the system keeps after the task closes belongs in the context entry of the domain it constrains.
|
|
158
163
|
- Narrative of the session that produced the task. A finding states what constrains the task, so what was probed, what it cost, and who decided belongs in the groundwork folder the `Groundwork:` line names. A task with no groundwork folder cuts the narrative rather than relocating it, since the board is not the fallback destination for it.
|
|
159
164
|
- "In progress" or "Blocked" headings. Note status inline on the outcome instead.
|
|
160
165
|
- Sequencing rationale or which version is active. Why this task is planned before its neighbors goes on its row in `priority.md`, in the cell that already carries what it is waiting on. Rationale wider than one row has no home at all, so cut it rather than filing it here.
|
|
@@ -11,7 +11,7 @@ metadata:
|
|
|
11
11
|
|
|
12
12
|
Run a learning workspace on one subject across sessions. The workspace holds what the learner has been through, so a session weeks later resumes from the folder rather than from the conversation.
|
|
13
13
|
|
|
14
|
-
The shape of the workspace is fixed by `${CLAUDE_SKILL_DIR}
|
|
14
|
+
The shape of the workspace is fixed by `${CLAUDE_SKILL_DIR}/references/teach.md`. Read it before writing anything into the folder. The glossary answers to `${CLAUDE_SKILL_DIR}/references/glossary.md` wherever it lands. The pedagogy sits in `${CLAUDE_SKILL_DIR}/references/pedagogy.md`, the lesson craft and its build in `${CLAUDE_SKILL_DIR}/references/lesson-craft.md` and `lesson-build.md`, the record's revisit schedule in `revisit.md`, and the promotion routing in `${CLAUDE_SKILL_DIR}/references/promotion.md`.
|
|
15
15
|
|
|
16
16
|
## Guards
|
|
17
17
|
|
|
@@ -7,7 +7,7 @@ description: How teach-workspace Step 5 writes a learning record's Revisit secti
|
|
|
7
7
|
|
|
8
8
|
Part of Step 5 of `teach-workspace`. The session reads this file once the record's lessons, retrievals, and wrong answers are written, before restating the mission's success lines.
|
|
9
9
|
|
|
10
|
-
Then write `## Revisit`, one bullet per item, in the shape `${CLAUDE_SKILL_DIR}
|
|
10
|
+
Then write `## Revisit`, one bullet per item, in the shape `${CLAUDE_SKILL_DIR}/references/teach.md` fixes:
|
|
11
11
|
|
|
12
12
|
```markdown
|
|
13
13
|
## Revisit
|
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: Teach reference
|
|
3
3
|
description: Workspace layout, ordinal naming, frontmatter, and the mission and learning-record formats for a learning workspace
|
|
4
|
-
paths:
|
|
5
|
-
- '.canon/teach/**'
|
|
6
|
-
rule:
|
|
7
|
-
- 'Follow the glossary standard for the glossary every workspace carries at its root. It is the single source for the entry shape, the ordering, and which terms the file carries. Read it with `canon standards glossary`.'
|
|
8
|
-
- 'Report it rather than proceeding silently when that file does not resolve. It ships with the plugin and this rule ships with the CLI, so a project that installed governance alone does not have it.'
|
|
9
4
|
---
|
|
10
5
|
|
|
11
6
|
# Teach reference
|
|
@@ -14,6 +9,23 @@ Applies to a learning workspace at `.canon/teach/<nn>-<topic>/`. One workspace h
|
|
|
14
9
|
|
|
15
10
|
The folder is gitignored. Its markdown half is written in a format the authoring gates read, so a page promoted out of it later needs no conversion.
|
|
16
11
|
|
|
12
|
+
## Contents
|
|
13
|
+
|
|
14
|
+
- [Scope](#scope)
|
|
15
|
+
- [What a working workspace looks like](#what-a-working-workspace-looks-like)
|
|
16
|
+
- [Folder name](#folder-name)
|
|
17
|
+
- [Layout](#layout)
|
|
18
|
+
- [Frontmatter](#frontmatter)
|
|
19
|
+
- [File naming](#file-naming)
|
|
20
|
+
- [MISSION.md](#missionmd)
|
|
21
|
+
- [Learning records](#learning-records)
|
|
22
|
+
- [Revisit](#revisit)
|
|
23
|
+
- [GLOSSARY.md](#glossarymd)
|
|
24
|
+
- [RESOURCES.md](#resourcesmd)
|
|
25
|
+
- [Conventions](#conventions)
|
|
26
|
+
- [Anti-patterns](#anti-patterns)
|
|
27
|
+
- [Template](#template)
|
|
28
|
+
|
|
17
29
|
## Scope
|
|
18
30
|
|
|
19
31
|
Governs a learning workspace under `.canon/teach/<nn>-<topic>/`: folder layout, ordinal naming, frontmatter, and the mission and learning-record formats.
|
|
@@ -33,7 +33,7 @@ Without this skill, a session implementing a planned change writes the test afte
|
|
|
33
33
|
|
|
34
34
|
- Choosing the layer a test belongs at and judging whether it is a good test: `canon:test-craft`, loaded at step 1 rather than restated here
|
|
35
35
|
- Finding the cause of an unexplained failure: `canon:systematic-debugging`
|
|
36
|
-
- Confirming visual output after a change lands: `
|
|
36
|
+
- Confirming visual output after a change lands: `ui-checklist` writes the list to confirm against
|
|
37
37
|
- Shaping the function, class, or module the implementation writes: `canon:code-craft`, loaded at step 4 rather than restated here
|
|
38
38
|
- Committing the behavior as a slice and ordering the slices of a larger build: `canon:build-in-slices`
|
|
39
39
|
- The mechanical audit of whether an implementation reached history ahead of its test: `canon gov test-order`, invoked from `auto-ship`
|
|
@@ -13,7 +13,7 @@ The pass slides into fixing what it finds, and then the audit and the change lan
|
|
|
13
13
|
|
|
14
14
|
## Must
|
|
15
15
|
|
|
16
|
-
- Read the design system
|
|
16
|
+
- Read the design system as ground truth for intent before flagging any drift, where the project carries one
|
|
17
17
|
- Group findings by surface, since a surface is what a person opens and fixes
|
|
18
18
|
- Cover missing feedback states, unhandled edge cases, inconsistencies, and friction in daily use
|
|
19
19
|
- Write the full report to the branch-derived path at the main worktree root, overwriting
|
|
@@ -36,5 +36,5 @@ The pass slides into fixing what it finds, and then the audit and the change lan
|
|
|
36
36
|
- Fixing what it found, which is a separate change with its own review
|
|
37
37
|
- Feature planning, which `plan-feature` owns
|
|
38
38
|
- Verifying one specific change, which `ui-checklist` owns
|
|
39
|
-
- Defining the intent it audits against, which
|
|
39
|
+
- Defining the intent it audits against, which the design document owns
|
|
40
40
|
- Measuring what a running interface costs to paint, block, or shift, which `ux-measure` owns. Contrast stays here rather than going with it, being computable from two color values this skill already reads off the token table.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: ux-audit
|
|
3
|
-
description: Audits the current UI for incomplete, inconsistent, or confusing patterns. Reads DESIGN.md
|
|
3
|
+
description: Audits the current UI for incomplete, inconsistent, or confusing patterns. Reads DESIGN.md for intent, scans UI files, and outputs observations grouped by surface. Use when asked "audit the UX", "audit the UI", "UX audit", or "find UI roughness". Do NOT use for new feature planning or code changes, and do NOT use to measure what a running interface costs to paint, which is `ux-measure`.
|
|
4
4
|
metadata:
|
|
5
5
|
family: check
|
|
6
6
|
---
|
|
@@ -18,7 +18,6 @@ Read these in parallel from the project root, skipping any that do not exist:
|
|
|
18
18
|
|
|
19
19
|
- `CLAUDE.md`: project type and conventions
|
|
20
20
|
- `canon/DESIGN.md`: visual intent, tokens, typography, spacing rules
|
|
21
|
-
- `canon/wireframes/index.md` + every `canon/wireframes/<surface>.md`, each a flat file or a grouped surface's own `canon/wireframes/<surface>/index.md` and the siblings it lists: intended UI layout, UI copy, interaction rules. Surfaces are loaded one file at a time during Step 3. Per `${CLAUDE_SKILL_DIR}/../../standards/wireframes.md`, these carry layout and intent, not implementation detail.
|
|
22
21
|
- `canon/REQUIREMENTS.md`: feature scope and non-goals
|
|
23
22
|
- A committed capture beside the surface's own source, when the project has one. A rendered surface reads differently composed than it reads written, and a capture is the only artifact here that shows the composed result rather than the markup. Absent one, note that this audit reads source only, and keep going. This is a stated fallback, not a stop: a project with no capture yet, or a capture mid-rebuild, still gets a source-only audit rather than losing the skill entirely.
|
|
24
23
|
|
|
@@ -35,7 +34,7 @@ For each surface, look for:
|
|
|
35
34
|
3. **Inconsistencies**: spacing, tone of voice, interaction patterns, icon use, keyboard affordances
|
|
36
35
|
4. **Roughness in daily use**: friction, redundant steps, unclear affordances, ambiguous labels
|
|
37
36
|
|
|
38
|
-
Use `canon/DESIGN.md`
|
|
37
|
+
Use `canon/DESIGN.md` as ground truth for intent where it exists. Observations only, no implementation suggestions or fixes.
|
|
39
38
|
|
|
40
39
|
Where Step 1 found a committed capture for this surface, judge composed output (spacing, overlap, contrast, wrapping) against it rather than inferring layout from markup alone, which reports what the surface renders rather than what its source implies. Where none exists, judge from source alone and say so in that surface's findings, since a source-only read cannot see what only a render would show.
|
|
41
40
|
|
|
@@ -44,6 +44,5 @@ Importing that catalog wholesale fails on a different measurement. External mate
|
|
|
44
44
|
- The banned characters, which `markdown.md` states for a reader and `canon markdown audit` gates from package data
|
|
45
45
|
- Spelling, which a project's spell checker enforces
|
|
46
46
|
- Markdown mechanics, being headings, lists, code spans, punctuation, and file references
|
|
47
|
-
- Restating text that already exists in plainer words, which `restate-plainly` owns on a different trigger, since a restatement is asked for by name and this arrives on a glob match. The rules here still govern how that restatement reads, and that body cites this one rather than carrying a copy.
|
|
48
47
|
- What voice a given surface declares, which belongs to the standard governing that surface
|
|
49
48
|
- Measuring whether finished output followed these rules, which needs a check this skill does not carry
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: write-human
|
|
3
|
-
description: Carries the voice, word choice, rhythm, sentence construction, and information density rules a banned-character scan cannot express, plus the catalog of machine tells that survive a clean ban scan. Use when writing or revising prose a person will read, when a passage reads flat or uniform, or when asked to "make this read like a person", "fix the cadence", "this reads like AI wrote it", "vary the sentences", or "tighten this without gutting it". Do NOT use for banned characters, which `markdown.md` states and `canon markdown audit` gates
|
|
3
|
+
description: Carries the voice, word choice, rhythm, sentence construction, and information density rules a banned-character scan cannot express, plus the catalog of machine tells that survive a clean ban scan. Use when writing or revising prose a person will read, when a passage reads flat or uniform, or when asked to "make this read like a person", "fix the cadence", "this reads like AI wrote it", "vary the sentences", or "tighten this without gutting it". Do NOT use for banned characters, which `markdown.md` states and `canon markdown audit` gates.
|
|
4
4
|
metadata:
|
|
5
5
|
family: answer
|
|
6
6
|
---
|
|
@@ -11,7 +11,7 @@ Write prose that reads as though a person wrote it. A ban list subtracts words a
|
|
|
11
11
|
|
|
12
12
|
Load this before drafting a passage rather than after. A revision pass recovers the words and never recovers the structure the draft already settled.
|
|
13
13
|
|
|
14
|
-
The banned characters sit in `${CLAUDE_SKILL_DIR}
|
|
14
|
+
The banned characters sit in `${CLAUDE_SKILL_DIR}/../markdown-craft/references/markdown.md`. They stay in force here. This skill adds to them and never restates them, since `canon markdown audit` reads them from the package and a second copy would drift. The word guidance under `## Voice` is the one copy of that list, and no command reads it.
|
|
15
15
|
|
|
16
16
|
## What yields and what does not
|
|
17
17
|
|
package/docs/agents/audits.md
CHANGED
|
@@ -30,7 +30,7 @@ The verbs walk separate trees and share no state, so they run together. Measured
|
|
|
30
30
|
|
|
31
31
|
Eighteen of the twenty-one read a tree on this disk, the one added by `restated.md` and the one added by `census.md` among them, since the first reads four such trees against each other and the second counts every file in one. The two added by `state-scoped-risk.md` read committed state rather than an arriving change, which is the gap every review surface here leaves by construction, and the one added by `label-coverage.md` reads a branch range against a map the project declares.
|
|
32
32
|
|
|
33
|
-
The placement entry runs `canon context classify sweep` pinned to `--backend off`, so it reads the regex layer alone whatever classifier setting the project resolves. A count that moves with whichever model a machine runs is not comparable across clones, and the model layer turned a sub-second read into one measured at about 17 minutes over this repository's context
|
|
33
|
+
The placement entry runs `canon context classify sweep` pinned to `--backend off`, so it reads the regex layer alone whatever classifier setting the project resolves. A count that moves with whichever model a machine runs is not comparable across clones, and the model layer turned a sub-second read into one measured at about 17 minutes over this repository's context sections on the authoring machine. It retains one tally per verdict, `keep`, `rewrite`, and `move`, and gates on nothing, since each verdict is a judgment. `document-health` is the surface that reads the same sections with the model.
|
|
34
34
|
|
|
35
35
|
Each is invoked as the CLI the caller is running rather than as a global `canon`. A globally installed binary resolves to the main checkout no matter which worktree is executing, so the aggregate would measure a tree the branch never touched and report a pass over it.
|
|
36
36
|
|
package/docs/agents/canvas.md
CHANGED
|
@@ -5,7 +5,7 @@ description: The canvas server, its content format, and the verbs that list, arr
|
|
|
5
5
|
|
|
6
6
|
# Canvas
|
|
7
7
|
|
|
8
|
-
`canon canvas` serves a local canvas of pages and HTML frames and gives an agent the verbs the operator's mouse has. A page is a folder under `.canon/canvas/`, a frame is one HTML file in it, and `layout.json` beside them holds each frame's box. `
|
|
8
|
+
`canon canvas` serves a local canvas of pages and HTML frames and gives an agent the verbs the operator's mouse has. A page is a folder under `.canon/canvas/`, a frame is one HTML file in it, and `layout.json` beside them holds each frame's box. `claude/skills/canvas/references/canvas.md` fixes that content format, and the `canvas` skill carries the procedure a session follows to drive the canvas.
|
|
9
9
|
|
|
10
10
|
## Serve
|
|
11
11
|
|
package/docs/agents/commands.md
CHANGED
|
@@ -42,9 +42,8 @@ One row per top-level command, in the order `canon --help` prints them. A domain
|
|
|
42
42
|
| `canon sessions <verb>` | Resolve live sessions to worktree and branch, and move one between machines |
|
|
43
43
|
| `canon worktrees <verb>` | Report and remove worktrees whose pull request merged |
|
|
44
44
|
| `canon hooks <verb>` | Run the steps a git hook drives |
|
|
45
|
-
| `canon autoship <verb>` | Decide whether a changed set needs the review pass |
|
|
46
45
|
| `canon pr <verb>` | Read a pull request's diff, head, checks, and review, and post its evidence |
|
|
47
|
-
| `canon feedback` |
|
|
46
|
+
| `canon feedback` | Open a GitHub issue from toolkit feedback on stdin, or print the block on failure |
|
|
48
47
|
| `canon audits <verb>` | Run every audit as one set under one verdict against the recorded baseline |
|
|
49
48
|
| `canon gate <verb>` | Run every stage that guards a branch here |
|
|
50
49
|
| `canon secrets <verb>` | Report credential-shaped values in the tree the package ships |
|
|
@@ -53,8 +52,8 @@ One row per top-level command, in the order `canon --help` prints them. A domain
|
|
|
53
52
|
| `canon comments <verb>` | Measure comment density by language and kind, with a trend from git |
|
|
54
53
|
| `canon context <verb>` | Report context folder health, and classify changed or stale sections |
|
|
55
54
|
| `canon markdown <verb>` | Fail markdown on a banned character or a dead link, and report its structure |
|
|
56
|
-
| `canon repo <verb>` | Propose and apply the remote's description, homepage, and topics |
|
|
57
55
|
| `canon census [path]` | Report tracked file count, extensions, and a line total skipping binaries |
|
|
56
|
+
| `canon upstream <verb>` | Read Claude Code releases from a cursor, and list the toolkit's own mechanisms |
|
|
58
57
|
|
|
59
58
|
`canon serve` drives no browser, which is what separates it from the four that do. All four ship now that `capture` does, so the line between them is the engine rather than the package. A generated page loses its script to an editor preview and to a `file://` open, so the link is the delivery rather than a convenience, and every generated surface here reaches a reader through one. A teach lesson's stylesheet is embedded rather than linked, so only its script still needs a server. It binds `127.0.0.1` and never a wildcard, because what it is pointed at is routinely a gitignored record tree. It sends `cache-control: no-store`, since a preview exists to be edited and reloaded and a cached stylesheet reads as a fix that did not work.
|
|
60
59
|
|
|
@@ -104,7 +103,6 @@ Each domain exposes a consistent shape where applicable: `list`, `install`, `syn
|
|
|
104
103
|
- `sessions`, in `sessions.md`: `list`, `export`, `import`
|
|
105
104
|
- `worktrees`, in `worktrees.md`: `list`, `reclaim`
|
|
106
105
|
- `hooks`, in `hooks.md`: `post-merge`
|
|
107
|
-
- `autoship`, in `review-classification.md`: `classify`
|
|
108
106
|
- `pr`, in `pr-reads.md`: `key-changes`, `head`, `checks`, `review-state`, `evidence`, `preview`, `local`, `frames`
|
|
109
107
|
- `audits`, in `audits.md`: `run`, `list`
|
|
110
108
|
- `gate`, in `gate.md`: `run`
|
|
@@ -114,7 +112,6 @@ Each domain exposes a consistent shape where applicable: `list`, `install`, `syn
|
|
|
114
112
|
- `comments`, in `comments.md`: `scan`
|
|
115
113
|
- `context`, in `context-audit.md`: `audit`, `classify diff`, `classify sweep`, `classifier show`, `classifier set`
|
|
116
114
|
- `markdown`, in `markdown-audit.md`: `audit`
|
|
117
|
-
- `repo`, described below: `metadata propose`, `metadata apply`
|
|
118
115
|
|
|
119
116
|
Common patterns:
|
|
120
117
|
|
|
@@ -133,7 +130,6 @@ Subcommands no other page describes:
|
|
|
133
130
|
- A deck folder's `deck.json` and the faces it embeds, its per-slide `<body>` attributes, transitions and entrances, speaker notes, and charts are described in `slides.md`.
|
|
134
131
|
- `canvas`, with its verbs, content format, and write routes, is described in `canvas.md`.
|
|
135
132
|
- `labels scan` fails a pull request or a posted review whose title, body, or review comment carries a phase label, a label a code span quotes, a gitignored record path, a session link, a title word no dictionary holds, or a title breaking `standards/pr.md`'s format, casing, or length rule (`--event`, `--body-file`, `--json`).
|
|
136
|
-
- `repo metadata propose` compares a description, homepage, and topic set computed from the README and `package.json` against what the remote carries, writing nothing, and `repo metadata apply` writes an explicitly supplied set through `gh repo edit` (`--description`, `--homepage`, `--topics`).
|
|
137
133
|
|
|
138
134
|
## Version skew
|
|
139
135
|
|
|
@@ -150,7 +146,7 @@ the JSON record rather than on the exit, since an offline machine has to read as
|
|
|
150
146
|
unmeasured rather than as a failing check.
|
|
151
147
|
|
|
152
148
|
`canon upgrade --json` carries one further state, `pending`, that the skew report
|
|
153
|
-
does not
|
|
154
|
-
|
|
155
|
-
`
|
|
156
|
-
|
|
149
|
+
does not: the working directory's checkout holds a release npm does not serve
|
|
150
|
+
yet, so there is nothing to install. The record names it in `checkout` beside
|
|
151
|
+
`latest`, exits 0, and its `message` starts `CLI stays at`. Outside a canon
|
|
152
|
+
checkout it never reads `pending`.
|