@thebassclef/lite 0.1.3 → 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 +216 -137
  2. package/dist/cli.js +218 -139
  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,417 +0,0 @@
1
- ---
2
- tier: lite
3
- name: use-case
4
- description: "Produce Cockburn-style use cases \u2014 main success scenario, numbered extensions, preconditions, postconditions, and stakeholders. Closes the gap between /user-stories and /spec. Distinct from /task-scenarios (UX narrative)."
5
- problem: "Requirements go straight to code without a main success scenario. Extension paths get invented per PR."
6
- value: "Cockburn-style use cases with numbered extensions and pre/postcondition contracts."
7
- inputs: [A feature or persona-scoped scope]
8
- outputs: [Fully-dressed use case, Main success scenario plus extensions, Pre/postconditions]
9
- user_invocable: true
10
- disable_model_invocation: false
11
- ---
12
-
13
- # /use-case — Cockburn Behavior Spec
14
-
15
- Produce goal-level behavior specs in the fully-dressed format per @luminary alistair-cockburn (*Writing Effective Use Cases*, 2000). Forces systematic extension enumeration (1a, 1b, 2a), surfaces preconditions + postconditions as first-class fields, captures stakeholders + interests so non-actor concerns (compliance, audit, -ilities) reach `/decompose`.
16
-
17
- ## When to invoke
18
-
19
- - After `/personas`, `/jtbd-tasks`, and ideally `/value-prop-canvas`
20
- have produced upstream artifacts
21
- - Before `/user-stories` — write the goal-level spec first, then
22
- slice into INVEST stories with traceability back to use-case lines
23
- - Before `/interaction-design` + `/decompose` — use-case lines map
24
- directly to state diagrams and responsibilities
25
- - Whenever a feature spans multiple actor steps with alternate flows
26
- (anything with "if X, otherwise Y" logic is a candidate)
27
-
28
- **Do NOT invoke for**:
29
- - Single-step CRUD (no extensions, no goals beyond the step — story is enough)
30
- - UX research (that's `/task-scenarios`)
31
- - Positioning (that's `/value-prop` or `/value-prop-canvas`)
32
- - System architecture (that's ADRs + `/architect-review`)
33
-
34
- ## Distinction from adjacent artifacts
35
-
36
- Cockburn (2024) and NN/G both emphasize that these four are
37
- **distinct artifacts** — not competing framings. `/use-case`
38
- occupies the SPEC seat:
39
-
40
- | Artifact | Purpose | Format | Primary consumer |
41
- |----------|---------|--------|------------------|
42
- | **JTBDs** | WHY (job being hired) | Outcome statement | PM, strategist |
43
- | **Task scenarios** (NN/G) | CONTEXT (day-in-the-life narrative) | Story prose | UX researcher, `/synthetic-user` |
44
- | **User stories** (Cohn/Wake) | WHAT (backlog tokens for incremental delivery) | As-a-I-want-So-that + INVEST | Developer, sprint planner |
45
- | **Use cases** (Cockburn) | SPEC (system behavior for complete goal) | Structured: goal + main scenario + extensions + pre/post + stakeholders | Architect, `/decompose`, `/verify` |
46
-
47
- A use case answers: *"What must the system do for this actor to
48
- achieve this goal, including every branch, failure, and exit?"*
49
- Not "how" (implementation) and not "why" (value prop) — **what
50
- behavior the system exhibits, exhaustively**.
51
-
52
- ## Sources read
53
-
54
- - @luminary alistair-cockburn — *Writing Effective Use Cases* (2000). Origin of the fully-dressed format, extension enumeration rules, goal levels (user-goal / subfunction / summary), precondition + guarantees discipline, stakeholders+interests practice. Every rule in this skill's procedure traces back to this text.
55
- - @luminary alistair-cockburn — *Unifying user stories, use cases, and story maps* (2024). Establishes the use-case↔user-story↔story-map distinction; this skill respects the boundaries.
56
- - `.claude/skills/personas/SKILL.md`, `.claude/skills/jtbd-tasks/SKILL.md`,
57
- `.claude/skills/value-prop-canvas/SKILL.md` — upstream artifacts
58
- - `.claude/skills/user-stories/SKILL.md` — downstream consumer;
59
- stories slice use-case lines with traceability (UC-N step Xa)
60
- - `.claude/skills/interaction-design/SKILL.md` — renders use-case
61
- main scenario + extensions as state + sequence diagrams
62
- - `.claude/skills/decompose/SKILL.md` — consumes use-case as
63
- alternative input to sequence diagrams; stakeholders+interests
64
- drive the -ility audit
65
- - `.claude/skills/verify/SKILL.md` — use-case lines → test
66
- assertions (every step + every extension = at least one assertion)
67
- - `standards/use-case-format.md` — companion standard (this skill's
68
- standard; codifies Cockburn schema + extension rules +
69
- stakeholders+interests discipline)
70
- - `templates/use-case-template.md` — fully-dressed template
71
-
72
- ## What I'm NOT reading (with reason)
73
-
74
- - Full Cockburn 2000 book — the rules needed are well-established
75
- (main scenario / extensions / pre/post / stakeholders) and
76
- captured in the companion standard. Cited, not reconstructed.
77
- - Other use-case notation styles (RUP, "Use Case 2.0" Jacobson
78
- variants) — Cockburn is the bassclef shape for this skill.
79
- Alternative styles can be adopted later with explicit ADR.
80
- - `.claude/skills/spec/SKILL.md` full body — /spec consumes
81
- use-cases downstream; this skill's output shape is defined by
82
- the Cockburn format, not by /spec's input expectations.
83
-
84
- ## Usage
85
-
86
- ```
87
- /use-case → produce use case(s) from current iteration goal scope
88
- /use-case [ticket-ref] → produce from a specific ticket / spec / canvas
89
- /use-case from-jtbd [JTBD slug] → derive use case for one JTBD (primary goal)
90
- /use-case from-user-story [US-NNN] → reverse-engineer: a story that's grown complex enough to need a use-case backing
91
- /use-case validate [path] → audit existing use case against Cockburn schema + extension enumeration
92
- ```
93
-
94
- ## Procedure
95
-
96
- ### Step 1: Resolve inputs
97
-
98
- Read upstream artifacts in this order. Halt with a useful warning
99
- if a required input is missing:
100
-
101
- 1. **Personas** — `docs/personas/*.md` (preferred) or
102
- `docs/design/personas/*.md` (legacy). Use-case's **primary
103
- actor** MUST be a persona slug, not "user."
104
- 2. **JTBDs** — `docs/design/personas/[persona]/jtbds.md` or
105
- equivalent. Each use case has a single **goal** that traces to
106
- a JTBD outcome. Halt if no JTBDs for the scope in question
107
- (warn the operator; offer to run `/jtbd-tasks` first).
108
- 3. **Value Prop Canvas** (optional) — `docs/value-prop-canvas/*.md`.
109
- When present, Pain-Relievers + Gain-Creators ground the "why
110
- this goal matters" framing in the stakeholders+interests block.
111
- 4. **Iteration bet or canvas scope** — if invoked without a ticket,
112
- read the active iteration goal's scope statement.
113
-
114
- ### Step 2: Choose goal level
115
-
116
- Per Cockburn, every use case has a **goal level**. Picking the
117
- right one prevents the "use case that tries to do everything"
118
- failure mode.
119
-
120
- | Level | Symbol | Description | Example |
121
- |-------|--------|-------------|---------|
122
- | **Summary** | ☁️ (cloud) | Multi-session, multi-actor, strategic outcome | "Onboard a new tenant" |
123
- | **User goal** | 🎯 (sea level) | Single actor, single session, observable completion | "Submit an expense report" |
124
- | **Subfunction** | 🐟 (underwater) | Component of a user-goal; not worth standalone use-case unless reused | "Validate expense receipt" |
125
-
126
- **Default to user-goal** (🎯). Summary-level only when the work
127
- genuinely spans sessions. Subfunction only when the same behavior
128
- is reused by 2+ user-goal use cases.
129
-
130
- ### Step 3: Draft the fully-dressed use case
131
-
132
- Use the template at `templates/use-case-template.md`.
133
- Required fields:
134
-
135
- - **Use case ID + title** — `UC-NNN — [imperative goal]`
136
- - **Primary actor** — persona slug
137
- - **Goal level** — ☁️ / 🎯 / 🐟
138
- - **Scope** — system under design (e.g., "POA backend + web UI")
139
- - **Stakeholders + interests** — table: who cares, what they want
140
- - **Preconditions** — what's true before the use case fires
141
- - **Minimal guarantees** — what's true after, regardless of outcome
142
- - **Success guarantees** — what's true after success
143
- - **Trigger** — event that starts the use case
144
- - **Main success scenario** — numbered steps, actor↔system alternating
145
- - **Extensions** — Na Nb format, mapped to step N
146
- - **Technology/data variations** (optional) — alternate mechanisms at a step
147
- - **Related information** — non-functional requirements, references
148
-
149
- Every step numbered. Every extension numbered per Cockburn's Na Nb
150
- convention (1a = first extension at step 1, 1b = second extension
151
- at step 1, 2a = first extension at step 2, etc.).
152
-
153
- ### Step 4: Extension enumeration discipline
154
-
155
- This is the step most often skipped. Cockburn's rule: **enumerate
156
- every way the main scenario can branch, fail, or exit early**.
157
-
158
- For each step N in the main scenario, ask:
159
-
160
- 1. What if the actor's input is invalid?
161
- 2. What if the system can't complete the step (timeout, dependency, resource limit)?
162
- 3. What if a precondition silently broke?
163
- 4. What if the actor abandons partway?
164
- 5. What if a concurrent actor changed state?
165
-
166
- Each yes → an extension line. Name the extension with the
167
- triggering condition + the recovery path:
168
-
169
- ```
170
- 3a. Email already registered:
171
- 3a1. System displays error + offers password reset
172
- 3a2. Use case ends with actor unauthenticated
173
- ```
174
-
175
- Extension paths can themselves have sub-extensions (3a1a, 3a1b).
176
- Keep nesting to 2 levels max; deeper usually means the extension
177
- should be its own subfunction use case.
178
-
179
- ### Step 5: Stakeholders + interests — drive the -ility audit
180
-
181
- The stakeholders+interests block is what makes a use case feed
182
- `/decompose`'s -ility audit correctly. For each **non-actor** party
183
- with a stake in this goal, record:
184
-
185
- | Stakeholder | Interest |
186
- |-------------|----------|
187
- | Compliance | Audit trail of every auth attempt |
188
- | Ops | No secret leakage into logs |
189
- | Support | Failed-auth reason visible in support tool |
190
- | Billing | Auth event triggers usage counter |
191
-
192
- Every row becomes a non-functional requirement `/decompose` must
193
- account for. Without this block, cross-cutting concerns (audit,
194
- observability, compliance, rate-limiting) get bolted onto
195
- implementations later — the exact Langfuse-inside-HaikuImputer
196
- class of failure the `/decompose` skill exists to prevent.
197
-
198
- ### Step 6: Validation
199
-
200
- Walk the drafted use case through the Cockburn validation
201
- checklist from `standards/use-case-format.md`:
202
-
203
- | Check | Fail signal |
204
- |-------|-------------|
205
- | Goal level stated | No ☁️/🎯/🐟 |
206
- | Primary actor is a persona slug | "user" or missing |
207
- | Stakeholders include at least 2 non-actor parties | Only primary actor listed |
208
- | Every main step numbered | Bullet list or prose |
209
- | Every step has at least one extension considered | Happy path only |
210
- | Preconditions are checkable | Vague ("everything's OK") |
211
- | Success guarantees match trigger outcome | Guarantee doesn't trace back to trigger |
212
- | Main scenario completes within 3-9 steps | >9 = split into subfunction(s) |
213
- | Extensions use Na Nb format | Free-form bullets |
214
-
215
- Fails become WARN or BLOCK per the standard.
216
-
217
- ### Step 7: Emit + traceability
218
-
219
- Write each use case to `docs/use-cases/UC-NNN-[slug].md`.
220
-
221
- Update `docs/use-cases/_matrix.md` with a traceability row:
222
-
223
- ```markdown
224
- | Use case | Primary actor | Goal level | JTBD | Stories sliced from | Stakeholders (count) | Status |
225
- |----------|---------------|------------|------|---------------------|---------------------|--------|
226
- | UC-001 | couple-founders | 🎯 | J1 | US-001, US-002, US-005 | 4 | PASS |
227
- ```
228
-
229
- The matrix surfaces:
230
- - **Orphan use cases** — no JTBD trace = solution without a problem
231
- - **JTBD gaps** — JTBDs with no use case = unserved goals
232
- - **Story coverage** — use cases with no downstream stories = spec that didn't reach the backlog
233
- - **Stakeholder thinness** — use cases with ≤1 non-actor stakeholder = likely missing cross-cutting concerns
234
-
235
- ### Step 8: Output summary
236
-
237
- ```markdown
238
- ## Use cases produced
239
-
240
- **Iteration**: [iteration goal slug]
241
- **Use cases written**: N
242
- **Goal levels**: N summary / N user-goal / N subfunction
243
- **Extensions total**: N (avg N per use case)
244
- **Stakeholders/interests rows**: N total
245
- **Downstream stories traced**: N
246
-
247
- **Gaps**:
248
- - JTBDs without use cases: [list]
249
- - Use cases without downstream stories: [list]
250
- - Use cases with <2 non-actor stakeholders: [list — rewrite recommended]
251
- ```
252
-
253
- ## Worked example — the /decompose-feeding shape
254
-
255
- Here's a fully-dressed use case that demonstrates why the
256
- stakeholders+interests block matters.
257
-
258
- ### UC-001 — Sign in with email + password
259
-
260
- - **Primary actor**: cofounder-pair (persona slug)
261
- - **Goal level**: 🎯 user-goal
262
- - **Scope**: POA web UI + auth service
263
- - **Stakeholders + interests**:
264
-
265
- | Stakeholder | Interest |
266
- |-------------|----------|
267
- | Compliance | Every attempt logged with IP + user-agent |
268
- | Ops | No password or partial hash leaks into logs |
269
- | Support | Failed-auth reason visible in support tool (but not to actor) |
270
- | Billing | Successful auth increments MAU counter |
271
-
272
- - **Preconditions**: cofounder-pair account exists; password is set
273
- - **Minimal guarantees**: audit log written with actor ID (or null for failed lookup) + timestamp + outcome
274
- - **Success guarantees**: valid session cookie issued; MAU incremented
275
- - **Trigger**: actor submits email + password form
276
-
277
- **Main success scenario**:
278
-
279
- 1. Actor submits email + password.
280
- 2. System looks up account by email.
281
- 3. System verifies password against stored hash.
282
- 4. System issues session cookie with 24h TTL.
283
- 5. System redirects to post-auth landing page.
284
-
285
- **Extensions**:
286
-
287
- - **2a. Email not found**:
288
- - 2a1. System displays generic "Invalid credentials" (no user enumeration).
289
- - 2a2. Audit log entry written with null user-ID.
290
- - 2a3. Use case ends with actor unauthenticated.
291
- - **3a. Password mismatch**:
292
- - 3a1. System displays generic "Invalid credentials."
293
- - 3a2. Audit log entry written with user-ID + "pw-mismatch" reason.
294
- - 3a3. Use case ends with actor unauthenticated.
295
- - **3b. Account locked (per rate-limit policy)**:
296
- - 3b1. System displays "Account temporarily locked — try again in N minutes."
297
- - 3b2. Audit log entry written with "lockout" reason.
298
- - 3b3. Use case ends with actor unauthenticated.
299
- - **4a. Session issue fails (transient)**:
300
- - 4a1. System displays "Try again" error.
301
- - 4a2. Audit log written with "session-issue-failure" + error code.
302
- - 4a3. Use case ends with actor unauthenticated.
303
-
304
- ### Why the stakeholders block matters
305
-
306
- Without rows for Compliance, Ops, and Support, the audit-trail
307
- requirement doesn't reach `/decompose`. `/decompose` then picks an
308
- implementation without an AuditLogger decorator; logs get bolted
309
- into the route handler; compliance files an incident three months
310
- later.
311
-
312
- With the block, `/decompose` reads: *"4 stakeholders, 3 non-actor
313
- concerns — route handler needs an audit-log decorator wrapping
314
- the password-verify interface, and logging must scrub secrets
315
- at the boundary."* The responsibility assignment shows up in the
316
- decomposition artifact before any code is written.
317
-
318
- Every extension is also a test assertion for `/verify`:
319
-
320
- - 2a1 → test: `sign_in_with_unknown_email_returns_generic_error`
321
- - 3a1 → test: `sign_in_with_wrong_password_returns_generic_error`
322
- - 3b1 → test: `sign_in_after_rate_limit_returns_lockout_message`
323
- - 4a1 → test: `sign_in_when_session_issue_fails_returns_retry_error`
324
-
325
- Use-case-line → test mapping is 1:1. Extensions that aren't
326
- tested are gaps; tests without use-case-line traceability are
327
- orphan coverage.
328
-
329
- ## Common pitfalls
330
-
331
- - **Happy-path only** — the main scenario is just the "yes path";
332
- real behavior is in the extensions. Skipping extensions = no
333
- spec, just a hope.
334
- - **"User" as primary actor** — use the persona slug. If there's
335
- no persona yet, run `/personas` first.
336
- - **Implementation leak** — "System calls Postgres to look up
337
- account" is implementation. Use case says "System looks up
338
- account"; decomposition decides the storage.
339
- - **Stakeholders block listed only actors** — the whole point of
340
- the block is non-actor concerns (compliance, ops, audit,
341
- billing, support). If it's only the primary actor, you've
342
- missed the -ility audit input.
343
- - **Goal level drift** — "Onboard and sign in and explore the app"
344
- is summary-level but written like user-goal. Pick the level
345
- consciously; if it's summary, split into user-goal use cases.
346
- - **Extension prose that's really a story** — if an extension has
347
- its own multi-step success path, it's probably a subfunction
348
- use case, not an extension. Extract it.
349
- - **Preconditions as throat-clearing** — "The system is running"
350
- is not a precondition. Preconditions are state invariants the
351
- use case assumes (account exists, user is authenticated,
352
- quota is below limit).
353
-
354
- ## Relationship to other skills
355
-
356
- | Skill | Relationship |
357
- |-------|-------------|
358
- | `/personas` | Upstream — provides the primary actor slug |
359
- | `/jtbd-tasks` | Upstream — goal traces to JTBD outcome |
360
- | `/value-prop-canvas` | Upstream (optional) — informs "why this goal matters" framing in stakeholders block |
361
- | `/user-stories` | Downstream — stories slice use-case main scenario + extensions into INVEST tokens (US-N cites UC-N step Xa) |
362
- | `/interaction-design` | Downstream — renders use-case flow as state + sequence diagrams |
363
- | `/decompose` | Downstream — consumes use-case as alternative input alongside sequence diagrams; stakeholders+interests drive -ility audit |
364
- | `/verify` | Downstream — use-case-line → test-assertion mapping (every step + extension = at least one test) |
365
- | `/spec` | Downstream — spec consumes use cases + stories as input |
366
- | `/task-scenarios` | Sibling, NOT replacement — task-scenarios are narrative day-in-the-life for UX research; use cases are behavior specs. Both coexist. |
367
- | `/synthetic-user` | Indirect — use cases are too granular for journey testing; use `/task-scenarios` for that |
368
- | `/shape` | Composer — /shape's `medium` and `full` tiers invoke /use-case as part of the chain |
369
-
370
- ## Chain position
371
-
372
- ```
373
- /personas (WHO)
374
-
375
- /jtbd-tasks (WHY)
376
-
377
- /value-prop-canvas (FIT)
378
-
379
- /use-case (SPEC) ← THIS SKILL
380
-
381
- /user-stories (BACKLOG) [slices use-case lines]
382
-
383
- /interaction-design (RENDERS) + /decompose (RESPONSIBILITIES)
384
-
385
- /spec (BUILD)
386
- ```
387
-
388
- Parallel branch for UX research narrative:
389
-
390
- ```
391
- /jtbd-tasks
392
-
393
- /task-scenarios (CONTEXT)
394
-
395
- /synthetic-user (PERSONA TESTING)
396
- ```
397
-
398
- ## Provenance & evolution
399
-
400
- - Drafted during user-centric chain shaping (2026-04-19e session)
401
- after reading Cockburn 2024 — *Unifying user stories, use cases,
402
- and story maps*. That paper established the 4-artifact
403
- non-overlap that made adding /use-case to the chain defensible.
404
- - Promoted to bassclef via issue #213 (part of spec-lineage family
405
- epic #155).
406
- - Cockburn-aligned: fully-dressed format with extension enumeration
407
- discipline, goal levels, and stakeholders+interests as first-class.
408
-
409
- ## Closes
410
-
411
- - bassclef #213
412
- - Part of spec-lineage family epic #155
413
- - WS-1 of iteration goal 2026-04-21b-shaping-chain-plus-slack
414
-
415
- ## Output discipline
416
-
417
- Dispatch `/kiss words --rewrite` on your skill output before you return it. See `standards/skill-output-discipline.md` for the contract.