@erclx/canon 5.31.0 → 5.32.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (303) 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/backlog-triage/SKILL.md +1 -1
  12. package/claude/skills/canon-cli/REQUIREMENT.md +4 -6
  13. package/claude/skills/canon-cli/SKILL.md +2 -2
  14. package/claude/skills/canon-feedback/REQUIREMENT.md +1 -1
  15. package/claude/skills/canon-feedback/SKILL.md +10 -13
  16. package/claude/skills/canon-feedback-triage/REQUIREMENT.md +13 -14
  17. package/claude/skills/canon-feedback-triage/SKILL.md +49 -30
  18. package/claude/skills/canvas/REQUIREMENT.md +3 -4
  19. package/claude/skills/canvas/SKILL.md +5 -5
  20. package/{standards → claude/skills/canvas/references}/canvas.md +12 -1
  21. package/claude/skills/ci-workflow/REQUIREMENT.md +0 -1
  22. package/claude/skills/context-fold/REQUIREMENT.md +8 -20
  23. package/claude/skills/context-fold/SKILL.md +20 -44
  24. package/claude/skills/context-fold/references/classify.md +7 -8
  25. package/claude/skills/context-fold/references/completion-report.md +2 -6
  26. package/claude/skills/context-fold/references/context-refresh.md +5 -15
  27. package/claude/skills/context-fold/references/promoted-pages.md +3 -3
  28. package/claude/skills/context-fold/references/receipt-sweep.md +6 -17
  29. package/claude/skills/context-fold/references/unusable-baseline.md +4 -6
  30. package/claude/skills/create-rule/REQUIREMENT.md +0 -1
  31. package/claude/skills/create-skill/REQUIREMENT.md +6 -4
  32. package/claude/skills/create-skill/SKILL.md +8 -7
  33. package/{standards → claude/skills/create-skill/references}/skill-paths.md +1 -0
  34. package/claude/skills/decision-escalate/REQUIREMENT.md +1 -1
  35. package/claude/skills/decision-escalate/SKILL.md +1 -1
  36. package/claude/skills/design-taste/REQUIREMENT.md +0 -2
  37. package/claude/skills/design-taste/SKILL.md +1 -3
  38. package/claude/skills/design-taste/references/vocabulary.md +1 -1
  39. package/claude/skills/docs-sync/REQUIREMENT.md +3 -3
  40. package/claude/skills/document-health/REQUIREMENT.md +2 -2
  41. package/claude/skills/document-health/SKILL.md +4 -5
  42. package/claude/skills/document-health/references/axes.md +4 -6
  43. package/claude/skills/draft-and-pick/REQUIREMENT.md +16 -14
  44. package/claude/skills/draft-and-pick/SKILL.md +40 -32
  45. package/claude/skills/draft-and-pick/references/live-arms.md +9 -9
  46. package/claude/skills/draft-doc/REQUIREMENT.md +5 -5
  47. package/claude/skills/draft-doc/SKILL.md +9 -10
  48. package/claude/skills/draft-doc/references/requirements.md +61 -0
  49. package/claude/skills/draft-doc/references/wiki-kind.md +53 -0
  50. package/claude/skills/draft-doc/references/wiki.md +50 -30
  51. package/claude/skills/draft-figure/REQUIREMENT.md +2 -2
  52. package/claude/skills/draft-figure/SKILL.md +4 -4
  53. package/claude/skills/draft-figure/references/architecture-set.md +4 -4
  54. package/claude/skills/draft-figure/references/hand-drawn.md +1 -1
  55. package/claude/skills/draft-figure/references/mermaid-path.md +55 -0
  56. package/claude/skills/draft-figure/references/mermaid.md +43 -34
  57. package/claude/skills/draft-identity/REQUIREMENT.md +1 -1
  58. package/claude/skills/draft-identity/SKILL.md +9 -7
  59. package/claude/skills/draft-ready/REQUIREMENT.md +1 -1
  60. package/claude/skills/draft-ready/SKILL.md +6 -6
  61. package/claude/skills/draft-ready/references/assembly.md +1 -1
  62. package/{standards → claude/skills/draft-ready/references}/ready.md +13 -5
  63. package/claude/skills/git-issue/references/issue.md +3 -3
  64. package/claude/skills/git-ship/REQUIREMENT.md +0 -2
  65. package/claude/skills/git-ship/SKILL.md +16 -24
  66. package/claude/skills/plan-feature/SKILL.md +2 -6
  67. package/{standards → claude/skills/plan-feature/references}/plan.md +9 -10
  68. package/claude/skills/plan-groundwork/SKILL.md +5 -6
  69. package/{standards → claude/skills/plan-groundwork/references}/groundwork.md +17 -4
  70. package/claude/skills/plan-intake/SKILL.md +2 -3
  71. package/{standards → claude/skills/plan-intake/references}/intake.md +17 -2
  72. package/claude/skills/plan-intake-answer/REQUIREMENT.md +1 -1
  73. package/claude/skills/plan-intake-answer/SKILL.md +1 -1
  74. package/claude/skills/review-address/SKILL.md +1 -1
  75. package/claude/skills/review-craft/REQUIREMENT.md +3 -3
  76. package/claude/skills/review-craft/SKILL.md +2 -2
  77. package/claude/skills/review-craft/references/ui.md +4 -4
  78. package/claude/skills/review-pr/REQUIREMENT.md +1 -1
  79. package/claude/skills/review-pr/SKILL.md +5 -7
  80. package/claude/skills/review-ui/REQUIREMENT.md +0 -1
  81. package/claude/skills/review-ui/SKILL.md +1 -1
  82. package/claude/skills/role-orchestrator/REQUIREMENT.md +0 -3
  83. package/claude/skills/role-orchestrator/SKILL.md +8 -8
  84. package/claude/skills/role-orchestrator/references/orchestrator-dispatch.md +3 -3
  85. package/claude/skills/role-orchestrator/references/orchestrator-handoff.md +7 -10
  86. package/claude/skills/role-orchestrator/references/orchestrator-parked.md +2 -2
  87. package/claude/skills/role-orchestrator/references/orchestrator-refill.md +0 -3
  88. package/claude/skills/role-orchestrator/references/orchestrator-resume.md +1 -1
  89. package/claude/skills/role-planner/SKILL.md +2 -2
  90. package/claude/skills/role-reviewer/SKILL.md +1 -1
  91. package/claude/skills/role-worker/SKILL.md +2 -2
  92. package/claude/skills/session-compact/REQUIREMENT.md +1 -4
  93. package/claude/skills/session-compact/SKILL.md +3 -13
  94. package/claude/skills/session-compact/references/handoff-note.md +2 -2
  95. package/claude/skills/session-map/REQUIREMENT.md +1 -9
  96. package/claude/skills/session-map/SKILL.md +8 -16
  97. package/{standards → claude/skills/session-map/references}/session.md +17 -11
  98. package/claude/skills/session-relay/REQUIREMENT.md +1 -1
  99. package/claude/skills/session-resume/REQUIREMENT.md +4 -6
  100. package/claude/skills/session-resume/SKILL.md +3 -9
  101. package/claude/skills/session-worktree/SKILL.md +1 -1
  102. package/claude/skills/session-worktree/references/main-root-writes.md +2 -2
  103. package/claude/skills/systematic-debugging/REQUIREMENT.md +0 -1
  104. package/claude/skills/target-check/REQUIREMENT.md +3 -3
  105. package/claude/skills/target-check/SKILL.md +1 -1
  106. package/claude/skills/target-check/references/domains.md +1 -1
  107. package/claude/skills/target-setup/REQUIREMENT.md +4 -4
  108. package/claude/skills/target-setup/SKILL.md +3 -3
  109. package/claude/skills/target-setup/references/detect.md +1 -1
  110. package/claude/skills/task-board/SKILL.md +4 -4
  111. package/claude/skills/task-board/references/archive.md +1 -1
  112. package/{standards → claude/skills/task-board/references}/board.md +9 -0
  113. package/claude/skills/task-board/references/decline.md +1 -1
  114. package/{standards → claude/skills/task-board/references}/tasks.md +13 -8
  115. package/claude/skills/teach-workspace/SKILL.md +1 -1
  116. package/claude/skills/teach-workspace/references/revisit.md +1 -1
  117. package/{standards → claude/skills/teach-workspace/references}/teach.md +17 -5
  118. package/claude/skills/ux-audit/REQUIREMENT.md +2 -2
  119. package/claude/skills/ux-audit/SKILL.md +2 -3
  120. package/claude/skills/write-human/REQUIREMENT.md +0 -1
  121. package/claude/skills/write-human/SKILL.md +1 -1
  122. package/docs/agents/audits.md +1 -1
  123. package/docs/agents/canvas.md +1 -1
  124. package/docs/agents/commands.md +1 -6
  125. package/docs/agents/context-audit-checks.md +9 -23
  126. package/docs/agents/context-audit.md +7 -15
  127. package/docs/agents/context-classify.md +5 -5
  128. package/docs/agents/counts.md +5 -5
  129. package/docs/agents/drift-surfaces.md +2 -2
  130. package/docs/agents/index.md +3 -5
  131. package/docs/agents/install-and-sync.md +6 -6
  132. package/docs/agents/intake.md +1 -1
  133. package/docs/agents/records-stale.md +5 -5
  134. package/docs/agents/records-validate.md +1 -1
  135. package/docs/agents/records.md +2 -2
  136. package/docs/agents/restated.md +1 -1
  137. package/docs/agents/rule-citations.md +1 -1
  138. package/docs/agents/skills-audit.md +2 -2
  139. package/docs/agents/state-scoped-risk.md +2 -2
  140. package/docs/agents/superseded.md +2 -2
  141. package/docs/agents/tasks-plans.md +1 -1
  142. package/docs/agents/tasks-validate.md +1 -1
  143. package/docs/agents/tasks.md +1 -1
  144. package/docs/agents/teach.md +1 -1
  145. package/docs/agents/upstream.md +26 -2
  146. package/docs/target/migrations.md +24 -0
  147. package/docs/target/projects.md +5 -7
  148. package/docs/target/scenarios.md +2 -2
  149. package/docs/target/sync.md +3 -3
  150. package/docs/workflow/ai-workflow.md +7 -38
  151. package/docs/workflow/index.md +1 -1
  152. package/docs/workflow/operating-model.md +8 -8
  153. package/docs/workflow/parallel-features.md +7 -7
  154. package/docs/workflow/skill-map-on-request.md +12 -15
  155. package/docs/workflow/skill-map.md +20 -32
  156. package/docs/workflow/visual-design-workflow.md +11 -14
  157. package/governance/renames.toml +0 -19
  158. package/governance/rules/canon/605-worktrees.md +1 -1
  159. package/governance/rules/{standards → canon}/plan.md +4 -5
  160. package/governance/rules/canon/tasks.md +18 -0
  161. package/governance/stacks/base.toml +1 -1
  162. package/package.json +1 -1
  163. package/scripts/core/install-check.sh +1 -1
  164. package/scripts/core/regen-web-previews.ts +1 -1
  165. package/src/audits/catalog.ts +5 -97
  166. package/src/claude/cases/authoring.ts +0 -18
  167. package/src/claude/cases/misc.ts +0 -13
  168. package/src/claude/cases/setup.ts +3 -20
  169. package/src/claude/cases/workflow.ts +0 -33
  170. package/src/claude/seeds.ts +1 -7
  171. package/src/claude/skills-audit.ts +1 -1
  172. package/src/cli/help.ts +1 -4
  173. package/src/cli.ts +0 -4
  174. package/src/commands/claude.ts +8 -14
  175. package/src/commands/context.ts +18 -280
  176. package/src/commands/feedback.ts +22 -91
  177. package/src/commands/records.ts +5 -5
  178. package/src/commands/sync.ts +5 -3
  179. package/src/commands/upstream.ts +135 -0
  180. package/src/context/audit.ts +5 -14
  181. package/src/context/classify/extract.ts +6 -13
  182. package/src/context/classify/patterns.ts +2 -41
  183. package/src/context/classify/prompts.ts +2 -6
  184. package/src/context/classify/run.ts +3 -3
  185. package/src/context/folders.ts +7 -12
  186. package/src/context/gate.ts +11 -91
  187. package/src/context/requirements.ts +13 -4
  188. package/src/counts/scan.ts +3 -3
  189. package/src/design/components.ts +2 -2
  190. package/src/feedback/body.ts +0 -12
  191. package/src/gate/measures.ts +6 -57
  192. package/src/gov/citations.ts +9 -3
  193. package/src/gov/restated.ts +3 -3
  194. package/src/markdown/structure.ts +2 -2
  195. package/src/migrate/record-layout.ts +3 -3
  196. package/src/records/ordinal.ts +1 -1
  197. package/src/records/prune.ts +2 -1
  198. package/src/records/stale-canonical.ts +2 -2
  199. package/src/roots/record.ts +1 -1
  200. package/src/sandbox/scenario.ts +115 -11
  201. package/src/shipped/references.ts +3 -3
  202. package/src/standards/read.ts +31 -0
  203. package/src/sync/seeds-report.ts +1 -1
  204. package/src/tasks/reach.ts +2 -2
  205. package/src/tasks/validate.ts +1 -1
  206. package/src/teach/workspace.ts +1 -1
  207. package/src/upstream/cursor.ts +1 -1
  208. package/src/upstream/due.ts +128 -0
  209. package/src/upstream/releases.ts +2 -1
  210. package/standards/context.md +3 -5
  211. package/standards/design.md +2 -3
  212. package/standards/index.md +0 -22
  213. package/standards/publish.md +1 -1
  214. package/standards/skill.md +1 -1
  215. package/tooling/base/reference.md +1 -1
  216. package/tooling/claude/reference.md +6 -20
  217. package/tooling/claude/seeds/.claude/hooks/records-index.sh +8 -20
  218. package/tooling/claude/seeds/.claude/hooks/standards-audit.sh +3 -3
  219. package/tooling/claude/seeds/CLAUDE.md +1 -3
  220. package/tooling/claude/seeds/canon/REQUIREMENTS.md +2 -9
  221. package/tooling/web/configs/e2e/screenshot.ts +0 -1
  222. package/claude/skills/auto-ship/references/review-findings.md +0 -20
  223. package/claude/skills/bash-cli-script/REQUIREMENT.md +0 -43
  224. package/claude/skills/bash-cli-script/SKILL.md +0 -53
  225. package/claude/skills/bash-cli-script/references/template.md +0 -19
  226. package/claude/skills/canon-operator/REQUIREMENT.md +0 -62
  227. package/claude/skills/canon-operator/SKILL.md +0 -113
  228. package/claude/skills/canon-rollout/REQUIREMENT.md +0 -59
  229. package/claude/skills/canon-rollout/SKILL.md +0 -140
  230. package/claude/skills/canon-rollout/references/failure-recovery.md +0 -20
  231. package/claude/skills/context-fold/references/anchor-sweep.md +0 -58
  232. package/claude/skills/context-fold/references/wireframe-sweep.md +0 -45
  233. package/claude/skills/create-standard/REQUIREMENT.md +0 -33
  234. package/claude/skills/create-standard/SKILL.md +0 -31
  235. package/claude/skills/design-extract/REQUIREMENT.md +0 -42
  236. package/claude/skills/design-extract/SKILL.md +0 -108
  237. package/claude/skills/draft-and-pick/references/frame.html +0 -118
  238. package/claude/skills/draft-doc/references/wireframes.md +0 -48
  239. package/claude/skills/markdown-propose/REQUIREMENT.md +0 -47
  240. package/claude/skills/markdown-propose/SKILL.md +0 -122
  241. package/claude/skills/markdown-propose/references/format.md +0 -118
  242. package/claude/skills/memory-capture/REQUIREMENT.md +0 -50
  243. package/claude/skills/memory-capture/SKILL.md +0 -117
  244. package/claude/skills/memory-review/REQUIREMENT.md +0 -52
  245. package/claude/skills/memory-review/SKILL.md +0 -129
  246. package/claude/skills/memory-review/references/later-phases.md +0 -118
  247. package/claude/skills/memory-review/references/receipt-format.md +0 -64
  248. package/claude/skills/project-commands/REQUIREMENT.md +0 -42
  249. package/claude/skills/project-commands/SKILL.md +0 -87
  250. package/claude/skills/repo-metadata/REQUIREMENT.md +0 -37
  251. package/claude/skills/repo-metadata/SKILL.md +0 -54
  252. package/claude/skills/restate-plainly/REQUIREMENT.md +0 -41
  253. package/claude/skills/restate-plainly/SKILL.md +0 -41
  254. package/claude/skills/review-branch/REQUIREMENT.md +0 -40
  255. package/claude/skills/review-branch/SKILL.md +0 -137
  256. package/claude/skills/seed-sync/REQUIREMENT.md +0 -45
  257. package/claude/skills/seed-sync/SKILL.md +0 -158
  258. package/claude/skills/sketch-design/REQUIREMENT.md +0 -38
  259. package/claude/skills/sketch-design/SKILL.md +0 -94
  260. package/claude/skills/ux-walkthrough/REQUIREMENT.md +0 -56
  261. package/claude/skills/ux-walkthrough/SKILL.md +0 -53
  262. package/claude/skills/ux-walkthrough/references/builds.md +0 -15
  263. package/claude/skills/ux-walkthrough/references/candidate-pages.md +0 -11
  264. package/claude/skills/ux-walkthrough/references/measuring.md +0 -22
  265. package/claude/skills/ux-walkthrough/references/record.md +0 -36
  266. package/claude/skills/ux-walkthrough/references/relay.md +0 -25
  267. package/docs/agents/architecture-record.md +0 -36
  268. package/docs/agents/review-classification.md +0 -76
  269. package/governance/rules/canon/603-memory.md +0 -11
  270. package/governance/rules/lang/120-bash.md +0 -18
  271. package/governance/rules/standards/architecture.md +0 -13
  272. package/governance/rules/standards/groundwork.md +0 -13
  273. package/governance/rules/standards/intake.md +0 -12
  274. package/governance/rules/standards/memory.md +0 -12
  275. package/governance/rules/standards/ready.md +0 -13
  276. package/governance/rules/standards/requirements.md +0 -12
  277. package/governance/rules/standards/session.md +0 -13
  278. package/governance/rules/standards/tasks.md +0 -15
  279. package/governance/rules/standards/teach.md +0 -14
  280. package/governance/rules/standards/wiki.md +0 -13
  281. package/governance/rules/standards/wireframes.md +0 -13
  282. package/src/autoship/classify.ts +0 -75
  283. package/src/autoship/paths.ts +0 -50
  284. package/src/commands/autoship.ts +0 -129
  285. package/src/commands/repo.ts +0 -393
  286. package/src/context/architecture.ts +0 -654
  287. package/src/context/wireframe-states.ts +0 -238
  288. package/src/repo/metadata.ts +0 -206
  289. package/standards/architecture.md +0 -127
  290. package/standards/memory.md +0 -158
  291. package/standards/mermaid.md +0 -64
  292. package/standards/requirements.md +0 -79
  293. package/standards/wiki.md +0 -77
  294. package/standards/wireframes.md +0 -143
  295. package/tooling/claude/seeds/.claude/memory/index.md +0 -8
  296. package/tooling/claude/seeds/canon/ARCHITECTURE.md +0 -23
  297. package/tooling/claude/seeds/canon/wireframes/index.md +0 -8
  298. /package/{standards → claude/skills/create-skill/references}/skill-practice.md +0 -0
  299. /package/{standards → claude/skills/create-skill/references}/skill-requirement.md +0 -0
  300. /package/{standards → claude/skills/plan-feature/references}/plan-lifecycle.md +0 -0
  301. /package/{standards → claude/skills/plan-groundwork/references}/groundwork-spikes.md +0 -0
  302. /package/{standards → claude/skills/task-board/references}/tasks-decline.md +0 -0
  303. /package/{standards → claude/skills/teach-workspace/references}/glossary.md +0 -0
