@erclx/canon 5.31.0 → 5.33.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (413) hide show
  1. package/README.md +1 -1
  2. package/claude/.claude-plugin/plugin.json +1 -1
  3. package/claude/skills/api-design/references/adopted.md +1 -1
  4. package/claude/skills/auto-ship/REQUIREMENT.md +4 -16
  5. package/claude/skills/auto-ship/SKILL.md +13 -58
  6. package/claude/skills/auto-ship/references/draft-mark.md +2 -2
  7. package/claude/skills/auto-ship/references/failure-recovery.md +1 -5
  8. package/claude/skills/auto-ship/references/tier-failures.md +1 -1
  9. package/claude/skills/auto-ship/references/ui-checklist.md +2 -2
  10. package/claude/skills/auto-ship/references/verb-absent.md +3 -27
  11. package/claude/skills/auto-ship/references/worktree-name.md +1 -1
  12. package/claude/skills/backlog-triage/REQUIREMENT.md +2 -2
  13. package/claude/skills/backlog-triage/SKILL.md +2 -2
  14. package/claude/skills/canon-cli/REQUIREMENT.md +19 -18
  15. package/claude/skills/canon-cli/SKILL.md +75 -32
  16. package/claude/skills/canon-feedback/REQUIREMENT.md +1 -1
  17. package/claude/skills/canon-feedback/SKILL.md +11 -14
  18. package/claude/skills/canon-feedback-triage/REQUIREMENT.md +13 -14
  19. package/claude/skills/canon-feedback-triage/SKILL.md +49 -30
  20. package/claude/skills/{canvas → canvas-board}/REQUIREMENT.md +5 -6
  21. package/claude/skills/{canvas → canvas-board}/SKILL.md +7 -7
  22. package/{standards → claude/skills/canvas-board/references}/canvas.md +12 -1
  23. package/{standards → claude/skills/canvas-board/references}/design.md +13 -5
  24. package/claude/skills/ci-workflow/REQUIREMENT.md +0 -1
  25. package/claude/skills/context-fold/REQUIREMENT.md +28 -48
  26. package/claude/skills/context-fold/SKILL.md +26 -95
  27. package/claude/skills/context-fold/references/classify.md +7 -8
  28. package/claude/skills/context-fold/references/completion-report.md +4 -8
  29. package/claude/skills/context-fold/references/context-refresh.md +7 -17
  30. package/{standards → claude/skills/context-fold/references}/context.md +19 -10
  31. package/claude/skills/context-fold/references/unusable-baseline.md +4 -8
  32. package/claude/skills/create-rule/REQUIREMENT.md +0 -1
  33. package/claude/skills/create-rule/SKILL.md +2 -2
  34. package/{standards → claude/skills/create-rule/references}/rule.md +12 -5
  35. package/claude/skills/create-skill/REQUIREMENT.md +6 -4
  36. package/claude/skills/create-skill/SKILL.md +10 -9
  37. package/{standards → claude/skills/create-skill/references}/skill-paths.md +1 -0
  38. package/{standards → claude/skills/create-skill/references}/skill.md +18 -15
  39. package/claude/skills/decision-escalate/REQUIREMENT.md +1 -1
  40. package/claude/skills/decision-escalate/SKILL.md +1 -1
  41. package/claude/skills/design-taste/REQUIREMENT.md +3 -5
  42. package/claude/skills/design-taste/SKILL.md +2 -4
  43. package/claude/skills/design-taste/references/vocabulary.md +1 -1
  44. package/claude/skills/docs-sync/REQUIREMENT.md +3 -3
  45. package/claude/skills/docs-sync/SKILL.md +3 -3
  46. package/{standards → claude/skills/docs-sync/references}/docs.md +11 -0
  47. package/{standards → claude/skills/docs-sync/references}/readme.md +9 -2
  48. package/claude/skills/document-health/REQUIREMENT.md +2 -2
  49. package/claude/skills/document-health/SKILL.md +4 -5
  50. package/claude/skills/document-health/references/axes.md +4 -6
  51. package/claude/skills/draft-and-pick/REQUIREMENT.md +16 -14
  52. package/claude/skills/draft-and-pick/SKILL.md +40 -32
  53. package/claude/skills/draft-and-pick/references/live-arms.md +9 -9
  54. package/claude/skills/draft-doc/REQUIREMENT.md +5 -5
  55. package/claude/skills/draft-doc/SKILL.md +9 -10
  56. package/claude/skills/draft-doc/references/requirements.md +61 -0
  57. package/claude/skills/draft-doc/references/wiki-kind.md +53 -0
  58. package/claude/skills/draft-doc/references/wiki.md +50 -30
  59. package/claude/skills/draft-figure/REQUIREMENT.md +2 -2
  60. package/claude/skills/draft-figure/SKILL.md +5 -5
  61. package/claude/skills/draft-figure/references/architecture-set.md +4 -4
  62. package/claude/skills/draft-figure/references/hand-drawn.md +2 -2
  63. package/claude/skills/draft-figure/references/mermaid-path.md +55 -0
  64. package/claude/skills/draft-figure/references/mermaid.md +43 -34
  65. package/claude/skills/draft-identity/REQUIREMENT.md +3 -3
  66. package/claude/skills/draft-identity/SKILL.md +10 -8
  67. package/claude/skills/draft-ready/REQUIREMENT.md +1 -1
  68. package/claude/skills/draft-ready/SKILL.md +7 -7
  69. package/claude/skills/draft-ready/references/assembly.md +1 -1
  70. package/{standards → claude/skills/draft-ready/references}/ready.md +13 -5
  71. package/claude/skills/git-branch/SKILL.md +1 -1
  72. package/{standards → claude/skills/git-branch/references}/branch.md +1 -1
  73. package/claude/skills/git-commit/SKILL.md +2 -2
  74. package/claude/skills/git-followup/REQUIREMENT.md +1 -1
  75. package/claude/skills/git-followup/SKILL.md +1 -1
  76. package/claude/skills/git-issue/SKILL.md +1 -1
  77. package/claude/skills/git-issue/references/issue.md +3 -3
  78. package/claude/skills/git-pr/SKILL.md +13 -13
  79. package/claude/skills/git-pr/references/evidence.md +2 -2
  80. package/claude/skills/git-pr/references/final-command.md +38 -14
  81. package/claude/skills/git-pr/references/labels.md +5 -1
  82. package/{standards → claude/skills/git-pr/references}/pr.md +19 -9
  83. package/{standards → claude/skills/git-pr/references}/publish.md +5 -3
  84. package/claude/skills/git-pr/references/task-number.md +1 -1
  85. package/claude/skills/git-ship/REQUIREMENT.md +0 -2
  86. package/claude/skills/git-ship/SKILL.md +5 -12
  87. package/claude/skills/git-split/SKILL.md +3 -3
  88. package/claude/skills/git-stage/SKILL.md +1 -1
  89. package/claude/skills/plan-feature/REQUIREMENT.md +1 -1
  90. package/claude/skills/plan-feature/SKILL.md +2 -6
  91. package/{standards → claude/skills/plan-feature/references}/plan.md +9 -10
  92. package/claude/skills/plan-groundwork/SKILL.md +5 -6
  93. package/{standards → claude/skills/plan-groundwork/references}/groundwork.md +17 -4
  94. package/claude/skills/plan-intake/SKILL.md +2 -3
  95. package/{standards → claude/skills/plan-intake/references}/intake.md +17 -2
  96. package/claude/skills/plan-intake-answer/REQUIREMENT.md +1 -1
  97. package/claude/skills/plan-intake-answer/SKILL.md +1 -1
  98. package/claude/skills/review-address/SKILL.md +2 -2
  99. package/claude/skills/review-address/references/post-review-findings.md +1 -1
  100. package/claude/skills/review-craft/REQUIREMENT.md +3 -3
  101. package/claude/skills/review-craft/SKILL.md +2 -2
  102. package/claude/skills/review-craft/references/ui.md +4 -4
  103. package/claude/skills/review-pr/REQUIREMENT.md +2 -2
  104. package/claude/skills/review-pr/SKILL.md +8 -10
  105. package/claude/skills/review-pr/references/body-variants.md +2 -2
  106. package/claude/skills/review-pr/references/key-changes.md +3 -3
  107. package/claude/skills/review-pr/references/post.md +4 -2
  108. package/claude/skills/review-ui/REQUIREMENT.md +1 -2
  109. package/claude/skills/review-ui/SKILL.md +2 -2
  110. package/claude/skills/review-ui/references/post.md +1 -1
  111. package/claude/skills/role-orchestrator/REQUIREMENT.md +3 -3
  112. package/claude/skills/role-orchestrator/SKILL.md +10 -10
  113. package/claude/skills/role-orchestrator/references/orchestrator-dispatch.md +3 -3
  114. package/claude/skills/role-orchestrator/references/orchestrator-handoff.md +9 -9
  115. package/claude/skills/role-orchestrator/references/orchestrator-launch.md +23 -1
  116. package/claude/skills/role-orchestrator/references/orchestrator-parked.md +2 -2
  117. package/claude/skills/role-orchestrator/references/orchestrator-refill.md +2 -5
  118. package/claude/skills/role-orchestrator/references/orchestrator-resume.md +4 -1
  119. package/claude/skills/role-planner/REQUIREMENT.md +2 -1
  120. package/claude/skills/role-planner/SKILL.md +15 -4
  121. package/claude/skills/role-reviewer/SKILL.md +2 -2
  122. package/claude/skills/role-worker/REQUIREMENT.md +1 -0
  123. package/claude/skills/role-worker/SKILL.md +11 -3
  124. package/claude/skills/session-compact/REQUIREMENT.md +1 -4
  125. package/claude/skills/session-compact/SKILL.md +3 -13
  126. package/claude/skills/session-compact/references/handoff-note.md +2 -2
  127. package/claude/skills/session-map/REQUIREMENT.md +1 -9
  128. package/claude/skills/session-map/SKILL.md +9 -17
  129. package/{standards → claude/skills/session-map/references}/session.md +17 -11
  130. package/claude/skills/session-relay/REQUIREMENT.md +1 -1
  131. package/claude/skills/session-resume/REQUIREMENT.md +6 -8
  132. package/claude/skills/session-resume/SKILL.md +3 -9
  133. package/claude/skills/session-worktree/SKILL.md +6 -6
  134. package/claude/skills/session-worktree/references/main-root-writes.md +2 -2
  135. package/claude/skills/systematic-debugging/REQUIREMENT.md +0 -1
  136. package/claude/skills/target-check/REQUIREMENT.md +3 -3
  137. package/claude/skills/target-check/SKILL.md +1 -1
  138. package/claude/skills/target-check/references/domains.md +1 -1
  139. package/claude/skills/target-setup/REQUIREMENT.md +4 -4
  140. package/claude/skills/target-setup/SKILL.md +3 -3
  141. package/claude/skills/target-setup/references/detect.md +2 -2
  142. package/claude/skills/task-board/REQUIREMENT.md +7 -12
  143. package/claude/skills/task-board/SKILL.md +9 -21
  144. package/{standards → claude/skills/task-board/references}/board.md +9 -0
  145. package/claude/skills/task-board/references/decline.md +1 -1
  146. package/{standards → claude/skills/task-board/references}/tasks.md +15 -10
  147. package/claude/skills/task-complete/REQUIREMENT.md +47 -0
  148. package/claude/skills/task-complete/SKILL.md +86 -0
  149. package/claude/skills/{task-board → task-complete}/references/archive.md +5 -5
  150. package/claude/skills/task-complete/references/receipt-sweep.md +32 -0
  151. package/claude/skills/task-complete/references/unusable-baseline.md +19 -0
  152. package/claude/skills/teach-workspace/REQUIREMENT.md +6 -2
  153. package/claude/skills/teach-workspace/SKILL.md +9 -5
  154. package/claude/skills/teach-workspace/references/lesson-craft.md +1 -1
  155. package/claude/skills/teach-workspace/references/promotion-fold.md +29 -0
  156. package/claude/skills/teach-workspace/references/promotion.md +3 -3
  157. package/claude/skills/teach-workspace/references/revisit.md +1 -1
  158. package/{standards → claude/skills/teach-workspace/references}/teach.md +17 -5
  159. package/claude/skills/ui-checklist/SKILL.md +1 -1
  160. package/claude/skills/ux-audit/REQUIREMENT.md +2 -2
  161. package/claude/skills/ux-audit/SKILL.md +3 -4
  162. package/claude/skills/ux-measure/SKILL.md +1 -1
  163. package/claude/skills/write-human/REQUIREMENT.md +0 -1
  164. package/claude/skills/write-human/SKILL.md +1 -1
  165. package/docs/agents/audits.md +1 -1
  166. package/docs/agents/canvas.md +1 -1
  167. package/docs/agents/commands.md +4 -8
  168. package/docs/agents/context-audit-checks.md +11 -25
  169. package/docs/agents/context-audit.md +7 -15
  170. package/docs/agents/context-classify.md +5 -5
  171. package/docs/agents/counts.md +5 -5
  172. package/docs/agents/drift-surfaces.md +2 -2
  173. package/docs/agents/index.md +5 -7
  174. package/docs/agents/indexes.md +1 -1
  175. package/docs/agents/install-and-sync.md +6 -11
  176. package/docs/agents/intake.md +1 -1
  177. package/docs/agents/key-changes.md +5 -5
  178. package/docs/agents/label-coverage.md +11 -0
  179. package/docs/agents/migrate.md +1 -1
  180. package/docs/agents/records-push.md +2 -2
  181. package/docs/agents/records-stale.md +13 -48
  182. package/docs/agents/records-validate.md +4 -8
  183. package/docs/agents/records.md +6 -28
  184. package/docs/agents/restated.md +1 -1
  185. package/docs/agents/rule-citations.md +2 -2
  186. package/docs/agents/sandbox.md +4 -4
  187. package/docs/agents/skills-audit.md +2 -2
  188. package/docs/agents/state-scoped-risk.md +2 -2
  189. package/docs/agents/superseded.md +2 -2
  190. package/docs/agents/tasks-plans.md +1 -1
  191. package/docs/agents/tasks-validate.md +1 -1
  192. package/docs/agents/tasks.md +3 -3
  193. package/docs/agents/teach.md +1 -1
  194. package/docs/agents/upstream.md +26 -2
  195. package/docs/target/migrations.md +32 -0
  196. package/docs/target/projects.md +5 -7
  197. package/docs/target/scenarios.md +2 -2
  198. package/docs/target/sync.md +4 -4
  199. package/docs/workflow/ai-workflow.md +7 -38
  200. package/docs/workflow/index.md +1 -1
  201. package/docs/workflow/operating-model.md +10 -10
  202. package/docs/workflow/parallel-features.md +12 -12
  203. package/docs/workflow/skill-map-on-request.md +21 -24
  204. package/docs/workflow/skill-map.md +23 -34
  205. package/docs/workflow/visual-design-workflow.md +13 -16
  206. package/governance/renames.toml +0 -30
  207. package/governance/rules/canon/605-worktrees.md +1 -1
  208. package/governance/rules/canon/context.md +13 -0
  209. package/governance/rules/{standards → canon}/plan.md +4 -5
  210. package/governance/rules/canon/tasks.md +18 -0
  211. package/governance/rules/claude/skill.md +17 -0
  212. package/governance/stacks/base.toml +2 -4
  213. package/package.json +4 -4
  214. package/scripts/core/install-check.sh +4 -4
  215. package/scripts/core/regen-web-previews.ts +1 -1
  216. package/scripts/lib/ui.sh +0 -159
  217. package/src/audits/catalog.ts +5 -98
  218. package/src/claude/cases/authoring.ts +0 -18
  219. package/src/claude/cases/misc.ts +1 -14
  220. package/src/claude/cases/setup.ts +7 -20
  221. package/src/claude/cases/workflow.ts +6 -34
  222. package/src/claude/seeds.ts +1 -7
  223. package/src/claude/skills-audit.ts +3 -3
  224. package/src/cli/help.ts +4 -5
  225. package/src/cli/ui.ts +2 -3
  226. package/src/cli.ts +0 -4
  227. package/src/commands/claude.ts +9 -15
  228. package/src/commands/context.ts +18 -280
  229. package/src/commands/feedback.ts +22 -91
  230. package/src/commands/gov.ts +2 -15
  231. package/src/commands/labels.ts +326 -7
  232. package/src/commands/migrate.ts +6 -1
  233. package/src/commands/pr.ts +1 -1
  234. package/src/commands/records.ts +17 -403
  235. package/src/commands/sandbox.ts +3 -6
  236. package/src/commands/sync.ts +5 -3
  237. package/src/commands/tasks.ts +3 -3
  238. package/src/commands/upstream.ts +135 -0
  239. package/src/context/audit.ts +10 -19
  240. package/src/context/classify/extract.ts +6 -13
  241. package/src/context/classify/patterns.ts +2 -41
  242. package/src/context/classify/prompts.ts +2 -6
  243. package/src/context/classify/run.ts +3 -3
  244. package/src/context/folders.ts +8 -13
  245. package/src/context/gate.ts +11 -91
  246. package/src/context/requirements.ts +13 -4
  247. package/src/counts/scan.ts +3 -3
  248. package/src/design/budget.ts +1 -1
  249. package/src/design/components.ts +3 -3
  250. package/src/design/document.ts +1 -1
  251. package/src/design/regen.ts +1 -1
  252. package/src/design/render.ts +1 -1
  253. package/src/feedback/body.ts +0 -12
  254. package/src/gate/measures.ts +7 -58
  255. package/src/gate/sequencer.ts +56 -1
  256. package/src/gate/stages.ts +1 -7
  257. package/src/gov/citations.ts +9 -3
  258. package/src/gov/install.ts +2 -3
  259. package/src/gov/restated.ts +3 -3
  260. package/src/gov/stacks.ts +1 -1
  261. package/src/hooks/post-merge.ts +1 -1
  262. package/src/labels/apply.ts +39 -0
  263. package/src/labels/format.ts +3 -3
  264. package/src/labels/phase.ts +3 -3
  265. package/src/labels/sections.ts +43 -0
  266. package/src/markdown/structure.ts +2 -2
  267. package/src/migrate/record-layout.ts +3 -3
  268. package/src/migrate/skill-names.ts +20 -1
  269. package/src/pr/paths.ts +4 -4
  270. package/src/records/backup.ts +16 -6
  271. package/src/records/ordinal.ts +1 -1
  272. package/src/records/prune.ts +2 -1
  273. package/src/records/stale-canonical.ts +33 -3
  274. package/src/records/validate.ts +2 -188
  275. package/src/roots/record.ts +1 -1
  276. package/src/sandbox/census.ts +1 -1
  277. package/src/sandbox/coverage.ts +2 -6
  278. package/src/sandbox/equivalence.ts +5 -44
  279. package/src/sandbox/expect.ts +4 -4
  280. package/src/sandbox/provision.ts +13 -36
  281. package/src/sandbox/scenario.ts +137 -55
  282. package/src/sandbox/tree.ts +2 -6
  283. package/src/shipped/references.ts +3 -3
  284. package/src/standards/read.ts +44 -0
  285. package/src/sync/git.ts +1 -1
  286. package/src/sync/seeds-report.ts +1 -1
  287. package/src/tasks/archive.ts +5 -5
  288. package/src/tasks/branch.ts +3 -3
  289. package/src/tasks/label.ts +1 -1
  290. package/src/tasks/reach.ts +2 -2
  291. package/src/tasks/record.ts +2 -2
  292. package/src/tasks/validate.ts +2 -2
  293. package/src/teach/workspace.ts +1 -1
  294. package/src/upstream/cursor.ts +1 -1
  295. package/src/upstream/due.ts +128 -0
  296. package/src/upstream/releases.ts +2 -1
  297. package/standards/index.md +0 -35
  298. package/standards/standard.md +1 -7
  299. package/tooling/base/reference.md +2 -2
  300. package/tooling/base/seeds/.github/pull_request_template.md +2 -2
  301. package/tooling/claude/reference.md +7 -21
  302. package/tooling/claude/seeds/.claude/hooks/pr-create-log.sh +9 -1
  303. package/tooling/claude/seeds/.claude/hooks/records-index.sh +8 -20
  304. package/tooling/claude/seeds/.claude/hooks/review-post-scan.sh +171 -0
  305. package/tooling/claude/seeds/.claude/hooks/standards-audit.sh +3 -3
  306. package/tooling/claude/seeds/.claude/settings.json +9 -0
  307. package/tooling/claude/seeds/CLAUDE.md +1 -3
  308. package/tooling/claude/seeds/canon/REQUIREMENTS.md +2 -9
  309. package/tooling/web/configs/e2e/screenshot.ts +0 -1
  310. package/claude/skills/auto-ship/references/review-findings.md +0 -20
  311. package/claude/skills/bash-cli-script/REQUIREMENT.md +0 -43
  312. package/claude/skills/bash-cli-script/SKILL.md +0 -53
  313. package/claude/skills/bash-cli-script/references/template.md +0 -19
  314. package/claude/skills/canon-operator/REQUIREMENT.md +0 -62
  315. package/claude/skills/canon-operator/SKILL.md +0 -113
  316. package/claude/skills/canon-rollout/REQUIREMENT.md +0 -59
  317. package/claude/skills/canon-rollout/SKILL.md +0 -140
  318. package/claude/skills/canon-rollout/references/failure-recovery.md +0 -20
  319. package/claude/skills/context-fold/references/anchor-sweep.md +0 -58
  320. package/claude/skills/context-fold/references/promoted-pages.md +0 -29
  321. package/claude/skills/context-fold/references/receipt-sweep.md +0 -43
  322. package/claude/skills/context-fold/references/wireframe-sweep.md +0 -45
  323. package/claude/skills/create-standard/REQUIREMENT.md +0 -33
  324. package/claude/skills/create-standard/SKILL.md +0 -31
  325. package/claude/skills/design-extract/REQUIREMENT.md +0 -42
  326. package/claude/skills/design-extract/SKILL.md +0 -108
  327. package/claude/skills/draft-and-pick/references/frame.html +0 -118
  328. package/claude/skills/draft-doc/references/wireframes.md +0 -48
  329. package/claude/skills/markdown-propose/REQUIREMENT.md +0 -47
  330. package/claude/skills/markdown-propose/SKILL.md +0 -122
  331. package/claude/skills/markdown-propose/references/format.md +0 -118
  332. package/claude/skills/memory-capture/REQUIREMENT.md +0 -50
  333. package/claude/skills/memory-capture/SKILL.md +0 -117
  334. package/claude/skills/memory-review/REQUIREMENT.md +0 -52
  335. package/claude/skills/memory-review/SKILL.md +0 -129
  336. package/claude/skills/memory-review/references/later-phases.md +0 -118
  337. package/claude/skills/memory-review/references/receipt-format.md +0 -64
  338. package/claude/skills/project-commands/REQUIREMENT.md +0 -42
  339. package/claude/skills/project-commands/SKILL.md +0 -87
  340. package/claude/skills/repo-metadata/REQUIREMENT.md +0 -37
  341. package/claude/skills/repo-metadata/SKILL.md +0 -54
  342. package/claude/skills/restate-plainly/REQUIREMENT.md +0 -41
  343. package/claude/skills/restate-plainly/SKILL.md +0 -41
  344. package/claude/skills/review-branch/REQUIREMENT.md +0 -40
  345. package/claude/skills/review-branch/SKILL.md +0 -137
  346. package/claude/skills/seed-sync/REQUIREMENT.md +0 -45
  347. package/claude/skills/seed-sync/SKILL.md +0 -158
  348. package/claude/skills/sketch-design/REQUIREMENT.md +0 -38
  349. package/claude/skills/sketch-design/SKILL.md +0 -94
  350. package/claude/skills/ux-walkthrough/REQUIREMENT.md +0 -56
  351. package/claude/skills/ux-walkthrough/SKILL.md +0 -53
  352. package/claude/skills/ux-walkthrough/references/builds.md +0 -15
  353. package/claude/skills/ux-walkthrough/references/candidate-pages.md +0 -11
  354. package/claude/skills/ux-walkthrough/references/measuring.md +0 -22
  355. package/claude/skills/ux-walkthrough/references/record.md +0 -36
  356. package/claude/skills/ux-walkthrough/references/relay.md +0 -25
  357. package/docs/agents/architecture-record.md +0 -36
  358. package/docs/agents/review-classification.md +0 -76
  359. package/governance/rules/canon/603-memory.md +0 -11
  360. package/governance/rules/lang/120-bash.md +0 -18
  361. package/governance/rules/standards/architecture.md +0 -13
  362. package/governance/rules/standards/context.md +0 -14
  363. package/governance/rules/standards/design.md +0 -12
  364. package/governance/rules/standards/groundwork.md +0 -13
  365. package/governance/rules/standards/intake.md +0 -12
  366. package/governance/rules/standards/memory.md +0 -12
  367. package/governance/rules/standards/readme.md +0 -12
  368. package/governance/rules/standards/ready.md +0 -13
  369. package/governance/rules/standards/requirements.md +0 -12
  370. package/governance/rules/standards/rule.md +0 -13
  371. package/governance/rules/standards/session.md +0 -13
  372. package/governance/rules/standards/skill.md +0 -21
  373. package/governance/rules/standards/standard.md +0 -13
  374. package/governance/rules/standards/tasks.md +0 -15
  375. package/governance/rules/standards/teach.md +0 -14
  376. package/governance/rules/standards/wiki.md +0 -13
  377. package/governance/rules/standards/wireframes.md +0 -13
  378. package/scripts/config.sh +0 -11
  379. package/scripts/lib/gov.sh +0 -14
  380. package/scripts/lib/sandbox-fixtures.sh +0 -191
  381. package/scripts/lib/sandbox-git.sh +0 -125
  382. package/scripts/lib/sandbox-path.sh +0 -50
  383. package/scripts/sandbox-hook.sh +0 -99
  384. package/src/autoship/classify.ts +0 -75
  385. package/src/autoship/paths.ts +0 -50
  386. package/src/commands/autoship.ts +0 -129
  387. package/src/commands/repo.ts +0 -393
  388. package/src/context/architecture.ts +0 -654
  389. package/src/context/wireframe-states.ts +0 -238
  390. package/src/gov/standard-rules.ts +0 -179
  391. package/src/records/migrate.ts +0 -78
  392. package/src/records/stale.ts +0 -243
  393. package/src/repo/metadata.ts +0 -206
  394. package/src/sandbox/hooks.ts +0 -128
  395. package/standards/architecture.md +0 -127
  396. package/standards/memory.md +0 -158
  397. package/standards/mermaid.md +0 -64
  398. package/standards/requirements.md +0 -79
  399. package/standards/wiki.md +0 -77
  400. package/standards/wireframes.md +0 -143
  401. package/tooling/claude/seeds/.claude/memory/index.md +0 -8
  402. package/tooling/claude/seeds/canon/ARCHITECTURE.md +0 -23
  403. package/tooling/claude/seeds/canon/wireframes/index.md +0 -8
  404. /package/{standards → claude/skills/create-skill/references}/skill-practice.md +0 -0
  405. /package/{standards → claude/skills/create-skill/references}/skill-requirement.md +0 -0
  406. /package/{standards → claude/skills/draft-figure/references}/figures.md +0 -0
  407. /package/{standards → claude/skills/git-branch/references}/slug.md +0 -0
  408. /package/{standards → claude/skills/git-commit/references}/commit.md +0 -0
  409. /package/{standards → claude/skills/git-commit/references}/versioning.md +0 -0
  410. /package/{standards → claude/skills/plan-feature/references}/plan-lifecycle.md +0 -0
  411. /package/{standards → claude/skills/plan-groundwork/references}/groundwork-spikes.md +0 -0
  412. /package/{standards → claude/skills/task-board/references}/tasks-decline.md +0 -0
  413. /package/{standards → claude/skills/teach-workspace/references}/glossary.md +0 -0
