@thebassclef/lite 0.1.2 → 1.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 (293) hide show
  1. package/dist/cli.cjs +238 -127
  2. package/dist/cli.js +240 -129
  3. package/dist/index.cjs +1 -1
  4. package/dist/index.d.ts +1 -1
  5. package/dist/index.js +1 -1
  6. package/dist/lite/.bassclef-source.json +10 -0
  7. package/dist/lite/.claude/settings.json +212 -0
  8. package/dist/lite/CLAUDE.md +41 -0
  9. package/dist/lite/gitignore +58 -0
  10. package/dist/lite/standards/bassclef-wiring-manifest.json +497 -0
  11. package/dist/lite/whereami.md +24 -0
  12. package/package.json +8 -2
  13. package/substrate/.bassclef/lite-manifest.json +0 -2701
  14. package/substrate/.claude/agents/architect.md +0 -70
  15. package/substrate/.claude/agents/builder.md +0 -114
  16. package/substrate/.claude/agents/designer.md +0 -156
  17. package/substrate/.claude/agents/reviewer.md +0 -88
  18. package/substrate/.claude/hooks/artifact-ingestion-gate.sh +0 -357
  19. package/substrate/.claude/hooks/assert-verify-steering.sh +0 -77
  20. package/substrate/.claude/hooks/bassclef-source-config-validate.sh +0 -215
  21. package/substrate/.claude/hooks/bassclef-sync.sh +0 -634
  22. package/substrate/.claude/hooks/compound-noun-scrub.sh +0 -292
  23. package/substrate/.claude/hooks/kiss-expansion-inject.sh +0 -69
  24. package/substrate/.claude/hooks/longrun-prep-compounding-axis-check.sh +0 -492
  25. package/substrate/.claude/hooks/longrun-prep-compounding-sequence-check.sh +0 -492
  26. package/substrate/.claude/hooks/plain-english-steering.sh +0 -156
  27. package/substrate/.claude/hooks/post-skill-friction-check.sh +0 -177
  28. package/substrate/.claude/hooks/post-skill-telemetry.sh +0 -62
  29. package/substrate/.claude/hooks/pre-build-gate.sh +0 -511
  30. package/substrate/.claude/hooks/pre-commit-gate.sh +0 -451
  31. package/substrate/.claude/hooks/session-end.sh +0 -433
  32. package/substrate/.claude/hooks/session-reflection.sh +0 -303
  33. package/substrate/.claude/hooks/skill-body-grade-gate.sh +0 -219
  34. package/substrate/.claude/hooks/skill-body-intent-drift.sh +0 -107
  35. package/substrate/.claude/hooks/skill-step-list-check.sh +0 -171
  36. package/substrate/.claude/hooks/state-validate.sh +0 -271
  37. package/substrate/.claude/hooks/substrate-clarity-gate.sh +0 -1110
  38. package/substrate/.claude/hooks/temperance-gate.sh +0 -147
  39. package/substrate/.claude/hooks/testing-tier-enforce.sh +0 -233
  40. package/substrate/.claude/hooks/turn-prose-grade-measure.sh +0 -219
  41. package/substrate/.claude/hooks/turn-prose-kiss-check.sh +0 -463
  42. package/substrate/.claude/hooks/vocabulary-migration-check.sh +0 -171
  43. package/substrate/.claude/hooks/whereami-utc-gate.sh +0 -142
  44. package/substrate/.claude/luminaries/alan-cooper.md +0 -170
  45. package/substrate/.claude/luminaries/alistair-cockburn.md +0 -140
  46. package/substrate/.claude/luminaries/amazon-pr-faq.md +0 -34
  47. package/substrate/.claude/luminaries/ash-maurya.md +0 -121
  48. package/substrate/.claude/luminaries/bill-buxton.md +0 -210
  49. package/substrate/.claude/luminaries/charles-sanders-peirce.md +0 -150
  50. package/substrate/.claude/luminaries/david-ogilvy.md +0 -192
  51. package/substrate/.claude/luminaries/don-norman.md +0 -173
  52. package/substrate/.claude/luminaries/edward-tufte.md +0 -179
  53. package/substrate/.claude/luminaries/eric-evans.md +0 -160
  54. package/substrate/.claude/luminaries/frederick-brooks.md +0 -50
  55. package/substrate/.claude/luminaries/gang-of-four.md +0 -157
  56. package/substrate/.claude/luminaries/glenford-myers.md +0 -230
  57. package/substrate/.claude/luminaries/hunt-thomas.md +0 -115
  58. package/substrate/.claude/luminaries/hyrum-wright.md +0 -94
  59. package/substrate/.claude/luminaries/jason-fried-dhh.md +0 -46
  60. package/substrate/.claude/luminaries/jesse-james-garrett.md +0 -154
  61. package/substrate/.claude/luminaries/john-ousterhout.md +0 -94
  62. package/substrate/.claude/luminaries/karl-popper.md +0 -132
  63. package/substrate/.claude/luminaries/kent-beck.md +0 -168
  64. package/substrate/.claude/luminaries/linus-torvalds.md +0 -218
  65. package/substrate/.claude/luminaries/martin-fowler.md +0 -164
  66. package/substrate/.claude/luminaries/michael-feathers.md +0 -125
  67. package/substrate/.claude/luminaries/michael-nygard.md +0 -118
  68. package/substrate/.claude/luminaries/robert-c-martin.md +0 -164
  69. package/substrate/.claude/luminaries/saltzer-schroeder.md +0 -194
  70. package/substrate/.claude/luminaries/sophia-prater.md +0 -193
  71. package/substrate/.claude/luminaries/stephen-toulmin.md +0 -131
  72. package/substrate/.claude/luminaries/tony-hoare.md +0 -170
  73. package/substrate/.claude/luminaries/vaughn-vernon.md +0 -50
  74. package/substrate/.claude/luminaries/w-edwards-deming.md +0 -158
  75. package/substrate/.claude/rules/accessor-library-discipline.md +0 -138
  76. package/substrate/.claude/rules/adr-discipline.md +0 -120
  77. package/substrate/.claude/rules/api-conventions.md +0 -125
  78. package/substrate/.claude/rules/artifact-ingestion.md +0 -179
  79. package/substrate/.claude/rules/assert-only-after-verify.md +0 -137
  80. package/substrate/.claude/rules/blocked-items.md +0 -146
  81. package/substrate/.claude/rules/bootstrap-pair-discipline.md +0 -141
  82. package/substrate/.claude/rules/branching.md +0 -28
  83. package/substrate/.claude/rules/cold-adopter-harness-discipline.md +0 -129
  84. package/substrate/.claude/rules/commit-conventions.md +0 -22
  85. package/substrate/.claude/rules/compounding-axis-fresh-analysis.md +0 -188
  86. package/substrate/.claude/rules/compounding-sequence-fresh-analysis.md +0 -188
  87. package/substrate/.claude/rules/context-engineering.md +0 -202
  88. package/substrate/.claude/rules/context-management.md +0 -85
  89. package/substrate/.claude/rules/defensive-bash.md +0 -68
  90. package/substrate/.claude/rules/deferred-actions.md +0 -233
  91. package/substrate/.claude/rules/destructive-operations.md +0 -69
  92. package/substrate/.claude/rules/diagnosis.md +0 -38
  93. package/substrate/.claude/rules/github-issue-flash-tweet.md +0 -156
  94. package/substrate/.claude/rules/guardrails.md +0 -73
  95. package/substrate/.claude/rules/hook-wire-on-author.md +0 -103
  96. package/substrate/.claude/rules/identifier-leak-prevention.md +0 -104
  97. package/substrate/.claude/rules/iteration-bet-brief-completeness.md +0 -54
  98. package/substrate/.claude/rules/lite-manifest-schema-change-discipline.md +0 -98
  99. package/substrate/.claude/rules/longrun-prep-plan-doc-compression.md +0 -89
  100. package/substrate/.claude/rules/loop-discipline.md +0 -81
  101. package/substrate/.claude/rules/manual-prod-approval.md +0 -100
  102. package/substrate/.claude/rules/marker-enrichment-discipline.md +0 -99
  103. package/substrate/.claude/rules/mobile-ephemeral-session.md +0 -109
  104. package/substrate/.claude/rules/new-dependency-check.md +0 -51
  105. package/substrate/.claude/rules/oo-ad-entry-point.md +0 -117
  106. package/substrate/.claude/rules/operator-facing-prose.md +0 -196
  107. package/substrate/.claude/rules/option-label-discipline.md +0 -108
  108. package/substrate/.claude/rules/pattern-annotation.md +0 -100
  109. package/substrate/.claude/rules/plain-english-discipline.md +0 -156
  110. package/substrate/.claude/rules/plan-enumeration-needs-value-props.md +0 -211
  111. package/substrate/.claude/rules/pr-body-shape.md +0 -317
  112. package/substrate/.claude/rules/pr-strategy.md +0 -167
  113. package/substrate/.claude/rules/pr-title-shape.md +0 -161
  114. package/substrate/.claude/rules/prototype-workflow.md +0 -65
  115. package/substrate/.claude/rules/reserved-skill-names.md +0 -123
  116. package/substrate/.claude/rules/schema-management.md +0 -49
  117. package/substrate/.claude/rules/sdlc-gates.md +0 -149
  118. package/substrate/.claude/rules/security.md +0 -37
  119. package/substrate/.claude/rules/session-artifacts.md +0 -236
  120. package/substrate/.claude/rules/skill-composition-declarations.md +0 -124
  121. package/substrate/.claude/rules/skill-description-clarity.md +0 -247
  122. package/substrate/.claude/rules/skill-procedure-step-list.md +0 -137
  123. package/substrate/.claude/rules/state-schema-validation.md +0 -162
  124. package/substrate/.claude/rules/stuck-signal-diagnostic.md +0 -140
  125. package/substrate/.claude/rules/substrate-config-schema.md +0 -98
  126. package/substrate/.claude/rules/test-list-discipline.md +0 -175
  127. package/substrate/.claude/rules/test-sufficiency.md +0 -210
  128. package/substrate/.claude/rules/testing-tier-config.md +0 -145
  129. package/substrate/.claude/rules/testing.md +0 -38
  130. package/substrate/.claude/rules/turn-estimate-grounding.md +0 -134
  131. package/substrate/.claude/rules/visual-hierarchy.md +0 -437
  132. package/substrate/.claude/rules/we-dont-break-adopters.md +0 -126
  133. package/substrate/.claude/rules/whereami-load-bearing.md +0 -202
  134. package/substrate/.claude/rules/writing-craft-discipline.md +0 -92
  135. package/substrate/.claude/rules/wu-sequencing-compounds.md +0 -145
  136. package/substrate/.claude/skills/build/SKILL.md +0 -640
  137. package/substrate/.claude/skills/chronicle/SKILL.md +0 -55
  138. package/substrate/.claude/skills/clean-artifacts/SKILL.md +0 -249
  139. package/substrate/.claude/skills/decompose/SKILL.md +0 -280
  140. package/substrate/.claude/skills/diagnose/SKILL.md +0 -297
  141. package/substrate/.claude/skills/feynman/SKILL.md +0 -90
  142. package/substrate/.claude/skills/howdoi/SKILL.md +0 -105
  143. package/substrate/.claude/skills/ia-model/SKILL.md +0 -108
  144. package/substrate/.claude/skills/interaction-design/SKILL.md +0 -112
  145. package/substrate/.claude/skills/interpret-input/SKILL.md +0 -180
  146. package/substrate/.claude/skills/journal/SKILL.md +0 -209
  147. package/substrate/.claude/skills/kiss/SKILL.md +0 -449
  148. package/substrate/.claude/skills/launch/SKILL.md +0 -915
  149. package/substrate/.claude/skills/lean-canvas/SKILL.md +0 -332
  150. package/substrate/.claude/skills/longrun/SKILL.md +0 -463
  151. package/substrate/.claude/skills/luminary/SKILL.md +0 -481
  152. package/substrate/.claude/skills/ogilvy-writing-audit/SKILL.md +0 -177
  153. package/substrate/.claude/skills/onboard-repo/SKILL.md +0 -1624
  154. package/substrate/.claude/skills/pattern-review/SKILL.md +0 -99
  155. package/substrate/.claude/skills/personas/SKILL.md +0 -207
  156. package/substrate/.claude/skills/promote/SKILL.md +0 -283
  157. package/substrate/.claude/skills/requirement/SKILL.md +0 -98
  158. package/substrate/.claude/skills/retro/SKILL.md +0 -117
  159. package/substrate/.claude/skills/riff/SKILL.md +0 -114
  160. package/substrate/.claude/skills/roadmap-reconcile/SKILL.md +0 -163
  161. package/substrate/.claude/skills/session-end/SKILL.md +0 -309
  162. package/substrate/.claude/skills/session-log/SKILL.md +0 -299
  163. package/substrate/.claude/skills/skills/SKILL.md +0 -228
  164. package/substrate/.claude/skills/spec/SKILL.md +0 -105
  165. package/substrate/.claude/skills/sprint/SKILL.md +0 -392
  166. package/substrate/.claude/skills/stage/SKILL.md +0 -384
  167. package/substrate/.claude/skills/state-a-problem/SKILL.md +0 -185
  168. package/substrate/.claude/skills/temperance/SKILL.md +0 -108
  169. package/substrate/.claude/skills/use-case/SKILL.md +0 -417
  170. package/substrate/.claude/skills/user-stories/SKILL.md +0 -268
  171. package/substrate/.claude/skills/value-prop/SKILL.md +0 -251
  172. package/substrate/.claude/skills/verify/SKILL.md +0 -160
  173. package/substrate/.claude/skills/visual-review/SKILL.md +0 -503
  174. package/substrate/.claude/skills/whats-the-plan/SKILL.md +0 -202
  175. package/substrate/.claude/skills/whereami/SKILL.md +0 -307
  176. package/substrate/AGENTS.md +0 -79
  177. package/substrate/CLAUDE-lite.md +0 -85
  178. package/substrate/CODE_OF_CONDUCT.md +0 -28
  179. package/substrate/CONTRIBUTING.md +0 -177
  180. package/substrate/README.md +0 -173
  181. package/substrate/SECURITY.md +0 -19
  182. package/substrate/architecture/decisions/ADR-029-release-pipeline.md +0 -79
  183. package/substrate/architecture/decisions/ADR-031-non-breaking-changes-adopter-discipline.md +0 -139
  184. package/substrate/architecture/decisions/ADR-032-adopter-sync-dispatcher-architecture.md +0 -192
  185. package/substrate/architecture/decisions/ADR-039-release-tagging-scheme.md +0 -145
  186. package/substrate/architecture/decisions/ADR-040-planning-skill-vocabulary-and-lite-profile.md +0 -155
  187. package/substrate/architecture/decisions/ADR-044-unified-skill-body-template.md +0 -162
  188. package/substrate/lib/clean-artifacts-sweep.sh +0 -112
  189. package/substrate/lib/code-comment-discipline.sh +0 -144
  190. package/substrate/lib/composer-preflight.sh +0 -459
  191. package/substrate/lib/hook-inject.sh +0 -255
  192. package/substrate/lib/luminary-pick.sh +0 -96
  193. package/substrate/lib/output-discipline.sh +0 -143
  194. package/substrate/lib/prose-scan-boundary.sh +0 -171
  195. package/substrate/lib/rewrite-check.sh +0 -214
  196. package/substrate/lib/state.sh +0 -1372
  197. package/substrate/lib/telemetry.sh +0 -205
  198. package/substrate/lib/tier-check.sh +0 -187
  199. package/substrate/lib/tier-dependency-audit.sh +0 -1088
  200. package/substrate/presence/install/bassclef-hook-connect.sh +0 -178
  201. package/substrate/presence/install/bassclef-sync.dispatcher.template.sh +0 -841
  202. package/substrate/presence/install/bassclef-sync.template.sh +0 -2076
  203. package/substrate/presence/install/schedule-auto-save.cron.sh +0 -88
  204. package/substrate/presence/install/schedule-auto-save.taskscheduler.md +0 -122
  205. package/substrate/scripts/aggregate-telemetry.sh +0 -217
  206. package/substrate/scripts/analyze-tier-dependencies.sh +0 -239
  207. package/substrate/scripts/generate-lite-manifest.sh +0 -505
  208. package/substrate/scripts/generate-tier-manifest.sh +0 -28
  209. package/substrate/scripts/intent-drift-check.sh +0 -456
  210. package/substrate/scripts/lite-manifest-drift-check.sh +0 -146
  211. package/substrate/scripts/render-lite-manifest-doc.sh +0 -150
  212. package/substrate/standards/adr-template.md +0 -86
  213. package/substrate/standards/api-conventions/nextjs.md +0 -84
  214. package/substrate/standards/artifact-composition.md +0 -209
  215. package/substrate/standards/bash-hook-safety.md +0 -246
  216. package/substrate/standards/bassclef-configs-schema.md +0 -232
  217. package/substrate/standards/bassclef-evolution.md +0 -143
  218. package/substrate/standards/bassclef-internal-jargon.md +0 -244
  219. package/substrate/standards/bassclef-managed-sentinel.md +0 -96
  220. package/substrate/standards/bassclef-source-config.md +0 -228
  221. package/substrate/standards/branch-stacking.md +0 -408
  222. package/substrate/standards/code-safety-principles.md +0 -176
  223. package/substrate/standards/composer-prerequisites.md +0 -155
  224. package/substrate/standards/deferred-actions-schema.md +0 -204
  225. package/substrate/standards/dependency-discipline/cargo.md +0 -39
  226. package/substrate/standards/dependency-discipline/gem.md +0 -43
  227. package/substrate/standards/dependency-discipline/go-mod.md +0 -41
  228. package/substrate/standards/dependency-discipline/npm.md +0 -42
  229. package/substrate/standards/dependency-discipline/pip.md +0 -42
  230. package/substrate/standards/deployment-topology/ec2-tailscale.md +0 -225
  231. package/substrate/standards/deployment-topology.md +0 -69
  232. package/substrate/standards/docs-sync-allowlist.md +0 -76
  233. package/substrate/standards/domain-and-dns.md +0 -145
  234. package/substrate/standards/frontend-stack.md +0 -67
  235. package/substrate/standards/frontmatter-schema.md +0 -154
  236. package/substrate/standards/graceful-exit.md +0 -227
  237. package/substrate/standards/hook-idempotency.md +0 -102
  238. package/substrate/standards/hook-injection-discipline.md +0 -202
  239. package/substrate/standards/hook-install-class.md +0 -215
  240. package/substrate/standards/input-handler-interface.md +0 -152
  241. package/substrate/standards/lite-manifest-schema-changes.md +0 -135
  242. package/substrate/standards/luminary-matching.md +0 -105
  243. package/substrate/standards/luminary-problem-patterns.md +0 -481
  244. package/substrate/standards/migration-discipline/active-record.md +0 -50
  245. package/substrate/standards/migration-discipline/alembic.md +0 -43
  246. package/substrate/standards/migration-discipline/gorm.md +0 -50
  247. package/substrate/standards/migration-discipline/prisma.md +0 -53
  248. package/substrate/standards/migration-discipline/sqlalchemy.md +0 -51
  249. package/substrate/standards/mobile-ephemeral-session.md +0 -167
  250. package/substrate/standards/model-routing-discipline.md +0 -160
  251. package/substrate/standards/ogilvy-writing-rules.md +0 -225
  252. package/substrate/standards/opener-discipline.md +0 -96
  253. package/substrate/standards/operator-facing-prose-discipline.md +0 -201
  254. package/substrate/standards/persona-schema.md +0 -229
  255. package/substrate/standards/pluggable-luminaries.md +0 -323
  256. package/substrate/standards/pr-body-discipline.md +0 -115
  257. package/substrate/standards/preview-state-schema.md +0 -189
  258. package/substrate/standards/project-directory-layout.md +0 -276
  259. package/substrate/standards/release-tagging.md +0 -137
  260. package/substrate/standards/reserved-skill-names.md +0 -120
  261. package/substrate/standards/scannable-multi-option-output.md +0 -261
  262. package/substrate/standards/sdlc-compliance.md +0 -286
  263. package/substrate/standards/sdlc-gates/typescript.md +0 -57
  264. package/substrate/standards/secrets-lifecycle.md +0 -210
  265. package/substrate/standards/security-scanner-adapter.md +0 -145
  266. package/substrate/standards/session-board.md +0 -256
  267. package/substrate/standards/skill-output-discipline.md +0 -90
  268. package/substrate/standards/state-spine-contract.md +0 -255
  269. package/substrate/standards/state-spine.md +0 -511
  270. package/substrate/standards/steering-hints/kiss-words.md +0 -11
  271. package/substrate/standards/substrate-config-schema.md +0 -267
  272. package/substrate/standards/tech-stack-config.md +0 -109
  273. package/substrate/standards/tier-dependency-analysis.md +0 -167
  274. package/substrate/standards/tier-runtime-deps/lite.md +0 -57
  275. package/substrate/standards/tier-tag-schema.md +0 -155
  276. package/substrate/standards/two-layer-config.md +0 -99
  277. package/substrate/standards/use-case-format.md +0 -292
  278. package/substrate/standards/user-story-invest.md +0 -268
  279. package/substrate/standards/velocity-and-appetite.md +0 -229
  280. package/substrate/standards/voice-input-pattern.md +0 -119
  281. package/substrate/standards/whereami-schema.md +0 -301
  282. package/substrate/standards/worktree-management.md +0 -211
  283. package/substrate/standards/writing-guide.md +0 -213
  284. package/substrate/templates/chronicle-template.md +0 -75
  285. package/substrate/templates/deferred-action-template.md +0 -45
  286. package/substrate/templates/memory-proposal-template.md +0 -77
  287. package/substrate/templates/persona-template.md +0 -200
  288. package/substrate/templates/pr-faq.md +0 -45
  289. package/substrate/templates/secret-rotation-template.md +0 -162
  290. package/substrate/templates/spec-template.md +0 -131
  291. package/substrate/templates/use-case-template.md +0 -194
  292. package/substrate/templates/user-story-template.md +0 -107
  293. package/substrate/templates/whereami-template.md +0 -101