@@ -14,14 +14,10 @@ Each row sits under the group its skill's `metadata.family` names. The landing p
14
14
 
15
15
  ## Set up a project
16
16
 
17
- | Skill | When to use |
18
- | ---------------------- | ----------------------------------------------------------------------------------------------------------- |
19
- | `canon:target-setup` | On a fresh scaffold, to detect the stack and run the install chain, or to reach one phase of it alone |
20
- | `canon:canon-operator` | On a project that already exists, to read what it carries before an install is picked |
21
- | `canon:sketch-design` | Before `design-extract`'s greenfield path, to trace a design direction from reference images or URLs |
22
- | `canon:design-extract` | Before the first UI feature, to draft `canon/DESIGN.md` |
23
- | `canon:deploy-app` | Once a project is ready to publish, to set up its Cloudflare or Vercel deploy and stop for token and domain |
24
- | `canon:repo-metadata` | When the GitHub About text, homepage, or topics may have drifted, to reconcile them against the README |
17
+ | Skill | When to use |
18
+ | -------------------- | ----------------------------------------------------------------------------------------------------------- |
19
+ | `canon:target-setup` | On a fresh scaffold, to detect the stack and run the install chain, or to reach one phase of it alone |
20
+ | `canon:deploy-app` | Once a project is ready to publish, to set up its Cloudflare or Vercel deploy and stop for token and domain |
25
21
 
