@thebassclef/lite 1.0.4 → 1.1.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 (275) hide show
  1. package/dist/cli.cjs +65 -0
  2. package/dist/cli.js +65 -0
  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/.claude/agents/architect.md +70 -0
  7. package/dist/lite/.claude/agents/builder.md +114 -0
  8. package/dist/lite/.claude/agents/designer.md +156 -0
  9. package/dist/lite/.claude/agents/reviewer.md +88 -0
  10. package/dist/lite/.claude/hooks/bassclef-sync.sh +85 -27
  11. package/dist/lite/.claude/hooks/longrun-prep-compounding-axis-check.sh +492 -0
  12. package/dist/lite/.claude/hooks/longrun-prep-render-check.sh +236 -0
  13. package/dist/lite/.claude/hooks/persona-name-scrub-check.sh +105 -0
  14. package/dist/lite/.claude/hooks/skill-step-list-check.sh +171 -0
  15. package/dist/lite/.claude/luminaries/alan-cooper.md +170 -0
  16. package/dist/lite/.claude/luminaries/alistair-cockburn.md +140 -0
  17. package/dist/lite/.claude/luminaries/amazon-pr-faq.md +34 -0
  18. package/dist/lite/.claude/luminaries/andreas-zeller.md +74 -0
  19. package/dist/lite/.claude/luminaries/ash-maurya.md +121 -0
  20. package/dist/lite/.claude/luminaries/bill-buxton.md +210 -0
  21. package/dist/lite/.claude/luminaries/charles-sanders-peirce.md +150 -0
  22. package/dist/lite/.claude/luminaries/david-ogilvy.md +192 -0
  23. package/dist/lite/.claude/luminaries/don-norman.md +173 -0
  24. package/dist/lite/.claude/luminaries/edward-tufte.md +179 -0
  25. package/dist/lite/.claude/luminaries/eric-evans.md +160 -0
  26. package/dist/lite/.claude/luminaries/frederick-brooks.md +50 -0
  27. package/dist/lite/.claude/luminaries/gang-of-four.md +157 -0
  28. package/dist/lite/.claude/luminaries/glenford-myers.md +230 -0
  29. package/dist/lite/.claude/luminaries/hunt-thomas.md +115 -0
  30. package/dist/lite/.claude/luminaries/hyrum-wright.md +94 -0
  31. package/dist/lite/.claude/luminaries/jason-fried-dhh.md +46 -0
  32. package/dist/lite/.claude/luminaries/jesse-james-garrett.md +154 -0
  33. package/dist/lite/.claude/luminaries/john-ousterhout.md +94 -0
  34. package/dist/lite/.claude/luminaries/karl-popper.md +132 -0
  35. package/dist/lite/.claude/luminaries/kent-beck.md +168 -0
  36. package/dist/lite/.claude/luminaries/linus-torvalds.md +218 -0
  37. package/dist/lite/.claude/luminaries/martin-fowler.md +164 -0
  38. package/dist/lite/.claude/luminaries/michael-feathers.md +125 -0
  39. package/dist/lite/.claude/luminaries/michael-nygard.md +118 -0
  40. package/dist/lite/.claude/luminaries/robert-c-martin.md +164 -0
  41. package/dist/lite/.claude/luminaries/saltzer-schroeder.md +194 -0
  42. package/dist/lite/.claude/luminaries/sophia-prater.md +193 -0
  43. package/dist/lite/.claude/luminaries/stephen-toulmin.md +131 -0
  44. package/dist/lite/.claude/luminaries/tony-hoare.md +170 -0
  45. package/dist/lite/.claude/luminaries/vaughn-vernon.md +50 -0
  46. package/dist/lite/.claude/luminaries/w-edwards-deming.md +158 -0
  47. package/dist/lite/.claude/rules/accessor-library-discipline.md +110 -0
  48. package/dist/lite/.claude/rules/adr-discipline.md +96 -0
  49. package/dist/lite/.claude/rules/api-conventions.md +115 -0
  50. package/dist/lite/.claude/rules/artifact-ingestion.md +137 -0
  51. package/dist/lite/.claude/rules/assert-only-after-verify.md +111 -0
  52. package/dist/lite/.claude/rules/blocked-items.md +139 -0
  53. package/dist/lite/.claude/rules/bootstrap-pair-discipline.md +106 -0
  54. package/dist/lite/.claude/rules/branching.md +28 -0
  55. package/dist/lite/.claude/rules/cold-adopter-harness-discipline.md +93 -0
  56. package/dist/lite/.claude/rules/commit-conventions.md +22 -0
  57. package/dist/lite/.claude/rules/compounding-axis-fresh-analysis.md +173 -0
  58. package/dist/lite/.claude/rules/compounding-sequence-fresh-analysis.md +173 -0
  59. package/dist/lite/.claude/rules/context-engineering.md +155 -0
  60. package/dist/lite/.claude/rules/context-management.md +85 -0
  61. package/dist/lite/.claude/rules/defensive-bash.md +52 -0
  62. package/dist/lite/.claude/rules/deferred-actions.md +233 -0
  63. package/dist/lite/.claude/rules/destructive-operations.md +69 -0
  64. package/dist/lite/.claude/rules/diagnosis.md +38 -0
  65. package/dist/lite/.claude/rules/github-issue-flash-tweet.md +114 -0
  66. package/dist/lite/.claude/rules/guardrails.md +73 -0
  67. package/dist/lite/.claude/rules/hook-wire-on-author.md +77 -0
  68. package/dist/lite/.claude/rules/identifier-leak-prevention.md +73 -0
  69. package/dist/lite/.claude/rules/iteration-bet-brief-completeness.md +43 -0
  70. package/dist/lite/.claude/rules/lite-manifest-schema-change-discipline.md +79 -0
  71. package/dist/lite/.claude/rules/longrun-prep-plan-doc-compression.md +77 -0
  72. package/dist/lite/.claude/rules/loop-discipline.md +71 -0
  73. package/dist/lite/.claude/rules/manual-prod-approval.md +100 -0
  74. package/dist/lite/.claude/rules/marker-enrichment-discipline.md +72 -0
  75. package/dist/lite/.claude/rules/mobile-ephemeral-session.md +109 -0
  76. package/dist/lite/.claude/rules/new-dependency-check.md +44 -0
  77. package/dist/lite/.claude/rules/oo-ad-entry-point.md +95 -0
  78. package/dist/lite/.claude/rules/operator-facing-prose.md +177 -0
  79. package/dist/lite/.claude/rules/option-label-discipline.md +82 -0
  80. package/dist/lite/.claude/rules/pattern-annotation.md +83 -0
  81. package/dist/lite/.claude/rules/persona-name-leak-scrub.md +90 -0
  82. package/dist/lite/.claude/rules/plain-english-discipline.md +132 -0
  83. package/dist/lite/.claude/rules/plan-enumeration-needs-value-props.md +177 -0
  84. package/dist/lite/.claude/rules/pr-body-shape.md +195 -0
  85. package/dist/lite/.claude/rules/pr-strategy.md +142 -0
  86. package/dist/lite/.claude/rules/pr-title-shape.md +90 -0
  87. package/dist/lite/.claude/rules/prototype-workflow.md +53 -0
  88. package/dist/lite/.claude/rules/reserved-skill-names.md +103 -0
  89. package/dist/lite/.claude/rules/schema-management.md +42 -0
  90. package/dist/lite/.claude/rules/sdlc-gates.md +149 -0
  91. package/dist/lite/.claude/rules/security.md +37 -0
  92. package/dist/lite/.claude/rules/session-artifacts.md +236 -0
  93. package/dist/lite/.claude/rules/skill-composition-declarations.md +105 -0
  94. package/dist/lite/.claude/rules/skill-description-clarity.md +196 -0
  95. package/dist/lite/.claude/rules/skill-procedure-step-list.md +119 -0
  96. package/dist/lite/.claude/rules/sprint-prep-preset-picker.md +76 -0
  97. package/dist/lite/.claude/rules/state-schema-validation.md +156 -0
  98. package/dist/lite/.claude/rules/stuck-signal-diagnostic.md +111 -0
  99. package/dist/lite/.claude/rules/substrate-config-schema.md +85 -0
  100. package/dist/lite/.claude/rules/test-list-discipline.md +129 -0
  101. package/dist/lite/.claude/rules/test-sufficiency.md +186 -0
  102. package/dist/lite/.claude/rules/testing-tier-config.md +125 -0
  103. package/dist/lite/.claude/rules/testing.md +38 -0
  104. package/dist/lite/.claude/rules/turn-estimate-grounding.md +82 -0
  105. package/dist/lite/.claude/rules/visual-hierarchy.md +427 -0
  106. package/dist/lite/.claude/rules/we-dont-break-adopters.md +103 -0
  107. package/dist/lite/.claude/rules/whereami-load-bearing.md +184 -0
  108. package/dist/lite/.claude/rules/writing-craft-discipline.md +72 -0
  109. package/dist/lite/.claude/rules/wu-sequencing-compounds.md +119 -0
  110. package/dist/lite/.claude/skills/build/SKILL.md +640 -0
  111. package/dist/lite/.claude/skills/chronicle/SKILL.md +55 -0
  112. package/dist/lite/.claude/skills/clean-artifacts/SKILL.md +249 -0
  113. package/dist/lite/.claude/skills/decompose/SKILL.md +280 -0
  114. package/dist/lite/.claude/skills/diagnose/SKILL.md +297 -0
  115. package/dist/lite/.claude/skills/feynman/SKILL.md +90 -0
  116. package/dist/lite/.claude/skills/howdoi/SKILL.md +105 -0
  117. package/dist/lite/.claude/skills/ia-model/SKILL.md +108 -0
  118. package/dist/lite/.claude/skills/interaction-design/SKILL.md +112 -0
  119. package/dist/lite/.claude/skills/interpret-input/SKILL.md +180 -0
  120. package/dist/lite/.claude/skills/journal/SKILL.md +209 -0
  121. package/dist/lite/.claude/skills/kiss/SKILL.md +449 -0
  122. package/dist/lite/.claude/skills/launch/SKILL.md +915 -0
  123. package/dist/lite/.claude/skills/lean-canvas/SKILL.md +332 -0
  124. package/dist/lite/.claude/skills/longrun/SKILL.md +512 -0
  125. package/dist/lite/.claude/skills/luminary/SKILL.md +481 -0
  126. package/dist/lite/.claude/skills/ogilvy-writing-audit/SKILL.md +177 -0
  127. package/dist/lite/.claude/skills/onboard-repo/SKILL.md +1640 -0
  128. package/dist/lite/.claude/skills/pattern-review/SKILL.md +99 -0
  129. package/dist/lite/.claude/skills/personas/SKILL.md +207 -0
  130. package/dist/lite/.claude/skills/promote/SKILL.md +283 -0
  131. package/dist/lite/.claude/skills/requirement/SKILL.md +98 -0
  132. package/dist/lite/.claude/skills/retro/SKILL.md +117 -0
  133. package/dist/lite/.claude/skills/riff/SKILL.md +114 -0
  134. package/dist/lite/.claude/skills/roadmap-reconcile/SKILL.md +163 -0
  135. package/dist/lite/.claude/skills/session-end/SKILL.md +309 -0
  136. package/dist/lite/.claude/skills/session-log/SKILL.md +299 -0
  137. package/dist/lite/.claude/skills/skills/SKILL.md +228 -0
  138. package/dist/lite/.claude/skills/spec/SKILL.md +105 -0
  139. package/dist/lite/.claude/skills/sprint/SKILL.md +418 -0
  140. package/dist/lite/.claude/skills/stage/SKILL.md +384 -0
  141. package/dist/lite/.claude/skills/state-a-problem/SKILL.md +185 -0
  142. package/dist/lite/.claude/skills/temperance/SKILL.md +108 -0
  143. package/dist/lite/.claude/skills/use-case/SKILL.md +417 -0
  144. package/dist/lite/.claude/skills/user-stories/SKILL.md +268 -0
  145. package/dist/lite/.claude/skills/value-prop/SKILL.md +251 -0
  146. package/dist/lite/.claude/skills/verify/SKILL.md +160 -0
  147. package/dist/lite/.claude/skills/visual-review/SKILL.md +503 -0
  148. package/dist/lite/.claude/skills/whats-the-plan/SKILL.md +202 -0
  149. package/dist/lite/.claude/skills/whereami/SKILL.md +307 -0
  150. package/dist/lite/AGENTS.md +79 -0
  151. package/dist/lite/CLAUDE-lite.md +85 -0
  152. package/dist/lite/CODE_OF_CONDUCT.md +28 -0
  153. package/dist/lite/CONTRIBUTING.md +177 -0
  154. package/dist/lite/README.md +173 -0
  155. package/dist/lite/SECURITY.md +19 -0
  156. package/dist/lite/architecture/decisions/ADR-029-release-pipeline.md +79 -0
  157. package/dist/lite/architecture/decisions/ADR-031-non-breaking-changes-adopter-discipline.md +139 -0
  158. package/dist/lite/architecture/decisions/ADR-032-adopter-sync-dispatcher-architecture.md +192 -0
  159. package/dist/lite/architecture/decisions/ADR-039-release-tagging-scheme.md +145 -0
  160. package/dist/lite/architecture/decisions/ADR-040-planning-skill-vocabulary-and-lite-profile.md +155 -0
  161. package/dist/lite/architecture/decisions/ADR-044-unified-skill-body-template.md +162 -0
  162. package/dist/lite/lib/clean-artifacts-sweep.sh +112 -0
  163. package/dist/lite/lib/code-comment-discipline.sh +144 -0
  164. package/dist/lite/lib/composer-preflight.sh +459 -0
  165. package/dist/lite/lib/deferred-actions.sh +146 -0
  166. package/dist/lite/lib/hook-header-parser.sh +61 -0
  167. package/dist/lite/lib/hook-heartbeat.sh +152 -0
  168. package/dist/lite/lib/hook-inject.sh +255 -0
  169. package/dist/lite/lib/hook-installer.sh +195 -0
  170. package/dist/lite/lib/luminary-pick.sh +96 -0
  171. package/dist/lite/lib/output-discipline.sh +143 -0
  172. package/dist/lite/lib/prose-scan-boundary.sh +171 -0
  173. package/dist/lite/lib/rewrite-check.sh +214 -0
  174. package/dist/lite/lib/session-rescue.sh +151 -0
  175. package/dist/lite/lib/source-graph-walker.sh +277 -0
  176. package/dist/lite/lib/state.sh +1372 -0
  177. package/dist/lite/lib/telemetry.sh +205 -0
  178. package/dist/lite/lib/tier-check.sh +187 -0
  179. package/dist/lite/lib/tier-dependency-audit.sh +1088 -0
  180. package/dist/lite/presence/install/bassclef-hook-connect.sh +178 -0
  181. package/dist/lite/presence/install/bassclef-sync.dispatcher.template.sh +841 -0
  182. package/dist/lite/presence/install/bassclef-sync.template.sh +2278 -0
  183. package/dist/lite/presence/install/schedule-auto-save.cron.sh +88 -0
  184. package/dist/lite/presence/install/schedule-auto-save.taskscheduler.md +122 -0
  185. package/dist/lite/scripts/aggregate-telemetry.sh +217 -0
  186. package/dist/lite/scripts/analyze-tier-dependencies.sh +239 -0
  187. package/dist/lite/scripts/generate-lite-manifest.sh +505 -0
  188. package/dist/lite/scripts/generate-tier-manifest.sh +28 -0
  189. package/dist/lite/scripts/intent-drift-check.sh +456 -0
  190. package/dist/lite/scripts/lite-manifest-drift-check.sh +146 -0
  191. package/dist/lite/scripts/render-lite-manifest-doc.sh +150 -0
  192. package/dist/lite/standards/adr-template.md +86 -0
  193. package/dist/lite/standards/api-conventions/nextjs.md +84 -0
  194. package/dist/lite/standards/artifact-composition.md +209 -0
  195. package/dist/lite/standards/bash-hook-safety.md +246 -0
  196. package/dist/lite/standards/bassclef-configs-schema.md +232 -0
  197. package/dist/lite/standards/bassclef-evolution.md +143 -0
  198. package/dist/lite/standards/bassclef-internal-jargon.md +244 -0
  199. package/dist/lite/standards/bassclef-managed-sentinel.md +96 -0
  200. package/dist/lite/standards/bassclef-source-config.md +228 -0
  201. package/dist/lite/standards/branch-stacking.md +408 -0
  202. package/dist/lite/standards/code-safety-principles.md +176 -0
  203. package/dist/lite/standards/composer-prerequisites.md +155 -0
  204. package/dist/lite/standards/deferred-actions-schema.md +204 -0
  205. package/dist/lite/standards/dependency-discipline/cargo.md +39 -0
  206. package/dist/lite/standards/dependency-discipline/gem.md +43 -0
  207. package/dist/lite/standards/dependency-discipline/go-mod.md +41 -0
  208. package/dist/lite/standards/dependency-discipline/npm.md +42 -0
  209. package/dist/lite/standards/dependency-discipline/pip.md +42 -0
  210. package/dist/lite/standards/deployment-topology/ec2-tailscale.md +225 -0
  211. package/dist/lite/standards/deployment-topology.md +69 -0
  212. package/dist/lite/standards/docs-sync-allowlist.md +76 -0
  213. package/dist/lite/standards/domain-and-dns.md +145 -0
  214. package/dist/lite/standards/frontend-stack.md +67 -0
  215. package/dist/lite/standards/frontmatter-schema.md +154 -0
  216. package/dist/lite/standards/graceful-exit.md +227 -0
  217. package/dist/lite/standards/hook-idempotency.md +102 -0
  218. package/dist/lite/standards/hook-injection-discipline.md +202 -0
  219. package/dist/lite/standards/hook-install-class.md +215 -0
  220. package/dist/lite/standards/input-handler-interface.md +152 -0
  221. package/dist/lite/standards/lite-manifest-schema-changes.md +180 -0
  222. package/dist/lite/standards/lite-manifest.json +2797 -0
  223. package/dist/lite/standards/luminary-matching.md +105 -0
  224. package/dist/lite/standards/luminary-problem-patterns.md +481 -0
  225. package/dist/lite/standards/migration-discipline/active-record.md +50 -0
  226. package/dist/lite/standards/migration-discipline/alembic.md +43 -0
  227. package/dist/lite/standards/migration-discipline/gorm.md +50 -0
  228. package/dist/lite/standards/migration-discipline/prisma.md +53 -0
  229. package/dist/lite/standards/migration-discipline/sqlalchemy.md +51 -0
  230. package/dist/lite/standards/mobile-ephemeral-session.md +167 -0
  231. package/dist/lite/standards/model-routing-discipline.md +160 -0
  232. package/dist/lite/standards/ogilvy-writing-rules.md +225 -0
  233. package/dist/lite/standards/opener-discipline.md +96 -0
  234. package/dist/lite/standards/operator-facing-prose-discipline.md +201 -0
  235. package/dist/lite/standards/persona-schema.md +229 -0
  236. package/dist/lite/standards/pluggable-luminaries.md +323 -0
  237. package/dist/lite/standards/pr-body-discipline.md +115 -0
  238. package/dist/lite/standards/preview-state-schema.md +189 -0
  239. package/dist/lite/standards/project-directory-layout.md +276 -0
  240. package/dist/lite/standards/release-tagging.md +137 -0
  241. package/dist/lite/standards/reserved-skill-names.md +120 -0
  242. package/dist/lite/standards/scannable-multi-option-output.md +265 -0
  243. package/dist/lite/standards/sdlc-compliance.md +286 -0
  244. package/dist/lite/standards/sdlc-gates/typescript.md +57 -0
  245. package/dist/lite/standards/secrets-lifecycle.md +210 -0
  246. package/dist/lite/standards/security-scanner-adapter.md +145 -0
  247. package/dist/lite/standards/session-board.md +256 -0
  248. package/dist/lite/standards/skill-output-discipline.md +121 -0
  249. package/dist/lite/standards/state-spine-contract.md +255 -0
  250. package/dist/lite/standards/state-spine.md +511 -0
  251. package/dist/lite/standards/steering-hints/kiss-words.md +11 -0
  252. package/dist/lite/standards/substrate-config-schema.md +267 -0
  253. package/dist/lite/standards/tech-stack-config.md +109 -0
  254. package/dist/lite/standards/tier-dependency-analysis.md +167 -0
  255. package/dist/lite/standards/tier-runtime-deps/lite.md +57 -0
  256. package/dist/lite/standards/tier-tag-schema.md +155 -0
  257. package/dist/lite/standards/two-layer-config.md +99 -0
  258. package/dist/lite/standards/use-case-format.md +292 -0
  259. package/dist/lite/standards/user-story-invest.md +268 -0
  260. package/dist/lite/standards/velocity-and-appetite.md +229 -0
  261. package/dist/lite/standards/voice-input-pattern.md +119 -0
  262. package/dist/lite/standards/whereami-schema.md +301 -0
  263. package/dist/lite/standards/worktree-management.md +211 -0
  264. package/dist/lite/standards/writing-guide.md +213 -0
  265. package/dist/lite/templates/chronicle-template.md +75 -0
  266. package/dist/lite/templates/deferred-action-template.md +45 -0
  267. package/dist/lite/templates/memory-proposal-template.md +77 -0
  268. package/dist/lite/templates/persona-template.md +200 -0
  269. package/dist/lite/templates/pr-faq.md +45 -0
  270. package/dist/lite/templates/secret-rotation-template.md +162 -0
  271. package/dist/lite/templates/spec-template.md +131 -0
  272. package/dist/lite/templates/use-case-template.md +194 -0
  273. package/dist/lite/templates/user-story-template.md +107 -0
  274. package/dist/lite/templates/whereami-template.md +101 -0
  275. package/package.json +1 -1
