@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
@@ -1,53 +1,96 @@
1
1
  ---
2
2
  name: canon-cli
3
- description: Reference for what a canon verb does before you run it. Run `canon docs agents` for the full command catalog, `canon docs` for any other reference doc, and read this skill's own table for what a sync or install command overwrites, merges, or leaves untouched in a target project. Use when asked "which canon command do I run", "is there a doc for X", "will this overwrite my changes", or before running `canon tooling`, `canon standards`, `canon claude sync`, or `canon init`. Do NOT use to execute a sync, an install, or a docs lookup, only to know which command answers the question.
3
+ description: Routes a job to the `canon` verb that does it, and warns which verbs can lose a project's edits before one runs. Use when asked "which canon command does X", "is there a verb for X", "which command tells me if X", "will this overwrite my changes", or before running `canon sync`, `canon gov sync`, `canon tooling sync`, `canon design sync`, `canon migrate`, or `canon indexes regen`. Do NOT use to execute a verb, only to pick one and know what it costs.
4
4
  metadata:
5
5
  family: answer
6
6
  ---
7
7
 
8
- # Toolkit CLI contract
8
+ # Toolkit CLI router
9
9
 
10
- Consult before running an unfamiliar `canon` verb, before a sync or install, or when asked "will this overwrite my changes". This skill is reference only. It never runs a sync or an install.
10
+ Consult to pick the `canon` verb for a job, and before running a verb that writes. This skill is reference only. It never runs a verb.
11
11
 
12
- ## Verb catalog and reference docs
12
+ ## Find the verb
13
13
 
14
- - Run `canon docs agents` for the full command catalog and invocation contract, rather than guessing at a verb from its name.
15
- - Run `canon docs list` for every other reference doc, then `canon docs <topic>` by name.
16
- - State neither list here. Both read live off the CLI, and a copy in this body ships on a different cadence than the commands it names.
14
+ - Each row below names a verb by its job. Subcommands and flags are not listed here, so read them where they are kept.
15
+ - Run `canon <verb> --help` for a verb's subcommands and flags.
16
+ - Run `canon docs agents` for the invocation contract behind every verb, and `canon docs list` for every other reference doc, then `canon docs <topic>` by name.
17
17
 
18
- ## Overwrite contract
18
+ ## Project setup
19
19
 
