@erclx/canon 4.67.0 → 4.69.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.
Files changed (160) hide show
  1. package/claude/.claude-plugin/plugin.json +1 -1
  2. package/claude/skills/{claude-autoship → auto-ship}/REQUIREMENT.md +3 -3
  3. package/claude/skills/{claude-autoship → auto-ship}/SKILL.md +36 -36
  4. package/claude/skills/canon-cli/REQUIREMENT.md +2 -2
  5. package/claude/skills/canon-cli/SKILL.md +2 -2
  6. package/claude/skills/canon-feedback-triage/REQUIREMENT.md +1 -1
  7. package/claude/skills/canon-feedback-triage/SKILL.md +3 -3
  8. package/claude/skills/canon-operator/REQUIREMENT.md +1 -1
  9. package/claude/skills/canon-operator/SKILL.md +4 -4
  10. package/claude/skills/canon-rollout/REQUIREMENT.md +6 -6
  11. package/claude/skills/canon-rollout/SKILL.md +7 -7
  12. package/claude/skills/{claude-design-extract → design-extract}/REQUIREMENT.md +4 -4
  13. package/claude/skills/{claude-design-extract → design-extract}/SKILL.md +1 -1
  14. package/claude/skills/{claude-docs → docs-fold}/REQUIREMENT.md +3 -3
  15. package/claude/skills/{claude-docs → docs-fold}/SKILL.md +14 -14
  16. package/claude/skills/{claude-docs → docs-fold}/references/anchor-sweep.md +1 -1
  17. package/claude/skills/{claude-docs → docs-fold}/references/wireframe-sweep.md +1 -1
  18. package/claude/skills/docs-sync/REQUIREMENT.md +3 -3
  19. package/claude/skills/docs-sync/SKILL.md +1 -1
  20. package/claude/skills/draft-and-pick/REQUIREMENT.md +4 -4
  21. package/claude/skills/draft-and-pick/SKILL.md +6 -6
  22. package/claude/skills/draft-context/REQUIREMENT.md +2 -2
  23. package/claude/skills/draft-context/SKILL.md +3 -3
  24. package/claude/skills/{claude-diagram → draft-diagram}/REQUIREMENT.md +4 -4
  25. package/claude/skills/{claude-diagram → draft-diagram}/SKILL.md +3 -3
  26. package/claude/skills/draft-docs/REQUIREMENT.md +1 -1
  27. package/claude/skills/draft-wireframes/REQUIREMENT.md +1 -1
  28. package/claude/skills/draft-wireframes/SKILL.md +2 -2
  29. package/claude/skills/git-followup/REQUIREMENT.md +1 -1
  30. package/claude/skills/git-followup/SKILL.md +1 -1
  31. package/claude/skills/git-pr/SKILL.md +3 -3
  32. package/claude/skills/git-ship/REQUIREMENT.md +2 -2
  33. package/claude/skills/git-ship/SKILL.md +8 -8
  34. package/claude/skills/git-worktree/REQUIREMENT.md +2 -2
  35. package/claude/skills/git-worktree/SKILL.md +3 -3
  36. package/claude/skills/identity/REQUIREMENT.md +2 -2
  37. package/claude/skills/identity/SKILL.md +3 -3
  38. package/claude/skills/{claude-markdown-propose → markdown-propose}/REQUIREMENT.md +8 -8
  39. package/claude/skills/{claude-markdown-propose → markdown-propose}/SKILL.md +5 -5
  40. package/claude/skills/{claude-markdown-propose → markdown-propose}/references/format.md +1 -1
  41. package/claude/skills/{claude-memory-capture → memory-capture}/REQUIREMENT.md +5 -5
  42. package/claude/skills/{claude-memory-capture → memory-capture}/SKILL.md +13 -13
  43. package/claude/skills/{claude-memory-review → memory-review}/REQUIREMENT.md +4 -4
  44. package/claude/skills/{claude-memory-review → memory-review}/SKILL.md +10 -10
  45. package/claude/skills/migration-context/SKILL.md +1 -1
  46. package/claude/skills/migration-standards-drop/REQUIREMENT.md +1 -1
  47. package/claude/skills/migration-superseded/REQUIREMENT.md +1 -1
  48. package/claude/skills/{claude-feature → plan-feature}/REQUIREMENT.md +4 -4
  49. package/claude/skills/{claude-feature → plan-feature}/SKILL.md +4 -4
  50. package/claude/skills/{claude-groundwork → plan-groundwork}/REQUIREMENT.md +5 -5
  51. package/claude/skills/{claude-groundwork → plan-groundwork}/SKILL.md +8 -8
  52. package/claude/skills/{claude-intake → plan-intake}/REQUIREMENT.md +6 -6
  53. package/claude/skills/{claude-intake → plan-intake}/SKILL.md +10 -10
  54. package/claude/skills/{claude-intake-answer → plan-intake-answer}/REQUIREMENT.md +4 -4
  55. package/claude/skills/{claude-intake-answer → plan-intake-answer}/SKILL.md +5 -5
  56. package/claude/skills/{claude-address-review → review-address}/REQUIREMENT.md +5 -5
  57. package/claude/skills/{claude-address-review → review-address}/SKILL.md +6 -6
  58. package/claude/skills/{claude-address-review → review-address}/references/rebase-conflicts.md +1 -1
  59. package/claude/skills/{claude-review → review-branch}/REQUIREMENT.md +4 -4
  60. package/claude/skills/{claude-review → review-branch}/SKILL.md +4 -4
  61. package/claude/skills/{claude-pr-review → review-pr}/REQUIREMENT.md +5 -5
  62. package/claude/skills/{claude-pr-review → review-pr}/SKILL.md +11 -11
  63. package/claude/skills/{claude-orchestrate → role-orchestrator}/REQUIREMENT.md +5 -5
  64. package/claude/skills/{claude-orchestrate → role-orchestrator}/SKILL.md +20 -20
  65. package/claude/skills/{claude-orchestrate → role-orchestrator}/references/orchestrator-dispatch.md +30 -30
  66. package/claude/skills/{claude-orchestrate → role-orchestrator}/references/orchestrator-handoff.md +2 -2
  67. package/claude/skills/{claude-orchestrate → role-orchestrator}/references/orchestrator-parked.md +8 -8
  68. package/claude/skills/{claude-orchestrate → role-orchestrator}/references/orchestrator-poll.md +8 -8
  69. package/claude/skills/{claude-orchestrate → role-orchestrator}/references/orchestrator-resume.md +1 -1
  70. package/claude/skills/{claude-orchestrate → role-orchestrator}/references/orchestrator-sweep.md +1 -1
  71. package/claude/skills/{claude-orchestrate → role-orchestrator}/scripts/poll.sh +6 -6
  72. package/claude/skills/{claude-planner → role-planner}/REQUIREMENT.md +12 -12
  73. package/claude/skills/{claude-planner → role-planner}/SKILL.md +4 -4
  74. package/claude/skills/{claude-worker → role-worker}/REQUIREMENT.md +8 -8
  75. package/claude/skills/{claude-worker → role-worker}/SKILL.md +6 -6
  76. package/claude/skills/{claude-seed-sync → seed-sync}/REQUIREMENT.md +2 -2
  77. package/claude/skills/{claude-seed-sync → seed-sync}/SKILL.md +3 -3
  78. package/claude/skills/session-map/REQUIREMENT.md +2 -2
  79. package/claude/skills/session-map/SKILL.md +2 -2
  80. package/claude/skills/session-resume/REQUIREMENT.md +2 -2
  81. package/claude/skills/session-resume/SKILL.md +2 -2
  82. package/claude/skills/{claude-worktree → session-worktree}/REQUIREMENT.md +3 -3
  83. package/claude/skills/{claude-worktree → session-worktree}/SKILL.md +6 -6
  84. package/claude/skills/setup-plugins/references/plugin-catalog.md +1 -1
  85. package/claude/skills/{claude-standards-audit → standards-audit}/REQUIREMENT.md +2 -2
  86. package/claude/skills/{claude-standards-audit → standards-audit}/SKILL.md +2 -2
  87. package/claude/skills/systematic-debugging/REQUIREMENT.md +1 -1
  88. package/claude/skills/{claude-tasks → task-board}/REQUIREMENT.md +3 -3
  89. package/claude/skills/{claude-tasks → task-board}/SKILL.md +7 -7
  90. package/claude/skills/{claude-teach → teach-workspace}/REQUIREMENT.md +2 -2
  91. package/claude/skills/{claude-teach → teach-workspace}/SKILL.md +4 -4
  92. package/claude/skills/test-first/REQUIREMENT.md +2 -2
  93. package/claude/skills/{claude-ui-test → ui-test}/REQUIREMENT.md +3 -3
  94. package/claude/skills/{claude-ui-test → ui-test}/SKILL.md +3 -3
  95. package/claude/skills/{claude-ux-audit → ux-audit}/REQUIREMENT.md +6 -6
  96. package/claude/skills/{claude-ux-audit → ux-audit}/SKILL.md +5 -5
  97. package/claude/skills/{claude-ux-measure → ux-measure}/REQUIREMENT.md +5 -5
  98. package/claude/skills/{claude-ux-measure → ux-measure}/SKILL.md +5 -5
  99. package/docs/agents/commands.md +1 -0
  100. package/docs/agents/install-and-sync.md +1 -1
  101. package/docs/agents/key-changes.md +3 -3
  102. package/docs/agents/markdown-audit.md +1 -1
  103. package/docs/agents/restated.md +1 -1
  104. package/docs/agents/review-classification.md +1 -1
  105. package/docs/agents/sandbox.md +13 -10
  106. package/docs/agents/sessions.md +1 -1
  107. package/docs/agents/state-scoped-risk.md +1 -1
  108. package/docs/agents/targets.md +1 -1
  109. package/docs/agents/tasks.md +4 -4
  110. package/docs/agents/teach.md +1 -1
  111. package/docs/target-projects.md +10 -10
  112. package/docs/workflow/ai-workflow.md +84 -84
  113. package/docs/workflow/operating-model.md +17 -17
  114. package/docs/workflow/visual-design-workflow.md +6 -6
  115. package/governance/rules/core/045-memory.md +1 -1
  116. package/governance/rules/core/085-worktrees.md +1 -1
  117. package/package.json +1 -1
  118. package/scripts/core/regen-agent-fixture.sh +1 -1
  119. package/scripts/core/regen-hero.sh +7 -7
  120. package/scripts/lib/sandbox-dispatch.sh +8 -0
  121. package/snippets/claude/decision-memo.md +1 -1
  122. package/src/autoship/paths.ts +1 -1
  123. package/src/claude/cases/all.ts +2 -2
  124. package/src/claude/cases/{claude-workflow.ts → workflow.ts} +33 -33
  125. package/src/claude/plugin-update.ts +48 -0
  126. package/src/commands/claude.ts +281 -1
  127. package/src/commands/feedback.ts +15 -5
  128. package/src/commands/gate.ts +3 -1
  129. package/src/commands/sandbox.ts +13 -4
  130. package/src/commands/sync.ts +3 -3
  131. package/src/design/components.ts +12 -0
  132. package/src/design/tokens.ts +1 -1
  133. package/src/gate/measures.ts +47 -1
  134. package/src/gov/restated.ts +2 -2
  135. package/src/markdown/structure.ts +1 -1
  136. package/src/migrate/rename.ts +4 -3
  137. package/src/pr/bijection.ts +1 -1
  138. package/src/pr/paths.ts +2 -2
  139. package/src/sandbox/expect.ts +26 -1
  140. package/src/shipped/references.ts +1 -1
  141. package/src/sync/seeds-report.ts +1 -1
  142. package/src/targets/pulls.ts +2 -2
  143. package/src/tasks/answers.ts +1 -1
  144. package/src/tasks/archive.ts +4 -4
  145. package/src/tasks/record.ts +2 -2
  146. package/src/tasks/validate.ts +1 -1
  147. package/src/teach/nav.ts +97 -3
  148. package/standards/glossary.md +8 -0
  149. package/standards/groundwork.md +1 -1
  150. package/standards/snippets.md +1 -1
  151. package/standards/tasks.md +3 -3
  152. package/standards/teach.md +2 -2
  153. package/tooling/base/configs/.husky/post-merge +3 -3
  154. package/tooling/claude/reference.md +5 -5
  155. package/tooling/claude/seeds/.claude/hooks/pr-create-log.sh +2 -2
  156. /package/claude/skills/{claude-memory-review → memory-review}/references/receipt-format.md +0 -0
  157. /package/claude/skills/{claude-orchestrate → role-orchestrator}/scripts/watch.sh +0 -0
  158. /package/claude/skills/{claude-teach → teach-workspace}/references/lesson-craft.md +0 -0
  159. /package/claude/skills/{claude-teach → teach-workspace}/references/pedagogy.md +0 -0
  160. /package/claude/skills/{claude-teach → teach-workspace}/references/promotion.md +0 -0