@@ -1,98 +0,0 @@
1
- ---
2
- name: requirement
3
- description: "Produce Cockburn use cases plus INVEST user stories for a feature in one pass. Sam writes formal use cases for a spec. Louis writes INVEST stories for a backlog. You get both from one operator input. Combines /use-case + /user-stories."
4
- problem: "Features get built from a one-line ticket. Corners get cut. Acceptance drifts from what the persona needs."
5
- value: "Cockburn use cases plus INVEST user stories in one pass. Written for a Sam-style persona."
6
- inputs: [A feature name or ticket ref]
7
- outputs: [Fully-dressed use cases, INVEST user stories with acceptance criteria]
8
- tier: lite
9
- user_invocable: true
10
- disable_model_invocation: false
11
- modes: [both, use-case-only, story-only]
12
- composes_with: [use-case, user-stories, personas]
13
- ---
14
-
15
- # /requirement — Cockburn use cases + INVEST stories in one pass
16
-
17
- ## What you get
18
-
19
- You describe a feature in a paragraph. `/requirement` returns two artifacts.
20
-
21
- <!-- FKGL-EXEMPT: structured shape enumeration; the parentheticals name the artifact fields -->
22
- - One Cockburn-style use case (main success scenario + extensions + preconditions + postconditions)
23
- - One or more INVEST-shape user stories (Independent + Negotiable + Valuable + Estimable + Small + Testable)
24
- <!-- /FKGL-EXEMPT -->
25
-
26
- You pick which one lands. Or both.
27
-
28
- ## When to use
29
-
30
- Type `/requirement` when a feature needs both a spec and a backlog item. Common cases:
31
-
32
- - New feature under `/longrun` scope — spec first, stories second
33
- - Ticket in the queue that needs shape — story alone is thin; add the use case for edge cases
34
- - Adopter demo — Louis wants a story for the pitch; Sam wants a use case for the build
35
-
36
- ## When NOT to use
37
-
38
- - Only a bug fix — INSTEAD go to `/diagnose` at lite
39
- - Pure architecture decision — INSTEAD go to `/spec` at lite
40
- - Formal system contract only — INSTEAD go to `/use-case` at lite
41
-
42
- ## Cluster shape
43
-
44
- `/requirement` sits inside the /longrun cluster as a strategy helper. Its own cluster:
45
-
46
- - Upstream: `/personas` names who the feature is for. `/state-a-problem` frames the pain.
47
- - Downstream: `/spec` bundles use case + stories into a buildable spec.
48
- - Helpers: `/use-case` writes Cockburn shape. `/user-stories` writes INVEST shape.
49
-
50
- ## Composes
51
-
52
- `/requirement` combines 2 single-purpose skills. Both stay at lite for direct dispatch.
53
-
54
- <!-- FKGL-EXEMPT: structured shape names -->
55
- - `/use-case` — Cockburn scenarios; main success plus numbered extensions
56
- - `/user-stories` — INVEST shape; per-story acceptance list
57
- <!-- /FKGL-EXEMPT -->
58
-
59
- Per canvas `docs/canvases/2026-08-02-porcelain-plumbing-reframe.md` — Cockburn plus Beck consensus: shape names matter. `/requirement` combines without hiding the single-purpose skills. Sam and Louis can still call each one directly when they want one shape only.
60
-
61
- ## Modes
62
-
63
- - `both` (default) — writes both a use case and INVEST stories
64
- - `use-case-only` — dispatches `/use-case` alone; skips story authoring
65
- - `story-only` — dispatches `/user-stories` alone; skips use case authoring
66
-
67
- ## Procedure
68
-
69
- 1. Parse the operator's feature paragraph. Extract the actor, the goal, the pain point.
70
- 2. Load persona context via `/personas`. Default to operator when personas are not defined.
71
- 3. If mode is `both` or `use-case-only`: dispatch `/use-case`. Author `docs/use-cases/UC-<slug>.md`.
72
- 4. If mode is `both` or `story-only`: dispatch `/user-stories`. Author `docs/user-stories/<slug>.md`.
73
- 5. Cross-link: the use case cites the stories. The stories cite the use case.
74
- 6. Print artifact paths to the operator.
75
-
76
- ## What lands on disk
77
-
78
- - One use case at `docs/use-cases/UC-<slug>.md` (unless mode is `story-only`)
79
- - One or more stories at `docs/user-stories/<slug>.md` (unless mode is `use-case-only`)
80
- - Cross-references between the two
81
-
82
- ## Rules
83
-
84
- - MUST cite the persona the feature is for (Sam or Louis or a project persona).
85
- - MUST cross-link the use case and the stories.
86
- - MUST match Cockburn shape for use cases. MUST match INVEST shape for stories.
87
- - MAY skip stories or use case per mode.
88
-
89
- ## Refs
90
-
91
- - Canvas `docs/canvases/2026-08-02-porcelain-plumbing-reframe.md`
92
- - Ticket #1050 + comment 5160626302 (Cockburn + Beck consensus)
93
- - Goal doc `docs/iteration-bets/2026-08-04g-porcelain-plumbing-reframe.md`
94
- - `.claude/skills/use-case/SKILL.md` — atomic Cockburn shape
95
- - `.claude/skills/user-stories/SKILL.md` — atomic INVEST shape
96
- - `.claude/skills/personas/SKILL.md` — persona load
97
- - @luminary alistair-cockburn
98
- - @luminary kent-beck
@@ -1,117 +0,0 @@
1
- ---
2
- tier: lite
3
- name: retro
4
- description: "Reflect at session close. Names what worked, what didn't, and what to change next time. Feeds candidate follow-on tickets."
5
- problem: "Sessions end and the lessons vanish. What worked and what broke \u2014 nowhere written."
6
- value: "A short retro that names what to keep and what to change next session."
7
- inputs: [Optional session or goal ref]
8
- outputs: [Kept and Changed and Learned sections, Follow-on ticket candidates]
9
- user_invocable: true
10
- disable_model_invocation: false
11
- ---
12
-
13
- # Retro — Session Retrospective
14
-
15
- Reflect on the current session and capture learnings.
16
-
17
- ## Runs at every tier — deep module
18
-
19
- This skill uses only mechanical inputs. It reads `git log`. It reads files. The agent reflects on the session. No paid API. No LLM call beyond the agent's own turn output.
20
-
21
- Same procedure runs at lite, standard, and ultra. Lite adopters get the full retrospective. Per canvas 2026-07-19-bassclef-lite Q6 Option E.
22
-
23
- Closes bassclef-upstream#1383 (sister flip to `/roadmap-reconcile`).
24
-
25
- ## Steps
26
-
27
- 1. Review what was accomplished this session:
28
- - `git log --oneline --since="today"` for commits
29
- - Check for modified files and new artifacts
30
- 2. Identify:
31
- - What went well (approaches that worked, decisions validated)
32
- - What was harder than expected (and why)
33
- - What should change for next session
34
- 3. List substrate observations from this session (see next section).
35
- 4. Check for open threads that need to carry forward.
36
-
37
- ## Substrate observations — file each as /promote (bassclef-web#96)
38
-
39
- Before writing the retro, list what came up. Categories:
40
-
41
- - Missing skill or hook that would have helped
42
- - Hook fires wrong OR misses when it should fire
43
- - Rule gap or drift
44
- - Prereq surprise — a skill assumed X existed; it did not
45
- - Adopter-visible friction (Sam or Louis lens)
46
-
47
- For each observation, run three steps:
48
-
49
- 1. **Dedup check.** Run `gh issue list --repo <current-repo> --state open --label bassclef-evolution --search "<close-title-match>"`. When a match exists, comment on it. Do not file a new ticket.
50
- 2. **File /promote.** When no match, dispatch `/promote` with pre-filled title + body. The operator reviews before submit. The ticket lands with `bassclef-evolution` label in the current repo. Bassclef pulls via session-reflection hook per memory `feedback_promote_files_locally_not_upstream`.
51
- 3. **Record disposition.** Append a line to the marker file at `state/markers/retro-substrate/<session-id>.marker`. Use the session-id from `state/markers/session-timing/`. Fall back to `YYYY-MM-DD-<slug>` when that is missing.
52
-
53
- Marker format:
54
-
55
- ```
56
- # Retro substrate observations — <session-id>
57
- - date: YYYY-MM-DD
58
- - session: <session-id>
59
- - observations:
60
- - promoted: <one-line title> — filed as <repo>#<ticket>
61
- - deferred: <one-line title> — <reason>
62
- - rejected: <one-line title> — <reason>
63
- - dedup: <one-line title> — commented on <repo>#<ticket>
64
- ```
65
-
66
- Silence in this section is not deferral. List observations OR state "no substrate observations this session" explicitly.
67
-
68
- ## Output
69
-
70
- When a session log exists for today, append a `## Retrospective` section to it.
71
- When no session log exists, create one first via `/session-log` format. Then add the retro.
72
-
73
- <!-- FKGL-EXEMPT: markdown template exemplar; adopter copies verbatim -->
74
- ```markdown
75
- ## Retrospective
76
-
77
- ### Went well
78
- - ...
79
-
80
- ### Harder than expected
81
- - ...
82
-
83
- ### Change for next time
84
- - ...
85
-
86
- ### Substrate observations promoted
87
- - <title> — filed as <repo>#<ticket>
88
- - <title> — dedup: commented on <repo>#<ticket>
89
- - (or: "no substrate observations this session")
90
-
91
- ### Open threads for next session
92
- - ...
93
-
94
- ### Bassclef promotes this session
95
- - agent-self-proposed: N
96
- - agent-user-proposed: M
97
- - total: N plus M
98
-
99
- When M is much larger than N, the agent missed patterns the operator caught. When N is high but bassclef closes none, the agent files too broadly.
100
- ```
101
- <!-- /FKGL-EXEMPT -->
102
-
103
- **Proposer counting**: count bassclef-evolution issues from session
104
- date window:
105
-
106
- ```bash
107
- gh issue list --label bassclef-evolution --state all \
108
- --search "created:>=$(date -v-1d +%Y-%m-%d) created:<=$(date +%Y-%m-%d)" \
109
- --json number,title,labels | jq '[.[] | {n: .number, t: .title,
110
- kind: (if (.labels | map(.name) | index("agent-user-proposed")) then
111
- "user" elif (.labels | map(.name) | index("agent-self-proposed"))
112
- then "self" else "unlabeled" end)}]'
113
- ```
114
-
115
- ## Output discipline
116
-
117
- Dispatch `/kiss words --rewrite` on your skill output before you return it. See `standards/skill-output-discipline.md` for the contract.
@@ -1,114 +0,0 @@
1
- ---
2
- name: riff
3
- description: "Produce 2-3 clickable mock alternatives for a UI surface. Each mock uses a different luminary lens. Louis picks a marketing variant. Sam picks a direction before building. Combines /interpret-input + /luminary + /stage + /visual-review."
4
- problem: "Design directions get one variant and no comparison. Operator picks blind. Rework is huge."
5
- value: "Two or three clickable mocks per UI surface. Each mock pins a different luminary lens."
6
- inputs: [A UI surface intent or design goal]
7
- outputs: [2-3 clickable mock variants, Luminary lens per variant]
8
- tier: lite
9
- user_invocable: true
10
- disable_model_invocation: false
11
- composes_with: [interpret-input, luminary, visual-review]
12
- ---
13
-
14
- # /riff — Vary a UI surface by luminary lens
15
-
16
- ## What you get
17
-
18
- You get 2-3 clickable mock alternatives for a UI surface. Each mock uses a different luminary lens. You pick the one that fits.
19
-
20
- Louis picks a marketing variant. Sam picks a direction before building.
21
-
22
- ## When to use
23
-
24
- Type `/riff` when you have a UI or marketing surface. You want 2-3 options before building.
25
-
26
- - Marketing page — try 3 luminary lenses on the same headline
27
- - App feature UI — pick between minimal, dense, or modal
28
- - Landing page hero — bake off options before design lock-in
29
-
30
- ## When NOT to use
31
-
32
- - Single-variant work — INSTEAD go to `/frontend-design` at standard
33
- - Full prototype pipeline with direct step control — INSTEAD use `/stage` at standard
34
- - Buildable spec plus variants — INSTEAD use `/launch` at standard
35
-
36
- ## Tier gate
37
-
38
- `/visual-review` and `/stage` ship at `tier: standard`. Lite adopters get graceful degrade — variants ship without the review check; the pipeline dispatches directly. Resolve tier via `lib/tier-check.sh`.
39
-
40
- Per canvas 2026-07-19-bassclef-lite Q6 Option E — one SKILL.md file, same name in both tiers, body carries runtime tier awareness with graceful degrade.
41
-
42
- ## Tier and dispatch
43
-
44
- `/riff` sits at bassclef lite. It is a porcelain verb — Git's word for the small set of verbs a user types. Sam or Louis types `/riff` and the pipeline runs underneath.
45
-
46
- The plumbing (Git's word for the deeper steps a verb runs) sits at standard tier. When lite adopters type `/riff`, the skill dispatches:
47
-
48
- 1. `/interpret-input` — parse the operator's input
49
- 2. `/luminary` picker — pick 2-3 lenses that fit the intent
50
- 3. Per lens: author a static HTML mock
51
- 4. Assemble a gallery — one page listing every variant with screenshots and luminary tags
52
- 5. `/visual-review` — screenshot each variant and check against luminary discipline
53
-
54
- Standard adopters can bypass `/riff`. They invoke `/stage` directly for the full pipeline with more control. Ultra adopters get `/pick-luminaries` cosine plus judge for tighter lens matching.
55
-
56
- ## Cluster shape
57
-
58
- `/riff` sits inside the /longrun cluster. It is a helper for marketing and UI direction work. Its own cluster:
59
-
60
- - Upstream: `/interpret-input` parses input into an artifact
61
- - Downstream: picked variant flows into `/build` at standard or `/launch` at standard
62
- - Helpers: `/luminary` picks lenses. `/visual-review` checks each variant. `/frontend-design` is Anthropic's baseline.
63
-
64
- ## Consolidates
65
-
66
- `/riff` consolidates 2 prior skills at the lite entry:
67
-
68
- - `/stage` — prototype pipeline. Stays at standard so you can call each step directly.
69
- - `/riff-prototypes` — deprecated per ADR-020 in favor of `/stage`. Absorbed here at lite.
70
-
71
- Per canvas `docs/canvases/2026-08-02-porcelain-plumbing-reframe.md` — 10 of 10 luminaries agreed on the reframe.
72
-
73
- ## Procedure
74
-
75
- 1. Parse the operator's input via `/interpret-input`. Output: normalized InputArtifact.
76
- 2. Pick 2-3 luminary lenses. Either operator-named or via `/luminary` picker.
77
- 3. For each lens: author a static HTML mock. Path: `docs/prototypes/YYYY-MM-DD-riff-<slug>-variant-N/index.html`. Stubbed data. Include a `<h2>` naming the lens.
78
- 4. Screenshot each variant via Playwright MCP. Save under `.playwright-mcp/`.
79
- 5. Assemble a gallery page. Link every variant. Show screenshots inline. Show luminary tags.
80
- 6. Run `/visual-review` on each variant. Report findings per variant.
81
- 7. Present the gallery URL to the operator. Operator picks. Picked variant flows into `/build` or `/launch` at standard.
82
-
83
- ## Baseline composition
84
-
85
- `/riff` builds on top of Anthropic's `frontend-design` defaults. Adopters firing plain Claude get those defaults. `/riff` adds luminary discipline. It also adds bassclef design tokens.
86
-
87
- ## What lands on disk
88
-
89
- - One HTML mock per variant under `docs/prototypes/`
90
- - One screenshot per variant under `.playwright-mcp/`
91
- - One gallery page linking every variant
92
- - One PR to a feature branch (not main)
93
-
94
- ## Rules
95
-
96
- - MUST produce a PR. Push to a feature branch, not main.
97
- - MUST run on a feature branch.
98
- - MUST screenshot every variant via Playwright MCP. BLOCK if MCP not enabled.
99
- - MUST tag each variant with its luminary lens in the HTML.
100
- - MUST report per-variant `/visual-review` findings with the gallery link.
101
-
102
- ## Refs
103
-
104
- - Canvas `docs/canvases/2026-08-02-porcelain-plumbing-reframe.md`
105
- - Ticket #1050 + comment 5160626302
106
- - ADR-020 (prototype skill family consolidation)
107
- - Goal doc `docs/iteration-bets/2026-08-04g-porcelain-plumbing-reframe.md`
108
- - `.claude/skills/stage/SKILL.md` — atomic pipeline at standard
109
- - `.claude/skills/frontend-design/SKILL.md` — Anthropic baseline
110
- - `.claude/skills/visual-review/SKILL.md` — per-variant review
111
- - `.claude/skills/luminary/SKILL.md` — lens picker
112
- - `.claude/luminaries/bill-buxton.md` — variant discipline anchor
113
- - @luminary bill-buxton
114
- - @luminary alan-cooper
@@ -1,163 +0,0 @@
1
- ---
2
- tier: lite
3
- name: roadmap-reconcile
4
- description: "Audit canvas LR-N tables and roadmap entries against recent chronicles, merged PRs, and freshly-filed tickets. Surface drift via --dry-run. Apply edits with --apply. Runs at /longrun prep and /sprint as pre-flight."
5
- problem: "Canvas roadmap tables get stale. Shipped work sits marked pending. Sequencing drifts from reality."
6
- value: "Diffs the roadmap against merged PRs plus fresh session logs. Applies edits so the canvas matches reality."
7
- inputs: [Optional --dry-run or --apply flag, Roadmap path or canvas ref]
8
- outputs: [Diff report of drift, Applied edits when --apply, Status per row]
9
- user_invocable: true
10
- disable_model_invocation: false
11
- ---
12
-
13
- # /roadmap-reconcile — True up canvases against shipping reality
14
-
15
- ## Runs at every tier — deep module (per canvas 2026-07-19-bassclef-lite Q6 Option E)
16
-
17
- This skill uses only mechanical inputs — `git log`, `gh pr list`, `gh issue list`, grep across canvas + goal doc files. No paid API. No LLM dispatch. Same procedure runs identically at lite, standard, and ultra. Lite adopters get the full drift check.
18
-
19
- The `lib/tier-check.sh` gate reads adopter tier from `.claude/bassclef-configs.jsonc`. This skill's body has no tier branch — one procedure serves every reader. Future extension (LLM-based semantic drift) would add a tier branch at the point of divergence; today no branch is needed.
20
-
21
- Closes bassclef-upstream#1383.
22
-
23
- The recurring substrate primitive that closes the stale-canvas trap. As operator ideates in a session, surfaces shift; the canvases holding LR-N sequencing tables stay frozen at the last commit. Without reconciliation, /longrun prep reads pre-detour next-goals and dispatches against work that's no longer on the critical path.
24
-
25
- This skill enumerates roadmap surfaces, diffs them against shipping reality (chronicles + PRs + tickets), and produces edits — inline by default, or as a dry-run report for operator review.
26
-
27
- INSTEAD of relying on operator-and-agent ad-hoc canvas review at every prep: dispatch this skill as a pre-flight gate; it returns either "no drift" (proceed) or a specific diff (resolve before scope commit).
28
-
29
- ## When to invoke
30
-
31
- - **Auto at /longrun prep Step 0.5**: dry-run mode runs before scope confirmation; surfaces drift; operator confirms reconciled state before WU-0
32
- - **Auto at /sprint**: dry-run output appended to /sprint surface so operator sees roadmap drift alongside ticket-level orientation
33
- - **Standalone**: operator dispatches `/roadmap-reconcile` after a substantive ideation session that didn't land in canvas updates yet
34
- - **Composer fallback**: any composer detecting ticket-vs-canvas drift can dispatch this skill instead of failing silently
35
-
36
- ## Procedure
37
-
38
- 1. **Enumerate roadmap surfaces:**
39
- - Substrate canvases under `strategy/canvases/` — grep for `LR-N` rows in Stage 3 build sequence + Operator priorities tables
40
- - Typed roadmap entities under `docs/roadmaps/*.md` — read via `state_roadmap_get` accessor when present (per bassclef#337, #480 once shipped)
41
- - Active iteration goal under `docs/iteration-bets/` — extract `next_bet:` field
42
- - Whereami `next_bet:` field at `docs/whereami.md`
43
- 2. **Read shipping reality:**
44
- - `git log --since=14days --pretty=oneline -- 'chronicle/*.md' 'docs/chronicle/*.md'` — sessions that shipped
45
- - `gh pr list --state all --json number,title,state,mergedAt --limit 30` — PR truth
46
- - `gh issue list --state open --search 'created:>=2-weeks-ago' --json number,title,labels,body` — recently filed tickets
47
- - `git log --since=14days --pretty=format:'%h %s' -- 'docs/iteration-bets/*.md'` — bets opened or closed
48
- 3. **Build a diff** — for each LR-N row in canvas tables:
49
- - Status mismatch: canvas says "in progress" but a CLOSED goal ships its scope, OR canvas says "next" but a bet's already opened
50
- - Sequencing mismatch: a recently-filed ticket names itself as "blocking LR-N+1" or "load-bearing for LR-N" but doesn't appear in any LR-row
51
- - Reference rot: canvas references a ticket that's been closed or superseded
52
- 4. **Produce output:**
53
- - **--dry-run mode (default at /longrun prep + /sprint):** markdown diff report — what's stale, what to edit, what to add
54
- - **--apply mode (operator opt-in):** inline edits to canvas files via Edit tool; commit with `docs(roadmap): reconcile <slug>`
55
- - **--json mode:** structured output for downstream skills/hooks
56
- 5. **Surface output** to caller (operator or composer); caller decides resolve / defer / amend.
57
-
58
- ## What NOT to do
59
-
60
- - **Don't fabricate LR-N rows for tickets that aren't ready to be sequenced.** INSTEAD: surface the ticket as "candidate for next sequencing decision" without inserting; operator decides at /longrun prep.
61
- - **Don't auto-apply edits without --apply opt-in.** INSTEAD: --dry-run is the default; operator reviews the diff before any canvas write.
62
- - **Don't reach inside canvas Stage 1/2 (Thesis, Shape) content.** INSTEAD: only edit Stage 3 build sequences + Operator priorities tables + status overlays; the upstream thesis stays operator-owned.
63
- - **Don't reconcile against draft tickets or WIP goals.** INSTEAD: filter to merged PRs + closed/active goals; tickets in `draft` state or PRs in `draft` are noise.
64
- - **Don't run during /longrun execution mid-step.** INSTEAD: only at prep + closeout windows; mid-execution reconciliation creates scope-drift triggers.
65
-
66
- ## Output format (--dry-run)
67
-
68
- ```markdown
69
- ## /roadmap-reconcile dry-run — <timestamp>
70
-
71
- ### Surfaces enumerated
72
-
73
- - canvas: strategy/canvases/2026-05-03-bassclef-platform-primitive.md (8 LR-N rows)
74
- - canvas: strategy/canvases/2026-05-04-hud-on-brownfield-repo.md (10-step build sequence)
75
- - typed roadmap: <path> OR (none — bassclef#480 not yet shipped)
76
- - whereami next_bet: 2026-05-XX-LR6-your-app-refactor-dispatch
77
-
78
- ### Drift detected
79
-
80
- **Canvas <path>:**
81
- - LR-N row <N> says "in progress" but goal <slug> is CLOSED (per chronicle <ref>); should be "✅ shipped"
82
- - LR-N row <N+1> references bassclef#XXX which has been closed as superseded; should reference replacement #YYY
83
- - bassclef#ZZZ filed 3 days ago names itself as "blocks LR-N+2"; doesn't appear in canvas table
84
-
85
- **Whereami next_bet:**
86
- - Names LR6 = POA dispatch; canvas Operator priorities row also says LR6 = POA dispatch — aligned
87
-
88
- ### Recommended edits
89
-
90
- 1. Update canvas <path> Operator priorities row N: status → "✅ shipped 2026-05-04"
91
- 2. Update canvas <path> Stage 3 row M: replace "#XXX" with "#YYY"
92
- 3. Insert new row in canvas <path> at LR-N+2: "#ZZZ — <description from ticket>"
93
-
94
- ### To apply
95
-
96
- `/roadmap-reconcile --apply` (operator-confirms before commit)
97
- ```
98
-
99
- ## Output format (--json)
100
-
101
- ```json
102
- {
103
- "timestamp": "2026-05-04T...",
104
- "surfaces": [
105
- {"type": "canvas", "path": "...", "rows": 8},
106
- {"type": "typed-roadmap", "path": null, "note": "bassclef#480 not yet shipped"}
107
- ],
108
- "drift": [
109
- {
110
- "surface": "canvas:strategy/canvases/...",
111
- "row": "LR-4",
112
- "claim": "in progress",
113
- "reality": "shipped",
114
- "evidence": "chronicle/2026-05-04d-...md",
115
- "edit": "row LR-4 status: shipped"
116
- }
117
- ]
118
- }
119
- ```
120
-
121
- ## Acceptance
122
-
123
- - SKILL.md scaffolds with verb-first description (≤280 chars; per `.claude/rules/skill-description-clarity.md`)
124
- - Tests in `scripts/tests/roadmap-reconcile.test.sh` cover:
125
- - Enumeration: skill detects all canvas LR-N tables in `strategy/canvases/`
126
- - Drift detection: stale canvas + recent shipped chronicle → drift surfaces
127
- - Drift detection: freshly-filed ticket marked as "blocks LR-N" → drift surfaces
128
- - Output formats: --dry-run produces markdown; --json produces valid JSON
129
- - Negative test: clean roadmap (no drift) → "no drift" output
130
- - Integration: /longrun prep SKILL.md procedure adds Step 0.5 reference
131
- - Integration: /sprint SKILL.md composes-with table updated
132
-
133
- ## Composes with
134
-
135
- - `/longrun prep` (composes-into Step 0.5) — pre-flight reconciliation gate
136
- - `/sprint` (composes-into output) — surface drift alongside ticket-level orientation
137
- - `/whats-the-plan` (referenced) — declares the chain; this skill refreshes the plan source
138
- - `/promote` — when reconciliation surfaces a missing typed roadmap entity, file as substrate-evolution ticket (mirrors LR4 WU-0 → bassclef#480 pattern)
139
- - `state_roadmap_get` accessor — read at Step 1 once bassclef#480 ships; until then, canvas-grep is the surface
140
-
141
- ## Distinct from
142
-
143
- - `/sprint` — ticket-level (what's next on the backlog); this is goal-level (what's next in the sequenced roadmap)
144
- - `/whereami` — point-in-time snapshot reader; this skill EDITS the source canvases that whereami summarizes
145
- - `/promote` — files new tickets when patterns surface; this skill updates how filed tickets are sequenced
146
-
147
- ## Sources read
148
-
149
- - bassclef#479 (ticket body) — procedure spec
150
- - `strategy/canvases/2026-05-03-bassclef-platform-primitive.md` — Operator priorities table is the load-bearing surface
151
- - `strategy/canvases/2026-05-04-hud-on-brownfield-repo.md` — Stage 3 build sequence is the second load-bearing surface
152
- - `docs/iteration-bets/2026-05-04d-catalog-substrate-roadmap-reconnect.md` WU-0 — manual instance this skill automates
153
- - `chronicle/2026-05-04d-catalog-substrate-roadmap-reconnect.md` — discoveries section names the meta-loop pattern
154
- - bassclef#480 (ticket body) — typed roadmap entity gap; this skill bridges to it
155
- - `.claude/rules/blocked-items.md` — drift surfaces follow the BLOCKED protocol when /longrun prep can't proceed without resolution
156
-
157
- ## Closes
158
-
159
- Filed in iteration-goal `2026-05-04e-LR5-enforcement-and-content` (LR5) WU-1. Closes bassclef#479. The skill itself is the substrate primitive that retires the manual-WU-0 pattern from LR4 onward.
160
-
161
- ## Output discipline
162
-
163
- Dispatch `/kiss words --rewrite` on your skill output before you return it. See `standards/skill-output-discipline.md` for the contract.