@thebassclef/lite 0.1.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (293) hide show
  1. package/dist/cli.cjs +238 -127
  2. package/dist/cli.js +240 -129
  3. package/dist/index.cjs +1 -1
  4. package/dist/index.d.ts +1 -1
  5. package/dist/index.js +1 -1
  6. package/dist/lite/.bassclef-source.json +10 -0
  7. package/dist/lite/.claude/settings.json +212 -0
  8. package/dist/lite/CLAUDE.md +41 -0
  9. package/dist/lite/gitignore +58 -0
  10. package/dist/lite/standards/bassclef-wiring-manifest.json +497 -0
  11. package/dist/lite/whereami.md +24 -0
  12. package/package.json +8 -2
  13. package/substrate/.bassclef/lite-manifest.json +0 -2701
  14. package/substrate/.claude/agents/architect.md +0 -70
  15. package/substrate/.claude/agents/builder.md +0 -114
  16. package/substrate/.claude/agents/designer.md +0 -156
  17. package/substrate/.claude/agents/reviewer.md +0 -88
  18. package/substrate/.claude/hooks/artifact-ingestion-gate.sh +0 -357
  19. package/substrate/.claude/hooks/assert-verify-steering.sh +0 -77
  20. package/substrate/.claude/hooks/bassclef-source-config-validate.sh +0 -215
  21. package/substrate/.claude/hooks/bassclef-sync.sh +0 -634
  22. package/substrate/.claude/hooks/compound-noun-scrub.sh +0 -292
  23. package/substrate/.claude/hooks/kiss-expansion-inject.sh +0 -69
  24. package/substrate/.claude/hooks/longrun-prep-compounding-axis-check.sh +0 -492
  25. package/substrate/.claude/hooks/longrun-prep-compounding-sequence-check.sh +0 -492
  26. package/substrate/.claude/hooks/plain-english-steering.sh +0 -156
  27. package/substrate/.claude/hooks/post-skill-friction-check.sh +0 -177
  28. package/substrate/.claude/hooks/post-skill-telemetry.sh +0 -62
  29. package/substrate/.claude/hooks/pre-build-gate.sh +0 -511
  30. package/substrate/.claude/hooks/pre-commit-gate.sh +0 -451
  31. package/substrate/.claude/hooks/session-end.sh +0 -433
  32. package/substrate/.claude/hooks/session-reflection.sh +0 -303
  33. package/substrate/.claude/hooks/skill-body-grade-gate.sh +0 -219
  34. package/substrate/.claude/hooks/skill-body-intent-drift.sh +0 -107
  35. package/substrate/.claude/hooks/skill-step-list-check.sh +0 -171
  36. package/substrate/.claude/hooks/state-validate.sh +0 -271
  37. package/substrate/.claude/hooks/substrate-clarity-gate.sh +0 -1110
  38. package/substrate/.claude/hooks/temperance-gate.sh +0 -147
  39. package/substrate/.claude/hooks/testing-tier-enforce.sh +0 -233
  40. package/substrate/.claude/hooks/turn-prose-grade-measure.sh +0 -219
  41. package/substrate/.claude/hooks/turn-prose-kiss-check.sh +0 -463
  42. package/substrate/.claude/hooks/vocabulary-migration-check.sh +0 -171
  43. package/substrate/.claude/hooks/whereami-utc-gate.sh +0 -142
  44. package/substrate/.claude/luminaries/alan-cooper.md +0 -170
  45. package/substrate/.claude/luminaries/alistair-cockburn.md +0 -140
  46. package/substrate/.claude/luminaries/amazon-pr-faq.md +0 -34
  47. package/substrate/.claude/luminaries/ash-maurya.md +0 -121
  48. package/substrate/.claude/luminaries/bill-buxton.md +0 -210
  49. package/substrate/.claude/luminaries/charles-sanders-peirce.md +0 -150
  50. package/substrate/.claude/luminaries/david-ogilvy.md +0 -192
  51. package/substrate/.claude/luminaries/don-norman.md +0 -173
  52. package/substrate/.claude/luminaries/edward-tufte.md +0 -179
  53. package/substrate/.claude/luminaries/eric-evans.md +0 -160
  54. package/substrate/.claude/luminaries/frederick-brooks.md +0 -50
  55. package/substrate/.claude/luminaries/gang-of-four.md +0 -157
  56. package/substrate/.claude/luminaries/glenford-myers.md +0 -230
  57. package/substrate/.claude/luminaries/hunt-thomas.md +0 -115
  58. package/substrate/.claude/luminaries/hyrum-wright.md +0 -94
  59. package/substrate/.claude/luminaries/jason-fried-dhh.md +0 -46
  60. package/substrate/.claude/luminaries/jesse-james-garrett.md +0 -154
  61. package/substrate/.claude/luminaries/john-ousterhout.md +0 -94
  62. package/substrate/.claude/luminaries/karl-popper.md +0 -132
  63. package/substrate/.claude/luminaries/kent-beck.md +0 -168
  64. package/substrate/.claude/luminaries/linus-torvalds.md +0 -218
  65. package/substrate/.claude/luminaries/martin-fowler.md +0 -164
  66. package/substrate/.claude/luminaries/michael-feathers.md +0 -125
  67. package/substrate/.claude/luminaries/michael-nygard.md +0 -118
  68. package/substrate/.claude/luminaries/robert-c-martin.md +0 -164
  69. package/substrate/.claude/luminaries/saltzer-schroeder.md +0 -194
  70. package/substrate/.claude/luminaries/sophia-prater.md +0 -193
  71. package/substrate/.claude/luminaries/stephen-toulmin.md +0 -131
  72. package/substrate/.claude/luminaries/tony-hoare.md +0 -170
  73. package/substrate/.claude/luminaries/vaughn-vernon.md +0 -50
  74. package/substrate/.claude/luminaries/w-edwards-deming.md +0 -158
  75. package/substrate/.claude/rules/accessor-library-discipline.md +0 -138
  76. package/substrate/.claude/rules/adr-discipline.md +0 -120
  77. package/substrate/.claude/rules/api-conventions.md +0 -125
  78. package/substrate/.claude/rules/artifact-ingestion.md +0 -179
  79. package/substrate/.claude/rules/assert-only-after-verify.md +0 -137
  80. package/substrate/.claude/rules/blocked-items.md +0 -146
  81. package/substrate/.claude/rules/bootstrap-pair-discipline.md +0 -141
  82. package/substrate/.claude/rules/branching.md +0 -28
  83. package/substrate/.claude/rules/cold-adopter-harness-discipline.md +0 -129
  84. package/substrate/.claude/rules/commit-conventions.md +0 -22
  85. package/substrate/.claude/rules/compounding-axis-fresh-analysis.md +0 -188
  86. package/substrate/.claude/rules/compounding-sequence-fresh-analysis.md +0 -188
  87. package/substrate/.claude/rules/context-engineering.md +0 -202
  88. package/substrate/.claude/rules/context-management.md +0 -85
  89. package/substrate/.claude/rules/defensive-bash.md +0 -68
  90. package/substrate/.claude/rules/deferred-actions.md +0 -233
  91. package/substrate/.claude/rules/destructive-operations.md +0 -69
  92. package/substrate/.claude/rules/diagnosis.md +0 -38
  93. package/substrate/.claude/rules/github-issue-flash-tweet.md +0 -156
  94. package/substrate/.claude/rules/guardrails.md +0 -73
  95. package/substrate/.claude/rules/hook-wire-on-author.md +0 -103
  96. package/substrate/.claude/rules/identifier-leak-prevention.md +0 -104
  97. package/substrate/.claude/rules/iteration-bet-brief-completeness.md +0 -54
  98. package/substrate/.claude/rules/lite-manifest-schema-change-discipline.md +0 -98
  99. package/substrate/.claude/rules/longrun-prep-plan-doc-compression.md +0 -89
  100. package/substrate/.claude/rules/loop-discipline.md +0 -81
  101. package/substrate/.claude/rules/manual-prod-approval.md +0 -100
  102. package/substrate/.claude/rules/marker-enrichment-discipline.md +0 -99
  103. package/substrate/.claude/rules/mobile-ephemeral-session.md +0 -109
  104. package/substrate/.claude/rules/new-dependency-check.md +0 -51
  105. package/substrate/.claude/rules/oo-ad-entry-point.md +0 -117
  106. package/substrate/.claude/rules/operator-facing-prose.md +0 -196
  107. package/substrate/.claude/rules/option-label-discipline.md +0 -108
  108. package/substrate/.claude/rules/pattern-annotation.md +0 -100
  109. package/substrate/.claude/rules/plain-english-discipline.md +0 -156
  110. package/substrate/.claude/rules/plan-enumeration-needs-value-props.md +0 -211
  111. package/substrate/.claude/rules/pr-body-shape.md +0 -317
  112. package/substrate/.claude/rules/pr-strategy.md +0 -167
  113. package/substrate/.claude/rules/pr-title-shape.md +0 -161
  114. package/substrate/.claude/rules/prototype-workflow.md +0 -65
  115. package/substrate/.claude/rules/reserved-skill-names.md +0 -123
  116. package/substrate/.claude/rules/schema-management.md +0 -49
  117. package/substrate/.claude/rules/sdlc-gates.md +0 -149
  118. package/substrate/.claude/rules/security.md +0 -37
  119. package/substrate/.claude/rules/session-artifacts.md +0 -236
  120. package/substrate/.claude/rules/skill-composition-declarations.md +0 -124
  121. package/substrate/.claude/rules/skill-description-clarity.md +0 -247
  122. package/substrate/.claude/rules/skill-procedure-step-list.md +0 -137
  123. package/substrate/.claude/rules/state-schema-validation.md +0 -162
  124. package/substrate/.claude/rules/stuck-signal-diagnostic.md +0 -140
  125. package/substrate/.claude/rules/substrate-config-schema.md +0 -98
  126. package/substrate/.claude/rules/test-list-discipline.md +0 -175
  127. package/substrate/.claude/rules/test-sufficiency.md +0 -210
  128. package/substrate/.claude/rules/testing-tier-config.md +0 -145
  129. package/substrate/.claude/rules/testing.md +0 -38
  130. package/substrate/.claude/rules/turn-estimate-grounding.md +0 -134
  131. package/substrate/.claude/rules/visual-hierarchy.md +0 -437
  132. package/substrate/.claude/rules/we-dont-break-adopters.md +0 -126
  133. package/substrate/.claude/rules/whereami-load-bearing.md +0 -202
  134. package/substrate/.claude/rules/writing-craft-discipline.md +0 -92
  135. package/substrate/.claude/rules/wu-sequencing-compounds.md +0 -145
  136. package/substrate/.claude/skills/build/SKILL.md +0 -640
  137. package/substrate/.claude/skills/chronicle/SKILL.md +0 -55
  138. package/substrate/.claude/skills/clean-artifacts/SKILL.md +0 -249
  139. package/substrate/.claude/skills/decompose/SKILL.md +0 -280
  140. package/substrate/.claude/skills/diagnose/SKILL.md +0 -297
  141. package/substrate/.claude/skills/feynman/SKILL.md +0 -90
  142. package/substrate/.claude/skills/howdoi/SKILL.md +0 -105
  143. package/substrate/.claude/skills/ia-model/SKILL.md +0 -108
  144. package/substrate/.claude/skills/interaction-design/SKILL.md +0 -112
  145. package/substrate/.claude/skills/interpret-input/SKILL.md +0 -180
  146. package/substrate/.claude/skills/journal/SKILL.md +0 -209
  147. package/substrate/.claude/skills/kiss/SKILL.md +0 -449
  148. package/substrate/.claude/skills/launch/SKILL.md +0 -915
  149. package/substrate/.claude/skills/lean-canvas/SKILL.md +0 -332
  150. package/substrate/.claude/skills/longrun/SKILL.md +0 -463
  151. package/substrate/.claude/skills/luminary/SKILL.md +0 -481
  152. package/substrate/.claude/skills/ogilvy-writing-audit/SKILL.md +0 -177
  153. package/substrate/.claude/skills/onboard-repo/SKILL.md +0 -1624
  154. package/substrate/.claude/skills/pattern-review/SKILL.md +0 -99
  155. package/substrate/.claude/skills/personas/SKILL.md +0 -207
  156. package/substrate/.claude/skills/promote/SKILL.md +0 -283
  157. package/substrate/.claude/skills/requirement/SKILL.md +0 -98
  158. package/substrate/.claude/skills/retro/SKILL.md +0 -117
  159. package/substrate/.claude/skills/riff/SKILL.md +0 -114
  160. package/substrate/.claude/skills/roadmap-reconcile/SKILL.md +0 -163
  161. package/substrate/.claude/skills/session-end/SKILL.md +0 -309
  162. package/substrate/.claude/skills/session-log/SKILL.md +0 -299
  163. package/substrate/.claude/skills/skills/SKILL.md +0 -228
  164. package/substrate/.claude/skills/spec/SKILL.md +0 -105
  165. package/substrate/.claude/skills/sprint/SKILL.md +0 -392
  166. package/substrate/.claude/skills/stage/SKILL.md +0 -384
  167. package/substrate/.claude/skills/state-a-problem/SKILL.md +0 -185
  168. package/substrate/.claude/skills/temperance/SKILL.md +0 -108
  169. package/substrate/.claude/skills/use-case/SKILL.md +0 -417
  170. package/substrate/.claude/skills/user-stories/SKILL.md +0 -268
  171. package/substrate/.claude/skills/value-prop/SKILL.md +0 -251
  172. package/substrate/.claude/skills/verify/SKILL.md +0 -160
  173. package/substrate/.claude/skills/visual-review/SKILL.md +0 -503
  174. package/substrate/.claude/skills/whats-the-plan/SKILL.md +0 -202
  175. package/substrate/.claude/skills/whereami/SKILL.md +0 -307
  176. package/substrate/AGENTS.md +0 -79
  177. package/substrate/CLAUDE-lite.md +0 -85
  178. package/substrate/CODE_OF_CONDUCT.md +0 -28
  179. package/substrate/CONTRIBUTING.md +0 -177
  180. package/substrate/README.md +0 -173
  181. package/substrate/SECURITY.md +0 -19
  182. package/substrate/architecture/decisions/ADR-029-release-pipeline.md +0 -79
  183. package/substrate/architecture/decisions/ADR-031-non-breaking-changes-adopter-discipline.md +0 -139
  184. package/substrate/architecture/decisions/ADR-032-adopter-sync-dispatcher-architecture.md +0 -192
  185. package/substrate/architecture/decisions/ADR-039-release-tagging-scheme.md +0 -145
  186. package/substrate/architecture/decisions/ADR-040-planning-skill-vocabulary-and-lite-profile.md +0 -155
  187. package/substrate/architecture/decisions/ADR-044-unified-skill-body-template.md +0 -162
  188. package/substrate/lib/clean-artifacts-sweep.sh +0 -112
  189. package/substrate/lib/code-comment-discipline.sh +0 -144
  190. package/substrate/lib/composer-preflight.sh +0 -459
  191. package/substrate/lib/hook-inject.sh +0 -255
  192. package/substrate/lib/luminary-pick.sh +0 -96
  193. package/substrate/lib/output-discipline.sh +0 -143
  194. package/substrate/lib/prose-scan-boundary.sh +0 -171
  195. package/substrate/lib/rewrite-check.sh +0 -214
  196. package/substrate/lib/state.sh +0 -1372
  197. package/substrate/lib/telemetry.sh +0 -205
  198. package/substrate/lib/tier-check.sh +0 -187
  199. package/substrate/lib/tier-dependency-audit.sh +0 -1088
  200. package/substrate/presence/install/bassclef-hook-connect.sh +0 -178
  201. package/substrate/presence/install/bassclef-sync.dispatcher.template.sh +0 -841
  202. package/substrate/presence/install/bassclef-sync.template.sh +0 -2076
  203. package/substrate/presence/install/schedule-auto-save.cron.sh +0 -88
  204. package/substrate/presence/install/schedule-auto-save.taskscheduler.md +0 -122
  205. package/substrate/scripts/aggregate-telemetry.sh +0 -217
  206. package/substrate/scripts/analyze-tier-dependencies.sh +0 -239
  207. package/substrate/scripts/generate-lite-manifest.sh +0 -505
  208. package/substrate/scripts/generate-tier-manifest.sh +0 -28
  209. package/substrate/scripts/intent-drift-check.sh +0 -456
  210. package/substrate/scripts/lite-manifest-drift-check.sh +0 -146
  211. package/substrate/scripts/render-lite-manifest-doc.sh +0 -150
  212. package/substrate/standards/adr-template.md +0 -86
  213. package/substrate/standards/api-conventions/nextjs.md +0 -84
  214. package/substrate/standards/artifact-composition.md +0 -209
  215. package/substrate/standards/bash-hook-safety.md +0 -246
  216. package/substrate/standards/bassclef-configs-schema.md +0 -232
  217. package/substrate/standards/bassclef-evolution.md +0 -143
  218. package/substrate/standards/bassclef-internal-jargon.md +0 -244
  219. package/substrate/standards/bassclef-managed-sentinel.md +0 -96
  220. package/substrate/standards/bassclef-source-config.md +0 -228
  221. package/substrate/standards/branch-stacking.md +0 -408
  222. package/substrate/standards/code-safety-principles.md +0 -176
  223. package/substrate/standards/composer-prerequisites.md +0 -155
  224. package/substrate/standards/deferred-actions-schema.md +0 -204
  225. package/substrate/standards/dependency-discipline/cargo.md +0 -39
  226. package/substrate/standards/dependency-discipline/gem.md +0 -43
  227. package/substrate/standards/dependency-discipline/go-mod.md +0 -41
  228. package/substrate/standards/dependency-discipline/npm.md +0 -42
  229. package/substrate/standards/dependency-discipline/pip.md +0 -42
  230. package/substrate/standards/deployment-topology/ec2-tailscale.md +0 -225
  231. package/substrate/standards/deployment-topology.md +0 -69
  232. package/substrate/standards/docs-sync-allowlist.md +0 -76
  233. package/substrate/standards/domain-and-dns.md +0 -145
  234. package/substrate/standards/frontend-stack.md +0 -67
  235. package/substrate/standards/frontmatter-schema.md +0 -154
  236. package/substrate/standards/graceful-exit.md +0 -227
  237. package/substrate/standards/hook-idempotency.md +0 -102
  238. package/substrate/standards/hook-injection-discipline.md +0 -202
  239. package/substrate/standards/hook-install-class.md +0 -215
  240. package/substrate/standards/input-handler-interface.md +0 -152
  241. package/substrate/standards/lite-manifest-schema-changes.md +0 -135
  242. package/substrate/standards/luminary-matching.md +0 -105
  243. package/substrate/standards/luminary-problem-patterns.md +0 -481
  244. package/substrate/standards/migration-discipline/active-record.md +0 -50
  245. package/substrate/standards/migration-discipline/alembic.md +0 -43
  246. package/substrate/standards/migration-discipline/gorm.md +0 -50
  247. package/substrate/standards/migration-discipline/prisma.md +0 -53
  248. package/substrate/standards/migration-discipline/sqlalchemy.md +0 -51
  249. package/substrate/standards/mobile-ephemeral-session.md +0 -167
  250. package/substrate/standards/model-routing-discipline.md +0 -160
  251. package/substrate/standards/ogilvy-writing-rules.md +0 -225
  252. package/substrate/standards/opener-discipline.md +0 -96
  253. package/substrate/standards/operator-facing-prose-discipline.md +0 -201
  254. package/substrate/standards/persona-schema.md +0 -229
  255. package/substrate/standards/pluggable-luminaries.md +0 -323
  256. package/substrate/standards/pr-body-discipline.md +0 -115
  257. package/substrate/standards/preview-state-schema.md +0 -189
  258. package/substrate/standards/project-directory-layout.md +0 -276
  259. package/substrate/standards/release-tagging.md +0 -137
  260. package/substrate/standards/reserved-skill-names.md +0 -120
  261. package/substrate/standards/scannable-multi-option-output.md +0 -261
  262. package/substrate/standards/sdlc-compliance.md +0 -286
  263. package/substrate/standards/sdlc-gates/typescript.md +0 -57
  264. package/substrate/standards/secrets-lifecycle.md +0 -210
  265. package/substrate/standards/security-scanner-adapter.md +0 -145
  266. package/substrate/standards/session-board.md +0 -256
  267. package/substrate/standards/skill-output-discipline.md +0 -90
  268. package/substrate/standards/state-spine-contract.md +0 -255
  269. package/substrate/standards/state-spine.md +0 -511
  270. package/substrate/standards/steering-hints/kiss-words.md +0 -11
  271. package/substrate/standards/substrate-config-schema.md +0 -267
  272. package/substrate/standards/tech-stack-config.md +0 -109
  273. package/substrate/standards/tier-dependency-analysis.md +0 -167
  274. package/substrate/standards/tier-runtime-deps/lite.md +0 -57
  275. package/substrate/standards/tier-tag-schema.md +0 -155
  276. package/substrate/standards/two-layer-config.md +0 -99
  277. package/substrate/standards/use-case-format.md +0 -292
  278. package/substrate/standards/user-story-invest.md +0 -268
  279. package/substrate/standards/velocity-and-appetite.md +0 -229
  280. package/substrate/standards/voice-input-pattern.md +0 -119
  281. package/substrate/standards/whereami-schema.md +0 -301
  282. package/substrate/standards/worktree-management.md +0 -211
  283. package/substrate/standards/writing-guide.md +0 -213
  284. package/substrate/templates/chronicle-template.md +0 -75
  285. package/substrate/templates/deferred-action-template.md +0 -45
  286. package/substrate/templates/memory-proposal-template.md +0 -77
  287. package/substrate/templates/persona-template.md +0 -200
  288. package/substrate/templates/pr-faq.md +0 -45
  289. package/substrate/templates/secret-rotation-template.md +0 -162
  290. package/substrate/templates/spec-template.md +0 -131
  291. package/substrate/templates/use-case-template.md +0 -194
  292. package/substrate/templates/user-story-template.md +0 -107
  293. package/substrate/templates/whereami-template.md +0 -101
