@thebassclef/lite 1.0.4 → 1.1.1
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.
- package/dist/cli.cjs +298 -55
- package/dist/cli.js +298 -55
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/lite/.claude/agents/architect.md +70 -0
- package/dist/lite/.claude/agents/builder.md +114 -0
- package/dist/lite/.claude/agents/designer.md +156 -0
- package/dist/lite/.claude/agents/reviewer.md +88 -0
- package/dist/lite/.claude/hooks/bassclef-sync.sh +85 -27
- package/dist/lite/.claude/hooks/longrun-prep-compounding-axis-check.sh +492 -0
- package/dist/lite/.claude/hooks/longrun-prep-render-check.sh +236 -0
- package/dist/lite/.claude/hooks/persona-name-scrub-check.sh +105 -0
- package/dist/lite/.claude/hooks/skill-step-list-check.sh +171 -0
- package/dist/lite/.claude/luminaries/alan-cooper.md +170 -0
- package/dist/lite/.claude/luminaries/alistair-cockburn.md +140 -0
- package/dist/lite/.claude/luminaries/amazon-pr-faq.md +34 -0
- package/dist/lite/.claude/luminaries/andreas-zeller.md +74 -0
- package/dist/lite/.claude/luminaries/ash-maurya.md +121 -0
- package/dist/lite/.claude/luminaries/bill-buxton.md +210 -0
- package/dist/lite/.claude/luminaries/charles-sanders-peirce.md +150 -0
- package/dist/lite/.claude/luminaries/david-ogilvy.md +192 -0
- package/dist/lite/.claude/luminaries/don-norman.md +173 -0
- package/dist/lite/.claude/luminaries/edward-tufte.md +179 -0
- package/dist/lite/.claude/luminaries/eric-evans.md +160 -0
- package/dist/lite/.claude/luminaries/frederick-brooks.md +50 -0
- package/dist/lite/.claude/luminaries/gang-of-four.md +157 -0
- package/dist/lite/.claude/luminaries/glenford-myers.md +230 -0
- package/dist/lite/.claude/luminaries/hunt-thomas.md +115 -0
- package/dist/lite/.claude/luminaries/hyrum-wright.md +94 -0
- package/dist/lite/.claude/luminaries/jason-fried-dhh.md +46 -0
- package/dist/lite/.claude/luminaries/jesse-james-garrett.md +154 -0
- package/dist/lite/.claude/luminaries/john-ousterhout.md +94 -0
- package/dist/lite/.claude/luminaries/karl-popper.md +132 -0
- package/dist/lite/.claude/luminaries/kent-beck.md +168 -0
- package/dist/lite/.claude/luminaries/linus-torvalds.md +218 -0
- package/dist/lite/.claude/luminaries/martin-fowler.md +164 -0
- package/dist/lite/.claude/luminaries/michael-feathers.md +125 -0
- package/dist/lite/.claude/luminaries/michael-nygard.md +118 -0
- package/dist/lite/.claude/luminaries/robert-c-martin.md +164 -0
- package/dist/lite/.claude/luminaries/saltzer-schroeder.md +194 -0
- package/dist/lite/.claude/luminaries/sophia-prater.md +193 -0
- package/dist/lite/.claude/luminaries/stephen-toulmin.md +131 -0
- package/dist/lite/.claude/luminaries/tony-hoare.md +170 -0
- package/dist/lite/.claude/luminaries/vaughn-vernon.md +50 -0
- package/dist/lite/.claude/luminaries/w-edwards-deming.md +158 -0
- package/dist/lite/.claude/rules/accessor-library-discipline.md +110 -0
- package/dist/lite/.claude/rules/adr-discipline.md +96 -0
- package/dist/lite/.claude/rules/api-conventions.md +115 -0
- package/dist/lite/.claude/rules/artifact-ingestion.md +137 -0
- package/dist/lite/.claude/rules/assert-only-after-verify.md +111 -0
- package/dist/lite/.claude/rules/blocked-items.md +139 -0
- package/dist/lite/.claude/rules/bootstrap-pair-discipline.md +106 -0
- package/dist/lite/.claude/rules/branching.md +28 -0
- package/dist/lite/.claude/rules/cold-adopter-harness-discipline.md +93 -0
- package/dist/lite/.claude/rules/commit-conventions.md +22 -0
- package/dist/lite/.claude/rules/compounding-axis-fresh-analysis.md +173 -0
- package/dist/lite/.claude/rules/compounding-sequence-fresh-analysis.md +173 -0
- package/dist/lite/.claude/rules/context-engineering.md +155 -0
- package/dist/lite/.claude/rules/context-management.md +85 -0
- package/dist/lite/.claude/rules/defensive-bash.md +52 -0
- package/dist/lite/.claude/rules/deferred-actions.md +233 -0
- package/dist/lite/.claude/rules/destructive-operations.md +69 -0
- package/dist/lite/.claude/rules/diagnosis.md +38 -0
- package/dist/lite/.claude/rules/github-issue-flash-tweet.md +114 -0
- package/dist/lite/.claude/rules/guardrails.md +73 -0
- package/dist/lite/.claude/rules/hook-wire-on-author.md +77 -0
- package/dist/lite/.claude/rules/identifier-leak-prevention.md +73 -0
- package/dist/lite/.claude/rules/iteration-bet-brief-completeness.md +43 -0
- package/dist/lite/.claude/rules/lite-manifest-schema-change-discipline.md +79 -0
- package/dist/lite/.claude/rules/longrun-prep-plan-doc-compression.md +77 -0
- package/dist/lite/.claude/rules/loop-discipline.md +71 -0
- package/dist/lite/.claude/rules/manual-prod-approval.md +100 -0
- package/dist/lite/.claude/rules/marker-enrichment-discipline.md +72 -0
- package/dist/lite/.claude/rules/mobile-ephemeral-session.md +109 -0
- package/dist/lite/.claude/rules/new-dependency-check.md +44 -0
- package/dist/lite/.claude/rules/oo-ad-entry-point.md +95 -0
- package/dist/lite/.claude/rules/operator-facing-prose.md +177 -0
- package/dist/lite/.claude/rules/option-label-discipline.md +82 -0
- package/dist/lite/.claude/rules/pattern-annotation.md +83 -0
- package/dist/lite/.claude/rules/persona-name-leak-scrub.md +90 -0
- package/dist/lite/.claude/rules/plain-english-discipline.md +132 -0
- package/dist/lite/.claude/rules/plan-enumeration-needs-value-props.md +177 -0
- package/dist/lite/.claude/rules/pr-body-shape.md +195 -0
- package/dist/lite/.claude/rules/pr-strategy.md +142 -0
- package/dist/lite/.claude/rules/pr-title-shape.md +90 -0
- package/dist/lite/.claude/rules/prototype-workflow.md +53 -0
- package/dist/lite/.claude/rules/reserved-skill-names.md +103 -0
- package/dist/lite/.claude/rules/schema-management.md +42 -0
- package/dist/lite/.claude/rules/sdlc-gates.md +149 -0
- package/dist/lite/.claude/rules/security.md +37 -0
- package/dist/lite/.claude/rules/session-artifacts.md +236 -0
- package/dist/lite/.claude/rules/skill-composition-declarations.md +105 -0
- package/dist/lite/.claude/rules/skill-description-clarity.md +196 -0
- package/dist/lite/.claude/rules/skill-procedure-step-list.md +119 -0
- package/dist/lite/.claude/rules/sprint-prep-preset-picker.md +76 -0
- package/dist/lite/.claude/rules/state-schema-validation.md +156 -0
- package/dist/lite/.claude/rules/stuck-signal-diagnostic.md +111 -0
- package/dist/lite/.claude/rules/substrate-config-schema.md +85 -0
- package/dist/lite/.claude/rules/test-list-discipline.md +129 -0
- package/dist/lite/.claude/rules/test-sufficiency.md +186 -0
- package/dist/lite/.claude/rules/testing-tier-config.md +125 -0
- package/dist/lite/.claude/rules/testing.md +38 -0
- package/dist/lite/.claude/rules/turn-estimate-grounding.md +82 -0
- package/dist/lite/.claude/rules/visual-hierarchy.md +427 -0
- package/dist/lite/.claude/rules/we-dont-break-adopters.md +103 -0
- package/dist/lite/.claude/rules/whereami-load-bearing.md +184 -0
- package/dist/lite/.claude/rules/writing-craft-discipline.md +72 -0
- package/dist/lite/.claude/rules/wu-sequencing-compounds.md +119 -0
- package/dist/lite/.claude/skills/build/SKILL.md +640 -0
- package/dist/lite/.claude/skills/chronicle/SKILL.md +55 -0
- package/dist/lite/.claude/skills/clean-artifacts/SKILL.md +249 -0
- package/dist/lite/.claude/skills/decompose/SKILL.md +280 -0
- package/dist/lite/.claude/skills/diagnose/SKILL.md +297 -0
- package/dist/lite/.claude/skills/feynman/SKILL.md +90 -0
- package/dist/lite/.claude/skills/howdoi/SKILL.md +105 -0
- package/dist/lite/.claude/skills/ia-model/SKILL.md +108 -0
- package/dist/lite/.claude/skills/interaction-design/SKILL.md +112 -0
- package/dist/lite/.claude/skills/interpret-input/SKILL.md +180 -0
- package/dist/lite/.claude/skills/journal/SKILL.md +209 -0
- package/dist/lite/.claude/skills/kiss/SKILL.md +449 -0
- package/dist/lite/.claude/skills/launch/SKILL.md +915 -0
- package/dist/lite/.claude/skills/lean-canvas/SKILL.md +332 -0
- package/dist/lite/.claude/skills/longrun/SKILL.md +512 -0
- package/dist/lite/.claude/skills/luminary/SKILL.md +481 -0
- package/dist/lite/.claude/skills/ogilvy-writing-audit/SKILL.md +177 -0
- package/dist/lite/.claude/skills/onboard-repo/SKILL.md +1640 -0
- package/dist/lite/.claude/skills/pattern-review/SKILL.md +99 -0
- package/dist/lite/.claude/skills/personas/SKILL.md +207 -0
- package/dist/lite/.claude/skills/promote/SKILL.md +283 -0
- package/dist/lite/.claude/skills/requirement/SKILL.md +98 -0
- package/dist/lite/.claude/skills/retro/SKILL.md +117 -0
- package/dist/lite/.claude/skills/riff/SKILL.md +114 -0
- package/dist/lite/.claude/skills/roadmap-reconcile/SKILL.md +163 -0
- package/dist/lite/.claude/skills/session-end/SKILL.md +309 -0
- package/dist/lite/.claude/skills/session-log/SKILL.md +299 -0
- package/dist/lite/.claude/skills/skills/SKILL.md +228 -0
- package/dist/lite/.claude/skills/spec/SKILL.md +105 -0
- package/dist/lite/.claude/skills/sprint/SKILL.md +418 -0
- package/dist/lite/.claude/skills/stage/SKILL.md +384 -0
- package/dist/lite/.claude/skills/state-a-problem/SKILL.md +185 -0
- package/dist/lite/.claude/skills/temperance/SKILL.md +108 -0
- package/dist/lite/.claude/skills/use-case/SKILL.md +417 -0
- package/dist/lite/.claude/skills/user-stories/SKILL.md +268 -0
- package/dist/lite/.claude/skills/value-prop/SKILL.md +251 -0
- package/dist/lite/.claude/skills/verify/SKILL.md +160 -0
- package/dist/lite/.claude/skills/visual-review/SKILL.md +503 -0
- package/dist/lite/.claude/skills/whats-the-plan/SKILL.md +202 -0
- package/dist/lite/.claude/skills/whereami/SKILL.md +307 -0
- package/dist/lite/AGENTS.md +79 -0
- package/dist/lite/CLAUDE-lite.md +85 -0
- package/dist/lite/CODE_OF_CONDUCT.md +28 -0
- package/dist/lite/CONTRIBUTING.md +177 -0
- package/dist/lite/README.md +173 -0
- package/dist/lite/SECURITY.md +19 -0
- package/dist/lite/architecture/decisions/ADR-029-release-pipeline.md +79 -0
- package/dist/lite/architecture/decisions/ADR-031-non-breaking-changes-adopter-discipline.md +139 -0
- package/dist/lite/architecture/decisions/ADR-032-adopter-sync-dispatcher-architecture.md +192 -0
- package/dist/lite/architecture/decisions/ADR-039-release-tagging-scheme.md +145 -0
- package/dist/lite/architecture/decisions/ADR-040-planning-skill-vocabulary-and-lite-profile.md +155 -0
- package/dist/lite/architecture/decisions/ADR-044-unified-skill-body-template.md +162 -0
- package/dist/lite/lib/clean-artifacts-sweep.sh +112 -0
- package/dist/lite/lib/code-comment-discipline.sh +144 -0
- package/dist/lite/lib/composer-preflight.sh +459 -0
- package/dist/lite/lib/deferred-actions.sh +146 -0
- package/dist/lite/lib/hook-header-parser.sh +61 -0
- package/dist/lite/lib/hook-heartbeat.sh +152 -0
- package/dist/lite/lib/hook-inject.sh +255 -0
- package/dist/lite/lib/hook-installer.sh +195 -0
- package/dist/lite/lib/luminary-pick.sh +96 -0
- package/dist/lite/lib/output-discipline.sh +143 -0
- package/dist/lite/lib/prose-scan-boundary.sh +171 -0
- package/dist/lite/lib/rewrite-check.sh +214 -0
- package/dist/lite/lib/session-rescue.sh +151 -0
- package/dist/lite/lib/source-graph-walker.sh +277 -0
- package/dist/lite/lib/state.sh +1372 -0
- package/dist/lite/lib/telemetry.sh +205 -0
- package/dist/lite/lib/tier-check.sh +187 -0
- package/dist/lite/lib/tier-dependency-audit.sh +1088 -0
- package/dist/lite/presence/install/bassclef-hook-connect.sh +178 -0
- package/dist/lite/presence/install/bassclef-sync.dispatcher.template.sh +841 -0
- package/dist/lite/presence/install/bassclef-sync.template.sh +2278 -0
- package/dist/lite/presence/install/schedule-auto-save.cron.sh +88 -0
- package/dist/lite/presence/install/schedule-auto-save.taskscheduler.md +122 -0
- package/dist/lite/scripts/aggregate-telemetry.sh +217 -0
- package/dist/lite/scripts/analyze-tier-dependencies.sh +239 -0
- package/dist/lite/scripts/generate-lite-manifest.sh +505 -0
- package/dist/lite/scripts/generate-tier-manifest.sh +28 -0
- package/dist/lite/scripts/intent-drift-check.sh +456 -0
- package/dist/lite/scripts/lite-manifest-drift-check.sh +146 -0
- package/dist/lite/scripts/render-lite-manifest-doc.sh +150 -0
- package/dist/lite/standards/adr-template.md +86 -0
- package/dist/lite/standards/api-conventions/nextjs.md +84 -0
- package/dist/lite/standards/artifact-composition.md +209 -0
- package/dist/lite/standards/bash-hook-safety.md +246 -0
- package/dist/lite/standards/bassclef-configs-schema.md +232 -0
- package/dist/lite/standards/bassclef-evolution.md +143 -0
- package/dist/lite/standards/bassclef-internal-jargon.md +244 -0
- package/dist/lite/standards/bassclef-managed-sentinel.md +96 -0
- package/dist/lite/standards/bassclef-source-config.md +228 -0
- package/dist/lite/standards/branch-stacking.md +408 -0
- package/dist/lite/standards/code-safety-principles.md +176 -0
- package/dist/lite/standards/composer-prerequisites.md +155 -0
- package/dist/lite/standards/deferred-actions-schema.md +204 -0
- package/dist/lite/standards/dependency-discipline/cargo.md +39 -0
- package/dist/lite/standards/dependency-discipline/gem.md +43 -0
- package/dist/lite/standards/dependency-discipline/go-mod.md +41 -0
- package/dist/lite/standards/dependency-discipline/npm.md +42 -0
- package/dist/lite/standards/dependency-discipline/pip.md +42 -0
- package/dist/lite/standards/deployment-topology/ec2-tailscale.md +225 -0
- package/dist/lite/standards/deployment-topology.md +69 -0
- package/dist/lite/standards/docs-sync-allowlist.md +76 -0
- package/dist/lite/standards/domain-and-dns.md +145 -0
- package/dist/lite/standards/frontend-stack.md +67 -0
- package/dist/lite/standards/frontmatter-schema.md +154 -0
- package/dist/lite/standards/graceful-exit.md +227 -0
- package/dist/lite/standards/hook-idempotency.md +102 -0
- package/dist/lite/standards/hook-injection-discipline.md +202 -0
- package/dist/lite/standards/hook-install-class.md +215 -0
- package/dist/lite/standards/input-handler-interface.md +152 -0
- package/dist/lite/standards/lite-manifest-schema-changes.md +180 -0
- package/dist/lite/standards/lite-manifest.json +2797 -0
- package/dist/lite/standards/luminary-matching.md +105 -0
- package/dist/lite/standards/luminary-problem-patterns.md +481 -0
- package/dist/lite/standards/migration-discipline/active-record.md +50 -0
- package/dist/lite/standards/migration-discipline/alembic.md +43 -0
- package/dist/lite/standards/migration-discipline/gorm.md +50 -0
- package/dist/lite/standards/migration-discipline/prisma.md +53 -0
- package/dist/lite/standards/migration-discipline/sqlalchemy.md +51 -0
- package/dist/lite/standards/mobile-ephemeral-session.md +167 -0
- package/dist/lite/standards/model-routing-discipline.md +160 -0
- package/dist/lite/standards/ogilvy-writing-rules.md +225 -0
- package/dist/lite/standards/opener-discipline.md +96 -0
- package/dist/lite/standards/operator-facing-prose-discipline.md +201 -0
- package/dist/lite/standards/persona-schema.md +229 -0
- package/dist/lite/standards/pluggable-luminaries.md +323 -0
- package/dist/lite/standards/pr-body-discipline.md +115 -0
- package/dist/lite/standards/preview-state-schema.md +189 -0
- package/dist/lite/standards/project-directory-layout.md +276 -0
- package/dist/lite/standards/release-tagging.md +137 -0
- package/dist/lite/standards/reserved-skill-names.md +120 -0
- package/dist/lite/standards/scannable-multi-option-output.md +265 -0
- package/dist/lite/standards/sdlc-compliance.md +286 -0
- package/dist/lite/standards/sdlc-gates/typescript.md +57 -0
- package/dist/lite/standards/secrets-lifecycle.md +210 -0
- package/dist/lite/standards/security-scanner-adapter.md +145 -0
- package/dist/lite/standards/session-board.md +256 -0
- package/dist/lite/standards/skill-output-discipline.md +121 -0
- package/dist/lite/standards/state-spine-contract.md +255 -0
- package/dist/lite/standards/state-spine.md +511 -0
- package/dist/lite/standards/steering-hints/kiss-words.md +11 -0
- package/dist/lite/standards/substrate-config-schema.md +267 -0
- package/dist/lite/standards/tech-stack-config.md +109 -0
- package/dist/lite/standards/tier-dependency-analysis.md +167 -0
- package/dist/lite/standards/tier-runtime-deps/lite.md +57 -0
- package/dist/lite/standards/tier-tag-schema.md +155 -0
- package/dist/lite/standards/two-layer-config.md +99 -0
- package/dist/lite/standards/use-case-format.md +292 -0
- package/dist/lite/standards/user-story-invest.md +268 -0
- package/dist/lite/standards/velocity-and-appetite.md +229 -0
- package/dist/lite/standards/voice-input-pattern.md +119 -0
- package/dist/lite/standards/whereami-schema.md +301 -0
- package/dist/lite/standards/worktree-management.md +211 -0
- package/dist/lite/standards/writing-guide.md +213 -0
- package/dist/lite/templates/chronicle-template.md +75 -0
- package/dist/lite/templates/deferred-action-template.md +45 -0
- package/dist/lite/templates/memory-proposal-template.md +77 -0
- package/dist/lite/templates/persona-template.md +200 -0
- package/dist/lite/templates/pr-faq.md +45 -0
- package/dist/lite/templates/secret-rotation-template.md +162 -0
- package/dist/lite/templates/spec-template.md +131 -0
- package/dist/lite/templates/use-case-template.md +194 -0
- package/dist/lite/templates/user-story-template.md +107 -0
- package/dist/lite/templates/whereami-template.md +101 -0
- package/package.json +12 -5
|
@@ -0,0 +1,332 @@
|
|
|
1
|
+
---
|
|
2
|
+
tier: lite
|
|
3
|
+
name: lean-canvas
|
|
4
|
+
description: "Produce a Lean Canvas \u2014 Ash Maurya's 9-box template \u2014 filled through persona lenses. Two modes: commercial (revenue in dollars) and growth-loop (audience plus credibility). Outputs 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.
|