@thebassclef/lite 0.0.1 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +85 -4
  3. package/dist/cli.cjs +1610 -0
  4. package/dist/cli.js +1587 -0
  5. package/dist/index.cjs +4 -0
  6. package/dist/index.d.ts +2 -0
  7. package/dist/index.js +4 -0
  8. package/package.json +51 -3
  9. package/substrate/.bassclef/lite-manifest.json +1794 -0
  10. package/substrate/.claude/agents/architect.md +70 -0
  11. package/substrate/.claude/agents/builder.md +114 -0
  12. package/substrate/.claude/agents/designer.md +156 -0
  13. package/substrate/.claude/agents/reviewer.md +88 -0
  14. package/substrate/.claude/hooks/artifact-ingestion-gate.sh +357 -0
  15. package/substrate/.claude/hooks/assert-verify-steering.sh +77 -0
  16. package/substrate/.claude/hooks/bassclef-source-config-validate.sh +215 -0
  17. package/substrate/.claude/hooks/bassclef-sync.sh +634 -0
  18. package/substrate/.claude/hooks/compound-noun-scrub.sh +292 -0
  19. package/substrate/.claude/hooks/kiss-expansion-inject.sh +69 -0
  20. package/substrate/.claude/hooks/plain-english-steering.sh +156 -0
  21. package/substrate/.claude/hooks/post-skill-friction-check.sh +177 -0
  22. package/substrate/.claude/hooks/post-skill-telemetry.sh +62 -0
  23. package/substrate/.claude/hooks/pre-build-gate.sh +511 -0
  24. package/substrate/.claude/hooks/pre-commit-gate.sh +452 -0
  25. package/substrate/.claude/hooks/session-end.sh +433 -0
  26. package/substrate/.claude/hooks/session-reflection.sh +303 -0
  27. package/substrate/.claude/hooks/skill-body-grade-gate.sh +219 -0
  28. package/substrate/.claude/hooks/skill-body-intent-drift.sh +107 -0
  29. package/substrate/.claude/hooks/skill-step-list-check.sh +171 -0
  30. package/substrate/.claude/hooks/state-validate.sh +271 -0
  31. package/substrate/.claude/hooks/substrate-clarity-gate.sh +1110 -0
  32. package/substrate/.claude/hooks/temperance-gate.sh +147 -0
  33. package/substrate/.claude/hooks/testing-tier-enforce.sh +233 -0
  34. package/substrate/.claude/hooks/turn-prose-grade-measure.sh +219 -0
  35. package/substrate/.claude/hooks/turn-prose-kiss-check.sh +434 -0
  36. package/substrate/.claude/hooks/vocabulary-migration-check.sh +171 -0
  37. package/substrate/.claude/hooks/whereami-utc-gate.sh +142 -0
  38. package/substrate/.claude/luminaries/alan-cooper.md +170 -0
  39. package/substrate/.claude/luminaries/alistair-cockburn.md +140 -0
  40. package/substrate/.claude/luminaries/amazon-pr-faq.md +34 -0
  41. package/substrate/.claude/luminaries/ash-maurya.md +121 -0
  42. package/substrate/.claude/luminaries/bill-buxton.md +210 -0
  43. package/substrate/.claude/luminaries/charles-sanders-peirce.md +150 -0
  44. package/substrate/.claude/luminaries/david-ogilvy.md +192 -0
  45. package/substrate/.claude/luminaries/don-norman.md +173 -0
  46. package/substrate/.claude/luminaries/edward-tufte.md +179 -0
  47. package/substrate/.claude/luminaries/eric-evans.md +160 -0
  48. package/substrate/.claude/luminaries/frederick-brooks.md +50 -0
  49. package/substrate/.claude/luminaries/gang-of-four.md +157 -0
  50. package/substrate/.claude/luminaries/jason-fried-dhh.md +46 -0
  51. package/substrate/.claude/luminaries/jesse-james-garrett.md +154 -0
  52. package/substrate/.claude/luminaries/john-ousterhout.md +94 -0
  53. package/substrate/.claude/luminaries/karl-popper.md +132 -0
  54. package/substrate/.claude/luminaries/kent-beck.md +168 -0
  55. package/substrate/.claude/luminaries/linus-torvalds.md +218 -0
  56. package/substrate/.claude/luminaries/martin-fowler.md +164 -0
  57. package/substrate/.claude/luminaries/michael-feathers.md +125 -0
  58. package/substrate/.claude/luminaries/michael-nygard.md +118 -0
  59. package/substrate/.claude/luminaries/robert-c-martin.md +164 -0
  60. package/substrate/.claude/luminaries/saltzer-schroeder.md +194 -0
  61. package/substrate/.claude/luminaries/sophia-prater.md +193 -0
  62. package/substrate/.claude/luminaries/stephen-toulmin.md +131 -0
  63. package/substrate/.claude/rules/artifact-ingestion.md +179 -0
  64. package/substrate/.claude/rules/assert-only-after-verify.md +137 -0
  65. package/substrate/.claude/rules/blocked-items.md +146 -0
  66. package/substrate/.claude/rules/branching.md +28 -0
  67. package/substrate/.claude/rules/commit-conventions.md +22 -0
  68. package/substrate/.claude/rules/context-engineering.md +202 -0
  69. package/substrate/.claude/rules/context-management.md +85 -0
  70. package/substrate/.claude/rules/destructive-operations.md +69 -0
  71. package/substrate/.claude/rules/diagnosis.md +38 -0
  72. package/substrate/.claude/rules/guardrails.md +73 -0
  73. package/substrate/.claude/rules/identifier-leak-prevention.md +104 -0
  74. package/substrate/.claude/rules/lite-manifest-schema-change-discipline.md +98 -0
  75. package/substrate/.claude/rules/oo-ad-entry-point.md +117 -0
  76. package/substrate/.claude/rules/operator-facing-prose.md +196 -0
  77. package/substrate/.claude/rules/plain-english-discipline.md +154 -0
  78. package/substrate/.claude/rules/pr-body-shape.md +317 -0
  79. package/substrate/.claude/rules/pr-strategy.md +167 -0
  80. package/substrate/.claude/rules/sdlc-gates.md +149 -0
  81. package/substrate/.claude/rules/session-artifacts.md +236 -0
  82. package/substrate/.claude/rules/state-schema-validation.md +162 -0
  83. package/substrate/.claude/rules/whereami-load-bearing.md +202 -0
  84. package/substrate/.claude/rules/writing-craft-discipline.md +92 -0
  85. package/substrate/.claude/skills/build/SKILL.md +640 -0
  86. package/substrate/.claude/skills/decompose/SKILL.md +280 -0
  87. package/substrate/.claude/skills/diagnose/SKILL.md +297 -0
  88. package/substrate/.claude/skills/howdoi/SKILL.md +105 -0
  89. package/substrate/.claude/skills/ia-model/SKILL.md +108 -0
  90. package/substrate/.claude/skills/interaction-design/SKILL.md +112 -0
  91. package/substrate/.claude/skills/interpret-input/SKILL.md +180 -0
  92. package/substrate/.claude/skills/kiss/SKILL.md +449 -0
  93. package/substrate/.claude/skills/launch/SKILL.md +924 -0
  94. package/substrate/.claude/skills/lean-canvas/SKILL.md +332 -0
  95. package/substrate/.claude/skills/longrun/SKILL.md +426 -0
  96. package/substrate/.claude/skills/luminary/SKILL.md +481 -0
  97. package/substrate/.claude/skills/ogilvy-writing-audit/SKILL.md +177 -0
  98. package/substrate/.claude/skills/onboard-repo/SKILL.md +2190 -0
  99. package/substrate/.claude/skills/pattern-review/SKILL.md +99 -0
  100. package/substrate/.claude/skills/personas/SKILL.md +207 -0
  101. package/substrate/.claude/skills/promote/SKILL.md +283 -0
  102. package/substrate/.claude/skills/requirement/SKILL.md +98 -0
  103. package/substrate/.claude/skills/retro/SKILL.md +117 -0
  104. package/substrate/.claude/skills/riff/SKILL.md +114 -0
  105. package/substrate/.claude/skills/roadmap-reconcile/SKILL.md +163 -0
  106. package/substrate/.claude/skills/session-end/SKILL.md +309 -0
  107. package/substrate/.claude/skills/session-log/SKILL.md +299 -0
  108. package/substrate/.claude/skills/skills/SKILL.md +228 -0
  109. package/substrate/.claude/skills/spec/SKILL.md +105 -0
  110. package/substrate/.claude/skills/sprint/SKILL.md +392 -0
  111. package/substrate/.claude/skills/stage/SKILL.md +384 -0
  112. package/substrate/.claude/skills/state-a-problem/SKILL.md +185 -0
  113. package/substrate/.claude/skills/temperance/SKILL.md +108 -0
  114. package/substrate/.claude/skills/use-case/SKILL.md +417 -0
  115. package/substrate/.claude/skills/user-stories/SKILL.md +268 -0
  116. package/substrate/.claude/skills/value-prop/SKILL.md +251 -0
  117. package/substrate/.claude/skills/verify/SKILL.md +160 -0
  118. package/substrate/.claude/skills/whereami/SKILL.md +307 -0
  119. package/substrate/AGENTS.md +79 -0
  120. package/substrate/CLAUDE-lite.md +85 -0
  121. package/substrate/CODE_OF_CONDUCT.md +28 -0
  122. package/substrate/CONTRIBUTING.md +177 -0
  123. package/substrate/README.md +173 -0
  124. package/substrate/SECURITY.md +19 -0
  125. package/substrate/architecture/decisions/ADR-029-release-pipeline.md +79 -0
  126. package/substrate/architecture/decisions/ADR-031-non-breaking-changes-adopter-discipline.md +139 -0
  127. package/substrate/architecture/decisions/ADR-032-adopter-sync-dispatcher-architecture.md +192 -0
  128. package/substrate/architecture/decisions/ADR-039-release-tagging-scheme.md +145 -0
  129. package/substrate/architecture/decisions/ADR-040-planning-skill-vocabulary-and-lite-profile.md +155 -0
  130. package/substrate/architecture/decisions/ADR-044-unified-skill-body-template.md +162 -0
  131. package/substrate/lib/clean-artifacts-sweep.sh +112 -0
  132. package/substrate/lib/code-comment-discipline.sh +144 -0
  133. package/substrate/lib/composer-preflight.sh +459 -0
  134. package/substrate/lib/hook-inject.sh +255 -0
  135. package/substrate/lib/luminary-pick.sh +96 -0
  136. package/substrate/lib/output-discipline.sh +143 -0
  137. package/substrate/lib/rewrite-check.sh +214 -0
  138. package/substrate/lib/state.sh +1372 -0
  139. package/substrate/lib/telemetry.sh +205 -0
  140. package/substrate/lib/tier-check.sh +138 -0
  141. package/substrate/lib/tier-dependency-audit.sh +933 -0
  142. package/substrate/presence/install/bassclef-hook-connect.sh +178 -0
  143. package/substrate/presence/install/bassclef-sync.dispatcher.template.sh +841 -0
  144. package/substrate/presence/install/bassclef-sync.template.sh +2076 -0
  145. package/substrate/presence/install/schedule-auto-save.cron.sh +88 -0
  146. package/substrate/presence/install/schedule-auto-save.taskscheduler.md +122 -0
  147. package/substrate/scripts/aggregate-telemetry.sh +217 -0
  148. package/substrate/scripts/analyze-tier-dependencies.sh +239 -0
  149. package/substrate/scripts/generate-lite-manifest.sh +489 -0
  150. package/substrate/scripts/generate-tier-manifest.sh +28 -0
  151. package/substrate/scripts/intent-drift-check.sh +456 -0
  152. package/substrate/scripts/lite-manifest-drift-check.sh +146 -0
  153. package/substrate/scripts/render-lite-manifest-doc.sh +150 -0
  154. package/substrate/standards/bassclef-configs-schema.md +232 -0
  155. package/substrate/standards/bassclef-evolution.md +143 -0
  156. package/substrate/standards/bassclef-internal-jargon.md +244 -0
  157. package/substrate/standards/bassclef-managed-sentinel.md +96 -0
  158. package/substrate/standards/bassclef-source-config.md +228 -0
  159. package/substrate/standards/deferred-actions-schema.md +204 -0
  160. package/substrate/standards/docs-sync-allowlist.md +76 -0
  161. package/substrate/standards/graceful-exit.md +227 -0
  162. package/substrate/standards/hook-idempotency.md +102 -0
  163. package/substrate/standards/lite-manifest-schema-changes.md +75 -0
  164. package/substrate/standards/luminary-problem-patterns.md +481 -0
  165. package/substrate/standards/ogilvy-writing-rules.md +225 -0
  166. package/substrate/standards/opener-discipline.md +96 -0
  167. package/substrate/standards/operator-facing-prose-discipline.md +201 -0
  168. package/substrate/standards/project-directory-layout.md +276 -0
  169. package/substrate/standards/release-tagging.md +137 -0
  170. package/substrate/standards/sdlc-compliance.md +286 -0
  171. package/substrate/standards/secrets-lifecycle.md +210 -0
  172. package/substrate/standards/security-scanner-adapter.md +145 -0
  173. package/substrate/standards/skill-output-discipline.md +90 -0
  174. package/substrate/standards/state-spine.md +511 -0
  175. package/substrate/standards/tech-stack-config.md +109 -0
  176. package/substrate/standards/tier-dependency-analysis.md +167 -0
  177. package/substrate/standards/tier-runtime-deps/lite.md +57 -0
  178. package/substrate/standards/tier-tag-schema.md +155 -0
  179. package/substrate/standards/whereami-schema.md +301 -0
  180. package/substrate/standards/writing-guide.md +213 -0
  181. package/substrate/templates/deferred-action-template.md +45 -0
  182. package/substrate/templates/whereami-template.md +101 -0
