@thebassclef/lite 0.0.1 → 0.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 (182) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +85 -4
  3. package/dist/cli.cjs +1610 -0
  4. package/dist/cli.js +1587 -0
  5. package/dist/index.cjs +4 -0
  6. package/dist/index.d.ts +2 -0
  7. package/dist/index.js +4 -0
  8. package/package.json +51 -3
  9. package/substrate/.bassclef/lite-manifest.json +1794 -0
  10. package/substrate/.claude/agents/architect.md +70 -0
  11. package/substrate/.claude/agents/builder.md +114 -0
  12. package/substrate/.claude/agents/designer.md +156 -0
  13. package/substrate/.claude/agents/reviewer.md +88 -0
  14. package/substrate/.claude/hooks/artifact-ingestion-gate.sh +357 -0
  15. package/substrate/.claude/hooks/assert-verify-steering.sh +77 -0
  16. package/substrate/.claude/hooks/bassclef-source-config-validate.sh +215 -0
  17. package/substrate/.claude/hooks/bassclef-sync.sh +634 -0
  18. package/substrate/.claude/hooks/compound-noun-scrub.sh +292 -0
  19. package/substrate/.claude/hooks/kiss-expansion-inject.sh +69 -0
  20. package/substrate/.claude/hooks/plain-english-steering.sh +156 -0
  21. package/substrate/.claude/hooks/post-skill-friction-check.sh +177 -0
  22. package/substrate/.claude/hooks/post-skill-telemetry.sh +62 -0
  23. package/substrate/.claude/hooks/pre-build-gate.sh +511 -0
  24. package/substrate/.claude/hooks/pre-commit-gate.sh +452 -0
  25. package/substrate/.claude/hooks/session-end.sh +433 -0
  26. package/substrate/.claude/hooks/session-reflection.sh +303 -0
  27. package/substrate/.claude/hooks/skill-body-grade-gate.sh +219 -0
  28. package/substrate/.claude/hooks/skill-body-intent-drift.sh +107 -0
  29. package/substrate/.claude/hooks/skill-step-list-check.sh +171 -0
  30. package/substrate/.claude/hooks/state-validate.sh +271 -0
  31. package/substrate/.claude/hooks/substrate-clarity-gate.sh +1110 -0
  32. package/substrate/.claude/hooks/temperance-gate.sh +147 -0
  33. package/substrate/.claude/hooks/testing-tier-enforce.sh +233 -0
  34. package/substrate/.claude/hooks/turn-prose-grade-measure.sh +219 -0
  35. package/substrate/.claude/hooks/turn-prose-kiss-check.sh +434 -0
  36. package/substrate/.claude/hooks/vocabulary-migration-check.sh +171 -0
  37. package/substrate/.claude/hooks/whereami-utc-gate.sh +142 -0
  38. package/substrate/.claude/luminaries/alan-cooper.md +170 -0
  39. package/substrate/.claude/luminaries/alistair-cockburn.md +140 -0
  40. package/substrate/.claude/luminaries/amazon-pr-faq.md +34 -0
  41. package/substrate/.claude/luminaries/ash-maurya.md +121 -0
  42. package/substrate/.claude/luminaries/bill-buxton.md +210 -0
  43. package/substrate/.claude/luminaries/charles-sanders-peirce.md +150 -0
  44. package/substrate/.claude/luminaries/david-ogilvy.md +192 -0
  45. package/substrate/.claude/luminaries/don-norman.md +173 -0
  46. package/substrate/.claude/luminaries/edward-tufte.md +179 -0
  47. package/substrate/.claude/luminaries/eric-evans.md +160 -0
  48. package/substrate/.claude/luminaries/frederick-brooks.md +50 -0
  49. package/substrate/.claude/luminaries/gang-of-four.md +157 -0
  50. package/substrate/.claude/luminaries/jason-fried-dhh.md +46 -0
  51. package/substrate/.claude/luminaries/jesse-james-garrett.md +154 -0
  52. package/substrate/.claude/luminaries/john-ousterhout.md +94 -0
  53. package/substrate/.claude/luminaries/karl-popper.md +132 -0
  54. package/substrate/.claude/luminaries/kent-beck.md +168 -0
  55. package/substrate/.claude/luminaries/linus-torvalds.md +218 -0
  56. package/substrate/.claude/luminaries/martin-fowler.md +164 -0
  57. package/substrate/.claude/luminaries/michael-feathers.md +125 -0
  58. package/substrate/.claude/luminaries/michael-nygard.md +118 -0
  59. package/substrate/.claude/luminaries/robert-c-martin.md +164 -0
  60. package/substrate/.claude/luminaries/saltzer-schroeder.md +194 -0
  61. package/substrate/.claude/luminaries/sophia-prater.md +193 -0
  62. package/substrate/.claude/luminaries/stephen-toulmin.md +131 -0
  63. package/substrate/.claude/rules/artifact-ingestion.md +179 -0
  64. package/substrate/.claude/rules/assert-only-after-verify.md +137 -0
  65. package/substrate/.claude/rules/blocked-items.md +146 -0
  66. package/substrate/.claude/rules/branching.md +28 -0
  67. package/substrate/.claude/rules/commit-conventions.md +22 -0
  68. package/substrate/.claude/rules/context-engineering.md +202 -0
  69. package/substrate/.claude/rules/context-management.md +85 -0
  70. package/substrate/.claude/rules/destructive-operations.md +69 -0
  71. package/substrate/.claude/rules/diagnosis.md +38 -0
  72. package/substrate/.claude/rules/guardrails.md +73 -0
  73. package/substrate/.claude/rules/identifier-leak-prevention.md +104 -0
  74. package/substrate/.claude/rules/lite-manifest-schema-change-discipline.md +98 -0
  75. package/substrate/.claude/rules/oo-ad-entry-point.md +117 -0
  76. package/substrate/.claude/rules/operator-facing-prose.md +196 -0
  77. package/substrate/.claude/rules/plain-english-discipline.md +154 -0
  78. package/substrate/.claude/rules/pr-body-shape.md +317 -0
  79. package/substrate/.claude/rules/pr-strategy.md +167 -0
  80. package/substrate/.claude/rules/sdlc-gates.md +149 -0
  81. package/substrate/.claude/rules/session-artifacts.md +236 -0
  82. package/substrate/.claude/rules/state-schema-validation.md +162 -0
  83. package/substrate/.claude/rules/whereami-load-bearing.md +202 -0
  84. package/substrate/.claude/rules/writing-craft-discipline.md +92 -0
  85. package/substrate/.claude/skills/build/SKILL.md +640 -0
  86. package/substrate/.claude/skills/decompose/SKILL.md +280 -0
  87. package/substrate/.claude/skills/diagnose/SKILL.md +297 -0
  88. package/substrate/.claude/skills/howdoi/SKILL.md +105 -0
  89. package/substrate/.claude/skills/ia-model/SKILL.md +108 -0
  90. package/substrate/.claude/skills/interaction-design/SKILL.md +112 -0
  91. package/substrate/.claude/skills/interpret-input/SKILL.md +180 -0
  92. package/substrate/.claude/skills/kiss/SKILL.md +449 -0
  93. package/substrate/.claude/skills/launch/SKILL.md +924 -0
  94. package/substrate/.claude/skills/lean-canvas/SKILL.md +332 -0
  95. package/substrate/.claude/skills/longrun/SKILL.md +426 -0
  96. package/substrate/.claude/skills/luminary/SKILL.md +481 -0
  97. package/substrate/.claude/skills/ogilvy-writing-audit/SKILL.md +177 -0
  98. package/substrate/.claude/skills/onboard-repo/SKILL.md +2190 -0
  99. package/substrate/.claude/skills/pattern-review/SKILL.md +99 -0
  100. package/substrate/.claude/skills/personas/SKILL.md +207 -0
  101. package/substrate/.claude/skills/promote/SKILL.md +283 -0
  102. package/substrate/.claude/skills/requirement/SKILL.md +98 -0
  103. package/substrate/.claude/skills/retro/SKILL.md +117 -0
  104. package/substrate/.claude/skills/riff/SKILL.md +114 -0
  105. package/substrate/.claude/skills/roadmap-reconcile/SKILL.md +163 -0
  106. package/substrate/.claude/skills/session-end/SKILL.md +309 -0
  107. package/substrate/.claude/skills/session-log/SKILL.md +299 -0
  108. package/substrate/.claude/skills/skills/SKILL.md +228 -0
  109. package/substrate/.claude/skills/spec/SKILL.md +105 -0
  110. package/substrate/.claude/skills/sprint/SKILL.md +392 -0
  111. package/substrate/.claude/skills/stage/SKILL.md +384 -0
  112. package/substrate/.claude/skills/state-a-problem/SKILL.md +185 -0
  113. package/substrate/.claude/skills/temperance/SKILL.md +108 -0
  114. package/substrate/.claude/skills/use-case/SKILL.md +417 -0
  115. package/substrate/.claude/skills/user-stories/SKILL.md +268 -0
  116. package/substrate/.claude/skills/value-prop/SKILL.md +251 -0
  117. package/substrate/.claude/skills/verify/SKILL.md +160 -0
  118. package/substrate/.claude/skills/whereami/SKILL.md +307 -0
  119. package/substrate/AGENTS.md +79 -0
  120. package/substrate/CLAUDE-lite.md +85 -0
  121. package/substrate/CODE_OF_CONDUCT.md +28 -0
  122. package/substrate/CONTRIBUTING.md +177 -0
  123. package/substrate/README.md +173 -0
  124. package/substrate/SECURITY.md +19 -0
  125. package/substrate/architecture/decisions/ADR-029-release-pipeline.md +79 -0
  126. package/substrate/architecture/decisions/ADR-031-non-breaking-changes-adopter-discipline.md +139 -0
  127. package/substrate/architecture/decisions/ADR-032-adopter-sync-dispatcher-architecture.md +192 -0
  128. package/substrate/architecture/decisions/ADR-039-release-tagging-scheme.md +145 -0
  129. package/substrate/architecture/decisions/ADR-040-planning-skill-vocabulary-and-lite-profile.md +155 -0
  130. package/substrate/architecture/decisions/ADR-044-unified-skill-body-template.md +162 -0
  131. package/substrate/lib/clean-artifacts-sweep.sh +112 -0
  132. package/substrate/lib/code-comment-discipline.sh +144 -0
  133. package/substrate/lib/composer-preflight.sh +459 -0
  134. package/substrate/lib/hook-inject.sh +255 -0
  135. package/substrate/lib/luminary-pick.sh +96 -0
  136. package/substrate/lib/output-discipline.sh +143 -0
  137. package/substrate/lib/rewrite-check.sh +214 -0
  138. package/substrate/lib/state.sh +1372 -0
  139. package/substrate/lib/telemetry.sh +205 -0
  140. package/substrate/lib/tier-check.sh +138 -0
  141. package/substrate/lib/tier-dependency-audit.sh +933 -0
  142. package/substrate/presence/install/bassclef-hook-connect.sh +178 -0
  143. package/substrate/presence/install/bassclef-sync.dispatcher.template.sh +841 -0
  144. package/substrate/presence/install/bassclef-sync.template.sh +2076 -0
  145. package/substrate/presence/install/schedule-auto-save.cron.sh +88 -0
  146. package/substrate/presence/install/schedule-auto-save.taskscheduler.md +122 -0
  147. package/substrate/scripts/aggregate-telemetry.sh +217 -0
  148. package/substrate/scripts/analyze-tier-dependencies.sh +239 -0
  149. package/substrate/scripts/generate-lite-manifest.sh +489 -0
  150. package/substrate/scripts/generate-tier-manifest.sh +28 -0
  151. package/substrate/scripts/intent-drift-check.sh +456 -0
  152. package/substrate/scripts/lite-manifest-drift-check.sh +146 -0
  153. package/substrate/scripts/render-lite-manifest-doc.sh +150 -0
  154. package/substrate/standards/bassclef-configs-schema.md +232 -0
  155. package/substrate/standards/bassclef-evolution.md +143 -0
  156. package/substrate/standards/bassclef-internal-jargon.md +244 -0
  157. package/substrate/standards/bassclef-managed-sentinel.md +96 -0
  158. package/substrate/standards/bassclef-source-config.md +228 -0
  159. package/substrate/standards/deferred-actions-schema.md +204 -0
  160. package/substrate/standards/docs-sync-allowlist.md +76 -0
  161. package/substrate/standards/graceful-exit.md +227 -0
  162. package/substrate/standards/hook-idempotency.md +102 -0
  163. package/substrate/standards/lite-manifest-schema-changes.md +75 -0
  164. package/substrate/standards/luminary-problem-patterns.md +481 -0
  165. package/substrate/standards/ogilvy-writing-rules.md +225 -0
  166. package/substrate/standards/opener-discipline.md +96 -0
  167. package/substrate/standards/operator-facing-prose-discipline.md +201 -0
  168. package/substrate/standards/project-directory-layout.md +276 -0
  169. package/substrate/standards/release-tagging.md +137 -0
  170. package/substrate/standards/sdlc-compliance.md +286 -0
  171. package/substrate/standards/secrets-lifecycle.md +210 -0
  172. package/substrate/standards/security-scanner-adapter.md +145 -0
  173. package/substrate/standards/skill-output-discipline.md +90 -0
  174. package/substrate/standards/state-spine.md +511 -0
  175. package/substrate/standards/tech-stack-config.md +109 -0
  176. package/substrate/standards/tier-dependency-analysis.md +167 -0
  177. package/substrate/standards/tier-runtime-deps/lite.md +57 -0
  178. package/substrate/standards/tier-tag-schema.md +155 -0
  179. package/substrate/standards/whereami-schema.md +301 -0
  180. package/substrate/standards/writing-guide.md +213 -0
  181. package/substrate/templates/deferred-action-template.md +45 -0
  182. package/substrate/templates/whereami-template.md +101 -0