26
22
  ## Decide what to build
27
23
 
@@ -43,8 +39,7 @@ Each row sits under the group its skill's `metadata.family` names. The landing p
43
39
  | Skill | When to use |
44
40
  | ----------------------------- | ---------------------------------------------------------------------------------------------------------- |
45
41
  | `canon:session-worktree` | At the plan-to-execute boundary, to get an isolated tree and branch, or to route a refused main-root write |
46
- | `canon:auto-ship` | After plan approval, to chain implement, verify, review, draft PR |
47
- | `canon:project-commands` | When the project's own command needs running |
42
+ | `canon:auto-ship` | After plan approval, to chain implement, verify, draft PR |
48
43
  | `canon:test-first` | Before implementing a planned change, to run its test red, green, then refactor |
49
44
  | `canon:test-craft` | When writing or changing any test, to pick its layer and filter what it asserts |
50
45
  | `canon:build-in-slices` | While building a plan, to commit each tested slice and note out-of-scope defects rather than fix them |
@@ -60,28 +55,23 @@ Each row sits under the group its skill's `metadata.family` names. The landing p
60
55
 
61
56
  ## Check the work before it leaves the branch
62
57
 
63
- | Skill | When to use |
64
- | ------------------------ | --------------------------------------------------------------------------------------- |
65
- | `canon:review-branch` | On the local branch diff, before anything is pushed |
66
- | `canon:document-health` | When the documents themselves have to answer for length, placement, and staleness |
67
- | `canon:markdown-propose` | When a markdown claim needs rewriting and the change should wait for an answer per file |
68
- | `canon:ux-audit` | To read UI source for missing states, edge cases, and inconsistencies |
69
- | `canon:ux-measure` | To start the interface and measure paint, processor, and layout cost |
70
- | `canon:ux-walkthrough` | To run a multi-finding inspection pass over a running app with the operator |
58
+ | Skill | When to use |
59
+ | ----------------------- | --------------------------------------------------------------------------------- |
60
+ | `canon:document-health` | When the documents themselves have to answer for length, placement, and staleness |
61
+ | `canon:ux-audit` | To read UI source for missing states, edge cases, and inconsistencies |
62
+ | `canon:ux-measure` | To start the interface and measure paint, processor, and layout cost |
71
63
 