@@ -11,7 +11,7 @@ Run the orchestrator's review trigger. The poll reports pull request movement an
11
11
 
12
12
  Start the poll on an open pull request and stop it when the last one merges with nothing else out. That is the whole condition and it resolves from `gh pr list` without asking the operator. A release pull request alone does not qualify, since its sweep carries no findings.
13
13
 
14
- A dispatch no longer starts it. The script reads pull requests and a building worker has none, so every interval between the launch and the push is a fixed cost returning nothing, measured as five consecutive runs reporting no movement across roughly fifteen minutes while one worker built. What replaces it is the worker announcing its own pull request the moment it opens one, per the `claude-worker` skill that session loads, which covers exactly the transition the poll cannot observe.
14
+ A dispatch no longer starts it. The script reads pull requests and a building worker has none, so every interval between the launch and the push is a fixed cost returning nothing, measured as five consecutive runs reporting no movement across roughly fifteen minutes while one worker built. What replaces it is the worker announcing its own pull request the moment it opens one, per the `role-worker` skill that session loads, which covers exactly the transition the poll cannot observe.
15
15
 
16
16
  The dispatched-worker condition survives as a fallback rather than as a trigger. Start the poll against any dispatch still out after thirty minutes with no announcement, which is past the upper end of the ten to thirty minutes a row here takes. The announcement is newer than the narrowing it justifies, so a silent failure would otherwise leave a finished worker unnoticed the way one already sat idle for eighteen minutes, and the fallback keeps the cover a straight narrowing would have removed. `${CLAUDE_SKILL_DIR}/scripts/watch.sh` covers the same window at a lower cost, since it reads the roster alongside the pull request list and reports a worker that vanished as well as one that finished.
17
17
 
