@thebassclef/lite 0.0.1 → 0.1.2

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 (289) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +85 -4
  3. package/dist/cli.cjs +1612 -0
  4. package/dist/cli.js +1589 -0
  5. package/dist/index.cjs +4 -0
  6. package/dist/index.d.ts +2 -0
  7. package/dist/index.js +4 -0
  8. package/package.json +51 -3
  9. package/substrate/.bassclef/lite-manifest.json +2701 -0
  10. package/substrate/.claude/agents/architect.md +70 -0
  11. package/substrate/.claude/agents/builder.md +114 -0
  12. package/substrate/.claude/agents/designer.md +156 -0
  13. package/substrate/.claude/agents/reviewer.md +88 -0
  14. package/substrate/.claude/hooks/artifact-ingestion-gate.sh +357 -0
  15. package/substrate/.claude/hooks/assert-verify-steering.sh +77 -0
  16. package/substrate/.claude/hooks/bassclef-source-config-validate.sh +215 -0
  17. package/substrate/.claude/hooks/bassclef-sync.sh +634 -0
  18. package/substrate/.claude/hooks/compound-noun-scrub.sh +292 -0
  19. package/substrate/.claude/hooks/kiss-expansion-inject.sh +69 -0
  20. package/substrate/.claude/hooks/longrun-prep-compounding-axis-check.sh +492 -0
  21. package/substrate/.claude/hooks/longrun-prep-compounding-sequence-check.sh +492 -0
  22. package/substrate/.claude/hooks/plain-english-steering.sh +156 -0
  23. package/substrate/.claude/hooks/post-skill-friction-check.sh +177 -0
  24. package/substrate/.claude/hooks/post-skill-telemetry.sh +62 -0
  25. package/substrate/.claude/hooks/pre-build-gate.sh +511 -0
  26. package/substrate/.claude/hooks/pre-commit-gate.sh +451 -0
  27. package/substrate/.claude/hooks/session-end.sh +433 -0
  28. package/substrate/.claude/hooks/session-reflection.sh +303 -0
  29. package/substrate/.claude/hooks/skill-body-grade-gate.sh +219 -0
  30. package/substrate/.claude/hooks/skill-body-intent-drift.sh +107 -0
  31. package/substrate/.claude/hooks/skill-step-list-check.sh +171 -0
  32. package/substrate/.claude/hooks/state-validate.sh +271 -0
  33. package/substrate/.claude/hooks/substrate-clarity-gate.sh +1110 -0
  34. package/substrate/.claude/hooks/temperance-gate.sh +147 -0
  35. package/substrate/.claude/hooks/testing-tier-enforce.sh +233 -0
  36. package/substrate/.claude/hooks/turn-prose-grade-measure.sh +219 -0
  37. package/substrate/.claude/hooks/turn-prose-kiss-check.sh +463 -0
  38. package/substrate/.claude/hooks/vocabulary-migration-check.sh +171 -0
  39. package/substrate/.claude/hooks/whereami-utc-gate.sh +142 -0
  40. package/substrate/.claude/luminaries/alan-cooper.md +170 -0
  41. package/substrate/.claude/luminaries/alistair-cockburn.md +140 -0
  42. package/substrate/.claude/luminaries/amazon-pr-faq.md +34 -0
  43. package/substrate/.claude/luminaries/ash-maurya.md +121 -0
  44. package/substrate/.claude/luminaries/bill-buxton.md +210 -0
  45. package/substrate/.claude/luminaries/charles-sanders-peirce.md +150 -0
  46. package/substrate/.claude/luminaries/david-ogilvy.md +192 -0
  47. package/substrate/.claude/luminaries/don-norman.md +173 -0
  48. package/substrate/.claude/luminaries/edward-tufte.md +179 -0
  49. package/substrate/.claude/luminaries/eric-evans.md +160 -0
  50. package/substrate/.claude/luminaries/frederick-brooks.md +50 -0
  51. package/substrate/.claude/luminaries/gang-of-four.md +157 -0
  52. package/substrate/.claude/luminaries/glenford-myers.md +230 -0
  53. package/substrate/.claude/luminaries/hunt-thomas.md +115 -0
  54. package/substrate/.claude/luminaries/hyrum-wright.md +94 -0
  55. package/substrate/.claude/luminaries/jason-fried-dhh.md +46 -0
  56. package/substrate/.claude/luminaries/jesse-james-garrett.md +154 -0
  57. package/substrate/.claude/luminaries/john-ousterhout.md +94 -0
  58. package/substrate/.claude/luminaries/karl-popper.md +132 -0
  59. package/substrate/.claude/luminaries/kent-beck.md +168 -0
  60. package/substrate/.claude/luminaries/linus-torvalds.md +218 -0
  61. package/substrate/.claude/luminaries/martin-fowler.md +164 -0
  62. package/substrate/.claude/luminaries/michael-feathers.md +125 -0
  63. package/substrate/.claude/luminaries/michael-nygard.md +118 -0
  64. package/substrate/.claude/luminaries/robert-c-martin.md +164 -0
  65. package/substrate/.claude/luminaries/saltzer-schroeder.md +194 -0
  66. package/substrate/.claude/luminaries/sophia-prater.md +193 -0
  67. package/substrate/.claude/luminaries/stephen-toulmin.md +131 -0
  68. package/substrate/.claude/luminaries/tony-hoare.md +170 -0
  69. package/substrate/.claude/luminaries/vaughn-vernon.md +50 -0
  70. package/substrate/.claude/luminaries/w-edwards-deming.md +158 -0
  71. package/substrate/.claude/rules/accessor-library-discipline.md +138 -0
  72. package/substrate/.claude/rules/adr-discipline.md +120 -0
  73. package/substrate/.claude/rules/api-conventions.md +125 -0
  74. package/substrate/.claude/rules/artifact-ingestion.md +179 -0
  75. package/substrate/.claude/rules/assert-only-after-verify.md +137 -0
  76. package/substrate/.claude/rules/blocked-items.md +146 -0
  77. package/substrate/.claude/rules/bootstrap-pair-discipline.md +141 -0
  78. package/substrate/.claude/rules/branching.md +28 -0
  79. package/substrate/.claude/rules/cold-adopter-harness-discipline.md +129 -0
  80. package/substrate/.claude/rules/commit-conventions.md +22 -0
  81. package/substrate/.claude/rules/compounding-axis-fresh-analysis.md +188 -0
  82. package/substrate/.claude/rules/compounding-sequence-fresh-analysis.md +188 -0
  83. package/substrate/.claude/rules/context-engineering.md +202 -0
  84. package/substrate/.claude/rules/context-management.md +85 -0
  85. package/substrate/.claude/rules/defensive-bash.md +68 -0
  86. package/substrate/.claude/rules/deferred-actions.md +233 -0
  87. package/substrate/.claude/rules/destructive-operations.md +69 -0
  88. package/substrate/.claude/rules/diagnosis.md +38 -0
  89. package/substrate/.claude/rules/github-issue-flash-tweet.md +156 -0
  90. package/substrate/.claude/rules/guardrails.md +73 -0
  91. package/substrate/.claude/rules/hook-wire-on-author.md +103 -0
  92. package/substrate/.claude/rules/identifier-leak-prevention.md +104 -0
  93. package/substrate/.claude/rules/iteration-bet-brief-completeness.md +54 -0
  94. package/substrate/.claude/rules/lite-manifest-schema-change-discipline.md +98 -0
  95. package/substrate/.claude/rules/longrun-prep-plan-doc-compression.md +89 -0
  96. package/substrate/.claude/rules/loop-discipline.md +81 -0
  97. package/substrate/.claude/rules/manual-prod-approval.md +100 -0
  98. package/substrate/.claude/rules/marker-enrichment-discipline.md +99 -0
  99. package/substrate/.claude/rules/mobile-ephemeral-session.md +109 -0
  100. package/substrate/.claude/rules/new-dependency-check.md +51 -0
  101. package/substrate/.claude/rules/oo-ad-entry-point.md +117 -0
  102. package/substrate/.claude/rules/operator-facing-prose.md +196 -0
  103. package/substrate/.claude/rules/option-label-discipline.md +108 -0
  104. package/substrate/.claude/rules/pattern-annotation.md +100 -0
  105. package/substrate/.claude/rules/plain-english-discipline.md +156 -0
  106. package/substrate/.claude/rules/plan-enumeration-needs-value-props.md +211 -0
  107. package/substrate/.claude/rules/pr-body-shape.md +317 -0
  108. package/substrate/.claude/rules/pr-strategy.md +167 -0
  109. package/substrate/.claude/rules/pr-title-shape.md +161 -0
  110. package/substrate/.claude/rules/prototype-workflow.md +65 -0
  111. package/substrate/.claude/rules/reserved-skill-names.md +123 -0
  112. package/substrate/.claude/rules/schema-management.md +49 -0
  113. package/substrate/.claude/rules/sdlc-gates.md +149 -0
  114. package/substrate/.claude/rules/security.md +37 -0
  115. package/substrate/.claude/rules/session-artifacts.md +236 -0
  116. package/substrate/.claude/rules/skill-composition-declarations.md +124 -0
  117. package/substrate/.claude/rules/skill-description-clarity.md +247 -0
  118. package/substrate/.claude/rules/skill-procedure-step-list.md +137 -0
  119. package/substrate/.claude/rules/state-schema-validation.md +162 -0
  120. package/substrate/.claude/rules/stuck-signal-diagnostic.md +140 -0
  121. package/substrate/.claude/rules/substrate-config-schema.md +98 -0
  122. package/substrate/.claude/rules/test-list-discipline.md +175 -0
  123. package/substrate/.claude/rules/test-sufficiency.md +210 -0
  124. package/substrate/.claude/rules/testing-tier-config.md +145 -0
  125. package/substrate/.claude/rules/testing.md +38 -0
  126. package/substrate/.claude/rules/turn-estimate-grounding.md +134 -0
  127. package/substrate/.claude/rules/visual-hierarchy.md +437 -0
  128. package/substrate/.claude/rules/we-dont-break-adopters.md +126 -0
  129. package/substrate/.claude/rules/whereami-load-bearing.md +202 -0
  130. package/substrate/.claude/rules/writing-craft-discipline.md +92 -0
  131. package/substrate/.claude/rules/wu-sequencing-compounds.md +145 -0
  132. package/substrate/.claude/skills/build/SKILL.md +640 -0
  133. package/substrate/.claude/skills/chronicle/SKILL.md +55 -0
  134. package/substrate/.claude/skills/clean-artifacts/SKILL.md +249 -0
  135. package/substrate/.claude/skills/decompose/SKILL.md +280 -0
  136. package/substrate/.claude/skills/diagnose/SKILL.md +297 -0
  137. package/substrate/.claude/skills/feynman/SKILL.md +90 -0
  138. package/substrate/.claude/skills/howdoi/SKILL.md +105 -0
  139. package/substrate/.claude/skills/ia-model/SKILL.md +108 -0
  140. package/substrate/.claude/skills/interaction-design/SKILL.md +112 -0
  141. package/substrate/.claude/skills/interpret-input/SKILL.md +180 -0
  142. package/substrate/.claude/skills/journal/SKILL.md +209 -0
  143. package/substrate/.claude/skills/kiss/SKILL.md +449 -0
  144. package/substrate/.claude/skills/launch/SKILL.md +915 -0
  145. package/substrate/.claude/skills/lean-canvas/SKILL.md +332 -0
  146. package/substrate/.claude/skills/longrun/SKILL.md +463 -0
  147. package/substrate/.claude/skills/luminary/SKILL.md +481 -0
  148. package/substrate/.claude/skills/ogilvy-writing-audit/SKILL.md +177 -0
  149. package/substrate/.claude/skills/onboard-repo/SKILL.md +1624 -0
  150. package/substrate/.claude/skills/pattern-review/SKILL.md +99 -0
  151. package/substrate/.claude/skills/personas/SKILL.md +207 -0
  152. package/substrate/.claude/skills/promote/SKILL.md +283 -0
  153. package/substrate/.claude/skills/requirement/SKILL.md +98 -0
  154. package/substrate/.claude/skills/retro/SKILL.md +117 -0
  155. package/substrate/.claude/skills/riff/SKILL.md +114 -0
  156. package/substrate/.claude/skills/roadmap-reconcile/SKILL.md +163 -0
  157. package/substrate/.claude/skills/session-end/SKILL.md +309 -0
  158. package/substrate/.claude/skills/session-log/SKILL.md +299 -0
  159. package/substrate/.claude/skills/skills/SKILL.md +228 -0
  160. package/substrate/.claude/skills/spec/SKILL.md +105 -0
  161. package/substrate/.claude/skills/sprint/SKILL.md +392 -0
  162. package/substrate/.claude/skills/stage/SKILL.md +384 -0
  163. package/substrate/.claude/skills/state-a-problem/SKILL.md +185 -0
  164. package/substrate/.claude/skills/temperance/SKILL.md +108 -0
  165. package/substrate/.claude/skills/use-case/SKILL.md +417 -0
  166. package/substrate/.claude/skills/user-stories/SKILL.md +268 -0
  167. package/substrate/.claude/skills/value-prop/SKILL.md +251 -0
  168. package/substrate/.claude/skills/verify/SKILL.md +160 -0
  169. package/substrate/.claude/skills/visual-review/SKILL.md +503 -0
  170. package/substrate/.claude/skills/whats-the-plan/SKILL.md +202 -0
  171. package/substrate/.claude/skills/whereami/SKILL.md +307 -0
  172. package/substrate/AGENTS.md +79 -0
  173. package/substrate/CLAUDE-lite.md +85 -0
  174. package/substrate/CODE_OF_CONDUCT.md +28 -0
  175. package/substrate/CONTRIBUTING.md +177 -0
  176. package/substrate/README.md +173 -0
  177. package/substrate/SECURITY.md +19 -0
  178. package/substrate/architecture/decisions/ADR-029-release-pipeline.md +79 -0
  179. package/substrate/architecture/decisions/ADR-031-non-breaking-changes-adopter-discipline.md +139 -0
  180. package/substrate/architecture/decisions/ADR-032-adopter-sync-dispatcher-architecture.md +192 -0
  181. package/substrate/architecture/decisions/ADR-039-release-tagging-scheme.md +145 -0
  182. package/substrate/architecture/decisions/ADR-040-planning-skill-vocabulary-and-lite-profile.md +155 -0
  183. package/substrate/architecture/decisions/ADR-044-unified-skill-body-template.md +162 -0
  184. package/substrate/lib/clean-artifacts-sweep.sh +112 -0
  185. package/substrate/lib/code-comment-discipline.sh +144 -0
  186. package/substrate/lib/composer-preflight.sh +459 -0
  187. package/substrate/lib/hook-inject.sh +255 -0
  188. package/substrate/lib/luminary-pick.sh +96 -0
  189. package/substrate/lib/output-discipline.sh +143 -0
  190. package/substrate/lib/prose-scan-boundary.sh +171 -0
  191. package/substrate/lib/rewrite-check.sh +214 -0
  192. package/substrate/lib/state.sh +1372 -0
  193. package/substrate/lib/telemetry.sh +205 -0
  194. package/substrate/lib/tier-check.sh +187 -0
  195. package/substrate/lib/tier-dependency-audit.sh +1088 -0
  196. package/substrate/presence/install/bassclef-hook-connect.sh +178 -0
  197. package/substrate/presence/install/bassclef-sync.dispatcher.template.sh +841 -0
  198. package/substrate/presence/install/bassclef-sync.template.sh +2076 -0
  199. package/substrate/presence/install/schedule-auto-save.cron.sh +88 -0
  200. package/substrate/presence/install/schedule-auto-save.taskscheduler.md +122 -0
  201. package/substrate/scripts/aggregate-telemetry.sh +217 -0
  202. package/substrate/scripts/analyze-tier-dependencies.sh +239 -0
  203. package/substrate/scripts/generate-lite-manifest.sh +505 -0
  204. package/substrate/scripts/generate-tier-manifest.sh +28 -0
  205. package/substrate/scripts/intent-drift-check.sh +456 -0
  206. package/substrate/scripts/lite-manifest-drift-check.sh +146 -0
  207. package/substrate/scripts/render-lite-manifest-doc.sh +150 -0
  208. package/substrate/standards/adr-template.md +86 -0
  209. package/substrate/standards/api-conventions/nextjs.md +84 -0
  210. package/substrate/standards/artifact-composition.md +209 -0
  211. package/substrate/standards/bash-hook-safety.md +246 -0
  212. package/substrate/standards/bassclef-configs-schema.md +232 -0
  213. package/substrate/standards/bassclef-evolution.md +143 -0
  214. package/substrate/standards/bassclef-internal-jargon.md +244 -0
  215. package/substrate/standards/bassclef-managed-sentinel.md +96 -0
  216. package/substrate/standards/bassclef-source-config.md +228 -0
  217. package/substrate/standards/branch-stacking.md +408 -0
  218. package/substrate/standards/code-safety-principles.md +176 -0
  219. package/substrate/standards/composer-prerequisites.md +155 -0
  220. package/substrate/standards/deferred-actions-schema.md +204 -0
  221. package/substrate/standards/dependency-discipline/cargo.md +39 -0
  222. package/substrate/standards/dependency-discipline/gem.md +43 -0
  223. package/substrate/standards/dependency-discipline/go-mod.md +41 -0
  224. package/substrate/standards/dependency-discipline/npm.md +42 -0
  225. package/substrate/standards/dependency-discipline/pip.md +42 -0
  226. package/substrate/standards/deployment-topology/ec2-tailscale.md +225 -0
  227. package/substrate/standards/deployment-topology.md +69 -0
  228. package/substrate/standards/docs-sync-allowlist.md +76 -0
  229. package/substrate/standards/domain-and-dns.md +145 -0
  230. package/substrate/standards/frontend-stack.md +67 -0
  231. package/substrate/standards/frontmatter-schema.md +154 -0
  232. package/substrate/standards/graceful-exit.md +227 -0
  233. package/substrate/standards/hook-idempotency.md +102 -0
  234. package/substrate/standards/hook-injection-discipline.md +202 -0
  235. package/substrate/standards/hook-install-class.md +215 -0
  236. package/substrate/standards/input-handler-interface.md +152 -0
  237. package/substrate/standards/lite-manifest-schema-changes.md +135 -0
  238. package/substrate/standards/luminary-matching.md +105 -0
  239. package/substrate/standards/luminary-problem-patterns.md +481 -0
  240. package/substrate/standards/migration-discipline/active-record.md +50 -0
  241. package/substrate/standards/migration-discipline/alembic.md +43 -0
  242. package/substrate/standards/migration-discipline/gorm.md +50 -0
  243. package/substrate/standards/migration-discipline/prisma.md +53 -0
  244. package/substrate/standards/migration-discipline/sqlalchemy.md +51 -0
  245. package/substrate/standards/mobile-ephemeral-session.md +167 -0
  246. package/substrate/standards/model-routing-discipline.md +160 -0
  247. package/substrate/standards/ogilvy-writing-rules.md +225 -0
  248. package/substrate/standards/opener-discipline.md +96 -0
  249. package/substrate/standards/operator-facing-prose-discipline.md +201 -0
  250. package/substrate/standards/persona-schema.md +229 -0
  251. package/substrate/standards/pluggable-luminaries.md +323 -0
  252. package/substrate/standards/pr-body-discipline.md +115 -0
  253. package/substrate/standards/preview-state-schema.md +189 -0
  254. package/substrate/standards/project-directory-layout.md +276 -0
  255. package/substrate/standards/release-tagging.md +137 -0
  256. package/substrate/standards/reserved-skill-names.md +120 -0
  257. package/substrate/standards/scannable-multi-option-output.md +261 -0
  258. package/substrate/standards/sdlc-compliance.md +286 -0
  259. package/substrate/standards/sdlc-gates/typescript.md +57 -0
  260. package/substrate/standards/secrets-lifecycle.md +210 -0
  261. package/substrate/standards/security-scanner-adapter.md +145 -0
  262. package/substrate/standards/session-board.md +256 -0
  263. package/substrate/standards/skill-output-discipline.md +90 -0
  264. package/substrate/standards/state-spine-contract.md +255 -0
  265. package/substrate/standards/state-spine.md +511 -0
  266. package/substrate/standards/steering-hints/kiss-words.md +11 -0
  267. package/substrate/standards/substrate-config-schema.md +267 -0
  268. package/substrate/standards/tech-stack-config.md +109 -0
  269. package/substrate/standards/tier-dependency-analysis.md +167 -0
  270. package/substrate/standards/tier-runtime-deps/lite.md +57 -0
  271. package/substrate/standards/tier-tag-schema.md +155 -0
  272. package/substrate/standards/two-layer-config.md +99 -0
  273. package/substrate/standards/use-case-format.md +292 -0
  274. package/substrate/standards/user-story-invest.md +268 -0
  275. package/substrate/standards/velocity-and-appetite.md +229 -0
  276. package/substrate/standards/voice-input-pattern.md +119 -0
  277. package/substrate/standards/whereami-schema.md +301 -0
  278. package/substrate/standards/worktree-management.md +211 -0
  279. package/substrate/standards/writing-guide.md +213 -0
  280. package/substrate/templates/chronicle-template.md +75 -0
  281. package/substrate/templates/deferred-action-template.md +45 -0
  282. package/substrate/templates/memory-proposal-template.md +77 -0
  283. package/substrate/templates/persona-template.md +200 -0
  284. package/substrate/templates/pr-faq.md +45 -0
  285. package/substrate/templates/secret-rotation-template.md +162 -0
  286. package/substrate/templates/spec-template.md +131 -0
  287. package/substrate/templates/use-case-template.md +194 -0
  288. package/substrate/templates/user-story-template.md +107 -0
  289. package/substrate/templates/whereami-template.md +101 -0