@@ -0,0 +1,1794 @@
1
+ {
2
+ "tier": "lite",
3
+ "manifest_version": "1.5.1",
4
+ "generated_at": "2026-09-07T14:26:58Z",
5
+ "entries": [
6
+ {
7
+ "slug": "029-release-pipeline",
8
+ "type": "adr",
9
+ "path": "architecture/decisions/ADR-029-release-pipeline.md",
10
+ "tier": "lite",
11
+ "content_hash": "sha256:bf60a6a55fa9cee9660facd489dd52cc6d55740ab5b19b63df84fc15e59b8995",
12
+ "description": "bassclef-upstream is the upstream experimental source-of-truth (WU-0)."
13
+ },
14
+ {
15
+ "slug": "031-non-breaking-changes-adopter-discipline",
16
+ "type": "adr",
17
+ "path": "architecture/decisions/ADR-031-non-breaking-changes-adopter-discipline.md",
18
+ "tier": "lite",
19
+ "content_hash": "sha256:46eb3b1ff5ff1e482aa1e418edeb757fd88cdc203e3d3cbdbb60457335a408b0",
20
+ "description": "bassclef positions itself as an open substrate for Claude Code."
21
+ },
22
+ {
23
+ "slug": "032-adopter-sync-dispatcher-architecture",
24
+ "type": "adr",
25
+ "path": "architecture/decisions/ADR-032-adopter-sync-dispatcher-architecture.md",
26
+ "tier": "lite",
27
+ "content_hash": "sha256:c5bbb050447eaa2edeee0036138374b0cab0e345851b7ac486746285b4199da8",
28
+ "description": "POA's session-start on 2026-06-22 morning fired CANONICAL SYNC FAILED — token env var $CANONICAL_TOKEN not set."
29
+ },
30
+ {
31
+ "slug": "039-release-tagging-scheme",
32
+ "type": "adr",
33
+ "path": "architecture/decisions/ADR-039-release-tagging-scheme.md",
34
+ "tier": "lite",
35
+ "content_hash": "sha256:358d12f3d33dad9d4c0e1551877117e50662618c2d7efa3cd8be3bb6175de2dd",
36
+ "description": "Bassclef ships from sunj-labs/bassclef-upstream (the source-of-truth repo where all substrate work happens) to sunj-labs/bassclef (the public downstream repo adopters pull from)."
37
+ },
38
+ {
39
+ "slug": "040-planning-skill-vocabulary-and-lite-profile",
40
+ "type": "adr",
41
+ "path": "architecture/decisions/ADR-040-planning-skill-vocabulary-and-lite-profile.md",
42
+ "tier": "lite",
43
+ "content_hash": "sha256:936b3d7a62dbb204de833daf5c1c20ea6ea25e93f0a8e5ae925c4e48847097e5",
44
+ "description": "Two adopter-facing signals converged in July 2026 and drove this decision."
45
+ },
46
+ {
47
+ "slug": "044-unified-skill-body-template",
48
+ "type": "adr",
49
+ "path": "architecture/decisions/ADR-044-unified-skill-body-template.md",
50
+ "tier": "lite",
51
+ "content_hash": "sha256:a7e5310d443de88a52aa1bdd936964d0d6f70b825d6c992c7a075d5801da12bf",
52
+ "description": "Bassclef ships two competing SKILL body specs."
53
+ },
54
+ {
55
+ "slug": "architect",
56
+ "type": "agent",
57
+ "path": ".claude/agents/architect.md",
58
+ "tier": "lite",
59
+ "content_hash": "sha256:7a799edeb07c19e24569f266c74c6e8cb21621da4d63224af6b9c93ff36b8bd0",
60
+ "description": "Opinionated. Builds C4 diagrams, writes ADRs, proves architecture against risks. Prefers boring technology. Documents why, not just what."
61
+ },
62
+ {
63
+ "slug": "builder",
64
+ "type": "agent",
65
+ "path": ".claude/agents/builder.md",
66
+ "tier": "lite",
67
+ "content_hash": "sha256:0b24f89c111cfe255bb25a567718d073b22088c4d8b20fed9b405c3a797b1e9b",
68
+ "description": "Executes against spec. Respects ADR constraints. Commits with conventional commits. Doesn't redesign mid-build. Raises blockers immediately."
69
+ },
70
+ {
71
+ "slug": "designer",
72
+ "type": "agent",
73
+ "path": ".claude/agents/designer.md",
74
+ "tier": "lite",
75
+ "content_hash": "sha256:83c1d78497993e4e024d4ec2051ea0245fa8ec2e6aab686d643f8230c1e8d129",
76
+ "description": "User advocate. Translates requirements into concepts and flows. Owns lovability signal. Will push back if experience is compromised."
77
+ },
78
+ {
79
+ "slug": "reviewer",
80
+ "type": "agent",
81
+ "path": ".claude/agents/reviewer.md",
82
+ "tier": "lite",
83
+ "content_hash": "sha256:8beb53a004293f600e1e405ffa7a1a588a0fbb4aac2c29de74db661f443342a0",
84
+ "description": "Adversarial by design. Evaluates PRs against spec, not just style. Verifies tests, ADR compliance, Designer sign-off. Assumes Builder missed something."
85
+ },
86
+ {
87
+ "slug": "artifact-ingestion-gate",
88
+ "type": "hook",
89
+ "path": ".claude/hooks/artifact-ingestion-gate.sh",
90
+ "tier": "lite",
91
+ "content_hash": "sha256:f633c412002d62ed1e1458fff047e635b1a705a9b7fc4b2c47f16d0b9f5b0e9f",
92
+ "description": "Artifact Ingestion Gate — fires on Write/Edit to generative artifact paths."
93
+ },
94
+ {
95
+ "slug": "assert-verify-steering",
96
+ "type": "hook",
97
+ "path": ".claude/hooks/assert-verify-steering.sh",
98
+ "tier": "lite",
99
+ "content_hash": "sha256:7a421558661225ee7d6b3b0dcc45a1ca5171f530093a87420c8bd88b7ca0f620",
100
+ "description": "assert-verify-steering.sh — UserPromptSubmit hook that injects"
101
+ },
102
+ {
103
+ "slug": "bassclef-source-config-validate",
104
+ "type": "hook",
105
+ "path": ".claude/hooks/bassclef-source-config-validate.sh",
106
+ "tier": "lite",
107
+ "content_hash": "sha256:6981fedc02dc0b683db7872519e06bd16b68fd346a2e566a7e8503f28822db10",
108
+ "description": "bassclef-source-config-validate.sh — PreToolUse hook validating"
109
+ },
110
+ {
111
+ "slug": "bassclef-sync",
112
+ "type": "hook",
113
+ "path": ".claude/hooks/bassclef-sync.sh",
114
+ "tier": "lite",
115
+ "content_hash": "sha256:fa5d49791ec54de522ffbc6e07314e900d2dd92aaa98a20e293bd07d63976d53",
116
+ "description": "Bassclef Substrate Sync — fires on SessionStart."
117
+ },
118
+ {
119
+ "slug": "compound-noun-scrub",
120
+ "type": "hook",
121
+ "path": ".claude/hooks/compound-noun-scrub.sh",
122
+ "tier": "lite",
123
+ "content_hash": "sha256:5a8937efc342086a146897afd7ac870e016ffc44008d64fdf499090fe56dcb78",
124
+ "description": "compound-noun-scrub.sh — PreToolUse Edit|Write gate on"
125
+ },
126
+ {
127
+ "slug": "kiss-expansion-inject",
128
+ "type": "hook",
129
+ "path": ".claude/hooks/kiss-expansion-inject.sh",
130
+ "tier": "lite",
131
+ "content_hash": "sha256:7cb4c033003b987c4dddc74f9f24d9b28f111ee73622a2fa9f9a34d786191aad",
132
+ "description": "kiss-expansion-inject.sh — UserPromptExpansion hook that injects"
133
+ },
134
+ {
135
+ "slug": "plain-english-steering",
136
+ "type": "hook",
137
+ "path": ".claude/hooks/plain-english-steering.sh",
138
+ "tier": "lite",
139
+ "content_hash": "sha256:7be18788eefe9400e08f79dba69e193b7e1cab78c173e6e008c4284f616e12d7",
140
+ "description": "plain-english-steering.sh — UserPromptSubmit hook that injects"
141
+ },
142
+ {
143
+ "slug": "post-skill-friction-check",
144
+ "type": "hook",
145
+ "path": ".claude/hooks/post-skill-friction-check.sh",
146
+ "tier": "lite",
147
+ "content_hash": "sha256:3e47245950723da47246452ad448e5339e7f0939f9c9c297fa6f43f718ccc170",
148
+ "description": "Post-Skill Friction Check — fires on PostToolUse for Skill tool."
149
+ },
150
+ {
151
+ "slug": "post-skill-telemetry",
152
+ "type": "hook",
153
+ "path": ".claude/hooks/post-skill-telemetry.sh",
154
+ "tier": "lite",
155
+ "content_hash": "sha256:244bd65c30664a496b824311b798de370325591b2337dcc8c7ffb31379edd853",
156
+ "description": ".claude/hooks/post-skill-telemetry.sh"
157
+ },
158
+ {
159
+ "slug": "pre-build-gate",
160
+ "type": "hook",
161
+ "path": ".claude/hooks/pre-build-gate.sh",
162
+ "tier": "lite",
163
+ "content_hash": "sha256:3f025bbe98f3ee7a9a4217165558f861005876c6375ef2fd5e2eb6b63611163b",
164
+ "description": "Pre-Build Gate — fires on first Edit/Write per session."
165
+ },
166
+ {
167
+ "slug": "pre-commit-gate",
168
+ "type": "hook",
169
+ "path": ".claude/hooks/pre-commit-gate.sh",
170
+ "tier": "lite",
171
+ "content_hash": "sha256:e20ab4e571983322cbc5c352315a1d65d1508e17d41576a41bb5be53d15b30bd",
172
+ "description": "Observable failure trap — closes bassclef-upstream#1075 (silent-stderr class)."
173
+ },
174
+ {
175
+ "slug": "session-end",
176
+ "type": "hook",
177
+ "path": ".claude/hooks/session-end.sh",
178
+ "tier": "lite",
179
+ "content_hash": "sha256:33214f84abc0e41ff24daa7029490b12e43985ea76b26b7ad176897b9d84d840",
180
+ "description": "Session End hook — fires on Stop event."
181
+ },
182
+ {
183
+ "slug": "session-reflection",
184
+ "type": "hook",
185
+ "path": ".claude/hooks/session-reflection.sh",
186
+ "tier": "lite",
187
+ "content_hash": "sha256:0c9c242c5ebba83803e2d998fb1147445ebd2d50ce8ef700c75432b12082ce6d",
188
+ "description": "Session Start hook coordinator. Injects reflection prompt and iterates"
189
+ },
190
+ {
191
+ "slug": "skill-body-grade-gate",
192
+ "type": "hook",
193
+ "path": ".claude/hooks/skill-body-grade-gate.sh",
194
+ "tier": "lite",
195
+ "content_hash": "sha256:1fa3c8194f3ee074894e5617125865ef792fda0cc35ed93bf8614aaff8e8bbee",
196
+ "description": "skill-body-grade-gate.sh — PreToolUse Edit|Write gate on"
197
+ },
198
+ {
199
+ "slug": "skill-body-intent-drift",
200
+ "type": "hook",
201
+ "path": ".claude/hooks/skill-body-intent-drift.sh",
202
+ "tier": "lite",
203
+ "content_hash": "sha256:591df979123156bcce55fe790a3c15976e16ca3fdd2de3a8f5b0e68ef481ef74",
204
+ "description": "skill-body-intent-drift.sh — PostToolUse Edit|Write hook on"
205
+ },
206
+ {
207
+ "slug": "skill-step-list-check",
208
+ "type": "hook",
209
+ "path": ".claude/hooks/skill-step-list-check.sh",
210
+ "tier": "lite",
211
+ "content_hash": "sha256:d5a3b8941d26bd71955cde967db2a12b36dab9945d02d5c9dd5967f34a75ebb2",
212
+ "description": "Skill-step-list check — Stop hook that scans the transcript for a Skill tool"
213
+ },
214
+ {
215
+ "slug": "state-validate",
216
+ "type": "hook",
217
+ "path": ".claude/hooks/state-validate.sh",
218
+ "tier": "lite",
219
+ "content_hash": "sha256:a8c6b3ffbf13008d238ad87f47ec6a132ac407849dac00c0f1367909d2ace593",
220
+ "description": "state-validate.sh — PreToolUse hook that validates state-spine entity"
221
+ },
222
+ {
223
+ "slug": "substrate-clarity-gate",
224
+ "type": "hook",
225
+ "path": ".claude/hooks/substrate-clarity-gate.sh",
226
+ "tier": "lite",
227
+ "content_hash": "sha256:46ea120c5428e842f427fb5e847c9b4997569c34022e57b7b4a18e454a9510cc",
228
+ "description": "Substrate Clarity Gate — fires on Write/Edit to substrate paths"
229
+ },
230
+ {
231
+ "slug": "temperance-gate",
232
+ "type": "hook",
233
+ "path": ".claude/hooks/temperance-gate.sh",
234
+ "tier": "lite",
235
+ "content_hash": "sha256:bc9557ff8fc109074aee4e8f7813fc6599dba2d2dd1528e36b3eedbd736382e1",
236
+ "description": "temperance-gate.sh — mechanical /temperance firing at decision boundaries"
237
+ },
238
+ {
239
+ "slug": "testing-tier-enforce",
240
+ "type": "hook",
241
+ "path": ".claude/hooks/testing-tier-enforce.sh",
242
+ "tier": "lite",
243
+ "content_hash": "sha256:dad0b25ee75c970e2faef9c527b6d29d1fc7ce0b3a3dcfb078a647e4c2e6ce4e",
244
+ "description": "testing-tier-enforce.sh — per-path testing-tier enforcement (bassclef#1037)"
245
+ },
246
+ {
247
+ "slug": "turn-prose-grade-measure",
248
+ "type": "hook",
249
+ "path": ".claude/hooks/turn-prose-grade-measure.sh",
250
+ "tier": "lite",
251
+ "content_hash": "sha256:3ef97d25d1fee79c9f19efc55afc6363cdc86424e904f1f2515c56f427a57bd6",
252
+ "description": "Turn-prose grade measure — Stop hook that reads the last assistant message"
253
+ },
254
+ {
255
+ "slug": "turn-prose-kiss-check",
256
+ "type": "hook",
257
+ "path": ".claude/hooks/turn-prose-kiss-check.sh",
258
+ "tier": "lite",
259
+ "content_hash": "sha256:847ebe07fbc9555f4ead00f79f8574948ba1053254a271a824cdb8dbcbad52ae",
260
+ "description": "Turn-prose /kiss check — Stop hook that scans the most recent assistant"
261
+ },
262
+ {
263
+ "slug": "vocabulary-migration-check",
264
+ "type": "hook",
265
+ "path": ".claude/hooks/vocabulary-migration-check.sh",
266
+ "tier": "lite",
267
+ "content_hash": "sha256:087af8556faec8ca793e20d83a5479e3a134bc465a2d86f87b01336346b22ff0",
268
+ "description": "vocabulary-migration-check.sh — PreToolUse Edit|Write gate on"
269
+ },
270
+ {
271
+ "slug": "whereami-utc-gate",
272
+ "type": "hook",
273
+ "path": ".claude/hooks/whereami-utc-gate.sh",
274
+ "tier": "lite",
275
+ "content_hash": "sha256:867d05c8da773e8aef3d077ec7c171d8e9a208b579596f77dd73e18cc8fcf2e2",
276
+ "description": "whereami-utc-gate.sh — PreToolUse hook that BLOCKs Edit|Write|MultiEdit"
277
+ },
278
+ {
279
+ "slug": "clean-artifacts-sweep",
280
+ "type": "lib",
281
+ "path": "lib/clean-artifacts-sweep.sh",
282
+ "tier": "lite",
283
+ "content_hash": "sha256:8307ffbf78b85fe5c91c0a4d48fcf190873dc3116f6a4162fdeb1aec85e7c255",
284
+ "description": "lib/clean-artifacts-sweep.sh — shared deep module for workflow-exhaust"
285
+ },
286
+ {
287
+ "slug": "code-comment-discipline",
288
+ "type": "lib",
289
+ "path": "lib/code-comment-discipline.sh",
290
+ "tier": "lite",
291
+ "content_hash": "sha256:e8f87b559dd17c62e655138e2a7ec73eacc5cced9cd10dacebdb182bd85928f9",
292
+ "description": "code-comment-discipline.sh — classifier lib for header comment blocks"
293
+ },
294
+ {
295
+ "slug": "composer-preflight",
296
+ "type": "lib",
297
+ "path": "lib/composer-preflight.sh",
298
+ "tier": "lite",
299
+ "content_hash": "sha256:e4b5a09f0908897bb2709d5e4f7e191e9503e104a4a54cf5f43abdef218fc572",
300
+ "description": "lib/composer-preflight.sh — shared pre-flight check for composer skills."
301
+ },
302
+ {
303
+ "slug": "hook-inject",
304
+ "type": "lib",
305
+ "path": "lib/hook-inject.sh",
306
+ "tier": "lite",
307
+ "content_hash": "sha256:f302fd4852f8eb883212c644c2a7bffc4ee40e97762b4a98716b9b2abd04d51c",
308
+ "description": "lib/hook-inject.sh — shared helper for hooks that inject additionalContext"
309
+ },
310
+ {
311
+ "slug": "luminary-pick",
312
+ "type": "lib",
313
+ "path": "lib/luminary-pick.sh",
314
+ "tier": "lite",
315
+ "content_hash": "sha256:ad6e909a84c3371260377a98a94575a6cac2efbb6ff331bb1164e0ca42748a65",
316
+ "description": "andon-allow: docs/operator-private/[a-z-]+/20[0-9][0-9]-[0-9]{2}"
317
+ },
318
+ {
319
+ "slug": "output-discipline",
320
+ "type": "lib",
321
+ "path": "lib/output-discipline.sh",
322
+ "tier": "lite",
323
+ "content_hash": "sha256:24ca4785a7f8cce14d8fff8d95b2780275179a126c254bba11356d62f112c585",
324
+ "description": "output-discipline.sh — classifier library for substrate output discipline audit."
325
+ },
326
+ {
327
+ "slug": "rewrite-check",
328
+ "type": "lib",
329
+ "path": "lib/rewrite-check.sh",
330
+ "tier": "lite",
331
+ "content_hash": "sha256:a56494ca9d442479823121805120c1c1ad25062c706e935c9ef33d9c095a623d",
332
+ "description": "rewrite-check.sh — six heuristic checks for /kiss REWRITE mode (goal 25d Step 5)."
333
+ },
334
+ {
335
+ "slug": "state",
336
+ "type": "lib",
337
+ "path": "lib/state.sh",
338
+ "tier": "lite",
339
+ "content_hash": "sha256:38b6cfa82123e75bb1046b97887060962a62d90ba9d089764529207ebf8c8194",
340
+ "description": "lib/state.sh — typed accessor library over bassclef's state spine."
341
+ },
342
+ {
343
+ "slug": "telemetry",
344
+ "type": "lib",
345
+ "path": "lib/telemetry.sh",
346
+ "tier": "lite",
347
+ "content_hash": "sha256:1a14dad891fc8ca9ffb47cfcab4ff1d6a3ac37506bfe6a47a421453286793bdf",
348
+ "description": "lib/telemetry.sh — bassclef telemetry event emission (opt-in, local-only)"
349
+ },
350
+ {
351
+ "slug": "tier-check",
352
+ "type": "lib",
353
+ "path": "lib/tier-check.sh",
354
+ "tier": "lite",
355
+ "content_hash": "sha256:7d43d828a851373bb70d7e5c06f1e9b656342e92c08ed3ad79609a1e2b9b5e43",
356
+ "description": "lib/tier-check.sh — adopter tier resolution + gate."
357
+ },
358
+ {
359
+ "slug": "tier-dependency-audit",
360
+ "type": "lib",
361
+ "path": "lib/tier-dependency-audit.sh",
362
+ "tier": "lite",
363
+ "content_hash": "sha256:c5dc223237dc2759f07d39b967b3f5e9a14baf3419463e6a1ab8acd7e69e553d",
364
+ "description": "lib/tier-dependency-audit.sh"
365
+ },
366
+ {
367
+ "slug": "alan-cooper",
368
+ "type": "luminary",
369
+ "path": ".claude/luminaries/alan-cooper.md",
370
+ "tier": "lite",
371
+ "content_hash": "sha256:ace2e37c112de92166dfc94ee8e4c48300ff06bea5d275e4d228d5dd24fcd62a",
372
+ "description": "\\\"Personas are precision tools — each one a research-grounded behavioral archetype, not a fictional user."
373
+ },
374
+ {
375
+ "slug": "alistair-cockburn",
376
+ "type": "luminary",
377
+ "path": ".claude/luminaries/alistair-cockburn.md",
378
+ "tier": "lite",
379
+ "content_hash": "sha256:5f41c37247fe847e6c5be86e8f7e819cff5d224ebf6da05a0512c05e23d78cc6",
380
+ "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."
381
+ },
382
+ {
383
+ "slug": "amazon-pr-faq",
384
+ "type": "luminary",
385
+ "path": ".claude/luminaries/amazon-pr-faq.md",
386
+ "tier": "lite",
387
+ "content_hash": "sha256:33f271ff90f67402f726a39b7c00e55937027bcd36fc14f2ef645f56b9e50f7e",
388
+ "description": "\\\"Write the press release first. If it doesn't excite, don't build.\\\""
389
+ },
390
+ {
391
+ "slug": "ash-maurya",
392
+ "type": "luminary",
393
+ "path": ".claude/luminaries/ash-maurya.md",
394
+ "tier": "lite",
395
+ "content_hash": "sha256:b6f15616f05c85f7342618ca72aeeb21aaca00a66d4d9029f8429b1e1ffd2d93",
396
+ "description": "\\\"Document your Plan A, then identify the riskiest parts of your plan, and systematically test your plan.\\\""
397
+ },
398
+ {
399
+ "slug": "bill-buxton",
400
+ "type": "luminary",
401
+ "path": ".claude/luminaries/bill-buxton.md",
402
+ "tier": "lite",
403
+ "content_hash": "sha256:6b7fe8d87960d59cc9ad7465cfdcbcc652d1b18a565e21f3ffb51a846970883e",
404
+ "description": "\\\"Get the design right, and the right design.\\\""
405
+ },
406
+ {
407
+ "slug": "charles-sanders-peirce",
408
+ "type": "luminary",
409
+ "path": ".claude/luminaries/charles-sanders-peirce.md",
410
+ "tier": "lite",
411
+ "content_hash": "sha256:e1a6ee9fceb308fb3eda82e11fbec08403c9676c1852b5857f08a87ca882d951",
412
+ "description": "\\\"Keep inquiry open.\\\""
413
+ },
414
+ {
415
+ "slug": "david-ogilvy",
416
+ "type": "luminary",
417
+ "path": ".claude/luminaries/david-ogilvy.md",
418
+ "tier": "lite",
419
+ "content_hash": "sha256:2efc3f5eb70977ece81e75cd1d43d1b2de3bdad1e522f7c96c10ab261f4df4d0",
420
+ "description": "\\\"Write the way you talk. Naturally.\\\""
421
+ },
422
+ {
423
+ "slug": "don-norman",
424
+ "type": "luminary",
425
+ "path": ".claude/luminaries/don-norman.md",
426
+ "tier": "lite",
427
+ "content_hash": "sha256:982b4aa974a04fb6a993cbe788b7b62d8272842d8b3a26484fc6c9e0d51afadc",
428
+ "description": "\\\"Good design makes the right action obvious."
429
+ },
430
+ {
431
+ "slug": "edward-tufte",
432
+ "type": "luminary",
433
+ "path": ".claude/luminaries/edward-tufte.md",
434
+ "tier": "lite",
435
+ "content_hash": "sha256:14ae144315a11d6466aacf6c685b57e7927f0ebffc75f996d78d8204346849db",
436
+ "description": "\\\"Above all else, show the data. Maximize the data-ink ratio; every pixel that doesn't represent information is a candidate for removal.\\\""
437
+ },
438
+ {
439
+ "slug": "eric-evans",
440
+ "type": "luminary",
441
+ "path": ".claude/luminaries/eric-evans.md",
442
+ "tier": "lite",
443
+ "content_hash": "sha256:91856ea58cafc6be42bafd953443f9144136c33a9c6cccd57a5c90965b31e35e",
444
+ "description": "\\\"The model is the backbone of the design."
445
+ },
446
+ {
447
+ "slug": "frederick-brooks",
448
+ "type": "luminary",
449
+ "path": ".claude/luminaries/frederick-brooks.md",
450
+ "tier": "lite",
451
+ "content_hash": "sha256:149711862270ae2c17022b2fd01e948f4c8fe3aec115c41a9af5e2405ed5644c",
452
+ "description": "\\\"Adding manpower to a late software project makes it later.\\\""
453
+ },
454
+ {
455
+ "slug": "gang-of-four",
456
+ "type": "luminary",
457
+ "path": ".claude/luminaries/gang-of-four.md",
458
+ "tier": "lite",
459
+ "content_hash": "sha256:47accc6c9c138d585345e6f81a7cf6a1dbd42433844ccb8d9a86a8294b458d1b",
460
+ "description": "\\\"Program to an interface, not an implementation."
461
+ },
462
+ {
463
+ "slug": "jason-fried-dhh",
464
+ "type": "luminary",
465
+ "path": ".claude/luminaries/jason-fried-dhh.md",
466
+ "tier": "lite",
467
+ "content_hash": "sha256:0f22780dc9684115556c0df86fdbd0657ce32b02f4095f48b548f9c3abe75ec1",
468
+ "description": "\\\"It doesn't have to be crazy at work.\\\""
469
+ },
470
+ {
471
+ "slug": "jesse-james-garrett",
472
+ "type": "luminary",
473
+ "path": ".claude/luminaries/jesse-james-garrett.md",
474
+ "tier": "lite",
475
+ "content_hash": "sha256:8275c70d25fb8e8acad9dc68ade399993d5f1432ae82449fe14db8533342fd70",
476
+ "description": "\\\"Every user experience has five planes: strategy, scope, structure, skeleton, surface."
477
+ },
478
+ {
479
+ "slug": "john-ousterhout",
480
+ "type": "luminary",
481
+ "path": ".claude/luminaries/john-ousterhout.md",
482
+ "tier": "lite",
483
+ "content_hash": "sha256:af68d97598b946e8bd049c2bf5075333ccd50b8072f685efa16805c60fc97bf6",
484
+ "description": "\\\"Complexity is anything that makes software hard to understand or modify."
485
+ },
486
+ {
487
+ "slug": "karl-popper",
488
+ "type": "luminary",
489
+ "path": ".claude/luminaries/karl-popper.md",
490
+ "tier": "lite",
491
+ "content_hash": "sha256:84ed281b7c6194d1abfa6831824fca748db8e9ac52b3a6ce1c14fc2d783bf6e7",
492
+ "description": "\\\"Good tests kill flawed theories; we remain alive to guess again.\\\""
493
+ },
494
+ {
495
+ "slug": "kent-beck",
496
+ "type": "luminary",
497
+ "path": ".claude/luminaries/kent-beck.md",
498
+ "tier": "lite",
499
+ "content_hash": "sha256:45f4df49b02c58bcc77609baaf65019fa4dcc5fd743150e7ab1074298c6eb307",
500
+ "description": "\\\"Make it work. Make it right. Make it fast. Tests are the first client of your code.\\\""
501
+ },
502
+ {
503
+ "slug": "linus-torvalds",
504
+ "type": "luminary",
505
+ "path": ".claude/luminaries/linus-torvalds.md",
506
+ "tier": "lite",
507
+ "content_hash": "sha256:ad1c08a2906c3329eeba4eaee156a4334cc5f2c51cf27477141f29925fd18d6e",
508
+ "description": "\\\"We do not break userspace.\\\" — INSTEAD: the kernel team pays the migration cost so every program that ran yesterday keeps running today."
509
+ },
510
+ {
511
+ "slug": "martin-fowler",
512
+ "type": "luminary",
513
+ "path": ".claude/luminaries/martin-fowler.md",
514
+ "tier": "lite",
515
+ "content_hash": "sha256:7fbf6ec65206fcbb6dbf2df1d24fed37555d495c6597885ff1a7f201ce3c2544",
516
+ "description": "\\\"Any fool can write code that a computer can understand."
517
+ },
518
+ {
519
+ "slug": "michael-feathers",
520
+ "type": "luminary",
521
+ "path": ".claude/luminaries/michael-feathers.md",
522
+ "tier": "lite",
523
+ "content_hash": "sha256:d67af1e2b6cacf4058f4ddf7b2b783a71f55c02842b2f2062679cfc7f2048f25",
524
+ "description": "\\\"Legacy code is code without tests. Everything else is detail.\\\" [ref:1]"
525
+ },
526
+ {
527
+ "slug": "michael-nygard",
528
+ "type": "luminary",
529
+ "path": ".claude/luminaries/michael-nygard.md",
530
+ "tier": "lite",
531
+ "content_hash": "sha256:6e76b9901110cddecb9e343fe42ae112e30a6afa430d6f3c980377d4acf75044",
532
+ "description": "\\\"Everything fails. Every remote call can hang. Every integration point is a liability. Design your system to be stable in the presence of failure, not to assume failure away.\\\"…"
533
+ },
534
+ {
535
+ "slug": "robert-c-martin",
536
+ "type": "luminary",
537
+ "path": ".claude/luminaries/robert-c-martin.md",
538
+ "tier": "lite",
539
+ "content_hash": "sha256:2150986fe1c25d6b12a213314dbe0a3e629d0363d32e6847d8f2ff57d87b67d9",
540
+ "description": "\\\"Architecture is about intent, not frameworks."
541
+ },
542
+ {
543
+ "slug": "saltzer-schroeder",
544
+ "type": "luminary",
545
+ "path": ".claude/luminaries/saltzer-schroeder.md",
546
+ "tier": "lite",
547
+ "content_hash": "sha256:25fe2730b9c4bc63942c7581f3da70e206cad742f32575c43d29623fb9f3cbec",
548
+ "description": "\\\"The principles are intended to guide the design of protection mechanisms..."
549
+ },
550
+ {
551
+ "slug": "sophia-prater",
552
+ "type": "luminary",
553
+ "path": ".claude/luminaries/sophia-prater.md",
554
+ "tier": "lite",
555
+ "content_hash": "sha256:8ca808b555223b8eb641e1716c7a0759329d8bdc4c7bc4c67f9ced1788885e15",
556
+ "description": "\\\"Objects first, then actions. Never the reverse.\\\""
557
+ },
558
+ {
559
+ "slug": "stephen-toulmin",
560
+ "type": "luminary",
561
+ "path": ".claude/luminaries/stephen-toulmin.md",
562
+ "tier": "lite",
563
+ "content_hash": "sha256:7d7d4b9a9ec1a13669fa5f1c5abab91ed5d20ae1f81a379cb5d5dda6645b33bf",
564
+ "description": "\\\"An argument is a whole organism. Take out one part and the rest collapses.\\\""
565
+ },
566
+ {
567
+ "slug": "bassclef-hook-connect",
568
+ "type": "presence-template",
569
+ "path": "presence/install/bassclef-hook-connect.sh",
570
+ "tier": "lite",
571
+ "content_hash": "sha256:7d029e13d72fa66157105b18684920d12e0b3c4f9d4866c0baa1c3b8227b745c",
572
+ "description": "description: Dynamic-derive hook connect — closes bassclef-upstream#625."
573
+ },
574
+ {
575
+ "slug": "bassclef-sync-dispatcher-template",
576
+ "type": "presence-template",
577
+ "path": "presence/install/bassclef-sync.dispatcher.template.sh",
578
+ "tier": "lite",
579
+ "content_hash": "sha256:b94d6f09c8539c09918f79904c4bcbd50d1e5e44481c6bf641a60810dd117298",
580
+ "description": "description: Retagged standard → lite per #1301 concentric rule (ADR-052 D1) —"
581
+ },
582
+ {
583
+ "slug": "bassclef-sync-template",
584
+ "type": "presence-template",
585
+ "path": "presence/install/bassclef-sync.template.sh",
586
+ "tier": "lite",
587
+ "content_hash": "sha256:5f15729182bdf0a3d71a635c3290692a2d9102e70ff5674550f39f3087c61e60",
588
+ "description": "description: BASSCLEF_SYNC_VERSION=2026-09-06-1496-sessionstart-heal-v1"
589
+ },
590
+ {
591
+ "slug": "schedule-auto-save-cron",
592
+ "type": "presence-template",
593
+ "path": "presence/install/schedule-auto-save.cron.sh",
594
+ "tier": "lite",
595
+ "content_hash": "sha256:1cf543999e8fb8acc013439c9f3034f21f64604dc334321e97d9be60c6ac8bd3",
596
+ "description": "description: schedule-auto-save.cron.sh — install a cron entry that fires auto-save-idle.sh"
597
+ },
598
+ {
599
+ "slug": "schedule-auto-save-taskscheduler",
600
+ "type": "presence-template",
601
+ "path": "presence/install/schedule-auto-save.taskscheduler.md",
602
+ "tier": "lite",
603
+ "content_hash": "sha256:d642cdd842320ba3f7ac714da5cfbd55a594805d3ff3f144de1b7005bb1ebff6"
604
+ },
605
+ {
606
+ "slug": "agents",
607
+ "type": "root-doc",
608
+ "path": "AGENTS.md",
609
+ "tier": "lite",
610
+ "content_hash": "sha256:1c5a0dc586ea16eaf6043c34df10b2450fa015662809f65fc2676ea146a45b0d",
611
+ "description": "Cross-tool agent context for sunj-labs repos."
612
+ },
613
+ {
614
+ "slug": "claude-lite",
615
+ "type": "root-doc",
616
+ "path": "CLAUDE-lite.md",
617
+ "tier": "lite",
618
+ "content_hash": "sha256:63f70fb450065a2fc2c3d2a892a19619d2240691440ecf0dc5b7657cd9017541",
619
+ "description": "What this is. A trimmed version of bassclef for solo adopters running one project. Ships 14 core skills plus 15 rules for session hygiene, safety, plain English, and PR shape. Full bassclef ships 90 skills and 76 rules for cross-project operators."
620
+ },
621
+ {
622
+ "slug": "code-of-conduct",
623
+ "type": "root-doc",
624
+ "path": "CODE_OF_CONDUCT.md",
625
+ "tier": "lite",
626
+ "content_hash": "sha256:c00334fb47f0aad9adf11a376759a5d51b8d8403cf9fc686bc76d643b454ac9e",
627
+ "description": "We're committed to a welcoming, respectful community for everyone contributing to or using bassclef."
628
+ },
629
+ {
630
+ "slug": "contributing",
631
+ "type": "root-doc",
632
+ "path": "CONTRIBUTING.md",
633
+ "tier": "lite",
634
+ "content_hash": "sha256:b4006de95c40c603866ea78d2f624e4d31508424d797e2ec66d66d421cefd5c9",
635
+ "description": "Bassclef is a framework for guiding AI agents through software development — skills, rules, hooks, and standards that compose into an opinionated SDLC substrate."
636
+ },
637
+ {
638
+ "slug": "readme",
639
+ "type": "root-doc",
640
+ "path": "README.md",
641
+ "tier": "lite",
642
+ "content_hash": "sha256:32216b8689e6d2d586f90d7d306a2cc7340df6d00f6c8068a0c67b686205ff5b",
643
+ "description": "A shared substrate for working with AI coding agents."
644
+ },
645
+ {
646
+ "slug": "security",
647
+ "type": "root-doc",
648
+ "path": "SECURITY.md",
649
+ "tier": "lite",
650
+ "content_hash": "sha256:0c4d177670be95c7b0e37554633d508ec6c2b82f18110355f382abdfd9410359",
651
+ "description": "Please report security vulnerabilities privately via GitHub's security advisory system:"
652
+ },
653
+ {
654
+ "slug": "artifact-ingestion",
655
+ "type": "rule",
656
+ "path": ".claude/rules/artifact-ingestion.md",
657
+ "tier": "lite",
658
+ "content_hash": "sha256:ffaae0f71c1cede02c51ad804fbdf5b51d92b72137c1ee66a550029376788c74",
659
+ "description": "Before producing any substantive generative output (canvas, prototype, spec, proposal, rubric, ADR, variant), the agent MUST read the referenced artifacts and enumerate them in…"
660
+ },
661
+ {
662
+ "slug": "assert-only-after-verify",
663
+ "type": "rule",
664
+ "path": ".claude/rules/assert-only-after-verify.md",
665
+ "tier": "lite",
666
+ "content_hash": "sha256:608cdd8c33e7d56a99fbb0f103ca38d80f7fb3bcf9927de8cb59f41f1fb923ea",
667
+ "description": "Plain check: Before I make a claim in this turn, I read the source first and cite it."
668
+ },
669
+ {
670
+ "slug": "blocked-items",
671
+ "type": "rule",
672
+ "path": ".claude/rules/blocked-items.md",
673
+ "tier": "lite",
674
+ "content_hash": "sha256:f2c576d4fbbfbd6ccce9747b6571c421997db61f130e392772dc9e2d2144f3c2",
675
+ "description": "Session-start hook output may contain lines prefixed with BLOCKED:."
676
+ },
677
+ {
678
+ "slug": "branching",
679
+ "type": "rule",
680
+ "path": ".claude/rules/branching.md",
681
+ "tier": "lite",
682
+ "content_hash": "sha256:292de9c9fda44c0c9e92bd2fd0551d04a686ed60607b094635bf5db74465c57d",
683
+ "description": "Trunk-based development — branch naming and flow"
684
+ },
685
+ {
686
+ "slug": "commit-conventions",
687
+ "type": "rule",
688
+ "path": ".claude/rules/commit-conventions.md",
689
+ "tier": "lite",
690
+ "content_hash": "sha256:69ae0083d62003eb70442ef3d5fcffd0061723a18da931f823795123ff7fc312",
691
+ "description": "Commit message format — Conventional Commits"
692
+ },
693
+ {
694
+ "slug": "context-engineering",
695
+ "type": "rule",
696
+ "path": ".claude/rules/context-engineering.md",
697
+ "tier": "lite",
698
+ "content_hash": "sha256:bd866d45e77fd1636e290601efc603fc4a723295288cc75d84f96eef17d591bf",
699
+ "description": "The single most leverage-y discipline in bassclef."
700
+ },
701
+ {
702
+ "slug": "context-management",
703
+ "type": "rule",
704
+ "path": ".claude/rules/context-management.md",
705
+ "tier": "lite",
706
+ "content_hash": "sha256:c319a027124fa9de0066fd60b2b05456808c4b4220baf74c298f6ece73e21df5",
707
+ "description": "Context window management — thresholds, compaction strategy, survival kit"
708
+ },
709
+ {
710
+ "slug": "destructive-operations",
711
+ "type": "rule",
712
+ "path": ".claude/rules/destructive-operations.md",
713
+ "tier": "lite",
714
+ "content_hash": "sha256:c5991ab6765b3594d3747ee6c4d513a8459fe46a4b1b34c98652ca24d2b7538d",
715
+ "description": "The destructive-command-guard hook catches known patterns mechanically."
716
+ },
717
+ {
718
+ "slug": "diagnosis",
719
+ "type": "rule",
720
+ "path": ".claude/rules/diagnosis.md",
721
+ "tier": "lite",
722
+ "content_hash": "sha256:f387cde3e41ca4cf3afc65aee9982e76da19b7798e84d0e602e8e2ff5f9c7306",
723
+ "description": "Three-step diagnosis before writing any fix"
724
+ },
725
+ {
726
+ "slug": "guardrails",
727
+ "type": "rule",
728
+ "path": ".claude/rules/guardrails.md",
729
+ "tier": "lite",
730
+ "content_hash": "sha256:f24b55a2cac772ccc86da182b02a7ce7eddec4d13a0009a6f9f3ed7db6784823",
731
+ "description": "Agent guardrails — behavior boundaries, escalation rules, capability ceilings for autonomous operation"
732
+ },
733
+ {
734
+ "slug": "identifier-leak-prevention",
735
+ "type": "rule",
736
+ "path": ".claude/rules/identifier-leak-prevention.md",
737
+ "tier": "lite",
738
+ "content_hash": "sha256:8c0a6f9a3cf3da6c6c83b0890bb73af8479f1f4a257dcef45b022772a7d92842",
739
+ "description": "Bassclef commits stay free of operator machine identifiers."
740
+ },
741
+ {
742
+ "slug": "lite-manifest-schema-change-discipline",
743
+ "type": "rule",
744
+ "path": ".claude/rules/lite-manifest-schema-change-discipline.md",
745
+ "tier": "lite",
746
+ "content_hash": "sha256:73f82925f2f588c1cab7ae89589d352c7fbe9ef382a8640c7024280b10c997a9",
747
+ "description": "Every lite-manifest schema change ships a migration-note ledger entry in the same PR. Adopters read the ledger before sync."
748
+ },
749
+ {
750
+ "slug": "oo-ad-entry-point",
751
+ "type": "rule",
752
+ "path": ".claude/rules/oo-ad-entry-point.md",
753
+ "tier": "lite",
754
+ "content_hash": "sha256:607ce3b5754daa9cc8994214d91b7932073dbc856991200c80968ebee5f2f4fc",
755
+ "description": "OOA/D entry point — /decompose must fire for all Construction work, not just canvas-driven flow. Extended per bet 24a to cover hook + lib + script code paths per Cockburn ceremony tiering matrix."
756
+ },
757
+ {
758
+ "slug": "operator-facing-prose",
759
+ "type": "rule",
760
+ "path": ".claude/rules/operator-facing-prose.md",
761
+ "tier": "lite",
762
+ "content_hash": "sha256:f268d9c6788f51ddbb932202ecdc929f2766a6a82b9f40e7705069c2470aab2a",
763
+ "description": "Any shorthand in operator-facing prose carries a plain-language gloss at first mention per response."
764
+ },
765
+ {
766
+ "slug": "plain-english-discipline",
767
+ "type": "rule",
768
+ "path": ".claude/rules/plain-english-discipline.md",
769
+ "tier": "lite",
770
+ "content_hash": "sha256:7e973d3caed8e7d4e6e7da08ead4cfe721fef8c9a593b91b0a26b7a10ac6fd99",
771
+ "description": "All bassclef writing — skills, rules, luminaries, PR bodies, commit messages, chronicles, journal entries, iteration goals — should be plain digestible English at a grade-10…"
772
+ },
773
+ {
774
+ "slug": "pr-body-shape",
775
+ "type": "rule",
776
+ "path": ".claude/rules/pr-body-shape.md",
777
+ "tier": "lite",
778
+ "content_hash": "sha256:4fa98b7f2f05da8a97ba727b71304646ab4956e521880d44c356a477ed6a253c",
779
+ "description": "Every PR body opens with a ## Problem section drafted by /state-a-problem brief + --- + ## Goal."
780
+ },
781
+ {
782
+ "slug": "pr-strategy",
783
+ "type": "rule",
784
+ "path": ".claude/rules/pr-strategy.md",
785
+ "tier": "lite",
786
+ "content_hash": "sha256:f9387e07995c4980bffef4dff282ca36d644aa386baf4241f0ded26041b456a0",
787
+ "description": "The default PR strategy for any multi-issue iteration is stacked atomic branches: one branch per issue, one PR per branch, each independently reviewable and revertable."
788
+ },
789
+ {
790
+ "slug": "sdlc-gates",
791
+ "type": "rule",
792
+ "path": ".claude/rules/sdlc-gates.md",
793
+ "tier": "lite",
794
+ "content_hash": "sha256:c1a6e27d8911375a5287dfa08a557aafd852b3de02f6180cfcdddd190fdee091",
795
+ "description": "Universal SDLC gates — pre-build temperance + diagnose, post-build /verify, observed-failure chain. Stack-specific globs live in per-language siblings under standards/sdlc-gates/."
796
+ },
797
+ {
798
+ "slug": "session-artifacts",
799
+ "type": "rule",
800
+ "path": ".claude/rules/session-artifacts.md",
801
+ "tier": "lite",
802
+ "content_hash": "sha256:4101a23b7c81a914e4b18a43dce81f05a86f26643c75534a6313da28a645d5f3",
803
+ "description": "Session artifacts — chronicle + journal entries at every phase transition and session end"
804
+ },
805
+ {
806
+ "slug": "state-schema-validation",
807
+ "type": "rule",
808
+ "path": ".claude/rules/state-schema-validation.md",
809
+ "tier": "lite",
810
+ "content_hash": "sha256:ce40db379fd0c8d1ce333b762e5b96d68d04ef31ab2c080141cfaf005948cdd8",
811
+ "description": "State-spine entity writes MUST conform to their JSON Schema."
812
+ },
813
+ {
814
+ "slug": "whereami-load-bearing",
815
+ "type": "rule",
816
+ "path": ".claude/rules/whereami-load-bearing.md",
817
+ "tier": "lite",
818
+ "content_hash": "sha256:568c15deabdacdf5c463173cc6d014c21e2e32deea85c9a6029983371c4dbd36",
819
+ "description": "docs/whereami.md is the authoritative project-state snapshot in every bassclef-substrate repo."
820
+ },
821
+ {
822
+ "slug": "writing-craft-discipline",
823
+ "type": "rule",
824
+ "path": ".claude/rules/writing-craft-discipline.md",
825
+ "tier": "lite",
826
+ "content_hash": "sha256:1cab202649c1156a817898a7c5297dda877b9c7b6dd5577ec75523e0e6fcd3ba",
827
+ "description": "Plain check. Before I ship any operator-facing prose in this turn, I run the six Ogilvy tests against my draft. If any test fails, I rewrite before I ship."
828
+ },
829
+ {
830
+ "slug": "aggregate-telemetry",
831
+ "type": "script",
832
+ "path": "scripts/aggregate-telemetry.sh",
833
+ "tier": "lite",
834
+ "content_hash": "sha256:7ea98a9747dfc919184bc0c2a4aab228caa6efbd9cff6fef1c734d01a3e463fa",
835
+ "description": "scripts/aggregate-telemetry.sh — read local telemetry store; emit uptake report"
836
+ },
837
+ {
838
+ "slug": "analyze-tier-dependencies",
839
+ "type": "script",
840
+ "path": "scripts/analyze-tier-dependencies.sh",
841
+ "tier": "lite",
842
+ "content_hash": "sha256:d7a13ca4fb37283e50fc165bb5ebd6a65539d7dade005dcd38098e1d878c52b3",
843
+ "description": "analyze-tier-dependencies.sh — orchestrator for the tier-dependency-audit subsystem"
844
+ },
845
+ {
846
+ "slug": "generate-lite-manifest",
847
+ "type": "script",
848
+ "path": "scripts/generate-lite-manifest.sh",
849
+ "tier": "lite",
850
+ "content_hash": "sha256:f78d243994bc7cece098f07bd20d197cbfe9f84532d87291a9ae1ffe826947a3",
851
+ "description": "Generate lite-manifest.json at repo root."
852
+ },
853
+ {
854
+ "slug": "generate-tier-manifest",
855
+ "type": "script",
856
+ "path": "scripts/generate-tier-manifest.sh",
857
+ "tier": "lite",
858
+ "content_hash": "sha256:56c3c2f37428f4e0798b16de0c9493caa44a284b920d64a64e9efb26d3f53392",
859
+ "description": "generate-tier-manifest.sh — thin wrapper over generate-lite-manifest.sh"
860
+ },
861
+ {
862
+ "slug": "intent-drift-check",
863
+ "type": "script",
864
+ "path": "scripts/intent-drift-check.sh",
865
+ "tier": "lite",
866
+ "content_hash": "sha256:9921d0b4c0375b3099bc3dc8457800ad157837286244f0ede46f8146127d0b73",
867
+ "description": "intent-drift-check.sh — measure intent drift after an artifact body rewrite."
868
+ },
869
+ {
870
+ "slug": "lite-manifest-drift-check",
871
+ "type": "script",
872
+ "path": "scripts/lite-manifest-drift-check.sh",
873
+ "tier": "lite",
874
+ "content_hash": "sha256:56b8155b11698b584e4ce31a0e1224708b02f51824f9bc5638116fd218a6e177",
875
+ "description": "Detect drift between committed lite-manifest.json and current substrate state."
876
+ },
877
+ {
878
+ "slug": "render-lite-manifest-doc",
879
+ "type": "script",
880
+ "path": "scripts/render-lite-manifest-doc.sh",
881
+ "tier": "lite",
882
+ "content_hash": "sha256:30dc5eaff11fafc08b0845d8c4ce329a51b6ca0e89136638d335b58af41c7c0f",
883
+ "description": "Render human-readable companion doc from lite-manifest.json."
884
+ },
885
+ {
886
+ "slug": "build",
887
+ "type": "skill",
888
+ "path": ".claude/skills/build/SKILL.md",
889
+ "tier": "lite",
890
+ "content_hash": "sha256:e55f531da7cb41cd5b8b94253858684c680a926cfe276426677a8f5da012592a",
891
+ "description": "Take a buildable plan and ship it. Reads the spec from /launch, dispatches a builder per user story, runs /verify, opens PRs, gates prod deploy on a reviewer. Hard floor: refuses auth, schema, security, tenant, or prod-infra changes. --explain flag narrates the plan first.",
892
+ "inputs": [
893
+ "A goal slug pointing to a spec on disk"
894
+ ],
895
+ "outputs": [
896
+ "One PR per user story",
897
+ "Verify report",
898
+ "Reviewer sign-off",
899
+ "Prod deploy gated on a human"
900
+ ],
901
+ "problem": "A buildable plan sits on disk. Nothing ships until someone writes code and PRs and gates prod.",
902
+ "value": "Reads the plan and ships it. Runs the whole cycle so you can watch instead of type."
903
+ },
904
+ {
905
+ "slug": "decompose",
906
+ "type": "skill",
907
+ "path": ".claude/skills/decompose/SKILL.md",
908
+ "tier": "lite",
909
+ "content_hash": "sha256:e94e5ef134c8f7466c96173a3755e2ed5c32d326b0003d99ba18f4d70a5edfe8",
910
+ "description": "Pre-build responsibility audit — reads sequence diagrams, assigns responsibilities using GRASP with mandatory interface identification, audits functional and non-functional friction, selects patterns from GoF / Fowler / stack idioms. Bridges design and build.",
911
+ "composes_with": [
912
+ "spec",
913
+ "ia-model",
914
+ "interaction-design",
915
+ "pattern-review",
916
+ "temperance"
917
+ ],
918
+ "inputs": [
919
+ "Sequence diagrams from spec",
920
+ "A decomposition target — feature or defect"
921
+ ],
922
+ "outputs": [
923
+ "Responsibility matrix",
924
+ "Interface registry",
925
+ "Pattern map for construction"
926
+ ],
927
+ "problem": "Cross-cutting concerns bolt into implementations. Logging and tracing pile inside business code.",
928
+ "value": "A responsibility matrix that keeps each concern in its own class. Decorators stay clean."
929
+ },
930
+ {
931
+ "slug": "diagnose",
932
+ "type": "skill",
933
+ "path": ".claude/skills/diagnose/SKILL.md",
934
+ "tier": "lite",
935
+ "content_hash": "sha256:1b0c8c4a7c49ce29c07c415fa8cdeaa3a68bcebacc47c6926873fcf30b038506",
936
+ "description": "Diagnose a defect before fixing — reproduce the failure (Step 0) + Is/Is Not + Five Whys + Hypothesis. Run before writing any fix code; lazy diagnosis ships brittle fixes.",
937
+ "inputs": [
938
+ "A failing test or error log",
939
+ "A bug ticket or screenshot"
940
+ ],
941
+ "outputs": [
942
+ "Reproduce step",
943
+ "Is/Is Not table",
944
+ "Five Whys chain",
945
+ "Hypothesis with a read-only test"
946
+ ],
947
+ "problem": "Bugs get fixed on guesses. The wrong cause gets patched. The class comes back a week later.",
948
+ "value": "A short trace from failure to root cause. You fix the class once instead of the instance three times."
949
+ },
950
+ {
951
+ "slug": "howdoi",
952
+ "type": "skill",
953
+ "path": ".claude/skills/howdoi/SKILL.md",
954
+ "tier": "lite",
955
+ "content_hash": "sha256:f44a19c5fe49e1a1c090f079d977e89e08ce5f6dbee90888d343a44a703d4522",
956
+ "description": "Run an LLM-assisted intent search over bassclef skills and rules for an adopter goal. Two modes — search (top matches) and compose (matches plus suggested chains). Ranks by semantic fit; cites what each match does.",
957
+ "inputs": [
958
+ "A one-sentence goal in plain English"
959
+ ],
960
+ "outputs": [
961
+ "Ranked list of matching skills and rules",
962
+ "One-line reason per match"
963
+ ],
964
+ "problem": "Adopters know what they want to do but not which bassclef skill or rule fits.",
965
+ "value": "One question in. A short list of the skills and rules that match your goal."
966
+ },
967
+ {
968
+ "slug": "ia-model",
969
+ "type": "skill",
970
+ "path": ".claude/skills/ia-model/SKILL.md",
971
+ "tier": "lite",
972
+ "content_hash": "sha256:ce82cd735149e372a2b4a4933730f4ec0aadcfc3aa24fc4ae4b4a3c2f8ab91c9",
973
+ "description": "Build information architecture from entity inventory + task flows. Derives nav structure, labeling, and screen map from objects.",
974
+ "inputs": [
975
+ "Task flows from spec",
976
+ "Entity inventory from decompose"
977
+ ],
978
+ "outputs": [
979
+ "Entity model diagram",
980
+ "Navigation shape",
981
+ "Screen inventory"
982
+ ],
983
+ "problem": "Screens get designed before the nouns behind them are named. Nav drifts across pages.",
984
+ "value": "One entity map that drives every downstream screen. Nav stays clean because the model is clean."
985
+ },
986
+ {
987
+ "slug": "interaction-design",
988
+ "type": "skill",
989
+ "path": ".claude/skills/interaction-design/SKILL.md",
990
+ "tier": "lite",
991
+ "content_hash": "sha256:84b6adeb9ccda43f551bf1e2a54ba6a0aec80436552c4418a3895301278c149c",
992
+ "description": "IA + task flows → interaction design — state diagrams, sequence diagrams, user flows. Final step in the UX translation chain.",
993
+ "inputs": [
994
+ "IA model plus task flows"
995
+ ],
996
+ "outputs": [
997
+ "State diagrams",
998
+ "Sequence diagrams",
999
+ "User flow overview"
1000
+ ],
1001
+ "problem": "Nav and entities are drawn but the flow between screens is not. Devs invent transitions.",
1002
+ "value": "State diagrams and sequence diagrams that name every screen transition and API call."
1003
+ },
1004
+ {
1005
+ "slug": "interpret-input",
1006
+ "type": "skill",
1007
+ "path": ".claude/skills/interpret-input/SKILL.md",
1008
+ "tier": "lite",
1009
+ "content_hash": "sha256:482c2842616aee461f1dd9e341113202c030342a30f3717a63f9a93eeda1751c",
1010
+ "description": "Produce a schema-validated InputArtifact from any input (text/URL/image/repo/transcript/napkin/mixed). text + repo modes work today. Other modes return schema-valid stubs (see #1427). First step of the cameo pipeline. Read-only on disk except --persist mode.",
1011
+ "inputs": [
1012
+ "Any input — text or URL or image or repo ref or transcript"
1013
+ ],
1014
+ "outputs": [
1015
+ "A schema-validated InputArtifact with kind and content"
1016
+ ],
1017
+ "problem": "Different sessions start with different input shapes \\u2014 text or URL or image or repo or transcript.",
1018
+ "value": "One schema-validated artifact from any input. Downstream skills read one shape not seven."
1019
+ },
1020
+ {
1021
+ "slug": "kiss",
1022
+ "type": "skill",
1023
+ "path": ".claude/skills/kiss/SKILL.md",
1024
+ "tier": "lite",
1025
+ "content_hash": "sha256:be2f00a8bf7bf6753a577a2b65ab6a0793fa23a9fd78569fb3113d106a223369",
1026
+ "description": "Keep It Simple. Two modes — scope (compress what we're shipping; runs /value-prop brief + /feynman + MUST/SHOULD/COULD buckets) and words (rewrite vocabulary at grade-10 reading level; mechanical big-word→small-word swap). Default mode read from input: ticket/goal → scope, paragraph text → words. Reads vocabulary from standards/bassclef-internal-jargon.md (bassclef#907 single source of truth).",
1027
+ "composes_with": [
1028
+ "value-prop",
1029
+ "feynman"
1030
+ ],
1031
+ "inputs": [
1032
+ "A ticket or goal path for scope mode",
1033
+ "Paragraph text for words mode"
1034
+ ],
1035
+ "outputs": [
1036
+ "MUST/SHOULD/COULD buckets when scope",
1037
+ "Grade-8 rewrite when words"
1038
+ ],
1039
+ "problem": "Scope grows. Prose fills with jargon. Adopters read a wall of bassclef-internal words and give up.",
1040
+ "value": "Two modes \\u2014 scope compresses what ships. Words rewrites vocabulary to grade 8. Plain English at the wire."
1041
+ },
1042
+ {
1043
+ "slug": "launch",
1044
+ "type": "skill",
1045
+ "path": ".claude/skills/launch/SKILL.md",
1046
+ "tier": "lite",
1047
+ "content_hash": "sha256:7bae88213d59c6380ff1792fbd4b5fcd060470a522093837ead0e4c438f2bacd",
1048
+ "description": "Turn an idea into a buildable plan. Produces a clickable mock gallery PLUS the spec, user stories, decomposition, and migration plan. Two sizes (medium, full). Two deploy modes — extended deploys mocks to a configured subdomain; --local writes everything to disk and serves the gallery on localhost (Anthropic API key only; no vendor accounts). For variants-only, use /stage.",
1049
+ "inputs": [
1050
+ "A rough idea or ticket or canvas"
1051
+ ],
1052
+ "outputs": [
1053
+ "Clickable mock gallery",
1054
+ "Buildable spec",
1055
+ "INVEST user stories",
1056
+ "GRASP responsibility matrix"
1057
+ ],
1058
+ "problem": "An idea is a doc. A working feature is code. The gap in between is where projects stall.",
1059
+ "value": "Turns an idea into a buildable plan \\u2014 mock gallery and spec and INVEST stories. Ready for /build."
1060
+ },
1061
+ {
1062
+ "slug": "lean-canvas",
1063
+ "type": "skill",
1064
+ "path": ".claude/skills/lean-canvas/SKILL.md",
1065
+ "tier": "lite",
1066
+ "content_hash": "sha256:06b4bfdef778c9da5a5d6298802b59d78c5ea3480553d118be6ef345cc82b7f3",
1067
+ "description": "Produce a Lean Canvas — Ash Maurya's 9-box business model template — filled through persona lenses. Two modes — commercial (revenue=dollars) and growth-loop (revenue=audience+credibility). Outputs a chain-of-beliefs file naming the riskiest assumption to validate next.",
1068
+ "inputs": [
1069
+ "Personas file",
1070
+ "Value proposition data",
1071
+ "A rough product idea"
1072
+ ],
1073
+ "outputs": [
1074
+ "Lean Canvas 9-box filled",
1075
+ "Problem and solution named per persona"
1076
+ ],
1077
+ "problem": "New products get built without naming the customer or the problem or the unfair advantage.",
1078
+ "value": "Ash Maurya's 9-box canvas filled through persona work. One page names the business."
1079
+ },
1080
+ {
1081
+ "slug": "longrun",
1082
+ "type": "skill",
1083
+ "path": ".claude/skills/longrun/SKILL.md",
1084
+ "tier": "lite",
1085
+ "content_hash": "sha256:d533674d7e66bd983644b5e3829bba2a4e83f187c9400eb602619b5cc6d648cc",
1086
+ "description": "Run a long autonomous session that paces itself — prepares scope, checkpoints at phase boundaries, closes with session log and retrospective. Three modes: prep, checkpoint, closeout.",
1087
+ "composes_with": [
1088
+ "value-prop",
1089
+ "kiss",
1090
+ "temperance",
1091
+ "luminary",
1092
+ "roadmap-reconcile",
1093
+ "retro",
1094
+ "promote",
1095
+ "session-end",
1096
+ "chronicle",
1097
+ "pattern-review"
1098
+ ],
1099
+ "inputs": [
1100
+ "prep or checkpoint or closeout mode plus scope hints"
1101
+ ],
1102
+ "outputs": [
1103
+ "Goal doc with time budget",
1104
+ "Checkpoint status at phase boundaries",
1105
+ "Session log at closeout"
1106
+ ],
1107
+ "problem": "Sessions over 50 turns drift. Context compacts and the goal disappears.",
1108
+ "value": "A long autonomous session that paces itself. Prep and checkpoint and closeout \\u2014 clean state every wake."
1109
+ },
1110
+ {
1111
+ "slug": "luminary",
1112
+ "type": "skill",
1113
+ "path": ".claude/skills/luminary/SKILL.md",
1114
+ "tier": "lite",
1115
+ "content_hash": "sha256:89e84f6e5eb5162c79b4bfcf07a0694b39363a8032bc7da1edc51b979a10175e",
1116
+ "description": "Browse and preview luminary files — filter by discipline (ux, visual, architecture, product), by claiming agent (designer, architect), or preview a specific luminary by slug. Catalog analog to /skills.",
1117
+ "inputs": [
1118
+ "Optional discipline filter — ux or visual or architecture or product"
1119
+ ],
1120
+ "outputs": [
1121
+ "Ranked list of luminaries with signatures",
1122
+ "Preview body when queried by slug"
1123
+ ],
1124
+ "problem": "Design lenses live in files no one reads. Adopters pick generic patterns because they don't know the catalog.",
1125
+ "value": "A browser for the luminary catalog. Filter by discipline. Preview by slug before you pin one to a goal."
1126
+ },
1127
+ {
1128
+ "slug": "ogilvy-writing-audit",
1129
+ "type": "skill",
1130
+ "path": ".claude/skills/ogilvy-writing-audit/SKILL.md",
1131
+ "tier": "lite",
1132
+ "content_hash": "sha256:c40cbfe29495c5e5b7257c4d8ea7c7d02057232c4bc1ce0c7fe2b0c1d4b7ed31",
1133
+ "description": "Audit prose against Ogilvy's 10 writing rules + Roman-Raphaelson principles. Produces severity-tagged violations with fixes. Diagnoses; /kiss words fixes. Trigger on 'audit this memo', 'review my writing', 'check this draft', or paste-and-ask-feedback.",
1134
+ "composes_with": [
1135
+ "kiss"
1136
+ ],
1137
+ "inputs": [
1138
+ "A file path or PR body or paragraph text"
1139
+ ],
1140
+ "outputs": [
1141
+ "Severity-tagged violation list",
1142
+ "Rewrite suggestions per finding"
1143
+ ],
1144
+ "problem": "Prose ships with jargon and long sentences and hedge words. Readers stop reading.",
1145
+ "value": "Ogilvy's ten rules applied to your prose. Severity-tagged findings that /kiss can fix."
1146
+ },
1147
+ {
1148
+ "slug": "onboard-repo",
1149
+ "type": "skill",
1150
+ "path": ".claude/skills/onboard-repo/SKILL.md",
1151
+ "tier": "lite",
1152
+ "content_hash": "sha256:9e1be83f040d6ce97dcfdbcde9d3dafd341be12cb58796931b020bc46903d75e",
1153
+ "description": "Bootstrap bassclef framework in a new repo. Installs sync hook + scaffolds config + whereami + CLAUDE.md. Modes: default / --with-deploy-host / --with-secrets / --full / --greenfield-from-intent (cold-adopter magic demo from a paragraph — uses /launch --local).",
1154
+ "inputs": [
1155
+ "Optional flags — --with-deploy-host or --with-secrets or --full"
1156
+ ],
1157
+ "outputs": [
1158
+ "Installed bassclef-sync hook",
1159
+ "Config scaffold",
1160
+ "Whereami stub"
1161
+ ],
1162
+ "problem": "Setting up bassclef in a new repo takes an hour of trial. Missing directories and wrong hook wiring.",
1163
+ "value": "One command bootstraps everything \\u2014 sync hook and config file and whereami scaffold."
1164
+ },
1165
+ {
1166
+ "slug": "pattern-review",
1167
+ "type": "skill",
1168
+ "path": ".claude/skills/pattern-review/SKILL.md",
1169
+ "tier": "lite",
1170
+ "content_hash": "sha256:5dac2d3d0000bd129d76a01fb8e6d6e047e466d8879e7f60d051baee712f50b0",
1171
+ "description": "Review code through the lens of world-class engineering patterns — GoF, Fowler, SOLID, DDD. Flag violations, suggest improvements. (Renamed from /principal-engineer on 2026-04-15 — names the output, not the persona; complements /architect-review which is system-level.)",
1172
+ "inputs": [
1173
+ "A file path or PR ref or code block"
1174
+ ],
1175
+ "outputs": [
1176
+ "Pattern gap list",
1177
+ "Misuse findings",
1178
+ "Suggested pattern per finding"
1179
+ ],
1180
+ "problem": "Code review catches style but misses architecture. A wrong pattern ships and blocks future work.",
1181
+ "value": "Review through the lens of GoF and Fowler and SOLID and DDD. Names the pattern gap or misuse."
1182
+ },
1183
+ {
1184
+ "slug": "personas",
1185
+ "type": "skill",
1186
+ "path": ".claude/skills/personas/SKILL.md",
1187
+ "tier": "lite",
1188
+ "content_hash": "sha256:0a1fd34acb292258d73ab0af11f678eb5d01a8a5866b0d3cb1cf3595fd0d8dfc",
1189
+ "description": "Load, list, and manage user personas — the bassclef WHO record. Downstream skills (value-prop-canvas, synthetic-user, user-stories, jtbd-tasks) read from its output. Defaults to operator when no personas exist.",
1190
+ "inputs": [
1191
+ "Manage command — list or add or edit or delete"
1192
+ ],
1193
+ "outputs": [
1194
+ "Persona list with names and jobs",
1195
+ "Loaded into session for downstream skills"
1196
+ ],
1197
+ "problem": "Product decisions get made for a nameless user. Downstream skills invent personas per session.",
1198
+ "value": "One record of the WHO the product serves. Every skill reads the same personas."
1199
+ },
1200
+ {
1201
+ "slug": "promote",
1202
+ "type": "skill",
1203
+ "path": ".claude/skills/promote/SKILL.md",
1204
+ "tier": "lite",
1205
+ "content_hash": "sha256:78fe6ab5360714561fb7bada51a9e45cc07c28217305c42702232a1666324fc2",
1206
+ "description": "Propose promoting an app-level standard to bassclef. Creates an issue in the current repo (not bassclef) with the bassclef-evolution label; three modes cover default, luminary upgrade, and substrate defect.",
1207
+ "composes_with": [
1208
+ "state-a-problem",
1209
+ "kiss",
1210
+ "value-prop"
1211
+ ],
1212
+ "inputs": [
1213
+ "A pattern description or code snippet or discipline learned"
1214
+ ],
1215
+ "outputs": [
1216
+ "Promote ticket filed in current repo",
1217
+ "Cross-repo mirror in bassclef-upstream"
1218
+ ],
1219
+ "problem": "Good patterns in one adopter repo stay stuck there. Every other adopter reinvents the same wheel.",
1220
+ "value": "Files a promote ticket in the current repo plus bassclef-upstream. Substrate evolves with real usage."
1221
+ },
1222
+ {
1223
+ "slug": "requirement",
1224
+ "type": "skill",
1225
+ "path": ".claude/skills/requirement/SKILL.md",
1226
+ "tier": "lite",
1227
+ "content_hash": "sha256:1640b50e955bdcfd778f41c09381c2ab6cc28c547f84dfdff52496691a9dbb7a",
1228
+ "description": "Produce Cockburn use cases + INVEST user stories for a feature in one pass. Sam writes formal use cases for a spec. Louis writes INVEST stories for a backlog. You get both from one operator input. Combines /use-case + /user-stories.",
1229
+ "composes_with": [
1230
+ "use-case",
1231
+ "user-stories",
1232
+ "personas"
1233
+ ],
1234
+ "inputs": [
1235
+ "A feature name or ticket ref"
1236
+ ],
1237
+ "outputs": [
1238
+ "Fully-dressed use cases",
1239
+ "INVEST user stories with acceptance criteria"
1240
+ ],
1241
+ "problem": "Features get built from a one-line ticket. Corners get cut. Acceptance drifts from what the persona needs.",
1242
+ "value": "Cockburn use cases plus INVEST user stories in one pass. Written for a Sam-style persona."
1243
+ },
1244
+ {
1245
+ "slug": "retro",
1246
+ "type": "skill",
1247
+ "path": ".claude/skills/retro/SKILL.md",
1248
+ "tier": "lite",
1249
+ "content_hash": "sha256:3da4f2cde8c907c7ee6e2de656e3271a47c4ee52fee6dc76b6372486985675f8",
1250
+ "description": "Session retrospective — reflect on what worked, what didn't, what to change.",
1251
+ "inputs": [
1252
+ "Optional session or goal ref"
1253
+ ],
1254
+ "outputs": [
1255
+ "Kept and Changed and Learned sections",
1256
+ "Follow-on ticket candidates"
1257
+ ],
1258
+ "problem": "Sessions end and the lessons vanish. What worked and what broke \\u2014 nowhere written.",
1259
+ "value": "A short retro that names what to keep and what to change next session."
1260
+ },
1261
+ {
1262
+ "slug": "riff",
1263
+ "type": "skill",
1264
+ "path": ".claude/skills/riff/SKILL.md",
1265
+ "tier": "lite",
1266
+ "content_hash": "sha256:86ebbfcee404ac9dc581836df768fc83ad90ad7526eefa77c1b57086ae00a2b4",
1267
+ "description": "Produce 2-3 clickable mock alternatives for a UI surface. Each mock uses a different luminary lens. Louis picks a marketing variant. Sam picks a direction before building. Combines /interpret-input + /luminary + /stage at standard + /visual-review.",
1268
+ "composes_with": [
1269
+ "interpret-input",
1270
+ "luminary",
1271
+ "visual-review"
1272
+ ],
1273
+ "inputs": [
1274
+ "A UI surface intent or design goal"
1275
+ ],
1276
+ "outputs": [
1277
+ "2-3 clickable mock variants",
1278
+ "Luminary lens per variant"
1279
+ ],
1280
+ "problem": "Design directions get one variant and no comparison. Operator picks blind. Rework is huge.",
1281
+ "value": "Two or three clickable mocks per UI surface. Each mock pins a different luminary lens."
1282
+ },
1283
+ {
1284
+ "slug": "roadmap-reconcile",
1285
+ "type": "skill",
1286
+ "path": ".claude/skills/roadmap-reconcile/SKILL.md",
1287
+ "tier": "lite",
1288
+ "content_hash": "sha256:6f8b7a0a7f79e01267c668cec078e49e1863a2012845b11e58c048608040b4c5",
1289
+ "description": "Audit canvas LR-N tables and roadmap entries against recent chronicles, merged PRs, and freshly-filed tickets — surface drift via dry-run, or apply edits with --apply. Run at /longrun prep + /sprint as a pre-flight check.",
1290
+ "inputs": [
1291
+ "Optional --dry-run or --apply flag",
1292
+ "Roadmap path or canvas ref"
1293
+ ],
1294
+ "outputs": [
1295
+ "Diff report of drift",
1296
+ "Applied edits when --apply",
1297
+ "Status per row"
1298
+ ],
1299
+ "problem": "Canvas roadmap tables get stale. Shipped work sits marked pending. Sequencing drifts from reality.",
1300
+ "value": "Diffs the roadmap against merged PRs plus fresh session logs. Applies edits so the canvas matches reality."
1301
+ },
1302
+ {
1303
+ "slug": "session-end",
1304
+ "type": "skill",
1305
+ "path": ".claude/skills/session-end/SKILL.md",
1306
+ "tier": "lite",
1307
+ "content_hash": "sha256:aed56ac85d7bd7d60a87b0db201746ad4e28031b9e30e696f751e7b72042bca4",
1308
+ "description": "Close the session cleanly — write the session log, push artifacts, update whereami. Run when the Stop hook fails or when you want to end deliberately. Three tiers of obligation: MUST, SHOULD, MAY.",
1309
+ "composes_with": [
1310
+ "chronicle",
1311
+ "whereami",
1312
+ "kiss",
1313
+ "journal",
1314
+ "retro",
1315
+ "clean-artifacts",
1316
+ "promote",
1317
+ "roadmap-reconcile"
1318
+ ],
1319
+ "inputs": [
1320
+ "Optional — run explicitly or fires from Stop hook"
1321
+ ],
1322
+ "outputs": [
1323
+ "Session log entry",
1324
+ "Whereami updated",
1325
+ "Push and tag when scoped",
1326
+ "Journal draft when notable"
1327
+ ],
1328
+ "problem": "Sessions end without writing state. Next session starts cold. Session logs missing.",
1329
+ "value": "Three tiers of close. Must-tier always runs local. Should-tier pushes if network is up."
1330
+ },
1331
+ {
1332
+ "slug": "session-log",
1333
+ "type": "skill",
1334
+ "path": ".claude/skills/session-log/SKILL.md",
1335
+ "tier": "lite",
1336
+ "content_hash": "sha256:3d60957c041abf0b360f5a1ec7e193689f381e2d72559cb9248e0370bbff4bb2",
1337
+ "description": "Write the session's log entry — what shipped, what was decided, what's still open. Reads the day's commits and conversation; outputs a markdown entry with gates fired, sources read, discoveries surfaced. Run at session end before close. Renamed from /chronicle per ADR-040.",
1338
+ "composes_with": [
1339
+ "kiss",
1340
+ "promote",
1341
+ "retro"
1342
+ ],
1343
+ "inputs": [
1344
+ "Optional Gate Evidence auto-populate flag"
1345
+ ],
1346
+ "outputs": [
1347
+ "Session log entry at chronicle/*",
1348
+ "Gate Evidence table populated"
1349
+ ],
1350
+ "problem": "Session logs get lost between mid-session interrupts and Stop hook races. Next session has no memory.",
1351
+ "value": "One log entry that names what shipped and what was decided and what's still open."
1352
+ },
1353
+ {
1354
+ "slug": "skills",
1355
+ "type": "skill",
1356
+ "path": ".claude/skills/skills/SKILL.md",
1357
+ "tier": "lite",
1358
+ "content_hash": "sha256:5e291af38dd2c21349b132330ee76490ac355bae251c0101488b6236662b1fa2",
1359
+ "description": "Browse the skill catalog live — every skill grouped by discovery cluster with descriptions, modes, and key chains. Reads SKILL.md frontmatter directly so the catalog explains itself.",
1360
+ "inputs": [
1361
+ "Optional filter — cluster name or phase or keyword"
1362
+ ],
1363
+ "outputs": [
1364
+ "Skills grouped by cluster",
1365
+ "Description per skill",
1366
+ "Tier tag per skill"
1367
+ ],
1368
+ "problem": "Bassclef ships around 99 skills. Adopters don't know which one fits their moment.",
1369
+ "value": "The catalog live. Every skill grouped by discovery cluster. Descriptions optimized for scan."
1370
+ },
1371
+ {
1372
+ "slug": "spec",
1373
+ "type": "skill",
1374
+ "path": ".claude/skills/spec/SKILL.md",
1375
+ "tier": "lite",
1376
+ "content_hash": "sha256:92563f10ca6ba5a5769b7248075f11057243c6306ce1e4c4f24a755f5a62098f",
1377
+ "description": "Spec doc from a canvas or issue. Bridges product thinking to code.",
1378
+ "inputs": [
1379
+ "A canvas path or issue ref or scope description"
1380
+ ],
1381
+ "outputs": [
1382
+ "Spec doc at specs/YYYY-MM-DD-slug.md",
1383
+ "Acceptance list",
1384
+ "Reference block"
1385
+ ],
1386
+ "problem": "Canvases sketch a product. Tickets ask for features. The bridge to code doesn't exist.",
1387
+ "value": "One spec that names the What and the Why and the acceptance list. Downstream skills read it."
1388
+ },
1389
+ {
1390
+ "slug": "sprint",
1391
+ "type": "skill",
1392
+ "path": ".claude/skills/sprint/SKILL.md",
1393
+ "tier": "lite",
1394
+ "content_hash": "sha256:91b362d06f584ca5a5526f4c87b84b4c78a603d15bd36feade9253d9ed4faf98",
1395
+ "description": "Show what's in flight and what's next. Reads project state, open issues, and the active goal; proposes the next sprint at thread level, not just the nearest leaf. Run at session start.",
1396
+ "composes_with": [
1397
+ "value-prop",
1398
+ "kiss",
1399
+ "roadmap-reconcile"
1400
+ ],
1401
+ "inputs": [
1402
+ "Optional focus flag"
1403
+ ],
1404
+ "outputs": [
1405
+ "In-flight goals plus PRs",
1406
+ "Next-work proposals",
1407
+ "Blocked items surfaced"
1408
+ ],
1409
+ "problem": "Session-start orientation takes a full read of git log and whereami and open PRs. Slow.",
1410
+ "value": "One glance at what's in flight and what's next and what's blocked. Reads project state once."
1411
+ },
1412
+ {
1413
+ "slug": "stage",
1414
+ "type": "skill",
1415
+ "path": ".claude/skills/stage/SKILL.md",
1416
+ "tier": "lite",
1417
+ "content_hash": "sha256:2e2607e6b2b8ecec2483df2f5a1791ff966149158b0ffde00c87ea54556c5923",
1418
+ "description": "Turn an idea into clickable mock variants on a deployed subdomain. Two sizes: quick (~30 min, 2 variants) and light (~2h, 3 variants + an Anthropic baseline). Operator picks a direction from phone before committing to build-tier work. For deeper buildable plans, use /launch.",
1419
+ "inputs": [
1420
+ "A UI intent or design goal",
1421
+ "Optional size — quick or light"
1422
+ ],
1423
+ "outputs": [
1424
+ "Deployed mock at a subdomain URL",
1425
+ "Multiple variants to compare"
1426
+ ],
1427
+ "problem": "A UI idea needs to be seen before it can be judged. Prose and wireframes lose the story.",
1428
+ "value": "Turns an idea into clickable mocks on a deployed subdomain. Operator taps through and picks."
1429
+ },
1430
+ {
1431
+ "slug": "state-a-problem",
1432
+ "type": "skill",
1433
+ "path": ".claude/skills/state-a-problem/SKILL.md",
1434
+ "tier": "lite",
1435
+ "content_hash": "sha256:7507fbc9ee1d1a722b9bef83308b5588e525c8308f013ac42319dc287b18fcdd",
1436
+ "description": "Draft a problem statement for a PR, issue, canvas, or spec. Two sizes — brief (≤500 chars, opener, framework implicit) and para (≤1200 chars, 5-block Who/What/When/Why-now/Outcome template). Runs /kiss --grade8 inline by default; --no-kiss opts out.",
1437
+ "composes_with": [
1438
+ "kiss",
1439
+ "value-prop"
1440
+ ],
1441
+ "inputs": [
1442
+ "A ticket ref or doc path or scope description",
1443
+ "Optional size — brief or para"
1444
+ ],
1445
+ "outputs": [
1446
+ "A problem statement that leads with user pain"
1447
+ ],
1448
+ "problem": "PR bodies and issue bodies open with framing that hides the user pain. Readers scroll past.",
1449
+ "value": "One statement that leads with who hurts and what breaks and why fix it now. Ready to paste."
1450
+ },
1451
+ {
1452
+ "slug": "temperance",
1453
+ "type": "skill",
1454
+ "path": ".claude/skills/temperance/SKILL.md",
1455
+ "tier": "lite",
1456
+ "content_hash": "sha256:c0ada5c0f9fa008e7f63b8b1d241d43326adf5a91dcdc4d46b36efeba2537f08",
1457
+ "description": "Pause-and-think gate. Asks: am I building the right thing AND building it the right way? Fires before every non-trivial action.",
1458
+ "inputs": [
1459
+ "Optional scope decision context"
1460
+ ],
1461
+ "outputs": [
1462
+ "Right-thing answer",
1463
+ "Right-way answer",
1464
+ "Drift trigger for future watch"
1465
+ ],
1466
+ "problem": "Sessions dive into edits before the operator asks whether it's the right work or the right shape.",
1467
+ "value": "A pause-and-think gate at every scope decision boundary. Six questions before code."
1468
+ },
1469
+ {
1470
+ "slug": "use-case",
1471
+ "type": "skill",
1472
+ "path": ".claude/skills/use-case/SKILL.md",
1473
+ "tier": "lite",
1474
+ "content_hash": "sha256:7d5899dd3b665f0649501c7c399dce5d21e0035be35dd1646d5e836d85340886",
1475
+ "description": "Produce Cockburn-style use cases — main success scenario + numbered extensions + preconditions + postconditions + stakeholders. Closes the gap between /user-stories (backlog tokens) and /spec (build spec). Distinct from /task-scenarios (UX research narrative).",
1476
+ "inputs": [
1477
+ "A feature or persona-scoped scope"
1478
+ ],
1479
+ "outputs": [
1480
+ "Fully-dressed use case",
1481
+ "Main success scenario plus extensions",
1482
+ "Pre/postconditions"
1483
+ ],
1484
+ "problem": "Requirements go straight to code without a main success scenario. Extension paths get invented per PR.",
1485
+ "value": "Cockburn-style use cases with numbered extensions and pre/postcondition contracts."
1486
+ },
1487
+ {
1488
+ "slug": "user-stories",
1489
+ "type": "skill",
1490
+ "path": ".claude/skills/user-stories/SKILL.md",
1491
+ "tier": "lite",
1492
+ "content_hash": "sha256:09c17f1798979adfcf66b0c60e170828bacf0f0bb7931229229cbbb60668491c",
1493
+ "description": "Produce INVEST-shaped user stories that trace back to personas, JTBDs, and value-prop-canvas entries. Backlog-intake artifact for incremental delivery. Distinct from /task-scenarios (UX research narrative) and /use-case (system behavior spec).",
1494
+ "inputs": [
1495
+ "A feature scope plus personas ref"
1496
+ ],
1497
+ "outputs": [
1498
+ "INVEST user stories per persona",
1499
+ "Acceptance criteria per story"
1500
+ ],
1501
+ "problem": "Stories get written from developer intent not persona need. INVEST shape drifts.",
1502
+ "value": "INVEST-shaped stories that trace back to personas and JTBDs and value prop."
1503
+ },
1504
+ {
1505
+ "slug": "value-prop",
1506
+ "type": "skill",
1507
+ "path": ".claude/skills/value-prop/SKILL.md",
1508
+ "tier": "lite",
1509
+ "content_hash": "sha256:e73ed43eb1236eebb73060344f6e3c170aa6e654278d4d651a55a62fbff3a213",
1510
+ "description": "Draft a value prop for a ticket, goal, or feature. Three sizes — tweet (≤280 chars claim + sharpener), brief (claim + 3 reasons), verbose (full Dunford / Moore positioning). Pick the size that matches your audience attention.",
1511
+ "inputs": [
1512
+ "A ticket ref or doc path or scope description",
1513
+ "Optional size — tweet or brief or verbose"
1514
+ ],
1515
+ "outputs": [
1516
+ "Claim plus sharpener at chosen size",
1517
+ "Ready to paste as opener"
1518
+ ],
1519
+ "problem": "PR bodies and ticket bodies open with solution-framing. The reader has no reason to care.",
1520
+ "value": "One line that names claim plus sharpener. Three sizes \\u2014 tweet and brief and verbose."
1521
+ },
1522
+ {
1523
+ "slug": "verify",
1524
+ "type": "skill",
1525
+ "path": ".claude/skills/verify/SKILL.md",
1526
+ "tier": "lite",
1527
+ "content_hash": "sha256:031240b477105df3ef6dab5c7f10f4435527637b1a1f38c874e96f4d78ee0768",
1528
+ "description": "Post-build verification gate — run after each task before committing. Matches change type to appropriate verification and writes a marker the pre-commit hook reads.",
1529
+ "inputs": [
1530
+ "Change type or scope hint"
1531
+ ],
1532
+ "outputs": [
1533
+ "Check results per gate",
1534
+ "Blocking findings",
1535
+ "Ready-to-commit signal"
1536
+ ],
1537
+ "problem": "Tests run but scope-drift and missed acceptance and ADR violations slip through.",
1538
+ "value": "Post-build gate that matches change type to check list. Runs before commit not after."
1539
+ },
1540
+ {
1541
+ "slug": "whereami",
1542
+ "type": "skill",
1543
+ "path": ".claude/skills/whereami/SKILL.md",
1544
+ "tier": "lite",
1545
+ "content_hash": "sha256:bb8950f0d34bf12f5cf547dcfa14f222e7c33ff417e4450276b5466766d40974",
1546
+ "description": "Show project state in one glance — phase, active goal, agents in flight, subsystem progress, gate checklist, freshness. Reads docs/whereami.md. Run at session start before /sprint to orient.",
1547
+ "composes_with": [
1548
+ "sprint",
1549
+ "whats-the-plan"
1550
+ ],
1551
+ "inputs": [
1552
+ "Optional freshness flag"
1553
+ ],
1554
+ "outputs": [
1555
+ "Current phase and iteration",
1556
+ "Active agents",
1557
+ "Subsystem status",
1558
+ "Gate progress"
1559
+ ],
1560
+ "problem": "Project state lives across whereami and iteration goals and chronicles and git. No single-glance view.",
1561
+ "value": "Phase and active goal and agents in flight and gate progress \\u2014 one page."
1562
+ },
1563
+ {
1564
+ "slug": "bassclef-configs-schema",
1565
+ "type": "standard",
1566
+ "path": "standards/bassclef-configs-schema.md",
1567
+ "tier": "lite",
1568
+ "content_hash": "sha256:5d1027f5bc17154d4ba1c69580a8e273216de1a9d7efbf00295dcbf0fc8f399a",
1569
+ "description": ".claude/bassclef-configs.jsonc is the unified configuration discovery surface for bassclef adoption."
1570
+ },
1571
+ {
1572
+ "slug": "bassclef-evolution",
1573
+ "type": "standard",
1574
+ "path": "standards/bassclef-evolution.md",
1575
+ "tier": "lite",
1576
+ "content_hash": "sha256:5a23fffc878db6509d20d5f7f17fc59a5892566dba54055fba3d8f76f02b3ab3",
1577
+ "description": "Bassclef evolves from three sources. Each source has a defined path to promotion. No standard enters bassclef without review."
1578
+ },
1579
+ {
1580
+ "slug": "bassclef-internal-jargon",
1581
+ "type": "standard",
1582
+ "path": "standards/bassclef-internal-jargon.md",
1583
+ "tier": "lite",
1584
+ "content_hash": "sha256:d300080f00eeb15f337e91037af4ab84e2fc556d0fe19e4f8c5e667ba8bc811c",
1585
+ "description": "This is the one list of bassclef-internal jargon terms with plain-English alternatives."
1586
+ },
1587
+ {
1588
+ "slug": "bassclef-managed-sentinel",
1589
+ "type": "standard",
1590
+ "path": "standards/bassclef-managed-sentinel.md",
1591
+ "tier": "lite",
1592
+ "content_hash": "sha256:9f0865679f5708323dd0009cf2c6cab18f1200a1e37a3672d29af949f8d6fc13",
1593
+ "description": "The .bassclef-managed sentinel marks a directory as bassclef-managed content."
1594
+ },
1595
+ {
1596
+ "slug": "bassclef-source-config",
1597
+ "type": "standard",
1598
+ "path": "standards/bassclef-source-config.md",
1599
+ "tier": "lite",
1600
+ "content_hash": "sha256:406b845be8898f00286b41d2511d95a44debcf6a0bb98e28389e77b18073ad86",
1601
+ "description": "The thin-pointer bassclef-sync hook (presence/install/bassclef-sync.template.sh and consumer-vendored bassclef-sync.sh) has two paths to load bassclef's substrate:"
1602
+ },
1603
+ {
1604
+ "slug": "deferred-actions-schema",
1605
+ "type": "standard",
1606
+ "path": "standards/deferred-actions-schema.md",
1607
+ "tier": "lite",
1608
+ "content_hash": "sha256:77f24a1bd51a09e3c73c02e06af0fb07abc031e987568ef1a03b2f775339e859",
1609
+ "description": "Standard for docs/deferred-actions/*.md entries — the capability-routed handoff primitive that carries deferred work across session modalities."
1610
+ },
1611
+ {
1612
+ "slug": "docs-sync-allowlist",
1613
+ "type": "standard",
1614
+ "path": "standards/docs-sync-allowlist.md",
1615
+ "tier": "lite",
1616
+ "content_hash": "sha256:951e46161c6035e42640709bf8c98d5addf8ab226befc7d0b80405303a4acd6a",
1617
+ "description": "Files whose change triggers bassclef-docs-sync.yml."
1618
+ },
1619
+ {
1620
+ "slug": "graceful-exit",
1621
+ "type": "standard",
1622
+ "path": "standards/graceful-exit.md",
1623
+ "tier": "lite",
1624
+ "content_hash": "sha256:57b764759a55c7649fbd827fbfb00037c996d917097e9f1847da51831511db40",
1625
+ "description": "Defines how autonomous agent sessions save state, handle interruptions, and enable the next session to resume without data loss or ambiguity."
1626
+ },
1627
+ {
1628
+ "slug": "hook-idempotency",
1629
+ "type": "standard",
1630
+ "path": "standards/hook-idempotency.md",
1631
+ "tier": "lite",
1632
+ "content_hash": "sha256:003c862bade64c9064c1cf5ce7e28b71340ac5c43942327903fa09791f876710",
1633
+ "description": "Hooks must be idempotent. If a hook fails partway and reruns, it must not duplicate work, generate false warnings, or corrupt state."
1634
+ },
1635
+ {
1636
+ "slug": "lite",
1637
+ "type": "standard",
1638
+ "path": "standards/tier-runtime-deps/lite.md",
1639
+ "tier": "lite",
1640
+ "content_hash": "sha256:376ae592dc5bf9db06999a98a3fffc7779d2f1deca150fb104a7cbd063a23fa3",
1641
+ "description": "Per standards/tier-dependency-analysis.md Source 3."
1642
+ },
1643
+ {
1644
+ "slug": "lite-manifest-schema-changes",
1645
+ "type": "standard",
1646
+ "path": "standards/lite-manifest-schema-changes.md",
1647
+ "tier": "lite",
1648
+ "content_hash": "sha256:b1d6e3bd8a9ad21fdce030f6268cb7b5fea3065a8f0a4a602bd4fdb76784879d",
1649
+ "description": "Chronological ledger of every lite-manifest schema change. Adopters read this before sync to know what shifted."
1650
+ },
1651
+ {
1652
+ "slug": "luminary-problem-patterns",
1653
+ "type": "standard",
1654
+ "path": "standards/luminary-problem-patterns.md",
1655
+ "tier": "lite",
1656
+ "content_hash": "sha256:5de157922db7cf41b2edf29e8eb3dd4b13ff3cc97b20285e418343904ef39208",
1657
+ "description": "Auto-generated. Do not hand-edit. Re-run via: bash scripts/luminary-problem-patterns-aggregate.sh"
1658
+ },
1659
+ {
1660
+ "slug": "ogilvy-writing-rules",
1661
+ "type": "standard",
1662
+ "path": "standards/ogilvy-writing-rules.md",
1663
+ "tier": "lite",
1664
+ "content_hash": "sha256:b0a0c6dfeef989bf6a9ce4b97b715c09652794413def699233297faca2b47f01",
1665
+ "description": "This standard holds the 10 rules bassclef's writing-craft discipline references."
1666
+ },
1667
+ {
1668
+ "slug": "opener-discipline",
1669
+ "type": "standard",
1670
+ "path": "standards/opener-discipline.md",
1671
+ "tier": "lite",
1672
+ "content_hash": "sha256:158e771361178f07991c0d52222856c4ce1226e8bc8177e734356666a5f87dd7",
1673
+ "description": "Every planning-surface opener carries three blocks in this order — Problem, Value prop, Evidence."
1674
+ },
1675
+ {
1676
+ "slug": "operator-facing-prose-discipline",
1677
+ "type": "standard",
1678
+ "path": "standards/operator-facing-prose-discipline.md",
1679
+ "tier": "lite",
1680
+ "content_hash": "sha256:d474018a4058b6ac94e618a8f0833ad0007311e151a2d8c9385c1ea7f0b83c17",
1681
+ "description": "Universal principle: any shorthand in operator-facing prose carries a plain-language gloss at first mention per response."
1682
+ },
1683
+ {
1684
+ "slug": "project-directory-layout",
1685
+ "type": "standard",
1686
+ "path": "standards/project-directory-layout.md",
1687
+ "tier": "lite",
1688
+ "content_hash": "sha256:fec13744cd05f15144f313fe284c1d471be755bceb2b94e476e0629ffe231c50",
1689
+ "description": "Standard directory structure for sunj-labs repositories."
1690
+ },
1691
+ {
1692
+ "slug": "release-tagging",
1693
+ "type": "standard",
1694
+ "path": "standards/release-tagging.md",
1695
+ "tier": "lite",
1696
+ "content_hash": "sha256:02d26ec55708de37cf5993c0a26a2843cf68c4f5a6c0e0001382dcaec8a32bf2",
1697
+ "description": "Every release of bassclef carries a semantic version tag."
1698
+ },
1699
+ {
1700
+ "slug": "sdlc-compliance",
1701
+ "type": "standard",
1702
+ "path": "standards/sdlc-compliance.md",
1703
+ "tier": "lite",
1704
+ "content_hash": "sha256:a33d198a8a1e1225345f3b775f98ce8e55dc20fa7db5d3f558bf2024355af613",
1705
+ "description": "Defines how gate evidence is captured, where it lives, and how it's queried."
1706
+ },
1707
+ {
1708
+ "slug": "secrets-lifecycle",
1709
+ "type": "standard",
1710
+ "path": "standards/secrets-lifecycle.md",
1711
+ "tier": "lite",
1712
+ "content_hash": "sha256:9ce8862a12edbda6dfef2246bd19a43fbd8e469958883ca9ab57dbef91f0468c",
1713
+ "description": "substrate.secrets.md is the single declarative source for secrets/token lifecycle in any bassclef-substrate repo."
1714
+ },
1715
+ {
1716
+ "slug": "security-scanner-adapter",
1717
+ "type": "standard",
1718
+ "path": "standards/security-scanner-adapter.md",
1719
+ "tier": "lite",
1720
+ "content_hash": "sha256:e78ab13fdfe3a654365e7c48bbeb2c759238073485a8392fb9794ddaae12ca16",
1721
+ "description": "The adapter pattern that turns bassclef's per-language security defaults into adopter-runnable CI."
1722
+ },
1723
+ {
1724
+ "slug": "skill-output-discipline",
1725
+ "type": "standard",
1726
+ "path": "standards/skill-output-discipline.md",
1727
+ "tier": "lite",
1728
+ "content_hash": "sha256:00f7d97c1c39750d45e52a02d9f7ddb11b20b856eb35f0b9cf13fd39a8086d9c",
1729
+ "description": "Every skill that returns operator-facing prose runs /kiss words --rewrite on the full output before returning."
1730
+ },
1731
+ {
1732
+ "slug": "state-spine",
1733
+ "type": "standard",
1734
+ "path": "standards/state-spine.md",
1735
+ "tier": "lite",
1736
+ "content_hash": "sha256:a3bccef9419e73b896bbf7dec3512530dd181654aae8769e255e90f3cfc682c0",
1737
+ "description": "Schema'd JSON state spine for bassclef's substrate."
1738
+ },
1739
+ {
1740
+ "slug": "tech-stack-config",
1741
+ "type": "standard",
1742
+ "path": "standards/tech-stack-config.md",
1743
+ "tier": "lite",
1744
+ "content_hash": "sha256:5822c04b98cf9ad4137b704a3b10b4798c6bcb04ddcf014bbea1049853d35138",
1745
+ "description": "The tech_stack: block inside .claude/bassclef-configs.jsonc declares the adopter's primary tech stack."
1746
+ },
1747
+ {
1748
+ "slug": "tier-dependency-analysis",
1749
+ "type": "standard",
1750
+ "path": "standards/tier-dependency-analysis.md",
1751
+ "tier": "lite",
1752
+ "content_hash": "sha256:e8fd2806347c553f133eb2d2cc68e46239e87401590b34a88ea82e1ce61167c5",
1753
+ "description": "Reference doc for the tier-dependency-audit subsystem."
1754
+ },
1755
+ {
1756
+ "slug": "tier-tag-schema",
1757
+ "type": "standard",
1758
+ "path": "standards/tier-tag-schema.md",
1759
+ "tier": "lite",
1760
+ "content_hash": "sha256:aa782a67e851cc7741ae903b8f7cf7e56ce197f5500bfaf9cc0720131d1d1134",
1761
+ "description": "Per-file maturity-signal field that governs flow from bassclef-upstream (upstream experimental) → bassclef (public hardened release mirror)."
1762
+ },
1763
+ {
1764
+ "slug": "whereami-schema",
1765
+ "type": "standard",
1766
+ "path": "standards/whereami-schema.md",
1767
+ "tier": "lite",
1768
+ "content_hash": "sha256:e7f0aab23b635bde944c296f9b0d0ca734535464cb28373ca441031553229364",
1769
+ "description": "docs/whereami.md is the authoritative project-state snapshot in any bassclef-substrate repo."
1770
+ },
1771
+ {
1772
+ "slug": "writing-guide",
1773
+ "type": "standard",
1774
+ "path": "standards/writing-guide.md",
1775
+ "tier": "lite",
1776
+ "content_hash": "sha256:7878c3fb53691769f2597928f4b4cadee66d1121ff9254d187f41ee4ba54526d",
1777
+ "description": "Technical. Direct. For the next agent or session picking up the work."
1778
+ },
1779
+ {
1780
+ "slug": "deferred-action-template",
1781
+ "type": "template",
1782
+ "path": "templates/deferred-action-template.md",
1783
+ "tier": "lite",
1784
+ "content_hash": "sha256:e89142d26d733678d202853e9de6d924a5cd9fb24f7b1110a8c4b5d0100862ab"
1785
+ },
1786
+ {
1787
+ "slug": "whereami-template",
1788
+ "type": "template",
1789
+ "path": "templates/whereami-template.md",
1790
+ "tier": "lite",
1791
+ "content_hash": "sha256:40578aac16ae0a0cfa3a91eb96d23c1fde11dcfdbd4034f7f8557dd3b8d74934"
1792
+ }
1793
+ ]
1794
+ }