72
64
  ## Ship it
73
65
 
74
- | Skill | When to use |
75
- | ---------------------- | ------------------------------------------------------------------------------------- |
76
- | `canon:git-ship` | To run the whole post-feature chain from the verify gate through open PR |
77
- | `canon:memory-capture` | First skill in that chain, to route what the session learned to the surface owning it |
78
- | `canon:context-fold` | When decisions diverged from the plan, or a shipped task needs its outcomes marked |
79
- | `canon:docs-sync` | When a change since main left `README.md` or `docs/` stale |
80
- | `canon:git-stage` | When the staged set spans several concerns and wants one commit each |
81
- | `canon:git-commit` | When the staged set is one concern, or was staged hunk by hand |
82
- | `canon:git-branch` | When a branch name needs generating or renaming to conventional form |
83
- | `canon:git-pr` | When a pull request needs a title and body written from the diff |
84
- | `canon:memory-review` | When the pen has grown, to propose where each entry belongs |
66
+ | Skill | When to use |
67
+ | -------------------- | ---------------------------------------------------------------------------------- |
68
+ | `canon:git-ship` | To run the whole post-feature chain from the verify gate through open PR |
69
+ | `canon:context-fold` | When decisions diverged from the plan, or a shipped task needs its outcomes marked |
70
+ | `canon:docs-sync` | When a change since main left `README.md` or `docs/` stale |
71
+ | `canon:git-stage` | When the staged set spans several concerns and wants one commit each |
72
+ | `canon:git-commit` | When the staged set is one concern, or was staged hunk by hand |
73
+ | `canon:git-branch` | When a branch name needs generating or renaming to conventional form |
74
+ | `canon:git-pr` | When a pull request needs a title and body written from the diff |
85
75
 