package/scripts/lib/ui.sh CHANGED
@@ -6,12 +6,6 @@ if [ "${BASH_VERSINFO[0]:-0}" -lt 4 ]; then
6
6
  exit 1
7
7
  fi
8
8
 
9
- # Resolved from this file's own location rather than `$PROJECT_ROOT`, because
10
- # `require_project_root` is what several scripts call before anything has
11
- # established a root.
12
- # shellcheck source=/dev/null
13
- source "$(dirname "$(readlink -f "${BASH_SOURCE[0]}")")/sandbox-path.sh"
14
-
15
9
  # `NO_COLOR` follows the published convention, where any non-empty value turns
16
10
  # color off whatever the value says.
17
11
  supports_color() {
@@ -111,156 +105,3 @@ guard_root() {
111
105
  log_error "Cannot run against toolkit root. Files here are the source of truth."
112
106
  fi
113
107
  }
114
-
115
- require_project_root() {
116
- local GREEN RED YELLOW WHITE GREY NC
117
- set_palette 2
118
- local sandbox in_sandbox=0
119
- if [ -n "${CANON_SANDBOX_DIR:-}" ]; then
120
- sandbox="$CANON_SANDBOX_DIR"
121
- [[ "$PWD" == "$sandbox" || "$PWD" == "$sandbox"/* ]] && in_sandbox=1
122
- else
123
- sandbox="$(sandbox_dir_prefix)"
124
- [[ "$PWD" == "$sandbox" || "$PWD" == "$sandbox"/* || "$PWD" == "$sandbox"-* ]] && in_sandbox=1
125
- fi
126
- if [ "$in_sandbox" -eq 1 ]; then
127
- echo -e "${GREY}┌${NC}" >&2
128
- log_error "Execution restricted: Command cannot be run from inside the sandbox environment."
129
- fi
130
- if [[ "$PWD" != "$PROJECT_ROOT"* ]]; then
131
- echo -e "${GREY}┌${NC}" >&2
132
- log_error "Context Error: You must run this command from inside the repository."
133
- fi
134
- }
135
-
136
- # The retired spelling stays honored, and permanently. This variable is the
137
- # documented way to drive any command headlessly, so every skill body, CI job,
138
- # and operator script already written sets the old name, and those callers live
139
- # in repositories and plugin caches this release cannot reach. Dropping it
140
- # leaves them waiting on a TTY nobody is watching.
141
- is_non_interactive() {
142
- # canon-keep-retired
143
- [[ "${CANON_NON_INTERACTIVE:-}" == "1" || "${AITK_NON_INTERACTIVE:-}" == "1" ]]
144
- }
145
-
146
- ask() {
147
- local GREEN RED YELLOW WHITE GREY NC
148
- set_palette 2
149
- local prompt_text=$1
150
- local var_name=$2
151
- local default_val=$3
152
- local input=""
153
- local char
154
- local display_default=""
155
- if [ -n "$default_val" ]; then
156
- display_default=" (${default_val})"
157
- fi
158
- if is_non_interactive; then
159
- echo -e "${GREY}│${NC}" >&2
160
- echo -e "${GREY}◇${NC} ${prompt_text} ${WHITE}${default_val}${NC}" >&2
161
- export "$var_name"="$default_val"
162
- return
163
- fi
164
- echo -e "${GREY}│${NC}" >&2
165
- echo -ne "${GREEN}◆${NC} ${prompt_text}${display_default} " >&2
166
- while IFS= read -r -s -n1 char; do
167
- if [[ $char == $'\x1b' ]]; then
168
- read -rsn2 -t 0.001 _ || true
169
- echo -ne "\r\033[K" >&2
170
- echo -e "${GREY}◇${NC} ${prompt_text} ${RED}Cancelled${NC}" >&2
171
- exit 1
172
- elif [[ $char == $'\x7f' || $char == $'\x08' ]]; then
173
- if [ -n "$input" ]; then
174
- input="${input%?}"
175
- echo -ne "\b \b" >&2
176
- fi
177
- elif [[ -z "$char" ]]; then
178
- break
179
- else
180
- input+="$char"
181
- echo -n "$char" >&2
182
- fi
183
- done
184
- [ -z "$input" ] && input="$default_val"
185
- echo -ne "\r\033[K" >&2
186
- echo -e "${GREY}◇${NC} ${prompt_text} ${WHITE}${input}${NC}" >&2
187
- export "$var_name"="$input"
188
- }
189
-
190
- select_or_route_scenario() {
191
- local GREEN RED YELLOW WHITE GREY NC
192
- set_palette 2
193
- local prompt_text=$1
194
- shift
195
- local options=("$@")
196
-
197
- if [ -n "${SANDBOX_SCENARIO:-}" ]; then
198
- echo -e "${GREY}│${NC}" >&2
199
- echo -e "${GREY}◇${NC} ${prompt_text} ${WHITE}${SANDBOX_SCENARIO}${NC}" >&2
200
- export SELECTED_OPTION="$SANDBOX_SCENARIO"
201
- return
202
- fi
203
-
204
- select_option "$prompt_text" "${options[@]}"
205
- }
206
-
207
- select_option() {
208
- local GREEN RED YELLOW WHITE GREY NC
209
- set_palette 2
210
- local prompt_text=$1
211
- shift
212
- local options=("$@")
213
- local cur=0
214
- local count=${#options[@]}
215
-
216
- if is_non_interactive; then
217
- echo -e "${GREY}│${NC}" >&2
218
- echo -e "${GREY}◇${NC} ${prompt_text} ${WHITE}${options[0]}${NC}" >&2
219
- export SELECTED_OPTION="${options[0]}"
220
- return
221
- fi
222
-
223
- if [ ! -t 0 ]; then
224
- log_error "${prompt_text} requires a TTY. Pass an argument or set CANON_NON_INTERACTIVE=1."
225
- fi
226
-
227
- echo -e "${GREY}│${NC}" >&2
228
- echo -ne "${GREEN}◆${NC} ${prompt_text}\n" >&2
229
-
230
- while true; do
231
- for i in "${!options[@]}"; do
232
- if [ "$i" -eq "$cur" ]; then
233
- echo -e "${GREY}│${NC} ${GREEN}❯ ${options[$i]}${NC}" >&2
234
- else
235
- echo -e "${GREY}│${NC} ${GREY}${options[$i]}${NC}" >&2
236
- fi
237
- done
238
-
239
- read -rsn1 key
240
- case "$key" in
241
- $'\x1b')
242
- if read -rsn2 -t 0.001 key_seq; then
243
- if [[ "$key_seq" == "[A" ]]; then cur=$(((cur - 1 + count) % count)); fi
244
- if [[ "$key_seq" == "[B" ]]; then cur=$(((cur + 1) % count)); fi
245
- else
246
- echo -ne "\033[$((count + 1))A\033[J" >&2
247
- echo -e "${GREY}◇${NC} ${prompt_text} ${RED}Cancelled${NC}" >&2
248
- exit 1
249
- fi
250
- ;;
251
- "k") cur=$(((cur - 1 + count) % count)) ;;
252
- "j") cur=$(((cur + 1) % count)) ;;
253
- "q")
254
- echo -ne "\033[$((count + 1))A\033[J" >&2
255
- echo -e "${GREY}◇${NC} ${prompt_text} ${RED}Cancelled${NC}" >&2
256
- exit 1
257
- ;;
258
- "") break ;;
259
- esac
260
- echo -ne "\033[${count}A" >&2
261
- done
262
-
263
- echo -ne "\033[$((count + 1))A\033[J" >&2
264
- echo -e "${GREY}◇${NC} ${prompt_text} ${WHITE}${options[$cur]}${NC}" >&2
265
- export SELECTED_OPTION="${options[$cur]}"
266
- }
@@ -139,100 +139,12 @@ function allOf(
139
139
  return counts
140
140
  }
141
141
 
142
- /**
143
- * Reads the architecture record's measures, or nothing when the project
144
- * carries no record.
145
- *
146
- * Three states rather than two, matching what the verb publishes. The key
147
- * absent is a run that never opened the record, which the aggregate never asks
148
- * for and so reads as a shape that moved. Null is a project entitled to carry
149
- * no record, whose other context counts still stand, so it contributes no key
150
- * rather than a zero that would read as a conforming record.
151
- */
152
- function architectureCounts(
153
- root: Record<string, unknown>,
154
- ): Record<string, number> | undefined | 'absent' {
155
- if (!('architecture' in root)) return undefined
156
- if (root.architecture === null) return 'absent'
157
-
158
- const record = asObject(root.architecture)
159
- const decisions = record?.decisions
160
- if (
161
- record === undefined ||
162
- !Array.isArray(decisions) ||
163
- typeof record.lines !== 'number'
164
- ) {
165
- return undefined
166
- }
167
-
168
- // A record stating no length rule has no ceiling to be past, and reporting
169
- // zero there would read as one measured and found conforming.
170
- const ceiling =
171
- typeof record.ceiling === 'number' ? record.ceiling : undefined
172
- const entryCap =
173
- typeof record.entryCap === 'number' ? record.entryCap : undefined
174
-
175
- const revisitRequired = record.revisitRequired === true
176
- const wordCap =
177
- typeof record.wordCap === 'number' ? record.wordCap : undefined
178
- const riskCap =
179
- typeof record.riskCap === 'number' ? record.riskCap : undefined
180
- const risksBullets =
181
- typeof record.risksBullets === 'number' ? record.risksBullets : undefined
182
-
183
- let unverifiable = 0
184
- let unchecked = 0
185
- let lackingRevisit = 0
186
- let overWords = 0
187
- for (const raw of decisions) {
188
- const entry = asObject(raw)
189
- const claim = entry?.claim
190
- const checks = lengthOf(entry?.checks)
191
- if (typeof claim !== 'string' || checks === undefined) return undefined
192
-
193
- if (claim === 'neither') unverifiable += 1
194
- else if (checks === 0) unchecked += 1
195
- if (revisitRequired && entry?.revisit !== true) lackingRevisit += 1
196
- if (
197
- wordCap !== undefined &&
198
- typeof entry?.words === 'number' &&
199
- entry.words > wordCap
200
- ) {
201
- overWords += 1
202
- }
203
- }
204
-
205
- return {
206
- // A boolean, counted so the aggregate reads it the way it reads every
207
- // other measure. The verb gates on it separately, and the key is absent
208
- // rather than zero on a record that declared no ceiling.
209
- ...(ceiling !== undefined && {
210
- recordOverLength: record.lines > ceiling ? 1 : 0,
211
- }),
212
- // Absent on a record stating no entry cap, for the same reason.
213
- ...(entryCap !== undefined && {
214
- recordOverCount: decisions.length > entryCap ? 1 : 0,
215
- }),
216
- // Absent on a record stating no revisit clause, for the same reason.
217
- ...(revisitRequired && { recordMissingRevisit: lackingRevisit }),
218
- // Absent on a record stating no word cap or no bullet cap, for the same
219
- // reason, and the bullet key absent too on a record with no Risks section.
220
- ...(wordCap !== undefined && { recordOverWords: overWords }),
221
- ...(riskCap !== undefined &&
222
- risksBullets !== undefined && {
223
- recordOverRisks: risksBullets > riskCap ? 1 : 0,
224
- }),
225
- recordUnverifiable: unverifiable,
226
- recordUnchecked: unchecked,
227
- }
228
- }
229
-
230
142
  /**
231
143
  * Reads the requirements record's one cap, or nothing when the record is
232
144
  * absent, states no cap, or the run never opened it.
233
145
  *
234
- * The key is optional rather than required the way `architecture` is, so a
235
- * record from a binary predating it still counts its other findings.
146
+ * The key is optional, so a record from a binary predating it still counts
147
+ * its other findings.
236
148
  */
237
149
  function requirementsCounts(
238
150
  root: Record<string, unknown>,
@@ -301,8 +213,6 @@ function contextCounts(record: unknown): Record<string, number> | undefined {
301
213
  bareReferences += bare
302
214
  }
303
215
 
304
- const architecture = architectureCounts(root)
305
- if (architecture === undefined) return undefined
306
216
  const requirements = requirementsCounts(root)
307
217
 
308
218
  const counts = allOf({
@@ -314,9 +224,7 @@ function contextCounts(record: unknown): Record<string, number> | undefined {
314
224
  })
315
225
 
316
226
  if (counts === undefined) return undefined
317
- return architecture === 'absent'
318
- ? { ...counts, ...requirements }
319
- : { ...counts, ...architecture, ...requirements }
227
+ return { ...counts, ...requirements }
320
228
  }
321
229
 
322
230
  function markdownCounts(record: unknown): Record<string, number> | undefined {
@@ -560,7 +468,6 @@ const RECORD_KINDS: readonly (readonly [string, Corpus])[] = [
560
468
  ['plans', 'per-machine'],
561
469
  ['groundwork', 'per-machine'],
562
470
  ['intake', 'per-machine'],
563
- ['memory', 'per-machine'],
564
471
  ['standards', 'tracked'],
565
472
  ['teach', 'per-machine'],
566
473
  ]
@@ -587,8 +494,8 @@ export const AUDITS: readonly AuditSpec[] = [
587
494
  corpus: 'tracked',
588
495
  // The one reason this verb refuses for that is an absence rather than a
589
496
  // break, on the same test the reach check and the skill audit take: no
590
- // target adopts `canon/context/`, an older install's `.canon/diagrams/`,
591
- // and `canon/wireframes/` all at once, so without the allowance every such
497
+ // target adopts `canon/context/` and an older install's `.canon/diagrams/`
498
+ // both, so without the allowance every such
592
499
  // project reports the verb unmeasured on every run and never changes.
593
500
  absentReasons: ['no-folders'] satisfies ContextAuditRefusal[],
594
501
  counts: contextCounts,
@@ -10,19 +10,10 @@ export const AUTHORING_CASES: readonly SkillCase[] = [
10
10
  'Wire up a GitHub Actions pipeline with parallel jobs for this repo.',
11
11
  expect: 'ci-workflow',
12
12
  },
13
- {
14
- prompt:
15
- 'Write me a headless automation script with no interactive prompts.',
16
- expect: 'bash-cli-script',
17
- },
18
13
  {
19
14
  prompt: 'Scaffold a brand-new SKILL.md for this capability.',
20
15
  expect: 'create-skill',
21
16
  },
22
- {
23
- prompt: 'Write a fresh authoring convention as a new standard file.',
24
- expect: 'create-standard',
25
- },
26
17
  {
27
18
  prompt:
28
19
  "The docs folder and README are stale against what's on main, refresh them.",
@@ -47,20 +38,11 @@ export const AUTHORING_CASES: readonly SkillCase[] = [
47
38
  'Write a context entry for the payments domain, there is no canon/context page for it yet.',
48
39
  expect: 'draft-doc',
49
40
  },
50
- {
51
- prompt:
52
- 'Draft a wireframe for the settings panel, nothing under canon/wireframes covers that surface yet.',
53
- expect: 'draft-doc',
54
- },
55
41
  {
56
42
  prompt:
57
43
  'Write a wiki reference page for Claude Code output styles, no page covers that subject yet.',
58
44
  expect: 'draft-doc',
59
45
  },
60
- {
61
- prompt: 'Say what that dense answer actually means in plain terms.',
62
- expect: 'restate-plainly',
63
- },
64
46
  {
65
47
  prompt: 'This passage reads flat and robotic, give it some real cadence.',
66
48
  expect: 'write-human',
@@ -22,19 +22,10 @@ export const MISC_CASES: readonly SkillCase[] = [
22
22
  'This project has no logo yet. Draft one and give me a social card to go with it.',
23
23
  expect: 'draft-identity',
24
24
  },
25
- {
26
- prompt:
27
- "I found two sites whose look I want us to draw from. Put them side by side and let's settle which one the design should follow before anyone writes a token.",
28
- expect: 'sketch-design',
29
- },
30
25
  {
31
26
  prompt:
32
27
  'Draw the signup screen as a frame on the canvas, then restyle the element I just selected there.',
33
- expect: 'canvas',
34
- },
35
- {
36
- prompt: 'Fire up the dev server the way this project documents it.',
37
- expect: 'project-commands',
28
+ expect: 'canvas-board',
38
29
  },
39
30
  {
40
31
  prompt:
@@ -104,10 +95,6 @@ export const MISC_CASES: readonly SkillCase[] = [
104
95
  'The old parseDate helper was replaced months ago. Can I just delete it, or could a few files still be calling it?',
105
96
  expect: 'deprecation-migration',
106
97
  },
107
- {
108
- prompt: 'Does our github about text still match what the readme says?',
109
- expect: 'repo-metadata',
110
- },
111
98
  {
112
99
  prompt: 'Connect this repo to Cloudflare Pages and set up the deploy.',
113
100
  expect: 'deploy-app',
@@ -41,18 +41,14 @@ export const SETUP_CASES: readonly SkillCase[] = [
41
41
  expect: 'canon-cli',
42
42
  },
43
43
  {
44
- prompt:
45
- 'Something about the toolkit itself is broken, write it up and send it back to the maintainers.',
46
- expect: 'canon-feedback',
44
+ prompt: 'Which canon command tells me if my markdown breaks the rules?',
45
+ expect: 'canon-cli',
47
46
  },
48
47
  {
49
48
  prompt:
50
- "I don't know which specific toolkit skill I need, just handle it for me.",
51
- expect: 'canon-operator',
49
+ 'Something about the toolkit itself is broken, write it up and send it back to the maintainers.',
50
+ expect: 'canon-feedback',
52
51
  },
53
- // The performing skill wins a phrase naming its operation over the front
54
- // door's own routing framing, even though canon-operator's description
55
- // quotes a phrase near this one. See canon/context/cli/audits/routing.md.
56
52
  {
57
53
  prompt:
58
54
  "Whatever the right toolkit command is, get this project's rules installed.",
@@ -60,20 +56,11 @@ export const SETUP_CASES: readonly SkillCase[] = [
60
56
  },
61
57
  {
62
58
  prompt:
63
- 'Work through the open feedback issues on the toolkit repo one by one.',
59
+ 'File the open feedback issues on the toolkit repo into an intake folder.',
64
60
  expect: 'canon-feedback-triage',
65
61
  },
66
- // The outbound direction is what separates this from the front door above.
67
- // canon-operator runs inside one project the session already stands in, and
68
- // this reaches every project the toolkit installed into from the toolkit.
69
- {
70
- prompt:
71
- 'Take this change out to every project that installed the toolkit and get each one to a pull request.',
72
- expect: 'canon-rollout',
73
- },
74
- // Reporting per domain is what separates this from canon-operator, which
75
- // diagnoses on the way to running the operation an intent named. This answers
76
- // one fixed question across a fixed domain list and repairs nothing.
62
+ // This answers one fixed question across a fixed domain list and repairs
63
+ // nothing, which is what separates it from the setup skill above.
77
64
  {
78
65
  prompt:
79
66
  'Report what this project has fallen behind the toolkit on, domain by domain, and fix nothing.',
@@ -20,10 +20,6 @@ export const WORKFLOW_CASES: readonly SkillCase[] = [
20
20
  'Run the whole implement, verify, review, and ship pipeline for the approved plan.',
21
21
  expect: 'auto-ship',
22
22
  },
23
- {
24
- prompt: "Pull together a design system from what's already in the app.",
25
- expect: 'design-extract',
26
- },
27
23
  {
28
24
  prompt: 'Draw me a diagram of how the pieces of this system connect.',
29
25
  expect: 'draft-figure',
@@ -35,7 +31,7 @@ export const WORKFLOW_CASES: readonly SkillCase[] = [
35
31
  },
36
32
  {
37
33
  prompt:
38
- 'Fold what we decided this session into the context entries and mark off what shipped on the task board.',
34
+ 'Fold what we decided this session into the context entries before this branch goes out.',
39
35
  expect: 'context-fold',
40
36
  },
41
37
  {
@@ -61,20 +57,6 @@ export const WORKFLOW_CASES: readonly SkillCase[] = [
61
57
  prompt: 'Walk me through the open intake items so I can decide on each.',
62
58
  expect: 'plan-intake-answer',
63
59
  },
64
- {
65
- prompt:
66
- "Draft a diff-based proposal for tightening this passage in the standard, don't just edit it.",
67
- expect: 'markdown-propose',
68
- },
69
- {
70
- prompt: 'Pull the durable lessons out of this session before it ends.',
71
- expect: 'memory-capture',
72
- },
73
- {
74
- prompt:
75
- 'Go through the memory folder and propose what to do with each entry.',
76
- expect: 'memory-review',
77
- },
78
60
  {
79
61
  prompt:
80
62
  'Take on the orchestrator role and coordinate the parallel feature builds.',
@@ -104,11 +86,6 @@ export const WORKFLOW_CASES: readonly SkillCase[] = [
104
86
  'The screencast draft is finished. Turn it into an actual video now.',
105
87
  expect: 'record-screencast',
106
88
  },
107
- {
108
- prompt:
109
- 'Look over everything that changed on this branch for bugs and edge cases.',
110
- expect: 'review-branch',
111
- },
112
89
  {
113
90
  prompt:
114
91
  'What should a review of a change look for beyond bugs, and how much evidence does a finding need?',
@@ -128,11 +105,6 @@ export const WORKFLOW_CASES: readonly SkillCase[] = [
128
105
  prompt: 'Draft me a script with beats for a screencast recording.',
129
106
  expect: 'draft-screencast',
130
107
  },
131
- {
132
- prompt:
133
- "Check whether my installed Claude seed docs have drifted from the toolkit's.",
134
- expect: 'seed-sync',
135
- },
136
108
  {
137
109
  prompt: 'Turn this topic into a slide deck I can render.',
138
110
  expect: 'draft-slides',
@@ -155,6 +127,11 @@ export const WORKFLOW_CASES: readonly SkillCase[] = [
155
127
  prompt: 'Open a new entry on the task board for this piece of work.',
156
128
  expect: 'task-board',
157
129
  },
130
+ {
131
+ prompt:
132
+ 'This branch finished the pagination work, so tick off whichever board outcomes it actually delivered.',
133
+ expect: 'task-complete',
134
+ },
158
135
  {
159
136
  prompt: 'Open a learning workspace so I can study this topic properly.',
160
137
  expect: 'teach-workspace',
@@ -173,11 +150,6 @@ export const WORKFLOW_CASES: readonly SkillCase[] = [
173
150
  prompt: 'Tell me the paint and layout cost of this page right now.',
174
151
  expect: 'ux-measure',
175
152
  },
176
- {
177
- prompt:
178
- 'Sit with me while I go through my whole list of app findings one at a time, and write down each pick with what it beat.',
179
- expect: 'ux-walkthrough',
180
- },
181
153
  {
182
154
  prompt:
183
155
  'I am building this branch for another session. What am I on the hook for, and what is off limits?',
@@ -17,13 +17,7 @@ const HOOKS = 'hooks'
17
17
  * stem in an older layout, which is what `@/sync/layout` pairs a target against
18
18
  * to find a superseded artifact.
19
19
  */
20
- export const SUBDIRS: readonly string[] = [
21
- HOOKS,
22
- 'context',
23
- 'memory',
24
- 'tasks',
25
- 'wireframes',
26
- ]
20
+ export const SUBDIRS: readonly string[] = [HOOKS, 'context', 'tasks']
27
21
 
28
22
  export type SeedScope = 'claude' | 'root'
29
23
 
@@ -7,7 +7,7 @@ import { bodyLines, maskDisplayed } from '@/markdown/scan'
7
7
  /** Returned when a skill folder carries no `REQUIREMENT.md`, the gating check. */
8
8
  export const EXIT_MISSING_REQUIREMENT = 2
9
9
 
10
- /** The description ceiling stated in the frontmatter rules of `standards/skill.md`. */
10
+ /** The description ceiling stated in the frontmatter rules of `claude/skills/create-skill/references/skill.md`. */
11
11
  export const DESCRIPTION_LIMIT = 1024
12
12
 
13
13
  /** The two headings the requirement template declares, matched at any level. */
@@ -27,7 +27,7 @@ export const CORPORA: readonly string[] = [
27
27
  ]
28
28
 
29
29
  /**
30
- * The practice skills `standards/skill-practice.md` describes, keyed by corpus-relative
30
+ * The practice skills `claude/skills/create-skill/references/skill-practice.md` describes, keyed by corpus-relative
31
31
  * folder rather than by name, so a target's own `.claude/skills/` folder that
32
32
  * shares a name is never swept in. The list lives here rather than in a skill's
33
33
  * frontmatter because a skill declaring its own kind could exempt itself.
@@ -160,7 +160,7 @@ interface SkillText {
160
160
  }
161
161
 
162
162
  /**
163
- * Measures both skill corpora against the rules `standards/skill.md` states
163
+ * Measures both skill corpora against the rules `claude/skills/create-skill/references/skill.md` states
164
164
  * mechanically. A corpus the project does not carry is skipped rather than
165
165
  * reported, so a target holding only `.claude/skills/` reads as in scope.
166
166
  *
package/src/cli/help.ts CHANGED
@@ -10,6 +10,8 @@ type HelpStream = { isTTY?: boolean }
10
10
 
11
11
  // The grouping mirrors the README's domain table and has no other source, so a
12
12
  // command added to the program needs a row here or help-option.test.ts fails.
13
+ // A row here also needs a `canon <verb>` line in claude/skills/canon-cli, or a
14
+ // name in TOOLKIT_ONLY in canon-cli-skill.test.ts, which reads this list.
13
15
  export const COMMAND_GROUPS: { title: string; rows: CommandRow[] }[] = [
14
16
  {
15
17
  title: 'Project',
@@ -25,7 +27,7 @@ export const COMMAND_GROUPS: { title: string; rows: CommandRow[] }[] = [
25
27
  title: 'Domains',
26
28
  rows: [
27
29
  ['gov [cmd]', 'Governance rules (install, sync, list)'],
28
- ['standards [cmd]', 'Standards (install, sync, list, <name>)'],
30
+ ['standards [cmd]', 'Standards (list, <name>)'],
29
31
  ['tooling [cmd]', 'Tooling stacks (sync, ref, create)'],
30
32
  ['claude [cmd]', 'Claude workflow (init, sync, setup)'],
31
33
  ['wiki [cmd]', 'Wiki pages (init)'],
@@ -58,10 +60,9 @@ export const COMMAND_GROUPS: { title: string; rows: CommandRow[] }[] = [
58
60
  ['sessions [cmd]', 'Resolve live sessions to worktree and branch'],
59
61
  ['worktrees [cmd]', 'Reclaim worktrees whose branches merged'],
60
62
  ['hooks [cmd]', 'Run the steps a git hook drives (post-merge)'],
61
- ['autoship [cmd]', 'Decide whether a changed set needs review'],
62
63
  ['pr [cmd]', 'Read a pull request (key-changes, head, checks)'],
63
64
  ['upstream [cmd]', 'Read Claude Code releases (fetch, catalog, advance)'],
64
- ['feedback', 'Write toolkit feedback from stdin'],
65
+ ['feedback', 'File toolkit feedback as a GitHub issue'],
65
66
  ],
66
67
  },
67
68
  {
@@ -75,7 +76,6 @@ export const COMMAND_GROUPS: { title: string; rows: CommandRow[] }[] = [
75
76
  ['comments [cmd]', 'Measure comment density and trend (scan)'],
76
77
  ['context [cmd]', 'Report context folder health (audit)'],
77
78
  ['markdown [cmd]', 'Report markdown against the standards (audit)'],
78
- ['repo [cmd]', 'Remote metadata (metadata propose, apply)'],
79
79
  ['census [path]', 'Report file count, extensions, and line totals'],
80
80
  ],
81
81
  },
@@ -128,7 +128,6 @@ const EXAMPLES = [
128
128
  'canon secrets scan --json',
129
129
  'canon deps audit --json',
130
130
  'canon labels audit --json',
131
- 'canon repo metadata propose --json',
132
131
  'canon census --json',
133
132
  'canon audits run --json',
134
133
  'canon gate run --all --no-write',
package/src/cli/ui.ts CHANGED
@@ -154,9 +154,8 @@ export function isNonInteractive(): boolean {
154
154
  }
155
155
 
156
156
  /**
157
- * `nonInteractiveDefault` opts a prompt into the `select_option` behavior from
158
- * `scripts/lib/ui.sh`, where `CANON_NON_INTERACTIVE=1` resolves to the first
159
- * option instead of failing. Callers that would rather fail loudly than pick
157
+ * `nonInteractiveDefault` opts a prompt into resolving to its first option
158
+ * under `CANON_NON_INTERACTIVE=1` instead of failing. Callers that would rather fail loudly than pick
160
159
  * for the user leave it off.
161
160
  */
162
161
  export async function select<Value>(opts: {
package/src/cli.ts CHANGED
@@ -37,9 +37,7 @@ import { register as gate } from '@/commands/gate'
37
37
  import { register as secrets } from '@/commands/secrets'
38
38
  import { register as deps } from '@/commands/deps'
39
39
  import { register as labels } from '@/commands/labels'
40
- import { register as autoship } from '@/commands/autoship'
41
40
  import { register as pr } from '@/commands/pr'
42
- import { register as repo } from '@/commands/repo'
43
41
  import { register as census } from '@/commands/census'
44
42
  import { register as upstream } from '@/commands/upstream'
45
43
  import { register as targets } from '@/commands/targets'
@@ -99,9 +97,7 @@ hooks(program)
99
97
  secrets(program)
100
98
  deps(program)
101
99
  labels(program)
102
- autoship(program)
103
100
  pr(program)
104
- repo(program)
105
101
  census(program)
106
102
  upstream(program)
107
103
  audits(program)