@@ -35,17 +35,17 @@ Resolve `${CLAUDE_SKILL_DIR}/scripts/poll.sh` to an absolute path and paste that
35
35
  Poll GitHub for pull request movement by running <POLL_SCRIPT>, then act on what it reports.
36
36
 
37
37
  - A release pull request, whatever state follows it: report it and stop. Its sweep carries no findings, so no pass is owed. Test this before any rule below, since a release pull request is reported OPENED like any other and would otherwise match that rule first.
38
- - MOVED or RESPONSE on a pull request I have already reviewed: run the canon:claude-pr-review skill on it immediately, narrow pass. Re-reviews read prior..head and gain nothing from waiting.
39
- - OPENED, or a pull request with no prior review pass: run the canon:claude-pr-review skill on it. A draft counts, since every pull request here opens as one and skipping drafts skips everything.
38
+ - MOVED or RESPONSE on a pull request I have already reviewed: run the canon:review-pr skill on it immediately, narrow pass. Re-reviews read prior..head and gain nothing from waiting.
39
+ - OPENED, or a pull request with no prior review pass: run the canon:review-pr skill on it. A draft counts, since every pull request here opens as one and skipping drafts skips everything.
40
40
  - SEEN: report it and stop. A pass already covers that head, whether it arrived out of band or before the poll first saw the pull request, so no review follows.
41
41
  - STALLED: read the last pass and report what it carried. The pass has sat open for hours with nothing following it, so a worker mid-task is already ruled out and the dispatch either never went out or the session holding it is gone. Confirm and re-send it under the dispatch rule below, whatever grades the pass carried. Do not re-run a review to correct the heading, since a pass on an unchanged head with no response behind it stops by design.
42
42
  - CONFLICT: report it and stop. The branch owner rebases, not this session.
43
43
  - UNMATCHED: report it and stop. A comment posted under a heading outside the known set reaches nobody automatically, so a person decides whether to answer it by hand or the set needs a sixth heading.
44
- - GONE: report it, then sweep the board by invoking the canon:claude-orchestrate skill and following its queue-refill sweep.
44
+ - GONE: report it, then sweep the board by invoking the canon:role-orchestrator skill and following its queue-refill sweep.
45
45
  - A line starting `poll:`: report it verbatim and treat that pull request as unread this run. It is a failed query, not a state.
46
46
  - Nothing changed: say exactly "No movement." and nothing else.
47
47
 
48
- After any pass that posts a finding, at any severity, tell the session holding that branch to run the canon:claude-address-review skill. Resolve the target by running `canon sessions list --branch <branch> --json` at that moment, which scopes the match to this repository, then route on how many sessions it returned. Zero: report the invocation for me and dispatch nobody. Exactly one, with the confidence field reading "confirmed": address that name directly. Any other count, any other confidence, or a command that is missing or refuses: fall back to picking from a session listing, open by naming the worktree and branch you believe the reader holds, and ask to be corrected. Two sessions can hold one branch, so read the count rather than the first row. The threshold is stated once in the canon:claude-pr-review skill and governs the heading with it, so an open heading and an owed dispatch answer the same question and either one is enough to send.
48
+ After any pass that posts a finding, at any severity, tell the session holding that branch to run the canon:review-address skill. Resolve the target by running `canon sessions list --branch <branch> --json` at that moment, which scopes the match to this repository, then route on how many sessions it returned. Zero: report the invocation for me and dispatch nobody. Exactly one, with the confidence field reading "confirmed": address that name directly. Any other count, any other confidence, or a command that is missing or refuses: fall back to picking from a session listing, open by naming the worktree and branch you believe the reader holds, and ask to be corrected. Two sessions can hold one branch, so read the count rather than the first row. The threshold is stated once in the canon:review-pr skill and governs the heading with it, so an open heading and an owed dispatch answer the same question and either one is enough to send.
49
49
  ```
50
50
 
51
51
  ## Reading the output
@@ -56,13 +56,13 @@ The script exits non-zero and classifies nothing when the open pull request list
56
56
 
57
57
  The baseline lives at `.canon/tmp/pr-poll/baseline.txt` under the main worktree root and is per-machine. A first run against a board already in flight reports each open pull request once before it settles.
58
58
 
59
- The five review headings the script matches are written by `claude-pr-review` and `claude-address-review`, and the whole set is stated once in the first. A project that posts its reviews under different headings edits the jq filters in the script to match, or every pull request reads as never reviewed.
59
+ The five review headings the script matches are written by `review-pr` and `review-address`, and the whole set is stated once in the first. A project that posts its reviews under different headings edits the jq filters in the script to match, or every pull request reads as never reviewed.
60
60
 
61
61
  `UNMATCHED` is what a heading outside the five reaches, carried the same way `RESPONSE` is: a rising count against the baseline is what is new to this script, and the message names the heading so a person can tell whether to answer it by hand or add it to the set. It fires on a tracked pull request only, since a first sighting reports `SEEN` or `OPENED` and takes whatever count already sits on the thread as its starting baseline rather than flagging history the poll never watched.
62
62
 
63
- `RESPONSE` is qualified by recency as well as by count, so it means a reply the last pass has not already answered rather than one this script has not seen before. A worker answers a finding and the reviewing session posts its close-out seconds later, which is the ordinary handback rather than a race, so a count on its own reported the answered thread on the next run and the re-review it routed to stopped at its own guard. The state now fires when the newest reply is stamped later than the last pass, and on a pull request carrying no pass at all, which is a worker talking to nobody and worth the turn. A reply landing inside the same second as the pass is dropped, matching the comparison `claude-pr-review` makes on the same two fields.
63
+ `RESPONSE` is qualified by recency as well as by count, so it means a reply the last pass has not already answered rather than one this script has not seen before. A worker answers a finding and the reviewing session posts its close-out seconds later, which is the ordinary handback rather than a race, so a count on its own reported the answered thread on the next run and the re-review it routed to stopped at its own guard. The state now fires when the newest reply is stamped later than the last pass, and on a pull request carrying no pass at all, which is a worker talking to nobody and worth the turn. A reply landing inside the same second as the pass is dropped, matching the comparison `review-pr` makes on the same two fields.
64
64
 
65
- `STALLED` is the one state the script derives from a heading rather than from a commit or a count, since `claude-pr-review` posts the open heading exactly when a dispatch is owed, per the threshold that skill states. The heading alone cannot carry it, because an open pass means a dispatch was owed and made, so the ordinary healthy thread is a worker still working. The age of that pass is the third test: the state fires when the open pass covers the head, nothing has followed it, and it is older than the `STALE_AFTER` seconds set at the top of the script. It reports once per entry and fires again after any commit or reply resets the thread. A project whose workers run longer than the default two hours raises that number.
65
+ `STALLED` is the one state the script derives from a heading rather than from a commit or a count, since `review-pr` posts the open heading exactly when a dispatch is owed, per the threshold that skill states. The heading alone cannot carry it, because an open pass means a dispatch was owed and made, so the ordinary healthy thread is a worker still working. The age of that pass is the third test: the state fires when the open pass covers the head, nothing has followed it, and it is older than the `STALE_AFTER` seconds set at the top of the script. It reports once per entry and fires again after any commit or reply resets the thread. A project whose workers run longer than the default two hours raises that number.
66
66
 
67
67
  The state reaches every stalled dispatch, since one threshold governs the heading and the dispatch alike and a pass carrying anything posts the open heading. A minors-only pass therefore reports here on the same terms as a blocking one, which widens the state from what it caught while the two were split. It stays a heading test rather than a count test, so nothing here pins the summary line, which is a second string this script does not own.
68
68
 
@@ -21,7 +21,7 @@ Next: <the one or two tasks ready to hand a worker>
21
21
 
22
22
  Treat a groundwork folder as three kinds of content with different shelf lives. Trust the reasoning and the method, which stay correct. Re-measure every count, size, and cost, because they were true when written. Check every `Leaning:` against what has shipped, because work spawned by a track routinely overturns the lean that spawned it and nothing writes back.
23
23
 
24
- A plan a live task cites goes stale the same way, and `claude-orchestrate` states the check that catches it.
24
+ A plan a live task cites goes stale the same way, and `role-orchestrator` states the check that catches it.
25
25
 
26
26
  After each merge, place every finding the work produced before starting anything else. A finding that changes a standard goes to the standard, one that changes another task goes to that task's Findings, and one that overturns a groundwork lean gets marked answered in that folder. Findings recorded in a pull request thread and nowhere else are lost at merge.
27
27
 
@@ -6,7 +6,7 @@ description: The once-per-batch board sweep, plan re-verification, and where eac
6
6
  Sweep the board as orchestrator after merging. Run this once per batch of merges, before answering what to do next, because the surfaces that record what shipped are the ones nothing updates on its own.
7
7
 
8
8
  1. Pull into the main worktree rather than fetching. A fetch leaves the local branch behind, so `git log` reports a state that has not arrived. A repository that adds a post-merge hook to name archive candidates gets it on a pull and never on a fetch.
9
- 2. Follow `## Refilling the ready queue` in `claude-orchestrate`, every step in order. It owns the procedure. Do not restate it here and do not run it from memory.
9
+ 2. Follow `## Refilling the ready queue` in `role-orchestrator`, every step in order. It owns the procedure. Do not restate it here and do not run it from memory.
10
10
  3. Re-verify every plan already written, not only the ones this sweep writes. A queued plan goes stale from whatever merged while it waited, and the loop's verify step fires at handoff rather than after a merge, so nothing else catches it. Grep each construct the plan names and count the sites against its claim, then open each file rather than trusting its account.