86
76
  ## After the pull request opens
87
77
 
@@ -113,7 +103,5 @@ Each row sits under the group its skill's `metadata.family` names. The landing p
113
103
  | Skill | When to use |
114
104
  | ----------------------------- | -------------------------------------------------------------------------------------- |
115
105
  | `canon:target-check` | In a target project, to report per domain what it holds against what the toolkit ships |
116
- | `canon:seed-sync` | After a toolkit update, to reconcile installed seeds without losing customizations |
117
106
  | `canon:canon-feedback` | When something in the toolkit is broken, missing, or off, to open an issue on it |
118
- | `canon:canon-feedback-triage` | In the toolkit repo, to work through the open feedback issues |
119
- | `canon:canon-rollout` | In the toolkit repo, to take one change out to every consuming project at once |
107
+ | `canon:canon-feedback-triage` | In the toolkit repo, to file the open feedback issues into an intake folder |
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  title: Visual design workflow
3
- description: Tiered guide for design and wireframe authoring with Claude Code
3
+ description: Tiered guide for design authoring with Claude Code
4
4
  category: Workflow
5
5
  ---
6
6
 
@@ -14,17 +14,17 @@ The tier framework sits alongside [Claude Design](../../wiki/claude/design.md),
14
14
 
15
15
  ## Tier 0: prose only
16
16
 
17
- The default. `canon/DESIGN.md` holds visual intent as token tables for color, typography, spacing, and borders, with one Personality paragraph and at most three one-line rules a section, motion and iconography included. `.claude/WIREFRAMES.md` holds each surface's regions and states.
17
+ The default. `canon/DESIGN.md` holds visual intent as token tables for color, typography, spacing, and borders, with one Personality paragraph and at most three one-line rules a section, motion and iconography included.
18
18
 
19
- Claude Code reads both and writes the implementation. Works for CLI tools, internal dashboards, admin panels, and backend-focused projects.
19
+ Claude Code reads it and writes the implementation. Works for CLI tools, internal dashboards, admin panels, and backend-focused projects.
20
20
 
21
21
  ### Seed shape
22
22
 
23
23
  The toolkit seed in `tooling/claude/seeds/canon/DESIGN.md` ships a token-table template with a starting set of roles, and `standards/design.md` carries the same tables under `## Template` with placeholder rows. The column headers are what the renderer parses, so they stay verbatim in either, while the rows and values are the project's own.
24
24
 
25
- The `canon:design-extract` skill drafts the file, sourcing tokens from a project's existing prose and CLI UI surfaces, or proposing them from `canon/REQUIREMENTS.md` and a `## Personality` paragraph when no UI code exists yet. `canon design render` writes an HTML plus CSS preview to `.canon/tmp/render/design/` for eyeballing the current system without leaving Claude Code. See `canon/context/design/index.md`.
25
+ `canon design render` writes an HTML plus CSS preview to `.canon/tmp/render/design/` for eyeballing the current system without leaving Claude Code. See `canon/context/design/index.md`.
26
26
 