@@ -0,0 +1,96 @@
1
+ ---
2
+ tier: lite
3
+ description: Every planning-surface opener carries three blocks in this order — Problem, Value prop, Evidence.
4
+ ---
5
+
6
+ # Opener discipline — Problem + Value prop + Evidence
7
+
8
+ Every planning-surface opener carries three blocks in this order — Problem, Value prop, Evidence. The reader sees the pain, then the fix, then the receipts. Same shape scales down (a short session) or up (a goal close).
9
+
10
+ ## The shape
11
+
12
+ ```
13
+ ## Problem (via /state-a-problem brief)
14
+ [≤500 chars: who was affected + what pain + when + why now + outcome sought]
15
+
16
+ ## Value prop (via /value-prop tweet)
17
+ [≤280 chars: claim + sharpener]
18
+
19
+ ## Evidence (per .claude/rules/assert-only-after-verify.md)
20
+ - Source: [file path, ticket, commit SHA — what I read inline]
21
+ - Warrant: [one sentence tying the source to the claim]
22
+ ```
23
+
24
+ Three blocks. First block frames the pain. Second block names the outcome. Third block cites what backs the claim.
25
+
26
+ ## When this discipline fires
27
+
28
+ Every planning surface where the agent addresses the operator:
29
+
30
+ - `/longrun` prep + checkpoint + closeout output
31
+ - `/sprint` opener output
32
+ - `/session-log` (formerly `/chronicle`) opener block
33
+ - `/session-end` closeout dispatch shape
34
+ - Any agent turn prose that opens with a status assertion
35
+
36
+ Pass-through cases (discipline does not fire):
37
+
38
+ - Conversational asides mid-session ("switching to main now") — no assertion carried
39
+ - Tool output relayed verbatim — the tool is the source
40
+ - Direct answers to operator questions where the answer IS the value block
41
+
42
+ ## Why three blocks
43
+
44
+ Seven luminaries converged on the shape:
45
+
46
+ - **Alan Cooper** — persona-anchored. The reader wants pain framing before solution framing.
47
+ - **Steve Krug** — don't make me think. A tweet claim alone makes the reader backfill "why should I care."
48
+ - **Stephen Toulmin** — claim + data + warrant. Three blocks carry all three.
49
+ - **Amazon PR/FAQ** — write the press release first. A press release opens with problem + value pairing, not claim + description.
50
+ - **Marty Cagan** — outcomes not output.
51
+ - **Kent Beck** — YAGNI. Three lines minimum; drop the fourth.
52
+ - **Taiichi Ohno** — 7 wastes. Prior tweet + KISS pairing overlapped semantically; consolidate.
53
+
54
+ ## What replaces the old opener
55
+
56
+ The prior shape was `/value-prop tweet` + `/kiss words` — a claim in tweet form plus a paragraph summary of the same claim. It carried the same information twice while missing pain framing and evidence citation.
57
+
58
+ The new shape retires the tweet + KISS pair at planning surfaces. Tweet mode stays as one of the `/value-prop` sizes for other uses (like a status one-liner in chat). KISS words stays as a mode of `/kiss` for prose passes. Both stop being the opener default at planning surfaces.
59
+
60
+ ## Sizing guidance
61
+
62
+ Scale the three blocks to the surface:
63
+
64
+ | Surface | Problem | Value prop | Evidence |
65
+ |---|---|---|---|
66
+ | `/sprint` opener | 1-2 sentences | 1-line tweet | 1 source + 1 warrant |
67
+ | `/longrun` prep | Full 500-char problem | Full 280-char tweet | 3-5 sources + warrants |
68
+ | `/longrun` checkpoint | 1-2 sentences | 1-line tweet | 1-2 sources + warrants |
69
+ | `/longrun` closeout | Full 500-char problem | Full 280-char tweet | Sources cited per major finding |
70
+ | `/session-log` opener | Full 500-char problem | Full 280-char tweet | Sources per section |
71
+
72
+ The reader's context governs the block size. A checkpoint mid-session needs less than a closeout at end-of-work.
73
+
74
+ ## Grace window
75
+
76
+ Old openers keep working through 2026-10-31 per ADR-031 grace window and `.claude/rules/we-dont-break-adopters.md`. Sessions from before the rewrite still open with tweet + KISS; new sessions open with the three blocks. No adopter breakage.
77
+
78
+ ## Composes with
79
+
80
+ - `.claude/rules/pr-body-shape.md` — sister discipline at PR body surface
81
+ - `.claude/rules/github-issue-flash-tweet.md` — sister discipline at GitHub issue body surface
82
+ - `.claude/rules/operator-facing-prose.md` Rule 3 — skill-dispatch citation extends to naming the standard opener
83
+ - `.claude/rules/assert-only-after-verify.md` — the argument shape the Evidence block satisfies
84
+ - `.claude/skills/state-a-problem/SKILL.md` — brief mode drafts the Problem block
85
+ - `.claude/skills/value-prop/SKILL.md` — tweet mode drafts the Value prop block
86
+ - ADR-040 Decisions 1-4 — the parent rewrite that introduced this standard
87
+
88
+ ## Refs
89
+
90
+ - bassclef-upstream#750 — the ticket that mapped this rewrite
91
+ - bassclef-upstream#1178 — the sister rewrite at PR + issue body surfaces
92
+ - bassclef-upstream#559 — R8 mechanization umbrella (assert-only-after-verify parent)
93
+
94
+ ## Retirement condition
95
+
96
+ This standard retires only if the three-block shape stops matching adopter reading behavior. The mechanical layer (hook scan for the shape) may ship as a follow-on when methodology drift is observed. Until then, this is methodology; the discipline holds at authoring time.
@@ -0,0 +1,201 @@
1
+ ---
2
+ tier: lite
3
+ description: "Universal principle: any shorthand in operator-facing prose carries a plain-language gloss at first mention per response."
4
+ ---
5
+
6
+ # Operator-facing prose discipline
7
+
8
+ Universal principle: any shorthand in operator-facing prose carries a plain-language gloss at first mention per response. When editing any SKILL.md file, apply a /kiss pass to the whole file in the same change.
9
+
10
+ This standard scales operator attention across cross-session time gaps. The operator returns to substrate after hours, days, or weeks; the decoder ring for WU-N, F-X.Y, ADR-NNN, #NNN, LF-N, B1, B2 shouldn't have to be reconstructed from memory or substrate every time.
11
+
12
+ ## Scope
13
+
14
+ Two surfaces:
15
+
16
+ 1. **All operator-facing skill output** — /sprint, /longrun, /diagnose, /autonomous, /retro, /promote, /temperance, /value-prop, /lean-canvas, /personas, /canvas, /roadmap-reconcile, /whereami, and any future skill that produces output an operator reads.
17
+ 2. **All turn-level prose between Claude Code and operator** — not just skill output. Conversational discipline applies the same gloss rule.
18
+
19
+ ## Rule 1 — Gloss at first mention per response
20
+
21
+ Any shorthand reference in operator-facing prose carries a plain-language gloss at first mention per response. Subsequent mentions in the same response don't need to re-gloss.
22
+
23
+ Format: `<shorthand> (<plain-language description>)`.
24
+
25
+ Examples:
26
+
27
+ | Shorthand | Glossed form |
28
+ |---|---|
29
+ | `WU-4` | `WU-4 (Tier 0 pitch draft using canvas UVP)` |
30
+ | `#774` | `#774 (Phase XIV rescope proposal)` |
31
+ | `F-D9.1` | `F-D9.1 (README hedges audience — audit HIGH)` |
32
+ | `ADR-021` | `ADR-021 (anchor catalog selection)` |
33
+ | `LF1` | `LF1 (Morgan-as-gatekeeper riskiest assumption)` |
34
+ | `B1` | `B1 (tier-1-proposal-shaper bet)` |
35
+ | `B2-WU1` | `B2-WU1 (README rewrite per F-D9.1)` |
36
+ | `bassclef#739` | `bassclef#739 (substrate-coherence CI)` |
37
+ | `Phase XIV` | `Phase XIV (Draw the Line — IP Guard, growth-loop rescope pending)` |
38
+
39
+ ### What this rule does NOT require
40
+
41
+ - **Re-glossing within the same response.** First mention only.
42
+ - **Glossing standard-vocabulary technical terms.** API, schema, hook, PR, commit, branch, merge — these stay as-is. See `standards/plain-english-discipline.md` "Keep standard technical vocabulary" section for the full allowlist.
43
+ - **Glossing reserved concept names from the four-name system.** `substrate`, `bassclef`, `cameo`, `Studio`, `Band`, `bandleader` are allowlisted per bassclef#763 (/kiss reserved-name allowlist). They carry meaning the operator chose deliberately; gloss would be patronizing.
44
+ - **Glossing skill names.** `/sprint`, `/longrun`, `/lean-canvas` — operator-invocable skills carry their own context via the `/` prefix.
45
+
46
+ ### When the gloss is awkward
47
+
48
+ If the gloss inflates a sentence beyond readability, restructure the sentence rather than expand inline. Example:
49
+
50
+ - Awkward: "Continue with WU-4 (Tier 0 pitch draft using canvas UVP A' selected for substrate-credibility audience + UVP D for dreamer-operator framing) after merging #773 (ADR-021 amendment for IP→growth-loop pivot)."
51
+ - Restructured: "Continue with WU-4 after merging #773. WU-4 drafts the Tier 0 pitch using canvas UVP. #773 amends ADR-021 for the growth-loop pivot."
52
+
53
+ The principle is operator readability, not mechanical glossing.
54
+
55
+ ## Rule 2 — /kiss pass when editing any SKILL.md
56
+
57
+ When touching any SKILL.md file for any reason, apply a /kiss pass to the entire file in the same change. Not a separate cycle.
58
+
59
+ Reasoning: if we're authoring an update to the skill that adds substrate discipline, the existing bassclef-internal vocabulary in that same file should be rewritten plain at the same time. Otherwise we ship discipline-as-substrate fixes that contain the very jargon the discipline catches.
60
+
61
+ ### /kiss pass mechanics
62
+
63
+ Apply the rewrite rules from `.claude/rules/plain-english-discipline.md` (the master plain-English rule). Substitution targets that recur most often in SKILL.md files:
64
+
65
+ | Phrase | Replacement |
66
+ |---|---|
67
+ | `load-bearing` | `essential` or `required` (or remove) |
68
+ | `cross-cutting` | `affects multiple boxes` or name what it crosses |
69
+ | `forcing function` | name what it forces directly |
70
+ | `operator-locked` | `decided` or `set` |
71
+ | `substrate-resident` | `in bassclef already` or `shipped` |
72
+ | `operating thesis` | `the goal.we're making` |
73
+ | `compose-with` | `uses` or `builds on` |
74
+ | `tier-preset` | `preset` or `size` |
75
+ | `operationalize` | `do` or `ship` |
76
+ | `composer (as noun)` | `runs` or `chains` or `combines` |
77
+
78
+ Allowlist per bassclef#763 holds: `substrate`, `bassclef`, `cameo`, `Studio`, `Band`, `bandleader` stay.
79
+
80
+ ### Scope of the /kiss pass
81
+
82
+ The pass covers the SKILL.md file's prose — descriptions, procedure narrative, when-to-use sections, why-this-exists sections, examples in prose form. It does NOT cover:
83
+
84
+ - Code blocks
85
+ - File path references
86
+ - Reserved skill names
87
+ - Quoted vocabulary from operator memory or chronicles
88
+
89
+ ### When the /kiss pass produces no edits
90
+
91
+ If the file is already clean, the pass produces no edits. State this explicitly in the commit message ("kiss pass: no edits — file already clean") so future readers know the discipline was applied.
92
+
93
+ ## Rule 3 — Tweets lead with the goal, not just the work done
94
+
95
+ A Tweet (≤280 chars) in a PR body, chronicle entry, or summary table tells the reader two things: what the work is FOR (the goal it serves) and what the work DID (the changes it shipped). When a Tweet captures only the second, the first rots within weeks — a future reader can't tell what problem the PR solved or why anyone cared.
96
+
97
+ Format: `<what this is for>. <what it did>.`
98
+
99
+ The goal sentence comes first. The work sentence comes second.
100
+
101
+ ### Worked example — PR #825 (bassclef#811 implementation)
102
+
103
+ The original Tweet shipped without a goal sentence:
104
+
105
+ > Per bassclef#811: sunj-labs/bassclef-upstream created; 115 files migrated (2 with git history, 113 bulk-imported); per-subdirectory symlinks set up via scripts/operator-setup.sh; adopters see only README placeholder; Rule 3 still passes; two standards docs codify the workflow.
106
+
107
+ This tells you what happened. It doesn't tell you the goal was: operator-private files now have backup and version history without leaking to people who clone the public repo.
108
+
109
+ The goal-first rewrite:
110
+
111
+ > Operator-private files now safe from disk loss and version-controlled, but still hidden from people who clone the public repo. Per bassclef#811: sunj-labs/bassclef-upstream created; 115 files migrated; symlinks via scripts/operator-setup.sh; adopters see only README placeholder.
112
+
113
+ Fits 280 chars. Names the goal first. Says what was done second.
114
+
115
+ ### What counts as a "goal"
116
+
117
+ The goal is what the operator (or adopter) gets from this work. Useful tests:
118
+
119
+ - If someone reads only the Tweet in 6 months, can they tell what problem the work solved?
120
+ - If a future contributor asks "why did we ship this?", does the Tweet answer them?
121
+ - If the work didn't ship at all, what would the operator miss?
122
+
123
+ ### Three Tweet rules together
124
+
125
+ Tweets now carry three discipline rules:
126
+
127
+ 1. **Fit in 280 chars** (per bassclef#785 — tweet-style descriptions in summary tables)
128
+ 2. **Keep scoping qualifiers** (per bassclef#805 — "deferred within Tier 1" not just "deferred")
129
+ 3. **Lead with the goal** (this rule, per bassclef#831 — what the work is FOR, then what it did)
130
+
131
+ All three rules become a single mechanical check when Rule 5 of substrate-coherence CI lands (bassclef#807).
132
+
133
+ ### What this rule does NOT require
134
+
135
+ - **Lengthening the Tweet.** Goal-first should compress, not expand. If adding a goal sentence pushes past 280 chars, compress the work sentence.
136
+ - **Restating the title.** PR titles already name the work; the Tweet's goal sentence adds the WHY the title doesn't capture.
137
+ - **Goal-first for every PR-body section.** Tweets carry the goal; deeper sections (Summary, Implementation, Test plan) can lead with mechanics.
138
+
139
+ ## Audience-vigilance scaling argument
140
+
141
+ The operator works across cross-session time gaps. A morning /sprint output that references `B1-WU4` without gloss requires the operator to either:
142
+
143
+ 1. Remember what B1-WU4 was from yesterday's session (unreliable across multi-day gaps)
144
+ 2. Read substrate (goal body + stack manifest + chronicle) to reconstruct the reference (operator-time tax)
145
+ 3. Ask the agent to expand the reference (extra turn, breaks flow)
146
+
147
+ Glossing at first mention costs the agent zero additional reasoning — the gloss is already in scope from substrate reads the agent did to produce the response. The cost-shift is from operator-time to agent-tokens. The operator-time savings compound across every reference in every operator-facing response.
148
+
149
+ The /kiss pass on SKILL.md edits closes the meta-discipline gap: if we ship substrate that says "operator-facing output should be plain" and that substrate is itself dense with bassclef-internal vocabulary, the discipline corrodes at its own source. Every SKILL.md edit is an opportunity to apply the discipline to the substrate doing the enforcing.
150
+
151
+ ## Enforcement layers
152
+
153
+ | Layer | Mechanism | Status |
154
+ |---|---|---|
155
+ | Methodology | This standard + `.claude/rules/operator-facing-prose.md` (the conversational rule) | Loaded into every session via `additionalDirectories` |
156
+ | Skill-level | Every operator-facing SKILL.md cites this standard in its rules section | Phased rollout — /longrun + /sprint + /diagnose + /autonomous land first |
157
+ | Mechanical | bassclef#739 (substrate-coherence CI) extension lints operator-facing skill output for unglossed shorthand | Deferred — methodology-first, mechanical later |
158
+ | /kiss pass on SKILL.md edits | Discipline-as-substrate per Rule 2 above | Methodology-level; substrate-clarity-gate hook (bassclef#382) already enforces at file-write boundary for jargon |
159
+
160
+ ## Methodology source
161
+
162
+ Andrej Karpathy (`andrej-karpathy` luminary entry) is the methodology source for bassclef's clarity discipline. Karpathy's CPU-and-RAM framing — LLM as stateless computation engine; context window as finite working memory — makes prose clarity an engineering constraint, not a stylistic preference.
163
+
164
+ Operator-facing prose is the context the model loads next session. Glossing shorthand at first mention, applying `/kiss` on SKILL.md edits, leading tweets with the goal — all three rules are concrete implementations of Karpathy's framing applied at the operator-facing surface. Each rule reduces context-budget waste (operator-time on the surface side, model-attention budget on the substrate side).
165
+
166
+ Downstream practitioners apply INSTEAD-block discipline and DO/DO-NOT bounding as specific patterns; this standard cites Karpathy as the methodology, not those patterns as the source. The patterns compose; the methodology grounds them.
167
+
168
+ ## Relationship to other discipline standards
169
+
170
+ - `.claude/rules/plain-english-discipline.md` — master plain-English rule. This standard extends it with the gloss rule + the /kiss-pass-on-edits meta-discipline.
171
+ - `.claude/rules/skill-description-clarity.md` — narrow case at skill description field. This standard extends to skill body prose.
172
+ - `.claude/rules/github-issue-flash-tweet.md` — flash-tweet-then-detail discipline for GitHub issue bodies. Sibling.
173
+ - `.claude/rules/context-engineering.md` — INSTEAD-block discipline for negations. Karpathy's methodology grounds the rule; INSTEAD-block is the pattern.
174
+ - `.claude/rules/visual-hierarchy.md` — formatting discipline for long agent output. Sibling.
175
+ - `.claude/luminaries/andrej-karpathy.md` — methodology source. CPU-and-RAM framing makes prose clarity a substrate constraint.
176
+
177
+ ## Override
178
+
179
+ Per `.claude/rules/plain-english-discipline.md`: `SKIP_PLAIN_ENGLISH=1 <command>` for genuine cases (quoting an exact phrase from memory or external doc). Logged via trace-helper. Use rarely.
180
+
181
+ There is no override for the /kiss pass on SKILL.md edits — that's a meta-discipline that holds without exception. If a SKILL.md edit can't carry a /kiss pass within the same change (scope is too tight, urgency is too high), the discipline is signaling that the SKILL.md needs a dedicated /kiss-pass PR. File it.
182
+
183
+ ## Surfaced in
184
+
185
+ - /sprint 2026-05-30 morning session — operator returned after overnight gap, surfaced that shorthand references in /sprint output require plain-language gloss for cross-session orientation. Pattern recurs in every operator session with a time gap from prior work.
186
+ - Same session — operator surfaced the meta-discipline: if we are already authoring SKILL.md updates for the gloss rule, the existing jargon in those files should be rewritten in the same pass.
187
+
188
+ ## Refs
189
+
190
+ - bassclef#790 — parent ticket
191
+ - bassclef#785 — tweet-style descriptions in /longrun summary tables (sibling Tweet rule — length)
192
+ - bassclef#805 — Tweet scoping-qualifier discipline (sibling Tweet rule — qualifiers)
193
+ - bassclef#831 — Tweets lead with the goal (this Rule 3 — goal-first)
194
+ - bassclef#807 — Rule 5 of substrate-coherence CI will check all three Tweet rules together
195
+ - bassclef#780 — glossary + substrate-quote discipline (session-start glossary; this standard adds at-mention gloss)
196
+ - bassclef#763 — /kiss reserved-name allowlist
197
+ - bassclef#767 — /kiss hook coverage at artifact-write surfaces
198
+ - bassclef#779 — /kiss interactive-session anchoring at turn-counter boundaries
199
+ - bassclef#786 — /kiss PR-body hook enforcement decision (sibling)
200
+ - bassclef#787 — PR-body scrub discipline (sibling)
201
+ - `.claude/rules/plain-english-discipline.md` — master plain-English rule (this standard extends)
@@ -0,0 +1,229 @@
1
+ ---
2
+ tier: lite
3
+ description: Bassclef schema for user personas in sunj-labs repos.
4
+ ---
5
+
6
+ # Persona Schema
7
+
8
+ Bassclef schema for user personas in sunj-labs repos. The contract the
9
+ `/personas` skill reads and every downstream consumer (`/value-prop-canvas`,
10
+ `/synthetic-user`, `/risk-test-synthetic`, `/user-stories`, `/jtbd-tasks`,
11
+ `/spec`, `/prototype-variants`) composes against.
12
+
13
+ Template: `templates/persona-template.md`.
14
+ Skill: `.claude/skills/personas/SKILL.md`.
15
+
16
+ ## Why this standard exists
17
+
18
+ Before this schema, persona shape was implicit and scattered:
19
+
20
+ - `.claude/skills/jtbd-tasks/SKILL.md` Step 0 defined a "minimum viable
21
+ persona" with 5 fields (Age, Role, Device, Goal, Jargon comfort)
22
+ - `.claude/skills/synthetic-user/SKILL.md` read personas from
23
+ `docs/design/personas/` with no schema validation
24
+ - sunj-labs/quorum invented its own richer shape (Pichler + evidence-
25
+ traceability) for psychographic-mining output — not reflected anywhere
26
+ in bassclef
27
+
28
+ Three consumers, three schemas, zero validation. Adding `/value-prop-canvas`
29
+ and `/risk-test-synthetic` without standardizing would have made four.
30
+
31
+ This standard consolidates around Pichler's template shape, adds evidence-
32
+ traceability as a distinguishing rule, and preserves both prior path
33
+ conventions for backward compat.
34
+
35
+ ## File convention
36
+
37
+ ### Preferred path
38
+
39
+ `docs/personas/{slug}.md` — one file per persona.
40
+
41
+ Filename basename MUST match the `slug` field in the file's body. The
42
+ slug is URL-safe: lowercase, hyphens, no spaces.
43
+
44
+ ### Legacy path (accepted)
45
+
46
+ `docs/design/personas/{slug}.md` — read by `/jtbd-tasks` and `/synthetic-user`
47
+ before this standard existed. Still valid. Consumers read both paths,
48
+ preferring `docs/personas/` when both exist.
49
+
50
+ New repos SHOULD use `docs/personas/`. Existing repos MAY migrate or
51
+ leave legacy files in place; consolidating bet may follow.
52
+
53
+ ## Required fields
54
+
55
+ Every persona file MUST have:
56
+
57
+ | Field | Shape | Example |
58
+ |-------|-------|---------|
59
+ | `slug` | URL-safe identifier, matches filename | `couple-founders` |
60
+ | `name` | Human-readable display name (H1 satisfies) | `Couple Founders` |
61
+
62
+ Absent any required field → `/personas validate` reports FAIL. Downstream
63
+ skills SHOULD refuse to operate on invalid personas.
64
+
65
+ The required set is intentionally minimal. `slug` + `name` is enough to
66
+ reference a persona unambiguously; everything else is quality-of-output
67
+ for downstream skills, not a load-bearing contract at the identity level.
68
+
69
+ ## Recommended fields (Pichler shape + outcome framing)
70
+
71
+ High-value personas carry the full Pichler template plus an explicit
72
+ goal line:
73
+
74
+ | Field | Purpose |
75
+ |-------|---------|
76
+ | `goal` | One-line "what this persona is trying to accomplish" — verb-first, outcome-oriented |
77
+ | `tasks` | Recurring tasks in pursuit of the goal |
78
+ | `approach` | How they go about it (habits, tools, rhythm) |
79
+ | `context` | Life / business / organizational grounding |
80
+ | `knowledge` | Domain expertise, jargon comfort, technical fluency |
81
+ | `biography` | Background, archetype, formative influences |
82
+
83
+ Absence produces WARN (not FAIL) in validation. A persona with only the
84
+ required fields is valid but thin — downstream skills will produce
85
+ thinner outputs against it.
86
+
87
+ **Goal inference fallback:** if a persona omits `goal` but has a
88
+ `## JTBD statements` section, `/personas validate` prints an INFER line
89
+ suggesting a goal derivable from the first JTBD. This is advisory, not
90
+ auto-applied — the operator reviews and edits the file. The rationale:
91
+ downstream skills like `/value-prop-canvas` and `/user-stories` need an
92
+ unambiguous goal, and silent inference produces inconsistent results
93
+ across consumers. Surface the gap once, let the operator resolve it, and
94
+ every downstream read is consistent.
95
+
96
+ ## Evidence-traceability rule
97
+
98
+ A persona that claims pain points, workflows, or behavior patterns MUST
99
+ cite sources. Claims without source traces are **orphan claims** and
100
+ surface as WARN in `/personas validate`.
101
+
102
+ ### Bassclef citation format
103
+
104
+ ```markdown
105
+ ### P1 — Concise pain label
106
+
107
+ [Paragraph describing the pain.]
108
+
109
+ > *Source trace: [source-N reference] — "[direct quote or close paraphrase]"*
110
+ ```
111
+
112
+ Acceptable source types:
113
+
114
+ - Repo-local research document (e.g., `docs/research/reddit-synthesis.md §3`)
115
+ - External URL (articles, interviews, public forum posts)
116
+ - Attributed interview note (`interview/YYYY-MM-DD-name.md §4`)
117
+ - Analytics dashboard reference (product metric + timeframe)
118
+
119
+ Not acceptable: "common knowledge," "I've seen this before," unattributed
120
+ assertions, operator intuition.
121
+
122
+ ### Why this rule exists
123
+
124
+ Personas without source traces fail silently. They look plausible, their
125
+ synthesized behaviors read naturally, and downstream skills (VPC,
126
+ synthetic-user) produce plausible-looking artifacts against them. The
127
+ artifacts fail on contact with actual users because the foundational
128
+ persona was a pattern-match on training priors, not evidence.
129
+
130
+ Parallel to `.claude/rules/artifact-ingestion.md`: read before you
131
+ produce. Cite before you claim.
132
+
133
+ ## Operator-default fallback
134
+
135
+ Repos without persona files are common — new repos, internal tooling,
136
+ early spikes. `/personas default` emits a minimal operator persona
137
+ derived from:
138
+
139
+ - `CLAUDE.md` (for goal / context)
140
+ - `substrate.config.md` (for agents / deploy targets)
141
+ - `docs/whereami.md` (for active iteration context)
142
+ - Git `user.email` (for slug derivation)
143
+
144
+ ### When operator-default is appropriate
145
+
146
+ - New repo; first iteration; no user research yet
147
+ - Internal tooling where the operator IS the user
148
+ - Spike / prototype sessions where user identity is deliberately deferred
149
+
150
+ ### When it's a red flag
151
+
152
+ Operator-default leaking into these situations means the product is
153
+ being validated against the operator's self-assessment, which is not
154
+ user validation:
155
+
156
+ - `/synthetic-user` running Tier 3 journeys against operator-default
157
+ - `/value-prop-canvas` built from operator-default (value prop for
158
+ "you" tells you nothing about fit for real customers)
159
+ - Iteration goal lovability/viability signals tied to operator-default
160
+
161
+ `/personas validate` surfaces these with a note:
162
+ "Only operator-default persona found; consider adding real personas
163
+ before [downstream skill]."
164
+
165
+ ## Multiple personas — no compression
166
+
167
+ If three real customer segments exist, three persona files exist. Do NOT
168
+ collapse into a "composite customer" or "typical user" — compression
169
+ loses the fit signal that `/value-prop-canvas` and `/risk-test-synthetic`
170
+ depend on.
171
+
172
+ VPC is 1:1 with persona. Risk-test matrices are persona × risk × artifact.
173
+ A single merged persona flattens the matrix.
174
+
175
+ ## Validation checklist
176
+
177
+ `/personas validate` walks every persona file under both bassclef and
178
+ legacy paths and reports:
179
+
180
+ - [ ] Required fields (slug, name) present — FAIL on absence
181
+ - [ ] Slug matches filename basename — FAIL on mismatch
182
+ - [ ] Pichler recommended fields (goal, tasks, approach, context, knowledge, biography) — WARN on absence
183
+ - If `goal` is absent but a `## JTBD statements` section exists, emit INFER line with suggested goal derived from first JTBD
184
+ - [ ] Evidence traces present for behavior/pain claims — WARN on orphans
185
+ - [ ] No duplicate slugs across files — FAIL on duplicate
186
+ - [ ] File is readable markdown (parses without error) — FAIL otherwise
187
+
188
+ Output format:
189
+
190
+ ```markdown
191
+ ## Persona validation
192
+
193
+ **Files scanned**: N in docs/personas/, M in docs/design/personas/
194
+
195
+ | File | Required | Pichler | Evidence | Slug-match | Status |
196
+ |------|----------|---------|----------|-----------|--------|
197
+ | [file] | ✅/❌ | ✅/⚠️ | ✅/⚠️ | ✅/❌ | PASS/WARN/FAIL |
198
+
199
+ **Pass**: N | **Warn**: M | **Fail**: K
200
+ ```
201
+
202
+ ## Relationship to other standards
203
+
204
+ | Standard / rule | Connection |
205
+ |-----------------|-----------|
206
+ | `.claude/rules/artifact-ingestion.md` | Evidence-traceability is artifact-ingestion applied to personas specifically |
207
+ | `standards/whereami-schema.md` | Same "schema + template + skill + rule" pattern; different domain |
208
+ | `standards/substrate-config-schema.md` | Operator-default fallback reads substrate.config fields |
209
+ | `.claude/skills/jtbd-tasks/SKILL.md` | Step 0 "minimum viable persona" is a subset view of this schema; valid but thin |
210
+ | `.claude/skills/synthetic-user/SKILL.md` | Existing consumer; reads legacy path; continues to work |
211
+
212
+ ## Future evolution
213
+
214
+ When `/psychographic-mine` (quorum #54) and `/auto-user-research`
215
+ (quorum #53) promote to bassclef, they produce files conforming to
216
+ this schema with High evidence-quality ratings by construction.
217
+
218
+ When `/jtbd-tasks` consolidates its Step 0 to delegate to `/personas
219
+ default` or `/personas get`, the "minimum viable persona" variant
220
+ becomes a template preset rather than a parallel shape.
221
+
222
+ Neither consolidation happens in this bet's scope — both deferred to
223
+ follow-up iterations so this standard ships with a stable contract
224
+ first.
225
+
226
+ ## Closes
227
+
228
+ - bassclef #200 (companion to quorum #50)
229
+ - Part of iteration `docs/iteration-bets/2026-04-19e-persona-vpc-promotions.md` Stack-1