@erclx/canon 4.0.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 (643) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +129 -0
  3. package/claude/.claude-plugin/plugin.json +19 -0
  4. package/claude/skills/bash-cli-script/REQUIREMENT.md +42 -0
  5. package/claude/skills/bash-cli-script/SKILL.md +48 -0
  6. package/claude/skills/bash-cli-script/references/template.md +43 -0
  7. package/claude/skills/bash-script/REQUIREMENT.md +36 -0
  8. package/claude/skills/bash-script/SKILL.md +100 -0
  9. package/claude/skills/bash-script/references/patterns.md +349 -0
  10. package/claude/skills/canon-cli/REQUIREMENT.md +41 -0
  11. package/claude/skills/canon-cli/SKILL.md +103 -0
  12. package/claude/skills/canon-feedback-file/REQUIREMENT.md +40 -0
  13. package/claude/skills/canon-feedback-file/SKILL.md +80 -0
  14. package/claude/skills/canon-feedback-triage/REQUIREMENT.md +40 -0
  15. package/claude/skills/canon-feedback-triage/SKILL.md +63 -0
  16. package/claude/skills/canon-operator/REQUIREMENT.md +61 -0
  17. package/claude/skills/canon-operator/SKILL.md +108 -0
  18. package/claude/skills/canon-rollout/REQUIREMENT.md +59 -0
  19. package/claude/skills/canon-rollout/SKILL.md +147 -0
  20. package/claude/skills/canon-screencast/REQUIREMENT.md +39 -0
  21. package/claude/skills/canon-screencast/SKILL.md +167 -0
  22. package/claude/skills/canon-slides-draft/REQUIREMENT.md +39 -0
  23. package/claude/skills/canon-slides-draft/SKILL.md +62 -0
  24. package/claude/skills/ci-workflow/REQUIREMENT.md +40 -0
  25. package/claude/skills/ci-workflow/SKILL.md +65 -0
  26. package/claude/skills/ci-workflow/references/workflows.md +98 -0
  27. package/claude/skills/claude-address-review/REQUIREMENT.md +57 -0
  28. package/claude/skills/claude-address-review/SKILL.md +212 -0
  29. package/claude/skills/claude-address-review/references/rebase-conflicts.md +39 -0
  30. package/claude/skills/claude-autoship/REQUIREMENT.md +50 -0
  31. package/claude/skills/claude-autoship/SKILL.md +207 -0
  32. package/claude/skills/claude-design-extract/REQUIREMENT.md +42 -0
  33. package/claude/skills/claude-design-extract/SKILL.md +102 -0
  34. package/claude/skills/claude-diagram/REQUIREMENT.md +45 -0
  35. package/claude/skills/claude-diagram/SKILL.md +177 -0
  36. package/claude/skills/claude-docs/REQUIREMENT.md +60 -0
  37. package/claude/skills/claude-docs/SKILL.md +287 -0
  38. package/claude/skills/claude-docs/references/anchor-sweep.md +58 -0
  39. package/claude/skills/claude-docs/references/wireframe-sweep.md +45 -0
  40. package/claude/skills/claude-feature/REQUIREMENT.md +36 -0
  41. package/claude/skills/claude-feature/SKILL.md +115 -0
  42. package/claude/skills/claude-groundwork/REQUIREMENT.md +48 -0
  43. package/claude/skills/claude-groundwork/SKILL.md +142 -0
  44. package/claude/skills/claude-intake/REQUIREMENT.md +49 -0
  45. package/claude/skills/claude-intake/SKILL.md +114 -0
  46. package/claude/skills/claude-intake-answer/REQUIREMENT.md +48 -0
  47. package/claude/skills/claude-intake-answer/SKILL.md +90 -0
  48. package/claude/skills/claude-markdown-propose/REQUIREMENT.md +48 -0
  49. package/claude/skills/claude-markdown-propose/SKILL.md +118 -0
  50. package/claude/skills/claude-markdown-propose/references/format.md +107 -0
  51. package/claude/skills/claude-memory-capture/REQUIREMENT.md +50 -0
  52. package/claude/skills/claude-memory-capture/SKILL.md +101 -0
  53. package/claude/skills/claude-memory-review/REQUIREMENT.md +50 -0
  54. package/claude/skills/claude-memory-review/SKILL.md +210 -0
  55. package/claude/skills/claude-memory-review/references/receipt-format.md +48 -0
  56. package/claude/skills/claude-orchestrate/REQUIREMENT.md +121 -0
  57. package/claude/skills/claude-orchestrate/SKILL.md +241 -0
  58. package/claude/skills/claude-orchestrate/references/orchestrator-dispatch.md +132 -0
  59. package/claude/skills/claude-orchestrate/references/orchestrator-handoff.md +32 -0
  60. package/claude/skills/claude-orchestrate/references/orchestrator-parked.md +72 -0
  61. package/claude/skills/claude-orchestrate/references/orchestrator-poll.md +87 -0
  62. package/claude/skills/claude-orchestrate/references/orchestrator-resume.md +30 -0
  63. package/claude/skills/claude-orchestrate/references/orchestrator-sweep.md +21 -0
  64. package/claude/skills/claude-orchestrate/scripts/poll.sh +373 -0
  65. package/claude/skills/claude-orchestrate/scripts/watch.sh +181 -0
  66. package/claude/skills/claude-pr-review/REQUIREMENT.md +47 -0
  67. package/claude/skills/claude-pr-review/SKILL.md +295 -0
  68. package/claude/skills/claude-review/REQUIREMENT.md +39 -0
  69. package/claude/skills/claude-review/SKILL.md +142 -0
  70. package/claude/skills/claude-seed-sync/REQUIREMENT.md +45 -0
  71. package/claude/skills/claude-seed-sync/SKILL.md +156 -0
  72. package/claude/skills/claude-standards-audit/REQUIREMENT.md +33 -0
  73. package/claude/skills/claude-standards-audit/SKILL.md +99 -0
  74. package/claude/skills/claude-tasks/REQUIREMENT.md +43 -0
  75. package/claude/skills/claude-tasks/SKILL.md +161 -0
  76. package/claude/skills/claude-teach/REQUIREMENT.md +56 -0
  77. package/claude/skills/claude-teach/SKILL.md +196 -0
  78. package/claude/skills/claude-teach/references/lesson-craft.md +59 -0
  79. package/claude/skills/claude-teach/references/pedagogy.md +67 -0
  80. package/claude/skills/claude-teach/references/promotion.md +54 -0
  81. package/claude/skills/claude-ui-test/REQUIREMENT.md +40 -0
  82. package/claude/skills/claude-ui-test/SKILL.md +77 -0
  83. package/claude/skills/claude-ux-audit/REQUIREMENT.md +40 -0
  84. package/claude/skills/claude-ux-audit/SKILL.md +79 -0
  85. package/claude/skills/claude-ux-measure/REQUIREMENT.md +48 -0
  86. package/claude/skills/claude-ux-measure/SKILL.md +122 -0
  87. package/claude/skills/claude-worker/REQUIREMENT.md +54 -0
  88. package/claude/skills/claude-worker/SKILL.md +96 -0
  89. package/claude/skills/claude-worktree/REQUIREMENT.md +58 -0
  90. package/claude/skills/claude-worktree/SKILL.md +136 -0
  91. package/claude/skills/create-rule/REQUIREMENT.md +45 -0
  92. package/claude/skills/create-rule/SKILL.md +68 -0
  93. package/claude/skills/create-skill/REQUIREMENT.md +38 -0
  94. package/claude/skills/create-skill/SKILL.md +32 -0
  95. package/claude/skills/create-snippet/REQUIREMENT.md +39 -0
  96. package/claude/skills/create-snippet/SKILL.md +30 -0
  97. package/claude/skills/create-standard/REQUIREMENT.md +35 -0
  98. package/claude/skills/create-standard/SKILL.md +29 -0
  99. package/claude/skills/decision-escalate/REQUIREMENT.md +45 -0
  100. package/claude/skills/decision-escalate/SKILL.md +79 -0
  101. package/claude/skills/docs-sync/REQUIREMENT.md +41 -0
  102. package/claude/skills/docs-sync/SKILL.md +95 -0
  103. package/claude/skills/git-branch/REQUIREMENT.md +38 -0
  104. package/claude/skills/git-branch/SKILL.md +60 -0
  105. package/claude/skills/git-commit/REQUIREMENT.md +36 -0
  106. package/claude/skills/git-commit/SKILL.md +49 -0
  107. package/claude/skills/git-followup/REQUIREMENT.md +43 -0
  108. package/claude/skills/git-followup/SKILL.md +48 -0
  109. package/claude/skills/git-issue/REQUIREMENT.md +38 -0
  110. package/claude/skills/git-issue/SKILL.md +65 -0
  111. package/claude/skills/git-pr/REQUIREMENT.md +50 -0
  112. package/claude/skills/git-pr/SKILL.md +164 -0
  113. package/claude/skills/git-pr/references/labels.md +95 -0
  114. package/claude/skills/git-ship/REQUIREMENT.md +42 -0
  115. package/claude/skills/git-ship/SKILL.md +55 -0
  116. package/claude/skills/git-split/REQUIREMENT.md +39 -0
  117. package/claude/skills/git-split/SKILL.md +162 -0
  118. package/claude/skills/git-stage/REQUIREMENT.md +39 -0
  119. package/claude/skills/git-stage/SKILL.md +73 -0
  120. package/claude/skills/git-worktree/REQUIREMENT.md +38 -0
  121. package/claude/skills/git-worktree/SKILL.md +130 -0
  122. package/claude/skills/migration-claude-md/REQUIREMENT.md +40 -0
  123. package/claude/skills/migration-claude-md/SKILL.md +76 -0
  124. package/claude/skills/migration-context/REQUIREMENT.md +36 -0
  125. package/claude/skills/migration-context/SKILL.md +95 -0
  126. package/claude/skills/migration-standards-drop/REQUIREMENT.md +55 -0
  127. package/claude/skills/migration-standards-drop/SKILL.md +113 -0
  128. package/claude/skills/migration-superseded/REQUIREMENT.md +44 -0
  129. package/claude/skills/migration-superseded/SKILL.md +115 -0
  130. package/claude/skills/project-commands/REQUIREMENT.md +42 -0
  131. package/claude/skills/project-commands/SKILL.md +85 -0
  132. package/claude/skills/restate-plainly/REQUIREMENT.md +41 -0
  133. package/claude/skills/restate-plainly/SKILL.md +39 -0
  134. package/claude/skills/session-map/REQUIREMENT.md +57 -0
  135. package/claude/skills/session-map/SKILL.md +70 -0
  136. package/claude/skills/session-resume/REQUIREMENT.md +49 -0
  137. package/claude/skills/session-resume/SKILL.md +51 -0
  138. package/claude/skills/setup-gov/REQUIREMENT.md +37 -0
  139. package/claude/skills/setup-gov/SKILL.md +77 -0
  140. package/claude/skills/setup-indexes/REQUIREMENT.md +45 -0
  141. package/claude/skills/setup-indexes/SKILL.md +153 -0
  142. package/claude/skills/setup-init/REQUIREMENT.md +45 -0
  143. package/claude/skills/setup-init/SKILL.md +127 -0
  144. package/claude/skills/setup-plugins/REQUIREMENT.md +42 -0
  145. package/claude/skills/setup-plugins/SKILL.md +81 -0
  146. package/claude/skills/setup-plugins/references/plugin-catalog.md +53 -0
  147. package/claude/skills/setup-verify/REQUIREMENT.md +39 -0
  148. package/claude/skills/setup-verify/SKILL.md +51 -0
  149. package/claude/skills/systematic-debugging/REQUIREMENT.md +41 -0
  150. package/claude/skills/systematic-debugging/SKILL.md +70 -0
  151. package/claude/skills/write-human/REQUIREMENT.md +46 -0
  152. package/claude/skills/write-human/SKILL.md +68 -0
  153. package/claude/skills/write-human/references/density.md +38 -0
  154. package/claude/skills/write-human/references/machine-tells.md +107 -0
  155. package/claude/skills/write-human/references/source-material.md +37 -0
  156. package/claude/skills/youtube-transcripts/REQUIREMENT.md +38 -0
  157. package/claude/skills/youtube-transcripts/SKILL.md +34 -0
  158. package/docs/agents/audits.md +98 -0
  159. package/docs/agents/capture.md +37 -0
  160. package/docs/agents/census.md +23 -0
  161. package/docs/agents/commands.md +146 -0
  162. package/docs/agents/comments.md +34 -0
  163. package/docs/agents/context-audit-checks.md +120 -0
  164. package/docs/agents/context-audit.md +83 -0
  165. package/docs/agents/counts.md +76 -0
  166. package/docs/agents/demo.md +86 -0
  167. package/docs/agents/docs.md +17 -0
  168. package/docs/agents/gate.md +84 -0
  169. package/docs/agents/index.md +47 -0
  170. package/docs/agents/indexes.md +35 -0
  171. package/docs/agents/install-and-sync.md +385 -0
  172. package/docs/agents/intake.md +81 -0
  173. package/docs/agents/key-changes.md +103 -0
  174. package/docs/agents/label-coverage.md +73 -0
  175. package/docs/agents/markdown-audit.md +197 -0
  176. package/docs/agents/output-shape.md +70 -0
  177. package/docs/agents/overview.md +26 -0
  178. package/docs/agents/records.md +170 -0
  179. package/docs/agents/restated.md +81 -0
  180. package/docs/agents/review-classification.md +77 -0
  181. package/docs/agents/routing.md +61 -0
  182. package/docs/agents/rule-citations.md +98 -0
  183. package/docs/agents/sandbox.md +71 -0
  184. package/docs/agents/scripting.md +149 -0
  185. package/docs/agents/sessions.md +120 -0
  186. package/docs/agents/skills-audit.md +94 -0
  187. package/docs/agents/skills-reach.md +64 -0
  188. package/docs/agents/standards-audit.md +38 -0
  189. package/docs/agents/state-scoped-risk.md +105 -0
  190. package/docs/agents/superseded.md +85 -0
  191. package/docs/agents/targets.md +83 -0
  192. package/docs/agents/tasks.md +200 -0
  193. package/docs/agents/teach.md +158 -0
  194. package/docs/agents/test-order.md +56 -0
  195. package/docs/agents/worktrees.md +62 -0
  196. package/docs/ai-workflow.md +317 -0
  197. package/docs/index.md +23 -0
  198. package/docs/operating-model.md +223 -0
  199. package/docs/target-projects.md +258 -0
  200. package/docs/visual-design-workflow.md +151 -0
  201. package/docs/zshrc-aliases.md +65 -0
  202. package/governance/rules/ci/700-ci-workflow.md +44 -0
  203. package/governance/rules/claude/500-prose.md +15 -0
  204. package/governance/rules/claude/501-markdown.md +14 -0
  205. package/governance/rules/claude/510-context.md +28 -0
  206. package/governance/rules/claude/511-indexes.md +14 -0
  207. package/governance/rules/claude/520-wireframes.md +12 -0
  208. package/governance/rules/claude/530-requirements.md +11 -0
  209. package/governance/rules/claude/540-architecture.md +11 -0
  210. package/governance/rules/claude/550-design.md +11 -0
  211. package/governance/rules/claude/555-tasks.md +12 -0
  212. package/governance/rules/claude/556-groundwork.md +11 -0
  213. package/governance/rules/claude/557-intake.md +11 -0
  214. package/governance/rules/claude/558-plan.md +22 -0
  215. package/governance/rules/claude/559-memory.md +11 -0
  216. package/governance/rules/claude/560-diagrams.md +18 -0
  217. package/governance/rules/claude/561-teach.md +13 -0
  218. package/governance/rules/claude/562-session.md +15 -0
  219. package/governance/rules/claude/570-skill.md +24 -0
  220. package/governance/rules/claude/575-hooks.md +17 -0
  221. package/governance/rules/claude/576-settings.md +14 -0
  222. package/governance/rules/claude/580-readme.md +11 -0
  223. package/governance/rules/claude/590-rule-authoring.md +12 -0
  224. package/governance/rules/claude/591-standard-authoring.md +12 -0
  225. package/governance/rules/claude/592-claude-md.md +19 -0
  226. package/governance/rules/core/000-constitution.md +30 -0
  227. package/governance/rules/core/005-behavior.md +27 -0
  228. package/governance/rules/core/010-testing.md +35 -0
  229. package/governance/rules/core/015-output.md +20 -0
  230. package/governance/rules/core/020-concurrency.md +22 -0
  231. package/governance/rules/core/025-indexes.md +9 -0
  232. package/governance/rules/core/030-error-handling.md +31 -0
  233. package/governance/rules/core/035-tasks.md +13 -0
  234. package/governance/rules/core/040-performance.md +20 -0
  235. package/governance/rules/core/045-memory.md +12 -0
  236. package/governance/rules/core/050-logging.md +20 -0
  237. package/governance/rules/core/055-scratch.md +9 -0
  238. package/governance/rules/core/060-naming.md +19 -0
  239. package/governance/rules/core/065-spelling.md +19 -0
  240. package/governance/rules/core/070-planning.md +18 -0
  241. package/governance/rules/core/075-dependencies.md +25 -0
  242. package/governance/rules/core/080-config-comments.md +22 -0
  243. package/governance/rules/core/085-worktrees.md +17 -0
  244. package/governance/rules/core/087-git.md +11 -0
  245. package/governance/rules/core/090-code-comments.md +39 -0
  246. package/governance/rules/framework/200-react.md +51 -0
  247. package/governance/rules/framework/210-astro.md +41 -0
  248. package/governance/rules/framework/220-fastapi.md +43 -0
  249. package/governance/rules/framework/230-nextjs.md +48 -0
  250. package/governance/rules/framework/250-tailwind.md +32 -0
  251. package/governance/rules/framework/260-shadcn.md +34 -0
  252. package/governance/rules/lang/100-typescript.md +40 -0
  253. package/governance/rules/lang/110-python.md +42 -0
  254. package/governance/rules/lang/120-bash.md +19 -0
  255. package/governance/rules/lib/300-testing-ts.md +39 -0
  256. package/governance/rules/lib/305-e2e-reliability.md +34 -0
  257. package/governance/rules/lib/306-test-scope.md +25 -0
  258. package/governance/rules/lib/310-zod.md +25 -0
  259. package/governance/rules/lib/320-tanstack-query.md +32 -0
  260. package/governance/rules/lib/330-testing-py.md +44 -0
  261. package/governance/rules/lib/340-pydantic.md +38 -0
  262. package/governance/rules/lib/350-security-web.md +32 -0
  263. package/governance/rules/lib/360-security-server.md +39 -0
  264. package/governance/rules/lib/370-database.md +35 -0
  265. package/governance/rules/snippets/505-at-references.md +9 -0
  266. package/governance/rules/ui/400-ui.md +36 -0
  267. package/governance/rules/ui/410-a11y.md +48 -0
  268. package/governance/rules/ui/420-forms.md +36 -0
  269. package/governance/rules/ui/430-ux-completeness.md +65 -0
  270. package/governance/rules/ui/440-surface-capture.md +34 -0
  271. package/governance/rules/ui/450-link-behavior.md +19 -0
  272. package/governance/stacks/astro.toml +2 -0
  273. package/governance/stacks/base.toml +8 -0
  274. package/governance/stacks/node-server.toml +2 -0
  275. package/governance/stacks/node.toml +2 -0
  276. package/governance/stacks/python-fastapi.toml +2 -0
  277. package/governance/stacks/python.toml +2 -0
  278. package/governance/stacks/react.toml +2 -0
  279. package/package.json +69 -0
  280. package/scripts/config.sh +11 -0
  281. package/scripts/core/bootstrap.sh +81 -0
  282. package/scripts/core/check-color-source.sh +41 -0
  283. package/scripts/core/check-ignore-parity.sh +162 -0
  284. package/scripts/core/check-plugin-boundary.sh +45 -0
  285. package/scripts/core/check-seed-independence.sh +59 -0
  286. package/scripts/core/check-skill-paths.sh +24 -0
  287. package/scripts/core/clean.sh +36 -0
  288. package/scripts/core/install-check.sh +101 -0
  289. package/scripts/core/list-seed-roots.sh +18 -0
  290. package/scripts/core/regen-claude-copies.sh +10 -0
  291. package/scripts/core/regen-hero.sh +217 -0
  292. package/scripts/core/regen-indexes.sh +10 -0
  293. package/scripts/core/regen-tooling-paths.sh +61 -0
  294. package/scripts/core/repair-bare-flag.sh +19 -0
  295. package/scripts/core/snapshot.sh +134 -0
  296. package/scripts/core/update.sh +35 -0
  297. package/scripts/docs/list.sh +165 -0
  298. package/scripts/lib/frontmatter.sh +30 -0
  299. package/scripts/lib/gov.sh +14 -0
  300. package/scripts/lib/sandbox-fixtures.sh +191 -0
  301. package/scripts/lib/sandbox-git.sh +125 -0
  302. package/scripts/lib/sandbox-path.sh +206 -0
  303. package/scripts/lib/tooling.sh +35 -0
  304. package/scripts/lib/ui.sh +266 -0
  305. package/scripts/lib/worktree.sh +20 -0
  306. package/scripts/manage-sandbox.sh +466 -0
  307. package/scripts/snippets/create.sh +156 -0
  308. package/scripts/standards/list.sh +115 -0
  309. package/scripts/tooling/create.sh +109 -0
  310. package/scripts/tooling/verify.sh +179 -0
  311. package/snippets/align.md +12 -0
  312. package/snippets/claude/decision-memo.md +39 -0
  313. package/snippets/claude/feature-recap.md +19 -0
  314. package/snippets/claude/figma-steps.md +24 -0
  315. package/snippets/compact-summary.md +5 -0
  316. package/snippets/decision-help.md +6 -0
  317. package/snippets/meta-prompt.md +14 -0
  318. package/snippets/research-prompt.md +7 -0
  319. package/snippets/session-notes.md +11 -0
  320. package/snippets/snippets.toml +5 -0
  321. package/snippets/step-by-step.md +10 -0
  322. package/snippets/web-research.md +21 -0
  323. package/src/audits/baseline.ts +201 -0
  324. package/src/audits/catalog.ts +876 -0
  325. package/src/audits/run.ts +204 -0
  326. package/src/autoship/classify.ts +75 -0
  327. package/src/autoship/paths.ts +51 -0
  328. package/src/binary.ts +16 -0
  329. package/src/browser/engine.ts +40 -0
  330. package/src/census/count.ts +113 -0
  331. package/src/claude/cases/all.ts +24 -0
  332. package/src/claude/cases/authoring.ts +53 -0
  333. package/src/claude/cases/claude-workflow.ts +158 -0
  334. package/src/claude/cases/git.ts +44 -0
  335. package/src/claude/cases/misc.ts +27 -0
  336. package/src/claude/cases/setup.ts +94 -0
  337. package/src/claude/gitignore.ts +51 -0
  338. package/src/claude/routing.ts +283 -0
  339. package/src/claude/seeds-list.ts +47 -0
  340. package/src/claude/seeds.ts +150 -0
  341. package/src/claude/settings.ts +151 -0
  342. package/src/claude/skills-audit.ts +228 -0
  343. package/src/claude/skills-drift.ts +156 -0
  344. package/src/claude/skills-list.ts +99 -0
  345. package/src/claude/skills-rank.ts +320 -0
  346. package/src/claude/skills-reach.ts +227 -0
  347. package/src/cli-run.ts +43 -0
  348. package/src/cli.ts +200 -0
  349. package/src/commands/audits.ts +350 -0
  350. package/src/commands/autoship.ts +129 -0
  351. package/src/commands/capture.ts +133 -0
  352. package/src/commands/census.ts +105 -0
  353. package/src/commands/claude.ts +1286 -0
  354. package/src/commands/comments.ts +240 -0
  355. package/src/commands/context.ts +857 -0
  356. package/src/commands/demo.ts +389 -0
  357. package/src/commands/deps.ts +173 -0
  358. package/src/commands/design.ts +36 -0
  359. package/src/commands/docs.ts +60 -0
  360. package/src/commands/feedback-format.ts +23 -0
  361. package/src/commands/feedback.ts +112 -0
  362. package/src/commands/gate.ts +189 -0
  363. package/src/commands/gov.ts +1265 -0
  364. package/src/commands/indexes.ts +184 -0
  365. package/src/commands/init.ts +113 -0
  366. package/src/commands/intake.ts +406 -0
  367. package/src/commands/inventory.ts +256 -0
  368. package/src/commands/labels.ts +361 -0
  369. package/src/commands/markdown.ts +544 -0
  370. package/src/commands/migrate.ts +175 -0
  371. package/src/commands/pass-through.ts +39 -0
  372. package/src/commands/pr.ts +411 -0
  373. package/src/commands/records.ts +728 -0
  374. package/src/commands/sandbox.ts +468 -0
  375. package/src/commands/secrets.ts +132 -0
  376. package/src/commands/serve.ts +159 -0
  377. package/src/commands/sessions.ts +408 -0
  378. package/src/commands/slides.ts +126 -0
  379. package/src/commands/snippets.ts +84 -0
  380. package/src/commands/standards.ts +247 -0
  381. package/src/commands/sync.ts +428 -0
  382. package/src/commands/targets.ts +319 -0
  383. package/src/commands/tasks.ts +743 -0
  384. package/src/commands/teach.ts +786 -0
  385. package/src/commands/tooling.ts +573 -0
  386. package/src/commands/transcripts.ts +44 -0
  387. package/src/commands/upgrade.ts +231 -0
  388. package/src/commands/wiki.ts +100 -0
  389. package/src/commands/worktrees.ts +191 -0
  390. package/src/comments/scan.ts +338 -0
  391. package/src/comments/trend.ts +207 -0
  392. package/src/comments/vocabulary.ts +85 -0
  393. package/src/context/architecture.ts +364 -0
  394. package/src/context/audit.ts +790 -0
  395. package/src/context/citations.ts +196 -0
  396. package/src/context/folders.ts +186 -0
  397. package/src/context/gate.ts +57 -0
  398. package/src/context/index-drift.ts +64 -0
  399. package/src/context/narration.ts +99 -0
  400. package/src/copy.ts +30 -0
  401. package/src/counts/catalogs.ts +96 -0
  402. package/src/counts/numbers.ts +79 -0
  403. package/src/counts/scan.ts +314 -0
  404. package/src/demo/beats.ts +135 -0
  405. package/src/demo/compile.ts +326 -0
  406. package/src/demo/container.ts +63 -0
  407. package/src/demo/cursors.ts +55 -0
  408. package/src/demo/drive.ts +357 -0
  409. package/src/demo/pointer.ts +178 -0
  410. package/src/demo/theme.ts +112 -0
  411. package/src/deps/audit.ts +153 -0
  412. package/src/design/parse.ts +116 -0
  413. package/src/design/render.ts +249 -0
  414. package/src/docs/read.ts +77 -0
  415. package/src/exec.ts +16 -0
  416. package/src/exempt-marker.ts +43 -0
  417. package/src/frontmatter.ts +13 -0
  418. package/src/gate/measures.ts +682 -0
  419. package/src/gate/sequencer.ts +386 -0
  420. package/src/gate/stages.ts +412 -0
  421. package/src/git-env.ts +36 -0
  422. package/src/git-files.ts +105 -0
  423. package/src/git-ignore.ts +46 -0
  424. package/src/github-format.ts +13 -0
  425. package/src/github.ts +24 -0
  426. package/src/gov/adapter.ts +103 -0
  427. package/src/gov/citations.ts +514 -0
  428. package/src/gov/consumed.ts +129 -0
  429. package/src/gov/install.ts +132 -0
  430. package/src/gov/list.ts +106 -0
  431. package/src/gov/payload.ts +39 -0
  432. package/src/gov/restated.ts +814 -0
  433. package/src/gov/stacks.ts +205 -0
  434. package/src/gov/superseded.ts +415 -0
  435. package/src/gov/test-order.ts +407 -0
  436. package/src/indexes/frontmatter.ts +46 -0
  437. package/src/indexes/regen.ts +84 -0
  438. package/src/indexes/render.ts +201 -0
  439. package/src/indexes/walk.ts +83 -0
  440. package/src/init/flags.ts +60 -0
  441. package/src/init/plan.ts +114 -0
  442. package/src/init/run.ts +46 -0
  443. package/src/init/steps.ts +77 -0
  444. package/src/intake/folder.ts +320 -0
  445. package/src/intake/items.ts +174 -0
  446. package/src/inventory/config.ts +117 -0
  447. package/src/inventory/group.ts +76 -0
  448. package/src/inventory/subjects.ts +114 -0
  449. package/src/inventory/walk.ts +129 -0
  450. package/src/labels/audit.ts +82 -0
  451. package/src/labels/coverage.ts +79 -0
  452. package/src/labels/map.ts +101 -0
  453. package/src/labels/phase.ts +95 -0
  454. package/src/markdown/bans.ts +94 -0
  455. package/src/markdown/files.ts +102 -0
  456. package/src/markdown/gate.ts +28 -0
  457. package/src/markdown/scan.ts +295 -0
  458. package/src/markdown/structure.ts +730 -0
  459. package/src/migrate/apply.ts +115 -0
  460. package/src/migrate/plan.ts +103 -0
  461. package/src/migrate/rename.ts +183 -0
  462. package/src/pr/bijection.ts +145 -0
  463. package/src/pr/paths.ts +335 -0
  464. package/src/process/harness.ts +167 -0
  465. package/src/project-root.ts +19 -0
  466. package/src/records/backup.ts +455 -0
  467. package/src/records/migrate.ts +78 -0
  468. package/src/records/size.ts +260 -0
  469. package/src/records/validate.ts +1162 -0
  470. package/src/sandbox/census.ts +228 -0
  471. package/src/sandbox/coverage.ts +115 -0
  472. package/src/sandbox/expect.ts +629 -0
  473. package/src/sandbox/tree.ts +47 -0
  474. package/src/secrets/marker.ts +30 -0
  475. package/src/secrets/patterns.ts +142 -0
  476. package/src/secrets/scan.ts +123 -0
  477. package/src/secrets/shipped.ts +111 -0
  478. package/src/seed-marker.ts +74 -0
  479. package/src/serve/static.ts +322 -0
  480. package/src/sessions/claim.ts +85 -0
  481. package/src/sessions/live.ts +79 -0
  482. package/src/sessions/registry.ts +137 -0
  483. package/src/sessions/resolve.ts +333 -0
  484. package/src/slides/layouts.ts +391 -0
  485. package/src/slides/open.ts +18 -0
  486. package/src/slides/parse.ts +84 -0
  487. package/src/slides/render.ts +88 -0
  488. package/src/slides/styles.ts +44 -0
  489. package/src/snippets/categories.ts +66 -0
  490. package/src/snippets/list.ts +32 -0
  491. package/src/snippets/presets.ts +50 -0
  492. package/src/standards/audit.ts +132 -0
  493. package/src/standards/read.ts +100 -0
  494. package/src/sync/check.ts +692 -0
  495. package/src/sync/engine.ts +576 -0
  496. package/src/sync/git.ts +225 -0
  497. package/src/sync/history.ts +123 -0
  498. package/src/sync/layout.ts +140 -0
  499. package/src/sync/reverse.ts +268 -0
  500. package/src/sync/seeds-report.ts +126 -0
  501. package/src/sync/stamp.ts +358 -0
  502. package/src/sync/target.ts +70 -0
  503. package/src/sync/workflow.ts +200 -0
  504. package/src/target.ts +43 -0
  505. package/src/targets/pulls.ts +250 -0
  506. package/src/targets/registry.ts +203 -0
  507. package/src/targets/resolve.ts +145 -0
  508. package/src/targets/sweep.ts +246 -0
  509. package/src/tasks/archive.ts +506 -0
  510. package/src/tasks/record.ts +311 -0
  511. package/src/tasks/trunk.ts +89 -0
  512. package/src/tasks/validate.ts +1001 -0
  513. package/src/teach/lesson.ts +180 -0
  514. package/src/teach/workspace.ts +842 -0
  515. package/src/tooling/gitignore.ts +122 -0
  516. package/src/tooling/inject.ts +193 -0
  517. package/src/tooling/list.ts +39 -0
  518. package/src/tooling/manifest.ts +176 -0
  519. package/src/tooling/package.ts +166 -0
  520. package/src/tooling/read.ts +65 -0
  521. package/src/tooling/scan.ts +147 -0
  522. package/src/tooling/stamp.ts +44 -0
  523. package/src/transcripts/fetch.ts +156 -0
  524. package/src/transcripts/metadata.ts +54 -0
  525. package/src/transcripts/vtt.ts +114 -0
  526. package/src/ui.ts +266 -0
  527. package/src/version/compare.ts +53 -0
  528. package/src/version/installed.ts +40 -0
  529. package/src/version/manager.ts +67 -0
  530. package/src/version/skew.ts +192 -0
  531. package/src/wiki/init.ts +85 -0
  532. package/src/worktree.ts +143 -0
  533. package/src/worktrees/reclaim.ts +306 -0
  534. package/standards/architecture.md +72 -0
  535. package/standards/branch.md +59 -0
  536. package/standards/commit.md +72 -0
  537. package/standards/context.md +151 -0
  538. package/standards/design.md +93 -0
  539. package/standards/diagrams.md +152 -0
  540. package/standards/glossary.md +75 -0
  541. package/standards/groundwork.md +211 -0
  542. package/standards/index.md +36 -0
  543. package/standards/intake.md +192 -0
  544. package/standards/issue.md +94 -0
  545. package/standards/markdown.md +137 -0
  546. package/standards/memory.md +144 -0
  547. package/standards/plan.md +172 -0
  548. package/standards/pr.md +139 -0
  549. package/standards/publish.md +51 -0
  550. package/standards/readme.md +208 -0
  551. package/standards/requirements.md +70 -0
  552. package/standards/rule.md +118 -0
  553. package/standards/session.md +109 -0
  554. package/standards/skill.md +300 -0
  555. package/standards/slug.md +39 -0
  556. package/standards/snippets.md +76 -0
  557. package/standards/standard.md +170 -0
  558. package/standards/tasks.md +254 -0
  559. package/standards/teach.md +153 -0
  560. package/standards/versioning.md +71 -0
  561. package/standards/wireframes.md +113 -0
  562. package/tooling/astro/configs/astro.config.mjs +31 -0
  563. package/tooling/astro/configs/eslint.config.js +79 -0
  564. package/tooling/astro/configs/playwright.config.ts +26 -0
  565. package/tooling/astro/configs/tsconfig.json +12 -0
  566. package/tooling/astro/configs/vitest.config.ts +22 -0
  567. package/tooling/astro/manifest.toml +34 -0
  568. package/tooling/astro/reference.md +60 -0
  569. package/tooling/base/configs/.editorconfig +5 -0
  570. package/tooling/base/configs/.github/pull_request_template.md +18 -0
  571. package/tooling/base/configs/.github/workflows/verify.yml +35 -0
  572. package/tooling/base/configs/.husky/commit-msg +1 -0
  573. package/tooling/base/configs/.husky/post-merge +61 -0
  574. package/tooling/base/configs/.husky/post-rewrite +21 -0
  575. package/tooling/base/configs/.husky/pre-commit +1 -0
  576. package/tooling/base/configs/.husky/pre-push +1 -0
  577. package/tooling/base/configs/.prettierrc +12 -0
  578. package/tooling/base/configs/.shellcheckrc +1 -0
  579. package/tooling/base/configs/.vscode/extensions.json +9 -0
  580. package/tooling/base/configs/.vscode/settings.json +3 -0
  581. package/tooling/base/configs/commitlint.config.js +11 -0
  582. package/tooling/base/configs/scripts/verify.sh +64 -0
  583. package/tooling/base/manifest.toml +30 -0
  584. package/tooling/base/reference.md +98 -0
  585. package/tooling/base/seeds/.claude/context/ci.md +33 -0
  586. package/tooling/base/seeds/.claude/context/development.md +37 -0
  587. package/tooling/base/seeds/.claude/context/index.md +11 -0
  588. package/tooling/base/seeds/.cspell/project-terms.txt +0 -0
  589. package/tooling/base/seeds/.cspell/tech-stack.txt +19 -0
  590. package/tooling/base/seeds/.lintstagedrc +8 -0
  591. package/tooling/base/seeds/.prettierignore +0 -0
  592. package/tooling/base/seeds/cspell.json +20 -0
  593. package/tooling/claude/manifest.toml +14 -0
  594. package/tooling/claude/reference.md +79 -0
  595. package/tooling/claude/seeds/.claude/ARCHITECTURE.md +13 -0
  596. package/tooling/claude/seeds/.claude/DESIGN.md +62 -0
  597. package/tooling/claude/seeds/.claude/REQUIREMENTS.md +18 -0
  598. package/tooling/claude/seeds/.claude/diagrams/index.md +8 -0
  599. package/tooling/claude/seeds/.claude/hooks/index-reminder.sh +50 -0
  600. package/tooling/claude/seeds/.claude/hooks/memory-index.sh +68 -0
  601. package/tooling/claude/seeds/.claude/hooks/path-form.sh +57 -0
  602. package/tooling/claude/seeds/.claude/hooks/scratch-guard.sh +52 -0
  603. package/tooling/claude/seeds/.claude/hooks/standards-audit.sh +86 -0
  604. package/tooling/claude/seeds/.claude/hooks/tasks-index.sh +71 -0
  605. package/tooling/claude/seeds/.claude/memory/index.md +8 -0
  606. package/tooling/claude/seeds/.claude/settings.json +47 -0
  607. package/tooling/claude/seeds/.claude/tasks/index.md +8 -0
  608. package/tooling/claude/seeds/.claude/wireframes/index.md +8 -0
  609. package/tooling/claude/seeds/CLAUDE.md +29 -0
  610. package/tooling/claude/user/settings.template.json +10 -0
  611. package/tooling/claude/user/statusline-command.sh +53 -0
  612. package/tooling/python/configs/.coveragerc +14 -0
  613. package/tooling/python/configs/.python-version +1 -0
  614. package/tooling/python/configs/mypy.ini +6 -0
  615. package/tooling/python/configs/pytest.ini +4 -0
  616. package/tooling/python/configs/ruff.toml +15 -0
  617. package/tooling/python/configs/scripts/verify.sh +77 -0
  618. package/tooling/python/manifest.toml +16 -0
  619. package/tooling/python/reference.md +66 -0
  620. package/tooling/python/seeds/.cspell/tech-stack.txt +19 -0
  621. package/tooling/python/seeds/tests/test_smoke.py +2 -0
  622. package/tooling/vite-react/configs/playwright.config.ts +26 -0
  623. package/tooling/vite-react/configs/tsconfig.json +35 -0
  624. package/tooling/vite-react/configs/vite.config.ts +24 -0
  625. package/tooling/vite-react/configs/vitest.config.ts +26 -0
  626. package/tooling/vite-react/manifest.toml +23 -0
  627. package/tooling/vite-react/reference.md +55 -0
  628. package/tooling/vite-react/seeds/.cspell/project-terms.txt +1 -0
  629. package/tooling/vite-react/seeds/.cspell/tech-stack.txt +1 -0
  630. package/tooling/web/configs/.github/workflows/verify.yml +134 -0
  631. package/tooling/web/configs/.vscode/extensions.json +13 -0
  632. package/tooling/web/configs/.vscode/settings.json +10 -0
  633. package/tooling/web/configs/e2e/home.spec.ts +6 -0
  634. package/tooling/web/configs/e2e/screenshot.ts +53 -0
  635. package/tooling/web/configs/eslint.config.js +82 -0
  636. package/tooling/web/configs/scripts/screenshot.sh +28 -0
  637. package/tooling/web/configs/scripts/verify.sh +80 -0
  638. package/tooling/web/configs/scripts/worktree-port.sh +74 -0
  639. package/tooling/web/configs/src/test/setup.ts +8 -0
  640. package/tooling/web/manifest.toml +58 -0
  641. package/tooling/web/reference.md +115 -0
  642. package/tooling/web/seeds/.cspell/tech-stack.txt +18 -0
  643. package/tsconfig.json +14 -0