27
- A project wanting a neutral starting point to override runs `canon design install`, which copies one stylesheet to `.claude/design/base.css` carrying an achromatic token set as custom properties and two components built on them. Greys run from near-black to near-white and the accent is monochrome, so the only palette the project renders is one it writes itself. That file is toolkit-owned and `canon design sync` refreshes it, so a project overrides a value in `.claude/design/project/` instead, which sync never touches. Nothing arrives without that install, and the two channels are independent: a record drafted by the extract skill is the project's own, and the installed stylesheet is the toolkit's.
27
+ A project wanting a neutral starting point to override runs `canon design install`, which copies one stylesheet to `.claude/design/base.css` carrying an achromatic token set as custom properties and two components built on them. Greys run from near-black to near-white and the accent is monochrome, so the only palette the project renders is one it writes itself. That file is toolkit-owned and `canon design sync` refreshes it, so a project overrides a value in `.claude/design/project/` instead, which sync never touches. Nothing arrives without that install, and the two channels are independent: a record the project wrote is its own, and the installed stylesheet is the toolkit's.
28
28
 
29
29
  A cell no source anchors ends in `? verify`, and the preview shows that marker beside the value rather than folding it in, so a swatch and a font sample stay built from the value alone. A confidence line above the sections names how many cells are anchored against how many are tagged, which is what tells a reader whether they are looking at a record of the code or a proposal about it. It reads the columns a source could anchor and leaves out the row names, so the ratio is not diluted by cells no tag could ever reach. The proposal path tags nearly all of them, so that count reads low on day one by design.
30
30
 
@@ -35,14 +35,11 @@ A cell no source anchors ends in `? verify`, and the preview shows that marker b
35
35
 
36
36
  ### Skills
37
37
 
38
- - `canon:sketch-design` to trace a design direction from reference images or URLs, before `design-extract`'s greenfield path proposes from a personality paragraph alone
39
- - `canon:design-extract` to draft `canon/DESIGN.md`, from existing project signals or from requirements alone on day one
40
38
  - `canon:ui-checklist` for what a reviewer has to look at after UI changes, and what ships without a test
41
39
  - `canon:ux-audit` for UX gap detection on existing surfaces
42
40
  - `canon:ux-measure` for what a running surface costs to paint, read against published thresholds
43
- - `canon:draft-and-pick` for a call settled by looking, drafting several candidates onto one page and taking your pick
41
+ - `canon:draft-and-pick` for a call settled by looking, drafting several candidates as frames on the canvas and taking your pick
44
42
  - `canon:canvas` for a direction worked out over several turns, drawn as HTML frames you drag, select, and restyle in the browser while the session reads your changes back. Only the pick moves into `canon/DESIGN.md`, since the canvas folder is gitignored
45
- - `canon:ux-walkthrough` for a multi-finding inspection pass over a running app with the operator, drafting arms from the app's own markup and recording each pick for a builder
46
43
  - `canon:draft-identity` to draft a project's logo mark and compose it into an icon sequence and a social card, through `draft-and-pick`'s own render-and-pick loop. On an Astro project holding the card route scaffold, the card lands as a route the project keeps and is captured through a running server, so it reads the project's real stylesheet rather than typed copies of every color. Everywhere else it ships as a PNG and the run says so.
47
44
  - Anthropic's `frontend-design` plugin optional for light visual steering
48
45
 
@@ -55,16 +52,16 @@ A cell no source anchors ends in `? verify`, and the preview shows that marker b
55
52
 
56
53
  ## Tier 1: visual companion
57
54
 
58
- ASCII and prose stay as source of truth. Add a visual render as a feedback surface for the agent and for human review.
55
+ Prose stays as source of truth. Add a visual render as a feedback surface for the agent and for human review.
59
56
 
60
- - Excalidraw handles agent-driven wireframes when the round-trip canvas loop matters
57
+ - Excalidraw handles agent-drawn layouts when the round-trip canvas loop matters
61
58
  - Claude Design joins only when codebase extraction or the annotated handoff bundle is worth the ceiling cost
62
59
 
63
60
  Both produce derived artifacts, so human edits are review annotations rather than source changes.
64
61
 
65
62
  ### Seed shape
66
63
 
67
- Same as tier 0 with one addition. `WIREFRAMES.md` opts into Excalidraw rendering via a top-of-file marker like `<!-- excalidraw: WIREFRAMES.excalidraw -->`. `DESIGN.md` stays human-maintained.
64
+ Same as tier 0. `DESIGN.md` stays human-maintained.
68
65
 
69
66
  Impeccable, if installed, keeps its own root `DESIGN.md` and `PRODUCT.md` in its own format. These are separate files from the toolkit's `canon/DESIGN.md` and are not synced with it. Treat impeccable's pair as its own source of truth for its commands, and the toolkit's `canon/DESIGN.md` as the source other toolkit skills read.
70
67
 
@@ -91,7 +88,7 @@ Impeccable, if installed, keeps its own root `DESIGN.md` and `PRODUCT.md` in its
91
88
 
92
89
  The two tools solve non-overlapping halves of the visual companion problem.
93
90
 
94
- Excalidraw gives the agent a canvas it can read back over MCP. Output is agent-facing and persists as a JSON file in the repo. Pick it when Claude Code needs to iterate on wireframes autonomously, not when a human needs polished review artifacts.
91
+ Excalidraw gives the agent a canvas it can read back over MCP. Output is agent-facing and persists as a JSON file in the repo. Pick it when Claude Code needs to iterate on layouts autonomously, not when a human needs polished review artifacts.
95
92
 
96
93
  Claude Design reads the raw codebase without prose curation and produces a polished handoff bundle with chat history. Weekly quota makes it expensive, so reserve it for the extraction pass or the final handoff moment, not daily iteration.
97
94
 
@@ -147,4 +144,4 @@ Resist over-tiering early. Moving up is cheap because tiers stack. Moving down m
147
144
  - `canon/context/claude-plugin/skill-strategy/overview.md`: how to decide between workflow and domain-knowledge skills