11
11
  4. Re-check any precondition a plan states about live state outside the repository. A remote branch, an open issue, or an installed version was true when the plan was written and is not a fact about the tree.
12
12
 
@@ -32,9 +32,9 @@ if [ -z "$BASE_REF" ]; then
32
32
  fi
33
33
  BASE_BRANCH="${BASE_REF#origin/}"
34
34
 
35
- # These five strings are owned elsewhere and pinned here. `claude-pr-review`
35
+ # These five strings are owned elsewhere and pinned here. `review-pr`
36
36
  # writes `## Review` and `## Review closed`, and states the full five-heading
37
- # set once, beside the threshold it already states once. `claude-address-review`
37
+ # set once, beside the threshold it already states once. `review-address`
38
38
  # writes `## Review response`, `## Rebase`, and `## Post-review findings`, the
39
39
  # last for a finding a worker produces after a close-out rather than in answer
40
40
  # to one already on the thread. All three surfaces ship separately, so a
@@ -90,7 +90,7 @@ JQ_UNMATCHED_STATE='
90
90
  + (($unclassified | last) // "none")
91
91
  '
92
92
 
93
- # `claude-pr-review` states the threshold and posts `## Review` exactly when a
93
+ # `review-pr` states the threshold and posts `## Review` exactly when a
94
94
  # pass carries a finding, so the heading of the last review is what says whether
95
95
  # any work is owed on it. Taking it as well as the commit is what separates a
96
96
  # thread waiting on a worker from one nothing is owed on. A project editing the
@@ -340,14 +340,14 @@ while read -r n head prior resp merges heading age pass_at reply_at unmatched_co
340
340
  # newer than the pass, and both are needed. A worker answers a finding and
341
341
  # the reviewing session closes out seconds later, so the count alone reports
342
342
  # an answered thread on the next run and the session spends a turn learning
343
- # `claude-pr-review` will refuse it. The gaps observed were 96, 24, and 35
343
+ # `review-pr` will refuse it. The gaps observed were 96, 24, and 35
344
344
  # seconds, which is a reviewing session reading a reply and posting, so this
345
345
  # is the ordinary handback rather than a race.
346
346
  #
347
347
  # A pull request carrying no pass at all reads as stamp zero and reports,
348
348
  # which is the case the count was the right test for: a reply with nothing
349
349
  # behind it is a worker talking to nobody and worth the turn. The test is
350
- # strictly greater to match the guard `claude-pr-review` states on the same
350
+ # strictly greater to match the guard `review-pr` states on the same
351
351
  # two fields, which drops a reply landing inside the same second as the
352
352
  # pass, a narrower failure than the one it removes.
353
353
  #
@@ -361,7 +361,7 @@ while read -r n head prior resp merges heading age pass_at reply_at unmatched_co
361
361
  # Three things at once: the last pass is open, it covers the head so no
362
362
  # commit followed it, and the two branches above found no reply either. The
363
363
  # open heading is posted exactly when a dispatch is owed, per the threshold
364
- # `claude-pr-review` states, so a pass owing one left it here at any grade
364
+ # `review-pr` states, so a pass owing one left it here at any grade
365
365
  # it carried. Any two of these describe an ordinary review waiting on a
366
366
  # worker, which is why the age carries the third: without it every
367
367
  # dispatched worker is reported minutes into the work it was sent to do,
@@ -1,18 +1,18 @@
1
1
  ---
2
- name: claude-planner
2
+ name: role-planner
3
3
  description: What a planning session is, how it reads what is in flight, the surfaces it may not write, and what it hands back to whoever dispatched it
4
4
  ---
5
5
 
6
- # Claude planner requirement
6
+ # Role planner requirement
7
7
 
8
8
  ## Gap
9
9
 
10
10
  Without this skill, a planning session is told what to plan and never what it
11
- is. `claude-worker` states the building role and `claude-autoship` Step 0 reaches
11
+ is. `role-worker` states the building role and `auto-ship` Step 0 reaches
12
12
  it on every build, so a builder takes a role whether a person launched it or a
13
13
  dispatcher did. Planning has no equivalent, and two trials on 2026-08-31 ran
14
14
  entirely on prose the controller retyped into each launch. That is the shape
15
- `claude-orchestrate` already bans on the building side, where one half held the
15
+ `role-orchestrator` already bans on the building side, where one half held the
16
16
  only written copy of obligations the other half performs.
17
17
 
18
18
  Six rules went into each of those launches by hand: no worktree, no branch, no
@@ -49,7 +49,7 @@ four carried at least one, caught only because the planner ran
49
49
 
50
50
  ## Must
51
51
 
52
- - Assert what a planning session is, what it may not write, and how long the role lasts, since `claude-feature` carries the procedure and no body carries the role
52
+ - Assert what a planning session is, what it may not write, and how long the role lasts, since `plan-feature` carries the procedure and no body carries the role
53
53
  - State the in-flight read as a command composing the session roster with open pull requests, and say that a branch and a worktree are not evidence, since a count of either reported merged work as live
54
54
  - Run that read once per task rather than once per batch, since a reused session ages its picture of the tree while it works
55
55
  - Name every read a plan needed and a launch string did not carry, the task file's findings and the source files among them, since a count quoted from a row was wrong or stale in ten places across four plans
@@ -58,17 +58,17 @@ four carried at least one, caught only because the planner ran
58
58
  - Owe an announcement when the plan lands, carrying the path and what the row got wrong, since the controller cannot watch the read happen
59
59
  - Owe a message before a block becomes an interactive prompt, since a session already waiting on input never reaches the tool round an inbound message drains at
60
60
  - Keep correcting the dispatcher a first-class move carrying its evidence, since a trial corrected a brief's premise, planned every row anyway, and carried the consequence into a plan question
61
- - Point at `claude-feature` for the plan's shape and the steps that write it
61
+ - Point at `plan-feature` for the plan's shape and the steps that write it
62
62
 
63
63
  ## Must not
64
64
 
65
- - Restate the plan's sections, its suggested-and-answer contract, or the steps `claude-feature` carries, since thinness is what keeps one body correct for a dispatched planner reading it as its whole contract
66
- - Restate a boundary `claude-orchestrate` or `claude-worker` states about itself
65
+ - Restate the plan's sections, its suggested-and-answer contract, or the steps `plan-feature` carries, since thinness is what keeps one body correct for a dispatched planner reading it as its whole contract
66
+ - Restate a boundary `role-orchestrator` or `role-worker` states about itself
67
67
  - Tell a planner to halt on a plan question, which the suggested line already answers, rather than on what blocks writing the plan at all
68
68
  - Tell a planner to report the path with no account of what the row got wrong. That instruction came from a trial condition holding a blind comparison intact, and it is not a durable obligation.
69
69
  - Report progress through the channel, which rebuilds on the sender's side the poll the announcement exists to retire
70
70
  - Write the priority board, the backlog, or the task file, at any size
71
- - Be a skill nothing invokes but its author typing the name. `orchestrator-dispatch.md` names it on the planning launch the way it names `claude-worker` on a build, so a stretch where only a typed invocation reaches it is the signal that the role never took.
71
+ - Be a skill nothing invokes but its author typing the name. `orchestrator-dispatch.md` names it on the planning launch the way it names `role-worker` on a build, so a stretch where only a typed invocation reaches it is the signal that the role never took.
72
72
 
73
73
  ## Guards
74
74
 
@@ -79,7 +79,7 @@ four carried at least one, caught only because the planner ran
79
79
 
80
80
  ## Out of scope
81
81
 
82
- - The plan's sections and its answer contract, which `standards/plan.md` fixes, and the steps that write the file, which `claude-feature` owns
83
- - The branch, the build, and the pull request, which `claude-worker` and `claude-autoship` own
84
- - Deciding which rows run and in what order, which is the controlling session's call and stated in `claude-orchestrate`
82
+ - The plan's sections and its answer contract, which `standards/plan.md` fixes, and the steps that write the file, which `plan-feature` owns
83
+ - The branch, the build, and the pull request, which `role-worker` and `auto-ship` own
84
+ - Deciding which rows run and in what order, which is the controlling session's call and stated in `role-orchestrator`
85
85
  - The dispatch itself, its collision check, and its disjointness gate, which `orchestrator-dispatch.md` holds
@@ -1,9 +1,9 @@
1
1
  ---
2
- name: claude-planner
3
- description: Asserts the planner role for a session writing one plan under one task, holding what it reads before deciding, the surfaces it may not write, and what it hands back. Use when asked to "be the planner", "you are a planner session", at the start of a dispatched or hand-launched planning run, or when a planning session needs to know what it may not write. Do NOT use to write the plan itself, which is `claude-feature`, to make the cross-feature merge call, or to implement.
2
+ name: role-planner
3
+ description: Asserts the planner role for a session writing one plan under one task, holding what it reads before deciding, the surfaces it may not write, and what it hands back. Use when asked to "be the planner", "you are a planner session", at the start of a dispatched or hand-launched planning run, or when a planning session needs to know what it may not write. Do NOT use to write the plan itself, which is `plan-feature`, to make the cross-feature merge call, or to implement.
4
4
  ---
5
5
 
6
- # Claude planner
6
+ # Role planner
7
7
 
8
8
  This session is a planner: one session writing one plan for one task. It reads
9
9
  the row, measures what the row claims against the tree, writes the plan, and
@@ -14,7 +14,7 @@ not review. Those belong to a worker, to the controlling session, and to the
14
14
  human.
15
15
 
16
16
  This body states the role, the reads, the boundaries, and the channel, and it
17
- starts no step of its own. `claude-feature` owns the steps that write the plan
17
+ starts no step of its own. `plan-feature` owns the steps that write the plan
18
18
  and cites the standard fixing its sections and its suggested-and-answer
19
19
  contract, so read the procedure there and reach it from the launch rather than
20
20
  from here.
@@ -1,9 +1,9 @@
1
1
  ---
2
- name: claude-worker
2
+ name: role-worker
3
3
  description: What a building session is, the shared surfaces it may not write, and the two messages it owes the session that dispatched it
4
4
  ---
5
5
 
6
- # Claude worker requirement
6
+ # Role worker requirement
7
7
 
8
8
  ## Gap
9
9
 
@@ -29,7 +29,7 @@ Nothing tells the session that refusing is allowed either. Four occasions across
29
29
  - Name the addressee as the session the launch named, falling back to the roster and saying so, since an operator's own launch names nobody
30
30
  - Keep refusing a dispatcher a first-class move carrying its evidence, since the halts measured so far were correct and the cost of each fell where it belonged
31
31
  - State that a held body may be older than the branch under it, since a plugin skill loads from the marketplace cache rather than from the working tree
32
- - Point at `claude-worktree`, `claude-autoship`, and `claude-address-review` for the steps each already owns
32
+ - Point at `session-worktree`, `auto-ship`, and `review-address` for the steps each already owns
33
33
 
34
34
  ## Must not
35
35
 
@@ -37,7 +37,7 @@ Nothing tells the session that refusing is allowed either. Four occasions across
37
37
  - Restate a boundary the orchestrator already states about itself
38
38
  - Report progress through the channel, which rebuilds on the sender's side the poll the announcement exists to retire
39
39
  - Write the priority board or the backlog, at any size
40
- - Be a skill nothing invokes but its author typing the name. `claude-autoship` Step 0 invokes it on every build, dispatched or hand-launched, so a stretch where only a typed invocation reaches it is the signal that the role never took.
40
+ - Be a skill nothing invokes but its author typing the name. `auto-ship` Step 0 invokes it on every build, dispatched or hand-launched, so a stretch where only a typed invocation reaches it is the signal that the role never took.
41
41
 
42
42
  ## Guards
43
43
 
@@ -48,7 +48,7 @@ Nothing tells the session that refusing is allowed either. Four occasions across
48
48
 
49
49
  ## Out of scope
50
50
 
51
- - Entering the worktree, which `claude-worktree` owns
52
- - The chain from implement through pull request, which `claude-autoship` owns
53
- - Answering a posted review, which `claude-address-review` owns
54
- - The controlling session's half of the channel, the review poll, and the watch beside it, which `claude-orchestrate` and its runbooks hold
51
+ - Entering the worktree, which `session-worktree` owns
52
+ - The chain from implement through pull request, which `auto-ship` owns
53
+ - Answering a posted review, which `review-address` owns
54
+ - The controlling session's half of the channel, the review poll, and the watch beside it, which `role-orchestrator` and its runbooks hold
@@ -1,9 +1,9 @@
1
1
  ---
2
- name: claude-worker
2
+ name: role-worker
3
3
  description: Asserts the worker role for a building session, holding the boundary set, the lifetime, and the two channel obligations a session owes whoever dispatched it. Use when asked to "be the worker", "you are a worker session", at the start of a dispatched or hand-launched build, or when a building session needs to know what it may not write. Do NOT use to plan the next feature, to run the independent review pass, or to merge.
4
4
  ---
5
5
 
6
- # Claude worker
6
+ # Role worker
7
7
 
8
8
  This session is a worker: one cold session building one branch under one plan. It
9
9
  implements, verifies, opens a pull request, and answers what the review posts
@@ -14,10 +14,10 @@ review pass, and it does not merge. Those belong to the controlling session and
14
14
  to the human.
15
15
 
16
16
  This body states the role, the boundaries, and the channel, and it starts no
17
- step of its own. `claude-worktree` enters the tree, `claude-autoship` chains the
18
- build, and `claude-address-review` answers a posted review, so read each step
17
+ step of its own. `session-worktree` enters the tree, `auto-ship` chains the
18
+ build, and `review-address` answers a posted review, so read each step
19
19
  from the skill that owns it and invoke none of the three from here. The ordinary
20
- path arrives through `claude-autoship` Step 0, which means that chain is already
20
+ path arrives through `auto-ship` Step 0, which means that chain is already
21
21
  running and re-invoking it would restart the build.
22
22
 
23
23
  ## Where the session stands
@@ -40,7 +40,7 @@ The controlling session cannot watch this one build, so three messages are owed
40
40
  and nothing else.
41
41
 
42
42
  - Announce the pull request as the ship chain's pull request step returns, carrying the number, the branch, and the task it closes. That transition is the one moment only this session knows, and the controller's review poll no longer starts on a dispatch because of it.
43
- - Announce when an address-review pass finishes, as `claude-address-review` Step 8 returns, carrying what was addressed and the PR's new CI state. That transition is the other moment only this session knows, and it is what tells the controller to re-review rather than leaving it to poll for an answer nothing marks as landed.
43
+ - Announce when an address-review pass finishes, as `review-address` Step 8 returns, carrying what was addressed and the PR's new CI state. That transition is the other moment only this session knows, and it is what tells the controller to re-review rather than leaving it to poll for an answer nothing marks as landed.
44
44
  - Send a block out as a message before it becomes an interactive prompt. A session already waiting on input never reaches the tool round that drains an inbound message, so a relayed answer arrives under the open question and changes nothing.
45
45
  - Send nothing on progress. A worker reporting progress rebuilds, on this side of the channel, the poll the announcement retired on the other.
46
46
 
@@ -1,9 +1,9 @@
1
1
  ---
2
- name: claude-seed-sync
2
+ name: seed-sync
3
3
  description: Scope boundary for section-granular seed reconciliation against the bulk install and sync commands
4
4
  ---
5
5
 
6
- # Claude seed sync requirement
6
+ # Seed sync requirement
7
7
 
8
8
  ## Gap
9
9
 
@@ -1,9 +1,9 @@
1
1
  ---
2
- name: claude-seed-sync
2
+ name: seed-sync
3
3
  description: Audits a project's installed Claude seed docs against the toolkit's current seed source and proposes per-section edits without overwriting customizations. Use when asked to "sync seeds", "update my seeds", "check seed drift", "did the toolkit seeds change", or when reconciling `CLAUDE.md` and `.claude/` preambles after an upstream toolkit update.
4
4
  ---
5
5
 
6
- # Claude seed sync
6
+ # Seed sync
7
7
 
8
8
  Surfaces drift between the toolkit's current seed docs and what was installed in this project, then proposes targeted edits. The CLI emits seed content. This skill diffs, reasons, and writes the proposal to a review file. It does not write target files until the user confirms.
9
9
 
@@ -140,7 +140,7 @@ Chat shortcut: the user replies with `all`, `none`, a comma-separated list of nu
140
140
 
141
141
  Apply edits one at a time via `Edit`, replacing one section at a time. Never rewrite a whole file. Claude Code's tool permission dialog is the confirmation gate per edit.
142
142
 
143
- As each item resolves, update its status in the review file: flip the H2 emoji from 📝 to ✅ for applied or ⏭ for skipped. Refresh the summary block counts at the top. Do not delete the review file. It stays as a receipt until the next `claude-seed-sync` run overwrites it or the user clears it.
143
+ As each item resolves, update its status in the review file: flip the H2 emoji from 📝 to ✅ for applied or ⏭ for skipped. Refresh the summary block counts at the top. Do not delete the review file. It stays as a receipt until the next `seed-sync` run overwrites it or the user clears it.
144
144
 
145
145
  ## After completion
146
146
 
@@ -51,7 +51,7 @@ A body that restates the sections, the frontmatter, or the numbered steps become
51
51
  ## Out of scope
52
52
 
53
53
  - Reading a handoff back at the start of the next session: `session-resume`
54
- - Routing a session fact to the context entry that owns it, and writing what no entry owns to the memory folder: `claude-memory-capture`
55
- - The sections a role adds over the core three, which belong to that role's own surface. `claude-orchestrate` owns the orchestrator's and cites this route for the generic half.
54
+ - Routing a session fact to the context entry that owns it, and writing what no entry owns to the memory folder: `memory-capture`
55
+ - The sections a role adds over the core three, which belong to that role's own surface. `role-orchestrator` owns the orchestrator's and cites this route for the generic half.
56
56
  - Validating a written map against the standard, which no record kind covers, so a conforming shape rests on the standard being followed
57
57
  - Firing the write without being asked, which is a question about what the harness supports and is measured on its own track
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: session-map
3
- description: Writes the session map, the pre-compaction handoff at `.canon/tasks/session-<slug>.md`, from any session whatever role it holds, running the skill-drift step the write procedure opens with. Use when asked to "write the handoff", "write the session map", "save the session before it compacts", "we are about to compact", "hand off to the next session", or "leave a note for whoever picks this up". Do NOT use to route session facts to a context entry or the memory folder, which is `claude-memory-capture` and writes a different artifact, and do NOT use to read a handoff back, which is `session-resume`.
3
+ description: Writes the session map, the pre-compaction handoff at `.canon/tasks/session-<slug>.md`, from any session whatever role it holds, running the skill-drift step the write procedure opens with. Use when asked to "write the handoff", "write the session map", "save the session before it compacts", "we are about to compact", "hand off to the next session", or "leave a note for whoever picks this up". Do NOT use to route session facts to a context entry or the memory folder, which is `memory-capture` and writes a different artifact, and do NOT use to read a handoff back, which is `session-resume`.
4
4
  ---
5
5
 
6
6
  # Session map
@@ -25,7 +25,7 @@ Decline where the session holds no reasoning a reader could not get faster from
25
25
 
26
26
  ## Step 1: run the capture the procedure opens with
27
27
 
28
- Item 1 of `## Writing one` is a capture. Invoke `canon:claude-memory-capture` and let it return before writing, so the map cites what was written instead of restating the same lesson in prose.
28
+ Item 1 of `## Writing one` is a capture. Invoke `canon:memory-capture` and let it return before writing, so the map cites what was written instead of restating the same lesson in prose.
29
29
 
30
30
  Pass on the caveat a caller states about committing. A caller that does not commit says so, and capture then skips routing and writes memory files alone, since a routed fact lands in a context entry and that is a tracked file. A caller stating nothing leaves capture to decide for itself, which is the ordinary run.
31
31
 
@@ -44,6 +44,6 @@ A resume is a read, and a session that treats it as a cleanup pass offers to arc
44
44
 
45
45
  - Writing a handoff, which happens at the close of a session rather than at its start. This skill names the standard that governs one and follows it no further.
46
46
  - The sections a role adds over the core handoff, which belong to that role's own surface
47
- - Archiving a shipped task out of the folder: `claude-tasks`
48
- - Archiving a plan and marking an outcome, which `claude-docs` does when the work ships
47
+ - Archiving a shipped task out of the folder: `task-board`
48
+ - Archiving a plan and marking an outcome, which `docs-fold` does when the work ships
49
49
  - Implementing the item it recommends, which is the next request rather than part of this one
@@ -7,7 +7,7 @@ description: Resumes a previous session by reading the handoff it left behind, t
7
7
 
8
8
  ## Step 1: read tracked work
9
9
 
10
- Resolve `.canon/plans/`, `.canon/memory/`, and `.canon/tasks/` at the main worktree root the way `claude-worktree` does.
10
+ Resolve `.canon/plans/`, `.canon/memory/`, and `.canon/tasks/` at the main worktree root the way `session-worktree` does.
11
11
 
12
12
  Read these in parallel, skipping any that do not exist:
13
13
 
@@ -42,7 +42,7 @@ When the board is empty and a handoff was found, name what the handoff leaves op
42
42
 
43
43
  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}/../../standards/plan.md`.
44
44
 
45
- Memory is updated only when a recorded fact becomes wrong, never on resume. A domain fact reaches a session through `.claude/context/`, which `claude-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.
45
+ Memory is updated only when a recorded fact becomes wrong, never on resume. A domain fact reaches a session through `.claude/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.
46
46
 
47
47
  ## Writing the next one
48
48
 
@@ -1,9 +1,9 @@
1
1
  ---
2
- name: claude-worktree
2
+ name: session-worktree
3
3
  description: Why worktree entry is wrapped rather than called directly, covering name derivation, the conventional branch rename the ship chain depends on, and the shared-config repair
4
4
  ---
5
5
 
6
- # Claude worktree requirement
6
+ # Session worktree requirement
7
7
 
8
8
  ## Gap
9
9
 
@@ -17,7 +17,7 @@ A declined request also has to land somewhere. The description turns away a list
17
17
 
18
18
  A submodule checkout is the state the entry path reads wrong while reporting nothing. The two directory reads that separate a linked worktree from a plain checkout return the same path there, so the guard passes and every derivation after it takes the submodule for the project: the main root, the plan lookup, and the folder entry builds all resolve inside a tree the superproject tracks as a commit.
19
19
 
20
- A stack that derives its ports from the working directory has the same shape. The number is correct and invisible, and `claude-orchestrate` sends a reader here to read it rather than assign one, so the entry that knows the working directory is the surface that owes it.
20
+ A stack that derives its ports from the working directory has the same shape. The number is correct and invisible, and `role-orchestrator` sends a reader here to read it rather than assign one, so the entry that knows the working directory is the surface that owes it.
21
21
 
22
22
  ## Must
23
23
 
@@ -1,9 +1,9 @@
1
1
  ---
2
- name: claude-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 `/claude-feature`. Do NOT use to list, clean up, or rotate worktrees (use `git-worktree`).
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`. Do NOT use to list, clean up, or rotate worktrees (use `git-worktree`).
4
4
  ---