@@ -0,0 +1,81 @@
1
+ ---
2
+ name: setup-plugins
3
+ description: Installs curated community and official Claude Code plugins user-scoped on the current machine via the `claude plugin` CLI. Use when asked to "install plugins", "set up plugins", "install the frontend/design/security/debugging plugins", "provision plugins on this machine", or when setting up Claude Code on a new computer. Do NOT use to install toolkit workflow skills, which load live via `--plugin-dir`. Assumes the `claude` CLI is on PATH.
4
+ ---
5
+
6
+ # Setup plugins
7
+
8
+ Automates plugin installs by reading the curated catalog, detecting what is already
9
+ installed, and shelling out to the `claude plugin` CLI with `--scope user` so the
10
+ plugins are available in every project on this machine.
11
+
12
+ Domain-knowledge plugins install once per machine. They are not copied into any
13
+ project. Toolkit workflow skills are a separate concern and load live through
14
+ `--plugin-dir`, so never install those here.
15
+
16
+ ## Guards
17
+
18
+ - If the `claude` CLI is not on PATH, stop: `❌ claude CLI not found. Install Claude Code first.`
19
+
20
+ ## Read the catalog
21
+
22
+ Read the curated list from the skill folder. Use `${CLAUDE_SKILL_DIR}`, which
23
+ expands to this skill's own directory, so the path resolves from any project. Never
24
+ invent plugin names or install strings that are not in it.
25
+
26
+ - `${CLAUDE_SKILL_DIR}/references/plugin-catalog.md`: verified plugins, marketplace sources, and the recommended default set
27
+
28
+ ## Detect what is installed
29
+
30
+ Run this to skip plugins already present. Do not reinstall an installed plugin.
31
+
32
+ ```bash
33
+ claude plugin list 2>/dev/null || echo "NONE"
34
+ ```
35
+
36
+ ## Select
37
+
38
+ When plugin names are passed as arguments, install exactly those and skip the prompt.
39
+
40
+ When invoked bare, present the catalog grouped by category with the recommended
41
+ default marked, then ask which to install. Accept a bulk answer:
42
+
43
+ - `recommended`: the default set from the catalog
44
+ - `all`: every catalog row not already installed
45
+ - a specific list of plugin names
46
+
47
+ ## Preview
48
+
49
+ Before executing, output:
50
+
51
+ - **Installed:** plugins already present, skipped
52
+ - **To install:** each chosen plugin with its category and marketplace source
53
+ - **Scope:** `user` (every project on this machine)
54
+ - **Commands:** the exact shell commands to run
55
+
56
+ ## Execute
57
+
58
+ For each chosen plugin, add its marketplace source if it is not already added, then
59
+ install the plugin user-scoped. Run each install independently so one failure does
60
+ not abort the batch.
61
+
62
+ ```bash
63
+ claude plugin marketplace add <source> 2>/dev/null || true
64
+ claude plugin install <name> --scope user
65
+ ```
66
+
67
+ For a catalog entry listed under "Installs outside the claude plugin CLI", skip the
68
+ marketplace step and run its installer command verbatim instead.
69
+
70
+ Claude Code's tool permission dialog is the confirmation gate. Do not pause for a
71
+ separate confirmation.
72
+
73
+ ## Response
74
+
75
+ After execution, report:
76
+
77
+ - Plugins installed, each with its marketplace
78
+ - Plugins skipped as already installed
79
+ - Any install that failed, with the CLI error
80
+ - A reload note: installed plugins apply on the next session or after `/reload-plugins`
81
+ - A tuning note: if a plugin over-triggers, set `skillOverrides` in settings to `name-only`, `user-invocable-only`, or `off` rather than uninstalling
@@ -0,0 +1,53 @@
1
+ ---
2
+ title: Plugin catalog
3
+ description: Curated community and official Claude Code plugins that setup-plugins installs
4
+ ---
5
+
6
+ # Plugin catalog
7
+
8
+ Curated domain-knowledge plugins the `setup-plugins` skill installs user-scoped.
9
+ Each row is verified to install through the `claude plugin` CLI. This file holds
10
+ only the actionable install data.
11
+
12
+ ## Install data
13
+
14
+ Add the marketplace source once, then install the plugin by name. The CLI resolves
15
+ the plugin across added marketplaces, so `<name>@<marketplace>` is only needed to
16
+ disambiguate a name that exists in more than one marketplace.
17
+
18
+ | Plugin | Category | Marketplace source | Why |
19
+ | ------------------- | --------- | ------------------------ | -------------------------------------------------------------------- |
20
+ | `frontend-design` | design | `anthropics/claude-code` | Steers UI generation toward intentional typography, hierarchy, color |
21
+ | `security-guidance` | security | `anthropics/claude-code` | Security-aware authoring guidance during code generation |
22
+ | `code-review` | review | `anthropics/claude-code` | Multi-agent PR review across compliance, bugs, history, and comments |
23
+ | `superpowers` | debugging | `obra/superpowers` | Methodology skills: systematic-debugging, root-cause-tracing |
24
+
25
+ ## Recommended default
26
+
27
+ The `design` and `security` categories cover the common gaps for a new machine.
28
+ When the user asks for a recommended set, propose `frontend-design` and
29
+ `security-guidance`. Offer `code-review` and `superpowers` as additions.
30
+
31
+ `code-review` overlaps the toolkit's own `claude-review` skill. They run in
32
+ different places, the plugin on a PR and the toolkit skill on a local diff. Install
33
+ `code-review` only when the user wants the GitHub-side flow too.
34
+
35
+ ## Installs outside the claude plugin CLI
36
+
37
+ Some strong plugins do not distribute through a marketplace, so the `claude plugin`
38
+ path does not reach them. List them here with their real installer. Surface them to
39
+ the user during selection, but do not run their install through the marketplace
40
+ step above. Run the installer command verbatim only when the user picks it.
41
+
42
+ | Plugin | Category | Installer | Why |
43
+ | ------------ | -------- | ------------------------------- | ----------------------------------------------------------------- |
44
+ | `impeccable` | design | `npx impeccable skills install` | Curated anti-slop reference files, sharper than `frontend-design` |
45
+
46
+ `npx impeccable skills install` detects the Claude Code harness and installs into
47
+ `.claude/`. It may prompt, so it is not fully non-interactive. After install, run
48
+ `/impeccable init` and reload.
49
+
50
+ Install per project, not per machine. The skill invokes its scripts through paths
51
+ relative to the current project (`.claude/skills/impeccable/scripts/*.mjs`), so a
52
+ copy under `~/.claude/` cannot locate them once the working directory is a
53
+ different project. Re-run the installer in each project that wants impeccable.
@@ -0,0 +1,39 @@
1
+ ---
2
+ name: setup-verify
3
+ description: Why a fresh scaffold is checked with declared leaf scripts in a fixed order, and what the excluded stages would cost
4
+ ---
5
+
6
+ # Setup verify requirement
7
+
8
+ ## Gap
9
+
10
+ Without this skill, a freshly scaffolded project is handed over on the strength of the configs looking right, and the first typo surfaces when the user runs something. A scaffold is generated from a reference, so the errors it carries are wiring mistakes and missing dependencies, both of which any script run would have caught.
11
+
12
+ The naive check fails two ways. A session that assumes script names runs `test` against a stack that exposes `test:run`, or invents a fallback command when a script is absent, and either result reports on something the project never declared. A session that runs a composite script gets one failure covering several stages, so the output names the wrapper rather than the break.
13
+
14
+ The stages left out are the ones that lie. A dev server or a preview reads as failed when it starts slowly, a browser test needs an install and a running server before it can even fail correctly, and a CI workflow cannot be judged locally at all. Including any of them turns a scaffold check into a flaky one, and a flaky check gets ignored.
15
+
16
+ ## Must
17
+
18
+ - Read the scripts the project declares and run only those
19
+ - Run leaf scripts in a fixed order, so a failure points at the exact stage that broke
20
+ - Stop at the first failure and surface its output rather than continuing to collect more
21
+ - Report per script and close with one summary line naming the failing stage when there is one
22
+
23
+ ## Must not
24
+
25
+ - Invent a fallback command for an absent script. Skip it.
26
+ - Run a composite script, which hides which stage broke
27
+ - Run a dev server, a preview, or a browser test
28
+
29
+ ## Guards
30
+
31
+ - No `package.json` at the project root stops, since there are no declared scripts to read
32
+ - A missing dependency folder installs first rather than letting every script fail on the same cause
33
+
34
+ ## Out of scope
35
+
36
+ - Dev and preview smoke tests, which `project-commands` starts on request
37
+ - Browser end-to-end tests, which need a browser install and a running server
38
+ - CI workflow validation, which runs on the pull request rather than locally
39
+ - Generating the configs it checks, which the tooling stack reference owns
@@ -0,0 +1,51 @@
1
+ ---
2
+ name: setup-verify
3
+ description: Verifies a freshly scaffolded project by running its `package.json` scripts in order and reporting pass/fail per script. Use after the agent has followed a tooling stack reference and generated configs, or when asked to "verify the scaffold", "check the setup", "run verify", or "make sure everything works". Do NOT use on a project without `package.json`, or to run E2E or dev servers.
4
+ ---
5
+
6
+ # Verify scaffold
7
+
8
+ Runs the local verification chain against a freshly scaffolded project. Catches config typos, missing deps, and wiring mistakes before the user ever sees them.
9
+
10
+ ## Guards
11
+
12
+ - If `package.json` does not exist at the project root, stop: `❌ No package.json found. Cannot verify.`
13
+ - If `node_modules/` does not exist, run `bun install` first, then proceed.
14
+
15
+ ## Step 1: read scripts
16
+
17
+ Read `package.json` from the project root and extract the `scripts` block. Do not hardcode script names. Different stacks expose different scripts.
18
+
19
+ ## Step 2: run the chain
20
+
21
+ Run the scripts below in order. Stop on the first failure and surface the error. Each script is a leaf command so failures point at the exact break.
22
+
23
+ | Order | Script | Skip if |
24
+ | ----- | ----------- | --------------------------- |
25
+ | 1 | `lint:fix` | absent |
26
+ | 2 | `typecheck` | absent |
27
+ | 3 | `check` | absent |
28
+ | 4 | `test:run` | absent, fall back to `test` |
29
+ | 5 | `build` | absent |
30
+
31
+ Skip any script not present in `package.json`. Do not invent a fallback command. Do not run composite scripts like `check:full`. Do not run `dev`, `preview`, `test:e2e`, `test:ui`, `screenshot`.
32
+
33
+ Run each as `bun run <script>` from the project root.
34
+
35
+ ## Step 3: report
36
+
37
+ For each script run, report one of:
38
+
39
+ - `✅ <script>`
40
+ - `❌ <script>` followed by the failing output (last 40 lines)
41
+
42
+ End with a summary line:
43
+
44
+ - On pass: `✅ Scaffold verified (<n> scripts passed).`
45
+ - On fail: `❌ Scaffold failed at <script>. Fix the error and re-run setup-verify.`
46
+
47
+ ## Out of scope
48
+
49
+ - Dev server and preview server smoke tests. Too flaky for a scaffold check, where a slow start reads as a failure. Use `project-commands` to start one on request.
50
+ - Playwright E2E tests. Require browser install and a running server.
51
+ - CI workflow validation. Runs in GitHub Actions on PR, not locally.
@@ -0,0 +1,41 @@
1
+ ---
2
+ name: systematic-debugging
3
+ description: Why a fix is blocked until investigation completes, and what the three-attempt stop is measuring
4
+ ---
5
+
6
+ # Systematic debugging requirement
7
+
8
+ ## Gap
9
+
10
+ Without this skill, a session handed a failure proposes a fix from the first plausible reading of the error, and the fix is judged by whether the symptom moved. A symptom that moves is the normal result of changing something near it, so the session reports success and the cause is still there.
11
+
12
+ The compounding failures come next. Several changes go in at once, so a pass says nothing about which one mattered. A fix that fails gets another fix stacked on top of it rather than a new hypothesis, and the code accumulates changes nobody can trace to a reason. A bad value gets corrected where it was observed rather than where it was produced, which moves the failure downstream instead of removing it.
13
+
14
+ Two failures are about stopping rather than about fixing. A session that never counts its attempts keeps fixing through the pattern where each fix reveals a problem elsewhere, which is architectural and cannot be reached from inside the loop. And a session that concludes an issue is environmental usually has an incomplete investigation rather than an environmental issue, because that conclusion is available at any point and is never contradicted by evidence.
15
+
16
+ ## Must
17
+
18
+ - Complete the investigation before any fix is proposed, reading the failure in full and reproducing it
19
+ - Trace a bad value back to where it was produced and fix there
20
+ - Compare the broken code against working code in the same codebase before hypothesizing
21
+ - State one hypothesis and change one variable to test it
22
+ - Write the failing test before the fix, so the fix is judged against a reproduction rather than against the symptom
23
+ - Stop after three failed attempts and hand the architectural question to the user
24
+
25
+ ## Must not
26
+
27
+ - Stack a second fix on a failed one rather than forming a new hypothesis
28
+ - Bundle a refactor or an unrelated improvement into the fix
29
+ - Accept an environmental or timing conclusion before the investigation is exhausted
30
+ - Claim an understanding it does not have
31
+
32
+ ## Guards
33
+
34
+ - An incomplete investigation blocks the fix proposal, which is the skill's one refusal and the reason it exists
35
+ - Three failed attempts stop the loop, since the pattern is evidence about the design rather than about the bug
36
+
37
+ ## Out of scope
38
+
39
+ - A typo fix and a cause already agreed on, where the phases cost more than they return
40
+ - Reviewing a change for defects it has not yet exhibited: `claude-review`
41
+ - Deciding whether the architecture should change, which the three-attempt stop hands to the user rather than answering
@@ -0,0 +1,70 @@
1
+ ---
2
+ name: systematic-debugging
3
+ description: Forces root-cause investigation before any fix when a test fails, a bug surfaces, or unexpected behavior appears. Auto-triggers on "test is failing", "it's broken", "why does X happen", "this isn't working". Do NOT use for trivial typo fixes or when the cause is already agreed on.
4
+ ---
5
+
6
+ # Systematic debugging
7
+
8
+ Random fixes waste time and create new bugs. Before proposing any fix, complete the four phases below in order.
9
+
10
+ ## The rule
11
+
12
+ No fixes without root-cause investigation first. If phase 1 is incomplete, no fix may be proposed.
13
+
14
+ ## Phase 1: investigate
15
+
16
+ 1. Read every line of the error, stack trace, and log output. Note file paths, line numbers, error codes.
17
+ 2. Reproduce the failure. If it is not consistently reproducible, gather more data before guessing.
18
+ 3. Check what changed. Run `git diff` and `git log --oneline -10` from the project root to see recent changes.
19
+ 4. For multi-component systems, add instrumentation at each component boundary and run once to see which layer fails before investigating further.
20
+ 5. Trace bad values backward to their source. Fix at the origin, not the symptom.
21
+
22
+ ## Phase 2: find the pattern
23
+
24
+ 1. Locate similar working code in the same codebase. Compare it to the broken code line by line.
25
+ 2. If following a reference implementation, read it completely before adapting. No skimming.
26
+ 3. List every difference between working and broken, no matter how small.
27
+
28
+ ## Phase 3: hypothesize and test
29
+
30
+ 1. State one hypothesis: "I think X is the root cause because Y". Be specific.
31
+ 2. Make the smallest possible change to test it. One variable at a time.
32
+ 3. If the change does not resolve the issue, form a new hypothesis. Do not stack another fix.
33
+ 4. If you do not understand something, say so. Do not pretend.
34
+
35
+ ## Phase 4: fix
36
+
37
+ 1. Write a failing test case that reproduces the issue before fixing.
38
+ 2. Make one change that addresses the root cause. No bundled refactors, no "while I'm here" improvements.
39
+ 3. Verify the test passes and no other tests break.
40
+
41
+ ## Three-fix circuit breaker
42
+
43
+ After three failed fix attempts, stop. This pattern indicates an architectural problem, not a bug:
44
+
45
+ - Each fix reveals a new problem somewhere else.
46
+ - Each fix requires refactoring elsewhere to apply.
47
+ - Symptoms keep moving.
48
+
49
+ When this happens, stop fixing and ask the user whether the underlying pattern should be reconsidered.
50
+
51
+ ## Red flags that mean "return to phase 1"
52
+
53
+ - "Quick fix for now, investigate later"
54
+ - "Try X and see if it works"
55
+ - "It's probably Y, let me change that"
56
+ - Proposing a fix before tracing data flow
57
+ - Adding multiple changes and running tests to see what sticks
58
+ - Skipping the failing test "because I'll verify manually"
59
+
60
+ Any of these means phase 1 is not complete. Return to it.
61
+
62
+ ## When investigation reveals no root cause
63
+
64
+ Rarely, an issue is genuinely environmental, timing-dependent, or external. In that case:
65
+
66
+ 1. Document what was investigated and ruled out.
67
+ 2. Implement appropriate handling: retry, timeout, explicit error.
68
+ 3. Add logging so the next occurrence can be investigated.
69
+
70
+ Most "no root cause" conclusions are incomplete investigations. Exhaust phase 1 before accepting them.
@@ -0,0 +1,46 @@
1
+ ---
2
+ name: write-human
3
+ description: Scope boundary between the writing rules a scan enforces and the ones only a reader can, and why the second set travels in a skill
4
+ ---
5
+
6
+ # Write human requirement
7
+
8
+ ## Gap
9
+
10
+ Without this skill, a session is graded on the words it avoids and never on how the prose reads. The banned words, characters, and spellings ship as data the CLI and the installed hook both read, so that half is measured on every run. The voice half sat under a heading in a standard nothing opened, so a session wrote the whole passage without it and the audit reported a clean exit over prose that read machine-written.
11
+
12
+ The output of that arrangement is specific rather than general. Paragraphs come back with every sentence landing within a few words of the last, with consecutive sentences opening on the same word and the same grammatical shape, and with the compression rule applied until the verb is gone, so the passage trades uniform sentences for uniform fragments. A session told to be terse and told nothing about cadence produces exactly that, since cutting is the only instruction it holds.
13
+
14
+ A session also has no name for the patterns no closed word set can match. Rule-of-three, synonym cycling, false ranges, inline-header lists, and adverb propping each survive a clean scan, so a passage carrying all five reports zero findings and still reads wrong. Nothing tells the session those patterns exist, and a ban list cannot be extended to reach them, because each is a shape rather than a token.
15
+
16
+ Importing that catalog wholesale fails on a different measurement. External material of this kind bans abstract metaphor nouns and names `surface` among them, which this corpus uses 593 times in tracked markdown at `57ee7467`. A session handed the catalog with no stated position either rewrites established vocabulary or silently ignores the item, and neither outcome is recoverable by a later reader who cannot tell which happened.
17
+
18
+ ## Must
19
+
20
+ - Arrive attached to the writing rather than waiting to be consulted, which is why the path-scoped rule on a markdown edit carries an explicit instruction to load this skill
21
+ - State cadence as something to measure, giving the sentence-length spread and the repeated-opening count a session can check, since a rule to vary sentence length is one a session satisfies by assertion
22
+ - Ban the fragment trade by name, since compression is the instruction a terse register already carries and the verb is what it drops first
23
+ - Name the machine tells a scan cannot reach, and hold the catalog behind a stated trigger so a run that needs none pays no read for it
24
+ - Point at the banned words rather than restating them, since they ship as package data a command reads and a second copy drifts with nothing comparing the two
25
+ - Record which external patterns were adopted, which were declined, and the measurement behind each, so a later session extends the position instead of re-deriving it
26
+ - Yield voice to a surface that states its own, and hold rhythm, density, and the tells on every surface
27
+
28
+ ## Must not
29
+
30
+ - Restate the banned words, characters, or spellings, at any length or as an example set
31
+ - Claim the reported failure is closed. Cadence is a property of a passage and nothing measures the output against these rules yet, so this skill states the rule and the measurement is owed separately.
32
+ - Rewrite a term the corpus already uses because an external source bans it, without the count and a recorded position
33
+ - Grow a second voice register inside this body. One baseline covers every surface, and a register a real surface needs arrives as an overlay that yields on voice alone.
34
+
35
+ ## Guards
36
+
37
+ - A passage on a surface stating its own voice keeps that voice, so the yield is read before the voice rules are applied rather than after the rewrite
38
+ - Text a model drafted goes through the tells catalog, and a short original draft with nothing reading off skips it
39
+
40
+ ## Out of scope
41
+
42
+ - The banned words, characters, and spellings, which `markdown.md` states for a reader and `canon markdown audit` gates from package data
43
+ - Markdown mechanics, being headings, lists, code spans, punctuation, and file references
44
+ - Restating text that already exists in plainer words, which `restate-plainly` owns on a different trigger, since a restatement is asked for by name and this arrives on a glob match. The rules here still govern how that restatement reads, and that body cites this one rather than carrying a copy.
45
+ - What voice a given surface declares, which belongs to the standard governing that surface
46
+ - Measuring whether finished output followed these rules, which needs a check this skill does not carry
@@ -0,0 +1,68 @@
1
+ ---
2
+ name: write-human
3
+ description: Carries the voice, rhythm, sentence construction, and information density rules a banned-word list cannot express, plus the catalog of machine tells that survive a clean ban scan. Use when writing or revising prose a person will read, when a passage reads flat or uniform, or when asked to "make this read like a person", "fix the cadence", "this reads like AI wrote it", "vary the sentences", or "tighten this without gutting it". Do NOT use for banned words, characters, or spellings, which `markdown.md` states and `canon markdown audit` gates, and do NOT use to restate text that already exists in plainer words, which is `restate-plainly`, whose body loads these rules from here.
4
+ ---
5
+
6
+ # Write human
7
+
8
+ Write prose that reads as though a person wrote it. A ban list subtracts words and reaches nothing about how a passage moves, so this skill carries the half no scan measures.
9
+
10
+ Load this before drafting a passage rather than after. A revision pass recovers the words and never recovers the structure the draft already settled.
11
+
12
+ The banned words, characters, and spellings sit in `${CLAUDE_SKILL_DIR}/../../standards/markdown.md`. They stay in force here. This skill adds to them and never restates them, since `canon markdown audit` reads them from the package and a second copy would drift.
13
+
14
+ ## What yields and what does not
15
+
16
+ - A surface stating its own voice keeps that voice. Blogs, emails, changelogs, and commit messages are surfaces of that kind, as is any document whose own standard states a voice.
17
+ - The yield covers voice alone. Rhythm, density, and the machine tells below apply on every surface, as do the bans and the markdown mechanics.
18
+ - Terse reference prose is the default register. A warmer register is an overlay a surface declares, never a reason to drop the rules underneath it.
19
+
20
+ ## Voice
21
+
22
+ - Write for a developer who is scanning rather than studying. Every sentence has to land on first read.
23
+ - Use active voice, and present tense unless past or future is factually correct.
24
+ - Name the actor in a sentence that has one. Passive voice with an unnamed actor hides who acts and reads as evasion.
25
+ - Prefer direct verbs and plain words. Write `use` over `utilize`, `help` over `facilitate`, `is` over `serves as`.
26
+ - Be direct on an established fact. Hedge on a genuinely uncertain claim and say which it is.
27
+ - Assume developer-level knowledge. Skip the explanation the reader already carries.
28
+ - Front-load the key information in a paragraph, and give every sentence something the reader did not have.
29
+
30
+ ## Rhythm
31
+
32
+ Uniform cadence is the tell that survives the cleanest ban scan. Measure it rather than judging it:
33
+
34
+ - Read the paragraph as one block. Uniformity is audible and close to invisible line by line.
35
+ - Compare the longest and shortest sentence in a paragraph. Within roughly five words of each other means the paragraph has one cadence and needs a short sentence or a long one added.
36
+ - Count the opening word of each sentence. Two alike is coincidence and three is a pattern to break.
37
+ - Vary the grammatical shape of the opening, not the word alone. Three sentences opening on three different subjects still share one shape.
38
+ - Never buy variety with a fragment. A verbless clause standing as a sentence trades one uniformity for another and is the failure these rules exist against.
39
+ - Use a substantive connective where the flow needs one, and never add a word for rhythm alone.
40
+
41
+ ## Density
42
+
43
+ - Carry one claim per sentence. A sentence carrying three claims hides the two the reader most needs to check.
44
+ - Cut a sentence restating the one above it at a different altitude. A summary of the previous sentence is the most common padding in machine prose.
45
+ - Compress by removing what repeats, never by removing the verb. Dropping the verb is the fragment rule wearing an efficiency argument.
46
+ - Resolve a pronoun or a demonstrative to its noun whenever more than one antecedent is in reach.
47
+
48
+ Read `${CLAUDE_SKILL_DIR}/references/density.md` when a passage is dense and still reads long, or when cutting it keeps breaking the sentences.
49
+
50
+ ## Machine tells
51
+
52
+ Read `${CLAUDE_SKILL_DIR}/references/machine-tells.md` before revising text a model drafted, and whenever a passage clears the ban scan and still reads wrong. It catalogs the patterns no closed word set can match, being rule-of-three, synonym cycling, false ranges, inline-header lists, adverb propping, and the rest, each with the fix.
53
+
54
+ Skip that reference on a short original draft where nothing reads off. The catalog is a diagnostic and costs a read on every invocation that does not need it.
55
+
56
+ ## Revising a passage
57
+
58
+ 1. Read the whole passage before editing a line of it.
59
+ 2. Mark the sentence lengths and the openings in each paragraph, and rewrite the flattest run first.
60
+ 3. Check each paragraph for a sentence that adds no claim, and cut it rather than shortening it.
61
+ 4. Re-read for the tells the catalog names, if the passage came from a model.
62
+ 5. Run `canon markdown audit <path>` for the mechanical half, and rewrite each hit rather than swapping the token for a near-synonym.
63
+
64
+ Report each file written or updated by its full path from the project root.
65
+
66
+ ## Source material
67
+
68
+ The position on external writing guidance sits in `${CLAUDE_SKILL_DIR}/references/source-material.md`, which states what this skill adopted, what it declined, and the measurement behind each. Read it before importing a rule from outside this corpus. Do not re-derive that position, since a second answer will disagree with the recorded one.
@@ -0,0 +1,38 @@
1
+ ---
2
+ title: Information density
3
+ description: What to cut from a passage, what never to cut, and how to keep a compressed sentence unambiguous
4
+ ---
5
+
6
+ # Information density
7
+
8
+ Read this when a passage is dense and still reads long, or when cutting it keeps breaking the sentences. Density is claims per sentence rather than words per sentence, so a short passage carrying one claim four times is the failure this reference addresses.
9
+
10
+ ## What to cut
11
+
12
+ - A sentence restating the one above it at a different altitude. Machine prose states the specific claim, then the general version of it, then the reason it matters.
13
+ - A setup clause that names what the next clause already names. `In terms of performance, the query is slow` carries one claim and two subjects.
14
+ - A qualifier that changes no truth condition. `Generally`, `in most cases`, and `typically` earn their place where an exception exists and gets named, and nowhere else.
15
+ - An example that demonstrates the same thing as the example above it. Two examples differ in what they teach or one of them goes.
16
+ - A transition that names the relationship the sentences already carry. `Additionally` before an addition adds nothing.
17
+
18
+ ## What never to cut
19
+
20
+ - The verb. A compressed clause with the verb removed is a fragment, and the fragment is the failure the rhythm rules exist against.
21
+ - A qualifier that bounds a claim. `Every tracked markdown file` and `most files` are different claims, and dropping the bound is a fabrication rather than a compression.
22
+ - The named source of a claim, and the date or ref a measurement was taken at. A number with no stamp cannot be re-measured, so it stops being evidence.
23
+ - The actor of a sentence that has one. Compressing to the passive removes the fact rather than the words.
24
+
25
+ ## Keeping a compressed sentence unambiguous
26
+
27
+ Compression is what creates ambiguity, so each pass over a tightened sentence checks the same four things:
28
+
29
+ - Resolve every pronoun and demonstrative to a noun when more than one antecedent is in reach. `This breaks the build` after two clauses names neither.
30
+ - Attach every modifier to the word it modifies. A clause that moved during a rewrite lands next to the wrong noun and reads as a claim about it.
31
+ - Quantify an amount rather than naming it. `Large`, `often`, and `slow` each ask the reader to supply the number.
32
+ - Split a sentence carrying two claims joined by `and` when either claim can be false on its own. One sentence per truth condition is what makes a passage checkable.
33
+
34
+ ## Measuring a paragraph
35
+
36
+ Count the claims a paragraph makes and the sentences it uses. More sentences than claims means the paragraph is padded, and the cut targets the restatements above. Fewer sentences than claims means the paragraph is compressed past the point a reader can check it, and the split targets the joined sentences.
37
+
38
+ A paragraph carrying no claim at all is a transition, and a transition earns one sentence at most.
@@ -0,0 +1,107 @@
1
+ ---
2
+ title: Machine tells
3
+ description: Patterns that survive a clean ban scan, why each is invisible to a word set, and the fix for each
4
+ ---
5
+
6
+ # Machine tells
7
+
8
+ Each pattern below is a shape rather than a token, so no closed word set matches it and `canon markdown audit` reports a clean exit over a passage carrying every one. Read this when revising text a model drafted, or when a passage passes the scan and still reads wrong.
9
+
10
+ Work top down. The first three account for most of what a reader calls machine-written.
11
+
12
+ ## Rule of three
13
+
14
+ A triad wherever a list appears, whatever the subject actually holds. Three adjectives, three clauses, three examples, over and over, until the count is the only thing a reader can predict.
15
+
16
+ The tell is the regularity rather than the number. A subject with two parts gets a third invented to fill the shape, and a subject with five gets cut to three.
17
+
18
+ ```markdown
19
+ Bad: The parser is fast, simple, and reliable.
20
+ Good: The parser reads 40k lines a second and has no configuration.
21
+ ```
22
+
23
+ Fix by counting what the subject has and writing that many. A list of two is fine, and so is a list of six.
24
+
25
+ ## Synonym cycling
26
+
27
+ One thing named four ways across a paragraph, on the belief that repeating a noun reads poorly. The reader then cannot tell whether `the handler`, `the callback`, `the listener`, and `the hook` are one thing or four.
28
+
29
+ ```markdown
30
+ Bad: Register the handler. The callback receives the event, and the listener returns a promise.
31
+ Good: Register the handler. The handler receives the event and returns a promise.
32
+ ```
33
+
34
+ Fix by picking one name per thing and repeating it. Repetition of a term is precision in reference prose.
35
+
36
+ ## False ranges
37
+
38
+ `from X to Y` used over things that form no spectrum, which smuggles a claim of coverage the sentence cannot support.
39
+
40
+ ```markdown
41
+ Bad: Everything from authentication to deployment.
42
+ Good: Authentication, schema migration, and deployment.
43
+ ```
44
+
45
+ Fix by naming the members. Keep the range form where the endpoints bound a scale, such as a version range or a byte size.
46
+
47
+ ## Inline-header lists
48
+
49
+ A bullet opening with a bold label and a colon, where the body then restates the label in a sentence. The shape looks organized and carries one fact per bullet instead of two.
50
+
51
+ ```markdown
52
+ Bad: - **Caching**: Caching stores the response so the next request skips the fetch.
53
+ Good: - Caching stores the response, so the next request skips the fetch.
54
+ ```
55
+
56
+ Fix by cutting the label when the sentence already names the subject. Keep the label where the bullets form a lookup table a reader scans by key.
57
+
58
+ ## Adverb propping
59
+
60
+ An adverb carrying the weight the verb should. `significantly improves`, `dramatically reduces`, and `effectively handles` each name no amount and no mechanism.
61
+
62
+ ```markdown
63
+ Bad: The index significantly improves query performance.
64
+ Good: The index cuts the median query from 400ms to 12ms.
65
+ ```
66
+
67
+ Fix by replacing the adverb with the measurement, or by cutting it and leaving the verb alone.
68
+
69
+ ## Passive voice with an unnamed actor
70
+
71
+ `it was decided`, `changes were made`, `the file is expected to be updated`. The actor is the fact the reader wanted, and the construction is what removes it.
72
+
73
+ ```markdown
74
+ Bad: The threshold was raised after the incident.
75
+ Good: The on-call engineer raised the threshold after the incident.
76
+ ```
77
+
78
+ Fix by naming who acts. Keep the passive where the actor is genuinely unknown or genuinely irrelevant, and say which.
79
+
80
+ ## Closing restatement
81
+
82
+ A final sentence per section summarizing the section, at a higher altitude and with no new claim. In a short document every section then ends the same way.
83
+
84
+ Fix by cutting it. A section that needs a summary is too long, and the split is the answer.
85
+
86
+ ## Question as transition
87
+
88
+ `So what does this mean?` or `Why does this matter?` standing alone between paragraphs. It addresses the reader as a participant and delays the answer by one line.
89
+
90
+ Fix by stating the answer as the next sentence.
91
+
92
+ ## Escalating parallel clauses
93
+
94
+ `not only X but also Y`, and the longer chains built on it. The construction promises a second claim that outranks the first and usually delivers a restatement.
95
+
96
+ ```markdown
97
+ Bad: The cache not only stores responses but also improves latency.
98
+ Good: The cache stores responses, which is what cuts latency.
99
+ ```
100
+
101
+ Fix by writing the two claims as two sentences, or by cutting the one that repeats.
102
+
103
+ ## Empty superlative frames
104
+
105
+ `one of the most important`, `a critical piece of`, `at the heart of`. The frame ranks a thing against a set the sentence never names.
106
+
107
+ Fix by stating what the thing does. A ranking survives only where the set is named and the position is measured.
@@ -0,0 +1,37 @@
1
+ ---
2
+ title: Source material
3
+ description: Which external writing patterns this skill adopted, which it declined, and the measurement behind each decision
4
+ ---
5
+
6
+ # Source material
7
+
8
+ Two external writing skills were read on 2026-08-19 as source material for this one. The first catalogs 31 patterns of machine-sounding prose. The second layers document mode, sentence construction, information density, and ambiguity prevention.
9
+
10
+ Neither was imported wholesale, and one measurement settles why. Read this before adding a rule from outside this corpus, and extend the position below rather than deriving a second one.
11
+
12
+ ## What was adopted
13
+
14
+ Roughly half the pattern catalog had no counterpart in this corpus, and six of those patterns are now in `machine-tells.md`: rule-of-three, synonym cycling, false ranges, inline-header lists, adverb propping, and passive voice with an unnamed actor. Each is a shape rather than a token, which is what kept it out of a ban list that matches words.
15
+
16
+ The density layer had no counterpart at all and is now `density.md`. Its useful half is the split between what a compression pass may cut and what it may not, since a terse register already instructs a session to cut and names nothing that has to survive.
17
+
18
+ The ambiguity rules travel with that layer for the same reason. Compression is what creates the ambiguity, so a rule about pronouns and modifiers belongs beside the rule that shortened the sentence.
19
+
20
+ ## What was declined
21
+
22
+ - **The ban on abstract metaphor nouns.** The nouns it names are load-bearing terms in this corpus rather than decoration, and the count below is what decides it.
23
+ - **Document mode as a selector.** The source has the writer pick a mode before drafting. In this corpus a document's shape is already fixed by the standard governing its type, so a mode selector adds a second authority over one question and the two will disagree.
24
+ - **Any restatement of a banned word set.** The bans ship as package data that `canon markdown audit` reads, and a copy here would be a second source for one list with a machine reading the other.
25
+ - **A voice register per surface.** One baseline covers every surface. A surface needing a warmer register states its own voice and claims the yield, which lifts voice alone and leaves the bans, the rhythm rules, and the tells in force.
26
+
27
+ The first of those four rests on a count. The source names `surface` among the nouns it bans, and tracked markdown in the authoring repository used `surface` 593 times, `harness` 95, `scaffolding` 17, and `primitive` 4, measured at `57ee7467` on 2026-08-19. Adopting the item either rewrites established vocabulary across the corpus or is ignored in silence, and a reader arriving later cannot tell which happened.
28
+
29
+ ## Where this diverges
30
+
31
+ The source material treats repetition of a noun as a defect. This skill treats it as precision and bans the synonym cycling that avoids it, which reverses the item for reference prose where a reader has to know that two names are one thing.
32
+
33
+ The source material also prefers shorter sentences without bound. This skill measures the spread instead, since a passage of uniformly short sentences is the reported failure rather than the fix for it.
34
+
35
+ ## The industry-guide record
36
+
37
+ The cadence rules and the bans they pair with trace to three industry style guides, being Google's developer documentation style guide, Microsoft's writing style guide, and Apple's style guide. The authoring toolkit keeps the per-rule attributions and the dates each guide was read, and no install carries that record, so this file is the position a target reads.