148
145
  - [`microsoft/playwright-mcp`](https://github.com/microsoft/playwright-mcp): browser automation MCP used in tier 1 and tier 2
149
146
  - [`ChromeDevTools/chrome-devtools-mcp`](https://github.com/ChromeDevTools/chrome-devtools-mcp): live frontend debugging MCP used in tier 1 and tier 2
150
- - [`yctimlin/mcp_excalidraw`](https://github.com/yctimlin/mcp_excalidraw): community MCP server behind the tier 1 wireframe companion
147
+ - [`yctimlin/mcp_excalidraw`](https://github.com/yctimlin/mcp_excalidraw): community MCP server behind the tier 1 visual companion
@@ -20,24 +20,14 @@
20
20
  [renamed]
21
21
  "015-output" = "566-output"
22
22
  "035-tasks" = "602-tasks"
23
- "045-memory" = "603-memory"
24
23
  "055-scratch" = "604-scratch"
25
24
  "085-worktrees" = "605-worktrees"
26
25
  "087-git" = "606-git"
27
26
  "510-context" = "610-context"
28
27
  "511-indexes" = "611-indexes"
29
- "520-wireframes" = "620-wireframes"
30
- "530-requirements" = "630-requirements"
31
- "540-architecture" = "640-architecture"
32
28
  "550-design" = "650-design"
33
29
  "555-tasks" = "655-tasks"
34
- "556-groundwork" = "656-groundwork"
35
- "557-intake" = "657-intake"
36
30
  "558-plan" = "658-plan"
37
- "559-memory" = "659-memory"
38
- "561-teach" = "661-teach"
39
- "562-session" = "662-session"
40
- "563-ready" = "663-ready"
41
31
  "501-markdown" = "801-markdown"
42
32
  "580-readme" = "880-readme"
43
33
  "591-standard-authoring" = "891-standard-authoring"
@@ -47,17 +37,8 @@
47
37
  "090-code-comments" = "790-code-comments"
48
38
  "658-plan" = "plan"
49
39
  "610-context" = "context"
50
- "620-wireframes" = "wireframes"
51
- "630-requirements" = "requirements"
52
- "640-architecture" = "architecture"
53
40
  "650-design" = "design"
54
41
  "655-tasks" = "tasks"
55
- "656-groundwork" = "groundwork"
56
- "657-intake" = "intake"
57
- "659-memory" = "memory"
58
- "661-teach" = "teach"
59
- "662-session" = "session"
60
- "663-ready" = "ready"
61
42
  "570-skill" = "skill"
62
43
  "590-rule-authoring" = "rule"
63
44
  "801-markdown" = "markdown"
@@ -10,5 +10,5 @@ description: Enter a linked worktree for implementation, resolve shared session
10
10
 
11
11
  ## Shared session scratch
12
12
 
13
- - Shared session scratch (`.canon/plans/`, `.canon/review/`, `.canon/memory/`, `.canon/tasks/`) lives at the main worktree root, not inside a linked worktree. From a linked worktree, resolve these paths against the main root via `git worktree list --porcelain | grep -m 1 '^worktree ' | cut -d' ' -f2-`. Fall back to `pwd` if not a git repo.
13
+ - Shared session scratch (`.canon/plans/`, `.canon/review/`, `.canon/tasks/`) lives at the main worktree root, not inside a linked worktree. From a linked worktree, resolve these paths against the main root via `git worktree list --porcelain | grep -m 1 '^worktree ' | cut -d' ' -f2-`. Fall back to `pwd` if not a git repo.
14
14
  - From a linked worktree, or from a background session that entered none, `Edit` and `Write` refuse a main-root path and redirect to a worktree copy no later session reads. Never take that redirect. Route the write the way the `session-worktree` skill states, and report it rather than proceeding silently when that skill does not resolve. It ships with the plugin and this rule ships with the CLI, so a project that installed governance alone does not have it.
@@ -1,19 +1,18 @@
1
1
  ---
2
- # Generated by `canon gov regen` from standards/plan.md. Edit that frontmatter, not this file.
3
- description: Filename and slug, the required sections, and the suggested-and-answer contract for a feature plan
2
+ description: Route edits under .canon/plans/ to the plan-feature skill for the plan's sections, the answer contract, and its lifecycle
4
3
  paths:
5
4
  - '.canon/plans/**'
6
5
  ---
7
6
 
8
7
  # Plan standards
9
8
 
10
- ## Authority
9
+ ## Plan files
11
10
 
12
- - Follow the plan standard for filename and slug, the required sections, and the suggested-and-answer contract for a feature plan. It is the single source. Read it with `canon standards plan`.
11
+ - Load the `canon:plan-feature` skill before a hand edit under `.canon/plans/`. It carries the filename and slug, the required sections, and the suggested-and-answer contract for a feature plan. Report it rather than proceeding silently when the skill does not resolve.
13
12
  - Never fill an `- Answer:` slot on behalf of the person who owns it. A blank slot accepts the suggestion at execution time.
14
13
  - Never ship a question without a `- Suggested:` line. Write `- Suggested: needs your call, <why>` where the answer turns on preference.
15
14
  - Rewrite the `- Suggested:` line as `overridden at execution to <pick>,` plus the measurement when execution deviates from an unanswered question, leaving the slot blank. Put the same deviation in one line under the open task's `## Findings`.
16
15
  - Fetch the source a decision rests on and quote the passage under `**Sources:**`, or mark the entry `unverified`. Never cite an outside source from recall.
17
16
  - Move a shipped plan to `.canon/plans/archive/`. Never delete one.
18
17
  - Amend a plan in place when a decision changes. Do not append a second passage narrating the change.
19
- - Follow the plan lifecycle standard for when a plan is written, how it is amended, and its move to the archive. Read it with `canon standards plan-lifecycle`.
18
+ - Follow the lifecycle the `canon:plan-feature` skill carries for when a plan is written, how it is amended, and its move to the archive.
@@ -0,0 +1,18 @@
1
+ ---
2
+ description: Route edits under .canon/tasks/ to the task-board skill for task shape, the board, and a declined task, and keep a session handoff apart from a task
3
+ paths:
4
+ - '.canon/tasks/**'
5
+ ---
6
+
7
+ # Tasks standards
8
+
9
+ ## Task files
10
+
11
+ - Load the `canon:task-board` skill before a hand edit under `.canon/tasks/`. It carries the folder layout, filename convention, file format, origin lines, and archiving for a task file. Report it rather than proceeding silently when the skill does not resolve.
12
+ - Follow the board shape the `canon:task-board` skill carries for `priority.md` and `backlog.md`, their readiness groups, and row order.
13
+ - Never hand-edit `.canon/tasks/index.md`. A hook regenerates it from sibling frontmatter.
14
+ - Follow the decline shape the `canon:task-board` skill carries for a task decided against.
15
+
16
+ ## Session handoffs
17
+
18
+ - Treat a `.canon/tasks/session-*.md` file as a handoff governed by the `canon:session-map` skill. It is not a task and carries neither `## Outcomes` nor `## Findings`.
@@ -8,4 +8,4 @@ extends = ""
8
8
  # project loads no rule it can never apply. `standards` holds one rule per
9
9
  # standard routing its paths to it, generated by `canon gov regen` from each
10
10
  # standard's frontmatter rather than authored.
11
- rules = ["canon", "claude", "standards", "tooling", "writing", "120-bash"]
11
+ rules = ["canon", "claude", "standards", "tooling", "writing"]
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@erclx/canon",
3
3
  "type": "module",
4
- "version": "5.31.0",
4
+ "version": "5.32.0",
5
5
  "description": "Runs your agent's work and keeps its code good, on one setup for every repo.",
6
6
  "license": "MIT",
7
7
  "bin": {
@@ -101,7 +101,7 @@ log_step "Assert scaffold"
101
101
  # scaffold reads a standard through `canon standards <name>`, resolving against
102
102
  # the toolkit rather than a copy this gate could assert on. The two
103
103
  # rule paths stand for the `claude` and `canon` groups `base` takes whole.
104
- for path in "CLAUDE.md" ".claude/wiki/index.md" ".claude" "canon/context/index.md" "canon/wireframes/index.md" \
104
+ for path in "CLAUDE.md" ".claude/wiki/index.md" ".claude" "canon/context/index.md" \
105
105
  ".prettierrc" ".editorconfig" ".lintstagedrc" ".husky/pre-commit" ".github/workflows/verify.yml" "scripts/verify.sh" \
106
106
  ".claude/rules/canon/claude/566-output.md" ".claude/rules/canon/canon/604-scratch.md"; do
107
107
  if [ ! -e "$TARGET_DIR/$path" ]; then
@@ -43,7 +43,7 @@ console.log('regen-web-previews: wrote web/public/previews/design-tokens/')
43
43
  * chrome over a scratch copy holding this one workspace alone is what keeps
44
44
  * the jump menus from naming anything else.
45
45
  *
46
- * `.canon/teach/` is gitignored session scratch, per `standards/teach.md`, so
46
+ * `.canon/teach/` is gitignored session scratch, per `claude/skills/teach-workspace/references/teach.md`, so
47
47
  * it exists on the machine that authored the lesson and nowhere else,
48
48
  * including CI. `web/public/previews/teach-workspace/` is therefore the
49
49
  * durable copy: committed once the workspace exists, regenerated here as a
@@ -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 {
@@ -587,8 +495,8 @@ export const AUDITS: readonly AuditSpec[] = [
587
495
  corpus: 'tracked',
588
496
  // The one reason this verb refuses for that is an absence rather than a
589
497
  // 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
498
+ // target adopts `canon/context/` and an older install's `.canon/diagrams/`
499
+ // both, so without the allowance every such
592
500
  // project reports the verb unmeasured on every run and never changes.
593
501
  absentReasons: ['no-folders'] satisfies ContextAuditRefusal[],
594
502
  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,20 +22,11 @@ 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
28
  expect: 'canvas',
34
29
  },
35
- {
36
- prompt: 'Fire up the dev server the way this project documents it.',
37
- expect: 'project-commands',
38
- },
39
30
  {
40
31
  prompt:
41
32
  "We're about to hit the context limit, write the handoff before we lose state.",
@@ -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',
@@ -45,14 +45,6 @@ export const SETUP_CASES: readonly SkillCase[] = [
45
45
  'Something about the toolkit itself is broken, write it up and send it back to the maintainers.',
46
46
  expect: 'canon-feedback',
47
47
  },
48
- {
49
- prompt:
50
- "I don't know which specific toolkit skill I need, just handle it for me.",
51
- expect: 'canon-operator',
52
- },
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
48
  {
57
49
  prompt:
58
50
  "Whatever the right toolkit command is, get this project's rules installed.",
@@ -60,20 +52,11 @@ export const SETUP_CASES: readonly SkillCase[] = [
60
52
  },
61
53
  {
62
54
  prompt:
63
- 'Work through the open feedback issues on the toolkit repo one by one.',
55
+ 'File the open feedback issues on the toolkit repo into an intake folder.',
64
56
  expect: 'canon-feedback-triage',
65
57
  },
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.
58
+ // This answers one fixed question across a fixed domain list and repairs
59
+ // nothing, which is what separates it from the setup skill above.
77
60
  {
78
61
  prompt:
79
62
  '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',
@@ -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',
@@ -173,11 +145,6 @@ export const WORKFLOW_CASES: readonly SkillCase[] = [
173
145
  prompt: 'Tell me the paint and layout cost of this page right now.',
174
146
  expect: 'ux-measure',
175
147
  },
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
148
  {
182
149
  prompt:
183
150
  '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', 'memory', 'tasks']
27
21
 
28
22
  export type SeedScope = 'claude' | 'root'
29
23