5
5
 
6
- # Claude worktree
6
+ # Session worktree
7
7
 
8
8
  Wrap the `EnterWorktree` entry path with name derivation so the user does not pick a name by hand.
9
9
 
@@ -53,7 +53,7 @@ Resolve `<type>` here as well, since Step 3 previews it and Step 5 renames onto
53
53
 
54
54
  The verb is the reading rather than this body, because a type read off a plan's `## Summary` and `**Files to touch:**` lines is a judgment, and it has disagreed with itself in production. One dispatch checked `fix/path-form-hook` and the worker took `feat/path-form-hook`, both sides reading the same plan and grading it differently. The verb answers `feat` for every plan, so two sides calling it cannot part.
55
55
 
56
- The caller's type still wins over the verb's, because tier 0 is the one source that knows something no file states. The ordinary caller is `claude-autoship` Step 0, which ran the verb itself and is handing over the answer it got, so nothing is overridden in that case either.
56
+ The caller's type still wins over the verb's, because tier 0 is the one source that knows something no file states. The ordinary caller is `auto-ship` Step 0, which ran the verb itself and is handing over the answer it got, so nothing is overridden in that case either.
57
57
 
58
58
  Branch on the record rather than on the exit code, which a shell function wrapping `canon` can flatten to zero. Take `feat` and say the verb did not answer where it refuses, where the record carries no `type` key, or where the installed binary carries no `plan-branch` subcommand.