@@ -0,0 +1,332 @@
1
+ ---
2
+ tier: lite
3
+ name: lean-canvas
4
+ description: Produce a Lean Canvas — Ash Maurya's 9-box business model template — filled through persona lenses. Two modes — commercial (revenue=dollars) and growth-loop (revenue=audience+credibility). Outputs a chain-of-beliefs file naming the riskiest assumption to validate next.
5
+ problem: "New products get built without naming the customer or the problem or the unfair advantage."
6
+ value: "Ash Maurya's 9-box canvas filled through persona work. One page names the business."
7
+ inputs: [Personas file, Value proposition data, A rough product idea]
8
+ outputs: [Lean Canvas 9-box filled, Problem and solution named per persona]
9
+ user_invocable: true
10
+ disable_model_invocation: false
11
+ modes: [commercial, growth-loop]
12
+ ---
13
+
14
+ # /lean-canvas — Ash Maurya's 9-box business model template
15
+
16
+ Use this skill when an idea is early enough that the business model isn't proven yet. Lean Canvas asks "does this hold together at all" before product work asks "what should we build."
17
+
18
+ Distinct from `/canvas` (Roman Pichler — product vision and feature shape) and `/value-prop` (April Dunford — message positioning). All three compose. Lean Canvas comes first when business model fit is uncertain.
19
+
20
+ ## When to use
21
+
22
+ - A new initiative or product where revenue + customer + channel assumptions aren't yet validated
23
+ - A strategic move (open-source launch, audience play, growth loop) where "does this hold together" is the load-bearing question
24
+ - Pre-Phase-XI scope work where Solution-first thinking risks Innovator's Bias
25
+ - An existing goal that needs the riskiest assumption named explicitly before more building
26
+
27
+ ## When NOT to use
28
+
29
+ - Product-detail work where business model is already validated → use `/canvas` (Pichler)
30
+ - Sharpening the message for a validated value prop → use `/value-prop` (Dunford)
31
+ - Customer-discovery research at the task-level → use `/jtbd-tasks` or `/task-scenarios`
32
+ - An incremental feature inside an existing product line → too small for Lean Canvas; `/spec` is enough
33
+
34
+ ## Usage
35
+
36
+ ```
37
+ /lean-canvas <slug> [--start-with <box>] [--personas <list>] [--commercial | --growth-loop]
38
+ ```
39
+
40
+ | Arg | Required | Default |
41
+ |---|---|---|
42
+ | `<slug>` | yes | — |
43
+ | `--start-with` | no | prompts operator |
44
+ | `--personas` | no | sam, jamie, morgan |
45
+ | `--commercial` or `--growth-loop` | no | prompts operator |
46
+
47
+ Examples:
48
+
49
+ ```
50
+ /lean-canvas bassclef-public-launch --start-with problem --personas sam,jamie,morgan --growth-loop
51
+ /lean-canvas openclaw-titans-memory --start-with solution --personas sam,morgan
52
+ /lean-canvas your-product --start-with customer-segments --personas operator,boss --commercial
53
+ ```
54
+
55
+ ## The 9 boxes
56
+
57
+ Ash Maurya's adaptation of Osterwalder's Business Model Canvas.
58
+
59
+ | # | Box | Question it answers |
60
+ |---|---|---|
61
+ | 1 | Problem | Top 1-3 problems the customer segment faces |
62
+ | 2 | Customer Segments | Who has the problem; early adopters specifically |
63
+ | 3 | Unique Value Proposition | Single clear message — why this is different and worth attention |
64
+ | 4 | Solution | Top 3 features that address the top 3 problems |
65
+ | 5 | Channels | Path to customer segment |
66
+ | 6 | Revenue Streams | How value gets captured (extended in growth-loop mode) |
67
+ | 7 | Cost Structure | What it costs to maintain and grow |
68
+ | 8 | Key Metrics | Measurable signals the business is working |
69
+ | 9 | Unfair Advantage | What cannot be easily copied or bought |
70
+
71
+ ## Procedure
72
+
73
+ ### Step 1 — Confirm scope
74
+
75
+ Ask: what are we canvasing? A new product? A strategic move? A pivot? Capture the operator's one-sentence framing.
76
+
77
+ ### Step 2 — Confirm personas
78
+
79
+ Default: Sam (mid-engineer), Jamie (tech PM), Morgan (senior staff engineer) from `strategy/personas/`. Operator can override with their own personas. The discipline (multi-persona reads on key boxes) stays.
80
+
81
+ ### Step 3 — Confirm framing: commercial or growth-loop
82
+
83
+ Ask: "Is this a commercial product (revenue = dollars) or a growth-loop / credibility / community venture (revenue = audience + credibility + optionality)?"
84
+
85
+ In growth-loop mode, Revenue Streams accepts:
86
+
87
+ - Audience accumulated
88
+ - Credibility surfaces created
89
+ - Optionality unlocked (PE, executive role, board seat, advisory)
90
+ - Citations, conference invites, inbound DMs from target audience
91
+
92
+ Key Metrics in growth-loop mode accepts:
93
+
94
+ - Subscriber growth
95
+ - GitHub stars / PR-author diversity
96
+ - Citation counts
97
+ - Inbound DMs from target audience
98
+
99
+ ### Step 4 — Idea backstory
100
+
101
+ Operator describes the idea's origin in 2-3 sentences. Capture verbatim in the chain-of-beliefs file (this becomes the historical anchor when the canvas evolves).
102
+
103
+ ### Step 5 — Starting box
104
+
105
+ Operator picks. Skill notes the implicit risk priority:
106
+
107
+ - **Start with Problem** → testing desirability first. Maurya's recommended fill order for validating an idea.
108
+ - **Start with Customer Segments** → testing audience fit first. Common for growth-loop bets.
109
+ - **Start with Solution** → **flag Innovator's Bias risk.** Tell the operator: "You're starting with Solution. This is common but creates a real risk — you may write Problem statements that justify the Solution you already want. Continue, but revisit Problem and Customer Segments critically after the first pass."
110
+ - **Other boxes** → operator's call; skill notes the assumption being tested first.
111
+
112
+ ### Step 6 — 20-minute fill
113
+
114
+ Walk box-by-box in operator's chosen order. For each box where multi-persona reads matter (Problem, UVP, Channels, Unfair Advantage — see PERSONA-REQUIRED below), ask each persona's read separately. Don't synthesize a single answer; surface where personas converge and where they diverge.
115
+
116
+ 20-minute target for first pass. Boxes can be blank. Iterate after operator reflection.
117
+
118
+ ### Step 7 — Persona-convergence check
119
+
120
+ Highlight boxes where personas diverged. Ask the operator: is the divergence reflecting a real customer segment split, or is the box's framing unclear?
121
+
122
+ Convergence is a strong signal. Divergence is a finding to capture, not a flaw to smooth over.
123
+
124
+ ### Step 8 — Chain-of-beliefs classification
125
+
126
+ Walk each belief in the canvas. Ask operator to classify:
127
+
128
+ - **Leap-of-faith** — a strong assumption with no evidence yet
129
+ - **Anecdotal observation** — based on one or two real customer signals, not yet systematic
130
+ - **Fact-with-evidence** — measured, repeatable, defensible
131
+
132
+ ### Step 9 — Riskiest assumption
133
+
134
+ Skill proposes the riskiest leap-of-faith. Operator confirms or overrides. The riskiest assumption is the next thing to validate — not the next thing to build.
135
+
136
+ ### Step 10 — Next validation move
137
+
138
+ Skill suggests an experiment shape matched to the riskiest-assumption type:
139
+
140
+ - Problem belief → customer interviews (5-10, scripted)
141
+ - Customer segment belief → audience-targeting test (ad spend, channel pilot)
142
+ - UVP belief → smoke test landing page + signup conversion
143
+ - Solution belief → smallest functional prototype + observe use
144
+ - Channel belief → single-channel pilot before scaling
145
+ - Revenue belief → pricing-page test or pre-order page
146
+ - Cost belief → bottoms-up estimate vs spike-test build
147
+ - Metric belief → instrument and observe baseline before optimizing
148
+ - Unfair advantage belief → competitive teardown or "how hard would it be to copy" red-team
149
+
150
+ ### Step 11 — Write outputs
151
+
152
+ Two files:
153
+
154
+ 1. `docs/operator-private/canvases/<slug>-lean-canvas.md` — the canvas itself
155
+ 2. `docs/operator-private/canvases/<slug>-chain-of-beliefs.md` — fill order + classification + riskiest assumption + next move
156
+
157
+ If the operator requests a non-default path, honor it. Apply /kiss discipline throughout — grade-10 English, plain words, reserved concept names from the four-name system (substrate, bassclef, cameo, Studio, Band, bandleader) excepted per bassclef#763.
158
+
159
+ ## PERSONA-REQUIRED boxes
160
+
161
+ These four boxes get multi-persona reads (not a single synthesized answer):
162
+
163
+ - **Problem** — what does each persona see as the problem?
164
+ - **Unique Value Proposition** — what message lands for each persona?
165
+ - **Channels** — how does each persona find products like this?
166
+ - **Unfair Advantage** — what does each persona think can't easily be copied?
167
+
168
+ Other boxes can use single-perspective reads unless operator opts in to multi-persona.
169
+
170
+ ## Output shape
171
+
172
+ ### File 1: `docs/operator-private/canvases/<slug>-lean-canvas.md`
173
+
174
+ ```markdown
175
+ ---
176
+ title: <human-readable title>
177
+ slug: <slug>
178
+ date: 2026-MM-DD
179
+ framing: commercial | growth-loop
180
+ personas: [list]
181
+ starting_box: <box name>
182
+ status: draft | refined | validated
183
+ references:
184
+ - {type: file, id: docs/operator-private/canvases/<slug>-chain-of-beliefs.md, anchor: belief classification + next validation}
185
+ ---
186
+
187
+ # <Title> — Lean Canvas
188
+
189
+ ## 1. Problem
190
+
191
+ (persona reads if PERSONA-REQUIRED)
192
+
193
+ ## 2. Customer Segments
194
+
195
+ ## 3. Unique Value Proposition
196
+
197
+ (persona reads if PERSONA-REQUIRED)
198
+
199
+ ...
200
+
201
+ ## Convergence and divergence
202
+
203
+ Where personas agreed:
204
+
205
+ Where personas diverged:
206
+ ```
207
+
208
+ ### File 2: `docs/operator-private/canvases/<slug>-chain-of-beliefs.md`
209
+
210
+ ```markdown
211
+ ---
212
+ title: <Title> — chain of beliefs
213
+ slug: <slug>-chain-of-beliefs
214
+ date: 2026-MM-DD
215
+ canvas: docs/operator-private/canvases/<slug>-lean-canvas.md
216
+ status: draft | refined | validated
217
+ ---
218
+
219
+ # <Title> — chain of beliefs
220
+
221
+ ## Idea backstory
222
+
223
+ (operator's 2-3 sentence origin verbatim)
224
+
225
+ ## Fill order
226
+
227
+ 1. <box>
228
+ 2. <box>
229
+ 3. ...
230
+
231
+ ## Beliefs classified
232
+
233
+ | Box | Belief | Classification |
234
+ |---|---|---|
235
+ | Problem | ... | leap-of-faith / anecdotal / fact-with-evidence |
236
+ | ... |
237
+
238
+ ## Riskiest assumption
239
+
240
+ <one paragraph>
241
+
242
+ ## Suggested next validation move
243
+
244
+ <one paragraph naming the experiment shape>
245
+ ```
246
+
247
+ ## Composes with
248
+
249
+ - `/personas` — pulls persona files from `strategy/personas/` as default customer-segment lenses
250
+ - `/value-prop` — UVP box ingests `/value-prop` output. When `/value-prop` has not yet run for this canvas, UVP box stays empty and the canvas closeout step BLOCKs until UVP is set; the skill points at `/value-prop` for deeper UVP development.
251
+ - `/canvas` — Pichler's product canvas; `/lean-canvas` output feeds product-detail work downstream once business model is validated
252
+ - `/kiss` — applied throughout for plain-language discipline on canvas outputs
253
+ - `/value-prop-canvas` — Strategyzer's Value Proposition Canvas is the Problem + UVP + Customer Segments boxes expanded; compose `/lean-canvas` first for business model fit, VPC second for product-market fit
254
+
255
+ ## Distinct from
256
+
257
+ - `/canvas` — Pichler's product canvas (Vision → Target → Stand-Out → Big Picture → Critical Questions). Product-detail level; assumes the business model holds. `/lean-canvas` is upstream.
258
+ - `/value-prop` — Dunford's positioning framework. Sharpens the UVP into a market-ready message. `/lean-canvas` produces the UVP raw; `/value-prop` polishes it.
259
+ - `/value-prop-canvas` — Strategyzer's VPC. Zooms into Problem + UVP + Customer Segments with Jobs/Pains/Gains and Products/Pain-relievers/Gain-creators. Use after `/lean-canvas` when product-market fit is the question.
260
+ - `/personas` — produces persona files. `/lean-canvas` consumes them as customer-segment lenses; doesn't create personas.
261
+
262
+ ## Rules
263
+
264
+ - Skill ALWAYS produces two files (canvas + chain-of-beliefs); never just one.
265
+ - Skill ALWAYS surfaces the operator's idea backstory verbatim in the chain-of-beliefs file.
266
+ - Skill ALWAYS flags Innovator's Bias risk when operator starts with Solution.
267
+ - Skill ALWAYS asks for each persona's read on PERSONA-REQUIRED boxes; never synthesizes a single answer.
268
+ - Skill ALWAYS proposes the riskiest assumption; operator confirms or overrides — silence is not confirmation.
269
+ - Skill ALWAYS suggests a validation experiment matched to the riskiest-assumption type.
270
+ - Skill NEVER auto-commits the output files. Operator reviews and commits.
271
+ - Skill NEVER fills boxes from training priors. If the operator's input is thin for a box, ask; don't infer.
272
+ - Skill RESPECTS operator-private content. Default output path `docs/operator-private/canvases/` is gitignored — content stays local. If the operator wants a canvas in the public tree, they request `strategy/canvases/` explicitly. The skill surfaces this choice when content looks operator-private (Fortune 50 employer references, specific personal optionality moves, day-job-adjacent context).
273
+ - Skill APPLIES /kiss discipline throughout — grade-10 English, plain words, reserved concept names from the four-name system excepted per bassclef#763.
274
+
275
+ ## Examples
276
+
277
+ ### Example 1 — Commercial product, Problem-first
278
+
279
+ ```
280
+ /lean-canvas your-product --start-with problem --personas operator,boss --commercial
281
+ ```
282
+
283
+ Walks the 9 boxes starting with Problem. Personas: operator + boss (custom for a two-sided market). Revenue Streams in dollars. Output: `docs/operator-private/canvases/your-product-lean-canvas.md` + `your-product-chain-of-beliefs.md`. Likely riskiest assumption: whether bosses will pay for what operators want.
284
+
285
+ ### Example 2 — Growth-loop venture, Problem-first
286
+
287
+ ```
288
+ /lean-canvas bassclef-public-launch --start-with problem --personas sam,jamie,morgan --growth-loop
289
+ ```
290
+
291
+ Walks the 9 boxes starting with Problem. Personas: the three default bassclef personas. Revenue Streams in audience + credibility + optionality. Key Metrics in subscriber growth + GitHub stars + citations. Output: the strategy doc that informs Phase XVI Tier 0 pitch text + README rewrite + methodology paper shape.
292
+
293
+ ### Example 3 — Solution-first with Innovator's Bias flag
294
+
295
+ ```
296
+ /lean-canvas openclaw-titans-memory --start-with solution --personas sam,morgan
297
+ ```
298
+
299
+ Operator starts with Solution (the most common starting point per Maurya). Skill flags: "Starting with Solution creates Innovator's Bias risk. After first-pass fill, revisit Problem and Customer Segments critically — you may have written Problem statements that justify the Solution you already wanted." Operator continues; second pass refines.
300
+
301
+ ## Sources read
302
+
303
+ - `.claude/luminaries/ash-maurya.md` — the backing luminary; Running Lean methodology + Lean Canvas 9-box structure
304
+ - Ash Maurya, "What is the Right Fill Order for the Lean Canvas?" — desirability → viability → feasibility for validation; "no right fill order" for ideation
305
+ - Ash Maurya, *Running Lean* (2010, 2nd ed 2012, 3rd ed 2022) — SENTINEL_the_bassclef_reference
306
+ - Ash Maurya, *Scaling Lean* (2016) — Customer Factory model + AARRR Key Metrics
307
+ - `strategy/personas/sam-mid-engineer.md`, `jamie-tech-pm.md`, `morgan-senior-staff-engineer.md` — default persona lenses
308
+ - `strategy/audience-commitment.md` — portfolio-operator audience commitment (informs growth-loop framing)
309
+ - `.claude/skills/canvas/SKILL.md` — Pichler's product canvas (downstream composition target)
310
+ - `.claude/skills/value-prop/SKILL.md` — Dunford's positioning (UVP polish target)
311
+ - `.claude/skills/value-prop-canvas/SKILL.md` — Strategyzer VPC (product-market-fit composition target)
312
+ - bassclef#763 — /kiss hook allowlist for reserved concept names
313
+
314
+ ## Why this skill exists
315
+
316
+ Bassclef's substrate had three product-strategy skills before this one:
317
+
318
+ - `/canvas` — Pichler's product canvas (product vision and shape)
319
+ - `/value-prop` — Dunford's positioning (the message)
320
+ - `/value-prop-canvas` — Strategyzer's VPC (product-market fit detail)
321
+
322
+ None of them asks the upstream question: **does the business model hold together at all?** Without that question answered, product work proceeds on unvalidated assumptions — Solution before Problem, features before customer segments, channels before audience fit.
323
+
324
+ Maurya's Lean Canvas closes the gap. The 9-box template forces explicit business-model articulation in 20 minutes; the chain-of-beliefs classification names the riskiest assumption that needs testing before more building.
325
+
326
+ For bassclef's growth-loop strategy specifically (per locked-decisions.md and the 2026-05-25 operator pivot), the Lean Canvas's Revenue Streams + Key Metrics boxes need reframing — audience accumulated, credibility surfaces created, optionality unlocked instead of dollar revenue. Maurya's framework accepts this reframing because the underlying question (which assumptions are riskiest) is general.
327
+
328
+ INSTEAD of "build the product, hope the business model emerges," dispatch `/lean-canvas` first. Validate the model holds together. Identify the riskiest assumption. Validate it before building.
329
+
330
+ ## Output discipline
331
+
332
+ Dispatch `/kiss words --rewrite` on your skill output before you return it. See `standards/skill-output-discipline.md` for the contract.