@@ -1,142 +0,0 @@
1
- #!/usr/bin/env bash
2
- # tier: lite
3
- # install-class: dual
4
- #
5
- # whereami-utc-gate.sh — PreToolUse hook that BLOCKs Edit|Write|MultiEdit
6
- # on docs/whereami.md when last_updated.at value does not end in Z (UTC).
7
- #
8
- # Wires per .claude/settings.json under hooks.PreToolUse with matcher
9
- # "Edit|Write|MultiEdit". Reads the tool's event JSON from stdin,
10
- # extracts the incoming content (content for Write; new_string for Edit
11
- # and MultiEdit), scans for last_updated.at timestamp values in both
12
- # YAML-frontmatter form (`at: <timestamp>` under `last_updated:` block)
13
- # and markdown-section form (`## Last updated` followed by a timestamp).
14
- # BLOCKs (exit 2) when any value carries a non-Z offset.
15
- #
16
- # Cure B side of #897; Cure A (sync-hook parser accepts both shapes for
17
- # grace window) shipped in bet 26e PR #917. Cure B is the write-time
18
- # gate; adopter grace window per ADR-031 through 2026-10-31 — Cure A
19
- # parser keeps working during migration.
20
- #
21
- # Ships as WU-4 of bet 2026-07-26g.
22
- #
23
- # Override: SKIP_WHEREAMI_UTC_GATE=1 (logged to stderr).
24
- #
25
- # Pairs with: .claude/rules/state-schema-validation.md (sister discipline
26
- # at state-spine surface; this hook covers the whereami-
27
- # specific UTC-Z constraint)
28
-
29
- set -u
30
-
31
- # === Override path ===
32
-
33
- if [ "${SKIP_WHEREAMI_UTC_GATE:-}" = "1" ]; then
34
- echo "[whereami-utc-gate.sh] SKIP_WHEREAMI_UTC_GATE=1 — bypassing" >&2
35
- exit 0
36
- fi
37
-
38
- # === Read PreToolUse event ===
39
-
40
- EVENT_JSON="$(cat 2>/dev/null || true)"
41
- if [ -z "$EVENT_JSON" ]; then
42
- exit 0 # empty stdin → pass through (fail-soft per stdin contract)
43
- fi
44
-
45
- # Fail-soft on malformed JSON per sufficiency criterion 6
46
- TOOL_NAME="$(echo "$EVENT_JSON" | jq -r '.tool_name // empty' 2>/dev/null || echo "")"
47
- TARGET_PATH="$(echo "$EVENT_JSON" | jq -r '.tool_input.file_path // empty' 2>/dev/null || echo "")"
48
-
49
- # --- Tool filter: only Edit / Write / MultiEdit trigger ---
50
- case "$TOOL_NAME" in
51
- Edit|Write|MultiEdit) ;;
52
- *) exit 0 ;;
53
- esac
54
-
55
- # --- Path filter: only docs/whereami.md triggers ---
56
- if [ -z "$TARGET_PATH" ]; then
57
- exit 0
58
- fi
59
-
60
- # Match either bare "docs/whereami.md" or an absolute path ending in it
61
- case "$TARGET_PATH" in
62
- */docs/whereami.md|docs/whereami.md) ;;
63
- *) exit 0 ;;
64
- esac
65
-
66
- # === Extract incoming content ===
67
-
68
- # Write uses .tool_input.content; Edit + MultiEdit use .tool_input.new_string
69
- CONTENT=""
70
- case "$TOOL_NAME" in
71
- Write)
72
- CONTENT="$(echo "$EVENT_JSON" | jq -r '.tool_input.content // empty' 2>/dev/null || echo "")"
73
- ;;
74
- Edit|MultiEdit)
75
- CONTENT="$(echo "$EVENT_JSON" | jq -r '.tool_input.new_string // empty' 2>/dev/null || echo "")"
76
- ;;
77
- esac
78
-
79
- if [ -z "$CONTENT" ]; then
80
- exit 0 # nothing to validate
81
- fi
82
-
83
- # === Scan for non-Z last_updated.at values ===
84
- #
85
- # Two shapes to cover per Cure A parser scope:
86
- #
87
- # 1. YAML frontmatter (Shape B state-spine):
88
- # last_updated:
89
- # at: 2026-07-26T18:30:00Z
90
- #
91
- # 2. Markdown section (## Last updated form):
92
- # ## Last updated
93
- #
94
- # 2026-07-26T18:30:00Z — session-end
95
- #
96
- # The scan pattern: any ISO-8601 timestamp of shape YYYY-MM-DDTHH:MM:SS
97
- # followed by a non-Z suffix (+HHMM, -HHMM, +HH:MM, -HH:MM). We do NOT
98
- # require the surrounding structure — a bare non-Z timestamp anywhere
99
- # in the whereami content is a BLOCK signal.
100
-
101
- NON_Z_MATCH=""
102
-
103
- # Regex catches: 2026-07-26T18:30:00+0100 / -0500 / +01:00 / -05:00
104
- NON_Z_PATTERN='[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}[+-][0-9]{2}:?[0-9]{2}'
105
-
106
- NON_Z_MATCH="$(printf '%s' "$CONTENT" | grep -oE "$NON_Z_PATTERN" | head -3 || true)"
107
-
108
- if [ -z "$NON_Z_MATCH" ]; then
109
- exit 0 # all timestamps end in Z (or none present); pass
110
- fi
111
-
112
- # === BLOCK message ===
113
-
114
- echo "" >&2
115
- echo "============================================" >&2
116
- echo "🛑 WHEREAMI UTC GATE — BLOCKED 🛑" >&2
117
- echo "============================================" >&2
118
- echo "" >&2
119
- echo "File: $TARGET_PATH" >&2
120
- echo "Tool: $TOOL_NAME" >&2
121
- echo "" >&2
122
- echo "Found timestamp value(s) with non-Z (non-UTC) offset:" >&2
123
- echo "$NON_Z_MATCH" | sed 's/^/ /' >&2
124
- echo "" >&2
125
- echo "Spec: .claude/skills/session-end/SKILL.md L60 — \"Set last_updated" >&2
126
- echo " to current UTC ISO-8601 timestamp.\"" >&2
127
- echo "" >&2
128
- echo "Cure: rewrite the value to end in Z. Get current UTC:" >&2
129
- echo "" >&2
130
- echo " date -u +%FT%TZ" >&2
131
- echo "" >&2
132
- echo "Adopter grace window per ADR-031: Cure A parser (bet 26e PR #917)" >&2
133
- echo "accepts both Z and +HHMM through 2026-10-31. Cure B (this hook)" >&2
134
- echo "closes the write-time class so new writes stay UTC-Z." >&2
135
- echo "" >&2
136
- echo "Override (logged): SKIP_WHEREAMI_UTC_GATE=1 <command>" >&2
137
- echo "" >&2
138
- echo "Rule: .claude/rules/state-schema-validation.md" >&2
139
- echo "Issue: bassclef-upstream#897 Cure B" >&2
140
- echo "============================================" >&2
141
-
142
- exit 2
@@ -1,170 +0,0 @@
1
- ---
2
- tier: lite
3
- name: Alan Cooper
4
- slug: alan-cooper
5
- claimed_by: [designer]
6
- referenced_by_skills: [ia-model, jtbd-tasks, task-scenarios]
7
- primary_domain: ux
8
- depth: full
9
- sources:
10
- - type: book
11
- title: "About Face: The Essentials of Interaction Design (4th edition)"
12
- authors: ["Alan Cooper", "Robert Reimann", "David Cronin", "Christopher Noessel"]
13
- year: 2014
14
- url: "https://www.wiley.com/en-us/About+Face%3A+The+Essentials+of+Interaction+Design%2C+4th+Edition-p-9781118766576"
15
- isbn: "9781118766576"
16
- methodology_covered:
17
- - "Goal-Directed Design — design starts from user goals, not features or tasks"
18
- - "Personas as design tools — composite archetypes derived from user research"
19
- - "Scenarios — narrative descriptions of personas using the product to achieve goals"
20
- - "Three categories of users: novice + intermediate + expert; design for the perpetual intermediate"
21
- - type: book
22
- title: "The Inmates Are Running the Asylum: Why High-Tech Products Drive Us Crazy and How to Restore the Sanity"
23
- authors: ["Alan Cooper"]
24
- year: 1999
25
- url: "https://www.pearson.com/en-us/subject-catalog/p/inmates-are-running-the-asylum-the-why-high-tech-products-drive-us-crazy-and-how-to-restore-the-sanity/P200000009296"
26
- isbn: "9780672326141"
27
- methodology_covered:
28
- - "Programmer-driven design produces hostile interfaces"
29
- - "Interaction designers as a distinct discipline, separate from engineering"
30
- - "Persona origin — Cooper's first published articulation of the persona methodology"
31
- verification_status: verified
32
- solves_problems_brownfield:
33
- - "Existing UI exposes the system's structure when users want their workflow"
34
- - "Power users keep retracing the same multi-step path through the current UI"
35
- - "Persona research surfaces a goal but the existing UI optimizes for novice exploration"
36
- - "App is feature-rich but each user wants only one slice for their job"
37
- solves_problems_greenfield:
38
- - "Designing a workflow-heavy app for returning users with named goals"
39
- - "Building a product where personas + scenarios should drive the UI before any screen sketch"
40
- - "Planning a tool for power users who need their job-specific slice surfaced from day one"
41
- - "Mid-complexity product where personas keep early design decisions grounded in real users"
42
- anti_patterns:
43
- - "Truly simple consumer apps — Cooper overweights workflow modeling"
44
- - "First-launch novelty experiences — goal-directed assumes a returning user"
45
- - "Pure marketing or storytelling surfaces"
46
- description: "\"Personas are precision tools — each one a research-grounded behavioral archetype, not a fictional user."
47
- ---
48
-
49
- # Alan Cooper
50
-
51
- ## Signature
52
-
53
- *"Personas are precision tools — each one a research-grounded behavioral archetype, not a fictional user. Start with user goals and let personas carry you there."*
54
-
55
- "Father of Visual Basic"; founder of Cooper (the consultancy); author of
56
- **About Face** and **The Inmates Are Running the Asylum**. The bassclef
57
- voice on **Goal-Directed Design** and the proper use of personas as
58
- research artifacts.
59
-
60
- ## Core methods
61
-
62
- - **Goal-Directed Design** — Start with user goals (what they want to
63
- accomplish, at life/experience/end levels), then derive tasks, then
64
- derive interface. Feature-first design inverts this and produces
65
- feature-dense, goal-incoherent products.
66
- - **Personas as behavioral archetypes** — Built from interview pattern
67
- analysis, not invented. Each persona represents a distinct goal set +
68
- mental model + behavior pattern. A good product serves a primary
69
- persona ruthlessly; secondary personas are served if it doesn't
70
- compromise the primary.
71
- - **Three levels of goals** — Life goals (long-term aspirations),
72
- experience goals (how the interaction should feel), end goals (what
73
- they want to accomplish in this session). Life goals shape brand;
74
- experience goals shape interaction; end goals shape task flow.
75
- - **Scenarios over requirements** — Describe the user in their context
76
- pursuing their goal. A list of requirements decomposes; a scenario
77
- holds the context that makes requirements make sense.
78
- - **Dancing bear anti-pattern** — When something is remarkable *that it
79
- works at all*, we accept it despite being difficult to use. Enterprise
80
- software especially. Cooper's insight: don't accept the dancing bear.
81
-
82
- ## When to channel this luminary
83
-
84
- When the biggest risk is building the wrong thing for the wrong person.
85
- Cooper dominates when you have a target user population with distinct
86
- behavior patterns, when goals (not features) should drive the product,
87
- and when the risk of serving-everyone-badly is real. Think: operator
88
- tools where the primary user does this job all day, specialist tools
89
- where casual users will never be the target, B2B products with clear
90
- user roles.
91
-
92
- Do NOT channel Cooper as primary for: consumer products with vague
93
- personas, rapid prototyping where persona rigor is premature, projects
94
- where research budget doesn't support proper persona development (use
95
- lightweight JTBD instead).
96
-
97
- ## Stack translation
98
-
99
- In a Next.js + Prisma operator tool:
100
-
101
- - **User goals → top-level nav** — If the primary persona's goal is
102
- "move deals through pipeline efficiently," nav centers on deal flow,
103
- not on feature taxonomy.
104
- - **Personas → role-based access + UI variants** — Actual personas
105
- often map to auth roles (Operator vs Broker vs Viewer). Each role
106
- gets a goal-optimized surface, not a feature-subset of a generic UI.
107
- - **Scenarios → key path tests** — Each scenario becomes an end-to-end
108
- test that walks through the persona's goal. If the scenario breaks,
109
- the product breaks for that persona.
110
- - **Primary persona dominance** — When Primary Persona and Secondary
111
- Persona needs conflict, Primary wins. Tailwind variants, conditional
112
- rendering, feature flags — all serve this.
113
-
114
- ## Anti-patterns it prevents
115
-
116
- - **Self-referential design** — designing for ourselves because we're
117
- easy to imagine. Cooper's rigor demands research-grounded personas.
118
- - **Generic "the user"** — vague singular user that's really an
119
- amalgam of all users. Produces features for all, good-fit for none.
120
- - **Feature-driven roadmap** — building because the feature was
121
- requested, not because it serves a persona's goal. Accumulates
122
- feature bloat without coherent direction.
123
- - **Persona gallery** — fictional marketing personas dressed as UX
124
- personas. Names, photos, and hobbies without behavioral grounding.
125
- Useless for design decisions.
126
- - **Goal conflation** — treating "user wants to export to CSV" as a
127
- goal. That's a task. The goal is "report to their manager." The task
128
- could be replaced by a better path to the goal.
129
-
130
- ## Worked example
131
-
132
- For POA's deal pipeline, Cooper's approach starts with:
133
-
134
- **Primary persona**: "Operator" — the person whose full-time job is
135
- managing deal flow. Life goal: become a successful PE operator.
136
- Experience goal: feel in control of their pipeline at a glance. End
137
- goals per session: advance stuck deals, respond to broker inbound, log
138
- new conversations, identify stalled opportunities.
139
-
140
- **Secondary persona**: "Broker" — external contact. Life goal: maximize
141
- commissions. Experience goal: trust the platform. End goals per session:
142
- submit new listings, see status on submitted deals, communicate with
143
- Operator.
144
-
145
- **Primary wins**: the main surface is optimized for Operator. Broker
146
- access is a narrow, focused interface (not the Operator UI with fewer
147
- permissions). Dashboards emphasize stuck/stalled deals (end-goal
148
- triggers) over total-deals-count (vanity metric).
149
-
150
- What Cooper would NOT produce: a generic "deal management platform"
151
- designed for "users." A feature-grid home page. A Broker UI that's
152
- just Operator UI with most nav items hidden.
153
-
154
- ## Sources
155
-
156
- - *About Face: The Essentials of Interaction Design* — Cooper,
157
- Reimann, Cronin, Noessel, Wiley (4th ed 2014) — the foundational text
158
- - *The Inmates Are Running the Asylum* — Cooper (1999, rev. 2004)
159
- - cooper.com — Cooper consultancy (now part of Designit)
160
-
161
- ## Related luminaries
162
-
163
- - **Kim Goodwin** — Goodwin provides the operational method for
164
- Cooper's Goal-Directed Design; pair them always.
165
- - **Sophia Prater** — OOUX starts with objects; Cooper with goals. Both
166
- reject feature-first. Complementary at different layers.
167
- - **Teresa Torres** — Continuous Discovery updates Cooper's research
168
- rigor for weekly cadence.
169
- - **Indi Young** — Mental models research at the thinking layer below
170
- Cooper's behavioral archetypes.
@@ -1,140 +0,0 @@
1
- ---
2
- tier: lite
3
- name: Alistair Cockburn
4
- slug: alistair-cockburn
5
- claimed_by: [architect, builder, shaper]
6
- referenced_by_skills: [decompose, spec, prototype-variants]
7
- primary_domain: architecture
8
- depth: full
9
- solves_problems_brownfield:
10
- - "The system's business logic is tangled with database access, HTTP handling, and third-party calls — changing one requires understanding all"
11
- - "Use cases are written as vague user stories that can't be used as acceptance tests"
12
- - "The architecture works locally but fails at each deployment because no one tested the full wired path"
13
- - "Every new feature requires touching the database, the service layer, and the API in one change — no independent seams"
14
- solves_problems_greenfield:
15
- - "Designing a system where business logic can be tested without a running database or HTTP stack"
16
- - "Planning the first end-to-end slice that proves the architecture before building any feature depth"
17
- - "Writing use cases that serve as both requirements and acceptance test specifications"
18
- - "Choosing a methodology weight that fits the team size and stakes — lightweight for small teams, heavier for safety-critical work"
19
- anti_patterns:
20
- - "UI-only or data-layer-only work where hexagonal architecture is over-engineering for the scope"
21
- - "Exploratory prototypes where formal use cases would slow down learning"
22
- - "Teams that are fluent in BDD/TDD — the walking skeleton concept is built into their practice"
23
- sources:
24
- - type: book
25
- title: "Writing Effective Use Cases"
26
- authors: ["Alistair Cockburn"]
27
- year: 2000
28
- url: "https://www.amazon.com/Writing-Effective-Use-Cases-Cockburn/dp/0201702258"
29
- isbn: "0201702258"
30
- methodology_covered:
31
- - "Use case writing — title, primary actor, preconditions, main success scenario, extensions"
32
- - "Goal levels — cloud, kite, sea level (user goals), fish, clam; write at sea level"
33
- - "Use cases as both requirements and acceptance test specifications"
34
- - type: book
35
- title: "Agile Software Development: The Cooperative Game"
36
- authors: ["Alistair Cockburn"]
37
- year: 2006
38
- url: "https://www.amazon.com/Agile-Software-Development-Cooperative-Game/dp/0321482751"
39
- isbn: "0321482751"
40
- methodology_covered:
41
- - "Crystal methodology family — process weight matched to team size and criticality"
42
- - "Walking skeleton — thin, real, end-to-end path before any feature depth"
43
- - "Software development as a cooperative game of invention and communication"
44
- - type: article
45
- title: "Hexagonal Architecture (Ports and Adapters)"
46
- authors: ["Alistair Cockburn"]
47
- year: 2005
48
- url: "https://alistair.cockburn.us/hexagonal-architecture/"
49
- methodology_covered:
50
- - "Ports and Adapters — business logic in the center, ports define interfaces, adapters implement them"
51
- - "Driving vs driven adapters — test adapters on the driving side; real infrastructure on the driven side"
52
- - "Business logic never imports infrastructure"
53
- - type: website
54
- title: "Alistair Cockburn primary site"
55
- authors: ["Alistair Cockburn"]
56
- year: 2000
57
- url: "https://alistair.cockburn.us/"
58
- methodology_covered:
59
- - "Primary site for Hexagonal Architecture article and use case writing resources"
60
- verification_status: source_gap_flagged
61
- description: "\"Build the walking skeleton first — the thinnest possible end-to-end slice that exercises every architectural layer, every deploy step, every test layer, before adding any feature."
62
- ---
63
-
64
- # Alistair Cockburn
65
-
66
- ## Signature
67
-
68
- *"Build the walking skeleton first — the thinnest possible end-to-end slice that exercises every architectural layer, every deploy step, every test layer, before adding any feature. Prove the architecture works; then add flesh."* [ref:2]
69
-
70
- Agile Manifesto signatory; originator of the Crystal methodology family; author of **Writing Effective Use Cases** (2000) [ref:1] and the **Hexagonal Architecture** (Ports & Adapters) pattern [ref:3]. The bassclef voice on behavior-driven requirements writing and on architecture that separates business logic from all infrastructure.
71
-
72
- <!-- SOURCE GAP: alistair.cockburn.us/hexagonal-architecture/ listed as [ref:3] could not be verified via HTTP fetch during audit (returned empty). URL is widely cited in the industry as the original source. If the page has moved, the SENTINEL_bassclef_URL is https://web.archive.org/web/2005*/https://alistair.cockburn.us/hexagonal-architecture/ as an archival fallback. -->
73
-
74
- ## Core methods
75
-
76
- - **Walking skeleton** — Build one thin, real, end-to-end path through the entire system before adding any feature depth: UI → API → service → DB → tests → CI → deploy. The path must be trivial but real — not a mock or a stub at any layer. The skeleton proves the architecture holds. Then add flesh (features, complexity, error paths) on a proven foundation. [ref:2]
77
- - **Hexagonal Architecture (Ports & Adapters)** — Business logic lives in the center. Ports are interfaces the business logic defines: "I need a way to store a deal," "I need a way to send a notification." Adapters on the outside implement those interfaces with real infrastructure (Prisma, email providers, HTTP). The business logic never imports infrastructure. Tests inject test adapters; production injects real ones. [ref:3]
78
- - **Use case writing** — A use case has: title (goal), primary actor, preconditions, main success scenario (numbered steps), and extensions (alternate flows and failure cases). Cockburn's goal levels matter: cloud level (abstract goals), kite level (near goals), sea level (user goals — the target), fish level (sub-goals), and clam level (too detailed). Write use cases at sea level. [ref:1]
79
- - **Crystal methodology scaling** — Process weight should match team size and criticality. Crystal Clear (2-8 people, low stakes) is minimal. Crystal Orange (25-50 people, moderate stakes) is heavier. Crystal Red (10-20 people, high criticality) is heaviest. Rejects one-size-fits-all methodology: the right process is the lightest one that works for this team and these stakes. [ref:2]
80
-
81
- ## When to channel this luminary
82
-
83
- When the primary risk is that business logic will be entangled with infrastructure, or that the first deployable slice has never been verified end-to-end. Cockburn dominates new system setup (walking skeleton is the first commit), service layer design (hexagonal separates business from infrastructure), and requirements writing for complex workflows (use cases at sea level). Pair with Evans (domain modeling for the center of the hexagon), Brown (C4 for documenting the resulting architecture), and Beck (TDD for the tests that plug into the hexagonal ports).
84
-
85
- INSTEAD of using Cockburn's use case formalism for simple CRUD features: a lightweight user story ("as a broker, I can submit a deal listing") is sufficient when the behavior has no branching extensions and no preconditions that matter. Use cases earn their weight when the behavior has multiple actors, multiple failure modes, or serves as an acceptance test specification.
86
-
87
- ## Stack translation
88
-
89
- In Next.js + Prisma + TypeScript:
90
-
91
- - **Walking skeleton** — first PR on a new project: one route (`/api/deals`), one Prisma model (`Deal`), one React component (a deal card), one vitest test, one Playwright smoke test, wired CI/CD. No features yet. The skeleton proves the stack works end-to-end before any feature is built.
92
- - **Hexagonal Architecture** — business logic lives in `src/lib/domain/`; Prisma is an adapter in `src/lib/infrastructure/database/`; the domain defines interfaces (`DealRepository`) that infrastructure implements. Server actions call domain functions; domain functions call repository interfaces; tests inject fake repositories.
93
- - **Use cases → acceptance tests** — a Cockburn use case's main success scenario is a Playwright test script. Each step in the use case is an interaction. Each extension is a branch in the test. Use case writing and test writing become the same activity.
94
- - **Goal levels in backlog** — sea-level use cases become iteration bets; sub-goals (fish/clam level) become tasks within a bet. Keeps the betting table at the right altitude.
95
-
96
- ## Anti-patterns it prevents
97
-
98
- - **Logic in the adapter** — business rules (deal qualification criteria, stage transition policies) coded inside the Prisma query or the Next.js route handler. These rules are invisible to unit tests, tangled with infrastructure, and duplicated when a new adapter (a worker, a CLI) needs the same rule.
99
- INSTEAD: move the rule to the domain layer; the adapter calls the domain function, not the other way around.
100
- - **Test-the-infrastructure tests** — tests that spin up a real database and test that Prisma can write to it. These are infrastructure tests, not domain tests. Slow, brittle, and they test the wrong thing.
101
- INSTEAD: test the domain with test adapters; test the infrastructure adapter in integration tests that stay in the integration tier.
102
- - **Flabby use cases** — use case main success scenarios that describe system internals ("the system updates the deal record in the database") rather than observable behavior ("the deal status changes to LOI and the broker is notified"). Cockburn's use cases are observable, not implementation-visible. [ref:1]
103
- - **No skeleton, all flesh** — starting a project by building feature depth before verifying the architectural path end-to-end. The first deployment fails in production because the path was never real until then.
104
-
105
- ## Worked example
106
-
107
- For POA's deal stage transition feature:
108
-
109
- **Walking skeleton**: before building any stage-transition UI, build one thin path: a Next.js server action that changes a deal's status, a Prisma write that persists it, a React component that shows the new status, and a Playwright test that confirms the status change is visible after the action. This skeleton runs in CI. Then add the full transition policy, the validation rules, and the notification flow.
110
-
111
- **Hexagonal architecture**:
112
- - Port: `StageTransitionPolicy` interface — `canTransition(deal: Deal, targetStage: Stage): PolicyResult`
113
- - Adapter: `NdaRequiredPolicy` implements `StageTransitionPolicy` using domain logic (no Prisma, no HTTP)
114
- - Server action: calls `StageTransitionService.advance(dealId, targetStage)` — domain function that uses the policy interface
115
- - Test: injects `AlwaysAllowPolicy` or `AlwaysDenyPolicy` as test adapters; no DB required
116
-
117
- **Use case (sea level)**:
118
- - Title: Advance Deal to LOI
119
- - Actor: Operator
120
- - Preconditions: deal is in "Initial Contact" stage; operator is authenticated
121
- - Main success: operator selects LOI from stage menu → system validates NDA signed → system changes status → broker is notified → operator sees updated stage
122
- - Extension 2a: NDA not signed → system shows "NDA required" message → deal stage unchanged
123
-
124
- ## Sources
125
-
126
- - *Writing Effective Use Cases* — Cockburn, Addison-Wesley (2000) [ref:1]
127
- - "Hexagonal Architecture" — Cockburn, alistair.cockburn.us (2005) — the original article [ref:3]
128
- - *Agile Software Development: The Cooperative Game* — Cockburn, Addison-Wesley (2006) [ref:2]
129
- - alistair.cockburn.us — primary site [ref:4]
130
-
131
- ## Corrections applied
132
-
133
- Cloud Strategy publisher: no correction needed for Cockburn entry. Note: hexagonal architecture URL [ref:3] could not be HTTP-verified during audit but is the widely-cited bassclef source; flagged as source gap.
134
-
135
- ## Related luminaries
136
-
137
- - **Eric Evans** — DDD provides the domain model that lives inside Cockburn's hexagon. Evans models the business concepts; Cockburn's ports protect them from infrastructure.
138
- - **Kent Beck** — Walking skeleton aligns with Beck's "make it work" step at architectural scale; TDD tests slot into hexagonal ports as test adapters.
139
- - **Jeff Patton** — User story mapping references Cockburn as a foundation; use cases and story maps are complementary at different resolution levels.
140
- - **Simon Brown** — C4 model documents the container-level architecture that hexagonal architecture structures. The hexagon's center and adapters map to C4 components.
@@ -1,34 +0,0 @@
1
- ---
2
- tier: lite
3
- name: Amazon PR/FAQ
4
- slug: amazon-pr-faq
5
- claimed_by: [shaper, product-manager]
6
- primary_domain: shaping
7
- depth: stub
8
- description: "\"Write the press release first. If it doesn't excite, don't build.\""
9
- ---
10
-
11
- # Amazon PR/FAQ
12
-
13
- ## Signature
14
-
15
- *"Write the press release first. If it doesn't excite, don't build."*
16
-
17
- Amazon's internal methodology for product definition. Write a mock
18
- press release + customer FAQ BEFORE building. If the announcement
19
- doesn't compel, the product isn't worth building.
20
-
21
- ## Core methods
22
-
23
- - **Mock press release** — 1-page release for a hypothetical future launch.
24
- Customer benefits stated clearly, no jargon.
25
- - **FAQ** — anticipated customer questions + internal stakeholder
26
- questions + teardown-worthy concerns. Forces early clarity.
27
- - **Working backward** — define customer experience first, then
28
- derive requirements, then design.
29
-
30
- ## Sources
31
-
32
- - Jeff Bezos 2015 shareholder letter (references the practice)
33
- - *Working Backwards* — Bryar, Carr (2021) — primary text on PR/FAQ practice
34
- - *The Amazon Way* — Rossman (2014)
@@ -1,121 +0,0 @@
1
- ---
2
- tier: lite
3
- name: Ash Maurya
4
- slug: ash-maurya
5
- claimed_by: [product-manager, shaper]
6
- referenced_by_skills: [lean-canvas, canvas, value-prop, value-prop-canvas]
7
- primary_domain: product
8
- depth: full
9
- sources:
10
- - type: book
11
- title: "Running Lean: Iterate from Plan A to a Plan That Works (3rd edition)"
12
- authors: ["Ash Maurya"]
13
- year: 2022
14
- url: "https://www.oreilly.com/library/view/running-lean-3rd/9781098108762/"
15
- isbn: "9781098108779"
16
- methodology_covered:
17
- - "Lean Canvas — nine-box business model adapted from Business Model Canvas for early-stage startups"
18
- - "Problem-Solution Fit + Product-Market Fit progression"
19
- - "Continuous innovation framework — experiment + measure + learn cycles"
20
- - "Customer Factory + customer-development discipline"
21
- - type: book
22
- title: "Scaling Lean: Mastering the Key Metrics for Startup Growth"
23
- authors: ["Ash Maurya"]
24
- year: 2016
25
- url: "https://www.penguinrandomhouse.com/books/541557/scaling-lean-by-ash-maurya/"
26
- isbn: "9781591847267"
27
- methodology_covered:
28
- - "Customer Factory metrics framework — Acquisition + Activation + Retention + Revenue + Referral"
29
- - "Modeling business as a system of metrics; identifying the bottleneck stage"
30
- - "Scaling discipline distinct from initial-product-market-fit discipline"
31
- - type: blog_post
32
- title: "Leanstack — Ash Maurya methodology site"
33
- authors: ["Ash Maurya"]
34
- year: 2025
35
- url: "https://www.leanfoundry.com/"
36
- methodology_covered:
37
- - "Primary venue for Lean Canvas + Running Lean methodology updates"
38
- - "Continuous Innovation Framework deeper articulation"
39
- verification_status: verified
40
- description: "\"Document your Plan A, then identify the riskiest parts of your plan, and systematically test your plan.\""
41
- ---
42
-
43
- # Ash Maurya
44
-
45
- ## Signature
46
-
47
- *"Document your Plan A, then identify the riskiest parts of your plan, and systematically test your plan."*
48
-
49
- The lean-shaping luminary for early-stage business model validation. Author of *Running Lean* and *Scaling Lean*. Creator of the **Lean Canvas** — a 9-box adaptation of Osterwalder's Business Model Canvas, optimized for entrepreneurs working under high uncertainty.
50
-
51
- Lean Canvas asks "does the business model hold together at all" before the product team asks "what should we build." Dunford's positioning answers a different question (who is this for and why is it different); Pichler's product canvas answers another (what is the product shape). The three compose; they do not substitute for each other.
52
-
53
- ## Sources
54
-
55
- - *Running Lean* — 1st edition 2010, 2nd edition 2012, 3rd edition 2022. The bassclef Lean Canvas reference.
56
- - *Scaling Lean* (2016) — Maurya's later work on growth metrics + Customer Factory model
57
- - [leanstack.com](https://leanstack.com) — Maurya's company; templates + courses
58
- - [practicetrumpstheory.com](https://blog.leanstack.com) — Maurya's blog; "What is the Right Fill Order for the Lean Canvas?" is the load-bearing piece for `/lean-canvas`
59
- - `.claude/skills/lean-canvas/SKILL.md` — operationalizes Maurya's framework into agent dispatch
60
- - `.claude/skills/canvas/SKILL.md` — sibling product canvas (Pichler); composes downstream after Lean Canvas validates the business model
61
- - `.claude/luminaries/lean-product-canvas.md` — Dan Olsen's Product-Market Fit Pyramid; complementary, not duplicate
62
-
63
- ## Core methods
64
-
65
- - **Lean Canvas — 9 boxes on one page.** Problem → Customer Segments → Unique Value Proposition → Solution → Channels → Revenue Streams → Cost Structure → Key Metrics → Unfair Advantage. Forces concise articulation; 20-minute first pass.
66
- - **Plan A vs Plan B.** Lean Canvas captures Plan A — the current best guess. Riskiest assumptions get tested; Plan A becomes Plan B when reality refuses to match. Iteration is the design, not failure.
67
- - **Riskiest-assumption-first validation.** Each box contains beliefs. Beliefs classify as leap-of-faith / anecdotal observation / fact-with-evidence. The riskiest leap-of-faith is the next thing to validate — not the next thing to build.
68
- - **Desirability → Viability → Feasibility.** When validating an idea (not generating one), test Problem + Customer Segments + UVP first (desirability), Channels + Revenue + Key Metrics second (viability), Solution + Cost + Unfair Advantage third (feasibility). Starting with Solution creates Innovator's Bias — you write Problem statements that justify the Solution you already wanted.
69
- - **Customer Factory model** (from *Scaling Lean*). Treat the business as a factory that converts strangers into customers. Acquisition → Activation → Retention → Revenue → Referral (AARRR, attributed to Dave McClure, adopted by Maurya). Key Metrics box maps to factory stages.
70
- - **20-minute snapshot rule.** First pass takes 20 minutes. Boxes can be blank. Iterate every week or after every meaningful customer conversation. The canvas is a thinking tool, not a deliverable.
71
-
72
- ## INSTEAD-block discipline
73
-
74
- Every "Don't" in lean validation gets a concrete substitute. Per `.claude/rules/context-engineering.md`.
75
-
76
- | Anti-pattern | INSTEAD |
77
- |---|---|
78
- | Spending months writing a business plan | Spend 20 minutes filling a Lean Canvas; refine weekly |
79
- | "We have no competitors" in Unfair Advantage | Name the closest existing alternative (in-house build, manual workaround, adjacent tool); your unfair advantage is what makes you sticky once they switch |
80
- | Solving the wrong problem because Solution came first | Start with Problem + Customer Segments; if you must start with Solution, flag the Innovator's Bias risk and revisit Problem critically after first pass |
81
- | Vanity metrics (registered users, page views) in Key Metrics | Customer Factory stage rates (activation rate, retention curve, referral coefficient). Each metric maps to a factory transition. |
82
- | Generic UVP ("the best X for Y") | One specific sentence a target customer would forward to a peer. If the target customer wouldn't share it, the UVP isn't done. |
83
- | Building before validating riskiest assumption | Identify the riskiest leap-of-faith; design the smallest experiment that resolves it; run it before building. |
84
- | Treating the canvas as a deliverable | Treat it as a thinking surface. Update it after every customer conversation. Old canvases are historical record, not failure. |
85
-
86
- ## When to channel
87
-
88
- - `/lean-canvas` invocations (any mode) — Maurya's 9-box framework IS the skill's structural backbone
89
- - `/canvas` Stage 1 (Thesis) — if the business model is unclear, run Lean Canvas first; Pichler's product canvas inherits validated assumptions
90
- - `/value-prop` invocations — UVP box of Lean Canvas is the input to Dunford's positioning framework
91
- - `/value-prop-canvas` — Strategyzer Value Proposition Canvas is the Lean Canvas Problem + UVP + Customer Segments boxes expanded; compose Lean Canvas first for business model fit, VPC second for product-market fit
92
- - Iteration shaping — when a bet's scope feels uncertain, the riskiest-assumption-first lens cuts to the actual validation work
93
-
94
- ## Composition pairs
95
-
96
- - **Maurya + Dunford** — Lean Canvas validates the business model; Dunford's positioning sharpens the UVP box into a market-ready claim. Maurya answers "does it hold together"; Dunford answers "how do we say it."
97
- - **Maurya + Pichler (lean-product-canvas)** — Maurya validates the business model first; Olsen's Product-Market Fit Pyramid then guides product detail (target customer → needs → value prop → feature set → UX). Different focal lengths.
98
- - **Maurya + Osterwalder (Strategyzer)** — Strategyzer's Business Model Canvas is upstream of Lean Canvas; Maurya adapted it for early-stage uncertainty. For mature businesses, Strategyzer; for new bets, Maurya.
99
-
100
- ## Distinct from
101
-
102
- - **Dunford** — positioning, not business model. Once the business model holds together, Dunford makes the message sharp.
103
- - **Olsen (lean-product-canvas)** — Product-Market Fit Pyramid, not business model. Once the business model holds, Olsen guides product shape.
104
- - **Pichler (canvas)** — product canvas (Vision → Target → Stand-Out → Big Picture → Critical Questions). Product-detail-level; assumes the business model already holds.
105
- - **Cockburn** — use cases at the system level; not strategy-level. Different altitude.
106
-
107
- ## Why this luminary exists in the catalog
108
-
109
- Three product-strategy luminaries were already in bassclef's catalog:
110
-
111
- - April Dunford — positioning (the message)
112
- - Dan Olsen (lean-product-canvas) — Product-Market Fit Pyramid (the product detail)
113
- - Roman Pichler (canvas) — product canvas (the product vision)
114
-
115
- None of them answers the upstream question: **does the business model hold together at all?** Maurya's Lean Canvas is the missing piece. For bassclef's growth-loop strategy specifically, the "Revenue Streams" + "Key Metrics" boxes need to be reframed for audience/credibility accrual rather than dollar revenue — Maurya's framework accepts this reframing because the underlying question (which assumptions are riskiest) is general.
116
-
117
- INSTEAD of "build the product, hope the business model emerges," Maurya's discipline forces explicit business-model articulation upfront — and explicit identification of the riskiest assumption that needs testing before more building.
118
-
119
- ## Closes
120
-
121
- Backs the new `/lean-canvas` skill (filed 2026-05-25). Corrects the prior gap where the catalog had Olsen for Product-Market Fit Pyramid but no luminary for Lean Canvas itself.