59
59
 
@@ -92,7 +92,7 @@ Call `EnterWorktree` with `name: "<name>"`. Claude Code's tool permission dialog
92
92
 
93
93
  ## Step 5: align the branch name and repair the shared config
94
94
 
95
- `EnterWorktree` creates a branch named `worktree-<name>`, which diverges from `<name>` and breaks downstream slug derivation in `claude-autoship` and any skill that reads `git branch --show-current`. A bare `<name>` fixes that and fails the branch-format guard in `git-pr`, which requires `<type>/<description>`. Rename to the conventional form, which satisfies both:
95
+ `EnterWorktree` creates a branch named `worktree-<name>`, which diverges from `<name>` and breaks downstream slug derivation in `auto-ship` and any skill that reads `git branch --show-current`. A bare `<name>` fixes that and fails the branch-format guard in `git-pr`, which requires `<type>/<description>`. Rename to the conventional form, which satisfies both:
96
96
 
97
97
  ```bash
98
98
  git branch -m worktree-<name> <type>/<name>
@@ -153,6 +153,6 @@ Branch on the exit rather than on the output, since the helper prints nothing to
153
153
 
154
154
  The helper refuses a folder left behind after its worktree was removed, which Step 4 cannot land on, since it registers whatever it creates. The branch is here so a refusal is never read back as an offset of zero, which is the main checkout's port and the collision the helper exists to prevent.
155
155
 
156
- The offset is what `claude-orchestrate` sends a reader here to read rather than assign, and what an operator overrides through `WORKTREE_PORT_OFFSET` when two worktrees derive the same value. Deriving it correctly and printing it nowhere leaves both instructions naming a number no surface emits.
156
+ The offset is what `role-orchestrator` sends a reader here to read rather than assign, and what an operator overrides through `WORKTREE_PORT_OFFSET` when two worktrees derive the same value. Deriving it correctly and printing it nowhere leaves both instructions naming a number no surface emits.
157
157
 
158
158
  Do not invoke `ExitWorktree` from this skill. Exit is the user's call.
@@ -28,7 +28,7 @@ The `design` and `security` categories cover the common gaps for a new machine.
28
28
  When the user asks for a recommended set, propose `frontend-design` and
29
29
  `security-guidance`. Offer `code-review` and `superpowers` as additions.
30
30
 
31
- `code-review` overlaps the toolkit's own `claude-review` skill. They run in
31
+ `code-review` overlaps the toolkit's own `review-branch` skill. They run in
32
32
  different places, the plugin on a PR and the toolkit skill on a local diff. Install
33
33
  `code-review` only when the user wants the GitHub-side flow too.
34
34
 
@@ -1,9 +1,9 @@
1
1
  ---
2
- name: claude-standards-audit
2
+ name: standards-audit
3
3
  description: What the standards audit is for, the gaps it closes, and the fixing it deliberately refuses
4
4
  ---
5
5
 
6
- # Claude standards audit requirement
6
+ # Standards audit requirement
7
7
 
8
8
  ## Gap
9
9
 
@@ -1,9 +1,9 @@
1
1
  ---
2
- name: claude-standards-audit
2
+ name: standards-audit
3
3
  description: Audits changed markdown files against every authoring standard that declares jurisdiction over their paths and reports violations without fixing. Reads the standards catalog to map each file, greps for banned tokens, and groups findings by file. Use when asked to "audit prose", "audit standards", "check standards", "standards audit", or after editing markdown where standards compliance matters. Do NOT fix violations. Reporting only.
4
4
  ---
5
5
 
6
- # Claude standards audit
6
+ # Standards audit
7
7
 
8
8
  ## Guards
9
9
 
@@ -37,5 +37,5 @@ Two failures are about stopping rather than about fixing. A session that never c
37
37
  ## Out of scope
38
38
 
39
39
  - A typo fix and a cause already agreed on, where the phases cost more than they return
40
- - Reviewing a change for defects it has not yet exhibited: `claude-review`
40
+ - Reviewing a change for defects it has not yet exhibited: `review-branch`
41
41
  - Deciding whether the architecture should change, which the three-attempt stop hands to the user rather than answering
@@ -1,9 +1,9 @@
1
1
  ---
2
- name: claude-tasks
2
+ name: task-board
3
3
  description: Why creating and archiving a task file is one skill, the origin invariant enforceable only at creation, and why archiving routes through the command the merge hook calls
4
4
  ---
5
5
 
6
- # Claude tasks requirement
6
+ # Task board requirement
7
7
 
8
8
  ## Gap
9
9
 
@@ -42,6 +42,6 @@ Placing a row without checking for another writer collides the same way. Two ses
42
42
 
43
43
  ## Out of scope
44
44
 
45
- - Editing the contents of a task that already exists, which `claude-docs` owns along with marking outcomes and sweeping plans
45
+ - Editing the contents of a task that already exists, which `docs-fold` owns along with marking outcomes and sweeping plans
46
46
  - Deciding what the task should argue. This owns the file's existence and its shape, not its content.
47
47
  - Relocating a plan, which one skill owns so two do not relocate it differently
@@ -1,18 +1,18 @@
1
1
  ---
2
- name: claude-tasks
3
- description: Creates a task file in `.canon/tasks/` with the filename, phase label, and frontmatter the standard requires, and archives a shipped one out of the folder. Use when asked to "add a task", "create a task", "queue this", "put this on the board", "archive that task", or "close out a shipped task". Do NOT use to mark an outcome `[x]`. That is `claude-docs`.
2
+ name: task-board
3
+ description: Creates a task file in `.canon/tasks/` with the filename, phase label, and frontmatter the standard requires, and archives a shipped one out of the folder. Use when asked to "add a task", "create a task", "queue this", "put this on the board", "archive that task", or "close out a shipped task". Do NOT use to mark an outcome `[x]`. That is `docs-fold`.
4
4
  ---
5
5
 
6
- # Claude tasks
6
+ # Task board
7
7
 
8
- Owns the two operations that bring a task file into existence and take it out of the folder. `claude-docs` 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.
8
+ Owns the two operations that bring a task file into existence and take it out of the folder. `docs-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.
9
9
 