20
- | Surface | Command | Effect on existing files |
21
- | --------------------------------------------------------------------------------------------- | -------------------- | --------------------------------------------------------------------------- |
22
- | Golden configs | `canon tooling sync` | Overwritten once `--write` is passed. Local edits are lost. |
23
- | Dictionary seeds (`.cspell/*.txt`) | `canon tooling sync` | Merged and sorted. Existing terms preserved. |
24
- | Other seeds (`cspell.json`, `.lintstagedrc`, base's `verify.yml` and PR template, state docs) | `canon tooling sync` | Copy-once. Dropped on first install, untouched after. |
25
- | Standards | none | Nothing installs. `canon standards <name>` reads and never writes. |
26
- | Seed docs and `CLAUDE.md` | `canon claude init` | Skipped when present. Never overwritten. |
27
- | Seed docs | `canon claude sync` | Never touched. Only `.gitignore` is written. |
28
- | Stack references | none | Nothing installs. `canon tooling reference <stack>` reads and never writes. |
29
- | `.gitignore`, deps, scripts | any sync | Additive. Existing entries preserved. Deps re-pin on major skew. |
30
- | Generated `index.md` | any sync or regen | Rewritten from target state. Hand edits are lost. |
20
+ | Job | Verb |
21
+ | -------------------------------------------- | --------------- |
22
+ | Bootstrap a project with toolkit domains | `canon init` |
23
+ | Bring every installed domain current | `canon sync` |
24
+ | Reinstall the CLI itself | `canon upgrade` |
25
+ | Move a project off a retired name or layout | `canon migrate` |
26
+ | List the projects the toolkit installed into | `canon targets` |
31
27
 
32
- ## What a tooling sync can overwrite
28
+ ## Domains
33
29
 
34
- A golden config is any file a stack ships under `configs/`, and the category is wider than its name suggests. It carries the phase-label gate workflow, the web stack's CI workflow, the git hooks, the end-to-end harness, the shell scripts under `scripts/`, and the editor settings, alongside the linters and compilers a reader expects. A stack inherits its parent's configs, so syncing `astro` also writes everything `web` and `base` hold.
30
+ | Job | Verb |
31
+ | --------------------------------------------------------------- | ----------------- |
32
+ | Install or sync governance rules | `canon gov` |
33
+ | Read an authoring standard by name | `canon standards` |
34
+ | Sync a tooling stack's configs and seeds, or read its reference | `canon tooling` |
35
+ | Set up or sync the Claude workflow | `canon claude` |
36
+ | Scaffold a wiki | `canon wiki` |
37
+ | Regenerate the `index.md` files | `canon indexes` |
38
+ | Read a toolkit reference doc | `canon docs` |
35
39
 
36
- No list of those paths ships in this body, since a copy would go stale on a different cadence than the stacks. Run `canon tooling diff <stack> <target>` for the list resolved against a real target. It reports every path, writes nothing, and exits 1 when any differs. A binary older than that verb answers the same question through `canon tooling sync <stack> <target> --check`, which names each file it would replace.
40
+ ## Author and render
37
41
 
38
- ## Rules
42
+ Each verb here has a skill that owns the job. Load the skill rather than driving the verb by hand.
39
43
 
40
- - `canon tooling sync` writes nothing until `--write` is passed. A headless run without it reports and exits 1, so a script that forgets the flag fails rather than silently skipping the sync.
41
- - Run `--check` first when the project carries local edits to a config the stack ships. The report names each file it would replace, which is the warning the user needs before the write.
42
- - An interactive run still prompts. `--write` skips the prompt, and `--check` refuses to write even with a TTY.
43
- - Seeds are user-owned. Dictionary `.txt` files merge and sort. Other seeds are copy-once, so re-seeding a structured file means deleting it and syncing again.
44
- - No command writes a standard into a project. A `.claude/standards/` folder from an older toolkit is inert, and deleting it costs nothing.
45
- - For section-level customizations of a seed doc, use the `seed-sync` skill, not `canon ... sync`. It diffs per section and preserves edits.
44
+ | Job | Verb | Skill |
45
+ | -------------------------------------------- | ------------------- | --------------------------- |
46
+ | Render the design system | `canon design` | `canon:draft-figure` |
47
+ | Render a slide deck | `canon slides` | `canon:draft-slides` |
48
+ | Render an HTML source to a PNG | `canon capture` | `canon:draft-identity` |
49
+ | Serve a directory and print the link | `canon serve` | none |
50
+ | Record a running app | `canon demo` | `canon:draft-screencast` |
51
+ | Report one computed property across routes | `canon inventory` | `canon:target-check` |
52
+ | Walk a page through interactions and measure | `canon drive` | `canon:ux-measure` |
53
+ | Fetch a YouTube transcript | `canon transcripts` | `canon:youtube-transcripts` |
54
+ | Open a learning workspace | `canon teach` | `canon:teach-workspace` |
55
+ | Work on the local canvas | `canon canvas` | `canon:canvas-board` |
46
56
 
47
- ## CLAUDE.md
57
+ ## Session and ship
48
58
 
49
- - `CLAUDE.md` is a copy-once seed. No `canon` sync command ever updates it. Reconcile it with the `seed-sync` skill, which diffs the preamble and each section and preserves customizations by default.
59
+ | Job | Verb |
60
+ | ---------------------------------------------- | ----------------- |
61
+ | Read and close tasks on the board | `canon tasks` |
62
+ | Read and answer intake folders | `canon intake` |
63
+ | Validate, size, and move session records | `canon records` |
64
+ | Resolve live sessions to a worktree and branch | `canon sessions` |
65
+ | Reclaim worktrees whose branches merged | `canon worktrees` |
66
+ | Read a pull request | `canon pr` |
67
+ | File toolkit feedback as an issue | `canon feedback` |
68
+
69
+ ## Reports
70
+
71
+ | Job | Verb |
72
+ | ----------------------------------------- | ---------------- |
73
+ | Scan the tree for credentials | `canon secrets` |
74
+ | Read the dependency set for advisories | `canon deps` |
75
+ | Check a changed set against the label map | `canon labels` |
76
+ | Measure comment density | `canon comments` |
77
+ | Report context folder health | `canon context` |
78
+ | Check markdown against the standards | `canon markdown` |
79
+ | Count files, extensions, and lines | `canon census` |
80
+
81
+ ## Verbs that can lose your edits
82
+
83
+ Read the doc each line names before running one of these. `canon docs install-and-sync` covers the governance and design verbs, `canon docs sync` covers tooling, `canon docs indexes` covers regeneration, and `canon docs migrate` covers the migrate verbs. Run the `--check` or `--dry-run` form first where the verb has one.
84
+
85
+ - `canon sync` runs every installed domain's sync, so it carries each risk below.
86
+ - `canon gov sync` replaces a rule you edited and deletes a rule the toolkit retired, edited or not.
87
+ - `canon tooling sync --write` replaces every golden config a stack ships. Seeds are copy-once and dictionaries merge. Nothing writes without the flag. See `canon docs sync`.
88
+ - `canon design sync` replaces the shipped design files and leaves `.claude/design/project/` alone.
89
+ - `canon migrate --write` rewrites files that cite a retired name or layout. It reports and writes nothing without the flag. See `canon docs migrate`.
90
+ - `canon indexes regen` rewrites each generated `index.md` from the folder's current state, so a hand edit there is lost. See `canon docs indexes`.
91
+
92
+ No command writes a standard into a project, so `canon standards` is safe to run. `CLAUDE.md` and the other seed docs are copy-once, and no sync updates them. Merge those by hand against the toolkit copy.
50
93
 
51
94
  ## Source of truth
52
95
 
53
- - Full semantics live in the toolkit's own context entries. This skill is the target-session summary. When they disagree, the context docs win.
96
+ - `canon docs install-and-sync` states what each install and sync verb writes, refuses, or leaves alone. `canon docs indexes` and `canon docs migrate` state the same for their verbs. When a doc and this skill disagree, the doc wins.
@@ -19,7 +19,7 @@ The last failure is the session's own effort. Asked to report, a session starts
19
19
  - Name the surface and its type, since the toolkit routes on that rather than on the symptom
20
20
  - Write the stated fallback for a field the session cannot fill, so an empty field reads as absent rather than as unreported
21
21
  - Open a GitHub issue on the toolkit repo through the CLI so the report lands where triage reads it, and print the returned URL on its own line
22
- - Say which file and which reason when the issue call fails and the report falls back to a local folder, since a silent fallback leaves it where nothing reads it
22
+ - Surface the block and the reason when the issue call fails, since a failure that prints nothing leaves the report where nothing reads it
23
23
  - Hold a report the operator marks sensitive, since the issue is public
24
24
  - Fall back to printing the block when the CLI is absent, so the report still exists
25
25
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: canon-feedback
3
- description: Format a report about something broken, missing, or off in canon and open it as a GitHub issue on the toolkit repo via `canon feedback --github`, where the toolkit's triage reads it. Use when asked to "send this to the toolkit", "report this to canon", "file toolkit feedback", or "give the toolkit feedback about X". Do NOT use for general complaints about other tooling, IDE issues, or in-project bugs that do not implicate canon surfaces.
3
+ description: Format a report about something broken, missing, or off in canon and open it as a GitHub issue on the toolkit repo via `canon feedback`, where the toolkit's triage reads it. Use when asked to "send this to the toolkit", "report this to canon", "file toolkit feedback", or "give the toolkit feedback about X". Do NOT use for general complaints about other tooling, IDE issues, or in-project bugs that do not implicate canon surfaces.
4
4
  metadata:
5
5
  family: upkeep
6
6
  ---
@@ -73,10 +73,10 @@ command -v canon >/dev/null 2>&1
73
73
 
74
74
  The destination is a public GitHub issue on the toolkit repo, so the report leaves the machine. Hold it and ask when the operator has marked it sensitive, and never send it on a guess.
75
75
 
76
- Before the pipe below, run the scan in `${CLAUDE_SKILL_DIR}/../../standards/publish.md` against the composed block, phase-label half included. Nothing else checks what reaches the remote, so this scan is the only gate.
76
+ Before the pipe below, run the scan in `${CLAUDE_SKILL_DIR}/../git-pr/references/publish.md` against the composed block, phase-label half included. Nothing else checks what reaches the remote, so this scan is the only gate.
77
77
 
78
78
  ```bash
79
- cat <<'EOF' | canon feedback --github
79
+ cat <<'EOF' | canon feedback
80
80
  ## Toolkit feedback
81
81
 
82
82
  ...
@@ -85,20 +85,17 @@ EOF
85
85
 
86
86
  The CLI opens a GitHub issue on the toolkit repo, labeled `feedback` and each domain label the surface type names, such as `skills` for a plugin skill, and prints the issue URL, which this skill reports back on its own line. It needs `gh` authenticated. `git-issue` is not the route, since it files on the current repository and this report belongs on the toolkit's.
87
87
 
88
- From a toolkit checkout, a call that produces no URL falls back to `.canon/feedback/feedback-<slug>-<ts>.md` and prints the reason on stderr. Say so in the same reply, naming the file and the reason, since a silent fallback leaves the report where nothing reads it. A target project has no such folder, so a failed call there prints the block in chat.
88
+ Read the outcome off stdout, never off the exit code, since a shell wrapper can flatten it. Stdout takes one of three shapes:
89
+
90
+ - A line opening with `https://` is the filed issue. Report the URL.
91
+ - A block opening with `## Toolkit feedback` is a failed call. The reason is on stderr, so show the block in chat with it and `📋 Paste this into an issue at https://github.com/erclx/canon/issues/new`.
92
+ - Empty stdout is a refusal. Step 3 says how to repair it from stderr.
89
93
 
90
94
  If `canon` is not on PATH, fall back: print the block in chat and tell the user `📋 Copy the block above into a toolkit-repo session.`
91
95
 
92
96
  ## Step 3: read what the CLI said back
93
97
 
94
- The command exits 1 and writes nothing on a report it refuses, so a non-zero run is a block to repair rather than a report that shipped. Two refusals reach this step:
95
-
96
- - A named missing field. Add that heading with a real value or its stated fallback, then re-run. Do not report the defect as filed.
97
- - `gh` absent or its call failed. The stderr names which, since installing `gh` and fixing an authenticated call are different repairs. Fall back to printing the block in chat.
98
-
99
- A `--github` run from a toolkit checkout whose GitHub call fails warns and writes local scratch instead, which is a report filed on the other route rather than a failure.
100
-
101
- ## Notes
98
+ A report that was not filed reads one of two ways on stdout, and stderr carries the reason in both:
102
99
 
103
- - `canon feedback` resolves the toolkit root from the running `canon` binary's source location. If multiple toolkit clones exist on the machine, the first `canon` on PATH wins.
104
- - The local folder is a fallback for a failed issue call, and nothing reads it on a schedule. The issue is the durable record.
100
+ - Empty stdout, with a named missing field on stderr. Add that heading with a real value or its stated fallback, then re-run. Do not report the defect as filed.
101
+ - The block on stdout, with `gh` absent or its call failed on stderr. The stderr names which, since installing `gh` and fixing an authenticated call are different repairs. Show the block in chat with the reason and the paste line from Step 2.
@@ -1,32 +1,30 @@
1
1
  ---
2
2
  name: canon-feedback-triage
3
- description: Why the feedback queue is read from GitHub rather than local scratch, and why triage routes instead of implementing
3
+ description: Why the feedback queue is read from GitHub rather than local scratch, and why triage files measured items instead of routing or implementing
4
4
  ---
5
5
 
6
6
  # Canon feedback triage requirement
7
7
 
8
8
  ## Gap
9
9
 
10
- Without this skill, the feedback queue fills and nothing drains it. Reports arrive from projects the toolkit never sees, and a queue nobody reads on a schedule is the same as no queue. The local review folder looks like the right place to read, and it is the wrong one, because that content is per-machine session scratch that any cleanup removes.
10
+ Without this skill, the feedback queue fills and nothing drains it. Reports arrive from projects the toolkit never sees, and a queue nobody reads on a schedule is the same as no queue. A local folder looks like the right place to read, and it is the wrong one, because that content is per-machine session scratch that any cleanup removes.
11
11
 
12
- Triage fails three ways once it starts. Unrelated issues get batched into one branch, so review has to judge several unconnected changes at once and can approve none of them cleanly. An issue needing a plan gets implemented inline from a paragraph of description, which skips the step where scope is argued. And an issue whose report contradicts itself gets a guess rather than a question, so the fix addresses a defect nobody confirmed.
13
-
14
- The queue also fails to drain even when the work ships. A fix merged with no link back leaves its issue open, and the next triage re-reads work already done.
12
+ Triage fails three ways once it starts. An issue gets routed straight to a fix from a paragraph of description, which skips the step where scope is argued and the operator's call. An issue whose report contradicts itself gets a guess rather than a question, so the fix addresses a defect nobody confirmed. And the same issue gets filed twice, because two passes cannot see that the board already carries it.
15
13
 
16
14
  ## Must
17
15
 
18
16
  - Read the durable queue rather than local session scratch
19
- - Classify each issue in a fixed order and stop at the first match, stating the class and its one-line reason before routing
20
- - Route to the skills that own planning, branch naming, and the pull request body rather than restating them
21
- - Keep one issue to one branch and one pull request
22
- - Link a fix to its issue so merge closes it, and preserve that link when the body is regenerated
23
- - Ask on the issue when the report is unreadable, then move on rather than blocking the batch
17
+ - File one measured item per open issue into an intake folder, headed so an answer finds its issue
18
+ - File every open issue the board does not already carry, and name each skipped issue with its carrier
19
+ - Measure each claim against the tree rather than carrying the issue's figures forward
20
+ - Claim the folder through the CLI rather than picking an ordinal by hand
24
21
 
25
22
  ## Must not
26
23
 
27
- - Batch unrelated fixes into one branch
28
- - Implement a plan-worthy issue, which stops at the plan handed back to the user
29
- - Close an issue whose pull request has yet to merge
24
+ - Post to the remote, whether a comment, a close, or a label
25
+ - Implement a fix or write a plan, which the answered item routes to
26
+ - Fill an answer slot, or read an empty one as agreement
27
+ - Write outside the folder it claimed
30
28
 
31
29
  ## Guards
32
30
 
@@ -36,5 +34,6 @@ The queue also fails to drain even when the work ships. A fix merged with no lin
36
34
  ## Out of scope
37
35
 
38
36
  - Filing new feedback: `canon-feedback`
39
- - Writing the plan a plan-worthy issue needs: `plan-feature`
37
+ - Answering the filed items: `plan-intake-answer`
38
+ - Writing the plan a plan-worthy item needs: `plan-feature`
40
39
  - Triage of issues carrying any other label, which surface here by design only under the feedback label
@@ -1,67 +1,86 @@
1
1
  ---
2
2
  name: canon-feedback-triage
3
- description: Triage open GitHub issues labeled `feedback` in the toolkit repo. List them, pick one, classify it as a direct fix or plan-worthy work, route to the right skill, and link the issue for close-out. Use when asked to "triage toolkit feedback", "work through the feedback issues", "process feedback issues", or "what feedback is open". Do NOT use to file new feedback (that is `canon-feedback`), or for general GitHub issue triage unrelated to toolkit feedback.
3
+ description: Files every open GitHub issue labeled `feedback` on the toolkit repo into an intake folder as one measured item each, skipping any issue the board already carries. Use when asked to "triage toolkit feedback", "work through the feedback issues", "process feedback issues", or "what feedback is open". Do NOT use to file new feedback (that is `canon-feedback`), to answer the filed items (that is `plan-intake-answer`), or for general GitHub issue triage unrelated to toolkit feedback.
4
4
  metadata:
5
5
  family: upkeep
6
6
  ---
7
7
 
8
8
  # Canon feedback triage
9
9
 
10
- Consume the feedback queue that `canon feedback --github` fills. Turn an open `feedback` issue into a scoped fix or a plan, then link the issue so merge closes it.
10
+ Consume the feedback queue that `canon feedback` fills. Each open `feedback` issue is measured against the tree and filed as one item for the operator, who answers it before anything is built.
11
11
 
12
- Run from the toolkit repo root. This skill reads GitHub issues, not local `.canon/review/` files. Those are ephemeral session scratch. The durable, cross-project queue is GitHub.
12
+ The record is an ordinary intake folder at `.canon/intake/<nn>-feedback-triage/`. Read `${CLAUDE_SKILL_DIR}/../plan-intake/references/intake.md` before writing any file in it, since it holds the item format, the frontmatter, the index shape, and the answer contract this skill is bound by.
13
+
14
+ Run from the toolkit repo root. This skill reads GitHub issues and writes only inside its claimed folder. It posts no comment, close, or label to GitHub.
13
15
 
14
16
  ## Guards
15
17
 
18
+ - Resolve `.canon/tasks/` and `.canon/intake/` 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.
16
19
  - If `gh` is not on PATH, stop: `❌ gh CLI not found. Install it to read feedback issues.`
17
20
  - If `gh auth status` fails, stop: `❌ gh is not authenticated. Run gh auth login.`
18
21
  - If no open `feedback` issues exist, stop: `✅ No open feedback issues.`
22
+ - Never fill a `You:` slot, and never read an empty one as agreement. Answering runs through `plan-intake-answer` or the operator's own edit.
23
+ - Branch on each `canon` record's `ok` and `reason` rather than on the exit code, which a shell function wrapping `canon` can flatten to zero.
19
24
 
20
25
  ## Step 1: list the queue
21
26
 
22
- Fetch open feedback issues:
23
-
24
27
  ```bash
25
- gh issue list --label feedback --state open --json number,title,url --jq '.[] | "#\(.number)\t\(.title)\t\(.url)"'
28
+ gh issue list --label feedback --state open --limit 1000 --json number,title,body,labels
26
29
  ```
27
30
 
28
- Print each as a numbered line with its issue number, title, and URL. Do not open bodies yet. Ask which to triage, and accept "all" to work them in order.
31
+ Take every issue. An issue without the `feedback` label does not surface here by design.
29
32
 
30
- ## Step 2: read and classify
33
+ ## Step 2: drop what the board already carries
31
34
 
32
- For each picked issue, read the body:
35
+ An issue is carried when its number appears in a live or archived task's `Issue:` line under `.canon/tasks/`, or in an item heading of an existing `.canon/intake/` folder, written `(#NNN)`. Search both at the main root.
33
36
 
34
- ```bash
35
- gh issue view <n> --json title,body,labels --jq '"\(.title)\n\n\(.body)"'
36
- ```
37
+ Set each carried issue aside with its carrier, a task path or a folder and item. Name every one in the overview, so a re-run while an earlier folder sits unanswered files nothing twice. When every issue is carried, stop: `✅ Every open feedback issue is already on the board.`
38
+
39
+ ## Step 3: claim the folder
40
+
41
+ Run `canon records ordinal intake feedback-triage --claim --json` and take its `name`. The verb creates the folder in the same act, so two sessions opening at once never share one. Where the installed binary carries no such subcommand, report it and stop rather than picking an ordinal by hand.
37
42
 
38
- Classify against the toolkit's own surfaces. Score in this order and stop at the first match:
43
+ ## Step 4: measure each issue
39
44
 
40
- 1. **Direct fix.** One surface, one file, no architectural choice. A typo, a stale reference, a one-line rule or doc correction, a single wording fix. Route straight to the edit.
41
- 2. **Plan-worthy.** Multiple files, a new skill or rule, a behavior change, or a cross-surface move. Route to `plan-feature`.
42
- 3. **Needs clarification.** The observed and expected behavior conflict or the surface is unnamed. Comment on the issue asking for the missing detail, then skip it.
45
+ For each remaining issue, measure its claim against the tree during this pass. Grep for the construct its defect names and count the sites, check whether the behavior it asks for exists, and search the log for a commit or pull request that shipped it under another task. Never carry a figure from the issue forward as current, since it states what was true when it was filed.
43
46
 
44
- State the class and the one-line reason per issue before routing. Do not batch unrelated fixes into one branch.
47
+ Classify each against the toolkit's own surfaces:
45
48
 
46
- When the fix encodes into a skill, standard, or seed, keep the principle and strip the reporting project's specifics: its filenames, frameworks, deploy targets, and label values. The issue describes one project, and the fix serves every project that installs the toolkit.
49
+ - **Direct fix.** One surface, one file, no architectural choice. A typo, a stale reference, a one-line correction.
50
+ - **Plan-worthy.** Multiple files, a new skill or rule, a behavior change, or a cross-surface move.
51
+ - **Needs clarification.** The observed and expected behavior conflict or the surface is unnamed. The item asks the operator for the missing detail.
47
52
 
48
- ## Step 3: route
53
+ Strip the reporting project's specifics from the fix, being its filenames, frameworks, deploy targets, and label values. The issue describes one project, and the fix serves every project that installs the toolkit.
49
54
 
50
- - Direct fix: rename the branch to a conventional name (invoke `git-branch`), make the edit, then open the PR with `git-pr`.
51
- - Plan-worthy: invoke `plan-feature` with the issue body as the feature description. Let it write the plan and stop. Hand the plan slug back to the user. Do not implement.
52
- - Needs clarification: run the scan in `${CLAUDE_SKILL_DIR}/../../standards/publish.md` against the question first, since it reaches the remote with nothing else checking it and this scan is the only gate. Then `gh issue comment <n> --body "<one question>"`, and move on.
55
+ Name the commit the pass measured against in the overview.
53
56
 
54
- Match one issue to one branch and one PR. A single feedback issue is a single unit of work.
57
+ ## Step 5: write the items
55
58
 
56
- ## Step 4: close-out
59
+ Write one item per issue in the intake item format, one cluster file per domain the fix touches, numbered in read order. Head each item `### N. <defect> (#NNN)` so an answer finds its issue.
57
60
 
58
- Link every fix back to its issue so the queue drains on merge.
61
+ - `Problem:` states what this pass measured, with the count, path, or commit behind it
62
+ - `Fix:` states the class from Step 4 and the change it names
63
+ - `Open:` reads `fix, plan, ask, or decline?` on every item
64
+ - `Suggested:` opens with exactly one of those tokens, then the reason
65
+ - `You:` ships empty
66
+
67
+ Write `00-overview.md` last, per the intake standard, with the counts by token, an open-questions list linking each item, the commit measured against, and every issue skipped in Step 2 with its carrier. Where the pass runs out of context before the index, write `99-next-session.md` naming the last issue filed.
68
+
69
+ ## Output
70
+
71
+ ```plaintext
72
+ 📂 Opened .canon/intake/<nn>-feedback-triage/
73
+
74
+ **Filed:** <N> issues across <N> clusters, measured against <sha>
75
+ **Skipped:** <n> already carried
76
+ **Suggested:** <n> fix, <n> plan, <n> ask, <n> decline
77
+
78
+ Next: /canon:plan-intake-answer to answer the `You:` slots
79
+ ```
59
80
 
60
- - For a PR-backed fix, add a `Closes #<n>` line to the PR body so GitHub closes the issue on merge. When `git-pr` regenerates the body, keep that line.
61
- - For a fix that ships without a PR, run the scan in `${CLAUDE_SKILL_DIR}/../../standards/publish.md` against the close message first, since it reaches the remote with nothing else checking it and this scan is the only gate. Then close it directly: `gh issue close <n> --comment "Fixed in <commit or PR url>."`
62
- - For a plan-worthy route, leave the issue open. It closes when the resulting PR merges with its `Closes #<n>` line.
81
+ An answered fix or plan item promotes through `task-board` with an `Issue: #NNN` line, and the shipping pull request's `Closes #NNN` drains the queue. Closing a declined issue on GitHub stays the operator's act.
63
82
 
64
83
  ## Notes
65
84
 
66
- - The `feedback` label is what `canon feedback --github` and the `toolkit-feedback.yml` issue form both apply. An issue without it does not surface here by design.
67
- - This skill routes, it does not reimplement. `plan-feature` owns planning, `git-pr` owns the PR body, `git-branch` owns the branch name. Do not duplicate their logic.
85
+ - The `feedback` label is what `canon feedback` and the `toolkit-feedback.yml` issue form both apply.
86
+ - This skill files and never reimplements. `plan-intake-answer` owns the answers and `task-board` owns the task a fix becomes.
@@ -1,9 +1,9 @@
1
1
  ---
2
- name: canvas
2
+ name: canvas-board
3
3
  description: Scope boundary for driving the local design canvas, and the line between a drafted frame and the design it feeds
4
4
  ---
5
5
 
6
- # Canvas requirement
6
+ # Canvas board requirement
7
7
 
8
8
  ## Gap
9
9
 
@@ -25,7 +25,7 @@ When the operator picks a frame, the session leaves the decision on the canvas a
25
25
  - Read the operator's selection when they point at something, and treat a stale element pick as unknown
26
26
  - Read a frame's inline styles before restyling it, and say which operator edits were kept and which dropped
27
27
  - Capture once per finished frame or page rather than after every edit
28
- - Carry a picked direction into the project's design document or wireframes
28
+ - Carry a picked value into the project's design document, and leave a picked layout on the canvas for the plan that builds it
29
29
 
30
30
  ## Must not
31
31
 
@@ -43,7 +43,6 @@ When the operator picks a frame, the session leaves the decision on the canvas a
43
43
 
44
44
  - What the canvas verbs do internally, which is the CLI's own contract
45
45
  - The content format a frame and a layout take, which the canvas standard fixes
46
- - Drafting candidates for a taste decision and taking the pick, which `draft-and-pick` runs on its own render path
47
- - Tracing reference images into design values, which is `sketch-design`
48
- - Writing the design document itself, which is `design-extract`
46
+ - Drafting candidates for a taste decision and taking the pick, which `draft-and-pick` runs on this canvas through the same verbs
47
+ - Tracing reference images into design values or writing the design document from code, which no skill owns now
49
48
  - Backing up the canvas folder off one disk
@@ -1,13 +1,13 @@
1
1
  ---
2
- name: canvas
3
- description: Drives the local design canvas, where pages hold HTML frames the operator sees, drags, selects, and edits in the browser. Starts the canvas when it is not running, confirms the live shell loads, makes pages and frames, edits a frame through its file, reads what the operator selected or restyled, captures finished frames, and carries a picked direction into the project's design document. Use when asked to "open the canvas", "put this on the canvas", "draw a frame for X", "change the one I selected", "what did I pick", "capture this frame", or "move that frame on the canvas". Do NOT use to trace reference images into design values, which is `sketch-design`, or to write the design document from code, which is `design-extract`.
2
+ name: canvas-board
3
+ description: Drives the local design canvas, where pages hold HTML frames the operator sees, drags, selects, and edits in the browser. Starts the canvas when it is not running, confirms the live shell loads, makes pages and frames, edits a frame through its file, reads what the operator selected or restyled, captures finished frames, and carries a picked direction into the project's design document. Use when asked to "open the canvas", "put this on the canvas", "draw a frame for X", "change the one I selected", "what did I pick", "capture this frame", or "move that frame on the canvas". Do NOT use to draft candidates for a taste decision, which is `draft-and-pick`.
4
4
  metadata:
5
5
  family: decide
6
6
  ---
7
7
 
8
- # Canvas
8
+ # Canvas board
9
9
 
10
- Drive the canvas the operator is looking at. A page is a folder of HTML frames and a frame is one file, so a session draws by writing files and the operator sees each write land in the browser. The content format is fixed by `${CLAUDE_SKILL_DIR}/../../standards/canvas.md`. Read it before writing a frame.
10
+ Drive the canvas the operator is looking at. A page is a folder of HTML frames and a frame is one file, so a session draws by writing files and the operator sees each write land in the browser. The content format is fixed by `${CLAUDE_SKILL_DIR}/references/canvas.md`. Read it before writing a frame.
11
11
 
12
12
  Every verb below is `canon canvas`. Run `canon docs canvas` for the full verb reference, its records, and its refusals.
13
13
 
@@ -16,7 +16,7 @@ Every verb below is `canon canvas`. Run `canon docs canvas` for the full verb re
16
16
  - If `canon` is not on PATH, stop: `❌ canon CLI not found.`
17
17
  - If `canon canvas --help` reports no such command, stop: `❌ The installed canon carries no canvas command. Update the CLI and re-run.`
18
18
  - Write no frame before the canvas is serving and the shell has loaded. A frame nobody can see is a draft reported as delivered.
19
- - Never present a frame as the project's design. The canvas is a drafting surface and the project's design document or wireframes hold what was decided.
19
+ - Never present a frame as the project's design. The canvas is a drafting surface and the project's design document holds what was decided.
20
20
  - Never promise the canvas survives a lost checkout. Its folder is gitignored and nothing backs it up.
21
21
 
22
22
  ## Step 1: start the canvas and confirm the shell
@@ -102,7 +102,7 @@ The operator restyles elements from the inspector, and each edit lands as inline
102
102
 
103
103
  When the operator picks a frame, the decision leaves the canvas.
104
104
 
105
- - Carry visual values, being color, type, spacing, and radius, into the project's design document, through the skill that owns it. Carry structure and layout into the project's wireframes.
105
+ - Carry visual values, being color, type, spacing, and radius, into the project's design document, editing its sections in place under the `design.md` standard. Leave structure and layout on the canvas, and name the frame in the plan that builds it.
106
106
  - Name the frame the decision came from in the reply, and leave the frame on the canvas until the operator clears it.
107
107
  - Never cite a frame path from a tracked file. The folder is gitignored, so the citation resolves on this machine alone.
108
108
 
@@ -113,7 +113,7 @@ When the operator picks a frame, the decision leaves the canvas.
113
113
  Page: <page>, <n> frames
114
114
  Selected: <page>/<frame>, element <index>, or none, or stale
115
115
  Capture: <path of each capture written>
116
- Carried: <the design document or wireframe the pick went to, or not yet>
116
+ Carried: <the design document the pick went to, the plan that cites the frame, or not yet>
117
117
  ```
118
118
 
119
119
  Write the canvas line's URL as a markdown link. Omit the capture line when nothing was captured and the carried line when no direction was picked. Emit every path from the project root.
@@ -9,6 +9,17 @@ Applies to the canvas content under `.canon/canvas/`, where each page is a folde
9
9
 
10
10
  The folder is gitignored, so nothing in a repository checks its shape and nothing backs it up by default.
11
11
 
12
+ ## Contents
13
+
14
+ - [Scope](#scope)
15
+ - [What a working canvas looks like](#what-a-working-canvas-looks-like)
16
+ - [Pages](#pages)
17
+ - [Frames](#frames)
18
+ - [Layout](#layout)
19
+ - [Tokens](#tokens)
20
+ - [What a frame must not assume](#what-a-frame-must-not-assume)
21
+ - [Template](#template)
22
+
12
23
  ## Scope
13
24
 
14
25
  Governs the canvas content under `.canon/canvas/`: page folder names, frame files, the `layout.json` shape, how tokens reach a frame, and what a frame must not assume about where it renders.
@@ -80,7 +91,7 @@ The keys below are the ones a reader parses. The frame names are placeholders.
80
91
  - Do not assume the theme. The canvas theme toggle is the operator's own state, and a capture shows each frame in its default theme.
81
92
  - Do not assume a network. Name only fonts the machine has, or ship the font beside the frame, since a capture refuses a frame naming a font it cannot find.
82
93
  - Do not assume a default font. Set `font-family` with an installed family first on an element the frame's text inherits from, since a capture checks the first family of the text it renders and the browser's default serif is absent from many machines.
83
- - Do not assume the frame is the source. A picked direction is carried into the project's design document or its wireframes, and the operator clears the frame once it has been carried.
94
+ - Do not assume the frame is the source. A picked direction is carried into the project's design document or a plan, and the operator clears the frame once it has been carried.
84
95
  - Do not assume the canvas survives the checkout. The folder is gitignored, so a lost checkout loses every page in it.
85
96
 
86
97
  ## Template
@@ -1,27 +1,35 @@
1
1
  ---
2
2
  title: Design reference
3
3
  description: Shape and content rules for canon/DESIGN.md
4
- paths:
5
- - 'canon/DESIGN.md'
6
4
  ---
7
5
 
8
6
  # Design reference
9
7
 
10
8
  Applies to `canon/DESIGN.md`. Captures visual intent and the decisions behind how things look, not a style guide, component spec, or framework reference. Update when a visual decision is made or a rule changes.
11
9
 
10
+ ## Contents
11
+
12
+ - [Scope](#scope)
13
+ - [What goes in](#what-goes-in)
14
+ - [What does not go in](#what-does-not-go-in)
15
+ - [Format](#format)
16
+ - [Prose budget](#prose-budget)
17
+ - [The uncertainty tag](#the-uncertainty-tag)
18
+ - [Sections](#sections)
19
+ - [Template](#template)
20
+
12
21
  ## Scope
13
22
 
14
23
  Governs the visual-intent document at `canon/DESIGN.md`: tokens described as intent, layout constraints, and the omissions that keep visual scope closed.
15
24
 
16
25
  Does not govern:
17
26
 
18
- - Screen layout, on-screen copy, and interaction intent: `wireframes.md`
19
27
  - Per-domain implementation narrative: `context.md`
20
28
 
21
29
  ## What goes in
22
30
 
23
31
  - A token's exact value, anchored to the surface it was read from and tagged per `## The uncertainty tag` when unconfirmed. Fall back to intent language ("mid gray, muted text") only where no source exists yet to anchor from.
24
- - Layout constraints and sizing rules not obvious from wireframes
32
+ - Layout constraints and sizing rules not obvious from the tokens and the code
25
33
  - Visual rules a developer could get wrong without guidance
26
34
  - Non-obvious omissions ("no motion", "no custom icons") that prevent scope creep
27
35
 
@@ -34,7 +42,7 @@ Does not govern:
34
42
  ## Format
35
43
 
36
44
  - Use tables for token systems, one row per token. Write every other rule as a short bullet, one decision per line, within `## Prose budget`.
37
- - Plain English over technical notation. If a section could be removed and the developer would still build correctly from wireframes and code alone, remove it.
45
+ - Plain English over technical notation. If a section could be removed and the developer would still build correctly from the tokens and code alone, remove it.
38
46
  - Keep table headers and role names intact so the render tooling can parse the token tables.
39
47
 
40
48
  ## Prose budget
@@ -35,6 +35,5 @@ A cache keyed on a static string serves a stale browser or toolchain after a ver
35
35
 
36
36
  ## Out of scope
37
37
 
38
- - The shell scripts a job invokes: `bash-cli-script`
39
38
  - Secrets, environments, and deploy targets, which live in the repository settings rather than in the workflow this skill writes
40
39
  - CI systems other than GitHub Actions. The structure rules generalize and the file format does not, so a different system is a different skill rather than a flag on this one.