@@ -0,0 +1,268 @@
1
+ ---
2
+ tier: lite
3
+ name: user-stories
4
+ description: "Produce INVEST-shaped user stories that trace back to personas, JTBDs, and value-prop-canvas entries. Backlog-intake artifact for incremental delivery. Distinct from /task-scenarios (UX narrative) and /use-case (system behavior)."
5
+ problem: "Stories get written from developer intent not persona need. INVEST shape drifts."
6
+ value: "INVEST-shaped stories that trace back to personas and JTBDs and value prop."
7
+ inputs: [A feature scope plus personas ref]
8
+ outputs: [INVEST user stories per persona, Acceptance criteria per story]
9
+ user_invocable: true
10
+ disable_model_invocation: false
11
+ ---
12
+
13
+ # /user-stories — INVEST Backlog Intake
14
+
15
+ Produce backlog-ready user stories shaped per INVEST (Independent,
16
+ Negotiable, Valuable, Estimable, Small, Testable). Each story traces
17
+ to a persona, a JTBD, and (when present) a value-prop-canvas entry +
18
+ a use-case line. Backlog-intake artifact, not UX research, not
19
+ system spec.
20
+
21
+ ## When to invoke
22
+
23
+ - After `/personas` (and ideally `/jtbd-tasks` + `/value-prop-canvas`) have produced upstream artifacts
24
+ - When converting an iteration scope into a tracked backlog
25
+ - Before `/spec` and `/interaction-design` — stories scope what they cover
26
+
27
+ ## Distinction from adjacent artifacts
28
+
29
+ Per @luminary alistair-cockburn (2024) and NN/G: **user stories ≠ task scenarios ≠ use cases**. Each is a distinct artifact with a distinct purpose.
30
+
31
+ | Artifact | Purpose | Format | Primary consumer |
32
+ |----------|---------|--------|------------------|
33
+ | **JTBDs** | WHY (job the user is hiring the product for) | Outcome statement | PM, strategist (problem framing) |
34
+ | **Task scenarios** (NN/G) | CONTEXT (narrative day-in-the-life with mental state, obstacles, environment) | Story prose ("Sam is stuck in traffic…") | UX researcher, `/synthetic-user` tester, designer |
35
+ | **User stories** (this skill) | WHAT (feature/requirement for incremental delivery) | Formulaic As-a-I-want-So-that + INVEST + acceptance criteria | Developer, sprint planner |
36
+ | **Use cases** (Cockburn) | SPEC (system behavior for a complete user goal) | Structured (begin/middle/end + extensions + pre/post) | Architect, `/decompose`, `/verify` |
37
+
38
+ All four coexist. `/user-stories` does not replace any of them. It produces backlog tokens for incremental work — it intentionally splits a use-case (when one exists) into smaller, independently shippable units.
39
+
40
+ ## Sources read
41
+
42
+ - @luminary alistair-cockburn — *Unifying user stories, use cases, and story maps* (2024). Establishes the user-story↔use-case distinction this skill is built on: stories slice use-case lines into INVEST-shaped delivery tokens. The four-artifact non-overlap (JTBD / task scenario / user story / use case) comes directly from this work.
43
+ - Mike Cohn — *User Stories Applied* (2004). Origin of the bassclef As-a-I-want-So-that template + INVEST principles
44
+ - Jeff Patton — *User Story Mapping* (2014). Story-as-conversation-token framing; backlog ordering via story map
45
+ - Bill Wake — INVEST acronym (2003). Independent, Negotiable, Valuable, Estimable, Small, Testable
46
+ - Nielsen Norman Group — *Task Scenarios in Usability Testing* (cited for the user-stories vs task-scenarios distinction)
47
+ - Quorum #52 — original `/promote` ticket; bassclef #208 — companion
48
+ - `.claude/skills/personas/SKILL.md`, `.claude/skills/jtbd-tasks/SKILL.md`, `.claude/skills/value-prop-canvas/SKILL.md` — upstream artifacts this skill reads
49
+ - `standards/user-story-invest.md` — companion standard (this skill's standard; codifies INVEST validation)
50
+ - `templates/user-story-template.md` — bassclef template
51
+
52
+ ## What I'm NOT reading (with reason)
53
+
54
+ - `.claude/skills/task-scenarios/SKILL.md` — sibling skill in the chain. /task-scenarios is currently muddled (conflates NN/G scenarios + Agile stories + BDD). Cleanup is tracked as a separate bassclef-evolution ticket; this skill explicitly stays in its lane (backlog intake) so the boundary is clean even before /task-scenarios is refocused
55
+ - `/use-case` skill — not yet built (filed as separate bassclef-evolution ticket). When it lands, /user-stories will read use-case lines as input; until then, it reads /jtbd-tasks output directly + falls back to scope statement
56
+
57
+ ## Usage
58
+
59
+ ```
60
+ /user-stories → produce stories from current iteration goal scope
61
+ /user-stories [ticket-ref] → produce from a specific ticket / spec / canvas
62
+ /user-stories from-jtbd [JTBD slug] → derive stories for one JTBD
63
+ /user-stories from-use-case [UC slug] → split a use-case into stories (when /use-case exists)
64
+ /user-stories validate → audit existing stories at docs/user-stories/ against INVEST
65
+ ```
66
+
67
+ ## Procedure
68
+
69
+ ### Step 1: Resolve inputs
70
+
71
+ Read upstream artifacts in this order. Halt with a useful warning if a required input is missing:
72
+
73
+ 1. **Personas** — `docs/personas/*.md` (preferred) or `docs/design/personas/*.md` (legacy). If none exist, run `/personas default` and proceed with operator-default (warn that stories will have weak persona grounding).
74
+ 2. **JTBDs** — `docs/design/personas/[persona]/jtbds.md` or whatever path `/jtbd-tasks` writes to. If none exist, ask the operator which jobs are in scope OR fall back to inferring from the iteration goal scope statement (warn).
75
+ 3. **Value Prop Canvas** (optional but high-value) — `docs/value-prop-canvas/*.md`. When present, the canvas's Pain-Relievers + Gain-Creators ground the `<benefit>` clause of stories.
76
+ 4. **Use case** (when /use-case exists) — `docs/use-cases/*.md`. Each story slices a use-case line; carry the line reference in the traceability block.
77
+
78
+ ### Step 2: Map jobs/use-case-lines to candidate stories
79
+
80
+ For each JTBD (or use-case main-success line), draft candidate stories. Each story:
81
+
82
+ - Has ONE persona (no "as a user" — be specific)
83
+ - Has ONE outcome (not a list of features — split into multiple stories)
84
+ - Has a `<benefit>` clause that traces to a VPC Gain-Creator or Pain-Reliever (when VPC exists)
85
+
86
+ Format per the template (`templates/user-story-template.md`):
87
+
88
+ ```markdown
89
+ ### US-NNN — [imperative title]
90
+
91
+ **As a** [persona slug — couple-founders, not "user"]
92
+ **I want to** [observable, testable outcome — not internal mechanism]
93
+ **So that** [benefit grounded in VPC entry or JTBD]
94
+
95
+ **Traceability**:
96
+ - Persona: [slug] (docs/personas/[slug].md)
97
+ - JTBD: [job statement] (docs/design/personas/[persona]/jtbds.md#J-N)
98
+ - VPC: [PR-N or GC-N from value-prop canvas] (docs/value-prop-canvas/[persona].md)
99
+ - Use-case (when present): [UC-N step Xa] (docs/use-cases/[uc-slug].md)
100
+
101
+ **Acceptance criteria**:
102
+ - [ ] [observable behavior — written as a test assertion]
103
+ - [ ] [edge case from CTA decision points or use-case extension]
104
+ - [ ] [non-functional concern if applicable: performance threshold, accessibility, etc.]
105
+
106
+ **INVEST self-check**:
107
+ - I (Independent): [why this story can ship without others]
108
+ - N (Negotiable): [what's flexible vs. fixed]
109
+ - V (Valuable): [observable value to the persona]
110
+ - E (Estimable): [Small enough to estimate confidently]
111
+ - S (Small): [≤ N days of work]
112
+ - T (Testable): [acceptance criteria are concrete and observable]
113
+ ```
114
+
115
+ ### Step 3: INVEST validation
116
+
117
+ Walk every drafted story through INVEST per `standards/user-story-invest.md`:
118
+
119
+ | Letter | Test | Fail signal |
120
+ |--------|------|-------------|
121
+ | **I**ndependent | Can ship without other stories shipping first? | If "needs X first," either resequence or merge |
122
+ | **N**egotiable | Is this a conversation, not a contract? | If exact wording is mandatory, you wrote a use case |
123
+ | **V**aluable | Does the persona get observable value when this ships? | If only internal/refactor value, it's a tech-debt task — not a story |
124
+ | **E**stimable | Can the team estimate it within ~30 min? | If no, it's too vague — split or research |
125
+ | **S**mall | Fits in one iteration / sprint? | If multi-sprint, it's an epic — split |
126
+ | **T**estable | Acceptance criteria are concrete + observable? | If not, criteria need rewrite |
127
+
128
+ Stories that fail any INVEST letter get marked WARN; stories that fail multiple get FAIL and require rewrite before they're backlog-ready.
129
+
130
+ ### Step 4: Anti-pattern check
131
+
132
+ Reject (or rewrite) stories that exhibit any of:
133
+
134
+ - **Solution-as-story** — "Add a sidebar" is a solution; the story should be the user outcome that motivates the sidebar
135
+ - **Implementation leak** — "Use Redis to cache X" is implementation detail; story is about user-facing behavior, not how
136
+ - **Persona inflation** — "As a user" is too broad; reference a persona slug from `/personas`
137
+ - **Benefit absent** — "So that" clause empty or generic ("so that I can use the app"); ground in VPC entry or JTBD outcome
138
+ - **Acceptance criteria as pseudocode** — criteria should be observable behaviors, not function signatures
139
+
140
+ ### Step 5: Emit + traceability matrix
141
+
142
+ Write each story to `docs/user-stories/US-NNN-[slug].md` (one file per story for granular Git history) OR append to `docs/user-stories/[iteration-slug].md` for batch (operator preference).
143
+
144
+ Emit a traceability matrix at `docs/user-stories/_matrix.md`:
145
+
146
+ ```markdown
147
+ | Story | Persona | JTBD | VPC | Use-case | INVEST | Status |
148
+ |-------|---------|------|-----|----------|--------|--------|
149
+ | US-001 | couple-founders | J1 | GC2 | UC-3:4a | PASS | new |
150
+ | US-002 | cofounder-pair | J2 | PR1 | UC-3:4b | WARN-S | new |
151
+ | ... | ... | ... | ... | ... | ... | ... |
152
+ ```
153
+
154
+ The matrix surfaces:
155
+ - **Coverage gaps**: a JTBD with no stories = unserved user need
156
+ - **Orphan stories**: a story with no JTBD trace = solution looking for a problem (red flag)
157
+ - **INVEST health**: aggregate PASS/WARN/FAIL ratio for the iteration
158
+
159
+ ### Step 6: Output summary
160
+
161
+ Print a compact summary:
162
+
163
+ ```markdown
164
+ ## User stories produced
165
+
166
+ **Iteration**: [iteration goal slug]
167
+ **Personas covered**: N
168
+ **JTBDs covered**: N
169
+ **Use-cases sliced**: N (if applicable)
170
+ **Stories produced**: N
171
+ **INVEST**: N PASS / M WARN / K FAIL
172
+
173
+ **Coverage gaps**: [JTBDs with zero stories]
174
+ **Orphans**: [stories with no JTBD trace — should be 0]
175
+ ```
176
+
177
+ ## Worked example — INVEST validation in action
178
+
179
+ To make the INVEST rule concrete, here's a deliberate WARN catch:
180
+
181
+ **Persona**: cofounder-pair (two technical co-founders, ChatGPT Business friction)
182
+ **JTBD**: J1 — share AI-discovered context across the cofounder pair without re-explaining
183
+
184
+ **Story drafted** (US-001):
185
+
186
+ > **As a** cofounder-pair member
187
+ > **I want to** see what my partner asked the AI yesterday
188
+ > **So that** I can pick up the thread without making them re-explain
189
+ >
190
+ > **Acceptance**:
191
+ > - [ ] Yesterday's AI conversations from the partner appear in a "shared digest" pane
192
+ > - [ ] Each entry shows: timestamp, partner-name, conversation summary, link to full thread
193
+
194
+ **INVEST check**:
195
+ - I: ✅ Ships independently of any other story
196
+ - N: ✅ Wording is suggested, not mandatory
197
+ - V: ✅ Observable value — operator stops re-explaining
198
+ - E: ✅ Estimable (~2-3 days)
199
+ - **S**: ⚠️ WARN — "shared digest pane" implies UI surface + backend digest job + partner-account linkage. Three concerns; might be too big.
200
+ - T: ✅ Testable
201
+
202
+ **Resolution**: split into US-001a (backend digest job) + US-001b (UI pane) + US-001c (partner-account linkage). Each ships independently, each is small, each is testable.
203
+
204
+ Without the **S** check, US-001 ships as a 3-week mega-story and we lose all the INVEST benefits. The check forces the split before sprint planning, not after.
205
+
206
+ ## Common pitfalls
207
+
208
+ - **Treating /user-stories as a replacement for /task-scenarios** — they're different artifacts. Task scenarios provide narrative context for UX research + synthetic-user testing; user stories are backlog tokens. Keep both.
209
+ - **Skipping persona grounding** — "As a user" is a code smell. Always reference a persona slug.
210
+ - **Writing stories without a use-case when one would help** — for goal-level features (multi-step flows, complex behaviors), write the use-case first, then split into stories. The use-case gives you the spec; the stories slice it.
211
+ - **Padding INVEST** — every letter should be a real check, not a checkbox. If you can't articulate WHY a story is Independent, it probably isn't.
212
+ - **Acceptance criteria as wishes** — "Works well" is not a criterion. "Loads in <2s on 4G" is.
213
+
214
+ ## Relationship to other skills
215
+
216
+ | Skill | Relationship |
217
+ |-------|-------------|
218
+ | `/personas` | Upstream — provides the persona slug for the `<As a>` clause |
219
+ | `/jtbd-tasks` | Upstream — provides JTBD outcome statements that ground the `<so that>` clause |
220
+ | `/value-prop-canvas` | Upstream — Pain-Relievers + Gain-Creators inform the benefit phrasing |
221
+ | `/value-prop` | Sibling — value-prop is for positioning; user-stories are for backlog. Both consume personas + VPC. |
222
+ | `/use-case` (future) | Direct upstream when present — user-stories slice use-case lines with traceability back |
223
+ | `/interaction-design` | Downstream — diagrams render the story flows |
224
+ | `/decompose` | Downstream — responsibilities assigned per story (or per use-case if one exists) |
225
+ | `/spec` | Downstream — spec consumes stories + use-cases as input |
226
+ | `/task-scenarios` | Sibling, NOT replacement — task-scenarios are narrative day-in-the-life for UX research; user-stories are backlog tokens. Both coexist. |
227
+ | `/synthetic-user` | Indirect — synthetic-user reads /task-scenarios for journey context, NOT stories. Stories are not the right shape for testing journeys (too granular). |
228
+ | `/sprint` | Downstream — sprint reads the user-story matrix to surface candidate work |
229
+
230
+ ## Chain position
231
+
232
+ ```
233
+ /personas (WHO)
234
+
235
+ /jtbd-tasks (WHY) ─────────────┐
236
+ ↓ ├─→ /task-scenarios (CONTEXT for /synthetic-user)
237
+ /value-prop-canvas (FIT) │
238
+ ↓ │
239
+ /use-case (SPEC, future) │
240
+ ↓ │
241
+ /user-stories (BACKLOG) ←──────┘ ← THIS SKILL
242
+
243
+ /interaction-design (RENDERS) + /decompose (RESPONSIBILITIES)
244
+
245
+ /spec (BUILD)
246
+ ```
247
+
248
+ ## Provenance & evolution
249
+
250
+ - Drafted in an operator project during user-centric chain shaping
251
+ - Promoted to bassclef via issue #208
252
+ - Cockburn-aligned (user-stories ≠ use-cases) and NN/G-aligned (user-stories ≠ task-scenarios)
253
+
254
+ Future related promotions (separate bassclef-evolution tickets):
255
+ - `/use-case` — Cockburn-style behavior spec
256
+ - `/story-map` — Patton 2D backlog grid
257
+ - `/shape` — workflow for tiered shaping (quick-spike / light / medium / full-blown)
258
+ - Refocus `/task-scenarios` on NN/G narrative scenarios (strip stories + BDD overlap)
259
+ - Wire `/synthetic-user` to read `/task-scenarios` for journey context
260
+
261
+ ## Closes
262
+
263
+ - bassclef #208
264
+ - Part of follow-up to iteration `2026-04-19e-persona-vpc-promotions`
265
+
266
+ ## Output discipline
267
+
268
+ Dispatch `/kiss words --rewrite` on your skill output before you return it. See `standards/skill-output-discipline.md` for the contract.
@@ -0,0 +1,251 @@
1
+ ---
2
+ tier: lite
3
+ name: value-prop
4
+ description: "Draft a value prop for a ticket, goal, or feature. Three sizes: tweet (\u2264280 chars claim + sharpener), brief (claim + 3 reasons), verbose (full Dunford / Moore positioning). Pick the size that matches your audience attention."
5
+ problem: "PR bodies and ticket bodies open with solution-framing. The reader has no reason to care."
6
+ value: "One line that names claim plus sharpener. Three sizes \u2014 tweet and brief and verbose."
7
+ inputs: [A ticket ref or doc path or scope description, Optional size — tweet or brief or verbose]
8
+ outputs: [Claim plus sharpener at chosen size, Ready to paste as opener]
9
+ user_invocable: true
10
+ disable_model_invocation: false
11
+ sizes: [tweet, brief, verbose]
12
+ ---
13
+
14
+ # /value-prop
15
+
16
+ ## What you get
17
+
18
+ A value proposition for a ticket, iteration goal, feature, or product concept. Three sizes along a single axis — how much scaffolding around the claim? `tweet` gives you a claim plus one sharpener in ≤280 chars for status updates and Slack. `brief` (default) gives you a ≤180-char claim plus 3 evidence-backed Reasons to Believe plus sources — deck-ready. `verbose` gives you the full Dunford 5-part sales pitch plus Moore positioning — long-form material for landing pages and pitches.
19
+
20
+ ## When to use it
21
+
22
+ Any time you need to state the value of a ticket or feature at a specific size. Pick the size by audience attention:
23
+
24
+ | Context | Mode |
25
+ |---|---|
26
+ | Status update / Slack message / quick social share | `tweet` |
27
+ | Deck, landing page, internal framing doc, pitch prep | `brief` (default) |
28
+ | Technical ticket (internal audience) | `brief` — framed for engineering value (e.g., "reduces deploy time by 40%" is proof) |
29
+ | External launch / long-form pitch / website hero + supporting | `verbose` |
30
+
31
+ Skip for conversational asides or when the value is self-evident from context.
32
+
33
+ ## Grace window on flash mode
34
+
35
+ The `flash` mode (≤180 chars claim only) retired 2026-07-17 per ADR-040 Decision 3. Sessions from before the retirement still work — the compat layer through 2026-10-31 accepts `/value-prop flash` and returns a tweet-mode output with a note. New sessions use `tweet` for the compressed claim.
36
+
37
+ ## FAQ
38
+
39
+ ### Why did flash retire?
40
+
41
+ Per Toulmin, flash carried only the claim and failed the minimum argument shape (claim + evidence + warrant). Per Ousterhout, flash was a shallow interface with no hidden work. Per Beck, the minimum planning artifact is goal + steps + done-markers — not a fragment. The compression discipline (short opening line) folded into the tweet mode's sharpener clause.
42
+
43
+ ADR-040 Decision 3 pins the retirement. The `/state-a-problem brief` skill covers the Problem-side of what flash used to do at planning surfaces; `tweet` mode covers the Value-side.
44
+
45
+ ### What's the difference between tweet and brief?
46
+
47
+ `tweet` is one glance — a claim in ≤280 chars, optionally followed by one sharpening clause (who it's for, what it replaces, or one credibility signal). No Reasons to Believe.
48
+
49
+ `brief` is deck-ready — a ≤180-char claim plus 3 evidence-backed Reasons to Believe plus sources. Use tweet when the operator just needs orientation; use brief when someone will ask "why should I believe this?" and you want the answer on the same page.
50
+
51
+ ### What sources back the templates?
52
+
53
+ Two industry-standard B2B product marketing sources — Geoffrey Moore (positioning statement template from *Crossing the Chasm* 1991) and April Dunford (5-part sales pitch framework from *Sales Pitch* 2023 and *Obviously Awesome* 2019). All three modes use Moore positioning compressed differently. Brief adds 3 Dunford proofs. Verbose gives you the full 5-part Dunford + Moore positioning as one section.
54
+
55
+ ### What are Reasons to Believe?
56
+
57
+ Evidence-backed claims — not aspirational. "Faster than X" is assertion; "7x faster in benchmark Y" is proof. Each RTB is independent — you should be able to remove any one and still have a defensible pitch. Aim for exactly 3 (pattern recognition needs three points; deck space is expensive).
58
+
59
+ ### What if the artifact is thin?
60
+
61
+ Ask for the missing signals rather than inventing them. Fabricated value props fail silently — they look plausible but don't survive customer contact.
62
+
63
+ ## Details below the fold
64
+
65
+ ### Usage
66
+
67
+ ```
68
+ /value-prop → brief mode (default), use current iteration goal
69
+ /value-prop [ticket-ref] → brief, from specific ticket
70
+ /value-prop brief → same as default
71
+ /value-prop tweet → claim + sharpener, ≤280 chars
72
+ /value-prop tweet [ticket-ref] → tweet for a specific ticket
73
+ /value-prop verbose → verbose mode
74
+ /value-prop verbose [ticket-ref]
75
+ ```
76
+
77
+ Ticket references accepted:
78
+
79
+ - GitHub issue: `#NNN` or `owner/repo#NNN`
80
+ - File path: `docs/iteration-bets/YYYY-MM-DD-slug.md`
81
+ - Spec path: `docs/specs/NNN-feature.md`
82
+ - Canvas path: `docs/strategy/canvases/YYYY-MM-DD-slug.md`
83
+ - Freeform: `/value-prop for [description]`
84
+
85
+ ### Procedure
86
+
87
+ **Step 1 — Extract signals from the ticket.**
88
+
89
+ | Signal | Where to find |
90
+ |---|---|
91
+ | **Target user** | Canvas personas, spec actors, iteration goal user field |
92
+ | **Problem** | Ticket "What" section, canvas Thesis, iteration goal "risk being retired" |
93
+ | **Current alternatives** | Canvas "alternatives considered," spec "out of scope," or inferred |
94
+ | **Key benefit** | Iteration goal "business value being proven," spec "success criteria" |
95
+ | **Differentiator** | What makes THIS approach different (technical, UX, timing, cost) |
96
+ | **Evidence available** | Quantified outcomes, prior proof points, pilot results |
97
+
98
+ **Step 2 — Draft tweet mode.**
99
+
100
+ Structure — 1-2 sentences, ≤280 chars total. Claim plus optional sharpening clause (who it's for, what it replaces, or one credibility signal).
101
+
102
+ Rules:
103
+
104
+ - ≤280 chars total, no exceptions
105
+ - Sharpening clause is optional. If the claim already lands short, don't pad
106
+ - If you add a clause, pick exactly one — not a list
107
+ - No Reasons to Believe — this is a handoff, not a pitch
108
+ - Reads as one thought
109
+
110
+ Purpose — one-glance share-ready (Slack, quick social post, status update).
111
+
112
+ **Step 3 — Draft brief mode (default).**
113
+
114
+ Structure:
115
+
116
+ ```markdown
117
+ ## Value proposition
118
+ [≤180 characters. Moore-compressed — target + benefit + differentiator in one sentence. Scannable. Deck-ready.]
119
+
120
+ ## Reasons to Believe
121
+ 1. **[claim]** — [evidence: quantified outcome, proof point, prior result]
122
+ 2. **[claim]** — [evidence]
123
+ 3. **[claim]** — [evidence]
124
+
125
+ ## Sources
126
+ - Positioning: Geoffrey Moore, *Crossing the Chasm* (1991)
127
+ - Proof structure: April Dunford, *Sales Pitch* (2023)
128
+ ```
129
+
130
+ Rules:
131
+
132
+ - Value prop ≤180 chars. If it does not fit, the positioning is not tight enough. Iterate.
133
+ - RTBs are evidence-backed, not aspirational
134
+ - Each RTB is independent
135
+ - 3 RTBs — not 2 (pattern recognition needs three points), not 5 (cut to the three strongest)
136
+ - No jargon in value prop — user vocabulary, not internal domain terms
137
+
138
+ **Step 4 — Draft verbose mode.**
139
+
140
+ Structure (Dunford 5-part + Moore positioning):
141
+
142
+ ```markdown
143
+ ## Positioning statement (Moore)
144
+
145
+ For [target customer]
146
+ Who [statement of need or opportunity]
147
+ The [product name] is a [product category]
148
+ That [statement of key benefit].
149
+ Unlike [primary alternative], our product [differentiation].
150
+
151
+ ## Sales pitch (Dunford 5-part)
152
+
153
+ ### 1. Insight
154
+ [The market/customer shift everyone is wrestling with. The thing changing that makes current alternatives inadequate.]
155
+
156
+ ### 2. Alternatives + trade-offs
157
+ [What is on the table today. For each alternative, the inherent trade-off that creates the opening.]
158
+ - Alternative A — trade-off
159
+ - Alternative B — trade-off
160
+ - Status quo / DIY — trade-off
161
+
162
+ ### 3. Perfect world
163
+ [What an ideal solution would do. Do not pitch the product yet — articulate the goal the buyer would endorse.]
164
+
165
+ ### 4. Introduction
166
+ [Our product, cast as the perfect-world solution. Brief.]
167
+
168
+ ### 5. Proof (Reasons to Believe)
169
+ [Each claim evidence-backed. More than 3 acceptable in verbose mode. Target 5-7.]
170
+ 1. **[claim]** — [evidence]
171
+ 2. **[claim]** — [evidence]
172
+ ...
173
+
174
+ ## Sources
175
+ - Moore positioning: *Crossing the Chasm* (1991), *Inside the Tornado*
176
+ - Dunford framework: *Obviously Awesome* (2019), *Sales Pitch* (2023)
177
+ ```
178
+
179
+ **Step 5 — Output.**
180
+
181
+ If invoked within an iteration goal, consider appending to the goal doc under `## Value proposition` after Scope. If standalone, output to conversation only. Do not overwrite existing sections.
182
+
183
+ ### Common pitfalls
184
+
185
+ - **Aspirational RTBs** — "We'll be the best at X" is not a reason to believe. Past performance, benchmarks, or testimonial beats promise.
186
+ - **Feature-list masquerading as value** — "Has integration with X, Y, Z" is features, not value. Value is the outcome the integration enables.
187
+ - **Target too broad** — "Every team" is not a target. "PE operators managing 50+ active deals" is a target.
188
+ - **180 becomes 220** — if you are over, cut. Do not let scope creep the character limit.
189
+ - **Proof by asserting proof** — "Proven to work" is not evidence. Evidence names a number, a prior customer, or a controlled study.
190
+
191
+ ### Example — tweet mode
192
+
193
+ For `/personas` bassclef skill:
194
+
195
+ ```
196
+ One shared format for describing who your users are — so every tool that reasons about them speaks the same language. Replaces the ad-hoc per-project persona shapes most teams reinvent.
197
+ ```
198
+
199
+ (187 characters)
200
+
201
+ For `/value-prop-canvas` bassclef skill:
202
+
203
+ ```
204
+ A diagnostic for your value prop — checks that every benefit you promise actually addresses a pain your user has named. Catches "features looking for problems" before they hit your roadmap.
205
+ ```
206
+
207
+ (191 characters)
208
+
209
+ One sharpener added to the claim — for /personas it is what-it-replaces; for /value-prop-canvas it is the credibility signal. Not a list, just one sharpener.
210
+
211
+ ### Example — brief mode
212
+
213
+ For an iteration goal about `/decompose`:
214
+
215
+ ```markdown
216
+ ## Value proposition
217
+ For engineering leaders building with AI agents, /decompose prevents cross-cutting concerns being bolted into implementations instead of resolved as proper abstractions — unlike ad-hoc code review.
218
+
219
+ ## Reasons to Believe
220
+ 1. **Catches the class of error that cost 6 CI failures in one POA session** — Langfuse-inside-implementation pattern recurred until /decompose Phase 2 NFR check codified the decorator as the answer.
221
+ 2. **Produces concrete interfaces as output, not principle citations** — Responsibility matrix names the interface; Builder gets drop-in schema instead of GRASP theory.
222
+ 3. **Works regardless of starting artifact** — canvas, epic, defect, or bug all produce a decomposition (Entry Point states landed 2026-04-12b).
223
+
224
+ ## Sources
225
+ - Positioning: Moore, *Crossing the Chasm*
226
+ - Proof structure: Dunford, *Sales Pitch*
227
+ ```
228
+
229
+ ### Composes with
230
+
231
+ | Skill | Relationship |
232
+ |---|---|
233
+ | `/state-a-problem` | Problem-side pair; sits alongside `/value-prop` in the three-block opener discipline |
234
+ | `/canvas` | Canvas Thesis stage feeds value prop input |
235
+ | `/spec` | Spec success criteria maps to RTB evidence |
236
+ | `/journal` | Journal entries often open with value prop compression |
237
+ | `/feynman` | Value prop is adjacent to plain-English explanation but has specific structure |
238
+ | Amazon PR/FAQ | Long-form cousin; `/value-prop` is the compressed version |
239
+
240
+ ### Refs
241
+
242
+ - `.claude/rules/assert-only-after-verify.md` — a value prop is a claim that needs data + warrant per Toulmin's argument model. The brief and verbose modes ship Reasons to Believe cells that ARE Toulmin's data + warrant.
243
+ - `.claude/luminaries/stephen-toulmin.md` — anchor luminary for the argument shape
244
+ - `standards/opener-discipline.md` — the three-block opener that pairs `/value-prop tweet` with `/state-a-problem brief`
245
+ - ADR-040 Decision 3 — flash mode retirement rationale
246
+ - Bet 2026-07-18c — this rewrite (Step 5 flash retirement + template application)
247
+ - bassclef#204 — original flash + tweet mode addition (2026-04-19, retired 2026-07-17)
248
+
249
+ ## Output discipline
250
+
251
+ Dispatch `/kiss words --rewrite` on your skill output before you return it. See `standards/skill-output-discipline.md` for the contract.