10
10
  Read `${CLAUDE_SKILL_DIR}/../../standards/tasks.md` before writing any file. It holds the filename convention, the frontmatter contract, and the file format. Do not work them from memory.
11
11
 
12
12
  ## Guards
13
13
 
14
14
  - Resolve the board at the main worktree root, not `pwd`. Run `git worktree list --porcelain | grep -m 1 '^worktree ' | cut -d' ' -f2-`, falling back to `pwd` outside a git repo. Every read and write below resolves against that root. The board is gitignored scratch shared across worktrees, so a linked worktree writing to its own `pwd` creates a second board nothing else reads.
15
- - From a linked worktree the file-editing tools refuse that root, so a new task file goes out through `Bash` as a plain single command carrying a heredoc. Archiving already runs through `canon tasks archive`, which resolves the root in-process. Marking an outcome shipped is `claude-docs` and runs through `canon tasks outcome`. Resolve that root the way `claude-worktree` does.
15
+ - From a linked worktree the file-editing tools refuse that root, so a new task file goes out through `Bash` as a plain single command carrying a heredoc. Archiving already runs through `canon tasks archive`, which resolves the root in-process. Marking an outcome shipped is `docs-fold` and runs through `canon tasks outcome`. Resolve that root the way `session-worktree` does.
16
16
  - If `.canon/tasks/` does not exist at that root, stop: `❌ No .canon/tasks/ board. Run canon claude init to set it up.`
