@thebassclef/lite 1.1.1 → 1.2.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.cjs +23 -6
- package/dist/cli.js +23 -6
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/lite/.claude/bassclef-configs.jsonc +56 -0
- package/dist/lite/.claude/bassclef-orientation.md +120 -0
- package/dist/lite/.claude/hooks/adr-discipline-check.sh +132 -0
- package/dist/lite/.claude/hooks/atomic-pr-check.sh +169 -0
- package/dist/lite/.claude/hooks/auto-save-idle.sh +51 -0
- package/dist/lite/.claude/hooks/bassclef-sync.sh +51 -13
- package/dist/lite/.claude/hooks/bet-doc-gate.sh +283 -0
- package/dist/lite/.claude/hooks/bug-diagnosis.sh +64 -0
- package/dist/lite/.claude/hooks/destructive-command-guard.sh +136 -0
- package/dist/lite/.claude/hooks/file-rename-discipline-check.sh +147 -0
- package/dist/lite/.claude/hooks/hook-classifier-canary.sh +158 -0
- package/dist/lite/.claude/hooks/kiss-default-check.sh +129 -0
- package/dist/lite/.claude/hooks/multi-tenancy-check.sh +83 -0
- package/dist/lite/.claude/hooks/oo-ad-entry-point-check.sh +216 -0
- package/dist/lite/.claude/hooks/operator-private-path-check.sh +203 -0
- package/dist/lite/.claude/hooks/pattern-annotation-validate.sh +142 -0
- package/dist/lite/.claude/hooks/plain-english-steering.sh +15 -1
- package/dist/lite/.claude/hooks/post-write-trace.sh +66 -0
- package/dist/lite/.claude/hooks/pr-body-scrub-check.sh +446 -0
- package/dist/lite/.claude/hooks/pre-commit-identifier-leak-scrub.sh +137 -0
- package/dist/lite/.claude/hooks/pre-gh-pr-body-scrub.sh +192 -0
- package/dist/lite/.claude/hooks/pre-gh-pr-title-scrub.sh +172 -0
- package/dist/lite/.claude/hooks/role-entry-gate.sh +115 -0
- package/dist/lite/.claude/hooks/save-state.sh +268 -0
- package/dist/lite/.claude/hooks/session-reflection.d/08-settings-drift.sh +8 -1
- package/dist/lite/.claude/hooks/session-reflection.d/10-abrupt-stop-recovery.sh +52 -0
- package/dist/lite/.claude/hooks/session-reflection.d/55-orientation-gate.sh +40 -4
- package/dist/lite/.claude/hooks/session-reflection.d/80-hook-heartbeat-check.sh +12 -5
- package/dist/lite/.claude/hooks/session-reflection.d/81-hook-manifest-staleness.sh +18 -2
- package/dist/lite/.claude/hooks/session-reflection.d/91-npm-version-drift.sh +54 -0
- package/dist/lite/.claude/hooks/session-reflection.d/tests/10-abrupt-stop-recovery.test.sh +95 -0
- package/dist/lite/.claude/hooks/session-reflection.sh +62 -15
- package/dist/lite/.claude/hooks/tool-failure-diagnosis.sh +50 -0
- package/dist/lite/.claude/luminaries/andrej-karpathy.md +165 -0
- package/dist/lite/.claude/luminaries/dave-gray.md +155 -0
- package/dist/lite/.claude/luminaries/gary-klein.md +166 -0
- package/dist/lite/.claude/luminaries/kaoru-ishikawa.md +162 -0
- package/dist/lite/.claude/luminaries/lean-product-canvas.md +33 -0
- package/dist/lite/.claude/luminaries/luke-wroblewski.md +224 -0
- package/dist/lite/.claude/luminaries/ryan-singer.md +113 -0
- package/dist/lite/.claude/luminaries/steve-krug.md +168 -0
- package/dist/lite/.claude/luminaries/tony-ulwick.md +134 -0
- package/dist/lite/.claude/rules/arc-level-orientation-before-leaf.md +60 -0
- package/dist/lite/.claude/rules/architect-review-discipline.md +71 -0
- package/dist/lite/.claude/rules/auto-fix-criteria.md +126 -0
- package/dist/lite/.claude/rules/bassclef-hook-drift-blocker.md +144 -0
- package/dist/lite/.claude/rules/bassclef-models-discovery.md +107 -0
- package/dist/lite/.claude/rules/bassclef-workflow-parity.md +104 -0
- package/dist/lite/.claude/rules/cost-governance.md +154 -0
- package/dist/lite/.claude/rules/file-rename-discipline.md +95 -0
- package/dist/lite/.claude/rules/mechanism-fidelity.md +88 -0
- package/dist/lite/.claude/rules/prototype-production-coupling.md +125 -0
- package/dist/lite/.claude/rules/quick-fix-criteria.md +90 -0
- package/dist/lite/.claude/rules/session-artifacts.md +30 -0
- package/dist/lite/.claude/rules/sibling-smoke-after-substrate-change.md +107 -0
- package/dist/lite/.claude/rules/substrate-as-system.md +67 -0
- package/dist/lite/.claude/rules/usability.md +22 -0
- package/dist/lite/.claude/settings.json +20 -0
- package/dist/lite/.claude/skills/agent-research-spawn/SKILL.md +100 -0
- package/dist/lite/.claude/skills/architect-review/SKILL.md +201 -0
- package/dist/lite/.claude/skills/auto-fix/SKILL.md +297 -0
- package/dist/lite/.claude/skills/autonomous/SKILL.md +300 -0
- package/dist/lite/.claude/skills/bind-subdomain/SKILL.md +232 -0
- package/dist/lite/.claude/skills/canvas/SKILL.md +41 -0
- package/dist/lite/.claude/skills/deploy-prod/SKILL.md +106 -0
- package/dist/lite/.claude/skills/docs-sync/SKILL.md +188 -0
- package/dist/lite/.claude/skills/eisenhower/SKILL.md +273 -0
- package/dist/lite/.claude/skills/empathy-map/SKILL.md +168 -0
- package/dist/lite/.claude/skills/frontend-design/SKILL.md +53 -0
- package/dist/lite/.claude/skills/interview-me/SKILL.md +171 -0
- package/dist/lite/.claude/skills/journal-export/SKILL.md +293 -0
- package/dist/lite/.claude/skills/jtbd-tasks/SKILL.md +203 -0
- package/dist/lite/.claude/skills/objectory-decompose/SKILL.md +256 -0
- package/dist/lite/.claude/skills/pick-luminaries/SKILL.md +100 -0
- package/dist/lite/.claude/skills/pre-mortem/SKILL.md +180 -0
- package/dist/lite/.claude/skills/prototype-gallery/SKILL.md +264 -0
- package/dist/lite/.claude/skills/provision-deploy-host/SKILL.md +257 -0
- package/dist/lite/.claude/skills/quick-fix/SKILL.md +273 -0
- package/dist/lite/.claude/skills/release/SKILL.md +311 -0
- package/dist/lite/.claude/skills/release-notes/SKILL.md +202 -0
- package/dist/lite/.claude/skills/rfc/SKILL.md +222 -0
- package/dist/lite/.claude/skills/riff-prototypes/SKILL.md +637 -0
- package/dist/lite/.claude/skills/secrets-bootstrap/SKILL.md +209 -0
- package/dist/lite/.claude/skills/skill/SKILL.md +304 -0
- package/dist/lite/.claude/skills/smoke-test/SKILL.md +100 -0
- package/dist/lite/.claude/skills/state/SKILL.md +204 -0
- package/dist/lite/.claude/skills/substrate-check/SKILL.md +218 -0
- package/dist/lite/.claude/skills/synthetic-user/SKILL.md +381 -0
- package/dist/lite/.claude/skills/task-scenarios/SKILL.md +105 -0
- package/dist/lite/.claude/skills/tier-dependency-audit/SKILL.md +139 -0
- package/dist/lite/.claude/skills/ux-migration/SKILL.md +424 -0
- package/dist/lite/.claude/skills/value-prop-canvas/SKILL.md +297 -0
- package/dist/lite/README.md +5 -1
- package/dist/lite/gitignore +6 -0
- package/dist/lite/lib/bassclef-dir-resolver.sh +85 -0
- package/dist/lite/lib/clone-failure-classifier.sh +59 -0
- package/dist/lite/lib/fixture-builder.sh +190 -0
- package/dist/lite/lib/fresh-install-check.sh +49 -0
- package/dist/lite/lib/hook-heartbeat.sh +0 -1
- package/dist/lite/lib/mechanism-fidelity.sh +569 -0
- package/dist/lite/lib/npm-version-check.sh +112 -0
- package/dist/lite/lib/preview-state.sh +229 -0
- package/dist/lite/lib/session-rescue.sh +0 -1
- package/dist/lite/scripts/generate-lite-manifest.sh +145 -4
- package/dist/lite/scripts/lite-manifest-drift-check.sh +5 -1
- package/dist/lite/standards/architect-review-discipline.md +222 -0
- package/dist/lite/standards/bassclef-platform.md +249 -0
- package/dist/lite/standards/bassclef-test-repos.md +97 -0
- package/dist/lite/standards/bassclef-wiring-manifest.json +25 -1
- package/dist/lite/standards/cold-adopter-harness.md +205 -0
- package/dist/lite/standards/data-management.md +135 -0
- package/dist/lite/standards/frontend-stack/nextjs-prisma.md +124 -0
- package/dist/lite/standards/lite-manifest-schema-changes.md +27 -0
- package/dist/lite/standards/lite-manifest.json +1456 -14
- package/dist/lite/standards/mechanism-fidelity.md +205 -0
- package/dist/lite/standards/operator-private-discipline.md +200 -0
- package/dist/lite/standards/operator-to-public-flow.md +195 -0
- package/dist/lite/standards/prototype-gallery.md +251 -0
- package/dist/lite/standards/pseudonym-key-schema.md +109 -0
- package/dist/lite/standards/sibling-validation-checklist.md +181 -0
- package/dist/lite/standards/slack-notifications.md +161 -0
- package/dist/lite/standards/synthetic-user-testing.md +173 -0
- package/dist/lite/standards/vendor-bindings.md +165 -0
- package/dist/lite/standards/vendor-plugins/frontend-design.md +66 -0
- package/dist/lite/standards/vpc-fit-validation.md +167 -0
- package/dist/lite/templates/gallery-yml.md +113 -0
- package/dist/lite/templates/product-canvas.md +169 -0
- package/dist/lite/templates/value-prop-canvas.md +180 -0
- package/package.json +3 -3
- /package/dist/lite/{whereami.md → docs/whereami.md} +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"tier": "lite",
|
|
3
|
-
"manifest_version": "1.
|
|
4
|
-
"generated_at": "2026-09-
|
|
3
|
+
"manifest_version": "1.8.5",
|
|
4
|
+
"generated_at": "2026-09-18T12:53:51Z",
|
|
5
5
|
"entries": [
|
|
6
6
|
{
|
|
7
7
|
"slug": "029-release-pipeline",
|
|
@@ -83,6 +83,222 @@
|
|
|
83
83
|
"content_hash": "sha256:8beb53a004293f600e1e405ffa7a1a588a0fbb4aac2c29de74db661f443342a0",
|
|
84
84
|
"description": "Adversarial by design. Evaluates PRs against spec, not just style. Verifies tests, ADR compliance, Designer sign-off. Assumes Builder missed something."
|
|
85
85
|
},
|
|
86
|
+
{
|
|
87
|
+
"slug": "00-bassclef-hook-connect",
|
|
88
|
+
"type": "hook",
|
|
89
|
+
"path": ".claude/hooks/session-reflection.d/00-bassclef-hook-connect.sh",
|
|
90
|
+
"tier": "lite",
|
|
91
|
+
"content_hash": "sha256:732f8c5a9c2e206f55246aafbdd7fd5c2fa2a154b37b7281b238f0b1175e1ba0",
|
|
92
|
+
"description": "00-bassclef-hook-connect.sh — Auto-connect bassclef hooks to adopter settings.json."
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
"slug": "05-active-bet",
|
|
96
|
+
"type": "hook",
|
|
97
|
+
"path": ".claude/hooks/session-reflection.d/05-active-bet.sh",
|
|
98
|
+
"tier": "lite",
|
|
99
|
+
"content_hash": "sha256:aa9a4b158cca53238bf9cdf5cf56a8606807100f88ff8042155bf0266b004bfd",
|
|
100
|
+
"description": "05-active-bet.sh — Surface in_flight_bet from whereami at SessionStart"
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"slug": "08-settings-drift",
|
|
104
|
+
"type": "hook",
|
|
105
|
+
"path": ".claude/hooks/session-reflection.d/08-settings-drift.sh",
|
|
106
|
+
"tier": "lite",
|
|
107
|
+
"content_hash": "sha256:610c46bab04ca47af207824cc5faa24c7754c00b976b71d9be77057e9ea87a63",
|
|
108
|
+
"description": "Drift detector — fires at every SessionStart via session-reflection.sh."
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"slug": "10-abrupt-stop-recovery",
|
|
112
|
+
"type": "hook",
|
|
113
|
+
"path": ".claude/hooks/session-reflection.d/10-abrupt-stop-recovery.sh",
|
|
114
|
+
"tier": "lite",
|
|
115
|
+
"content_hash": "sha256:369029c35a3505a913bf5520951f577dbf712692dff626eb371f3d009a32d35e",
|
|
116
|
+
"description": "Abrupt-stop detection: dirty working tree indicates the previous"
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
"slug": "12-session-lock",
|
|
120
|
+
"type": "hook",
|
|
121
|
+
"path": ".claude/hooks/session-reflection.d/12-session-lock.sh",
|
|
122
|
+
"tier": "lite",
|
|
123
|
+
"content_hash": "sha256:5ea5b22abec67f589d8531ae48bc4808c0725a132c46e1df04338fb0e130f8f2",
|
|
124
|
+
"description": "SESSION_LOCK presence: surface to operator + future agents that"
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
"slug": "15-substrate-config-validate",
|
|
128
|
+
"type": "hook",
|
|
129
|
+
"path": ".claude/hooks/session-reflection.d/15-substrate-config-validate.sh",
|
|
130
|
+
"tier": "lite",
|
|
131
|
+
"content_hash": "sha256:4de52c29ed579a19aa6526dac8654067beae6b3372611d8e38f4b39d034515ac",
|
|
132
|
+
"description": "15-substrate-config-validate.sh"
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"slug": "20-artifact-staleness",
|
|
136
|
+
"type": "hook",
|
|
137
|
+
"path": ".claude/hooks/session-reflection.d/20-artifact-staleness.sh",
|
|
138
|
+
"tier": "lite",
|
|
139
|
+
"content_hash": "sha256:5a406be60669e106c99e98da00d7acb8e9ce834a84e1145d244f5121cfd0f9a9",
|
|
140
|
+
"description": "Artifact-staleness checks: chronicle, danger-mode summary,"
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
"slug": "30-metrics-staleness",
|
|
144
|
+
"type": "hook",
|
|
145
|
+
"path": ".claude/hooks/session-reflection.d/30-metrics-staleness.sh",
|
|
146
|
+
"tier": "lite",
|
|
147
|
+
"content_hash": "sha256:6a296054a37741db7a9161a11e8582ce31f489f8fb1683d3c2cf2daf981242a7",
|
|
148
|
+
"description": "Metrics-staleness check: version tags, iteration closeouts, metrics"
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
"slug": "35-post-merge-whereami-self-heal",
|
|
152
|
+
"type": "hook",
|
|
153
|
+
"path": ".claude/hooks/session-reflection.d/35-post-merge-whereami-self-heal.sh",
|
|
154
|
+
"tier": "lite",
|
|
155
|
+
"content_hash": "sha256:e8bfe72bcf337d5cb3f8b6bd9caf476ce564a96187f119fb091ec7edb0e730d5",
|
|
156
|
+
"description": "Post-merge whereami self-heal (bassclef#505 Option A — LR7 WU-2)."
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"slug": "36-whereami-size-check",
|
|
160
|
+
"type": "hook",
|
|
161
|
+
"path": ".claude/hooks/session-reflection.d/36-whereami-size-check.sh",
|
|
162
|
+
"tier": "lite",
|
|
163
|
+
"content_hash": "sha256:4ab86bfe53d2f230d5996edf64f79124ca497358362feffdafaadf4cad17fc63",
|
|
164
|
+
"description": "Whereami size check + auto-rotate (bassclef-upstream#1284)."
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
"slug": "40-gate-compliance",
|
|
168
|
+
"type": "hook",
|
|
169
|
+
"path": ".claude/hooks/session-reflection.d/40-gate-compliance.sh",
|
|
170
|
+
"tier": "lite",
|
|
171
|
+
"content_hash": "sha256:1a39905ea0f34bae1d7715d3f6568b6cf3b06988ff0795fe5eef3f5cce83ef85",
|
|
172
|
+
"description": "Gate-compliance check: if /verify or /temperance fire below 80% across"
|
|
173
|
+
},
|
|
174
|
+
{
|
|
175
|
+
"slug": "45-auto-sync-status",
|
|
176
|
+
"type": "hook",
|
|
177
|
+
"path": ".claude/hooks/session-reflection.d/45-auto-sync-status.sh",
|
|
178
|
+
"tier": "lite",
|
|
179
|
+
"content_hash": "sha256:2299d49ca86023593e24b4f034dcb7f33e0a30637ce6559d039e50287628c78b",
|
|
180
|
+
"description": "45-auto-sync-status.sh — Always-on version status line"
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
"slug": "50-evolution-issues",
|
|
184
|
+
"type": "hook",
|
|
185
|
+
"path": ".claude/hooks/session-reflection.d/50-evolution-issues.sh",
|
|
186
|
+
"tier": "lite",
|
|
187
|
+
"content_hash": "sha256:5f4acc587b98913ceebcd228b7ab4f0b7cf630410bd299a63ecc2ac90563787d",
|
|
188
|
+
"description": "Bassclef-evolution promotion scan: in bassclef sessions only, list"
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
"slug": "55-orientation-gate",
|
|
192
|
+
"type": "hook",
|
|
193
|
+
"path": ".claude/hooks/session-reflection.d/55-orientation-gate.sh",
|
|
194
|
+
"tier": "lite",
|
|
195
|
+
"content_hash": "sha256:3c1b2734b52f77466126ee475e02cad3388d5a4a34483ba24aa7ac4dc0e4b5c9",
|
|
196
|
+
"description": "55-orientation-gate.sh"
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
"slug": "56-roadmap-reconcile-gate",
|
|
200
|
+
"type": "hook",
|
|
201
|
+
"path": ".claude/hooks/session-reflection.d/56-roadmap-reconcile-gate.sh",
|
|
202
|
+
"tier": "lite",
|
|
203
|
+
"content_hash": "sha256:c385556d7f4be34c2970f34ced722dd5f909d5f280151ef18abc1384eb6dffeb",
|
|
204
|
+
"description": "56-roadmap-reconcile-gate.sh"
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
"slug": "60-deferred-actions",
|
|
208
|
+
"type": "hook",
|
|
209
|
+
"path": ".claude/hooks/session-reflection.d/60-deferred-actions.sh",
|
|
210
|
+
"tier": "lite",
|
|
211
|
+
"content_hash": "sha256:b119d0700df5823afeed631a6f4ddfb9cb0f302577e3b3977a30c8ddb85acd60",
|
|
212
|
+
"description": "Deferred-actions scan: enumerate docs/deferred-actions/*.md, detect current"
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
"slug": "70-recent-strategic-artifacts",
|
|
216
|
+
"type": "hook",
|
|
217
|
+
"path": ".claude/hooks/session-reflection.d/70-recent-strategic-artifacts.sh",
|
|
218
|
+
"tier": "lite",
|
|
219
|
+
"content_hash": "sha256:c3d8febfd3e9363df6da880a91493879893d0d3eeeabdba9a07d8fcfb7745645",
|
|
220
|
+
"description": "Recent Strategic Artifacts — session-start branch of artifact-ingestion gate."
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
"slug": "75-prior-r8-findings",
|
|
224
|
+
"type": "hook",
|
|
225
|
+
"path": ".claude/hooks/session-reflection.d/75-prior-r8-findings.sh",
|
|
226
|
+
"tier": "lite",
|
|
227
|
+
"content_hash": "sha256:359d40a580120ecd483b3289263183c2a4784edd4044290e6a35f368f9a7e98b",
|
|
228
|
+
"description": "75-prior-r8-findings.sh — SessionStart fragment that surfaces prior R8"
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
"slug": "80-hook-heartbeat-check",
|
|
232
|
+
"type": "hook",
|
|
233
|
+
"path": ".claude/hooks/session-reflection.d/80-hook-heartbeat-check.sh",
|
|
234
|
+
"tier": "lite",
|
|
235
|
+
"content_hash": "sha256:4467390bb6f7dfa418c799ce175a9febc395e3b883c720c562e2c42ffdb1ff81",
|
|
236
|
+
"description": "Hook heartbeat check — reads standards/hook-cadence.json, calls"
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
"slug": "80-workflow-staleness",
|
|
240
|
+
"type": "hook",
|
|
241
|
+
"path": ".claude/hooks/session-reflection.d/80-workflow-staleness.sh",
|
|
242
|
+
"tier": "lite",
|
|
243
|
+
"content_hash": "sha256:5bb185044991df0d2e658cb12f10f3306add8682a270f0005b73f30617d3cb6c",
|
|
244
|
+
"description": "Workflow-staleness — surfaces silent bassclef workflow failures at"
|
|
245
|
+
},
|
|
246
|
+
{
|
|
247
|
+
"slug": "81-hook-manifest-staleness",
|
|
248
|
+
"type": "hook",
|
|
249
|
+
"path": ".claude/hooks/session-reflection.d/81-hook-manifest-staleness.sh",
|
|
250
|
+
"tier": "lite",
|
|
251
|
+
"content_hash": "sha256:e3baa84fdb41585c51779773a2f63837eaab9f7896f9f5492a2db54d7269b75d",
|
|
252
|
+
"description": "Hook manifest staleness — flags standards/hook-cadence.json when it"
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
"slug": "90-release-backlog",
|
|
256
|
+
"type": "hook",
|
|
257
|
+
"path": ".claude/hooks/session-reflection.d/90-release-backlog.sh",
|
|
258
|
+
"tier": "lite",
|
|
259
|
+
"content_hash": "sha256:125cfa93c84a896166eedcaa21ce7b7312397212ef52ec2d825586fba43370b3",
|
|
260
|
+
"description": "90-release-backlog.sh"
|
|
261
|
+
},
|
|
262
|
+
{
|
|
263
|
+
"slug": "90-secrets-expiry",
|
|
264
|
+
"type": "hook",
|
|
265
|
+
"path": ".claude/hooks/session-reflection.d/90-secrets-expiry.sh",
|
|
266
|
+
"tier": "lite",
|
|
267
|
+
"content_hash": "sha256:86003d195b27ce3c9223fadbcccb9d1960f2e8e99c4e16f4cbbb711ae4672b32",
|
|
268
|
+
"description": "Secrets-expiry scan: parse substrate.secrets.md, surface BLOCKED"
|
|
269
|
+
},
|
|
270
|
+
{
|
|
271
|
+
"slug": "91-npm-version-drift",
|
|
272
|
+
"type": "hook",
|
|
273
|
+
"path": ".claude/hooks/session-reflection.d/91-npm-version-drift.sh",
|
|
274
|
+
"tier": "lite",
|
|
275
|
+
"content_hash": "sha256:ac46d4e63ea496bac02f236f199ede80b13fe4cf4f98cc333f9b1e2c52594576",
|
|
276
|
+
"description": "shellcheck shell=bash disable=SC1090"
|
|
277
|
+
},
|
|
278
|
+
{
|
|
279
|
+
"slug": "95-settings-hook-verify",
|
|
280
|
+
"type": "hook",
|
|
281
|
+
"path": ".claude/hooks/session-reflection.d/95-settings-hook-verify.sh",
|
|
282
|
+
"tier": "lite",
|
|
283
|
+
"content_hash": "sha256:b3cccaf7acf82d2832b60d214e08b22384b4f4dbd9cd9f4e68b07ca85706eb6a",
|
|
284
|
+
"description": "Settings hook path verifier — fires at every SessionStart via"
|
|
285
|
+
},
|
|
286
|
+
{
|
|
287
|
+
"slug": "95-telemetry-emit",
|
|
288
|
+
"type": "hook",
|
|
289
|
+
"path": ".claude/hooks/session-reflection.d/95-telemetry-emit.sh",
|
|
290
|
+
"tier": "lite",
|
|
291
|
+
"content_hash": "sha256:f92e876d5d8057d1f1fb111be5a3e97ed06e9e6bded075be3302b96b69d91a1d",
|
|
292
|
+
"description": ".claude/hooks/session-reflection.d/95-telemetry-emit.sh"
|
|
293
|
+
},
|
|
294
|
+
{
|
|
295
|
+
"slug": "97-install-class-dispatch",
|
|
296
|
+
"type": "hook",
|
|
297
|
+
"path": ".claude/hooks/session-reflection.d/97-install-class-dispatch.sh",
|
|
298
|
+
"tier": "lite",
|
|
299
|
+
"content_hash": "sha256:84ad2a7a53280369506a584d96085acc143a592d50fc9dd6ca70fe9ca9f6eaef",
|
|
300
|
+
"description": "97-install-class-dispatch.sh — fragment that sources the install-class"
|
|
301
|
+
},
|
|
86
302
|
{
|
|
87
303
|
"slug": "artifact-ingestion-gate",
|
|
88
304
|
"type": "hook",
|
|
@@ -99,6 +315,22 @@
|
|
|
99
315
|
"content_hash": "sha256:7a421558661225ee7d6b3b0dcc45a1ca5171f530093a87420c8bd88b7ca0f620",
|
|
100
316
|
"description": "assert-verify-steering.sh — UserPromptSubmit hook that injects"
|
|
101
317
|
},
|
|
318
|
+
{
|
|
319
|
+
"slug": "atomic-pr-check",
|
|
320
|
+
"type": "hook",
|
|
321
|
+
"path": ".claude/hooks/atomic-pr-check.sh",
|
|
322
|
+
"tier": "lite",
|
|
323
|
+
"content_hash": "sha256:1acd53c3032a88d534c7f77b07b6ccecc50adf3f40be2662aae2b4397b0dc30f",
|
|
324
|
+
"description": "Atomic-PR Check — fires on Bash tool calls matching \"git push\" patterns."
|
|
325
|
+
},
|
|
326
|
+
{
|
|
327
|
+
"slug": "auto-save-idle",
|
|
328
|
+
"type": "hook",
|
|
329
|
+
"path": ".claude/hooks/auto-save-idle.sh",
|
|
330
|
+
"tier": "lite",
|
|
331
|
+
"content_hash": "sha256:0114cb17fb0c0e2d10aa7b8e5b3253cdfb77296cc136fc613c24ad6690090795",
|
|
332
|
+
"description": "Auto-save idle checker — runs via cron on macOS + Linux + WSL (or Task Scheduler on native Windows) every 15 minutes."
|
|
333
|
+
},
|
|
102
334
|
{
|
|
103
335
|
"slug": "bassclef-source-config-validate",
|
|
104
336
|
"type": "hook",
|
|
@@ -112,9 +344,25 @@
|
|
|
112
344
|
"type": "hook",
|
|
113
345
|
"path": ".claude/hooks/bassclef-sync.sh",
|
|
114
346
|
"tier": "lite",
|
|
115
|
-
"content_hash": "sha256:
|
|
347
|
+
"content_hash": "sha256:03c813d942e42a8a4a37744e3cb14219fa4364ce18e2269957dc3a2f954fa983",
|
|
116
348
|
"description": "Bassclef Substrate Sync — fires on SessionStart."
|
|
117
349
|
},
|
|
350
|
+
{
|
|
351
|
+
"slug": "bet-doc-gate",
|
|
352
|
+
"type": "hook",
|
|
353
|
+
"path": ".claude/hooks/bet-doc-gate.sh",
|
|
354
|
+
"tier": "lite",
|
|
355
|
+
"content_hash": "sha256:4a0ffd81ee869a743813e8cf5f0425229e935fe9031a61925c4548b93883b049",
|
|
356
|
+
"description": "bet-doc-gate.sh — PreToolUse Edit|Write|MultiEdit on docs/iteration-bets/*.md"
|
|
357
|
+
},
|
|
358
|
+
{
|
|
359
|
+
"slug": "bug-diagnosis",
|
|
360
|
+
"type": "hook",
|
|
361
|
+
"path": ".claude/hooks/bug-diagnosis.sh",
|
|
362
|
+
"tier": "lite",
|
|
363
|
+
"content_hash": "sha256:9c00c7ef2ef5a362c0101fa840f09b53dec635eeabf010385ca46878910e4105",
|
|
364
|
+
"description": "Bug Diagnosis hook — fires on UserPromptSubmit."
|
|
365
|
+
},
|
|
118
366
|
{
|
|
119
367
|
"slug": "compound-noun-scrub",
|
|
120
368
|
"type": "hook",
|
|
@@ -123,6 +371,46 @@
|
|
|
123
371
|
"content_hash": "sha256:5a8937efc342086a146897afd7ac870e016ffc44008d64fdf499090fe56dcb78",
|
|
124
372
|
"description": "compound-noun-scrub.sh — PreToolUse Edit|Write gate on"
|
|
125
373
|
},
|
|
374
|
+
{
|
|
375
|
+
"slug": "destructive-command-guard",
|
|
376
|
+
"type": "hook",
|
|
377
|
+
"path": ".claude/hooks/destructive-command-guard.sh",
|
|
378
|
+
"tier": "lite",
|
|
379
|
+
"content_hash": "sha256:c517a2ce0b076bfb146eb18bd5d8e4668ef9c80ffe706ae5958b3f36c9a65c49",
|
|
380
|
+
"description": "Destructive Command Guard — fires on Bash PreToolUse."
|
|
381
|
+
},
|
|
382
|
+
{
|
|
383
|
+
"slug": "discipline-check",
|
|
384
|
+
"type": "hook",
|
|
385
|
+
"path": ".claude/hooks/adr-discipline-check.sh",
|
|
386
|
+
"tier": "lite",
|
|
387
|
+
"content_hash": "sha256:a6393929568a42631587125aff779f6edaf71b0d5f69f645d2660a74f02f50a5",
|
|
388
|
+
"description": "adr-discipline-check.sh — PreToolUse hook on architectural decision boundaries"
|
|
389
|
+
},
|
|
390
|
+
{
|
|
391
|
+
"slug": "file-rename-discipline-check",
|
|
392
|
+
"type": "hook",
|
|
393
|
+
"path": ".claude/hooks/file-rename-discipline-check.sh",
|
|
394
|
+
"tier": "lite",
|
|
395
|
+
"content_hash": "sha256:c923c8081ce4055060ac9d3e2f0a6a7f245087b96098a5c610196d74fc5ba97b",
|
|
396
|
+
"description": "file-rename-discipline-check — PreToolUse hook that blocks `git commit`"
|
|
397
|
+
},
|
|
398
|
+
{
|
|
399
|
+
"slug": "hook-classifier-canary",
|
|
400
|
+
"type": "hook",
|
|
401
|
+
"path": ".claude/hooks/hook-classifier-canary.sh",
|
|
402
|
+
"tier": "lite",
|
|
403
|
+
"content_hash": "sha256:48788484c1b43229f4b05a49041f7afb0ac151ff912e9830a7efc4e5e1d32aeb",
|
|
404
|
+
"description": "hook-classifier-canary.sh — advises author when a new hook lands"
|
|
405
|
+
},
|
|
406
|
+
{
|
|
407
|
+
"slug": "kiss-default-check",
|
|
408
|
+
"type": "hook",
|
|
409
|
+
"path": ".claude/hooks/kiss-default-check.sh",
|
|
410
|
+
"tier": "lite",
|
|
411
|
+
"content_hash": "sha256:648a3d24b19e6ed1f6f29527646bd684100090795d296584b178884d93c8828f",
|
|
412
|
+
"description": "kiss-default-check.sh — pre-push /kiss enforcement check"
|
|
413
|
+
},
|
|
126
414
|
{
|
|
127
415
|
"slug": "kiss-expansion-inject",
|
|
128
416
|
"type": "hook",
|
|
@@ -155,6 +443,38 @@
|
|
|
155
443
|
"content_hash": "sha256:32aa865bd6cae05b37809f098ca134acf7bb8e051599b67a1729dd35be7974a3",
|
|
156
444
|
"description": "PostToolUse: Stop"
|
|
157
445
|
},
|
|
446
|
+
{
|
|
447
|
+
"slug": "multi-tenancy-check",
|
|
448
|
+
"type": "hook",
|
|
449
|
+
"path": ".claude/hooks/multi-tenancy-check.sh",
|
|
450
|
+
"tier": "lite",
|
|
451
|
+
"content_hash": "sha256:a4bf395d8c12907111fb2cb68d3e4d2ddfc7e31a1bf1a72970c5728f7d33f83f",
|
|
452
|
+
"description": "Multi-Tenancy Check — bassclef template."
|
|
453
|
+
},
|
|
454
|
+
{
|
|
455
|
+
"slug": "oo-ad-entry-point-check",
|
|
456
|
+
"type": "hook",
|
|
457
|
+
"path": ".claude/hooks/oo-ad-entry-point-check.sh",
|
|
458
|
+
"tier": "lite",
|
|
459
|
+
"content_hash": "sha256:2ae696b5665461f9999ed778ce38a1ca52f2c5ae3928340d5757e5617a5d5dc7",
|
|
460
|
+
"description": "oo-ad-entry-point-check.sh — PreToolUse Edit/Write hook mechanizing .claude/rules/oo-ad-entry-point.md."
|
|
461
|
+
},
|
|
462
|
+
{
|
|
463
|
+
"slug": "operator-private-path-check",
|
|
464
|
+
"type": "hook",
|
|
465
|
+
"path": ".claude/hooks/operator-private-path-check.sh",
|
|
466
|
+
"tier": "lite",
|
|
467
|
+
"content_hash": "sha256:eb32ac7155ba1758ddaa57030de2fcf2e6f285c493ef35a2ab10b45a5ff8b434",
|
|
468
|
+
"description": "Operator-private path enforcement — Rule 3 of bassclef#739"
|
|
469
|
+
},
|
|
470
|
+
{
|
|
471
|
+
"slug": "pattern-annotation-validate",
|
|
472
|
+
"type": "hook",
|
|
473
|
+
"path": ".claude/hooks/pattern-annotation-validate.sh",
|
|
474
|
+
"tier": "lite",
|
|
475
|
+
"content_hash": "sha256:f6ad5ce9e3552c9269cdba483824dddbc67e90bba7fba7af1ea2b222736b0619",
|
|
476
|
+
"description": "pattern-annotation-validate.sh — Layer 3 of bassclef#478 traceability."
|
|
477
|
+
},
|
|
158
478
|
{
|
|
159
479
|
"slug": "persona-name-scrub-check",
|
|
160
480
|
"type": "hook",
|
|
@@ -168,7 +488,7 @@
|
|
|
168
488
|
"type": "hook",
|
|
169
489
|
"path": ".claude/hooks/plain-english-steering.sh",
|
|
170
490
|
"tier": "lite",
|
|
171
|
-
"content_hash": "sha256:
|
|
491
|
+
"content_hash": "sha256:4a6e092731d6d6e11618e6eb3557419b7e7d193c3f19bdacbf138d951d39f1a1",
|
|
172
492
|
"description": "plain-english-steering.sh — UserPromptSubmit hook that injects"
|
|
173
493
|
},
|
|
174
494
|
{
|
|
@@ -187,6 +507,22 @@
|
|
|
187
507
|
"content_hash": "sha256:244bd65c30664a496b824311b798de370325591b2337dcc8c7ffb31379edd853",
|
|
188
508
|
"description": ".claude/hooks/post-skill-telemetry.sh"
|
|
189
509
|
},
|
|
510
|
+
{
|
|
511
|
+
"slug": "post-write-trace",
|
|
512
|
+
"type": "hook",
|
|
513
|
+
"path": ".claude/hooks/post-write-trace.sh",
|
|
514
|
+
"tier": "lite",
|
|
515
|
+
"content_hash": "sha256:d8514782eccb0dd5f7473ad31ef5c64dfb71b0ece99f43317384c51c774d4b2d",
|
|
516
|
+
"description": "Post-Write Traceability — fires on PostToolUse for Write/Edit."
|
|
517
|
+
},
|
|
518
|
+
{
|
|
519
|
+
"slug": "pr-body-scrub-check",
|
|
520
|
+
"type": "hook",
|
|
521
|
+
"path": ".claude/hooks/pr-body-scrub-check.sh",
|
|
522
|
+
"tier": "lite",
|
|
523
|
+
"content_hash": "sha256:20fe3812c8cf3d6582d535845ff70c3b5503ffccb9898906db91104d49f42804",
|
|
524
|
+
"description": "PR-body scrub check — Rule 1 (jargon) + Rule 4 (operator-private +"
|
|
525
|
+
},
|
|
190
526
|
{
|
|
191
527
|
"slug": "pre-build-gate",
|
|
192
528
|
"type": "hook",
|
|
@@ -203,6 +539,46 @@
|
|
|
203
539
|
"content_hash": "sha256:6a825617f0cde4d3a77590ad9907667ee181539fee35badce87bfa27fb94a3c1",
|
|
204
540
|
"description": "Observable failure trap — closes bassclef-upstream#1075 (silent-stderr class)."
|
|
205
541
|
},
|
|
542
|
+
{
|
|
543
|
+
"slug": "pre-commit-identifier-leak-scrub",
|
|
544
|
+
"type": "hook",
|
|
545
|
+
"path": ".claude/hooks/pre-commit-identifier-leak-scrub.sh",
|
|
546
|
+
"tier": "lite",
|
|
547
|
+
"content_hash": "sha256:38665938cb3bac6d249d94b814cc3f43600456abcbb045bff5a5d0d0128a7cbb",
|
|
548
|
+
"description": "PreToolUse: Bash"
|
|
549
|
+
},
|
|
550
|
+
{
|
|
551
|
+
"slug": "pre-gh-pr-body-scrub",
|
|
552
|
+
"type": "hook",
|
|
553
|
+
"path": ".claude/hooks/pre-gh-pr-body-scrub.sh",
|
|
554
|
+
"tier": "lite",
|
|
555
|
+
"content_hash": "sha256:9dd595dfe5e83d12c65c483a30478013501fdf46ed04f2cab6e7fd57930ea7f8",
|
|
556
|
+
"description": "pre-gh-pr-body-scrub — PreToolUse hook that runs the body scrub logic"
|
|
557
|
+
},
|
|
558
|
+
{
|
|
559
|
+
"slug": "pre-gh-pr-title-scrub",
|
|
560
|
+
"type": "hook",
|
|
561
|
+
"path": ".claude/hooks/pre-gh-pr-title-scrub.sh",
|
|
562
|
+
"tier": "lite",
|
|
563
|
+
"content_hash": "sha256:d1c01e63e69d5081812c6a689b881c318667152509383fa09feeddb72e997313",
|
|
564
|
+
"description": "pre-gh-pr-title-scrub — PreToolUse hook that runs the body scrub logic"
|
|
565
|
+
},
|
|
566
|
+
{
|
|
567
|
+
"slug": "role-entry-gate",
|
|
568
|
+
"type": "hook",
|
|
569
|
+
"path": ".claude/hooks/role-entry-gate.sh",
|
|
570
|
+
"tier": "lite",
|
|
571
|
+
"content_hash": "sha256:23198643354611bbf6c2007577d2d10a9da561f5b6fe897bb90917217492876e",
|
|
572
|
+
"description": "role-entry-gate.sh — mode-agnostic role-entry discipline (bassclef#1145 T13)"
|
|
573
|
+
},
|
|
574
|
+
{
|
|
575
|
+
"slug": "save-state",
|
|
576
|
+
"type": "hook",
|
|
577
|
+
"path": ".claude/hooks/save-state.sh",
|
|
578
|
+
"tier": "lite",
|
|
579
|
+
"content_hash": "sha256:30487e789b2ed238a8e4915947d0a8ac8c59f44810028dd1bf5ddc0370aa48fb",
|
|
580
|
+
"description": "Save State — graceful checkpoint of all work in progress."
|
|
581
|
+
},
|
|
206
582
|
{
|
|
207
583
|
"slug": "session-end",
|
|
208
584
|
"type": "hook",
|
|
@@ -216,7 +592,7 @@
|
|
|
216
592
|
"type": "hook",
|
|
217
593
|
"path": ".claude/hooks/session-reflection.sh",
|
|
218
594
|
"tier": "lite",
|
|
219
|
-
"content_hash": "sha256:
|
|
595
|
+
"content_hash": "sha256:a9f2492fcf1ae86da3da2e0b6311d8e68a01472e9d68e9504fe6044a5f55d99d",
|
|
220
596
|
"description": "Session Start hook coordinator. Injects reflection prompt and iterates"
|
|
221
597
|
},
|
|
222
598
|
{
|
|
@@ -275,6 +651,14 @@
|
|
|
275
651
|
"content_hash": "sha256:dad0b25ee75c970e2faef9c527b6d29d1fc7ce0b3a3dcfb078a647e4c2e6ce4e",
|
|
276
652
|
"description": "testing-tier-enforce.sh — per-path testing-tier enforcement (bassclef#1037)"
|
|
277
653
|
},
|
|
654
|
+
{
|
|
655
|
+
"slug": "tool-failure-diagnosis",
|
|
656
|
+
"type": "hook",
|
|
657
|
+
"path": ".claude/hooks/tool-failure-diagnosis.sh",
|
|
658
|
+
"tier": "lite",
|
|
659
|
+
"content_hash": "sha256:63dfc55da13e342b18b3ed338659b29f9301c4dbfd632fafe05c557932c54684",
|
|
660
|
+
"description": "Tool Failure Diagnosis — fires on PostToolUse."
|
|
661
|
+
},
|
|
278
662
|
{
|
|
279
663
|
"slug": "trace-helper",
|
|
280
664
|
"type": "hook",
|
|
@@ -315,6 +699,14 @@
|
|
|
315
699
|
"content_hash": "sha256:867d05c8da773e8aef3d077ec7c171d8e9a208b579596f77dd73e18cc8fcf2e2",
|
|
316
700
|
"description": "whereami-utc-gate.sh — PreToolUse hook that BLOCKs Edit|Write|MultiEdit"
|
|
317
701
|
},
|
|
702
|
+
{
|
|
703
|
+
"slug": "bassclef-dir-resolver",
|
|
704
|
+
"type": "lib",
|
|
705
|
+
"path": "lib/bassclef-dir-resolver.sh",
|
|
706
|
+
"tier": "lite",
|
|
707
|
+
"content_hash": "sha256:10d42c54a64415f7e9b4f2a6701d57ffc89cc9d59ec0fec9ddc2af3c178855a2",
|
|
708
|
+
"description": "bassclef-dir-resolver.sh — resolve BASSCLEF_DIR across install layouts."
|
|
709
|
+
},
|
|
318
710
|
{
|
|
319
711
|
"slug": "clean-artifacts-sweep",
|
|
320
712
|
"type": "lib",
|
|
@@ -323,6 +715,14 @@
|
|
|
323
715
|
"content_hash": "sha256:8307ffbf78b85fe5c91c0a4d48fcf190873dc3116f6a4162fdeb1aec85e7c255",
|
|
324
716
|
"description": "lib/clean-artifacts-sweep.sh — shared deep module for workflow-exhaust"
|
|
325
717
|
},
|
|
718
|
+
{
|
|
719
|
+
"slug": "clone-failure-classifier",
|
|
720
|
+
"type": "lib",
|
|
721
|
+
"path": "lib/clone-failure-classifier.sh",
|
|
722
|
+
"tier": "lite",
|
|
723
|
+
"content_hash": "sha256:6effb369243f5a2c5c4a1aca8e083be59f44c0e16f85d3e47d3657818a5c7a9e",
|
|
724
|
+
"description": "clone-failure-classifier.sh — classify a git clone failure by its stderr."
|
|
725
|
+
},
|
|
326
726
|
{
|
|
327
727
|
"slug": "code-comment-discipline",
|
|
328
728
|
"type": "lib",
|
|
@@ -347,6 +747,22 @@
|
|
|
347
747
|
"content_hash": "sha256:838e4948aeef589e46519ee47791ded9ec5d5e92a1b8d551520ae493b0566752",
|
|
348
748
|
"description": "lib/deferred-actions.sh — typed accessor for docs/deferred-actions/"
|
|
349
749
|
},
|
|
750
|
+
{
|
|
751
|
+
"slug": "fixture-builder",
|
|
752
|
+
"type": "lib",
|
|
753
|
+
"path": "lib/fixture-builder.sh",
|
|
754
|
+
"tier": "lite",
|
|
755
|
+
"content_hash": "sha256:85a59597e8898ea38e7d7442423381f0c4caa5ecf6780bbd0a71d63b819d3b13",
|
|
756
|
+
"description": "Deep module for adopter-environment fixtures used by bassclef Tier 0 tests."
|
|
757
|
+
},
|
|
758
|
+
{
|
|
759
|
+
"slug": "fresh-install-check",
|
|
760
|
+
"type": "lib",
|
|
761
|
+
"path": "lib/fresh-install-check.sh",
|
|
762
|
+
"tier": "lite",
|
|
763
|
+
"content_hash": "sha256:58bf4a00a96e44307aae1eb70e6e83d1227c03b5d6b305a06377323e310f7a8e",
|
|
764
|
+
"description": "fresh-install-check.sh — is this a fresh-install repo or an established one?"
|
|
765
|
+
},
|
|
350
766
|
{
|
|
351
767
|
"slug": "hook-header-parser",
|
|
352
768
|
"type": "lib",
|
|
@@ -360,7 +776,7 @@
|
|
|
360
776
|
"type": "lib",
|
|
361
777
|
"path": "lib/hook-heartbeat.sh",
|
|
362
778
|
"tier": "lite",
|
|
363
|
-
"content_hash": "sha256:
|
|
779
|
+
"content_hash": "sha256:9434e758be9541f25eba6d696f71607b591595924d60c6bff276f14583151c37",
|
|
364
780
|
"description": "lib/hook-heartbeat.sh — hook liveness marker helper."
|
|
365
781
|
},
|
|
366
782
|
{
|
|
@@ -387,6 +803,22 @@
|
|
|
387
803
|
"content_hash": "sha256:ad6e909a84c3371260377a98a94575a6cac2efbb6ff331bb1164e0ca42748a65",
|
|
388
804
|
"description": "andon-allow: docs/operator-private/[a-z-]+/20[0-9][0-9]-[0-9]{2}"
|
|
389
805
|
},
|
|
806
|
+
{
|
|
807
|
+
"slug": "mechanism-fidelity",
|
|
808
|
+
"type": "lib",
|
|
809
|
+
"path": "lib/mechanism-fidelity.sh",
|
|
810
|
+
"tier": "lite",
|
|
811
|
+
"content_hash": "sha256:7ccd6751d3ff3c31b142aac3c1739cd1cb1863f5e13db29ce1eb8206def1b7ca",
|
|
812
|
+
"description": "lib/mechanism-fidelity.sh — shared scanner for the mechanism-fidelity"
|
|
813
|
+
},
|
|
814
|
+
{
|
|
815
|
+
"slug": "npm-version-check",
|
|
816
|
+
"type": "lib",
|
|
817
|
+
"path": "lib/npm-version-check.sh",
|
|
818
|
+
"tier": "lite",
|
|
819
|
+
"content_hash": "sha256:add057e554ec8beccb13c3cc251f656ed70f4350250a4dc691c1539e9bb56b57",
|
|
820
|
+
"description": "npm-version-check.sh — detect when installed @thebassclef/lite drifts behind"
|
|
821
|
+
},
|
|
390
822
|
{
|
|
391
823
|
"slug": "output-discipline",
|
|
392
824
|
"type": "lib",
|
|
@@ -395,6 +827,14 @@
|
|
|
395
827
|
"content_hash": "sha256:24ca4785a7f8cce14d8fff8d95b2780275179a126c254bba11356d62f112c585",
|
|
396
828
|
"description": "output-discipline.sh — classifier library for substrate output discipline audit."
|
|
397
829
|
},
|
|
830
|
+
{
|
|
831
|
+
"slug": "preview-state",
|
|
832
|
+
"type": "lib",
|
|
833
|
+
"path": "lib/preview-state.sh",
|
|
834
|
+
"tier": "lite",
|
|
835
|
+
"content_hash": "sha256:e5423edd6dd48a3fe7aeaa9d56a2bfa903f706a7144ca1c6119789394d71f2f2",
|
|
836
|
+
"description": "lib/preview-state.sh — typed accessor for docs/preview-state/<slug>.yml"
|
|
837
|
+
},
|
|
398
838
|
{
|
|
399
839
|
"slug": "prose-scan-boundary",
|
|
400
840
|
"type": "lib",
|
|
@@ -416,7 +856,7 @@
|
|
|
416
856
|
"type": "lib",
|
|
417
857
|
"path": "lib/session-rescue.sh",
|
|
418
858
|
"tier": "lite",
|
|
419
|
-
"content_hash": "sha256:
|
|
859
|
+
"content_hash": "sha256:d2205a32885bf29420a7f4d420ab2d5994bc73ad2ed9d1faf150bcf8f17a52c4",
|
|
420
860
|
"description": "lib/session-rescue.sh — sweep resolved session-rescue entries to completed/."
|
|
421
861
|
},
|
|
422
862
|
{
|
|
@@ -491,6 +931,14 @@
|
|
|
491
931
|
"content_hash": "sha256:d0d526b3b6118398f6a84384c429952fb0ed06c5e328c626458b1c8643d6c2da",
|
|
492
932
|
"description": "\\\"Every hypothesis has a test. Delta Debugging shrinks the failing input to its minimum. Debugging as science.\\\""
|
|
493
933
|
},
|
|
934
|
+
{
|
|
935
|
+
"slug": "andrej-karpathy",
|
|
936
|
+
"type": "luminary",
|
|
937
|
+
"path": ".claude/luminaries/andrej-karpathy.md",
|
|
938
|
+
"tier": "lite",
|
|
939
|
+
"content_hash": "sha256:20c1bfbd8fe53e6c95110fd2c251ffb54b3d509d16c7982ffc4d700a1b82c458",
|
|
940
|
+
"description": "\\\"The LLM is the CPU. The context window is the RAM. Programs are prompts. The job is filling the working memory with exactly the right instructions, data, and examples so the CPU…"
|
|
941
|
+
},
|
|
494
942
|
{
|
|
495
943
|
"slug": "ash-maurya",
|
|
496
944
|
"type": "luminary",
|
|
@@ -515,6 +963,14 @@
|
|
|
515
963
|
"content_hash": "sha256:e1a6ee9fceb308fb3eda82e11fbec08403c9676c1852b5857f08a87ca882d951",
|
|
516
964
|
"description": "\\\"Keep inquiry open.\\\""
|
|
517
965
|
},
|
|
966
|
+
{
|
|
967
|
+
"slug": "dave-gray",
|
|
968
|
+
"type": "luminary",
|
|
969
|
+
"path": ".claude/luminaries/dave-gray.md",
|
|
970
|
+
"tier": "lite",
|
|
971
|
+
"content_hash": "sha256:ec2bb153111b28d5f505825f107fb0ac5da354a4cc3a6a474e1d1b153c81eafb",
|
|
972
|
+
"description": "\\\"The whole idea was to imagine what it's like to be inside someone else's head."
|
|
973
|
+
},
|
|
518
974
|
{
|
|
519
975
|
"slug": "david-ogilvy",
|
|
520
976
|
"type": "luminary",
|
|
@@ -563,6 +1019,14 @@
|
|
|
563
1019
|
"content_hash": "sha256:47accc6c9c138d585345e6f81a7cf6a1dbd42433844ccb8d9a86a8294b458d1b",
|
|
564
1020
|
"description": "\\\"Program to an interface, not an implementation."
|
|
565
1021
|
},
|
|
1022
|
+
{
|
|
1023
|
+
"slug": "gary-klein",
|
|
1024
|
+
"type": "luminary",
|
|
1025
|
+
"path": ".claude/luminaries/gary-klein.md",
|
|
1026
|
+
"tier": "lite",
|
|
1027
|
+
"content_hash": "sha256:c55d29fbf28fa8ba142146e11e0c5407cb7943a8e5f88953bc290fb4a46fbe88",
|
|
1028
|
+
"description": "\\\"Unlike a typical critiquing session, in which project team members are asked what might go wrong, the premortem operates on the assumption that the patient has died, and so asks…"
|
|
1029
|
+
},
|
|
566
1030
|
{
|
|
567
1031
|
"slug": "glenford-myers",
|
|
568
1032
|
"type": "luminary",
|
|
@@ -611,6 +1075,14 @@
|
|
|
611
1075
|
"content_hash": "sha256:af68d97598b946e8bd049c2bf5075333ccd50b8072f685efa16805c60fc97bf6",
|
|
612
1076
|
"description": "\\\"Complexity is anything that makes software hard to understand or modify."
|
|
613
1077
|
},
|
|
1078
|
+
{
|
|
1079
|
+
"slug": "kaoru-ishikawa",
|
|
1080
|
+
"type": "luminary",
|
|
1081
|
+
"path": ".claude/luminaries/kaoru-ishikawa.md",
|
|
1082
|
+
"tier": "lite",
|
|
1083
|
+
"content_hash": "sha256:86d1a82fb2c284f45563f7f43df6684294e8fec850e4c1942b55f03807518347",
|
|
1084
|
+
"description": "\\\"Before you fix the cause, name every category it could live in.\\\""
|
|
1085
|
+
},
|
|
614
1086
|
{
|
|
615
1087
|
"slug": "karl-popper",
|
|
616
1088
|
"type": "luminary",
|
|
@@ -627,6 +1099,14 @@
|
|
|
627
1099
|
"content_hash": "sha256:45f4df49b02c58bcc77609baaf65019fa4dcc5fd743150e7ab1074298c6eb307",
|
|
628
1100
|
"description": "\\\"Make it work. Make it right. Make it fast. Tests are the first client of your code.\\\""
|
|
629
1101
|
},
|
|
1102
|
+
{
|
|
1103
|
+
"slug": "lean-product-canvas",
|
|
1104
|
+
"type": "luminary",
|
|
1105
|
+
"path": ".claude/luminaries/lean-product-canvas.md",
|
|
1106
|
+
"tier": "lite",
|
|
1107
|
+
"content_hash": "sha256:1d6f0dc647f620b81379e78d34cd3f22186fb2d87254d72ebdb531c77e36aa0c",
|
|
1108
|
+
"description": "\\\"If you can't fill it in 30 minutes, you don't understand the problem.\\\""
|
|
1109
|
+
},
|
|
630
1110
|
{
|
|
631
1111
|
"slug": "linus-torvalds",
|
|
632
1112
|
"type": "luminary",
|
|
@@ -635,6 +1115,14 @@
|
|
|
635
1115
|
"content_hash": "sha256:ad1c08a2906c3329eeba4eaee156a4334cc5f2c51cf27477141f29925fd18d6e",
|
|
636
1116
|
"description": "\\\"We do not break userspace.\\\" — INSTEAD: the kernel team pays the migration cost so every program that ran yesterday keeps running today."
|
|
637
1117
|
},
|
|
1118
|
+
{
|
|
1119
|
+
"slug": "luke-wroblewski",
|
|
1120
|
+
"type": "luminary",
|
|
1121
|
+
"path": ".claude/luminaries/luke-wroblewski.md",
|
|
1122
|
+
"tier": "lite",
|
|
1123
|
+
"content_hash": "sha256:eee94ba551d410bd9ed7e17b616e11633d1f3faf9509915b6cbd659803589d71",
|
|
1124
|
+
"description": "\\\"Mobile first forces you to focus on what matters.\\\""
|
|
1125
|
+
},
|
|
638
1126
|
{
|
|
639
1127
|
"slug": "martin-fowler",
|
|
640
1128
|
"type": "luminary",
|
|
@@ -667,6 +1155,14 @@
|
|
|
667
1155
|
"content_hash": "sha256:2150986fe1c25d6b12a213314dbe0a3e629d0363d32e6847d8f2ff57d87b67d9",
|
|
668
1156
|
"description": "\\\"Architecture is about intent, not frameworks."
|
|
669
1157
|
},
|
|
1158
|
+
{
|
|
1159
|
+
"slug": "ryan-singer",
|
|
1160
|
+
"type": "luminary",
|
|
1161
|
+
"path": ".claude/luminaries/ryan-singer.md",
|
|
1162
|
+
"tier": "lite",
|
|
1163
|
+
"content_hash": "sha256:955c0160f2110a5afd778342f278616b7aec517da56ce1c51a85af734b980eb1",
|
|
1164
|
+
"description": "\\\"Appetite is a time budget, not an estimate."
|
|
1165
|
+
},
|
|
670
1166
|
{
|
|
671
1167
|
"slug": "saltzer-schroeder",
|
|
672
1168
|
"type": "luminary",
|
|
@@ -691,6 +1187,14 @@
|
|
|
691
1187
|
"content_hash": "sha256:7d7d4b9a9ec1a13669fa5f1c5abab91ed5d20ae1f81a379cb5d5dda6645b33bf",
|
|
692
1188
|
"description": "\\\"An argument is a whole organism. Take out one part and the rest collapses.\\\""
|
|
693
1189
|
},
|
|
1190
|
+
{
|
|
1191
|
+
"slug": "steve-krug",
|
|
1192
|
+
"type": "luminary",
|
|
1193
|
+
"path": ".claude/luminaries/steve-krug.md",
|
|
1194
|
+
"tier": "lite",
|
|
1195
|
+
"content_hash": "sha256:6084b7bf160486b470934c7177eb09573315a3db4c35462d17bbf71a565d8e2f",
|
|
1196
|
+
"description": "\\\"Don't make me think.\\\""
|
|
1197
|
+
},
|
|
694
1198
|
{
|
|
695
1199
|
"slug": "tony-hoare",
|
|
696
1200
|
"type": "luminary",
|
|
@@ -699,6 +1203,14 @@
|
|
|
699
1203
|
"content_hash": "sha256:d557d1b083f558ce08dbfb3d14ebdaa9b36f278d94eece28031e07da2a47e63d",
|
|
700
1204
|
"description": "\\\"There are two ways of constructing a software design: one is to make it so simple that there are obviously no deficiencies; the other is to make it so complicated that there are…"
|
|
701
1205
|
},
|
|
1206
|
+
{
|
|
1207
|
+
"slug": "tony-ulwick",
|
|
1208
|
+
"type": "luminary",
|
|
1209
|
+
"path": ".claude/luminaries/tony-ulwick.md",
|
|
1210
|
+
"tier": "lite",
|
|
1211
|
+
"content_hash": "sha256:fdb491be2617b8b31b3c2c636f24e7c9562341ed797b9f708f1b5b54959542e2",
|
|
1212
|
+
"description": "\\\"Customers do not want features. They want outcomes. Define the outcome with a metric and a baseline. Then ask whether the current product delivers that outcome — and rank where…"
|
|
1213
|
+
},
|
|
702
1214
|
{
|
|
703
1215
|
"slug": "vaughn-vernon",
|
|
704
1216
|
"type": "luminary",
|
|
@@ -762,6 +1274,13 @@
|
|
|
762
1274
|
"content_hash": "sha256:1c5a0dc586ea16eaf6043c34df10b2450fa015662809f65fc2676ea146a45b0d",
|
|
763
1275
|
"description": "Cross-tool agent context for sunj-labs repos."
|
|
764
1276
|
},
|
|
1277
|
+
{
|
|
1278
|
+
"slug": "bassclef-orientation",
|
|
1279
|
+
"type": "root-doc",
|
|
1280
|
+
"path": ".claude/bassclef-orientation.md",
|
|
1281
|
+
"tier": "lite",
|
|
1282
|
+
"content_hash": "sha256:7bc4b60259676a5f8f2a8f3f18734607c47ce5c0fb18bdb4c3b6b354904a3836"
|
|
1283
|
+
},
|
|
765
1284
|
{
|
|
766
1285
|
"slug": "claude-lite",
|
|
767
1286
|
"type": "root-doc",
|
|
@@ -791,7 +1310,7 @@
|
|
|
791
1310
|
"type": "root-doc",
|
|
792
1311
|
"path": "README.md",
|
|
793
1312
|
"tier": "lite",
|
|
794
|
-
"content_hash": "sha256:
|
|
1313
|
+
"content_hash": "sha256:856e387d438bfc8c6094464ac457271039848ec1eda457bf5ba51a035c91b6a0",
|
|
795
1314
|
"description": "A shared substrate for working with AI coding agents."
|
|
796
1315
|
},
|
|
797
1316
|
{
|
|
@@ -818,6 +1337,22 @@
|
|
|
818
1337
|
"content_hash": "sha256:7ee4a28c04d7f8bddf662a095d6205bf5c88c76781540a3d77c18cfdd476ac11",
|
|
819
1338
|
"description": "Universal API design principles — REST conventions, response shapes, status codes, auth, validation. Stack-specific globs + helpers live in per-stack siblings under standards/api-conventions/."
|
|
820
1339
|
},
|
|
1340
|
+
{
|
|
1341
|
+
"slug": "arc-level-orientation-before-leaf",
|
|
1342
|
+
"type": "rule",
|
|
1343
|
+
"path": ".claude/rules/arc-level-orientation-before-leaf.md",
|
|
1344
|
+
"tier": "lite",
|
|
1345
|
+
"content_hash": "sha256:21b99f9e5cb0adbff25a15552d9793ea4433e65afbe794aa97daea7136170278",
|
|
1346
|
+
"description": "/sprint and /longrun prep walk the active goal's parent_bet chain UP TO THE ROOT before proposing scope."
|
|
1347
|
+
},
|
|
1348
|
+
{
|
|
1349
|
+
"slug": "architect-review-discipline",
|
|
1350
|
+
"type": "rule",
|
|
1351
|
+
"path": ".claude/rules/architect-review-discipline.md",
|
|
1352
|
+
"tier": "lite",
|
|
1353
|
+
"content_hash": "sha256:7f439ee9e18182b25980aed580d29381bf5dd49282c67b8f7acd43dba24fc17c",
|
|
1354
|
+
"description": "Every architect-review run MUST exercise both methods — static comprehension AND dynamic verification."
|
|
1355
|
+
},
|
|
821
1356
|
{
|
|
822
1357
|
"slug": "artifact-ingestion",
|
|
823
1358
|
"type": "rule",
|
|
@@ -834,6 +1369,38 @@
|
|
|
834
1369
|
"content_hash": "sha256:87cdd1879fa3b74e3171470f6d14485ebe07f3af646e9994b1ec28fd731bdcc8",
|
|
835
1370
|
"description": "Plain check: Before I make a claim in this turn, I read the source first and cite it."
|
|
836
1371
|
},
|
|
1372
|
+
{
|
|
1373
|
+
"slug": "auto-fix-criteria",
|
|
1374
|
+
"type": "rule",
|
|
1375
|
+
"path": ".claude/rules/auto-fix-criteria.md",
|
|
1376
|
+
"tier": "lite",
|
|
1377
|
+
"content_hash": "sha256:c7e849caa042c3cb913031f6ab0271401c95badfd53bfbe869debfc5eb0a0f21",
|
|
1378
|
+
"description": "/auto-fix is the autonomous fix workflow for non-trivial narrow bugs."
|
|
1379
|
+
},
|
|
1380
|
+
{
|
|
1381
|
+
"slug": "bassclef-hook-drift-blocker",
|
|
1382
|
+
"type": "rule",
|
|
1383
|
+
"path": ".claude/rules/bassclef-hook-drift-blocker.md",
|
|
1384
|
+
"tier": "lite",
|
|
1385
|
+
"content_hash": "sha256:c8edb635c680d3ecf2cde7bdfbf1a372175125d61c7b54d981d47d6476b49bab",
|
|
1386
|
+
"description": "The bassclef-sync.sh SessionStart hook emits a 🛑 BLOCKED block when the consumer repo's hook version differs from bassclef's current template version."
|
|
1387
|
+
},
|
|
1388
|
+
{
|
|
1389
|
+
"slug": "bassclef-models-discovery",
|
|
1390
|
+
"type": "rule",
|
|
1391
|
+
"path": ".claude/rules/bassclef-models-discovery.md",
|
|
1392
|
+
"tier": "lite",
|
|
1393
|
+
"content_hash": "sha256:292bb8ed78d9cf41e902738b453aee22192bdbdd615abf7b10a9062677672d45",
|
|
1394
|
+
"description": "This rule tells consumer-repo agents where bassclef's models live."
|
|
1395
|
+
},
|
|
1396
|
+
{
|
|
1397
|
+
"slug": "bassclef-workflow-parity",
|
|
1398
|
+
"type": "rule",
|
|
1399
|
+
"path": ".claude/rules/bassclef-workflow-parity.md",
|
|
1400
|
+
"tier": "lite",
|
|
1401
|
+
"content_hash": "sha256:508976c3ff2a6c46ce32eae32c4ab9d13ddb2338dac8d28e5497f5af767ac957",
|
|
1402
|
+
"description": "When modifying any file matching .github/workflows/bassclef-*.yml, grep the other files in the same directory for the pattern you just changed."
|
|
1403
|
+
},
|
|
837
1404
|
{
|
|
838
1405
|
"slug": "blocked-items",
|
|
839
1406
|
"type": "rule",
|
|
@@ -906,6 +1473,14 @@
|
|
|
906
1473
|
"content_hash": "sha256:c319a027124fa9de0066fd60b2b05456808c4b4220baf74c298f6ece73e21df5",
|
|
907
1474
|
"description": "Context window management — thresholds, compaction strategy, survival kit"
|
|
908
1475
|
},
|
|
1476
|
+
{
|
|
1477
|
+
"slug": "cost-governance",
|
|
1478
|
+
"type": "rule",
|
|
1479
|
+
"path": ".claude/rules/cost-governance.md",
|
|
1480
|
+
"tier": "lite",
|
|
1481
|
+
"content_hash": "sha256:f8a69c15fb8616e37ecbad0c805065b2e7100d867e6029f857741cc9226c41c1",
|
|
1482
|
+
"description": "Cost governance — budget enforcement from substrate.config.md manifest"
|
|
1483
|
+
},
|
|
909
1484
|
{
|
|
910
1485
|
"slug": "defensive-bash",
|
|
911
1486
|
"type": "rule",
|
|
@@ -946,6 +1521,14 @@
|
|
|
946
1521
|
"content_hash": "sha256:ac032d4993e4cc89c1df086cb32b0c093d9cf1fc79767870c3ffa46de77dabf5",
|
|
947
1522
|
"description": "Every load-bearing architectural decision MUST be recorded as an ADR (Architecture Decision Record) per Michael Nygard's lifecycle: proposed → accepted → deprecated → superseded."
|
|
948
1523
|
},
|
|
1524
|
+
{
|
|
1525
|
+
"slug": "file-rename-discipline",
|
|
1526
|
+
"type": "rule",
|
|
1527
|
+
"path": ".claude/rules/file-rename-discipline.md",
|
|
1528
|
+
"tier": "lite",
|
|
1529
|
+
"content_hash": "sha256:add29043f78632f68fe096bfba282864da4db1119fbeabd81099ee8672e27530",
|
|
1530
|
+
"description": "Every file rename in bassclef registers an entry in standards/file-renames.json AND ships a fixture test that asserts the migrate script cures adopters carrying the old name."
|
|
1531
|
+
},
|
|
949
1532
|
{
|
|
950
1533
|
"slug": "github-issue-flash-tweet",
|
|
951
1534
|
"type": "rule",
|
|
@@ -1026,6 +1609,14 @@
|
|
|
1026
1609
|
"content_hash": "sha256:4a6c0bea71de0d0e78e6f8ac6254502660a70c3faff3a8e85c5448f6b7137eed",
|
|
1027
1610
|
"description": "Gate marker files (under state/markers/temperance/, state/markers/luminary/, state/markers/arc-walk/, state/markers/orientation-gate/, state/markers/roadmap-reconcile-gate/) MUST…"
|
|
1028
1611
|
},
|
|
1612
|
+
{
|
|
1613
|
+
"slug": "mechanism-fidelity",
|
|
1614
|
+
"type": "rule",
|
|
1615
|
+
"path": ".claude/rules/mechanism-fidelity.md",
|
|
1616
|
+
"tier": "lite",
|
|
1617
|
+
"content_hash": "sha256:29b56c2c14412fbac7da9baeedc28f3052ed8fe5887c3bc4156f2de0510ffdca",
|
|
1618
|
+
"description": "Every rule that names a mechanical enforcement makes a contract: the mechanism exists, is wired, resolves paths under both install classes, has a Tier 0 test pinning behavior."
|
|
1619
|
+
},
|
|
1029
1620
|
{
|
|
1030
1621
|
"slug": "mobile-ephemeral-session",
|
|
1031
1622
|
"type": "rule",
|
|
@@ -1122,6 +1713,14 @@
|
|
|
1122
1713
|
"content_hash": "sha256:d71817a854af670b57a68a890fce722e1669f3a14009debd8409a2848d63d647",
|
|
1123
1714
|
"description": "Sister rule to pr-body-shape.md. Encodes authoring-time discipline for the PR title surface. Titles show in gh pr list, GitHub search, and mobile views — they are the…"
|
|
1124
1715
|
},
|
|
1716
|
+
{
|
|
1717
|
+
"slug": "prototype-production-coupling",
|
|
1718
|
+
"type": "rule",
|
|
1719
|
+
"path": ".claude/rules/prototype-production-coupling.md",
|
|
1720
|
+
"tier": "lite",
|
|
1721
|
+
"content_hash": "sha256:a486fc028939e1c0dfe48d4848d97189dc230ea0bab38edf313bd6ce75e86972",
|
|
1722
|
+
"description": "Design prototypes are load-bearing artifacts, not sketches."
|
|
1723
|
+
},
|
|
1125
1724
|
{
|
|
1126
1725
|
"slug": "prototype-workflow",
|
|
1127
1726
|
"type": "rule",
|
|
@@ -1130,6 +1729,14 @@
|
|
|
1130
1729
|
"content_hash": "sha256:f114e4cecd57fb2b960fc634cb566aab6061ce364c3f6c907a0a086cd0becc45",
|
|
1131
1730
|
"description": "Design prototypes (artifacts under docs/prototypes/**) are visual statements to Reviewer (\\\"this is what we want built\\\")."
|
|
1132
1731
|
},
|
|
1732
|
+
{
|
|
1733
|
+
"slug": "quick-fix-criteria",
|
|
1734
|
+
"type": "rule",
|
|
1735
|
+
"path": ".claude/rules/quick-fix-criteria.md",
|
|
1736
|
+
"tier": "lite",
|
|
1737
|
+
"content_hash": "sha256:ba001c5ff9214f20fb7c7514099ddfa96c09a6f78279fe580213cb03ad904a63",
|
|
1738
|
+
"description": "/quick-fix is the compressed fix workflow for trivial bugs."
|
|
1739
|
+
},
|
|
1133
1740
|
{
|
|
1134
1741
|
"slug": "reserved-skill-names",
|
|
1135
1742
|
"type": "rule",
|
|
@@ -1167,9 +1774,17 @@
|
|
|
1167
1774
|
"type": "rule",
|
|
1168
1775
|
"path": ".claude/rules/session-artifacts.md",
|
|
1169
1776
|
"tier": "lite",
|
|
1170
|
-
"content_hash": "sha256:
|
|
1777
|
+
"content_hash": "sha256:4f409c4eb63d4ff71e8f18cf11c24f4176b03762e47c40ae715762850f8062e3",
|
|
1171
1778
|
"description": "Session artifacts — chronicle + journal entries at every phase transition and session end"
|
|
1172
1779
|
},
|
|
1780
|
+
{
|
|
1781
|
+
"slug": "sibling-smoke-after-substrate-change",
|
|
1782
|
+
"type": "rule",
|
|
1783
|
+
"path": ".claude/rules/sibling-smoke-after-substrate-change.md",
|
|
1784
|
+
"tier": "lite",
|
|
1785
|
+
"content_hash": "sha256:b754f00e65a958c86824454aed0c9d6e13f7963b730c047e7c33bad23a05ca69",
|
|
1786
|
+
"description": "When a PR touches an adopter-observable substrate path (.claude/hooks/.sh, .claude/rules/.md, .claude/skills//SKILL.md, .claude/agents/.md, lib/.sh, or…"
|
|
1787
|
+
},
|
|
1173
1788
|
{
|
|
1174
1789
|
"slug": "skill-composition-declarations",
|
|
1175
1790
|
"type": "rule",
|
|
@@ -1218,6 +1833,14 @@
|
|
|
1218
1833
|
"content_hash": "sha256:714b9edde0de55b790d6cf077c42527283d0a4a501d8cb46c57abd43c74142be",
|
|
1219
1834
|
"description": "When a hook emits the same BLOCKED signal across ≥3 consecutive sessions and the underlying state counter hasn't moved, the signal is stuck."
|
|
1220
1835
|
},
|
|
1836
|
+
{
|
|
1837
|
+
"slug": "substrate-as-system",
|
|
1838
|
+
"type": "rule",
|
|
1839
|
+
"path": ".claude/rules/substrate-as-system.md",
|
|
1840
|
+
"tier": "lite",
|
|
1841
|
+
"content_hash": "sha256:cd71b14405e4ab5c94f222add00f760cf342dcdb5d796b511508bfb33e93d414",
|
|
1842
|
+
"description": "Per ADR-035: bassclef's substrate is a system, not a bag of files."
|
|
1843
|
+
},
|
|
1221
1844
|
{
|
|
1222
1845
|
"slug": "substrate-config-schema",
|
|
1223
1846
|
"type": "rule",
|
|
@@ -1266,6 +1889,14 @@
|
|
|
1266
1889
|
"content_hash": "sha256:e32a5e133f3691c9daeb5344306231a23a3427e97a2cd32b1aeb5cc838d33e30",
|
|
1267
1890
|
"description": "Plain check: Before I ship a turn estimate to an adopter, I cite a past bet's actuals + write a range + name the shape."
|
|
1268
1891
|
},
|
|
1892
|
+
{
|
|
1893
|
+
"slug": "usability",
|
|
1894
|
+
"type": "rule",
|
|
1895
|
+
"path": ".claude/rules/usability.md",
|
|
1896
|
+
"tier": "lite",
|
|
1897
|
+
"content_hash": "sha256:512e73b7dd0f217b1145267bdf0f3d52711f8c34ba1bf23ab3bece4f0752f6ae",
|
|
1898
|
+
"description": "Usability check — loads only when touching UI files"
|
|
1899
|
+
},
|
|
1269
1900
|
{
|
|
1270
1901
|
"slug": "visual-hierarchy",
|
|
1271
1902
|
"type": "rule",
|
|
@@ -1327,7 +1958,7 @@
|
|
|
1327
1958
|
"type": "script",
|
|
1328
1959
|
"path": "scripts/generate-lite-manifest.sh",
|
|
1329
1960
|
"tier": "lite",
|
|
1330
|
-
"content_hash": "sha256:
|
|
1961
|
+
"content_hash": "sha256:950c701995965d543a692cfba919593bb6ae36c2103b5b93a7217d41bb9f0009",
|
|
1331
1962
|
"description": "Generate lite-manifest.json at repo root."
|
|
1332
1963
|
},
|
|
1333
1964
|
{
|
|
@@ -1351,7 +1982,7 @@
|
|
|
1351
1982
|
"type": "script",
|
|
1352
1983
|
"path": "scripts/lite-manifest-drift-check.sh",
|
|
1353
1984
|
"tier": "lite",
|
|
1354
|
-
"content_hash": "sha256:
|
|
1985
|
+
"content_hash": "sha256:0f14aa7aec1b52820c53f7f1fd5e58d8742fd426577a6a8682f8d5f0a5ceba5f",
|
|
1355
1986
|
"description": "Detect drift between committed lite-manifest.json and current substrate state."
|
|
1356
1987
|
},
|
|
1357
1988
|
{
|
|
@@ -1362,6 +1993,99 @@
|
|
|
1362
1993
|
"content_hash": "sha256:30dc5eaff11fafc08b0845d8c4ce329a51b6ca0e89136638d335b58af41c7c0f",
|
|
1363
1994
|
"description": "Render human-readable companion doc from lite-manifest.json."
|
|
1364
1995
|
},
|
|
1996
|
+
{
|
|
1997
|
+
"slug": "agent-research-spawn",
|
|
1998
|
+
"type": "skill",
|
|
1999
|
+
"path": ".claude/skills/agent-research-spawn/SKILL.md",
|
|
2000
|
+
"tier": "lite",
|
|
2001
|
+
"content_hash": "sha256:7f1f498a629d72639e63452016ae193ab70c0d8b7ac88b8d3e165c841977cb63",
|
|
2002
|
+
"description": "Generate a bassclef-conformant pattern catalog entry by researching a named pattern against authoritative web sources. Used by /launch chain when the catalog has gaps. Also operator-callable for catalog growth.",
|
|
2003
|
+
"inputs": [
|
|
2004
|
+
"Pattern name from GoF or Fowler or DDD"
|
|
2005
|
+
],
|
|
2006
|
+
"outputs": [
|
|
2007
|
+
"Full catalog entry markdown",
|
|
2008
|
+
"Source citations",
|
|
2009
|
+
"Applicability notes"
|
|
2010
|
+
],
|
|
2011
|
+
"problem": "Pattern catalog entries take hours to research. Adopters copy patterns without knowing when they fit.",
|
|
2012
|
+
"value": "Generates a bassclef-conformant catalog entry for a named pattern. Cites authoritative sources."
|
|
2013
|
+
},
|
|
2014
|
+
{
|
|
2015
|
+
"slug": "architect-review",
|
|
2016
|
+
"type": "skill",
|
|
2017
|
+
"path": ".claude/skills/architect-review/SKILL.md",
|
|
2018
|
+
"tier": "lite",
|
|
2019
|
+
"content_hash": "sha256:254b3857debe21f143f100a1182511cd05441d891571530c9992d68c68df40ec",
|
|
2020
|
+
"description": "Run a periodic system-level architecture review. Static pass, dynamic pass, plus a per-run coverage checklist. Fires from /longrun close, /build close, or on operator ask.",
|
|
2021
|
+
"inputs": [
|
|
2022
|
+
"Optional scope — full system or specific subsystem"
|
|
2023
|
+
],
|
|
2024
|
+
"outputs": [
|
|
2025
|
+
"Static comprehension findings",
|
|
2026
|
+
"Dynamic verification findings",
|
|
2027
|
+
"Coverage report per run"
|
|
2028
|
+
],
|
|
2029
|
+
"problem": "System architecture drifts across releases. ADRs get bypassed. Static checks miss runtime rot.",
|
|
2030
|
+
"value": "A periodic architecture review that runs both static and dynamic passes. Names the drift with evidence."
|
|
2031
|
+
},
|
|
2032
|
+
{
|
|
2033
|
+
"slug": "auto-fix",
|
|
2034
|
+
"type": "skill",
|
|
2035
|
+
"path": ".claude/skills/auto-fix/SKILL.md",
|
|
2036
|
+
"tier": "lite",
|
|
2037
|
+
"content_hash": "sha256:3651309a6ad6f00045976a622746a7d2666dbe3c19e24acb899ecae6ca6ca01b",
|
|
2038
|
+
"description": "Autonomous fix lane for narrow non-trivial bugs. Orchestrator drives full /diagnose then a Builder writes the fix, then /verify runs, then a PR opens. Operator merges. Refuses auth, middleware, schema, security, tenant, or prod-infra.",
|
|
2039
|
+
"inputs": [
|
|
2040
|
+
"A failing test or error log or bug ticket"
|
|
2041
|
+
],
|
|
2042
|
+
"outputs": [
|
|
2043
|
+
"/diagnose evidence",
|
|
2044
|
+
"Fix commit",
|
|
2045
|
+
"Verify report"
|
|
2046
|
+
],
|
|
2047
|
+
"problem": "Narrow bugs get patched with quick edits. Root cause gets skipped. Regressions come back.",
|
|
2048
|
+
"value": "Autonomous fix lane for non-trivial narrow bugs. Runs full /diagnose before writing any fix."
|
|
2049
|
+
},
|
|
2050
|
+
{
|
|
2051
|
+
"slug": "autonomous",
|
|
2052
|
+
"type": "skill",
|
|
2053
|
+
"path": ".claude/skills/autonomous/SKILL.md",
|
|
2054
|
+
"tier": "lite",
|
|
2055
|
+
"content_hash": "sha256:94c65a68b005979ac17d8c3bbbfa1c63704843b0a59955a725175d0124525273",
|
|
2056
|
+
"description": "Start or check an autonomous SDLC session. Two axes: who approves handoffs (you vs. the agent) and how work runs (one session vs. parallel agents). Defaults to operator-gated + sequential. Entry point for shipping features hands-off.",
|
|
2057
|
+
"inputs": [
|
|
2058
|
+
"start or check mode",
|
|
2059
|
+
"Optional approver axis and sequence flags"
|
|
2060
|
+
],
|
|
2061
|
+
"outputs": [
|
|
2062
|
+
"Session goal doc",
|
|
2063
|
+
"Handoff sequence",
|
|
2064
|
+
"Approval gate list"
|
|
2065
|
+
],
|
|
2066
|
+
"problem": "Some sessions need SDLC discipline but no operator to run each step. Ceremony blocks flow.",
|
|
2067
|
+
"value": "Starts or checks an autonomous SDLC session. Two axes — who approves handoffs and how sequential the work is."
|
|
2068
|
+
},
|
|
2069
|
+
{
|
|
2070
|
+
"slug": "bind-subdomain",
|
|
2071
|
+
"type": "skill",
|
|
2072
|
+
"path": ".claude/skills/bind-subdomain/SKILL.md",
|
|
2073
|
+
"tier": "lite",
|
|
2074
|
+
"content_hash": "sha256:7a3cd5f0cc557b8b96f765381b1446949aa431c03eba93094485230d1268a712",
|
|
2075
|
+
"description": "Bind a friendly URL to a deployed sunj-labs app. Reads substrate.config.md, calls the deploy-host and DNS adapters. Creates records and polls cert validation. Replaces clickops per standards/domain-and-dns.md.",
|
|
2076
|
+
"inputs": [
|
|
2077
|
+
"App name",
|
|
2078
|
+
"Target subdomain",
|
|
2079
|
+
"Optional deploy-host override"
|
|
2080
|
+
],
|
|
2081
|
+
"outputs": [
|
|
2082
|
+
"DNS record created",
|
|
2083
|
+
"Deploy-host mapping",
|
|
2084
|
+
"Verified URL"
|
|
2085
|
+
],
|
|
2086
|
+
"problem": "Deployed apps at sunj-labs need friendly URLs. Every operator sets it up by hand each time.",
|
|
2087
|
+
"value": "One command binds a friendly URL to a deployed app. Reads config and calls deploy-host plus DNS."
|
|
2088
|
+
},
|
|
1365
2089
|
{
|
|
1366
2090
|
"slug": "build",
|
|
1367
2091
|
"type": "skill",
|
|
@@ -1381,6 +2105,25 @@
|
|
|
1381
2105
|
"problem": "A buildable plan sits on disk. Nothing ships until someone writes code and PRs and gates prod.",
|
|
1382
2106
|
"value": "Reads the plan and ships it. Runs the whole cycle so you can watch instead of type."
|
|
1383
2107
|
},
|
|
2108
|
+
{
|
|
2109
|
+
"slug": "canvas",
|
|
2110
|
+
"type": "skill",
|
|
2111
|
+
"path": ".claude/skills/canvas/SKILL.md",
|
|
2112
|
+
"tier": "lite",
|
|
2113
|
+
"content_hash": "sha256:6e584cfca5a1caede00862ac6358c0582b82e15cf4befecbc41506645e02443f",
|
|
2114
|
+
"description": "Create a new product canvas — three-stage template (Thesis \\u2192 Shape \\u2192 Build Sequence).",
|
|
2115
|
+
"inputs": [
|
|
2116
|
+
"Product name or scope description"
|
|
2117
|
+
],
|
|
2118
|
+
"outputs": [
|
|
2119
|
+
"Canvas doc at strategy/canvases/",
|
|
2120
|
+
"Thesis section",
|
|
2121
|
+
"Shape section",
|
|
2122
|
+
"Build Sequence section"
|
|
2123
|
+
],
|
|
2124
|
+
"problem": "Product canvases get authored ad-hoc. Structure drifts. Downstream skills can't parse them.",
|
|
2125
|
+
"value": "Creates a new product canvas using the three-stage template — Thesis and Shape and Build Sequence."
|
|
2126
|
+
},
|
|
1384
2127
|
{
|
|
1385
2128
|
"slug": "chronicle",
|
|
1386
2129
|
"type": "skill",
|
|
@@ -1444,6 +2187,24 @@
|
|
|
1444
2187
|
"problem": "Cross-cutting concerns bolt into implementations. Logging and tracing pile inside business code.",
|
|
1445
2188
|
"value": "A responsibility matrix that keeps each concern in its own class. Decorators stay clean."
|
|
1446
2189
|
},
|
|
2190
|
+
{
|
|
2191
|
+
"slug": "deploy-prod",
|
|
2192
|
+
"type": "skill",
|
|
2193
|
+
"path": ".claude/skills/deploy-prod/SKILL.md",
|
|
2194
|
+
"tier": "lite",
|
|
2195
|
+
"content_hash": "sha256:ff8921f0c5ad350c2428783ea7800ca90526400631f408660dd77f0a54fb45e5",
|
|
2196
|
+
"description": "Production deployment procedure — test, build, push, CI, verify. Template for any project.",
|
|
2197
|
+
"inputs": [
|
|
2198
|
+
"Optional deploy-host override"
|
|
2199
|
+
],
|
|
2200
|
+
"outputs": [
|
|
2201
|
+
"Deploy log",
|
|
2202
|
+
"Verify status per step",
|
|
2203
|
+
"Rollback procedure"
|
|
2204
|
+
],
|
|
2205
|
+
"problem": "Production deploys go different every time. Steps get missed. Rollbacks take manual rediscovery.",
|
|
2206
|
+
"value": "Standardized production deployment procedure — test then build then push then CI then verify."
|
|
2207
|
+
},
|
|
1447
2208
|
{
|
|
1448
2209
|
"slug": "diagnose",
|
|
1449
2210
|
"type": "skill",
|
|
@@ -1464,6 +2225,67 @@
|
|
|
1464
2225
|
"problem": "Bugs get fixed on guesses. The wrong cause gets patched. The class comes back a week later.",
|
|
1465
2226
|
"value": "A short trace from failure to root cause. You fix the class once instead of the instance three times."
|
|
1466
2227
|
},
|
|
2228
|
+
{
|
|
2229
|
+
"slug": "docs-sync",
|
|
2230
|
+
"type": "skill",
|
|
2231
|
+
"path": ".claude/skills/docs-sync/SKILL.md",
|
|
2232
|
+
"tier": "lite",
|
|
2233
|
+
"content_hash": "sha256:fff61eed1d0248ba8fc8366841417305b6b6c7995877fd4d6ab3c83986774016",
|
|
2234
|
+
"description": "Sync adopter-facing bassclef docs to the GitHub Wiki. Mirrors the bassclef-docs-sync.yml workflow locally. Use when the workflow is wedged or the operator wants a manual full-sync.",
|
|
2235
|
+
"inputs": [
|
|
2236
|
+
"Optional --dry-run flag"
|
|
2237
|
+
],
|
|
2238
|
+
"outputs": [
|
|
2239
|
+
"Wiki pages updated",
|
|
2240
|
+
"Diff report",
|
|
2241
|
+
"Sync log"
|
|
2242
|
+
],
|
|
2243
|
+
"problem": "Adopter-facing bassclef docs drift from source. Wiki gets stale.",
|
|
2244
|
+
"value": "Syncs adopter-facing bassclef docs to the GitHub Wiki. Mirrors the bassclef-docs-sync.yml workflow."
|
|
2245
|
+
},
|
|
2246
|
+
{
|
|
2247
|
+
"slug": "eisenhower",
|
|
2248
|
+
"type": "skill",
|
|
2249
|
+
"path": ".claude/skills/eisenhower/SKILL.md",
|
|
2250
|
+
"tier": "lite",
|
|
2251
|
+
"content_hash": "sha256:b27bbd7433bce0a5c42650390615151c227d3c5f3e7b1d180b8a37e5b27664a9",
|
|
2252
|
+
"description": "Turn open tickets and PRs into a scored Eisenhower matrix — do, schedule, delegate, delete. Anchors 'important' to a goal you name first, so the sort has meaning. Two modes: default (current repo) and --cross-repo.",
|
|
2253
|
+
"composes_with": [
|
|
2254
|
+
"value-prop",
|
|
2255
|
+
"kiss",
|
|
2256
|
+
"sprint",
|
|
2257
|
+
"longrun",
|
|
2258
|
+
"promote",
|
|
2259
|
+
"personas"
|
|
2260
|
+
],
|
|
2261
|
+
"inputs": [
|
|
2262
|
+
"Optional persona ref or launch goal"
|
|
2263
|
+
],
|
|
2264
|
+
"outputs": [
|
|
2265
|
+
"4-quadrant matrix",
|
|
2266
|
+
"Score per ticket",
|
|
2267
|
+
"Recommended pickup order"
|
|
2268
|
+
],
|
|
2269
|
+
"problem": "Backlog fills with tickets and PRs. Priorities blur. What to do first is unclear.",
|
|
2270
|
+
"value": "Turns open tickets and PRs into a scored Eisenhower matrix — do or schedule or delegate or delete."
|
|
2271
|
+
},
|
|
2272
|
+
{
|
|
2273
|
+
"slug": "empathy-map",
|
|
2274
|
+
"type": "skill",
|
|
2275
|
+
"path": ".claude/skills/empathy-map/SKILL.md",
|
|
2276
|
+
"tier": "lite",
|
|
2277
|
+
"content_hash": "sha256:704d7e585c90c1780e7ce4e6021c8f34bf53aa5a0188525940e7992f66a1352b",
|
|
2278
|
+
"description": "Draft Dave Gray's 7-section empathy map for one persona (Goal, See, Say, Do, Hear, Think and Feel, Pains, Gains). Two modes: light (5 min per band, workshop pace) and deep (15 min per band, research pace). Cite transcript lines.",
|
|
2279
|
+
"inputs": [
|
|
2280
|
+
"A persona name from the personas file"
|
|
2281
|
+
],
|
|
2282
|
+
"outputs": [
|
|
2283
|
+
"Empathy map with 7 sections filled",
|
|
2284
|
+
"Persona insight anchors"
|
|
2285
|
+
],
|
|
2286
|
+
"problem": "Personas ship without lived context. Downstream product decisions miss what the user sees or feels.",
|
|
2287
|
+
"value": "Dave Gray's 7-section empathy map for one persona. Goal + See + Say + Do + Hear + Think + Pain plus Gain."
|
|
2288
|
+
},
|
|
1467
2289
|
{
|
|
1468
2290
|
"slug": "feynman",
|
|
1469
2291
|
"type": "skill",
|
|
@@ -1482,6 +2304,25 @@
|
|
|
1482
2304
|
"problem": "Technical concepts get explained with jargon. Non-technical readers stop reading.",
|
|
1483
2305
|
"value": "Explains a technical concept in plain English — Feynman style. For CTO-vettable sidebars in journal entries."
|
|
1484
2306
|
},
|
|
2307
|
+
{
|
|
2308
|
+
"slug": "frontend-design",
|
|
2309
|
+
"type": "skill",
|
|
2310
|
+
"path": ".claude/skills/frontend-design/SKILL.md",
|
|
2311
|
+
"tier": "lite",
|
|
2312
|
+
"content_hash": "sha256:11e53524794a6d61e5c9ae716420ab521acbf7bd0c0d1d6f805ed27aa9f1f9fc",
|
|
2313
|
+
"description": "Create distinctive, production-grade frontend interfaces with high design quality. Avoids generic AI aesthetics.",
|
|
2314
|
+
"inputs": [
|
|
2315
|
+
"A UI intent or design goal",
|
|
2316
|
+
"Optional luminary lens"
|
|
2317
|
+
],
|
|
2318
|
+
"outputs": [
|
|
2319
|
+
"Frontend implementation with tokens",
|
|
2320
|
+
"Component structure",
|
|
2321
|
+
"Design-token JSON"
|
|
2322
|
+
],
|
|
2323
|
+
"problem": "AI-generated frontend interfaces default to generic aesthetics. Distinctive design takes real judgment.",
|
|
2324
|
+
"value": "Creates distinctive production-grade frontend interfaces with high design quality. Avoids generic AI defaults."
|
|
2325
|
+
},
|
|
1485
2326
|
{
|
|
1486
2327
|
"slug": "howdoi",
|
|
1487
2328
|
"type": "skill",
|
|
@@ -1552,6 +2393,30 @@
|
|
|
1552
2393
|
"problem": "Different sessions start with different input shapes — text or URL or image or repo or transcript.",
|
|
1553
2394
|
"value": "One schema-validated artifact from any input. Downstream skills read one shape not seven."
|
|
1554
2395
|
},
|
|
2396
|
+
{
|
|
2397
|
+
"slug": "interview-me",
|
|
2398
|
+
"type": "skill",
|
|
2399
|
+
"path": ".claude/skills/interview-me/SKILL.md",
|
|
2400
|
+
"tier": "lite",
|
|
2401
|
+
"content_hash": "sha256:365d6bac9d184d7816ea08801f1ea5c39e7d608302a768bd1fa8b2ad94cfeb0a",
|
|
2402
|
+
"description": "Run a 3-box lean-canvas discovery for one adopter — problem, early adopter, empathy map. Two sizes: quick (30 min) and full (90 min). Calls /state-a-problem, /empathy-map, /value-prop. Produces a filled canvas plus candidate JTBDs.",
|
|
2403
|
+
"composes_with": [
|
|
2404
|
+
"state-a-problem",
|
|
2405
|
+
"empathy-map",
|
|
2406
|
+
"value-prop"
|
|
2407
|
+
],
|
|
2408
|
+
"inputs": [
|
|
2409
|
+
"Adopter self-intro or product description",
|
|
2410
|
+
"Optional size — brief or full"
|
|
2411
|
+
],
|
|
2412
|
+
"outputs": [
|
|
2413
|
+
"Filled 3-box canvas",
|
|
2414
|
+
"Early adopter persona",
|
|
2415
|
+
"Empathy map"
|
|
2416
|
+
],
|
|
2417
|
+
"problem": "New adopters don't know how to explain their product in a way downstream skills can act on.",
|
|
2418
|
+
"value": "3-box lean-canvas discovery for one adopter — problem then early adopter then empathy map."
|
|
2419
|
+
},
|
|
1555
2420
|
{
|
|
1556
2421
|
"slug": "journal",
|
|
1557
2422
|
"type": "skill",
|
|
@@ -1566,8 +2431,44 @@
|
|
|
1566
2431
|
"Journal draft with voice per audience",
|
|
1567
2432
|
"Audience recommendations table"
|
|
1568
2433
|
],
|
|
1569
|
-
"problem": "Session work fades from memory. Insight worth sharing with PE partners or eng leaders never gets written.",
|
|
1570
|
-
"value": "Drafts a journal entry from this session's work. Tuned for PE, search, and board audiences."
|
|
2434
|
+
"problem": "Session work fades from memory. Insight worth sharing with PE partners or eng leaders never gets written.",
|
|
2435
|
+
"value": "Drafts a journal entry from this session's work. Tuned for PE, search, and board audiences."
|
|
2436
|
+
},
|
|
2437
|
+
{
|
|
2438
|
+
"slug": "journal-export",
|
|
2439
|
+
"type": "skill",
|
|
2440
|
+
"path": ".claude/skills/journal-export/SKILL.md",
|
|
2441
|
+
"tier": "lite",
|
|
2442
|
+
"content_hash": "sha256:e63ffd119880230749701b9e484538bfe4a766a8e53ab2778c03f0cdb0762bc9",
|
|
2443
|
+
"description": "Generate a structured journal-entry corpus for a brand team or your own archive — chronicle digest, draft index, moment inventory. Supports incremental updates.",
|
|
2444
|
+
"inputs": [
|
|
2445
|
+
"Time range or theme filter"
|
|
2446
|
+
],
|
|
2447
|
+
"outputs": [
|
|
2448
|
+
"Corpus JSON",
|
|
2449
|
+
"Google Doc export",
|
|
2450
|
+
"Archive-ready file"
|
|
2451
|
+
],
|
|
2452
|
+
"problem": "Journal drafts pile up locally. Brand teams and archives don't get them systematically.",
|
|
2453
|
+
"value": "Structured journal-entry corpus for a brand team or your own archive. Chronicle digest included."
|
|
2454
|
+
},
|
|
2455
|
+
{
|
|
2456
|
+
"slug": "jtbd-tasks",
|
|
2457
|
+
"type": "skill",
|
|
2458
|
+
"path": ".claude/skills/jtbd-tasks/SKILL.md",
|
|
2459
|
+
"tier": "lite",
|
|
2460
|
+
"content_hash": "sha256:77d6922a6f23ce17b2168a86f59365977bd7b4634ccecc3003adf1f7371f3bee",
|
|
2461
|
+
"description": "Translate Jobs-to-be-Done into task analysis — HTA trees plus CTA decision points. First step in the UX translation chain.",
|
|
2462
|
+
"inputs": [
|
|
2463
|
+
"A JTBD statement or persona ref"
|
|
2464
|
+
],
|
|
2465
|
+
"outputs": [
|
|
2466
|
+
"Hierarchical task analysis tree",
|
|
2467
|
+
"Critical decision points",
|
|
2468
|
+
"Task inventory"
|
|
2469
|
+
],
|
|
2470
|
+
"problem": "Jobs-to-be-Done get named but not decomposed. Downstream UX work skips the task hierarchy.",
|
|
2471
|
+
"value": "Translates JTBDs into HTA trees and CTA decision points. First step in the UX translation chain."
|
|
1571
2472
|
},
|
|
1572
2473
|
{
|
|
1573
2474
|
"slug": "kiss",
|
|
@@ -1676,6 +2577,24 @@
|
|
|
1676
2577
|
"problem": "Design lenses live in files no one reads. Adopters pick generic patterns because they don't know the catalog.",
|
|
1677
2578
|
"value": "A browser for the luminary catalog. Filter by discipline. Preview by slug before you pin one to a goal."
|
|
1678
2579
|
},
|
|
2580
|
+
{
|
|
2581
|
+
"slug": "objectory-decompose",
|
|
2582
|
+
"type": "skill",
|
|
2583
|
+
"path": ".claude/skills/objectory-decompose/SKILL.md",
|
|
2584
|
+
"tier": "lite",
|
|
2585
|
+
"content_hash": "sha256:b7b87dbc4893eb7f464e1d08a5cb752c1e1f5a78e37cd97bce97fa71958a8828",
|
|
2586
|
+
"description": "Apply Jacobson's analysis method to an InputArtifact. Extracts entities (domain nouns), actors (verb subjects), verb-goal pairs (use case candidates). Classifies objects per BCE (Boundary / Control / Entity). Output at docs/decompositions/.",
|
|
2587
|
+
"inputs": [
|
|
2588
|
+
"An InputArtifact from /interpret-input"
|
|
2589
|
+
],
|
|
2590
|
+
"outputs": [
|
|
2591
|
+
"Entity list — domain nouns",
|
|
2592
|
+
"Actor list — verb roles",
|
|
2593
|
+
"Use case sketch"
|
|
2594
|
+
],
|
|
2595
|
+
"problem": "Analysis phase skips systematic domain decomposition. Downstream classes miss real responsibilities.",
|
|
2596
|
+
"value": "Applies Jacobson's analysis method to an InputArtifact. Extracts entities and actors and use cases."
|
|
2597
|
+
},
|
|
1679
2598
|
{
|
|
1680
2599
|
"slug": "ogilvy-writing-audit",
|
|
1681
2600
|
"type": "skill",
|
|
@@ -1749,6 +2668,43 @@
|
|
|
1749
2668
|
"problem": "Product decisions get made for a nameless user. Downstream skills invent personas per session.",
|
|
1750
2669
|
"value": "One record of the WHO the product serves. Every skill reads the same personas."
|
|
1751
2670
|
},
|
|
2671
|
+
{
|
|
2672
|
+
"slug": "pick-luminaries",
|
|
2673
|
+
"type": "skill",
|
|
2674
|
+
"path": ".claude/skills/pick-luminaries/SKILL.md",
|
|
2675
|
+
"tier": "lite",
|
|
2676
|
+
"content_hash": "sha256:ef5008b9c8b3a69c38c86652c4380be61dfda9cdb176e11875680a026ca96202",
|
|
2677
|
+
"description": "Pick N luminaries whose lens fits an intent. Runs in-turn. Reads the catalog helper. Writes JSON output. Drives variants in /launch, /stage, and /riff-prototypes.",
|
|
2678
|
+
"inputs": [
|
|
2679
|
+
"Intent paragraph",
|
|
2680
|
+
"Optional N count"
|
|
2681
|
+
],
|
|
2682
|
+
"outputs": [
|
|
2683
|
+
"JSON list of picked luminaries with fit scores",
|
|
2684
|
+
"Rationale per pick"
|
|
2685
|
+
],
|
|
2686
|
+
"problem": "Picking luminaries for a goal takes reading the whole catalog. Manual matching gets biased.",
|
|
2687
|
+
"value": "Picks N luminaries whose lens fits an intent. Runs in-turn. Writes JSON output."
|
|
2688
|
+
},
|
|
2689
|
+
{
|
|
2690
|
+
"slug": "pre-mortem",
|
|
2691
|
+
"type": "skill",
|
|
2692
|
+
"path": ".claude/skills/pre-mortem/SKILL.md",
|
|
2693
|
+
"tier": "lite",
|
|
2694
|
+
"content_hash": "sha256:1fa9299b4f49e8266337bc0923ae49a9a60f29e600486c4f546dec0c06e80088",
|
|
2695
|
+
"description": "Draft a Klein pre-mortem risk ledger for a scope (goal, feature, PR). Two modes: light (3 luminary lenses, 30 min) and full (5-8 lenses, 90 min). Always fires on auth, schema, payments, or compliance work.",
|
|
2696
|
+
"inputs": [
|
|
2697
|
+
"A goal or feature or PR ref",
|
|
2698
|
+
"Optional mode — light or full"
|
|
2699
|
+
],
|
|
2700
|
+
"outputs": [
|
|
2701
|
+
"Risk ledger at docs/risk-ledgers/",
|
|
2702
|
+
"Risks per lens with cures",
|
|
2703
|
+
"Disposition"
|
|
2704
|
+
],
|
|
2705
|
+
"problem": "Goal docs ship without risk consideration. Teams find failures late instead of before code.",
|
|
2706
|
+
"value": "Drafts a Klein pre-mortem risk ledger for a scope. Two modes — light (3 lenses) or full (5+ lenses)."
|
|
2707
|
+
},
|
|
1752
2708
|
{
|
|
1753
2709
|
"slug": "promote",
|
|
1754
2710
|
"type": "skill",
|
|
@@ -1771,6 +2727,103 @@
|
|
|
1771
2727
|
"problem": "Good patterns in one adopter repo stay stuck there. Every other adopter reinvents the same wheel.",
|
|
1772
2728
|
"value": "Files a promote ticket in the current repo plus bassclef-upstream. Substrate evolves with real usage."
|
|
1773
2729
|
},
|
|
2730
|
+
{
|
|
2731
|
+
"slug": "prototype-gallery",
|
|
2732
|
+
"type": "skill",
|
|
2733
|
+
"path": ".claude/skills/prototype-gallery/SKILL.md",
|
|
2734
|
+
"tier": "lite",
|
|
2735
|
+
"content_hash": "sha256:0823ba7474bacd616a97b75e82c03f680339fbc0992e591a941b4dd76c42e709",
|
|
2736
|
+
"description": "Generate a variant index page for a repo's prototypes — DEPRECATED 2026-05-12 per ADR-020. Use /stage instead. Skill retained during 3-month deprecation grace before retirement.",
|
|
2737
|
+
"inputs": [
|
|
2738
|
+
"Redirects to /stage"
|
|
2739
|
+
],
|
|
2740
|
+
"outputs": [
|
|
2741
|
+
"Deprecation notice",
|
|
2742
|
+
"Redirect to /stage"
|
|
2743
|
+
],
|
|
2744
|
+
"problem": "DEPRECATED 2026-05-12 per ADR-020. Use /stage instead.",
|
|
2745
|
+
"value": "Deprecated skill kept for backward compat. Points to /stage."
|
|
2746
|
+
},
|
|
2747
|
+
{
|
|
2748
|
+
"slug": "provision-deploy-host",
|
|
2749
|
+
"type": "skill",
|
|
2750
|
+
"path": ".claude/skills/provision-deploy-host/SKILL.md",
|
|
2751
|
+
"tier": "lite",
|
|
2752
|
+
"content_hash": "sha256:62000692c88b5ceb15d3a04ae3f8c45a97728061e1915368af11f67945643ee1",
|
|
2753
|
+
"description": "Run the consumer onboarding chain — read bassclef-platform.yml plus verify secrets, extend GHA scope, run aws amplify create-app with console-pivot fallback, open the consumer config PR, write an audit row. Replaces the 5-step flow.",
|
|
2754
|
+
"inputs": [
|
|
2755
|
+
"Consumer name and target host"
|
|
2756
|
+
],
|
|
2757
|
+
"outputs": [
|
|
2758
|
+
"Verified secrets",
|
|
2759
|
+
"Extended GHA scope",
|
|
2760
|
+
"Rollback token"
|
|
2761
|
+
],
|
|
2762
|
+
"problem": "Consumer onboarding chain runs manually. Secret checks and GHA scope grants get missed.",
|
|
2763
|
+
"value": "Runs the consumer onboarding chain. Reads platform config plus verifies secrets and extends GHA scope."
|
|
2764
|
+
},
|
|
2765
|
+
{
|
|
2766
|
+
"slug": "quick-fix",
|
|
2767
|
+
"type": "skill",
|
|
2768
|
+
"path": ".claude/skills/quick-fix/SKILL.md",
|
|
2769
|
+
"tier": "lite",
|
|
2770
|
+
"content_hash": "sha256:a90da5dd5375d0d242f801b9e89f53984f511738fa0c3fcb833aa8e33836c448",
|
|
2771
|
+
"description": "Compressed fix workflow for trivial bugs with stated entry criteria. Operator-in-loop. Runs /diagnose in skip-criteria mode. Then operator writes the fix. Full /verify still mandatory. Commits carry [quick-fix] footer for audit.",
|
|
2772
|
+
"inputs": [
|
|
2773
|
+
"A failing test or error log"
|
|
2774
|
+
],
|
|
2775
|
+
"outputs": [
|
|
2776
|
+
"Fix commit",
|
|
2777
|
+
"Entry criteria confirmed",
|
|
2778
|
+
"Verify pass"
|
|
2779
|
+
],
|
|
2780
|
+
"problem": "Trivial bugs get over-ceremonied by full /diagnose. Small edits shouldn't need the whole chain.",
|
|
2781
|
+
"value": "Compressed fix workflow for trivial bugs. Operator-in-loop with stated entry criteria."
|
|
2782
|
+
},
|
|
2783
|
+
{
|
|
2784
|
+
"slug": "release",
|
|
2785
|
+
"type": "skill",
|
|
2786
|
+
"path": ".claude/skills/release/SKILL.md",
|
|
2787
|
+
"tier": "lite",
|
|
2788
|
+
"content_hash": "sha256:17b931a7a5d3b69f57bc76f995af5c5c7a967df0389719c9fcbfc7f6677d09a9",
|
|
2789
|
+
"description": "Ship framework files from bassclef-upstream to public bassclef, filtered by tier. Dry-runs first, reports tier counts plus andon scan plus sibling smoke evidence. On operator confirm runs the live release and opens a PR. Per ADR-029.",
|
|
2790
|
+
"composes_with": [
|
|
2791
|
+
"verify",
|
|
2792
|
+
"state-a-problem",
|
|
2793
|
+
"value-prop",
|
|
2794
|
+
"kiss"
|
|
2795
|
+
],
|
|
2796
|
+
"inputs": [
|
|
2797
|
+
"Optional tier filter",
|
|
2798
|
+
"Dry-run or apply flag"
|
|
2799
|
+
],
|
|
2800
|
+
"outputs": [
|
|
2801
|
+
"Files shipped",
|
|
2802
|
+
"Dry-run diff",
|
|
2803
|
+
"Public PR",
|
|
2804
|
+
"Tag drop"
|
|
2805
|
+
],
|
|
2806
|
+
"problem": "Framework files ship from upstream to public bassclef through many manual steps. Dry-run catches slip past.",
|
|
2807
|
+
"value": "Ships framework files from bassclef-upstream to public bassclef. Filtered by tier. Dry-runs first."
|
|
2808
|
+
},
|
|
2809
|
+
{
|
|
2810
|
+
"slug": "release-notes",
|
|
2811
|
+
"type": "skill",
|
|
2812
|
+
"path": ".claude/skills/release-notes/SKILL.md",
|
|
2813
|
+
"tier": "lite",
|
|
2814
|
+
"content_hash": "sha256:4fc630b0a7e318d06da7b2a9fc7a8b7eb3bb3c6582b4f3eb527188f1b5135921",
|
|
2815
|
+
"description": "Draft a weekly changelog for two audiences — internal team (what shipped) and users (what's new for you). Pushes to Google Docs.",
|
|
2816
|
+
"inputs": [
|
|
2817
|
+
"Time range or release tag ref"
|
|
2818
|
+
],
|
|
2819
|
+
"outputs": [
|
|
2820
|
+
"Internal changelog",
|
|
2821
|
+
"User-facing changelog",
|
|
2822
|
+
"Highlights section"
|
|
2823
|
+
],
|
|
2824
|
+
"problem": "Weekly releases ship without a written record. Users miss what changed. Team misses what shipped.",
|
|
2825
|
+
"value": "Drafts a weekly changelog for two audiences — internal team and users. Plain English."
|
|
2826
|
+
},
|
|
1774
2827
|
{
|
|
1775
2828
|
"slug": "requirement",
|
|
1776
2829
|
"type": "skill",
|
|
@@ -1810,6 +2863,37 @@
|
|
|
1810
2863
|
"problem": "Sessions end and the lessons vanish. What worked and what broke — nowhere written.",
|
|
1811
2864
|
"value": "A short retro that names what to keep and what to change next session."
|
|
1812
2865
|
},
|
|
2866
|
+
{
|
|
2867
|
+
"slug": "rfc",
|
|
2868
|
+
"type": "skill",
|
|
2869
|
+
"path": ".claude/skills/rfc/SKILL.md",
|
|
2870
|
+
"tier": "lite",
|
|
2871
|
+
"content_hash": "sha256:217fe0129b1410b4d83b7882edc6f7f9d1567029119671ce0cebf1e6b2489859",
|
|
2872
|
+
"description": "Run an outside-luminary council review on a proposed design. Picks 3-5 luminaries not in the authoring set. Applies each lens to risks and decisions. Writes findings with severity and disposition options. Catches what the authoring lenses miss.",
|
|
2873
|
+
"composes_with": [
|
|
2874
|
+
"architect-review",
|
|
2875
|
+
"pre-mortem",
|
|
2876
|
+
"luminary",
|
|
2877
|
+
"pick-luminaries",
|
|
2878
|
+
"state-a-problem",
|
|
2879
|
+
"kiss",
|
|
2880
|
+
"value-prop"
|
|
2881
|
+
],
|
|
2882
|
+
"depends_on": [
|
|
2883
|
+
"luminary"
|
|
2884
|
+
],
|
|
2885
|
+
"inputs": [
|
|
2886
|
+
"A goal doc path",
|
|
2887
|
+
"Optional --lenses override for manual pick"
|
|
2888
|
+
],
|
|
2889
|
+
"outputs": [
|
|
2890
|
+
"RFC doc at docs/rfcs/",
|
|
2891
|
+
"Severity-tagged findings per lens",
|
|
2892
|
+
"Disposition options"
|
|
2893
|
+
],
|
|
2894
|
+
"problem": "Design proposals get one lens set from the authoring session. Blind spots ship into HIGH-severity findings later.",
|
|
2895
|
+
"value": "Outside-luminary council review on a proposed design. Picks 3-5 luminaries not in the authoring set."
|
|
2896
|
+
},
|
|
1813
2897
|
{
|
|
1814
2898
|
"slug": "riff",
|
|
1815
2899
|
"type": "skill",
|
|
@@ -1832,6 +2916,23 @@
|
|
|
1832
2916
|
"problem": "Design directions get one variant and no comparison. Operator picks blind. Rework is huge.",
|
|
1833
2917
|
"value": "Two or three clickable mocks per UI surface. Each mock pins a different luminary lens."
|
|
1834
2918
|
},
|
|
2919
|
+
{
|
|
2920
|
+
"slug": "riff-prototypes",
|
|
2921
|
+
"type": "skill",
|
|
2922
|
+
"path": ".claude/skills/riff-prototypes/SKILL.md",
|
|
2923
|
+
"tier": "lite",
|
|
2924
|
+
"content_hash": "sha256:db17869e7ee217ef0b43166ab60ffd7f22178c20537c3c35ff03ebceb1e98c66",
|
|
2925
|
+
"description": "DEPRECATED — use /stage instead. Visual variants with luminary champion-challenger; work absorbed by /stage light size per ADR-020. Retained during 3-month deprecation grace before retirement.",
|
|
2926
|
+
"inputs": [
|
|
2927
|
+
"Redirects to /stage"
|
|
2928
|
+
],
|
|
2929
|
+
"outputs": [
|
|
2930
|
+
"Deprecation notice",
|
|
2931
|
+
"Redirect to /stage"
|
|
2932
|
+
],
|
|
2933
|
+
"problem": "DEPRECATED — use /stage instead. Visual variants with luminary champion-challenger.",
|
|
2934
|
+
"value": "Deprecated skill absorbed into /stage. Points to the new entry point."
|
|
2935
|
+
},
|
|
1835
2936
|
{
|
|
1836
2937
|
"slug": "roadmap-reconcile",
|
|
1837
2938
|
"type": "skill",
|
|
@@ -1851,6 +2952,24 @@
|
|
|
1851
2952
|
"problem": "Canvas roadmap tables get stale. Shipped work sits marked pending. Sequencing drifts from reality.",
|
|
1852
2953
|
"value": "Diffs the roadmap against merged PRs plus fresh session logs. Applies edits so the canvas matches reality."
|
|
1853
2954
|
},
|
|
2955
|
+
{
|
|
2956
|
+
"slug": "secrets-bootstrap",
|
|
2957
|
+
"type": "skill",
|
|
2958
|
+
"path": ".claude/skills/secrets-bootstrap/SKILL.md",
|
|
2959
|
+
"tier": "lite",
|
|
2960
|
+
"content_hash": "sha256:ab9ec4a1689fcafb870c025475f40fe40bdcda266060f56c0de71062bf7918bd",
|
|
2961
|
+
"description": "Verify the operator's shell env against the secrets manifest. Calls the per-storage-type adapter; env and github_actions_secret implemented, others stub for V2. --write bootstraps ~/.config/bassclef/secrets.env. Read-only by default.",
|
|
2962
|
+
"inputs": [
|
|
2963
|
+
"Optional --verbose flag"
|
|
2964
|
+
],
|
|
2965
|
+
"outputs": [
|
|
2966
|
+
"Secret check status per key",
|
|
2967
|
+
"Missing secrets list",
|
|
2968
|
+
"Adapter output"
|
|
2969
|
+
],
|
|
2970
|
+
"problem": "Operator shell env drifts from the secrets manifest. Missing secrets surface mid-session.",
|
|
2971
|
+
"value": "Verifies the operator's shell env against the secrets manifest. Calls adapters per storage type."
|
|
2972
|
+
},
|
|
1854
2973
|
{
|
|
1855
2974
|
"slug": "session-end",
|
|
1856
2975
|
"type": "skill",
|
|
@@ -1902,6 +3021,24 @@
|
|
|
1902
3021
|
"problem": "Session logs get lost between mid-session interrupts and Stop hook races. Next session has no memory.",
|
|
1903
3022
|
"value": "One log entry that names what shipped and what was decided and what's still open."
|
|
1904
3023
|
},
|
|
3024
|
+
{
|
|
3025
|
+
"slug": "skill",
|
|
3026
|
+
"type": "skill",
|
|
3027
|
+
"path": ".claude/skills/skill/SKILL.md",
|
|
3028
|
+
"tier": "lite",
|
|
3029
|
+
"content_hash": "sha256:d17abb4bd44d94fe4edd0bbacee0fb4789c0cc23402baac0d165209da45dc821",
|
|
3030
|
+
"description": "Compose a new bassclef skill from idea to conforming SKILL.md. Runs the taxonomy gate (skill / rule / hook / luminary?). Generates a verb-first plain-language description. Scaffolds the frame. Pre-validates against the live clarity gate.",
|
|
3031
|
+
"inputs": [
|
|
3032
|
+
"Skill idea and rough description"
|
|
3033
|
+
],
|
|
3034
|
+
"outputs": [
|
|
3035
|
+
"SKILL.md file conforming to shape",
|
|
3036
|
+
"Frontmatter with all required fields",
|
|
3037
|
+
"Body sections"
|
|
3038
|
+
],
|
|
3039
|
+
"problem": "Adding a new bassclef skill takes manual scaffolding. Frontmatter and body shape drift.",
|
|
3040
|
+
"value": "Composes a new bassclef skill from idea to conforming SKILL.md. Runs the taxonomy gate."
|
|
3041
|
+
},
|
|
1905
3042
|
{
|
|
1906
3043
|
"slug": "skills",
|
|
1907
3044
|
"type": "skill",
|
|
@@ -1920,6 +3057,24 @@
|
|
|
1920
3057
|
"problem": "Bassclef ships around 99 skills. Adopters don't know which one fits their moment.",
|
|
1921
3058
|
"value": "The catalog live. Every skill grouped by discovery cluster. Descriptions optimized for scan."
|
|
1922
3059
|
},
|
|
3060
|
+
{
|
|
3061
|
+
"slug": "smoke-test",
|
|
3062
|
+
"type": "skill",
|
|
3063
|
+
"path": ".claude/skills/smoke-test/SKILL.md",
|
|
3064
|
+
"tier": "lite",
|
|
3065
|
+
"content_hash": "sha256:81f5b5e3dd3df195dd3e43c722b64a0c6c26fcc1462665e430b10aa9c581b970",
|
|
3066
|
+
"description": "Smoke test for deployed apps — health, auth redirect, critical API paths. Pass/fail gate, not a persona journey. Renamed from /test-e2e on 2026-04-15 to disambiguate from /synthetic-user.",
|
|
3067
|
+
"inputs": [
|
|
3068
|
+
"App URL or subdomain"
|
|
3069
|
+
],
|
|
3070
|
+
"outputs": [
|
|
3071
|
+
"Pass/fail per check",
|
|
3072
|
+
"Gate signal",
|
|
3073
|
+
"Log per failing check"
|
|
3074
|
+
],
|
|
3075
|
+
"problem": "Deploys ship without a post-release check. Broken auth or a 500 on a critical path lands in prod.",
|
|
3076
|
+
"value": "Smoke test for deployed apps — health then auth redirect then critical API paths."
|
|
3077
|
+
},
|
|
1923
3078
|
{
|
|
1924
3079
|
"slug": "spec",
|
|
1925
3080
|
"type": "skill",
|
|
@@ -1979,6 +3134,26 @@
|
|
|
1979
3134
|
"problem": "A UI idea needs to be seen before it can be judged. Prose and wireframes lose the story.",
|
|
1980
3135
|
"value": "Turns an idea into clickable mocks on a deployed subdomain. Operator taps through and picks."
|
|
1981
3136
|
},
|
|
3137
|
+
{
|
|
3138
|
+
"slug": "state",
|
|
3139
|
+
"type": "skill",
|
|
3140
|
+
"path": ".claude/skills/state/SKILL.md",
|
|
3141
|
+
"tier": "lite",
|
|
3142
|
+
"content_hash": "sha256:c151769218c4d5e79f7e0c0837542480502d2aa9d1ded2055d3d2b012ab0189c",
|
|
3143
|
+
"description": "Inspect bassclef's saved state — get, list, count, or validate entries via lib/state.sh. Read-only. Writes happen through dedicated skills like /session-end and /chronicle.",
|
|
3144
|
+
"inputs": [
|
|
3145
|
+
"Verb — get or list or count or validate",
|
|
3146
|
+
"Entity type and optional slug"
|
|
3147
|
+
],
|
|
3148
|
+
"outputs": [
|
|
3149
|
+
"State entry values",
|
|
3150
|
+
"List of entries per type",
|
|
3151
|
+
"Count",
|
|
3152
|
+
"Validation report"
|
|
3153
|
+
],
|
|
3154
|
+
"problem": "Bassclef's saved state lives in state markers and JSON files. Read-only access is scattered.",
|
|
3155
|
+
"value": "Inspects bassclef's saved state — get or list or count or validate entries via lib/state.sh."
|
|
3156
|
+
},
|
|
1982
3157
|
{
|
|
1983
3158
|
"slug": "state-a-problem",
|
|
1984
3159
|
"type": "skill",
|
|
@@ -2000,6 +3175,61 @@
|
|
|
2000
3175
|
"problem": "PR bodies and issue bodies open with framing that hides the user pain. Readers scroll past.",
|
|
2001
3176
|
"value": "One statement that leads with who hurts and what breaks and why fix it now. Ready to paste."
|
|
2002
3177
|
},
|
|
3178
|
+
{
|
|
3179
|
+
"slug": "substrate-check",
|
|
3180
|
+
"type": "skill",
|
|
3181
|
+
"path": ".claude/skills/substrate-check/SKILL.md",
|
|
3182
|
+
"tier": "lite",
|
|
3183
|
+
"content_hash": "sha256:f63ebad90abe9b56c29e2a7e3cf6300af93afddd1a90595c6a59afe49b3c777f",
|
|
3184
|
+
"description": "Check the bassclef wiring in this repo. Validates files, skills, hooks, CLIs, git remote, CLAUDE.md, and session dirs. Use before a fresh session. Use after a new setup. Renamed from /self-test on 2026-04-15.",
|
|
3185
|
+
"inputs": [
|
|
3186
|
+
"Optional --verbose flag"
|
|
3187
|
+
],
|
|
3188
|
+
"outputs": [
|
|
3189
|
+
"8 check results with PASS/WARN/FAIL",
|
|
3190
|
+
"Warnings list",
|
|
3191
|
+
"Overall status"
|
|
3192
|
+
],
|
|
3193
|
+
"problem": "Bassclef wiring drifts across environments. Broken files and missing hooks get discovered mid-session.",
|
|
3194
|
+
"value": "Checks the bassclef wiring in this repo. Validates files and hooks and CLIs and git remote."
|
|
3195
|
+
},
|
|
3196
|
+
{
|
|
3197
|
+
"slug": "synthetic-user",
|
|
3198
|
+
"type": "skill",
|
|
3199
|
+
"path": ".claude/skills/synthetic-user/SKILL.md",
|
|
3200
|
+
"tier": "lite",
|
|
3201
|
+
"content_hash": "sha256:0ce917366a24eb9ff0f753aad0013d9266f792aedc3707b157949bb46c688351",
|
|
3202
|
+
"description": "Run persona-aware Playwright tests that simulate real user journeys, verify feature parity, and auto-file JTBD proposals as GitHub issues. Requires Playwright MCP and persona definitions.",
|
|
3203
|
+
"inputs": [
|
|
3204
|
+
"Persona ref",
|
|
3205
|
+
"Optional flow or tier level"
|
|
3206
|
+
],
|
|
3207
|
+
"outputs": [
|
|
3208
|
+
"Playwright test run",
|
|
3209
|
+
"Feature parity report",
|
|
3210
|
+
"Screenshot diffs"
|
|
3211
|
+
],
|
|
3212
|
+
"problem": "Feature parity across releases needs real user journey coverage. Manual test walks take hours.",
|
|
3213
|
+
"value": "Persona-aware Playwright tests that simulate real user journeys. Verify feature parity per persona."
|
|
3214
|
+
},
|
|
3215
|
+
{
|
|
3216
|
+
"slug": "task-scenarios",
|
|
3217
|
+
"type": "skill",
|
|
3218
|
+
"path": ".claude/skills/task-scenarios/SKILL.md",
|
|
3219
|
+
"tier": "lite",
|
|
3220
|
+
"content_hash": "sha256:a10bc4190dffe3119fc16c783708d4163e98745d85c0cb8a8e6fee44a9a0dd8d",
|
|
3221
|
+
"description": "Convert task analysis into user stories and scenarios with JTBD traceability. Second step in the UX translation chain.",
|
|
3222
|
+
"inputs": [
|
|
3223
|
+
"Task analysis output from /jtbd-tasks"
|
|
3224
|
+
],
|
|
3225
|
+
"outputs": [
|
|
3226
|
+
"User stories with JTBD refs",
|
|
3227
|
+
"Scenario narratives",
|
|
3228
|
+
"Trace matrix"
|
|
3229
|
+
],
|
|
3230
|
+
"problem": "Task analysis outputs stay abstract. Downstream user stories skip JTBD traceability.",
|
|
3231
|
+
"value": "Converts task analysis into user stories or scenarios with JTBD traceability."
|
|
3232
|
+
},
|
|
2003
3233
|
{
|
|
2004
3234
|
"slug": "temperance",
|
|
2005
3235
|
"type": "skill",
|
|
@@ -2018,6 +3248,24 @@
|
|
|
2018
3248
|
"problem": "Sessions dive into edits before the operator asks whether it's the right work or the right shape.",
|
|
2019
3249
|
"value": "A pause-and-think gate at every scope decision boundary. Six questions before code."
|
|
2020
3250
|
},
|
|
3251
|
+
{
|
|
3252
|
+
"slug": "tier-dependency-audit",
|
|
3253
|
+
"type": "skill",
|
|
3254
|
+
"path": ".claude/skills/tier-dependency-audit/SKILL.md",
|
|
3255
|
+
"tier": "lite",
|
|
3256
|
+
"content_hash": "sha256:b149434c06842fd821bc776ba864a31fe2121ab7376a6b402dd582a771fa2579",
|
|
3257
|
+
"description": "Audit tier coverage. Sort every file into 4 buckets — tagged, missing tag, leak, missing from release. Works across lite, standard, standard-pro, ultra, upstream. Run before release to catch drift.",
|
|
3258
|
+
"inputs": [
|
|
3259
|
+
"Optional bucket filter"
|
|
3260
|
+
],
|
|
3261
|
+
"outputs": [
|
|
3262
|
+
"Bucket count per class",
|
|
3263
|
+
"Findings per file",
|
|
3264
|
+
"Cure suggestions"
|
|
3265
|
+
],
|
|
3266
|
+
"problem": "Tier coverage drifts across releases. Some files carry no tag; some tags mismatch the release manifest.",
|
|
3267
|
+
"value": "Audits tier coverage. Sorts every file into 4 buckets — tagged or missing tag or leak or missing from release."
|
|
3268
|
+
},
|
|
2021
3269
|
{
|
|
2022
3270
|
"slug": "use-case",
|
|
2023
3271
|
"type": "skill",
|
|
@@ -2053,6 +3301,25 @@
|
|
|
2053
3301
|
"problem": "Stories get written from developer intent not persona need. INVEST shape drifts.",
|
|
2054
3302
|
"value": "INVEST-shaped stories that trace back to personas and JTBDs and value prop."
|
|
2055
3303
|
},
|
|
3304
|
+
{
|
|
3305
|
+
"slug": "ux-migration",
|
|
3306
|
+
"type": "skill",
|
|
3307
|
+
"path": ".claude/skills/ux-migration/SKILL.md",
|
|
3308
|
+
"tier": "lite",
|
|
3309
|
+
"content_hash": "sha256:178f42af2ab477eb6819162ec1887502f92faec5a627f7fcbb9482272fcd62fd",
|
|
3310
|
+
"description": "Compare existing UX to a target treatment, then plan the migration — branching strategy, feature flags, cutover checklist. Run after /riff-prototypes picks a direction.",
|
|
3311
|
+
"inputs": [
|
|
3312
|
+
"Current UX ref",
|
|
3313
|
+
"Target treatment ref"
|
|
3314
|
+
],
|
|
3315
|
+
"outputs": [
|
|
3316
|
+
"Migration plan with phases",
|
|
3317
|
+
"Feature flag strategy",
|
|
3318
|
+
"Branching sequence"
|
|
3319
|
+
],
|
|
3320
|
+
"problem": "New UX treatments land alongside old ones. Migration strategy gets improvised per screen.",
|
|
3321
|
+
"value": "Compares existing UX to a target treatment. Plans the migration — branches and feature flags."
|
|
3322
|
+
},
|
|
2056
3323
|
{
|
|
2057
3324
|
"slug": "value-prop",
|
|
2058
3325
|
"type": "skill",
|
|
@@ -2071,6 +3338,24 @@
|
|
|
2071
3338
|
"problem": "PR bodies and ticket bodies open with solution-framing. The reader has no reason to care.",
|
|
2072
3339
|
"value": "One line that names claim plus sharpener. Three sizes — tweet and brief and verbose."
|
|
2073
3340
|
},
|
|
3341
|
+
{
|
|
3342
|
+
"slug": "value-prop-canvas",
|
|
3343
|
+
"type": "skill",
|
|
3344
|
+
"path": ".claude/skills/value-prop-canvas/SKILL.md",
|
|
3345
|
+
"tier": "lite",
|
|
3346
|
+
"content_hash": "sha256:2dd25bce77ccc2470a386cf44dbf985c69c3d9f05369b3a46833aaed47d0f422",
|
|
3347
|
+
"description": "Produce a Strategyzer Value Proposition Canvas per persona — Customer Profile (Jobs/Pains/Gains) plus Value Map (Products/Pain-relievers/Gain-creators) plus fit-validation. The diagnostic lens over /personas.",
|
|
3348
|
+
"inputs": [
|
|
3349
|
+
"Persona name from personas file"
|
|
3350
|
+
],
|
|
3351
|
+
"outputs": [
|
|
3352
|
+
"Customer profile — Jobs plus Pains plus Gains",
|
|
3353
|
+
"Value map",
|
|
3354
|
+
"Fit gap"
|
|
3355
|
+
],
|
|
3356
|
+
"problem": "Value propositions get stated without persona anchoring. Jobs and pains and gains float free.",
|
|
3357
|
+
"value": "Strategyzer Value Proposition Canvas per persona. Customer profile plus value map."
|
|
3358
|
+
},
|
|
2074
3359
|
{
|
|
2075
3360
|
"slug": "verify",
|
|
2076
3361
|
"type": "skill",
|
|
@@ -2164,6 +3449,14 @@
|
|
|
2164
3449
|
"content_hash": "sha256:ff624b11c3c3cea65c59ae6b3cbf5fb18963dcaaec737fe2411e19a586ce20ec",
|
|
2165
3450
|
"description": "The Alembic sibling of .claude/rules/schema-management.md for adopters using Alembic without SQLAlchemy ORM models (raw SQL migrations against a Python codebase)."
|
|
2166
3451
|
},
|
|
3452
|
+
{
|
|
3453
|
+
"slug": "architect-review-discipline",
|
|
3454
|
+
"type": "standard",
|
|
3455
|
+
"path": "standards/architect-review-discipline.md",
|
|
3456
|
+
"tier": "lite",
|
|
3457
|
+
"content_hash": "sha256:9855be95278ea621c14e65387a02ad098fc67cb6523283afba3e18c95e9e5bb4",
|
|
3458
|
+
"description": "- ADR-035 — names the substrate-as-system tenet + the lens-gap that bet 24c surfaced - architecture/audits/2026-06-24-closeout.md — the audit that missed the mechanism-fidelity class; informs the universal framework's mandatory verification step -…"
|
|
3459
|
+
},
|
|
2167
3460
|
{
|
|
2168
3461
|
"slug": "artifact-composition",
|
|
2169
3462
|
"type": "standard",
|
|
@@ -2212,6 +3505,14 @@
|
|
|
2212
3505
|
"content_hash": "sha256:9f0865679f5708323dd0009cf2c6cab18f1200a1e37a3672d29af949f8d6fc13",
|
|
2213
3506
|
"description": "The .bassclef-managed sentinel marks a directory as bassclef-managed content."
|
|
2214
3507
|
},
|
|
3508
|
+
{
|
|
3509
|
+
"slug": "bassclef-platform",
|
|
3510
|
+
"type": "standard",
|
|
3511
|
+
"path": "standards/bassclef-platform.md",
|
|
3512
|
+
"tier": "lite",
|
|
3513
|
+
"content_hash": "sha256:1ffa49ade731c954f130e0edc67489f764584529c3a979d19f1625bdc4cfd52e",
|
|
3514
|
+
"description": "The agent-native platform-engineering primitive."
|
|
3515
|
+
},
|
|
2215
3516
|
{
|
|
2216
3517
|
"slug": "bassclef-source-config",
|
|
2217
3518
|
"type": "standard",
|
|
@@ -2220,6 +3521,14 @@
|
|
|
2220
3521
|
"content_hash": "sha256:406b845be8898f00286b41d2511d95a44debcf6a0bb98e28389e77b18073ad86",
|
|
2221
3522
|
"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:"
|
|
2222
3523
|
},
|
|
3524
|
+
{
|
|
3525
|
+
"slug": "bassclef-test-repos",
|
|
3526
|
+
"type": "standard",
|
|
3527
|
+
"path": "standards/bassclef-test-repos.md",
|
|
3528
|
+
"tier": "lite",
|
|
3529
|
+
"content_hash": "sha256:09755ab5a11c27e624fccea8e7072fe807c24464192c6791137252fa96b232d2",
|
|
3530
|
+
"description": "Two dedicated repos exist as bassclef's validation surface — separate from operator product work (POA, TwoDo, Ops, Pruneguice, Quorum)."
|
|
3531
|
+
},
|
|
2223
3532
|
{
|
|
2224
3533
|
"slug": "branch-stacking",
|
|
2225
3534
|
"type": "standard",
|
|
@@ -2244,6 +3553,14 @@
|
|
|
2244
3553
|
"content_hash": "sha256:4fb4c317e247fd64e1451a6fc65f198b30373fa38105271700ae4b09642d5163",
|
|
2245
3554
|
"description": "This standard codifies language-agnostic principles for writing safer code across bassclef's supported stacks (TypeScript, Python, Ruby, Java, Go, bash)."
|
|
2246
3555
|
},
|
|
3556
|
+
{
|
|
3557
|
+
"slug": "cold-adopter-harness",
|
|
3558
|
+
"type": "standard",
|
|
3559
|
+
"path": "standards/cold-adopter-harness.md",
|
|
3560
|
+
"tier": "lite",
|
|
3561
|
+
"content_hash": "sha256:a1c62f6cd5cb44033f62efedc68c83a06d8490f014137fb63c3bbbcbcc370319",
|
|
3562
|
+
"description": "The cold-adopter harness is a structural validator that approximates a brand-new operator cloning bassclef on a fresh laptop."
|
|
3563
|
+
},
|
|
2247
3564
|
{
|
|
2248
3565
|
"slug": "composer-prerequisites",
|
|
2249
3566
|
"type": "standard",
|
|
@@ -2252,6 +3569,14 @@
|
|
|
2252
3569
|
"content_hash": "sha256:437843edc90bf8c1f6f9a115361ea860a33d2cf80a130b35dd24d006df721faf",
|
|
2253
3570
|
"description": "Composer skills (/preview-build, /build, /shape full, future multi-skill chains) require certain prerequisites to dispatch safely."
|
|
2254
3571
|
},
|
|
3572
|
+
{
|
|
3573
|
+
"slug": "data-management",
|
|
3574
|
+
"type": "standard",
|
|
3575
|
+
"path": "standards/data-management.md",
|
|
3576
|
+
"tier": "lite",
|
|
3577
|
+
"content_hash": "sha256:69d1f24c1c8d60052c1af199735ce5eb2270032513cac2f8967273b8df0f946e",
|
|
3578
|
+
"description": "Verify with data, not empty state. An empty page that renders is not verification — it proves the template works, not the feature."
|
|
3579
|
+
},
|
|
2255
3580
|
{
|
|
2256
3581
|
"slug": "deferred-actions-schema",
|
|
2257
3582
|
"type": "standard",
|
|
@@ -2292,6 +3617,14 @@
|
|
|
2292
3617
|
"content_hash": "sha256:2daa9f1a21612f8c8c4a8e22f6132cb2899757c9508a6a8c9316dba6f5e316da",
|
|
2293
3618
|
"description": "The operator's reference deployment. Stack-specific instantiation of standards/deployment-topology.md for adopters who pick the same target."
|
|
2294
3619
|
},
|
|
3620
|
+
{
|
|
3621
|
+
"slug": "frontend-design",
|
|
3622
|
+
"type": "standard",
|
|
3623
|
+
"path": "standards/vendor-plugins/frontend-design.md",
|
|
3624
|
+
"tier": "lite",
|
|
3625
|
+
"content_hash": "sha256:b9d90c594cddc2e0729960cefaffc3ab02423336a06cdbf877bc8a5b1afdb569",
|
|
3626
|
+
"description": "Anthropic community skill — FRONTEND-DESIGN-SKILL.md"
|
|
3627
|
+
},
|
|
2295
3628
|
{
|
|
2296
3629
|
"slug": "frontend-stack",
|
|
2297
3630
|
"type": "standard",
|
|
@@ -2393,7 +3726,7 @@
|
|
|
2393
3726
|
"type": "standard",
|
|
2394
3727
|
"path": "standards/lite-manifest-schema-changes.md",
|
|
2395
3728
|
"tier": "lite",
|
|
2396
|
-
"content_hash": "sha256:
|
|
3729
|
+
"content_hash": "sha256:1269fad0dfe006a4c52094d4efb441101d87cbd3a85b1a1de0e8ff724fa20e44",
|
|
2397
3730
|
"description": "Chronological ledger of every lite-manifest schema change. Adopters read this before sync to know what shifted."
|
|
2398
3731
|
},
|
|
2399
3732
|
{
|
|
@@ -2412,6 +3745,14 @@
|
|
|
2412
3745
|
"content_hash": "sha256:5de157922db7cf41b2edf29e8eb3dd4b13ff3cc97b20285e418343904ef39208",
|
|
2413
3746
|
"description": "Auto-generated. Do not hand-edit. Re-run via: bash scripts/luminary-problem-patterns-aggregate.sh"
|
|
2414
3747
|
},
|
|
3748
|
+
{
|
|
3749
|
+
"slug": "mechanism-fidelity",
|
|
3750
|
+
"type": "standard",
|
|
3751
|
+
"path": "standards/mechanism-fidelity.md",
|
|
3752
|
+
"tier": "lite",
|
|
3753
|
+
"content_hash": "sha256:b212287354832a3613bf9bcdae7da6071df64d8c08f227e8d4233666ccea4d55",
|
|
3754
|
+
"description": "- ADR-035 — names the substrate-as-system foundational tenet that this standard's audit method verifies - architecture/audits/2026-06-24-closeout.md — bet 24c architect-review that missed this class; this standard's audit fills the lens-gap and…"
|
|
3755
|
+
},
|
|
2415
3756
|
{
|
|
2416
3757
|
"slug": "mobile-ephemeral-session",
|
|
2417
3758
|
"type": "standard",
|
|
@@ -2436,6 +3777,14 @@
|
|
|
2436
3777
|
"content_hash": "sha256:18b9d15d1b1436c61639eee1dc2cc069907e7ba5980f397924777a2f94690607",
|
|
2437
3778
|
"description": "Stack-specific instantiation of .claude/rules/api-conventions.md for Next.js App Router."
|
|
2438
3779
|
},
|
|
3780
|
+
{
|
|
3781
|
+
"slug": "nextjs-prisma",
|
|
3782
|
+
"type": "standard",
|
|
3783
|
+
"path": "standards/frontend-stack/nextjs-prisma.md",
|
|
3784
|
+
"tier": "lite",
|
|
3785
|
+
"content_hash": "sha256:0c1865f761e87d1546d357f234b9ee3bf25b05a584f139fc696b69013906dd1d",
|
|
3786
|
+
"description": "The operator's reference stack. Stack-specific instantiation of standards/frontend-stack.md for adopters who pick the same stack."
|
|
3787
|
+
},
|
|
2439
3788
|
{
|
|
2440
3789
|
"slug": "npm",
|
|
2441
3790
|
"type": "standard",
|
|
@@ -2468,6 +3817,22 @@
|
|
|
2468
3817
|
"content_hash": "sha256:d474018a4058b6ac94e618a8f0833ad0007311e151a2d8c9385c1ea7f0b83c17",
|
|
2469
3818
|
"description": "Universal principle: any shorthand in operator-facing prose carries a plain-language gloss at first mention per response."
|
|
2470
3819
|
},
|
|
3820
|
+
{
|
|
3821
|
+
"slug": "operator-private-discipline",
|
|
3822
|
+
"type": "standard",
|
|
3823
|
+
"path": "standards/operator-private-discipline.md",
|
|
3824
|
+
"tier": "lite",
|
|
3825
|
+
"content_hash": "sha256:7e8a6be6579c07819cea2ae829ad759513ebfa726ee87ed9189597a348865b25",
|
|
3826
|
+
"description": "Operator-private substrate (canvases, audits, persona reviews, proposals, strategy, ephemeral content) lives in a separate private repo, not in the public bassclef/bassclef repo."
|
|
3827
|
+
},
|
|
3828
|
+
{
|
|
3829
|
+
"slug": "operator-to-public-flow",
|
|
3830
|
+
"type": "standard",
|
|
3831
|
+
"path": "standards/operator-to-public-flow.md",
|
|
3832
|
+
"tier": "lite",
|
|
3833
|
+
"content_hash": "sha256:8a0b0cc746abf801391f840525a0f56d1b45c475ecfe2344af931a1cb110988b",
|
|
3834
|
+
"description": "This standard documents the sequence by which operator-private deliberation (canvases, audits, persona reviews, internal proposals, strategy docs) produces public-facing artifacts (README, CONTRIBUTING, ADRs, public docs, skills, hooks, rules…"
|
|
3835
|
+
},
|
|
2471
3836
|
{
|
|
2472
3837
|
"slug": "persona-schema",
|
|
2473
3838
|
"type": "standard",
|
|
@@ -2524,6 +3889,22 @@
|
|
|
2524
3889
|
"content_hash": "sha256:fec13744cd05f15144f313fe284c1d471be755bceb2b94e476e0629ffe231c50",
|
|
2525
3890
|
"description": "Standard directory structure for sunj-labs repositories."
|
|
2526
3891
|
},
|
|
3892
|
+
{
|
|
3893
|
+
"slug": "prototype-gallery",
|
|
3894
|
+
"type": "standard",
|
|
3895
|
+
"path": "standards/prototype-gallery.md",
|
|
3896
|
+
"tier": "lite",
|
|
3897
|
+
"content_hash": "sha256:765ecc737c8a14ebadab54b1d2e168a2ddd222d33c1a1b67f41f99f26b4a2937",
|
|
3898
|
+
"description": "- bassclef #252 — ticket prescribing the three-artifact shape (standard + skill + template) - .claude/skills/prototype-variants/SKILL.md — upstream skill producing the variants this standard indexes - ~/src/sunj-labs/quorum/prototypes/ — 23-variant…"
|
|
3899
|
+
},
|
|
3900
|
+
{
|
|
3901
|
+
"slug": "pseudonym-key-schema",
|
|
3902
|
+
"type": "standard",
|
|
3903
|
+
"path": "standards/pseudonym-key-schema.md",
|
|
3904
|
+
"tier": "lite",
|
|
3905
|
+
"content_hash": "sha256:6754ff070591f82f3ec8ab979a9fb39aa01308ac6dba4de9d1dbdb79f61aa279",
|
|
3906
|
+
"description": "Substrate building block for pre-public-launch substrate-archaeology scrub."
|
|
3907
|
+
},
|
|
2527
3908
|
{
|
|
2528
3909
|
"slug": "release-tagging",
|
|
2529
3910
|
"type": "standard",
|
|
@@ -2580,6 +3961,14 @@
|
|
|
2580
3961
|
"content_hash": "sha256:eb3ef832175ed745c412ca42f9ad854d0a298b828e647706547dcded15e2e32a",
|
|
2581
3962
|
"description": "The session-board is a session-level coordinator artifact for multi-bet longrun sessions."
|
|
2582
3963
|
},
|
|
3964
|
+
{
|
|
3965
|
+
"slug": "sibling-validation-checklist",
|
|
3966
|
+
"type": "standard",
|
|
3967
|
+
"path": "standards/sibling-validation-checklist.md",
|
|
3968
|
+
"tier": "lite",
|
|
3969
|
+
"content_hash": "sha256:4c1f48f29e0a7bf2df282be7a04c924e29a044ef6997e62c73630639f28c3ac0",
|
|
3970
|
+
"description": "Operator-runnable procedure for validating bassclef substrate end-to-end on a real consumer repo."
|
|
3971
|
+
},
|
|
2583
3972
|
{
|
|
2584
3973
|
"slug": "skill-output-discipline",
|
|
2585
3974
|
"type": "standard",
|
|
@@ -2588,6 +3977,14 @@
|
|
|
2588
3977
|
"content_hash": "sha256:0d495470ee3c5b3712e5a8ff258de7c029fad5af5328c6efb34f2ff7321a4d89",
|
|
2589
3978
|
"description": "Every skill that returns operator-facing prose runs /kiss words --rewrite on the full output before returning."
|
|
2590
3979
|
},
|
|
3980
|
+
{
|
|
3981
|
+
"slug": "slack-notifications",
|
|
3982
|
+
"type": "standard",
|
|
3983
|
+
"path": "standards/slack-notifications.md",
|
|
3984
|
+
"tier": "lite",
|
|
3985
|
+
"content_hash": "sha256:90779adaafe675747027e8c0c48c89abfe67d8c96c6dc29756c50b056434e929",
|
|
3986
|
+
"description": "- .github/workflows/bassclef-s3-publish.yml — 🤖 auto URL-rotation notifications; routes to #bassclef-activity - .github/workflows/bassclef-template-sync.yml — 🙋 human-required template-sync PRs; routes to #bassclef-human-input - substrate.config.md…"
|
|
3987
|
+
},
|
|
2591
3988
|
{
|
|
2592
3989
|
"slug": "sqlalchemy",
|
|
2593
3990
|
"type": "standard",
|
|
@@ -2620,6 +4017,14 @@
|
|
|
2620
4017
|
"content_hash": "sha256:94931a2f1f0e08f4381ddbc464ecd1578170f832a41d263a42f67ac0dfafee48",
|
|
2621
4018
|
"description": "substrate.config.md is the single source of truth for external resource references in any bassclef-substrate repo."
|
|
2622
4019
|
},
|
|
4020
|
+
{
|
|
4021
|
+
"slug": "synthetic-user-testing",
|
|
4022
|
+
"type": "standard",
|
|
4023
|
+
"path": "standards/synthetic-user-testing.md",
|
|
4024
|
+
"tier": "lite",
|
|
4025
|
+
"content_hash": "sha256:e272c802c7bcf9b731b6ad2bb2c594991756b2a452c48592dab2083a26f96b10",
|
|
4026
|
+
"description": "Three-tier testing framework that uses personas to validate UX beyond what unit tests can catch."
|
|
4027
|
+
},
|
|
2623
4028
|
{
|
|
2624
4029
|
"slug": "tech-stack-config",
|
|
2625
4030
|
"type": "standard",
|
|
@@ -2691,6 +4096,14 @@
|
|
|
2691
4096
|
"content_hash": "sha256:9b05bd692eee86ab121e1f53e4401b055b8e52d964d6a6df72db73e42a6cfbc0",
|
|
2692
4097
|
"description": "How work is estimated, measured, and calibrated in agent-driven SDLC."
|
|
2693
4098
|
},
|
|
4099
|
+
{
|
|
4100
|
+
"slug": "vendor-bindings",
|
|
4101
|
+
"type": "standard",
|
|
4102
|
+
"path": "standards/vendor-bindings.md",
|
|
4103
|
+
"tier": "lite",
|
|
4104
|
+
"content_hash": "sha256:aaaef99ae8ec0a89e84dfd58b2cb9ff82754fa732fff5d9769078bcc74c62c04",
|
|
4105
|
+
"description": "The index of external services bassclef depends on."
|
|
4106
|
+
},
|
|
2694
4107
|
{
|
|
2695
4108
|
"slug": "voice-input-pattern",
|
|
2696
4109
|
"type": "standard",
|
|
@@ -2699,6 +4112,14 @@
|
|
|
2699
4112
|
"content_hash": "sha256:8e23724cd94b0d7539648f2621edfaf35c2f0a81fc76c3563b142b9ef624d30c",
|
|
2700
4113
|
"description": "How bassclef handles voice as input to skill dispatches."
|
|
2701
4114
|
},
|
|
4115
|
+
{
|
|
4116
|
+
"slug": "vpc-fit-validation",
|
|
4117
|
+
"type": "standard",
|
|
4118
|
+
"path": "standards/vpc-fit-validation.md",
|
|
4119
|
+
"tier": "lite",
|
|
4120
|
+
"content_hash": "sha256:421301eebe862116635c0e645af569306041ba7b6f9faa059d30f97e0713410d",
|
|
4121
|
+
"description": "Rules for validating fit in a Value Proposition Canvas — every Pain Reliever MUST address a named Pain; every Gain Creator MUST produce a named Gain."
|
|
4122
|
+
},
|
|
2702
4123
|
{
|
|
2703
4124
|
"slug": "whereami-schema",
|
|
2704
4125
|
"type": "standard",
|
|
@@ -2737,6 +4158,13 @@
|
|
|
2737
4158
|
"tier": "lite",
|
|
2738
4159
|
"content_hash": "sha256:e89142d26d733678d202853e9de6d924a5cd9fb24f7b1110a8c4b5d0100862ab"
|
|
2739
4160
|
},
|
|
4161
|
+
{
|
|
4162
|
+
"slug": "gallery-yml",
|
|
4163
|
+
"type": "template",
|
|
4164
|
+
"path": "templates/gallery-yml.md",
|
|
4165
|
+
"tier": "lite",
|
|
4166
|
+
"content_hash": "sha256:558b95bed52938255c27e12e81e4e0df5c2d4d79c0bf97725a1137aaaab61097"
|
|
4167
|
+
},
|
|
2740
4168
|
{
|
|
2741
4169
|
"slug": "memory-proposal-template",
|
|
2742
4170
|
"type": "template",
|
|
@@ -2758,6 +4186,13 @@
|
|
|
2758
4186
|
"tier": "lite",
|
|
2759
4187
|
"content_hash": "sha256:e57b8c2fddee70842b37024560866ca85c466e6684fb4cf6b3ee0cb976bff6d3"
|
|
2760
4188
|
},
|
|
4189
|
+
{
|
|
4190
|
+
"slug": "product-canvas",
|
|
4191
|
+
"type": "template",
|
|
4192
|
+
"path": "templates/product-canvas.md",
|
|
4193
|
+
"tier": "lite",
|
|
4194
|
+
"content_hash": "sha256:3bc23aa85f91242ef2d113960b5f86412dcf3dd5f21f92c9846fd24a8fea2bb3"
|
|
4195
|
+
},
|
|
2761
4196
|
{
|
|
2762
4197
|
"slug": "secret-rotation-template",
|
|
2763
4198
|
"type": "template",
|
|
@@ -2786,6 +4221,13 @@
|
|
|
2786
4221
|
"tier": "lite",
|
|
2787
4222
|
"content_hash": "sha256:1067477c72618f7a4d9af8cc2eadc10fc3504f5fdbc0f82164ac97af07b585a6"
|
|
2788
4223
|
},
|
|
4224
|
+
{
|
|
4225
|
+
"slug": "value-prop-canvas",
|
|
4226
|
+
"type": "template",
|
|
4227
|
+
"path": "templates/value-prop-canvas.md",
|
|
4228
|
+
"tier": "lite",
|
|
4229
|
+
"content_hash": "sha256:43155edfa6d500e609c17ebf03002756176bbc2a664a85a56d2fd4b7133ed58b"
|
|
4230
|
+
},
|
|
2789
4231
|
{
|
|
2790
4232
|
"slug": "whereami-template",
|
|
2791
4233
|
"type": "template",
|