17
17
  - Route on the request rather than on a flag. Creating names work that does not exist yet, archiving names a task file already on the board. If the request fits neither, stop: `❌ Ambiguous. Say whether to create a task or archive one.`
18
18
  - Never hand-edit `.canon/tasks/index.md`. A hook regenerates it from sibling frontmatter after a write. Do not run the regen command directly, except after a shell write from a linked worktree: the hook matches `Write|Edit|MultiEdit` and nothing fires on `Bash`, so that one case regenerates explicitly with `canon indexes regen --no-stage --root <main-root> <main-root>/.canon/tasks/index.md`.
@@ -90,7 +90,7 @@ Do not move the file, edit `priority.md`, or regenerate the index by hand. `cano
90
90
 
91
91
  ### Step 1: confirm the work reached main
92
92
 
93
- `claude-docs` marks outcomes on the branch as step 1 of the ship chain, so an all-`[x]` task routinely describes a pull request that is still open. The command gates on the outcomes and cannot tell those two apart, which is what puts this check here:
93
+ `docs-fold` marks outcomes on the branch as step 1 of the ship chain, so an all-`[x]` task routinely describes a pull request that is still open. The command gates on the outcomes and cannot tell those two apart, which is what puts this check here:
94
94
 
95
95
  ```bash
96
96
  git fetch origin main --quiet && git log origin/main --oneline -20
@@ -116,7 +116,7 @@ On success the record carries `from`, `to`, `priorityRowRemoved`, and `indexRege
116
116
 
117
117
  Each reason has one resolution and none of them is to archive around it:
118
118
 
119
- - `open-outcomes`: the named outcomes are unmarked or genuinely open. Run `claude-docs` 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.
119
+ - `open-outcomes`: the named outcomes are unmarked or genuinely open. Run `docs-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.
120
120
  - `ambiguous`: two tasks name one pull request, which is the misfile `${CLAUDE_SKILL_DIR}/../../standards/tasks.md` rules out. Resolve the citation by hand, since no sweep repairs it.
121
121
  - `no-match`: the stem or number names nothing on the board. Check the name against the listed stems.
122
122
  - `bad-input`: the command line was wrong rather than the board. Read the message, fix the arguments, and run it again. Nothing on the board needs repair, which is what separates this from the two above.
@@ -1,9 +1,9 @@
1
1
  ---
2
- name: claude-teach
2
+ name: teach-workspace
3
3
  description: Scope boundary for learning a subject across sessions, and the split between the disposable lesson and the durable reference page
4
4
  ---
5
5
 
6
- # Claude teach requirement
6
+ # Teach workspace requirement
7
7
 
8
8
  ## Gap
9
9