@thebassclef/lite 1.0.3 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (275) hide show
  1. package/dist/cli.cjs +92 -6
  2. package/dist/cli.js +92 -6
  3. package/dist/index.cjs +1 -1
  4. package/dist/index.d.ts +1 -1
  5. package/dist/index.js +1 -1
  6. package/dist/lite/.claude/agents/architect.md +70 -0
  7. package/dist/lite/.claude/agents/builder.md +114 -0
  8. package/dist/lite/.claude/agents/designer.md +156 -0
  9. package/dist/lite/.claude/agents/reviewer.md +88 -0
  10. package/dist/lite/.claude/hooks/bassclef-sync.sh +85 -27
  11. package/dist/lite/.claude/hooks/longrun-prep-compounding-axis-check.sh +492 -0
  12. package/dist/lite/.claude/hooks/longrun-prep-render-check.sh +236 -0
  13. package/dist/lite/.claude/hooks/persona-name-scrub-check.sh +105 -0
  14. package/dist/lite/.claude/hooks/skill-step-list-check.sh +171 -0
  15. package/dist/lite/.claude/luminaries/alan-cooper.md +170 -0
  16. package/dist/lite/.claude/luminaries/alistair-cockburn.md +140 -0
  17. package/dist/lite/.claude/luminaries/amazon-pr-faq.md +34 -0
  18. package/dist/lite/.claude/luminaries/andreas-zeller.md +74 -0
  19. package/dist/lite/.claude/luminaries/ash-maurya.md +121 -0
  20. package/dist/lite/.claude/luminaries/bill-buxton.md +210 -0
  21. package/dist/lite/.claude/luminaries/charles-sanders-peirce.md +150 -0
  22. package/dist/lite/.claude/luminaries/david-ogilvy.md +192 -0
  23. package/dist/lite/.claude/luminaries/don-norman.md +173 -0
  24. package/dist/lite/.claude/luminaries/edward-tufte.md +179 -0
  25. package/dist/lite/.claude/luminaries/eric-evans.md +160 -0
  26. package/dist/lite/.claude/luminaries/frederick-brooks.md +50 -0
  27. package/dist/lite/.claude/luminaries/gang-of-four.md +157 -0
  28. package/dist/lite/.claude/luminaries/glenford-myers.md +230 -0
  29. package/dist/lite/.claude/luminaries/hunt-thomas.md +115 -0
  30. package/dist/lite/.claude/luminaries/hyrum-wright.md +94 -0
  31. package/dist/lite/.claude/luminaries/jason-fried-dhh.md +46 -0
  32. package/dist/lite/.claude/luminaries/jesse-james-garrett.md +154 -0
  33. package/dist/lite/.claude/luminaries/john-ousterhout.md +94 -0
  34. package/dist/lite/.claude/luminaries/karl-popper.md +132 -0
  35. package/dist/lite/.claude/luminaries/kent-beck.md +168 -0
  36. package/dist/lite/.claude/luminaries/linus-torvalds.md +218 -0
  37. package/dist/lite/.claude/luminaries/martin-fowler.md +164 -0
  38. package/dist/lite/.claude/luminaries/michael-feathers.md +125 -0
  39. package/dist/lite/.claude/luminaries/michael-nygard.md +118 -0
  40. package/dist/lite/.claude/luminaries/robert-c-martin.md +164 -0
  41. package/dist/lite/.claude/luminaries/saltzer-schroeder.md +194 -0
  42. package/dist/lite/.claude/luminaries/sophia-prater.md +193 -0
  43. package/dist/lite/.claude/luminaries/stephen-toulmin.md +131 -0
  44. package/dist/lite/.claude/luminaries/tony-hoare.md +170 -0
  45. package/dist/lite/.claude/luminaries/vaughn-vernon.md +50 -0
  46. package/dist/lite/.claude/luminaries/w-edwards-deming.md +158 -0
  47. package/dist/lite/.claude/rules/accessor-library-discipline.md +110 -0
  48. package/dist/lite/.claude/rules/adr-discipline.md +96 -0
  49. package/dist/lite/.claude/rules/api-conventions.md +115 -0
  50. package/dist/lite/.claude/rules/artifact-ingestion.md +137 -0
  51. package/dist/lite/.claude/rules/assert-only-after-verify.md +111 -0
  52. package/dist/lite/.claude/rules/blocked-items.md +139 -0
  53. package/dist/lite/.claude/rules/bootstrap-pair-discipline.md +106 -0
  54. package/dist/lite/.claude/rules/branching.md +28 -0
  55. package/dist/lite/.claude/rules/cold-adopter-harness-discipline.md +93 -0
  56. package/dist/lite/.claude/rules/commit-conventions.md +22 -0
  57. package/dist/lite/.claude/rules/compounding-axis-fresh-analysis.md +173 -0
  58. package/dist/lite/.claude/rules/compounding-sequence-fresh-analysis.md +173 -0
  59. package/dist/lite/.claude/rules/context-engineering.md +155 -0
  60. package/dist/lite/.claude/rules/context-management.md +85 -0
  61. package/dist/lite/.claude/rules/defensive-bash.md +52 -0
  62. package/dist/lite/.claude/rules/deferred-actions.md +233 -0
  63. package/dist/lite/.claude/rules/destructive-operations.md +69 -0
  64. package/dist/lite/.claude/rules/diagnosis.md +38 -0
  65. package/dist/lite/.claude/rules/github-issue-flash-tweet.md +114 -0
  66. package/dist/lite/.claude/rules/guardrails.md +73 -0
  67. package/dist/lite/.claude/rules/hook-wire-on-author.md +77 -0
  68. package/dist/lite/.claude/rules/identifier-leak-prevention.md +73 -0
  69. package/dist/lite/.claude/rules/iteration-bet-brief-completeness.md +43 -0
  70. package/dist/lite/.claude/rules/lite-manifest-schema-change-discipline.md +79 -0
  71. package/dist/lite/.claude/rules/longrun-prep-plan-doc-compression.md +77 -0
  72. package/dist/lite/.claude/rules/loop-discipline.md +71 -0
  73. package/dist/lite/.claude/rules/manual-prod-approval.md +100 -0
  74. package/dist/lite/.claude/rules/marker-enrichment-discipline.md +72 -0
  75. package/dist/lite/.claude/rules/mobile-ephemeral-session.md +109 -0
  76. package/dist/lite/.claude/rules/new-dependency-check.md +44 -0
  77. package/dist/lite/.claude/rules/oo-ad-entry-point.md +95 -0
  78. package/dist/lite/.claude/rules/operator-facing-prose.md +177 -0
  79. package/dist/lite/.claude/rules/option-label-discipline.md +82 -0
  80. package/dist/lite/.claude/rules/pattern-annotation.md +83 -0
  81. package/dist/lite/.claude/rules/persona-name-leak-scrub.md +90 -0
  82. package/dist/lite/.claude/rules/plain-english-discipline.md +132 -0
  83. package/dist/lite/.claude/rules/plan-enumeration-needs-value-props.md +177 -0
  84. package/dist/lite/.claude/rules/pr-body-shape.md +195 -0
  85. package/dist/lite/.claude/rules/pr-strategy.md +142 -0
  86. package/dist/lite/.claude/rules/pr-title-shape.md +90 -0
  87. package/dist/lite/.claude/rules/prototype-workflow.md +53 -0
  88. package/dist/lite/.claude/rules/reserved-skill-names.md +103 -0
  89. package/dist/lite/.claude/rules/schema-management.md +42 -0
  90. package/dist/lite/.claude/rules/sdlc-gates.md +149 -0
  91. package/dist/lite/.claude/rules/security.md +37 -0
  92. package/dist/lite/.claude/rules/session-artifacts.md +236 -0
  93. package/dist/lite/.claude/rules/skill-composition-declarations.md +105 -0
  94. package/dist/lite/.claude/rules/skill-description-clarity.md +196 -0
  95. package/dist/lite/.claude/rules/skill-procedure-step-list.md +119 -0
  96. package/dist/lite/.claude/rules/sprint-prep-preset-picker.md +76 -0
  97. package/dist/lite/.claude/rules/state-schema-validation.md +156 -0
  98. package/dist/lite/.claude/rules/stuck-signal-diagnostic.md +111 -0
  99. package/dist/lite/.claude/rules/substrate-config-schema.md +85 -0
  100. package/dist/lite/.claude/rules/test-list-discipline.md +129 -0
  101. package/dist/lite/.claude/rules/test-sufficiency.md +186 -0
  102. package/dist/lite/.claude/rules/testing-tier-config.md +125 -0
  103. package/dist/lite/.claude/rules/testing.md +38 -0
  104. package/dist/lite/.claude/rules/turn-estimate-grounding.md +82 -0
  105. package/dist/lite/.claude/rules/visual-hierarchy.md +427 -0
  106. package/dist/lite/.claude/rules/we-dont-break-adopters.md +103 -0
  107. package/dist/lite/.claude/rules/whereami-load-bearing.md +184 -0
  108. package/dist/lite/.claude/rules/writing-craft-discipline.md +72 -0
  109. package/dist/lite/.claude/rules/wu-sequencing-compounds.md +119 -0
  110. package/dist/lite/.claude/skills/build/SKILL.md +640 -0
  111. package/dist/lite/.claude/skills/chronicle/SKILL.md +55 -0
  112. package/dist/lite/.claude/skills/clean-artifacts/SKILL.md +249 -0
  113. package/dist/lite/.claude/skills/decompose/SKILL.md +280 -0
  114. package/dist/lite/.claude/skills/diagnose/SKILL.md +297 -0
  115. package/dist/lite/.claude/skills/feynman/SKILL.md +90 -0
  116. package/dist/lite/.claude/skills/howdoi/SKILL.md +105 -0
  117. package/dist/lite/.claude/skills/ia-model/SKILL.md +108 -0
  118. package/dist/lite/.claude/skills/interaction-design/SKILL.md +112 -0
  119. package/dist/lite/.claude/skills/interpret-input/SKILL.md +180 -0
  120. package/dist/lite/.claude/skills/journal/SKILL.md +209 -0
  121. package/dist/lite/.claude/skills/kiss/SKILL.md +449 -0
  122. package/dist/lite/.claude/skills/launch/SKILL.md +915 -0
  123. package/dist/lite/.claude/skills/lean-canvas/SKILL.md +332 -0
  124. package/dist/lite/.claude/skills/longrun/SKILL.md +512 -0
  125. package/dist/lite/.claude/skills/luminary/SKILL.md +481 -0
  126. package/dist/lite/.claude/skills/ogilvy-writing-audit/SKILL.md +177 -0
  127. package/dist/lite/.claude/skills/onboard-repo/SKILL.md +1640 -0
  128. package/dist/lite/.claude/skills/pattern-review/SKILL.md +99 -0
  129. package/dist/lite/.claude/skills/personas/SKILL.md +207 -0
  130. package/dist/lite/.claude/skills/promote/SKILL.md +283 -0
  131. package/dist/lite/.claude/skills/requirement/SKILL.md +98 -0
  132. package/dist/lite/.claude/skills/retro/SKILL.md +117 -0
  133. package/dist/lite/.claude/skills/riff/SKILL.md +114 -0
  134. package/dist/lite/.claude/skills/roadmap-reconcile/SKILL.md +163 -0
  135. package/dist/lite/.claude/skills/session-end/SKILL.md +309 -0
  136. package/dist/lite/.claude/skills/session-log/SKILL.md +299 -0
  137. package/dist/lite/.claude/skills/skills/SKILL.md +228 -0
  138. package/dist/lite/.claude/skills/spec/SKILL.md +105 -0
  139. package/dist/lite/.claude/skills/sprint/SKILL.md +418 -0
  140. package/dist/lite/.claude/skills/stage/SKILL.md +384 -0
  141. package/dist/lite/.claude/skills/state-a-problem/SKILL.md +185 -0
  142. package/dist/lite/.claude/skills/temperance/SKILL.md +108 -0
  143. package/dist/lite/.claude/skills/use-case/SKILL.md +417 -0
  144. package/dist/lite/.claude/skills/user-stories/SKILL.md +268 -0
  145. package/dist/lite/.claude/skills/value-prop/SKILL.md +251 -0
  146. package/dist/lite/.claude/skills/verify/SKILL.md +160 -0
  147. package/dist/lite/.claude/skills/visual-review/SKILL.md +503 -0
  148. package/dist/lite/.claude/skills/whats-the-plan/SKILL.md +202 -0
  149. package/dist/lite/.claude/skills/whereami/SKILL.md +307 -0
  150. package/dist/lite/AGENTS.md +79 -0
  151. package/dist/lite/CLAUDE-lite.md +85 -0
  152. package/dist/lite/CODE_OF_CONDUCT.md +28 -0
  153. package/dist/lite/CONTRIBUTING.md +177 -0
  154. package/dist/lite/README.md +173 -0
  155. package/dist/lite/SECURITY.md +19 -0
  156. package/dist/lite/architecture/decisions/ADR-029-release-pipeline.md +79 -0
  157. package/dist/lite/architecture/decisions/ADR-031-non-breaking-changes-adopter-discipline.md +139 -0
  158. package/dist/lite/architecture/decisions/ADR-032-adopter-sync-dispatcher-architecture.md +192 -0
  159. package/dist/lite/architecture/decisions/ADR-039-release-tagging-scheme.md +145 -0
  160. package/dist/lite/architecture/decisions/ADR-040-planning-skill-vocabulary-and-lite-profile.md +155 -0
  161. package/dist/lite/architecture/decisions/ADR-044-unified-skill-body-template.md +162 -0
  162. package/dist/lite/lib/clean-artifacts-sweep.sh +112 -0
  163. package/dist/lite/lib/code-comment-discipline.sh +144 -0
  164. package/dist/lite/lib/composer-preflight.sh +459 -0
  165. package/dist/lite/lib/deferred-actions.sh +146 -0
  166. package/dist/lite/lib/hook-header-parser.sh +61 -0
  167. package/dist/lite/lib/hook-heartbeat.sh +152 -0
  168. package/dist/lite/lib/hook-inject.sh +255 -0
  169. package/dist/lite/lib/hook-installer.sh +195 -0
  170. package/dist/lite/lib/luminary-pick.sh +96 -0
  171. package/dist/lite/lib/output-discipline.sh +143 -0
  172. package/dist/lite/lib/prose-scan-boundary.sh +171 -0
  173. package/dist/lite/lib/rewrite-check.sh +214 -0
  174. package/dist/lite/lib/session-rescue.sh +151 -0
  175. package/dist/lite/lib/source-graph-walker.sh +277 -0
  176. package/dist/lite/lib/state.sh +1372 -0
  177. package/dist/lite/lib/telemetry.sh +205 -0
  178. package/dist/lite/lib/tier-check.sh +187 -0
  179. package/dist/lite/lib/tier-dependency-audit.sh +1088 -0
  180. package/dist/lite/presence/install/bassclef-hook-connect.sh +178 -0
  181. package/dist/lite/presence/install/bassclef-sync.dispatcher.template.sh +841 -0
  182. package/dist/lite/presence/install/bassclef-sync.template.sh +2278 -0
  183. package/dist/lite/presence/install/schedule-auto-save.cron.sh +88 -0
  184. package/dist/lite/presence/install/schedule-auto-save.taskscheduler.md +122 -0
  185. package/dist/lite/scripts/aggregate-telemetry.sh +217 -0
  186. package/dist/lite/scripts/analyze-tier-dependencies.sh +239 -0
  187. package/dist/lite/scripts/generate-lite-manifest.sh +505 -0
  188. package/dist/lite/scripts/generate-tier-manifest.sh +28 -0
  189. package/dist/lite/scripts/intent-drift-check.sh +456 -0
  190. package/dist/lite/scripts/lite-manifest-drift-check.sh +146 -0
  191. package/dist/lite/scripts/render-lite-manifest-doc.sh +150 -0
  192. package/dist/lite/standards/adr-template.md +86 -0
  193. package/dist/lite/standards/api-conventions/nextjs.md +84 -0
  194. package/dist/lite/standards/artifact-composition.md +209 -0
  195. package/dist/lite/standards/bash-hook-safety.md +246 -0
  196. package/dist/lite/standards/bassclef-configs-schema.md +232 -0
  197. package/dist/lite/standards/bassclef-evolution.md +143 -0
  198. package/dist/lite/standards/bassclef-internal-jargon.md +244 -0
  199. package/dist/lite/standards/bassclef-managed-sentinel.md +96 -0
  200. package/dist/lite/standards/bassclef-source-config.md +228 -0
  201. package/dist/lite/standards/branch-stacking.md +408 -0
  202. package/dist/lite/standards/code-safety-principles.md +176 -0
  203. package/dist/lite/standards/composer-prerequisites.md +155 -0
  204. package/dist/lite/standards/deferred-actions-schema.md +204 -0
  205. package/dist/lite/standards/dependency-discipline/cargo.md +39 -0
  206. package/dist/lite/standards/dependency-discipline/gem.md +43 -0
  207. package/dist/lite/standards/dependency-discipline/go-mod.md +41 -0
  208. package/dist/lite/standards/dependency-discipline/npm.md +42 -0
  209. package/dist/lite/standards/dependency-discipline/pip.md +42 -0
  210. package/dist/lite/standards/deployment-topology/ec2-tailscale.md +225 -0
  211. package/dist/lite/standards/deployment-topology.md +69 -0
  212. package/dist/lite/standards/docs-sync-allowlist.md +76 -0
  213. package/dist/lite/standards/domain-and-dns.md +145 -0
  214. package/dist/lite/standards/frontend-stack.md +67 -0
  215. package/dist/lite/standards/frontmatter-schema.md +154 -0
  216. package/dist/lite/standards/graceful-exit.md +227 -0
  217. package/dist/lite/standards/hook-idempotency.md +102 -0
  218. package/dist/lite/standards/hook-injection-discipline.md +202 -0
  219. package/dist/lite/standards/hook-install-class.md +215 -0
  220. package/dist/lite/standards/input-handler-interface.md +152 -0
  221. package/dist/lite/standards/lite-manifest-schema-changes.md +180 -0
  222. package/dist/lite/standards/lite-manifest.json +2797 -0
  223. package/dist/lite/standards/luminary-matching.md +105 -0
  224. package/dist/lite/standards/luminary-problem-patterns.md +481 -0
  225. package/dist/lite/standards/migration-discipline/active-record.md +50 -0
  226. package/dist/lite/standards/migration-discipline/alembic.md +43 -0
  227. package/dist/lite/standards/migration-discipline/gorm.md +50 -0
  228. package/dist/lite/standards/migration-discipline/prisma.md +53 -0
  229. package/dist/lite/standards/migration-discipline/sqlalchemy.md +51 -0
  230. package/dist/lite/standards/mobile-ephemeral-session.md +167 -0
  231. package/dist/lite/standards/model-routing-discipline.md +160 -0
  232. package/dist/lite/standards/ogilvy-writing-rules.md +225 -0
  233. package/dist/lite/standards/opener-discipline.md +96 -0
  234. package/dist/lite/standards/operator-facing-prose-discipline.md +201 -0
  235. package/dist/lite/standards/persona-schema.md +229 -0
  236. package/dist/lite/standards/pluggable-luminaries.md +323 -0
  237. package/dist/lite/standards/pr-body-discipline.md +115 -0
  238. package/dist/lite/standards/preview-state-schema.md +189 -0
  239. package/dist/lite/standards/project-directory-layout.md +276 -0
  240. package/dist/lite/standards/release-tagging.md +137 -0
  241. package/dist/lite/standards/reserved-skill-names.md +120 -0
  242. package/dist/lite/standards/scannable-multi-option-output.md +265 -0
  243. package/dist/lite/standards/sdlc-compliance.md +286 -0
  244. package/dist/lite/standards/sdlc-gates/typescript.md +57 -0
  245. package/dist/lite/standards/secrets-lifecycle.md +210 -0
  246. package/dist/lite/standards/security-scanner-adapter.md +145 -0
  247. package/dist/lite/standards/session-board.md +256 -0
  248. package/dist/lite/standards/skill-output-discipline.md +121 -0
  249. package/dist/lite/standards/state-spine-contract.md +255 -0
  250. package/dist/lite/standards/state-spine.md +511 -0
  251. package/dist/lite/standards/steering-hints/kiss-words.md +11 -0
  252. package/dist/lite/standards/substrate-config-schema.md +267 -0
  253. package/dist/lite/standards/tech-stack-config.md +109 -0
  254. package/dist/lite/standards/tier-dependency-analysis.md +167 -0
  255. package/dist/lite/standards/tier-runtime-deps/lite.md +57 -0
  256. package/dist/lite/standards/tier-tag-schema.md +155 -0
  257. package/dist/lite/standards/two-layer-config.md +99 -0
  258. package/dist/lite/standards/use-case-format.md +292 -0
  259. package/dist/lite/standards/user-story-invest.md +268 -0
  260. package/dist/lite/standards/velocity-and-appetite.md +229 -0
  261. package/dist/lite/standards/voice-input-pattern.md +119 -0
  262. package/dist/lite/standards/whereami-schema.md +301 -0
  263. package/dist/lite/standards/worktree-management.md +211 -0
  264. package/dist/lite/standards/writing-guide.md +213 -0
  265. package/dist/lite/templates/chronicle-template.md +75 -0
  266. package/dist/lite/templates/deferred-action-template.md +45 -0
  267. package/dist/lite/templates/memory-proposal-template.md +77 -0
  268. package/dist/lite/templates/persona-template.md +200 -0
  269. package/dist/lite/templates/pr-faq.md +45 -0
  270. package/dist/lite/templates/secret-rotation-template.md +162 -0
  271. package/dist/lite/templates/spec-template.md +131 -0
  272. package/dist/lite/templates/use-case-template.md +194 -0
  273. package/dist/lite/templates/user-story-template.md +107 -0
  274. package/dist/lite/templates/whereami-template.md +101 -0
  275. package/package.json +1 -1
@@ -0,0 +1,2797 @@
1
+ {
2
+ "tier": "lite",
3
+ "manifest_version": "1.6.1",
4
+ "generated_at": "2026-09-15T22:22:04Z",
5
+ "entries": [
6
+ {
7
+ "slug": "029-release-pipeline",
8
+ "type": "adr",
9
+ "path": "architecture/decisions/ADR-029-release-pipeline.md",
10
+ "tier": "lite",
11
+ "content_hash": "sha256:bf60a6a55fa9cee9660facd489dd52cc6d55740ab5b19b63df84fc15e59b8995",
12
+ "description": "bassclef-upstream is the upstream experimental source-of-truth (WU-0)."
13
+ },
14
+ {
15
+ "slug": "031-non-breaking-changes-adopter-discipline",
16
+ "type": "adr",
17
+ "path": "architecture/decisions/ADR-031-non-breaking-changes-adopter-discipline.md",
18
+ "tier": "lite",
19
+ "content_hash": "sha256:46eb3b1ff5ff1e482aa1e418edeb757fd88cdc203e3d3cbdbb60457335a408b0",
20
+ "description": "bassclef positions itself as an open substrate for Claude Code."
21
+ },
22
+ {
23
+ "slug": "032-adopter-sync-dispatcher-architecture",
24
+ "type": "adr",
25
+ "path": "architecture/decisions/ADR-032-adopter-sync-dispatcher-architecture.md",
26
+ "tier": "lite",
27
+ "content_hash": "sha256:c5bbb050447eaa2edeee0036138374b0cab0e345851b7ac486746285b4199da8",
28
+ "description": "POA's session-start on 2026-06-22 morning fired CANONICAL SYNC FAILED — token env var $CANONICAL_TOKEN not set."
29
+ },
30
+ {
31
+ "slug": "039-release-tagging-scheme",
32
+ "type": "adr",
33
+ "path": "architecture/decisions/ADR-039-release-tagging-scheme.md",
34
+ "tier": "lite",
35
+ "content_hash": "sha256:358d12f3d33dad9d4c0e1551877117e50662618c2d7efa3cd8be3bb6175de2dd",
36
+ "description": "Bassclef ships from sunj-labs/bassclef-upstream (the source-of-truth repo where all substrate work happens) to sunj-labs/bassclef (the public downstream repo adopters pull from)."
37
+ },
38
+ {
39
+ "slug": "040-planning-skill-vocabulary-and-lite-profile",
40
+ "type": "adr",
41
+ "path": "architecture/decisions/ADR-040-planning-skill-vocabulary-and-lite-profile.md",
42
+ "tier": "lite",
43
+ "content_hash": "sha256:936b3d7a62dbb204de833daf5c1c20ea6ea25e93f0a8e5ae925c4e48847097e5",
44
+ "description": "Two adopter-facing signals converged in July 2026 and drove this decision."
45
+ },
46
+ {
47
+ "slug": "044-unified-skill-body-template",
48
+ "type": "adr",
49
+ "path": "architecture/decisions/ADR-044-unified-skill-body-template.md",
50
+ "tier": "lite",
51
+ "content_hash": "sha256:a7e5310d443de88a52aa1bdd936964d0d6f70b825d6c992c7a075d5801da12bf",
52
+ "description": "Bassclef ships two competing SKILL body specs."
53
+ },
54
+ {
55
+ "slug": "architect",
56
+ "type": "agent",
57
+ "path": ".claude/agents/architect.md",
58
+ "tier": "lite",
59
+ "content_hash": "sha256:7a799edeb07c19e24569f266c74c6e8cb21621da4d63224af6b9c93ff36b8bd0",
60
+ "description": "Opinionated. Builds C4 diagrams, writes ADRs, proves architecture against risks. Prefers boring technology. Documents why, not just what."
61
+ },
62
+ {
63
+ "slug": "builder",
64
+ "type": "agent",
65
+ "path": ".claude/agents/builder.md",
66
+ "tier": "lite",
67
+ "content_hash": "sha256:0b24f89c111cfe255bb25a567718d073b22088c4d8b20fed9b405c3a797b1e9b",
68
+ "description": "Executes against spec. Respects ADR constraints. Commits with conventional commits. Doesn't redesign mid-build. Raises blockers immediately."
69
+ },
70
+ {
71
+ "slug": "designer",
72
+ "type": "agent",
73
+ "path": ".claude/agents/designer.md",
74
+ "tier": "lite",
75
+ "content_hash": "sha256:83c1d78497993e4e024d4ec2051ea0245fa8ec2e6aab686d643f8230c1e8d129",
76
+ "description": "User advocate. Translates requirements into concepts and flows. Owns lovability signal. Will push back if experience is compromised."
77
+ },
78
+ {
79
+ "slug": "reviewer",
80
+ "type": "agent",
81
+ "path": ".claude/agents/reviewer.md",
82
+ "tier": "lite",
83
+ "content_hash": "sha256:8beb53a004293f600e1e405ffa7a1a588a0fbb4aac2c29de74db661f443342a0",
84
+ "description": "Adversarial by design. Evaluates PRs against spec, not just style. Verifies tests, ADR compliance, Designer sign-off. Assumes Builder missed something."
85
+ },
86
+ {
87
+ "slug": "artifact-ingestion-gate",
88
+ "type": "hook",
89
+ "path": ".claude/hooks/artifact-ingestion-gate.sh",
90
+ "tier": "lite",
91
+ "content_hash": "sha256:f633c412002d62ed1e1458fff047e635b1a705a9b7fc4b2c47f16d0b9f5b0e9f",
92
+ "description": "Artifact Ingestion Gate — fires on Write/Edit to generative artifact paths."
93
+ },
94
+ {
95
+ "slug": "assert-verify-steering",
96
+ "type": "hook",
97
+ "path": ".claude/hooks/assert-verify-steering.sh",
98
+ "tier": "lite",
99
+ "content_hash": "sha256:7a421558661225ee7d6b3b0dcc45a1ca5171f530093a87420c8bd88b7ca0f620",
100
+ "description": "assert-verify-steering.sh — UserPromptSubmit hook that injects"
101
+ },
102
+ {
103
+ "slug": "bassclef-source-config-validate",
104
+ "type": "hook",
105
+ "path": ".claude/hooks/bassclef-source-config-validate.sh",
106
+ "tier": "lite",
107
+ "content_hash": "sha256:6981fedc02dc0b683db7872519e06bd16b68fd346a2e566a7e8503f28822db10",
108
+ "description": "bassclef-source-config-validate.sh — PreToolUse hook validating"
109
+ },
110
+ {
111
+ "slug": "bassclef-sync",
112
+ "type": "hook",
113
+ "path": ".claude/hooks/bassclef-sync.sh",
114
+ "tier": "lite",
115
+ "content_hash": "sha256:99a7f5f09e9734fdea8d610260afa09247d3a951fbde3c1b2179fe27edd52dd6",
116
+ "description": "Bassclef Substrate Sync — fires on SessionStart."
117
+ },
118
+ {
119
+ "slug": "compound-noun-scrub",
120
+ "type": "hook",
121
+ "path": ".claude/hooks/compound-noun-scrub.sh",
122
+ "tier": "lite",
123
+ "content_hash": "sha256:5a8937efc342086a146897afd7ac870e016ffc44008d64fdf499090fe56dcb78",
124
+ "description": "compound-noun-scrub.sh — PreToolUse Edit|Write gate on"
125
+ },
126
+ {
127
+ "slug": "kiss-expansion-inject",
128
+ "type": "hook",
129
+ "path": ".claude/hooks/kiss-expansion-inject.sh",
130
+ "tier": "lite",
131
+ "content_hash": "sha256:7cb4c033003b987c4dddc74f9f24d9b28f111ee73622a2fa9f9a34d786191aad",
132
+ "description": "kiss-expansion-inject.sh — UserPromptExpansion hook that injects"
133
+ },
134
+ {
135
+ "slug": "longrun-prep-compounding-axis-check",
136
+ "type": "hook",
137
+ "path": ".claude/hooks/longrun-prep-compounding-axis-check.sh",
138
+ "tier": "lite",
139
+ "content_hash": "sha256:9703ca8f6582f5cc2551ea3a22621c2103162c8cdc8ad49940202667c23cb2f6",
140
+ "description": "longrun-prep-compounding-sequence-check.sh — Stop hook that fires when"
141
+ },
142
+ {
143
+ "slug": "longrun-prep-compounding-sequence-check",
144
+ "type": "hook",
145
+ "path": ".claude/hooks/longrun-prep-compounding-sequence-check.sh",
146
+ "tier": "lite",
147
+ "content_hash": "sha256:9703ca8f6582f5cc2551ea3a22621c2103162c8cdc8ad49940202667c23cb2f6",
148
+ "description": "longrun-prep-compounding-sequence-check.sh — Stop hook that fires when"
149
+ },
150
+ {
151
+ "slug": "longrun-prep-render-check",
152
+ "type": "hook",
153
+ "path": ".claude/hooks/longrun-prep-render-check.sh",
154
+ "tier": "lite",
155
+ "content_hash": "sha256:32aa865bd6cae05b37809f098ca134acf7bb8e051599b67a1729dd35be7974a3",
156
+ "description": "PostToolUse: Stop"
157
+ },
158
+ {
159
+ "slug": "persona-name-scrub-check",
160
+ "type": "hook",
161
+ "path": ".claude/hooks/persona-name-scrub-check.sh",
162
+ "tier": "lite",
163
+ "content_hash": "sha256:a65086a6235bfc5f510a5412703ec7e6a2a998091c02275dbf0827baadc657c6",
164
+ "description": "persona-name-scrub-check — PreToolUse hook that scans SKILL descriptions,"
165
+ },
166
+ {
167
+ "slug": "plain-english-steering",
168
+ "type": "hook",
169
+ "path": ".claude/hooks/plain-english-steering.sh",
170
+ "tier": "lite",
171
+ "content_hash": "sha256:7be18788eefe9400e08f79dba69e193b7e1cab78c173e6e008c4284f616e12d7",
172
+ "description": "plain-english-steering.sh — UserPromptSubmit hook that injects"
173
+ },
174
+ {
175
+ "slug": "post-skill-friction-check",
176
+ "type": "hook",
177
+ "path": ".claude/hooks/post-skill-friction-check.sh",
178
+ "tier": "lite",
179
+ "content_hash": "sha256:3e47245950723da47246452ad448e5339e7f0939f9c9c297fa6f43f718ccc170",
180
+ "description": "Post-Skill Friction Check — fires on PostToolUse for Skill tool."
181
+ },
182
+ {
183
+ "slug": "post-skill-telemetry",
184
+ "type": "hook",
185
+ "path": ".claude/hooks/post-skill-telemetry.sh",
186
+ "tier": "lite",
187
+ "content_hash": "sha256:244bd65c30664a496b824311b798de370325591b2337dcc8c7ffb31379edd853",
188
+ "description": ".claude/hooks/post-skill-telemetry.sh"
189
+ },
190
+ {
191
+ "slug": "pre-build-gate",
192
+ "type": "hook",
193
+ "path": ".claude/hooks/pre-build-gate.sh",
194
+ "tier": "lite",
195
+ "content_hash": "sha256:3f025bbe98f3ee7a9a4217165558f861005876c6375ef2fd5e2eb6b63611163b",
196
+ "description": "Pre-Build Gate — fires on first Edit/Write per session."
197
+ },
198
+ {
199
+ "slug": "pre-commit-gate",
200
+ "type": "hook",
201
+ "path": ".claude/hooks/pre-commit-gate.sh",
202
+ "tier": "lite",
203
+ "content_hash": "sha256:6a825617f0cde4d3a77590ad9907667ee181539fee35badce87bfa27fb94a3c1",
204
+ "description": "Observable failure trap — closes bassclef-upstream#1075 (silent-stderr class)."
205
+ },
206
+ {
207
+ "slug": "session-end",
208
+ "type": "hook",
209
+ "path": ".claude/hooks/session-end.sh",
210
+ "tier": "lite",
211
+ "content_hash": "sha256:33214f84abc0e41ff24daa7029490b12e43985ea76b26b7ad176897b9d84d840",
212
+ "description": "Session End hook — fires on Stop event."
213
+ },
214
+ {
215
+ "slug": "session-reflection",
216
+ "type": "hook",
217
+ "path": ".claude/hooks/session-reflection.sh",
218
+ "tier": "lite",
219
+ "content_hash": "sha256:0c9c242c5ebba83803e2d998fb1147445ebd2d50ce8ef700c75432b12082ce6d",
220
+ "description": "Session Start hook coordinator. Injects reflection prompt and iterates"
221
+ },
222
+ {
223
+ "slug": "skill-body-grade-gate",
224
+ "type": "hook",
225
+ "path": ".claude/hooks/skill-body-grade-gate.sh",
226
+ "tier": "lite",
227
+ "content_hash": "sha256:1fa3c8194f3ee074894e5617125865ef792fda0cc35ed93bf8614aaff8e8bbee",
228
+ "description": "skill-body-grade-gate.sh — PreToolUse Edit|Write gate on"
229
+ },
230
+ {
231
+ "slug": "skill-body-intent-drift",
232
+ "type": "hook",
233
+ "path": ".claude/hooks/skill-body-intent-drift.sh",
234
+ "tier": "lite",
235
+ "content_hash": "sha256:591df979123156bcce55fe790a3c15976e16ca3fdd2de3a8f5b0e68ef481ef74",
236
+ "description": "skill-body-intent-drift.sh — PostToolUse Edit|Write hook on"
237
+ },
238
+ {
239
+ "slug": "skill-step-list-check",
240
+ "type": "hook",
241
+ "path": ".claude/hooks/skill-step-list-check.sh",
242
+ "tier": "lite",
243
+ "content_hash": "sha256:d5a3b8941d26bd71955cde967db2a12b36dab9945d02d5c9dd5967f34a75ebb2",
244
+ "description": "Skill-step-list check — Stop hook that scans the transcript for a Skill tool"
245
+ },
246
+ {
247
+ "slug": "state-validate",
248
+ "type": "hook",
249
+ "path": ".claude/hooks/state-validate.sh",
250
+ "tier": "lite",
251
+ "content_hash": "sha256:a8c6b3ffbf13008d238ad87f47ec6a132ac407849dac00c0f1367909d2ace593",
252
+ "description": "state-validate.sh — PreToolUse hook that validates state-spine entity"
253
+ },
254
+ {
255
+ "slug": "substrate-clarity-gate",
256
+ "type": "hook",
257
+ "path": ".claude/hooks/substrate-clarity-gate.sh",
258
+ "tier": "lite",
259
+ "content_hash": "sha256:46ea120c5428e842f427fb5e847c9b4997569c34022e57b7b4a18e454a9510cc",
260
+ "description": "Substrate Clarity Gate — fires on Write/Edit to substrate paths"
261
+ },
262
+ {
263
+ "slug": "temperance-gate",
264
+ "type": "hook",
265
+ "path": ".claude/hooks/temperance-gate.sh",
266
+ "tier": "lite",
267
+ "content_hash": "sha256:bc9557ff8fc109074aee4e8f7813fc6599dba2d2dd1528e36b3eedbd736382e1",
268
+ "description": "temperance-gate.sh — mechanical /temperance firing at decision boundaries"
269
+ },
270
+ {
271
+ "slug": "testing-tier-enforce",
272
+ "type": "hook",
273
+ "path": ".claude/hooks/testing-tier-enforce.sh",
274
+ "tier": "lite",
275
+ "content_hash": "sha256:dad0b25ee75c970e2faef9c527b6d29d1fc7ce0b3a3dcfb078a647e4c2e6ce4e",
276
+ "description": "testing-tier-enforce.sh — per-path testing-tier enforcement (bassclef#1037)"
277
+ },
278
+ {
279
+ "slug": "trace-helper",
280
+ "type": "hook",
281
+ "path": ".claude/hooks/trace-helper.sh",
282
+ "tier": "lite",
283
+ "content_hash": "sha256:5e2b01a28c4a259949ef6878905d0692a89e19c2481eb602d38cc96150b663e6",
284
+ "description": "SDLC Trace Log helper — sourced by all hooks."
285
+ },
286
+ {
287
+ "slug": "turn-prose-grade-measure",
288
+ "type": "hook",
289
+ "path": ".claude/hooks/turn-prose-grade-measure.sh",
290
+ "tier": "lite",
291
+ "content_hash": "sha256:3ef97d25d1fee79c9f19efc55afc6363cdc86424e904f1f2515c56f427a57bd6",
292
+ "description": "Turn-prose grade measure — Stop hook that reads the last assistant message"
293
+ },
294
+ {
295
+ "slug": "turn-prose-kiss-check",
296
+ "type": "hook",
297
+ "path": ".claude/hooks/turn-prose-kiss-check.sh",
298
+ "tier": "lite",
299
+ "content_hash": "sha256:ac0ffe20336df8a4574da133cd4de6b7b8d5442e55893d4f8bdd2f4aea1aafbf",
300
+ "description": "Turn-prose /kiss check — Stop hook that scans the most recent assistant"
301
+ },
302
+ {
303
+ "slug": "vocabulary-migration-check",
304
+ "type": "hook",
305
+ "path": ".claude/hooks/vocabulary-migration-check.sh",
306
+ "tier": "lite",
307
+ "content_hash": "sha256:087af8556faec8ca793e20d83a5479e3a134bc465a2d86f87b01336346b22ff0",
308
+ "description": "vocabulary-migration-check.sh — PreToolUse Edit|Write gate on"
309
+ },
310
+ {
311
+ "slug": "whereami-utc-gate",
312
+ "type": "hook",
313
+ "path": ".claude/hooks/whereami-utc-gate.sh",
314
+ "tier": "lite",
315
+ "content_hash": "sha256:867d05c8da773e8aef3d077ec7c171d8e9a208b579596f77dd73e18cc8fcf2e2",
316
+ "description": "whereami-utc-gate.sh — PreToolUse hook that BLOCKs Edit|Write|MultiEdit"
317
+ },
318
+ {
319
+ "slug": "clean-artifacts-sweep",
320
+ "type": "lib",
321
+ "path": "lib/clean-artifacts-sweep.sh",
322
+ "tier": "lite",
323
+ "content_hash": "sha256:8307ffbf78b85fe5c91c0a4d48fcf190873dc3116f6a4162fdeb1aec85e7c255",
324
+ "description": "lib/clean-artifacts-sweep.sh — shared deep module for workflow-exhaust"
325
+ },
326
+ {
327
+ "slug": "code-comment-discipline",
328
+ "type": "lib",
329
+ "path": "lib/code-comment-discipline.sh",
330
+ "tier": "lite",
331
+ "content_hash": "sha256:e8f87b559dd17c62e655138e2a7ec73eacc5cced9cd10dacebdb182bd85928f9",
332
+ "description": "code-comment-discipline.sh — classifier lib for header comment blocks"
333
+ },
334
+ {
335
+ "slug": "composer-preflight",
336
+ "type": "lib",
337
+ "path": "lib/composer-preflight.sh",
338
+ "tier": "lite",
339
+ "content_hash": "sha256:e4b5a09f0908897bb2709d5e4f7e191e9503e104a4a54cf5f43abdef218fc572",
340
+ "description": "lib/composer-preflight.sh — shared pre-flight check for composer skills."
341
+ },
342
+ {
343
+ "slug": "deferred-actions",
344
+ "type": "lib",
345
+ "path": "lib/deferred-actions.sh",
346
+ "tier": "lite",
347
+ "content_hash": "sha256:838e4948aeef589e46519ee47791ded9ec5d5e92a1b8d551520ae493b0566752",
348
+ "description": "lib/deferred-actions.sh — typed accessor for docs/deferred-actions/"
349
+ },
350
+ {
351
+ "slug": "hook-header-parser",
352
+ "type": "lib",
353
+ "path": "lib/hook-header-parser.sh",
354
+ "tier": "lite",
355
+ "content_hash": "sha256:cc7d9d73dd683f8566b72275cce4bd91344a94aad3e4dd7ca9bd349dd54c6114",
356
+ "description": "lib/hook-header-parser.sh — reads the # install-class: header from a hook file"
357
+ },
358
+ {
359
+ "slug": "hook-heartbeat",
360
+ "type": "lib",
361
+ "path": "lib/hook-heartbeat.sh",
362
+ "tier": "lite",
363
+ "content_hash": "sha256:fcf13acbbb586948ac0152730cfbc79d1025662b93b86b8facddd27bcead1c50",
364
+ "description": "lib/hook-heartbeat.sh — hook liveness marker helper."
365
+ },
366
+ {
367
+ "slug": "hook-inject",
368
+ "type": "lib",
369
+ "path": "lib/hook-inject.sh",
370
+ "tier": "lite",
371
+ "content_hash": "sha256:f302fd4852f8eb883212c644c2a7bffc4ee40e97762b4a98716b9b2abd04d51c",
372
+ "description": "lib/hook-inject.sh — shared helper for hooks that inject additionalContext"
373
+ },
374
+ {
375
+ "slug": "hook-installer",
376
+ "type": "lib",
377
+ "path": "lib/hook-installer.sh",
378
+ "tier": "lite",
379
+ "content_hash": "sha256:022fa4b6f1531813203e499ea84a15a8239ac1772ec506ac1e734b22fd626b5c",
380
+ "description": "lib/hook-installer.sh — installs a hook file at its declared install-class scope"
381
+ },
382
+ {
383
+ "slug": "luminary-pick",
384
+ "type": "lib",
385
+ "path": "lib/luminary-pick.sh",
386
+ "tier": "lite",
387
+ "content_hash": "sha256:ad6e909a84c3371260377a98a94575a6cac2efbb6ff331bb1164e0ca42748a65",
388
+ "description": "andon-allow: docs/operator-private/[a-z-]+/20[0-9][0-9]-[0-9]{2}"
389
+ },
390
+ {
391
+ "slug": "output-discipline",
392
+ "type": "lib",
393
+ "path": "lib/output-discipline.sh",
394
+ "tier": "lite",
395
+ "content_hash": "sha256:24ca4785a7f8cce14d8fff8d95b2780275179a126c254bba11356d62f112c585",
396
+ "description": "output-discipline.sh — classifier library for substrate output discipline audit."
397
+ },
398
+ {
399
+ "slug": "prose-scan-boundary",
400
+ "type": "lib",
401
+ "path": "lib/prose-scan-boundary.sh",
402
+ "tier": "lite",
403
+ "content_hash": "sha256:bffddf54274cff49f10db5e10ce13f4551cf96e96773cf6e94854977e4489614",
404
+ "description": "lib/prose-scan-boundary.sh"
405
+ },
406
+ {
407
+ "slug": "rewrite-check",
408
+ "type": "lib",
409
+ "path": "lib/rewrite-check.sh",
410
+ "tier": "lite",
411
+ "content_hash": "sha256:a56494ca9d442479823121805120c1c1ad25062c706e935c9ef33d9c095a623d",
412
+ "description": "rewrite-check.sh — six heuristic checks for /kiss REWRITE mode (goal 25d Step 5)."
413
+ },
414
+ {
415
+ "slug": "session-rescue",
416
+ "type": "lib",
417
+ "path": "lib/session-rescue.sh",
418
+ "tier": "lite",
419
+ "content_hash": "sha256:5905440fb1ce2bd1420d4f42b54535321796b79fd48edb943ab459c563200b11",
420
+ "description": "lib/session-rescue.sh — sweep resolved session-rescue entries to completed/."
421
+ },
422
+ {
423
+ "slug": "source-graph-walker",
424
+ "type": "lib",
425
+ "path": "lib/source-graph-walker.sh",
426
+ "tier": "lite",
427
+ "content_hash": "sha256:abae8c156ac538321b90326946eade3b70068ee1d4bd8ad605fdb374849400ba",
428
+ "description": "lib/source-graph-walker.sh — walks source-graph closure from a seed hook"
429
+ },
430
+ {
431
+ "slug": "state",
432
+ "type": "lib",
433
+ "path": "lib/state.sh",
434
+ "tier": "lite",
435
+ "content_hash": "sha256:38b6cfa82123e75bb1046b97887060962a62d90ba9d089764529207ebf8c8194",
436
+ "description": "lib/state.sh — typed accessor library over bassclef's state spine."
437
+ },
438
+ {
439
+ "slug": "telemetry",
440
+ "type": "lib",
441
+ "path": "lib/telemetry.sh",
442
+ "tier": "lite",
443
+ "content_hash": "sha256:1a14dad891fc8ca9ffb47cfcab4ff1d6a3ac37506bfe6a47a421453286793bdf",
444
+ "description": "lib/telemetry.sh — bassclef telemetry event emission (opt-in, local-only)"
445
+ },
446
+ {
447
+ "slug": "tier-check",
448
+ "type": "lib",
449
+ "path": "lib/tier-check.sh",
450
+ "tier": "lite",
451
+ "content_hash": "sha256:c8b5ca9c7af75a49727612792e423ca0209b643039d08cfd99084707043dae75",
452
+ "description": "lib/tier-check.sh — adopter tier resolution + gate."
453
+ },
454
+ {
455
+ "slug": "tier-dependency-audit",
456
+ "type": "lib",
457
+ "path": "lib/tier-dependency-audit.sh",
458
+ "tier": "lite",
459
+ "content_hash": "sha256:7ee5cc3c7372ca6aef3c81f614ec119ffed8874e00a78d441ce8d0304c7b6308",
460
+ "description": "lib/tier-dependency-audit.sh"
461
+ },
462
+ {
463
+ "slug": "alan-cooper",
464
+ "type": "luminary",
465
+ "path": ".claude/luminaries/alan-cooper.md",
466
+ "tier": "lite",
467
+ "content_hash": "sha256:ace2e37c112de92166dfc94ee8e4c48300ff06bea5d275e4d228d5dd24fcd62a",
468
+ "description": "\\\"Personas are precision tools — each one a research-grounded behavioral archetype, not a fictional user."
469
+ },
470
+ {
471
+ "slug": "alistair-cockburn",
472
+ "type": "luminary",
473
+ "path": ".claude/luminaries/alistair-cockburn.md",
474
+ "tier": "lite",
475
+ "content_hash": "sha256:5f41c37247fe847e6c5be86e8f7e819cff5d224ebf6da05a0512c05e23d78cc6",
476
+ "description": "\\\"Build the walking skeleton first — the thinnest possible end-to-end slice that exercises every architectural layer, every deploy step, every test layer, before adding any feature."
477
+ },
478
+ {
479
+ "slug": "amazon-pr-faq",
480
+ "type": "luminary",
481
+ "path": ".claude/luminaries/amazon-pr-faq.md",
482
+ "tier": "lite",
483
+ "content_hash": "sha256:33f271ff90f67402f726a39b7c00e55937027bcd36fc14f2ef645f56b9e50f7e",
484
+ "description": "\\\"Write the press release first. If it doesn't excite, don't build.\\\""
485
+ },
486
+ {
487
+ "slug": "andreas-zeller",
488
+ "type": "luminary",
489
+ "path": ".claude/luminaries/andreas-zeller.md",
490
+ "tier": "lite",
491
+ "content_hash": "sha256:d0d526b3b6118398f6a84384c429952fb0ed06c5e328c626458b1c8643d6c2da",
492
+ "description": "\\\"Every hypothesis has a test. Delta Debugging shrinks the failing input to its minimum. Debugging as science.\\\""
493
+ },
494
+ {
495
+ "slug": "ash-maurya",
496
+ "type": "luminary",
497
+ "path": ".claude/luminaries/ash-maurya.md",
498
+ "tier": "lite",
499
+ "content_hash": "sha256:b6f15616f05c85f7342618ca72aeeb21aaca00a66d4d9029f8429b1e1ffd2d93",
500
+ "description": "\\\"Document your Plan A, then identify the riskiest parts of your plan, and systematically test your plan.\\\""
501
+ },
502
+ {
503
+ "slug": "bill-buxton",
504
+ "type": "luminary",
505
+ "path": ".claude/luminaries/bill-buxton.md",
506
+ "tier": "lite",
507
+ "content_hash": "sha256:6b7fe8d87960d59cc9ad7465cfdcbcc652d1b18a565e21f3ffb51a846970883e",
508
+ "description": "\\\"Get the design right, and the right design.\\\""
509
+ },
510
+ {
511
+ "slug": "charles-sanders-peirce",
512
+ "type": "luminary",
513
+ "path": ".claude/luminaries/charles-sanders-peirce.md",
514
+ "tier": "lite",
515
+ "content_hash": "sha256:e1a6ee9fceb308fb3eda82e11fbec08403c9676c1852b5857f08a87ca882d951",
516
+ "description": "\\\"Keep inquiry open.\\\""
517
+ },
518
+ {
519
+ "slug": "david-ogilvy",
520
+ "type": "luminary",
521
+ "path": ".claude/luminaries/david-ogilvy.md",
522
+ "tier": "lite",
523
+ "content_hash": "sha256:2efc3f5eb70977ece81e75cd1d43d1b2de3bdad1e522f7c96c10ab261f4df4d0",
524
+ "description": "\\\"Write the way you talk. Naturally.\\\""
525
+ },
526
+ {
527
+ "slug": "don-norman",
528
+ "type": "luminary",
529
+ "path": ".claude/luminaries/don-norman.md",
530
+ "tier": "lite",
531
+ "content_hash": "sha256:982b4aa974a04fb6a993cbe788b7b62d8272842d8b3a26484fc6c9e0d51afadc",
532
+ "description": "\\\"Good design makes the right action obvious."
533
+ },
534
+ {
535
+ "slug": "edward-tufte",
536
+ "type": "luminary",
537
+ "path": ".claude/luminaries/edward-tufte.md",
538
+ "tier": "lite",
539
+ "content_hash": "sha256:14ae144315a11d6466aacf6c685b57e7927f0ebffc75f996d78d8204346849db",
540
+ "description": "\\\"Above all else, show the data. Maximize the data-ink ratio; every pixel that doesn't represent information is a candidate for removal.\\\""
541
+ },
542
+ {
543
+ "slug": "eric-evans",
544
+ "type": "luminary",
545
+ "path": ".claude/luminaries/eric-evans.md",
546
+ "tier": "lite",
547
+ "content_hash": "sha256:91856ea58cafc6be42bafd953443f9144136c33a9c6cccd57a5c90965b31e35e",
548
+ "description": "\\\"The model is the backbone of the design."
549
+ },
550
+ {
551
+ "slug": "frederick-brooks",
552
+ "type": "luminary",
553
+ "path": ".claude/luminaries/frederick-brooks.md",
554
+ "tier": "lite",
555
+ "content_hash": "sha256:149711862270ae2c17022b2fd01e948f4c8fe3aec115c41a9af5e2405ed5644c",
556
+ "description": "\\\"Adding manpower to a late software project makes it later.\\\""
557
+ },
558
+ {
559
+ "slug": "gang-of-four",
560
+ "type": "luminary",
561
+ "path": ".claude/luminaries/gang-of-four.md",
562
+ "tier": "lite",
563
+ "content_hash": "sha256:47accc6c9c138d585345e6f81a7cf6a1dbd42433844ccb8d9a86a8294b458d1b",
564
+ "description": "\\\"Program to an interface, not an implementation."
565
+ },
566
+ {
567
+ "slug": "glenford-myers",
568
+ "type": "luminary",
569
+ "path": ".claude/luminaries/glenford-myers.md",
570
+ "tier": "lite",
571
+ "content_hash": "sha256:440ed5d16bfc52152f5a86ac4bf08fc7d91927a7f333cae2c5813f46df0e4f7f",
572
+ "description": "\\\"The purpose of testing is to find errors, not to demonstrate the absence of errors.\\\""
573
+ },
574
+ {
575
+ "slug": "hunt-thomas",
576
+ "type": "luminary",
577
+ "path": ".claude/luminaries/hunt-thomas.md",
578
+ "tier": "lite",
579
+ "content_hash": "sha256:4824b5a19b26787b5622966542e682733005afca04fc423f8347c29560b21023",
580
+ "description": "\\\"Every piece of knowledge must have a single, unambiguous, authoritative representation in a system."
581
+ },
582
+ {
583
+ "slug": "hyrum-wright",
584
+ "type": "luminary",
585
+ "path": ".claude/luminaries/hyrum-wright.md",
586
+ "tier": "lite",
587
+ "content_hash": "sha256:079855a86658dd4553dd0dfe7bc32fdecdde0a8ef0da71acb8901472b1cc9eb6",
588
+ "description": "\\\"With a sufficient number of users of an API, it does not matter what you promise in the contract: all observable behaviors of your system will be depended on by somebody.\\\""
589
+ },
590
+ {
591
+ "slug": "jason-fried-dhh",
592
+ "type": "luminary",
593
+ "path": ".claude/luminaries/jason-fried-dhh.md",
594
+ "tier": "lite",
595
+ "content_hash": "sha256:0f22780dc9684115556c0df86fdbd0657ce32b02f4095f48b548f9c3abe75ec1",
596
+ "description": "\\\"It doesn't have to be crazy at work.\\\""
597
+ },
598
+ {
599
+ "slug": "jesse-james-garrett",
600
+ "type": "luminary",
601
+ "path": ".claude/luminaries/jesse-james-garrett.md",
602
+ "tier": "lite",
603
+ "content_hash": "sha256:8275c70d25fb8e8acad9dc68ade399993d5f1432ae82449fe14db8533342fd70",
604
+ "description": "\\\"Every user experience has five planes: strategy, scope, structure, skeleton, surface."
605
+ },
606
+ {
607
+ "slug": "john-ousterhout",
608
+ "type": "luminary",
609
+ "path": ".claude/luminaries/john-ousterhout.md",
610
+ "tier": "lite",
611
+ "content_hash": "sha256:af68d97598b946e8bd049c2bf5075333ccd50b8072f685efa16805c60fc97bf6",
612
+ "description": "\\\"Complexity is anything that makes software hard to understand or modify."
613
+ },
614
+ {
615
+ "slug": "karl-popper",
616
+ "type": "luminary",
617
+ "path": ".claude/luminaries/karl-popper.md",
618
+ "tier": "lite",
619
+ "content_hash": "sha256:84ed281b7c6194d1abfa6831824fca748db8e9ac52b3a6ce1c14fc2d783bf6e7",
620
+ "description": "\\\"Good tests kill flawed theories; we remain alive to guess again.\\\""
621
+ },
622
+ {
623
+ "slug": "kent-beck",
624
+ "type": "luminary",
625
+ "path": ".claude/luminaries/kent-beck.md",
626
+ "tier": "lite",
627
+ "content_hash": "sha256:45f4df49b02c58bcc77609baaf65019fa4dcc5fd743150e7ab1074298c6eb307",
628
+ "description": "\\\"Make it work. Make it right. Make it fast. Tests are the first client of your code.\\\""
629
+ },
630
+ {
631
+ "slug": "linus-torvalds",
632
+ "type": "luminary",
633
+ "path": ".claude/luminaries/linus-torvalds.md",
634
+ "tier": "lite",
635
+ "content_hash": "sha256:ad1c08a2906c3329eeba4eaee156a4334cc5f2c51cf27477141f29925fd18d6e",
636
+ "description": "\\\"We do not break userspace.\\\" — INSTEAD: the kernel team pays the migration cost so every program that ran yesterday keeps running today."
637
+ },
638
+ {
639
+ "slug": "martin-fowler",
640
+ "type": "luminary",
641
+ "path": ".claude/luminaries/martin-fowler.md",
642
+ "tier": "lite",
643
+ "content_hash": "sha256:7fbf6ec65206fcbb6dbf2df1d24fed37555d495c6597885ff1a7f201ce3c2544",
644
+ "description": "\\\"Any fool can write code that a computer can understand."
645
+ },
646
+ {
647
+ "slug": "michael-feathers",
648
+ "type": "luminary",
649
+ "path": ".claude/luminaries/michael-feathers.md",
650
+ "tier": "lite",
651
+ "content_hash": "sha256:768da9d3388f1a0bd6da07be4705afc61559d13f7055dec40eefc19480800747",
652
+ "description": "\\\"Legacy code is code without tests. Everything else is detail.\\\" [ref:1]"
653
+ },
654
+ {
655
+ "slug": "michael-nygard",
656
+ "type": "luminary",
657
+ "path": ".claude/luminaries/michael-nygard.md",
658
+ "tier": "lite",
659
+ "content_hash": "sha256:6e76b9901110cddecb9e343fe42ae112e30a6afa430d6f3c980377d4acf75044",
660
+ "description": "\\\"Everything fails. Every remote call can hang. Every integration point is a liability. Design your system to be stable in the presence of failure, not to assume failure away.\\\"…"
661
+ },
662
+ {
663
+ "slug": "robert-c-martin",
664
+ "type": "luminary",
665
+ "path": ".claude/luminaries/robert-c-martin.md",
666
+ "tier": "lite",
667
+ "content_hash": "sha256:2150986fe1c25d6b12a213314dbe0a3e629d0363d32e6847d8f2ff57d87b67d9",
668
+ "description": "\\\"Architecture is about intent, not frameworks."
669
+ },
670
+ {
671
+ "slug": "saltzer-schroeder",
672
+ "type": "luminary",
673
+ "path": ".claude/luminaries/saltzer-schroeder.md",
674
+ "tier": "lite",
675
+ "content_hash": "sha256:25fe2730b9c4bc63942c7581f3da70e206cad742f32575c43d29623fb9f3cbec",
676
+ "description": "\\\"The principles are intended to guide the design of protection mechanisms..."
677
+ },
678
+ {
679
+ "slug": "sophia-prater",
680
+ "type": "luminary",
681
+ "path": ".claude/luminaries/sophia-prater.md",
682
+ "tier": "lite",
683
+ "content_hash": "sha256:8ca808b555223b8eb641e1716c7a0759329d8bdc4c7bc4c67f9ced1788885e15",
684
+ "description": "\\\"Objects first, then actions. Never the reverse.\\\""
685
+ },
686
+ {
687
+ "slug": "stephen-toulmin",
688
+ "type": "luminary",
689
+ "path": ".claude/luminaries/stephen-toulmin.md",
690
+ "tier": "lite",
691
+ "content_hash": "sha256:7d7d4b9a9ec1a13669fa5f1c5abab91ed5d20ae1f81a379cb5d5dda6645b33bf",
692
+ "description": "\\\"An argument is a whole organism. Take out one part and the rest collapses.\\\""
693
+ },
694
+ {
695
+ "slug": "tony-hoare",
696
+ "type": "luminary",
697
+ "path": ".claude/luminaries/tony-hoare.md",
698
+ "tier": "lite",
699
+ "content_hash": "sha256:d557d1b083f558ce08dbfb3d14ebdaa9b36f278d94eece28031e07da2a47e63d",
700
+ "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
+ },
702
+ {
703
+ "slug": "vaughn-vernon",
704
+ "type": "luminary",
705
+ "path": ".claude/luminaries/vaughn-vernon.md",
706
+ "tier": "lite",
707
+ "content_hash": "sha256:43e708b76437fe0da9c2c68c8c0b5ff9ef48939fa049b8d20304c987aff3e888",
708
+ "description": "\\\"DDD is implementable. Here's how.\\\""
709
+ },
710
+ {
711
+ "slug": "w-edwards-deming",
712
+ "type": "luminary",
713
+ "path": ".claude/luminaries/w-edwards-deming.md",
714
+ "tier": "lite",
715
+ "content_hash": "sha256:9b5d51d106b5f4398c15c1412c781b81f2cde55fecc294c120479a06b8de92a9",
716
+ "description": "\\\"A bad system will beat a good person every time.\\\""
717
+ },
718
+ {
719
+ "slug": "bassclef-hook-connect",
720
+ "type": "presence-template",
721
+ "path": "presence/install/bassclef-hook-connect.sh",
722
+ "tier": "lite",
723
+ "content_hash": "sha256:7d029e13d72fa66157105b18684920d12e0b3c4f9d4866c0baa1c3b8227b745c",
724
+ "description": "description: Dynamic-derive hook connect — closes bassclef-upstream#625."
725
+ },
726
+ {
727
+ "slug": "bassclef-sync-dispatcher-template",
728
+ "type": "presence-template",
729
+ "path": "presence/install/bassclef-sync.dispatcher.template.sh",
730
+ "tier": "lite",
731
+ "content_hash": "sha256:b94d6f09c8539c09918f79904c4bcbd50d1e5e44481c6bf641a60810dd117298",
732
+ "description": "description: Retagged standard → lite per #1301 concentric rule (ADR-052 D1) —"
733
+ },
734
+ {
735
+ "slug": "bassclef-sync-template",
736
+ "type": "presence-template",
737
+ "path": "presence/install/bassclef-sync.template.sh",
738
+ "tier": "lite",
739
+ "content_hash": "sha256:f202c2bb2d252e72e3c2f80a99fea4fece95b9db3744721ce4fea12e3a4b4eb1",
740
+ "description": "description: BASSCLEF_SYNC_VERSION=2026-09-06-1496-sessionstart-heal-v1"
741
+ },
742
+ {
743
+ "slug": "schedule-auto-save-cron",
744
+ "type": "presence-template",
745
+ "path": "presence/install/schedule-auto-save.cron.sh",
746
+ "tier": "lite",
747
+ "content_hash": "sha256:1cf543999e8fb8acc013439c9f3034f21f64604dc334321e97d9be60c6ac8bd3",
748
+ "description": "description: schedule-auto-save.cron.sh — install a cron entry that fires auto-save-idle.sh"
749
+ },
750
+ {
751
+ "slug": "schedule-auto-save-taskscheduler",
752
+ "type": "presence-template",
753
+ "path": "presence/install/schedule-auto-save.taskscheduler.md",
754
+ "tier": "lite",
755
+ "content_hash": "sha256:d642cdd842320ba3f7ac714da5cfbd55a594805d3ff3f144de1b7005bb1ebff6"
756
+ },
757
+ {
758
+ "slug": "agents",
759
+ "type": "root-doc",
760
+ "path": "AGENTS.md",
761
+ "tier": "lite",
762
+ "content_hash": "sha256:1c5a0dc586ea16eaf6043c34df10b2450fa015662809f65fc2676ea146a45b0d",
763
+ "description": "Cross-tool agent context for sunj-labs repos."
764
+ },
765
+ {
766
+ "slug": "claude-lite",
767
+ "type": "root-doc",
768
+ "path": "CLAUDE-lite.md",
769
+ "tier": "lite",
770
+ "content_hash": "sha256:63f70fb450065a2fc2c3d2a892a19619d2240691440ecf0dc5b7657cd9017541",
771
+ "description": "What this is. A trimmed version of bassclef for solo adopters running one project. Ships 14 core skills plus 15 rules for session hygiene, safety, plain English, and PR shape. Full bassclef ships 90 skills and 76 rules for cross-project operators."
772
+ },
773
+ {
774
+ "slug": "code-of-conduct",
775
+ "type": "root-doc",
776
+ "path": "CODE_OF_CONDUCT.md",
777
+ "tier": "lite",
778
+ "content_hash": "sha256:c00334fb47f0aad9adf11a376759a5d51b8d8403cf9fc686bc76d643b454ac9e",
779
+ "description": "We're committed to a welcoming, respectful community for everyone contributing to or using bassclef."
780
+ },
781
+ {
782
+ "slug": "contributing",
783
+ "type": "root-doc",
784
+ "path": "CONTRIBUTING.md",
785
+ "tier": "lite",
786
+ "content_hash": "sha256:59fdb81b80bbe65960c87bfc634fd6117df9261d262f32c73f6737b562338bb1",
787
+ "description": "Bassclef is a framework for guiding AI agents through software development — skills, rules, hooks, and standards that compose into an opinionated SDLC substrate."
788
+ },
789
+ {
790
+ "slug": "readme",
791
+ "type": "root-doc",
792
+ "path": "README.md",
793
+ "tier": "lite",
794
+ "content_hash": "sha256:f1c4bb6e9146ceb519f5f5c05a5cbc8798e8a885cbbab7a55af6293569111390",
795
+ "description": "A shared substrate for working with AI coding agents."
796
+ },
797
+ {
798
+ "slug": "security",
799
+ "type": "root-doc",
800
+ "path": "SECURITY.md",
801
+ "tier": "lite",
802
+ "content_hash": "sha256:0c4d177670be95c7b0e37554633d508ec6c2b82f18110355f382abdfd9410359",
803
+ "description": "Please report security vulnerabilities privately via GitHub's security advisory system:"
804
+ },
805
+ {
806
+ "slug": "accessor-library-discipline",
807
+ "type": "rule",
808
+ "path": ".claude/rules/accessor-library-discipline.md",
809
+ "tier": "lite",
810
+ "content_hash": "sha256:b3633455b47a3c6390b7076fd4466f11e4567f926a72488ad8d0e4ce9c06cf39",
811
+ "description": "State spine consumers (skills, hooks, rules, scripts) MUST go through the typed accessor library lib/state.sh to read or write bassclef state."
812
+ },
813
+ {
814
+ "slug": "api-conventions",
815
+ "type": "rule",
816
+ "path": ".claude/rules/api-conventions.md",
817
+ "tier": "lite",
818
+ "content_hash": "sha256:7ee4a28c04d7f8bddf662a095d6205bf5c88c76781540a3d77c18cfdd476ac11",
819
+ "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
+ },
821
+ {
822
+ "slug": "artifact-ingestion",
823
+ "type": "rule",
824
+ "path": ".claude/rules/artifact-ingestion.md",
825
+ "tier": "lite",
826
+ "content_hash": "sha256:45fd629beeb910cf7e08f1511673466aed42f90b4a5379b29e5f5d5c2587f6af",
827
+ "description": "Before producing any substantive generative output (canvas, prototype, spec, proposal, rubric, ADR, variant), the agent MUST read the referenced artifacts and enumerate them in…"
828
+ },
829
+ {
830
+ "slug": "assert-only-after-verify",
831
+ "type": "rule",
832
+ "path": ".claude/rules/assert-only-after-verify.md",
833
+ "tier": "lite",
834
+ "content_hash": "sha256:87cdd1879fa3b74e3171470f6d14485ebe07f3af646e9994b1ec28fd731bdcc8",
835
+ "description": "Plain check: Before I make a claim in this turn, I read the source first and cite it."
836
+ },
837
+ {
838
+ "slug": "blocked-items",
839
+ "type": "rule",
840
+ "path": ".claude/rules/blocked-items.md",
841
+ "tier": "lite",
842
+ "content_hash": "sha256:e81e1e48d86e38fff8ba109f356e769dab8bbf362160bd2febcd6ae8f13b2b9b",
843
+ "description": "Session-start hook output may contain lines prefixed with BLOCKED:."
844
+ },
845
+ {
846
+ "slug": "bootstrap-pair-discipline",
847
+ "type": "rule",
848
+ "path": ".claude/rules/bootstrap-pair-discipline.md",
849
+ "tier": "lite",
850
+ "content_hash": "sha256:b161659215ab499ec228af8f7eaf1956307d317ef509ed77c0fb06c8cae86ff8",
851
+ "description": "Every substrate primitive ships with its paired bootstrap discipline."
852
+ },
853
+ {
854
+ "slug": "branching",
855
+ "type": "rule",
856
+ "path": ".claude/rules/branching.md",
857
+ "tier": "lite",
858
+ "content_hash": "sha256:292de9c9fda44c0c9e92bd2fd0551d04a686ed60607b094635bf5db74465c57d",
859
+ "description": "Trunk-based development — branch naming and flow"
860
+ },
861
+ {
862
+ "slug": "cold-adopter-harness-discipline",
863
+ "type": "rule",
864
+ "path": ".claude/rules/cold-adopter-harness-discipline.md",
865
+ "tier": "lite",
866
+ "content_hash": "sha256:8b4e72dc44f41b1671cf648addf3a1bba7cc543264ff0696c1ea46413c4619e2",
867
+ "description": "Substrate changes that touch any adopter-observable surface MUST pass the cold-adopter harness before merge."
868
+ },
869
+ {
870
+ "slug": "commit-conventions",
871
+ "type": "rule",
872
+ "path": ".claude/rules/commit-conventions.md",
873
+ "tier": "lite",
874
+ "content_hash": "sha256:69ae0083d62003eb70442ef3d5fcffd0061723a18da931f823795123ff7fc312",
875
+ "description": "Commit message format — Conventional Commits"
876
+ },
877
+ {
878
+ "slug": "compounding-axis-fresh-analysis",
879
+ "type": "rule",
880
+ "path": ".claude/rules/compounding-axis-fresh-analysis.md",
881
+ "tier": "lite",
882
+ "content_hash": "sha256:256fdb64c4703d7e492527c1dd7dbbed8325baf7c29f0c7c06d10563cc472852",
883
+ "description": "When /longrun prep proposes scope shapes, each shape's compounding-sequence row comes from fresh analysis."
884
+ },
885
+ {
886
+ "slug": "compounding-sequence-fresh-analysis",
887
+ "type": "rule",
888
+ "path": ".claude/rules/compounding-sequence-fresh-analysis.md",
889
+ "tier": "lite",
890
+ "content_hash": "sha256:256fdb64c4703d7e492527c1dd7dbbed8325baf7c29f0c7c06d10563cc472852",
891
+ "description": "When /longrun prep proposes scope shapes, each shape's compounding-sequence row comes from fresh analysis."
892
+ },
893
+ {
894
+ "slug": "context-engineering",
895
+ "type": "rule",
896
+ "path": ".claude/rules/context-engineering.md",
897
+ "tier": "lite",
898
+ "content_hash": "sha256:9b9546162bc71eff6fbea5d3200589097584c8e6bb838013163aaac4bf9aa9bf",
899
+ "description": "The single most leverage-y discipline in bassclef."
900
+ },
901
+ {
902
+ "slug": "context-management",
903
+ "type": "rule",
904
+ "path": ".claude/rules/context-management.md",
905
+ "tier": "lite",
906
+ "content_hash": "sha256:c319a027124fa9de0066fd60b2b05456808c4b4220baf74c298f6ece73e21df5",
907
+ "description": "Context window management — thresholds, compaction strategy, survival kit"
908
+ },
909
+ {
910
+ "slug": "defensive-bash",
911
+ "type": "rule",
912
+ "path": ".claude/rules/defensive-bash.md",
913
+ "tier": "lite",
914
+ "content_hash": "sha256:9a194df6533b1c008cf6e358b2cbb88a04aafa7c1160f0650db296895a7a9be0",
915
+ "description": "Every bash hook + script in bassclef follows standards/bash-hook-safety.md."
916
+ },
917
+ {
918
+ "slug": "deferred-actions",
919
+ "type": "rule",
920
+ "path": ".claude/rules/deferred-actions.md",
921
+ "tier": "lite",
922
+ "content_hash": "sha256:9998b35c7c3a3122f5ae3644e72e60dcd3151c686e8d61b725afa83747176fce",
923
+ "description": "Deferred-actions manifest — capability-routed handoff across session modalities. Sessions write entries when capabilities don't satisfy an action; capable future sessions pick them up."
924
+ },
925
+ {
926
+ "slug": "destructive-operations",
927
+ "type": "rule",
928
+ "path": ".claude/rules/destructive-operations.md",
929
+ "tier": "lite",
930
+ "content_hash": "sha256:c5991ab6765b3594d3747ee6c4d513a8459fe46a4b1b34c98652ca24d2b7538d",
931
+ "description": "The destructive-command-guard hook catches known patterns mechanically."
932
+ },
933
+ {
934
+ "slug": "diagnosis",
935
+ "type": "rule",
936
+ "path": ".claude/rules/diagnosis.md",
937
+ "tier": "lite",
938
+ "content_hash": "sha256:f387cde3e41ca4cf3afc65aee9982e76da19b7798e84d0e602e8e2ff5f9c7306",
939
+ "description": "Three-step diagnosis before writing any fix"
940
+ },
941
+ {
942
+ "slug": "discipline",
943
+ "type": "rule",
944
+ "path": ".claude/rules/adr-discipline.md",
945
+ "tier": "lite",
946
+ "content_hash": "sha256:ac032d4993e4cc89c1df086cb32b0c093d9cf1fc79767870c3ffa46de77dabf5",
947
+ "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
+ },
949
+ {
950
+ "slug": "github-issue-flash-tweet",
951
+ "type": "rule",
952
+ "path": ".claude/rules/github-issue-flash-tweet.md",
953
+ "tier": "lite",
954
+ "content_hash": "sha256:1897d95719022df7a5b9ef3ffad2fac6b9a4baa16c45b460a0e821073d163a9d",
955
+ "description": "Every GitHub issue body opens with Problem (≤500 chars): + --- + technical detail."
956
+ },
957
+ {
958
+ "slug": "guardrails",
959
+ "type": "rule",
960
+ "path": ".claude/rules/guardrails.md",
961
+ "tier": "lite",
962
+ "content_hash": "sha256:f24b55a2cac772ccc86da182b02a7ce7eddec4d13a0009a6f9f3ed7db6784823",
963
+ "description": "Agent guardrails — behavior boundaries, escalation rules, capability ceilings for autonomous operation"
964
+ },
965
+ {
966
+ "slug": "hook-wire-on-author",
967
+ "type": "rule",
968
+ "path": ".claude/rules/hook-wire-on-author.md",
969
+ "tier": "lite",
970
+ "content_hash": "sha256:d2ab57d4cf81e041b732ccdcd7a38220104c5d93283830fcf944704a0e8a8e8b",
971
+ "description": "Every new bassclef hook (a file under .claude/hooks/*.sh) MUST be added to project .claude/settings.json in the same PR that authors it."
972
+ },
973
+ {
974
+ "slug": "identifier-leak-prevention",
975
+ "type": "rule",
976
+ "path": ".claude/rules/identifier-leak-prevention.md",
977
+ "tier": "lite",
978
+ "content_hash": "sha256:31df845d034bbd756172ad7895ff561cbfeab38aa0b744f29862ff4095e4300b",
979
+ "description": "Bassclef commits stay free of operator machine identifiers."
980
+ },
981
+ {
982
+ "slug": "iteration-bet-brief-completeness",
983
+ "type": "rule",
984
+ "path": ".claude/rules/iteration-bet-brief-completeness.md",
985
+ "tier": "lite",
986
+ "content_hash": "sha256:bcee28ea68d61b635e0a6880eee6d92d2b04ecfc8cf7eeef4a726b48dd831115",
987
+ "description": "When Orchestrator (or any agent) delegates a Construction stack to a subagent (Builder, Designer, Architect), the brief MUST include, verbatim and with file paths, every artifact…"
988
+ },
989
+ {
990
+ "slug": "lite-manifest-schema-change-discipline",
991
+ "type": "rule",
992
+ "path": ".claude/rules/lite-manifest-schema-change-discipline.md",
993
+ "tier": "lite",
994
+ "content_hash": "sha256:7d6652791a3e1f4fa6fc33420b90c1f9c0cf379f52bc31b7002ee496064b150d",
995
+ "description": "Every lite-manifest schema change ships a migration-note ledger entry in the same PR. Adopters read the ledger before sync."
996
+ },
997
+ {
998
+ "slug": "longrun-prep-plan-doc-compression",
999
+ "type": "rule",
1000
+ "path": ".claude/rules/longrun-prep-plan-doc-compression.md",
1001
+ "tier": "lite",
1002
+ "content_hash": "sha256:35c8b9b14383864291f03dc78414d85162814ad2d43daa1fabfb268ecca197a0",
1003
+ "description": "When a plan doc at docs/next-session-plan-*.md (modified within 48 hours) carries a ## Recommended session sequence (or equivalent) section, /longrun prep MUST skip the full Steps…"
1004
+ },
1005
+ {
1006
+ "slug": "loop-discipline",
1007
+ "type": "rule",
1008
+ "path": ".claude/rules/loop-discipline.md",
1009
+ "tier": "lite",
1010
+ "content_hash": "sha256:06999e13620e2b11cb08d16993c3dd9a08ccc7b48c0e9f632ca86ab30dc2aa8d",
1011
+ "description": "Every step that ships code or substrate runs the six-step cycle for shipping code or substrate."
1012
+ },
1013
+ {
1014
+ "slug": "manual-prod-approval",
1015
+ "type": "rule",
1016
+ "path": ".claude/rules/manual-prod-approval.md",
1017
+ "tier": "lite",
1018
+ "content_hash": "sha256:2991feacdd1b1befc112f8e84a8c3e0f43f513ae489f22881ec05bf0299d1f10",
1019
+ "description": "Prod deploys require GitHub Environments with required_reviewers — no exceptions"
1020
+ },
1021
+ {
1022
+ "slug": "marker-enrichment-discipline",
1023
+ "type": "rule",
1024
+ "path": ".claude/rules/marker-enrichment-discipline.md",
1025
+ "tier": "lite",
1026
+ "content_hash": "sha256:4a6c0bea71de0d0e78e6f8ac6254502660a70c3faff3a8e85c5448f6b7137eed",
1027
+ "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
+ },
1029
+ {
1030
+ "slug": "mobile-ephemeral-session",
1031
+ "type": "rule",
1032
+ "path": ".claude/rules/mobile-ephemeral-session.md",
1033
+ "tier": "lite",
1034
+ "content_hash": "sha256:524032f07708a3d58b6ef3f3c444289dc20b93d51fad848a88567b09305281c9",
1035
+ "description": "Mobile/ephemeral session rules — state round-trips through git, no filesystem-only markers, explicit session-end"
1036
+ },
1037
+ {
1038
+ "slug": "new-dependency-check",
1039
+ "type": "rule",
1040
+ "path": ".claude/rules/new-dependency-check.md",
1041
+ "tier": "lite",
1042
+ "content_hash": "sha256:d6ee2beb22178637f94c1a3267f18668853f3c94064b77317aa9ce97b494e90f",
1043
+ "description": "New dependency check — verify before adding any package; loads per-pkg-manager sibling"
1044
+ },
1045
+ {
1046
+ "slug": "oo-ad-entry-point",
1047
+ "type": "rule",
1048
+ "path": ".claude/rules/oo-ad-entry-point.md",
1049
+ "tier": "lite",
1050
+ "content_hash": "sha256:99e9d250cfc6d1f530d0f6059385686726c5a8350bb83056441430f1571caaf9",
1051
+ "description": "OOA/D entry point — /decompose must fire for all Construction work, not just canvas-driven flow. Extended per bet 24a to cover hook + lib + script code paths per Cockburn ceremony tiering matrix."
1052
+ },
1053
+ {
1054
+ "slug": "operator-facing-prose",
1055
+ "type": "rule",
1056
+ "path": ".claude/rules/operator-facing-prose.md",
1057
+ "tier": "lite",
1058
+ "content_hash": "sha256:c58d586981ba6a19d26371ce4dffc8554d63f6fc1f4c2594cacd641b87a9d681",
1059
+ "description": "Any shorthand in operator-facing prose carries a plain-language gloss at first mention per response."
1060
+ },
1061
+ {
1062
+ "slug": "option-label-discipline",
1063
+ "type": "rule",
1064
+ "path": ".claude/rules/option-label-discipline.md",
1065
+ "tier": "lite",
1066
+ "content_hash": "sha256:c8d3972a9ae5314a4ae9e0d3da4d0cd07e5914b1fac231acca58c44ed54c652b",
1067
+ "description": "When presenting choices for the operator to pick from (shape A vs shape B; option 1 vs option 2; pick a/b/c; tier 1/2/3), labels MUST be characters the operator can easily type…"
1068
+ },
1069
+ {
1070
+ "slug": "pattern-annotation",
1071
+ "type": "rule",
1072
+ "path": ".claude/rules/pattern-annotation.md",
1073
+ "tier": "lite",
1074
+ "content_hash": "sha256:3fedc2c1cea6fe49ffdc0fcba466a9eb7a17d52a3e23e76a33a461b5129d3f72",
1075
+ "description": "Code that instantiates a named pattern from bassclef's catalog (patterns/<shelf>/<source>/<slug>.md) MUST mark itself with an @pattern <catalog-path> annotation."
1076
+ },
1077
+ {
1078
+ "slug": "persona-name-leak-scrub",
1079
+ "type": "rule",
1080
+ "path": ".claude/rules/persona-name-leak-scrub.md",
1081
+ "tier": "lite",
1082
+ "content_hash": "sha256:7328a584f2fe28558f8a72a1039a5ba38bc1fbe5933a6972a28131ae2d9b4921",
1083
+ "description": "Adopter-observable body content across SKILLs plus rules plus luminaries plus docs does not carry bassclef persona names (Sam, Louis, Jamie, Morgan). Persona names are internal orientation words. Adopters have zero context on them."
1084
+ },
1085
+ {
1086
+ "slug": "plain-english-discipline",
1087
+ "type": "rule",
1088
+ "path": ".claude/rules/plain-english-discipline.md",
1089
+ "tier": "lite",
1090
+ "content_hash": "sha256:b48eeaa4bde8c28188030e712d2252b27783ccc5bd9e14f040912e1e5331be98",
1091
+ "description": "All bassclef writing should be plain English at grade 8 with grade 10 as the ceiling for simple technical sentences. Drop bassclef-internal jargon. Keep standard tech vocabulary like API, hook, PR, schema."
1092
+ },
1093
+ {
1094
+ "slug": "plan-enumeration-needs-value-props",
1095
+ "type": "rule",
1096
+ "path": ".claude/rules/plan-enumeration-needs-value-props.md",
1097
+ "tier": "lite",
1098
+ "content_hash": "sha256:44ed8f74cba293b0b6fbbbf6c83c743964dbbc1609d590ea517d602d2334166b",
1099
+ "description": "When the agent presents options the operator must pick from or evaluate, the whole proposal opens with a full pitch (claim + 3 reasons) and each option lands as a tweet (claim +…"
1100
+ },
1101
+ {
1102
+ "slug": "pr-body-shape",
1103
+ "type": "rule",
1104
+ "path": ".claude/rules/pr-body-shape.md",
1105
+ "tier": "lite",
1106
+ "content_hash": "sha256:1b4352c57619c08223f0213d50b08fb1c257c82126da340951d46d529bec7173",
1107
+ "description": "Every PR body opens with a ## Problem section drafted by /state-a-problem brief + --- + ## Goal."
1108
+ },
1109
+ {
1110
+ "slug": "pr-strategy",
1111
+ "type": "rule",
1112
+ "path": ".claude/rules/pr-strategy.md",
1113
+ "tier": "lite",
1114
+ "content_hash": "sha256:23e81db128e6966de5b748aa01961fce953c357de1a361736ebd00e910af6308",
1115
+ "description": "The default PR strategy for any multi-issue iteration is stacked atomic branches: one branch per issue, one PR per branch, each independently reviewable and revertable."
1116
+ },
1117
+ {
1118
+ "slug": "pr-title-shape",
1119
+ "type": "rule",
1120
+ "path": ".claude/rules/pr-title-shape.md",
1121
+ "tier": "lite",
1122
+ "content_hash": "sha256:d71817a854af670b57a68a890fce722e1669f3a14009debd8409a2848d63d647",
1123
+ "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
+ },
1125
+ {
1126
+ "slug": "prototype-workflow",
1127
+ "type": "rule",
1128
+ "path": ".claude/rules/prototype-workflow.md",
1129
+ "tier": "lite",
1130
+ "content_hash": "sha256:f114e4cecd57fb2b960fc634cb566aab6061ce364c3f6c907a0a086cd0becc45",
1131
+ "description": "Design prototypes (artifacts under docs/prototypes/**) are visual statements to Reviewer (\\\"this is what we want built\\\")."
1132
+ },
1133
+ {
1134
+ "slug": "reserved-skill-names",
1135
+ "type": "rule",
1136
+ "path": ".claude/rules/reserved-skill-names.md",
1137
+ "tier": "lite",
1138
+ "content_hash": "sha256:c6abf0895c5edb60c8b42c741f39c407b6145a63453fe584b7e63559d2bd7e7e",
1139
+ "description": "Bassclef MUST NOT create a skill (.claude/skills/<name>/SKILL.md) with a name Claude Code's harness already claims."
1140
+ },
1141
+ {
1142
+ "slug": "schema-management",
1143
+ "type": "rule",
1144
+ "path": ".claude/rules/schema-management.md",
1145
+ "tier": "lite",
1146
+ "content_hash": "sha256:59ffe48a8538698cf48fd869a79d9a3977d0aab9eb01af7797cdf205b2a5a608",
1147
+ "description": "Schema management — never apply schema changes without a migration; loads per-ORM sibling"
1148
+ },
1149
+ {
1150
+ "slug": "sdlc-gates",
1151
+ "type": "rule",
1152
+ "path": ".claude/rules/sdlc-gates.md",
1153
+ "tier": "lite",
1154
+ "content_hash": "sha256:c1a6e27d8911375a5287dfa08a557aafd852b3de02f6180cfcdddd190fdee091",
1155
+ "description": "Universal SDLC gates — pre-build temperance + diagnose, post-build /verify, observed-failure chain. Stack-specific globs live in per-language siblings under standards/sdlc-gates/."
1156
+ },
1157
+ {
1158
+ "slug": "security",
1159
+ "type": "rule",
1160
+ "path": ".claude/rules/security.md",
1161
+ "tier": "lite",
1162
+ "content_hash": "sha256:1a3b527079890dd701ed3c16e5e91e2b408505a8b736f7f694e66e092cca964c",
1163
+ "description": "Security scanning — loads when touching source, config, or infra files"
1164
+ },
1165
+ {
1166
+ "slug": "session-artifacts",
1167
+ "type": "rule",
1168
+ "path": ".claude/rules/session-artifacts.md",
1169
+ "tier": "lite",
1170
+ "content_hash": "sha256:4101a23b7c81a914e4b18a43dce81f05a86f26643c75534a6313da28a645d5f3",
1171
+ "description": "Session artifacts — chronicle + journal entries at every phase transition and session end"
1172
+ },
1173
+ {
1174
+ "slug": "skill-composition-declarations",
1175
+ "type": "rule",
1176
+ "path": ".claude/rules/skill-composition-declarations.md",
1177
+ "tier": "lite",
1178
+ "content_hash": "sha256:a8eac68b5a5c4087399fb367b09bb46c91de53cfb63604b850ae392b43ade55c",
1179
+ "description": "How and when skills declare composes_with (extends another skill) vs depends_on (needs a runtime predecessor) in frontmatter. Closes bassclef#862 Gap 3."
1180
+ },
1181
+ {
1182
+ "slug": "skill-description-clarity",
1183
+ "type": "rule",
1184
+ "path": ".claude/rules/skill-description-clarity.md",
1185
+ "tier": "lite",
1186
+ "content_hash": "sha256:2de6002d9f9b6c8330ffea75451918a5e8986f90c2528a5f06c0536542f6651a",
1187
+ "description": "Every skill's frontmatter description field must be parseable by an engineer with no bassclef context in under 60 seconds."
1188
+ },
1189
+ {
1190
+ "slug": "skill-procedure-step-list",
1191
+ "type": "rule",
1192
+ "path": ".claude/rules/skill-procedure-step-list.md",
1193
+ "tier": "lite",
1194
+ "content_hash": "sha256:d18b66332540f0e84aee7e2e6317df92429d56c84ab25be098a3189ecbf12113",
1195
+ "description": "Before executing any SKILL procedure, I write the numbered step list into the response."
1196
+ },
1197
+ {
1198
+ "slug": "sprint-prep-preset-picker",
1199
+ "type": "rule",
1200
+ "path": ".claude/rules/sprint-prep-preset-picker.md",
1201
+ "tier": "lite",
1202
+ "content_hash": "sha256:77cae4a83c4acf66f5ae3a5fc87a4271af93d8b13892586999abe13cbe5c7c1d",
1203
+ "description": "/sprint next-work proposals pick one of three presets (converged / exploratory / reversible-small) based on mode signals. Sister rule to longrun-prep-plan-doc-compression at /sprint surface."
1204
+ },
1205
+ {
1206
+ "slug": "state-schema-validation",
1207
+ "type": "rule",
1208
+ "path": ".claude/rules/state-schema-validation.md",
1209
+ "tier": "lite",
1210
+ "content_hash": "sha256:9e2f60eaad6d6492e504722b9a1b8b4b088d41e23243dc23ca90dd427539972d",
1211
+ "description": "State-spine entity writes MUST conform to their JSON Schema."
1212
+ },
1213
+ {
1214
+ "slug": "stuck-signal-diagnostic",
1215
+ "type": "rule",
1216
+ "path": ".claude/rules/stuck-signal-diagnostic.md",
1217
+ "tier": "lite",
1218
+ "content_hash": "sha256:714b9edde0de55b790d6cf077c42527283d0a4a501d8cb46c57abd43c74142be",
1219
+ "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
+ },
1221
+ {
1222
+ "slug": "substrate-config-schema",
1223
+ "type": "rule",
1224
+ "path": ".claude/rules/substrate-config-schema.md",
1225
+ "tier": "lite",
1226
+ "content_hash": "sha256:5a451765750a1bd2bf9228631cd62e9da041bdfb8be57b2e7d27d5821fc0e710",
1227
+ "description": "Substrate config + secrets schemas — single source of truth for external resource references and secret lifecycle"
1228
+ },
1229
+ {
1230
+ "slug": "test-list-discipline",
1231
+ "type": "rule",
1232
+ "path": ".claude/rules/test-list-discipline.md",
1233
+ "tier": "lite",
1234
+ "content_hash": "sha256:fb65ac1cc1488620640b3d8f1f8aa4a2a342ead2685d23880da2270c3b62b82b",
1235
+ "description": "Every test file opens with a # test-list: commented block enumerating the assertions the step owes."
1236
+ },
1237
+ {
1238
+ "slug": "test-sufficiency",
1239
+ "type": "rule",
1240
+ "path": ".claude/rules/test-sufficiency.md",
1241
+ "tier": "lite",
1242
+ "content_hash": "sha256:ccd7646704ffb00e7611a25c675e855ba36566daa06336b680771ddb27135616",
1243
+ "description": "The Tier 0 hook (bassclef#1037) enforces test PRESENCE + RECENCY."
1244
+ },
1245
+ {
1246
+ "slug": "testing",
1247
+ "type": "rule",
1248
+ "path": ".claude/rules/testing.md",
1249
+ "tier": "lite",
1250
+ "content_hash": "sha256:045d9b68d16ab8564d5881a9ba09a18bf0bcb35662108fa269e59f720d789614",
1251
+ "description": "Three-layer test strategy — loads when touching source or test files"
1252
+ },
1253
+ {
1254
+ "slug": "testing-tier-config",
1255
+ "type": "rule",
1256
+ "path": ".claude/rules/testing-tier-config.md",
1257
+ "tier": "lite",
1258
+ "content_hash": "sha256:6c3762ec9aebb21a003b8c9990a84929911c77867aed6011b193fc57e49488bf",
1259
+ "description": "Bassclef's testing discipline is configured per path-matcher in .claude/bassclef-configs.jsonc under the testing section."
1260
+ },
1261
+ {
1262
+ "slug": "turn-estimate-grounding",
1263
+ "type": "rule",
1264
+ "path": ".claude/rules/turn-estimate-grounding.md",
1265
+ "tier": "lite",
1266
+ "content_hash": "sha256:e32a5e133f3691c9daeb5344306231a23a3427e97a2cd32b1aeb5cc838d33e30",
1267
+ "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
+ },
1269
+ {
1270
+ "slug": "visual-hierarchy",
1271
+ "type": "rule",
1272
+ "path": ".claude/rules/visual-hierarchy.md",
1273
+ "tier": "lite",
1274
+ "content_hash": "sha256:b22d64443e146db0b2f947d6c22a17fd5fa085c4b8eb7dfcaedae1054fa67894",
1275
+ "description": "Long agent responses that mix summary + analysis + enumeration + action become walls of text."
1276
+ },
1277
+ {
1278
+ "slug": "we-dont-break-adopters",
1279
+ "type": "rule",
1280
+ "path": ".claude/rules/we-dont-break-adopters.md",
1281
+ "tier": "lite",
1282
+ "content_hash": "sha256:f8f4ff59829091519c013e72205148cc3cf4e49c00247108ade799a4f8cc7c0f",
1283
+ "description": "Bassclef adopts Linus Torvalds's rule: we do not break adopters."
1284
+ },
1285
+ {
1286
+ "slug": "whereami-load-bearing",
1287
+ "type": "rule",
1288
+ "path": ".claude/rules/whereami-load-bearing.md",
1289
+ "tier": "lite",
1290
+ "content_hash": "sha256:6cf00d4e0bfa2c8865f67c411de9a563440c814f805cbe7bdfbebfd25cdae290",
1291
+ "description": "docs/whereami.md is the authoritative project-state snapshot in every bassclef-substrate repo."
1292
+ },
1293
+ {
1294
+ "slug": "writing-craft-discipline",
1295
+ "type": "rule",
1296
+ "path": ".claude/rules/writing-craft-discipline.md",
1297
+ "tier": "lite",
1298
+ "content_hash": "sha256:7c27db3b31e07d09a521a2f6896f49ab4d40da80b12093d8a2219521c9987498",
1299
+ "description": "Plain check. Before I ship any operator-facing prose in this turn, I run the six Ogilvy tests against my draft. If any test fails, I rewrite before I ship."
1300
+ },
1301
+ {
1302
+ "slug": "wu-sequencing-compounds",
1303
+ "type": "rule",
1304
+ "path": ".claude/rules/wu-sequencing-compounds.md",
1305
+ "tier": "lite",
1306
+ "content_hash": "sha256:9024027275763fa3e627a0072a0b2f5aa63303420e0a6245d7ef7fa93676b364",
1307
+ "description": "WUs within a chosen goal shape ship as compounding builds."
1308
+ },
1309
+ {
1310
+ "slug": "aggregate-telemetry",
1311
+ "type": "script",
1312
+ "path": "scripts/aggregate-telemetry.sh",
1313
+ "tier": "lite",
1314
+ "content_hash": "sha256:7ea98a9747dfc919184bc0c2a4aab228caa6efbd9cff6fef1c734d01a3e463fa",
1315
+ "description": "scripts/aggregate-telemetry.sh — read local telemetry store; emit uptake report"
1316
+ },
1317
+ {
1318
+ "slug": "analyze-tier-dependencies",
1319
+ "type": "script",
1320
+ "path": "scripts/analyze-tier-dependencies.sh",
1321
+ "tier": "lite",
1322
+ "content_hash": "sha256:d7a13ca4fb37283e50fc165bb5ebd6a65539d7dade005dcd38098e1d878c52b3",
1323
+ "description": "analyze-tier-dependencies.sh — orchestrator for the tier-dependency-audit subsystem"
1324
+ },
1325
+ {
1326
+ "slug": "generate-lite-manifest",
1327
+ "type": "script",
1328
+ "path": "scripts/generate-lite-manifest.sh",
1329
+ "tier": "lite",
1330
+ "content_hash": "sha256:022baace3a564f5861b866542c5cc673ca34ff9d44e3e9c9c378469e0d7a39d0",
1331
+ "description": "Generate lite-manifest.json at repo root."
1332
+ },
1333
+ {
1334
+ "slug": "generate-tier-manifest",
1335
+ "type": "script",
1336
+ "path": "scripts/generate-tier-manifest.sh",
1337
+ "tier": "lite",
1338
+ "content_hash": "sha256:56c3c2f37428f4e0798b16de0c9493caa44a284b920d64a64e9efb26d3f53392",
1339
+ "description": "generate-tier-manifest.sh — thin wrapper over generate-lite-manifest.sh"
1340
+ },
1341
+ {
1342
+ "slug": "intent-drift-check",
1343
+ "type": "script",
1344
+ "path": "scripts/intent-drift-check.sh",
1345
+ "tier": "lite",
1346
+ "content_hash": "sha256:9921d0b4c0375b3099bc3dc8457800ad157837286244f0ede46f8146127d0b73",
1347
+ "description": "intent-drift-check.sh — measure intent drift after an artifact body rewrite."
1348
+ },
1349
+ {
1350
+ "slug": "lite-manifest-drift-check",
1351
+ "type": "script",
1352
+ "path": "scripts/lite-manifest-drift-check.sh",
1353
+ "tier": "lite",
1354
+ "content_hash": "sha256:56b8155b11698b584e4ce31a0e1224708b02f51824f9bc5638116fd218a6e177",
1355
+ "description": "Detect drift between committed lite-manifest.json and current substrate state."
1356
+ },
1357
+ {
1358
+ "slug": "render-lite-manifest-doc",
1359
+ "type": "script",
1360
+ "path": "scripts/render-lite-manifest-doc.sh",
1361
+ "tier": "lite",
1362
+ "content_hash": "sha256:30dc5eaff11fafc08b0845d8c4ce329a51b6ca0e89136638d335b58af41c7c0f",
1363
+ "description": "Render human-readable companion doc from lite-manifest.json."
1364
+ },
1365
+ {
1366
+ "slug": "build",
1367
+ "type": "skill",
1368
+ "path": ".claude/skills/build/SKILL.md",
1369
+ "tier": "lite",
1370
+ "content_hash": "sha256:be80d5fb771cf7665f7db67f8089229620b14b3e7757c298e516acf488680aaa",
1371
+ "description": "Take a buildable plan and ship it. Reads a spec from /launch. Dispatches a builder per user story. Runs /verify. Opens PRs. Gates prod deploy on a human. Refuses auth, schema, security, and tenant work. --explain narrates first.",
1372
+ "inputs": [
1373
+ "A goal slug pointing to a spec on disk"
1374
+ ],
1375
+ "outputs": [
1376
+ "One PR per user story",
1377
+ "Verify report",
1378
+ "Reviewer sign-off",
1379
+ "Prod deploy gated on a human"
1380
+ ],
1381
+ "problem": "A buildable plan sits on disk. Nothing ships until someone writes code and PRs and gates prod.",
1382
+ "value": "Reads the plan and ships it. Runs the whole cycle so you can watch instead of type."
1383
+ },
1384
+ {
1385
+ "slug": "chronicle",
1386
+ "type": "skill",
1387
+ "path": ".claude/skills/chronicle/SKILL.md",
1388
+ "tier": "lite",
1389
+ "content_hash": "sha256:ac4b6594677e474ca8072b69264e8310d4da13e752a4c76e689c26dee531678c",
1390
+ "description": "Write the session log — alias for /session-log during the grace window through 2026-10-31. Renamed per ADR-040 Decision 1. Both names resolve to the same behavior; after grace ends, only /session-log resolves.",
1391
+ "composes_with": [
1392
+ "session-log"
1393
+ ],
1394
+ "inputs": [
1395
+ "Optional session or goal ref"
1396
+ ],
1397
+ "outputs": [
1398
+ "Session log entry at chronicle/*"
1399
+ ],
1400
+ "problem": "Grace-window sessions still call for /chronicle. New alias for /session-log keeps both live.",
1401
+ "value": "Writes the session log through the grace window. Same output as /session-log."
1402
+ },
1403
+ {
1404
+ "slug": "clean-artifacts",
1405
+ "type": "skill",
1406
+ "path": ".claude/skills/clean-artifacts/SKILL.md",
1407
+ "tier": "lite",
1408
+ "content_hash": "sha256:b411ace537665a692f08710375bcb476b59cad5ec1606756a9adc89a2d30fe89",
1409
+ "description": "Sweep workflow exhaust from the repo (stale verify markers, old Playwright screenshots, expired SDLC traces). Strict allowlist; never touches git-tracked files or critical artifacts. Dry-run by default. Runs standalone or via /session-end.",
1410
+ "inputs": [
1411
+ "Optional --dry-run flag"
1412
+ ],
1413
+ "outputs": [
1414
+ "Files removed by class",
1415
+ "Skipped safety-list entries",
1416
+ "Total space reclaimed"
1417
+ ],
1418
+ "problem": "Workflow exhaust piles up — stale verify markers, old screenshots, expired SDLC traces.",
1419
+ "value": "Sweeps three classes of exhaust from the working tree. Idempotent. Safe by exclusion list."
1420
+ },
1421
+ {
1422
+ "slug": "decompose",
1423
+ "type": "skill",
1424
+ "path": ".claude/skills/decompose/SKILL.md",
1425
+ "tier": "lite",
1426
+ "content_hash": "sha256:c63846fb14847f638fce848553a4a2c7ed777de4c917c00fe2ba29f42b7d3717",
1427
+ "description": "Audit responsibilities before you build. Reads sequence diagrams. Assigns GRASP roles. Identifies interfaces. Audits cross-cutting concerns. Selects patterns from GoF, Fowler, and stack idioms. Bridges design and build.",
1428
+ "composes_with": [
1429
+ "spec",
1430
+ "ia-model",
1431
+ "interaction-design",
1432
+ "pattern-review",
1433
+ "temperance"
1434
+ ],
1435
+ "inputs": [
1436
+ "Sequence diagrams from spec",
1437
+ "A decomposition target — feature or defect"
1438
+ ],
1439
+ "outputs": [
1440
+ "Responsibility matrix",
1441
+ "Interface registry",
1442
+ "Pattern map for construction"
1443
+ ],
1444
+ "problem": "Cross-cutting concerns bolt into implementations. Logging and tracing pile inside business code.",
1445
+ "value": "A responsibility matrix that keeps each concern in its own class. Decorators stay clean."
1446
+ },
1447
+ {
1448
+ "slug": "diagnose",
1449
+ "type": "skill",
1450
+ "path": ".claude/skills/diagnose/SKILL.md",
1451
+ "tier": "lite",
1452
+ "content_hash": "sha256:36c92a85d63e1f87f19a389ce56af5cba250f0fd77c349e7573176d9e8cf8849",
1453
+ "description": "Diagnose a defect before fixing. Reproduce the failure first (Step 0), then Is/Is Not, then Five Whys, then a Hypothesis. Run before writing any fix code. Lazy diagnosis ships brittle fixes.",
1454
+ "inputs": [
1455
+ "A failing test or error log",
1456
+ "A bug ticket or screenshot"
1457
+ ],
1458
+ "outputs": [
1459
+ "Reproduce step",
1460
+ "Is/Is Not table",
1461
+ "Five Whys chain",
1462
+ "Hypothesis with a read-only test"
1463
+ ],
1464
+ "problem": "Bugs get fixed on guesses. The wrong cause gets patched. The class comes back a week later.",
1465
+ "value": "A short trace from failure to root cause. You fix the class once instead of the instance three times."
1466
+ },
1467
+ {
1468
+ "slug": "feynman",
1469
+ "type": "skill",
1470
+ "path": ".claude/skills/feynman/SKILL.md",
1471
+ "tier": "lite",
1472
+ "content_hash": "sha256:adee64105a432da8c3a9c8d98bffc505ac1f334e727ea3e33f063934d78731d2",
1473
+ "description": "Explain a technical concept in plain English — Feynman style. For CTO-vettable sidebars in journal entries or standalone micro-posts.",
1474
+ "inputs": [
1475
+ "A concept name or paragraph text"
1476
+ ],
1477
+ "outputs": [
1478
+ "Feynman-style explanation",
1479
+ "Analogy anchors",
1480
+ "Grade-8 prose"
1481
+ ],
1482
+ "problem": "Technical concepts get explained with jargon. Non-technical readers stop reading.",
1483
+ "value": "Explains a technical concept in plain English — Feynman style. For CTO-vettable sidebars in journal entries."
1484
+ },
1485
+ {
1486
+ "slug": "howdoi",
1487
+ "type": "skill",
1488
+ "path": ".claude/skills/howdoi/SKILL.md",
1489
+ "tier": "lite",
1490
+ "content_hash": "sha256:4c2d3e9310fed5c294764a77aba62afb42c0696bd2e401a7bad8ce44537a577d",
1491
+ "description": "Search bassclef skills and rules for an adopter goal — LLM-assisted. Two modes — search (top matches) and compose (matches plus suggested chains). Ranks by semantic fit and cites what each match does.",
1492
+ "inputs": [
1493
+ "A one-sentence goal in plain English"
1494
+ ],
1495
+ "outputs": [
1496
+ "Ranked list of matching skills and rules",
1497
+ "One-line reason per match"
1498
+ ],
1499
+ "problem": "Adopters know what they want to do but not which bassclef skill or rule fits.",
1500
+ "value": "One question in. A short list of the skills and rules that match your goal."
1501
+ },
1502
+ {
1503
+ "slug": "ia-model",
1504
+ "type": "skill",
1505
+ "path": ".claude/skills/ia-model/SKILL.md",
1506
+ "tier": "lite",
1507
+ "content_hash": "sha256:f1571468b8a84a0e6a3f1babea6db21d18282ce94ff1eb5b1a0e2ca758f5cb28",
1508
+ "description": "Build information architecture from an entity inventory plus task flows. Derives nav structure, labeling, and screen map from the domain nouns.",
1509
+ "inputs": [
1510
+ "Task flows from spec",
1511
+ "Entity inventory from decompose"
1512
+ ],
1513
+ "outputs": [
1514
+ "Entity model diagram",
1515
+ "Navigation shape",
1516
+ "Screen inventory"
1517
+ ],
1518
+ "problem": "Screens get designed before the nouns behind them are named. Nav drifts across pages.",
1519
+ "value": "One entity map that drives every downstream screen. Nav stays clean because the model is clean."
1520
+ },
1521
+ {
1522
+ "slug": "interaction-design",
1523
+ "type": "skill",
1524
+ "path": ".claude/skills/interaction-design/SKILL.md",
1525
+ "tier": "lite",
1526
+ "content_hash": "sha256:fde42694455cfecd84aa51a616ea4dc96b9bd33ffbf807f36ba0a2ab0343eaaa",
1527
+ "description": "Turn IA plus task flows into interaction design — state diagrams, sequence diagrams, user flows. Final step in the UX translation chain before decompose.",
1528
+ "inputs": [
1529
+ "IA model plus task flows"
1530
+ ],
1531
+ "outputs": [
1532
+ "State diagrams",
1533
+ "Sequence diagrams",
1534
+ "User flow overview"
1535
+ ],
1536
+ "problem": "Nav and entities are drawn but the flow between screens is not. Devs invent transitions.",
1537
+ "value": "State diagrams and sequence diagrams that name every screen transition and API call."
1538
+ },
1539
+ {
1540
+ "slug": "interpret-input",
1541
+ "type": "skill",
1542
+ "path": ".claude/skills/interpret-input/SKILL.md",
1543
+ "tier": "lite",
1544
+ "content_hash": "sha256:775a48f6950219eb2476d6b87fc631b69f9821f043888ca95cd6988c99c8f4a4",
1545
+ "description": "Turn any input into a schema-valid InputArtifact. Modes: text, URL, image, repo, transcript, napkin, mixed. text + repo ship today. Others return valid stubs. First step of the cameo pipeline.",
1546
+ "inputs": [
1547
+ "Any input — text or URL or image or repo ref or transcript"
1548
+ ],
1549
+ "outputs": [
1550
+ "A schema-validated InputArtifact with kind and content"
1551
+ ],
1552
+ "problem": "Different sessions start with different input shapes — text or URL or image or repo or transcript.",
1553
+ "value": "One schema-validated artifact from any input. Downstream skills read one shape not seven."
1554
+ },
1555
+ {
1556
+ "slug": "journal",
1557
+ "type": "skill",
1558
+ "path": ".claude/skills/journal/SKILL.md",
1559
+ "tier": "lite",
1560
+ "content_hash": "sha256:767f84bf155290012f2f0b943e3cfff7ee0594c8c91ebf556da55ee58c21ada3",
1561
+ "description": "Draft a journal entry from this session's work — tuned to PE, search, and board audiences per the writing guide and brand questionnaire.",
1562
+ "inputs": [
1563
+ "Optional audience filter — PE or search or board"
1564
+ ],
1565
+ "outputs": [
1566
+ "Journal draft with voice per audience",
1567
+ "Audience recommendations table"
1568
+ ],
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."
1571
+ },
1572
+ {
1573
+ "slug": "kiss",
1574
+ "type": "skill",
1575
+ "path": ".claude/skills/kiss/SKILL.md",
1576
+ "tier": "lite",
1577
+ "content_hash": "sha256:26008f022947089b4f26044a6865058ff029cb98cf17658b936d889bbb91faf2",
1578
+ "description": "Keep it simple. Two modes: scope (compresses what ships; runs /value-prop brief plus MUST/SHOULD/COULD buckets) and words (rewrites to grade 8; big word to small word swap). Reads standards/bassclef-internal-jargon.md.",
1579
+ "composes_with": [
1580
+ "value-prop",
1581
+ "feynman"
1582
+ ],
1583
+ "inputs": [
1584
+ "A ticket or goal path for scope mode",
1585
+ "Paragraph text for words mode"
1586
+ ],
1587
+ "outputs": [
1588
+ "MUST/SHOULD/COULD buckets when scope",
1589
+ "Grade-8 rewrite when words"
1590
+ ],
1591
+ "problem": "Scope grows. Prose fills with jargon. Adopters read a wall of bassclef-internal words and give up.",
1592
+ "value": "Two modes — scope compresses what ships. Words rewrites vocabulary to grade 8. Plain English at the wire."
1593
+ },
1594
+ {
1595
+ "slug": "launch",
1596
+ "type": "skill",
1597
+ "path": ".claude/skills/launch/SKILL.md",
1598
+ "tier": "lite",
1599
+ "content_hash": "sha256:a99fd150c677290ef82423318cab4ff8abcda109a2b2c2371847b53e026cd17e",
1600
+ "description": "Compare variants of an idea. Ships a mock gallery with an Anthropic baseline. You pick a direction from the phone. Get the spec plus user stories. Get the decomposition plus a migration plan. Two sizes: medium and full.",
1601
+ "inputs": [
1602
+ "A rough idea or ticket or canvas"
1603
+ ],
1604
+ "outputs": [
1605
+ "Clickable mock gallery",
1606
+ "Buildable spec",
1607
+ "INVEST user stories",
1608
+ "GRASP responsibility matrix"
1609
+ ],
1610
+ "problem": "An idea is a doc. A working feature is code. The gap in between is where projects stall.",
1611
+ "value": "Turns an idea into a buildable plan — mock gallery and spec and INVEST stories. Ready for /build."
1612
+ },
1613
+ {
1614
+ "slug": "lean-canvas",
1615
+ "type": "skill",
1616
+ "path": ".claude/skills/lean-canvas/SKILL.md",
1617
+ "tier": "lite",
1618
+ "content_hash": "sha256:df18d2e623b80b1f9e480e2d9c8ebd05f86b9226cb72c5b2e08857e37d7cfe43",
1619
+ "description": "Produce a Lean Canvas — Ash Maurya's 9-box template — filled through persona lenses. Two modes: commercial (revenue in dollars) and growth-loop (audience plus credibility). Outputs the riskiest assumption to validate next.",
1620
+ "inputs": [
1621
+ "Personas file",
1622
+ "Value proposition data",
1623
+ "A rough product idea"
1624
+ ],
1625
+ "outputs": [
1626
+ "Lean Canvas 9-box filled",
1627
+ "Problem and solution named per persona"
1628
+ ],
1629
+ "problem": "New products get built without naming the customer or the problem or the unfair advantage.",
1630
+ "value": "Ash Maurya's 9-box canvas filled through persona work. One page names the business."
1631
+ },
1632
+ {
1633
+ "slug": "longrun",
1634
+ "type": "skill",
1635
+ "path": ".claude/skills/longrun/SKILL.md",
1636
+ "tier": "lite",
1637
+ "content_hash": "sha256:65c43c8b003cfe34787021a6c34c0b9686f4467269aed304cebba0b4cc1e5346",
1638
+ "description": "Run a long autonomous session that paces itself. Prepares scope. Checkpoints at phase boundaries. Closes with session log and retrospective. Three modes: prep, checkpoint, closeout.",
1639
+ "composes_with": [
1640
+ "value-prop",
1641
+ "kiss",
1642
+ "temperance",
1643
+ "luminary",
1644
+ "roadmap-reconcile",
1645
+ "retro",
1646
+ "promote",
1647
+ "session-end",
1648
+ "chronicle",
1649
+ "pattern-review"
1650
+ ],
1651
+ "inputs": [
1652
+ "prep or checkpoint or closeout mode plus scope hints"
1653
+ ],
1654
+ "outputs": [
1655
+ "Goal doc with time budget",
1656
+ "Checkpoint status at phase boundaries",
1657
+ "Session log at closeout"
1658
+ ],
1659
+ "problem": "Sessions over 50 turns drift. Context compacts and the goal disappears.",
1660
+ "value": "A long autonomous session that paces itself. Prep and checkpoint and closeout — clean state every wake."
1661
+ },
1662
+ {
1663
+ "slug": "luminary",
1664
+ "type": "skill",
1665
+ "path": ".claude/skills/luminary/SKILL.md",
1666
+ "tier": "lite",
1667
+ "content_hash": "sha256:b7399429963452f19e63cfc5cdef10ced8ebe15aedf005b3b41fbc58f10a5512",
1668
+ "description": "Browse and preview luminary files. Filter by discipline (ux, visual, architecture, product), by claiming agent (designer, architect), or preview a specific luminary by slug. Catalog analog to /skills.",
1669
+ "inputs": [
1670
+ "Optional discipline filter — ux or visual or architecture or product"
1671
+ ],
1672
+ "outputs": [
1673
+ "Ranked list of luminaries with signatures",
1674
+ "Preview body when queried by slug"
1675
+ ],
1676
+ "problem": "Design lenses live in files no one reads. Adopters pick generic patterns because they don't know the catalog.",
1677
+ "value": "A browser for the luminary catalog. Filter by discipline. Preview by slug before you pin one to a goal."
1678
+ },
1679
+ {
1680
+ "slug": "ogilvy-writing-audit",
1681
+ "type": "skill",
1682
+ "path": ".claude/skills/ogilvy-writing-audit/SKILL.md",
1683
+ "tier": "lite",
1684
+ "content_hash": "sha256:97ea7bf9dccd30a3ad157b34a1eeba778431f516e48e1b656bf21b4b4e1a885a",
1685
+ "description": "Audit prose against Ogilvy's 10 writing rules plus Roman-Raphaelson principles. Produces severity-tagged violations with fixes. Diagnoses; /kiss words fixes. Fires on 'audit this memo', 'review my writing', 'check this draft'.",
1686
+ "composes_with": [
1687
+ "kiss"
1688
+ ],
1689
+ "inputs": [
1690
+ "A file path or PR body or paragraph text"
1691
+ ],
1692
+ "outputs": [
1693
+ "Severity-tagged violation list",
1694
+ "Rewrite suggestions per finding"
1695
+ ],
1696
+ "problem": "Prose ships with jargon and long sentences and hedge words. Readers stop reading.",
1697
+ "value": "Ogilvy's ten rules applied to your prose. Severity-tagged findings that /kiss can fix."
1698
+ },
1699
+ {
1700
+ "slug": "onboard-repo",
1701
+ "type": "skill",
1702
+ "path": ".claude/skills/onboard-repo/SKILL.md",
1703
+ "tier": "lite",
1704
+ "content_hash": "sha256:daaa194480170f0b4745ee5c72d267413d8dc249e4ece2711672118553121667",
1705
+ "description": "Bootstrap the bassclef framework in a new repo. Installs the sync hook. Scaffolds config, whereami, and CLAUDE.md. Modes: default, --with-deploy-host, --with-secrets, --full, --greenfield-from-intent (cold-adopter magic demo).",
1706
+ "inputs": [
1707
+ "Optional flags — --with-deploy-host or --with-secrets or --full"
1708
+ ],
1709
+ "outputs": [
1710
+ "Installed bassclef-sync hook",
1711
+ "Config scaffold",
1712
+ "Whereami stub"
1713
+ ],
1714
+ "problem": "Setting up bassclef in a new repo takes an hour of trial. Missing directories and wrong hook wiring.",
1715
+ "value": "One command bootstraps everything — sync hook and config file and whereami scaffold."
1716
+ },
1717
+ {
1718
+ "slug": "pattern-review",
1719
+ "type": "skill",
1720
+ "path": ".claude/skills/pattern-review/SKILL.md",
1721
+ "tier": "lite",
1722
+ "content_hash": "sha256:de9793afcf7e575e22bab2bc97c7e42b5e1b065dd6c9e5395b56c6d9823cb7c4",
1723
+ "description": "Review code through the lens of world-class engineering patterns — GoF, Fowler, SOLID, DDD. Flag violations and suggest improvements. Complements /architect-review which is system-level.",
1724
+ "inputs": [
1725
+ "A file path or PR ref or code block"
1726
+ ],
1727
+ "outputs": [
1728
+ "Pattern gap list",
1729
+ "Misuse findings",
1730
+ "Suggested pattern per finding"
1731
+ ],
1732
+ "problem": "Code review catches style but misses architecture. A wrong pattern ships and blocks future work.",
1733
+ "value": "Review through the lens of GoF and Fowler and SOLID and DDD. Names the pattern gap or misuse."
1734
+ },
1735
+ {
1736
+ "slug": "personas",
1737
+ "type": "skill",
1738
+ "path": ".claude/skills/personas/SKILL.md",
1739
+ "tier": "lite",
1740
+ "content_hash": "sha256:c03a2e1235ef7774fa014aff0e3690e6c81224887c46c8bcf7690ce7a80b5e19",
1741
+ "description": "Load, list, and manage user personas — the bassclef WHO record. Downstream skills (value-prop-canvas, synthetic-user, user-stories, jtbd-tasks) read from its output. Defaults to operator when no personas exist.",
1742
+ "inputs": [
1743
+ "Manage command — list or add or edit or delete"
1744
+ ],
1745
+ "outputs": [
1746
+ "Persona list with names and jobs",
1747
+ "Loaded into session for downstream skills"
1748
+ ],
1749
+ "problem": "Product decisions get made for a nameless user. Downstream skills invent personas per session.",
1750
+ "value": "One record of the WHO the product serves. Every skill reads the same personas."
1751
+ },
1752
+ {
1753
+ "slug": "promote",
1754
+ "type": "skill",
1755
+ "path": ".claude/skills/promote/SKILL.md",
1756
+ "tier": "lite",
1757
+ "content_hash": "sha256:4ca532e4c28e5eca00820b545df210ad1f41b75aa5b8056e680bd0707ee9cc0b",
1758
+ "description": "Propose promoting a pattern to bassclef. Creates an issue in the current repo (not bassclef) with the bassclef-evolution label. Three modes cover default, luminary upgrade, and substrate defect.",
1759
+ "composes_with": [
1760
+ "state-a-problem",
1761
+ "kiss",
1762
+ "value-prop"
1763
+ ],
1764
+ "inputs": [
1765
+ "A pattern description or code snippet or discipline learned"
1766
+ ],
1767
+ "outputs": [
1768
+ "Promote ticket filed in current repo",
1769
+ "Cross-repo mirror in bassclef-upstream"
1770
+ ],
1771
+ "problem": "Good patterns in one adopter repo stay stuck there. Every other adopter reinvents the same wheel.",
1772
+ "value": "Files a promote ticket in the current repo plus bassclef-upstream. Substrate evolves with real usage."
1773
+ },
1774
+ {
1775
+ "slug": "requirement",
1776
+ "type": "skill",
1777
+ "path": ".claude/skills/requirement/SKILL.md",
1778
+ "tier": "lite",
1779
+ "content_hash": "sha256:8152a0bc081bb197b08525129b564cfb364faf5d36bb9587455bbe9031a1332c",
1780
+ "description": "Produce Cockburn use cases plus INVEST user stories for a feature in one pass. The writer produces formal use cases for a spec. The picker produces INVEST stories for a backlog. You get both from one operator input. Combines /use-case + /user-stories.",
1781
+ "composes_with": [
1782
+ "use-case",
1783
+ "user-stories",
1784
+ "personas"
1785
+ ],
1786
+ "inputs": [
1787
+ "A feature name or ticket ref"
1788
+ ],
1789
+ "outputs": [
1790
+ "Fully-dressed use cases",
1791
+ "INVEST user stories with acceptance criteria"
1792
+ ],
1793
+ "problem": "Features get built from a one-line ticket. Corners get cut. Acceptance drifts from what the persona needs.",
1794
+ "value": "Cockburn use cases plus INVEST user stories in one pass. Written for a writer-style adopter."
1795
+ },
1796
+ {
1797
+ "slug": "retro",
1798
+ "type": "skill",
1799
+ "path": ".claude/skills/retro/SKILL.md",
1800
+ "tier": "lite",
1801
+ "content_hash": "sha256:4a120be15c22cbeac57307a0c7f2748193676500219a422a8daf7cf0207b43a0",
1802
+ "description": "Reflect at session close. Names what worked, what didn't, and what to change next time. Feeds candidate follow-on tickets.",
1803
+ "inputs": [
1804
+ "Optional session or goal ref"
1805
+ ],
1806
+ "outputs": [
1807
+ "Kept and Changed and Learned sections",
1808
+ "Follow-on ticket candidates"
1809
+ ],
1810
+ "problem": "Sessions end and the lessons vanish. What worked and what broke — nowhere written.",
1811
+ "value": "A short retro that names what to keep and what to change next session."
1812
+ },
1813
+ {
1814
+ "slug": "riff",
1815
+ "type": "skill",
1816
+ "path": ".claude/skills/riff/SKILL.md",
1817
+ "tier": "lite",
1818
+ "content_hash": "sha256:e2a6a45f05df1e7cbc8138fbdcbc9ddf169aaf3b32fd5824b410912412fab0c4",
1819
+ "description": "Produce 2-3 clickable mock alternatives for a UI surface. Includes an Anthropic baseline. Each mock uses a different luminary lens. One picks a marketing variant. Another picks a build direction. Combines /interpret-input + /luminary + /stage + /visual-review.",
1820
+ "composes_with": [
1821
+ "interpret-input",
1822
+ "luminary",
1823
+ "visual-review"
1824
+ ],
1825
+ "inputs": [
1826
+ "A UI surface intent or design goal"
1827
+ ],
1828
+ "outputs": [
1829
+ "2-3 clickable mock variants",
1830
+ "Luminary lens per variant"
1831
+ ],
1832
+ "problem": "Design directions get one variant and no comparison. Operator picks blind. Rework is huge.",
1833
+ "value": "Two or three clickable mocks per UI surface. Each mock pins a different luminary lens."
1834
+ },
1835
+ {
1836
+ "slug": "roadmap-reconcile",
1837
+ "type": "skill",
1838
+ "path": ".claude/skills/roadmap-reconcile/SKILL.md",
1839
+ "tier": "lite",
1840
+ "content_hash": "sha256:6eaa8951d3c5f1cd5d4482b7c87fb62feb029b12d233ade1ef39d25a8054156a",
1841
+ "description": "Audit canvas LR-N tables and roadmap entries against recent chronicles, merged PRs, and freshly-filed tickets. Surface drift via --dry-run. Apply edits with --apply. Runs at /longrun prep and /sprint as pre-flight.",
1842
+ "inputs": [
1843
+ "Optional --dry-run or --apply flag",
1844
+ "Roadmap path or canvas ref"
1845
+ ],
1846
+ "outputs": [
1847
+ "Diff report of drift",
1848
+ "Applied edits when --apply",
1849
+ "Status per row"
1850
+ ],
1851
+ "problem": "Canvas roadmap tables get stale. Shipped work sits marked pending. Sequencing drifts from reality.",
1852
+ "value": "Diffs the roadmap against merged PRs plus fresh session logs. Applies edits so the canvas matches reality."
1853
+ },
1854
+ {
1855
+ "slug": "session-end",
1856
+ "type": "skill",
1857
+ "path": ".claude/skills/session-end/SKILL.md",
1858
+ "tier": "lite",
1859
+ "content_hash": "sha256:2b71c7f1d795e8b5360a42320329849b3c4ee2532797cb2628c392c8fea9191a",
1860
+ "description": "Close the session cleanly. Writes the session log, pushes artifacts, updates whereami. Run when the Stop hook fails or when you want to end deliberately. Three tiers of obligation: MUST, SHOULD, MAY.",
1861
+ "composes_with": [
1862
+ "chronicle",
1863
+ "whereami",
1864
+ "kiss",
1865
+ "journal",
1866
+ "retro",
1867
+ "clean-artifacts",
1868
+ "promote",
1869
+ "roadmap-reconcile"
1870
+ ],
1871
+ "inputs": [
1872
+ "Optional — run explicitly or fires from Stop hook"
1873
+ ],
1874
+ "outputs": [
1875
+ "Session log entry",
1876
+ "Whereami updated",
1877
+ "Push and tag when scoped",
1878
+ "Journal draft when notable"
1879
+ ],
1880
+ "problem": "Sessions end without writing state. Next session starts cold. Session logs missing.",
1881
+ "value": "Three tiers of close. Must-tier always runs local. Should-tier pushes if network is up."
1882
+ },
1883
+ {
1884
+ "slug": "session-log",
1885
+ "type": "skill",
1886
+ "path": ".claude/skills/session-log/SKILL.md",
1887
+ "tier": "lite",
1888
+ "content_hash": "sha256:7e988e3d209239fe6c057ae0f62bd424b3f0e76bd98dd8d0d196892b65628602",
1889
+ "description": "Write the session's log entry — what shipped, what was decided, what's still open. Reads the day's commits and conversation. Outputs a markdown entry with gates fired, sources read, and discoveries surfaced. Renamed from /chronicle.",
1890
+ "composes_with": [
1891
+ "kiss",
1892
+ "promote",
1893
+ "retro"
1894
+ ],
1895
+ "inputs": [
1896
+ "Optional Gate Evidence auto-populate flag"
1897
+ ],
1898
+ "outputs": [
1899
+ "Session log entry at chronicle/*",
1900
+ "Gate Evidence table populated"
1901
+ ],
1902
+ "problem": "Session logs get lost between mid-session interrupts and Stop hook races. Next session has no memory.",
1903
+ "value": "One log entry that names what shipped and what was decided and what's still open."
1904
+ },
1905
+ {
1906
+ "slug": "skills",
1907
+ "type": "skill",
1908
+ "path": ".claude/skills/skills/SKILL.md",
1909
+ "tier": "lite",
1910
+ "content_hash": "sha256:6472c85a85872e3f49866e36fa342a214944f98e200605d4b1443e80f917379c",
1911
+ "description": "Browse the skill catalog live. Every skill grouped by discovery cluster with descriptions, modes, and key chains. Reads SKILL.md frontmatter directly so the catalog explains itself.",
1912
+ "inputs": [
1913
+ "Optional filter — cluster name or phase or keyword"
1914
+ ],
1915
+ "outputs": [
1916
+ "Skills grouped by cluster",
1917
+ "Description per skill",
1918
+ "Tier tag per skill"
1919
+ ],
1920
+ "problem": "Bassclef ships around 99 skills. Adopters don't know which one fits their moment.",
1921
+ "value": "The catalog live. Every skill grouped by discovery cluster. Descriptions optimized for scan."
1922
+ },
1923
+ {
1924
+ "slug": "spec",
1925
+ "type": "skill",
1926
+ "path": ".claude/skills/spec/SKILL.md",
1927
+ "tier": "lite",
1928
+ "content_hash": "sha256:270434f4df108dda39b147e608813112605a6fa14cafb84a9a0ff036398cec3f",
1929
+ "description": "Turn a canvas or issue into a structured spec. Names the What, the Why, and the acceptance list. Downstream skills read the spec as source-of-truth.",
1930
+ "inputs": [
1931
+ "A canvas path or issue ref or scope description"
1932
+ ],
1933
+ "outputs": [
1934
+ "Spec doc at specs/YYYY-MM-DD-slug.md",
1935
+ "Acceptance list",
1936
+ "Reference block"
1937
+ ],
1938
+ "problem": "Canvases sketch a product. Tickets ask for features. The bridge to code doesn't exist.",
1939
+ "value": "One spec that names the What and the Why and the acceptance list. Downstream skills read it."
1940
+ },
1941
+ {
1942
+ "slug": "sprint",
1943
+ "type": "skill",
1944
+ "path": ".claude/skills/sprint/SKILL.md",
1945
+ "tier": "lite",
1946
+ "content_hash": "sha256:01f4217fc9a43008aad80727e45c64a37cbf536685781391473d4ba6397b06ed",
1947
+ "description": "Show what's in flight and what's next. Reads project state, open issues, and the active goal. Proposes the next sprint at thread level, not just the nearest leaf. Run at session start.",
1948
+ "composes_with": [
1949
+ "value-prop",
1950
+ "kiss",
1951
+ "roadmap-reconcile"
1952
+ ],
1953
+ "inputs": [
1954
+ "Optional focus flag"
1955
+ ],
1956
+ "outputs": [
1957
+ "In-flight goals plus PRs",
1958
+ "Next-work proposals",
1959
+ "Blocked items surfaced"
1960
+ ],
1961
+ "problem": "Session-start orientation takes a full read of git log and whereami and open PRs. Slow.",
1962
+ "value": "One glance at what's in flight and what's next and what's blocked. Reads project state once."
1963
+ },
1964
+ {
1965
+ "slug": "stage",
1966
+ "type": "skill",
1967
+ "path": ".claude/skills/stage/SKILL.md",
1968
+ "tier": "lite",
1969
+ "content_hash": "sha256:be5f141f808d704c172bb4cd59cefe7e34c1e120a54690983a2f0169b1cec978",
1970
+ "description": "Turn an idea into clickable mock variants on a deployed subdomain. Two sizes: quick (~30 min, 2 variants) and light (~2h, 3 variants plus an Anthropic baseline). Operator picks a direction from phone before committing to build work.",
1971
+ "inputs": [
1972
+ "A UI intent or design goal",
1973
+ "Optional size — quick or light"
1974
+ ],
1975
+ "outputs": [
1976
+ "Deployed mock at a subdomain URL",
1977
+ "Multiple variants to compare"
1978
+ ],
1979
+ "problem": "A UI idea needs to be seen before it can be judged. Prose and wireframes lose the story.",
1980
+ "value": "Turns an idea into clickable mocks on a deployed subdomain. Operator taps through and picks."
1981
+ },
1982
+ {
1983
+ "slug": "state-a-problem",
1984
+ "type": "skill",
1985
+ "path": ".claude/skills/state-a-problem/SKILL.md",
1986
+ "tier": "lite",
1987
+ "content_hash": "sha256:47c14fab6014b82dfa82183a83cbff37005db75f2a436cdb57266b89ba7c5736",
1988
+ "description": "Draft a problem statement for a PR, issue, canvas, or spec. Two sizes: brief (\\u2264500 chars, opener, framework implicit) and para (\\u22641200 chars, 5-block Who/What/When/Why-now/Outcome template). Runs /kiss --grade8 inline by default.",
1989
+ "composes_with": [
1990
+ "kiss",
1991
+ "value-prop"
1992
+ ],
1993
+ "inputs": [
1994
+ "A ticket ref or doc path or scope description",
1995
+ "Optional size — brief or para"
1996
+ ],
1997
+ "outputs": [
1998
+ "A problem statement that leads with user pain"
1999
+ ],
2000
+ "problem": "PR bodies and issue bodies open with framing that hides the user pain. Readers scroll past.",
2001
+ "value": "One statement that leads with who hurts and what breaks and why fix it now. Ready to paste."
2002
+ },
2003
+ {
2004
+ "slug": "temperance",
2005
+ "type": "skill",
2006
+ "path": ".claude/skills/temperance/SKILL.md",
2007
+ "tier": "lite",
2008
+ "content_hash": "sha256:3402ca1c510b0877688d0e4a2151214d8b6ef5567d787de15687651a90b1c92c",
2009
+ "description": "Pause and think before you code. Asks — am I building the right thing AND building it the right way? Fires before every non-trivial action.",
2010
+ "inputs": [
2011
+ "Optional scope decision context"
2012
+ ],
2013
+ "outputs": [
2014
+ "Right-thing answer",
2015
+ "Right-way answer",
2016
+ "Drift trigger for future watch"
2017
+ ],
2018
+ "problem": "Sessions dive into edits before the operator asks whether it's the right work or the right shape.",
2019
+ "value": "A pause-and-think gate at every scope decision boundary. Six questions before code."
2020
+ },
2021
+ {
2022
+ "slug": "use-case",
2023
+ "type": "skill",
2024
+ "path": ".claude/skills/use-case/SKILL.md",
2025
+ "tier": "lite",
2026
+ "content_hash": "sha256:f181c284c49218429f9088652412f6f11822605d787c242b7e8105492d3fb3ef",
2027
+ "description": "Produce Cockburn-style use cases — main success scenario, numbered extensions, preconditions, postconditions, and stakeholders. Closes the gap between /user-stories and /spec. Distinct from /task-scenarios (UX narrative).",
2028
+ "inputs": [
2029
+ "A feature or persona-scoped scope"
2030
+ ],
2031
+ "outputs": [
2032
+ "Fully-dressed use case",
2033
+ "Main success scenario plus extensions",
2034
+ "Pre/postconditions"
2035
+ ],
2036
+ "problem": "Requirements go straight to code without a main success scenario. Extension paths get invented per PR.",
2037
+ "value": "Cockburn-style use cases with numbered extensions and pre/postcondition contracts."
2038
+ },
2039
+ {
2040
+ "slug": "user-stories",
2041
+ "type": "skill",
2042
+ "path": ".claude/skills/user-stories/SKILL.md",
2043
+ "tier": "lite",
2044
+ "content_hash": "sha256:00606f360a82bdeb5a454abdf3f8f36a2c250aa7fe3009ec2c6effa7d8680b02",
2045
+ "description": "Produce INVEST-shaped user stories that trace back to personas, JTBDs, and value-prop-canvas entries. Backlog-intake artifact for incremental delivery. Distinct from /task-scenarios (UX narrative) and /use-case (system behavior).",
2046
+ "inputs": [
2047
+ "A feature scope plus personas ref"
2048
+ ],
2049
+ "outputs": [
2050
+ "INVEST user stories per persona",
2051
+ "Acceptance criteria per story"
2052
+ ],
2053
+ "problem": "Stories get written from developer intent not persona need. INVEST shape drifts.",
2054
+ "value": "INVEST-shaped stories that trace back to personas and JTBDs and value prop."
2055
+ },
2056
+ {
2057
+ "slug": "value-prop",
2058
+ "type": "skill",
2059
+ "path": ".claude/skills/value-prop/SKILL.md",
2060
+ "tier": "lite",
2061
+ "content_hash": "sha256:2076942e47fd906a53e9069102535cf05b947c56118d8428b90957d294e9f316",
2062
+ "description": "Draft a value prop for a ticket, goal, or feature. Three sizes: tweet (\\u2264280 chars claim + sharpener), brief (claim + 3 reasons), verbose (full Dunford / Moore positioning). Pick the size that matches your audience attention.",
2063
+ "inputs": [
2064
+ "A ticket ref or doc path or scope description",
2065
+ "Optional size — tweet or brief or verbose"
2066
+ ],
2067
+ "outputs": [
2068
+ "Claim plus sharpener at chosen size",
2069
+ "Ready to paste as opener"
2070
+ ],
2071
+ "problem": "PR bodies and ticket bodies open with solution-framing. The reader has no reason to care.",
2072
+ "value": "One line that names claim plus sharpener. Three sizes — tweet and brief and verbose."
2073
+ },
2074
+ {
2075
+ "slug": "verify",
2076
+ "type": "skill",
2077
+ "path": ".claude/skills/verify/SKILL.md",
2078
+ "tier": "lite",
2079
+ "content_hash": "sha256:031886691ef69ba72110b918fe2b07af31ff7f51e2489eb3aba2c2372b609200",
2080
+ "description": "Verify post-build before committing. Matches change type to check list. Writes a marker the pre-commit hook reads. Runs after each task.",
2081
+ "inputs": [
2082
+ "Change type or scope hint"
2083
+ ],
2084
+ "outputs": [
2085
+ "Check results per gate",
2086
+ "Blocking findings",
2087
+ "Ready-to-commit signal"
2088
+ ],
2089
+ "problem": "Tests run but scope-drift and missed acceptance and ADR violations slip through.",
2090
+ "value": "Post-build gate that matches change type to check list. Runs before commit not after."
2091
+ },
2092
+ {
2093
+ "slug": "visual-review",
2094
+ "type": "skill",
2095
+ "path": ".claude/skills/visual-review/SKILL.md",
2096
+ "tier": "lite",
2097
+ "content_hash": "sha256:d9239fb8d5048ab21b58e4abd1fa675f1d5ed5fab70eed549613e58d4243bca7",
2098
+ "description": "Visual UX review — screenshot a rendered page and evaluate against design tokens, usability standard, and Creative Director / Designer luminaries. Requires Playwright MCP.",
2099
+ "inputs": [
2100
+ "Page URL and viewport"
2101
+ ],
2102
+ "outputs": [
2103
+ "Screenshot at each viewport",
2104
+ "Findings per usability rule",
2105
+ "Token alignment report"
2106
+ ],
2107
+ "problem": "Rendered pages ship with visual regressions. Design tokens drift from usability standards.",
2108
+ "value": "Visual UX review — screenshot a rendered page and evaluate against design tokens plus usability."
2109
+ },
2110
+ {
2111
+ "slug": "whats-the-plan",
2112
+ "type": "skill",
2113
+ "path": ".claude/skills/whats-the-plan/SKILL.md",
2114
+ "tier": "lite",
2115
+ "content_hash": "sha256:7094cd419af9972aa65f4ac55c0261e52405bd8ae4f152301ba255e49ab47e2e",
2116
+ "description": "Declare the chain of skills you intend to run for the current task or next stretch of work. Invokable at any natural response point. Composes with /temperance (scope) and /sprint (ticket-level) — dispatch-path level.",
2117
+ "inputs": [
2118
+ "Current task or scope description"
2119
+ ],
2120
+ "outputs": [
2121
+ "Ordered skill chain",
2122
+ "Rationale per step",
2123
+ "Alternative chains"
2124
+ ],
2125
+ "problem": "Multi-skill chains dispatch without declaring the plan. Operator can't audit mid-flight.",
2126
+ "value": "Declares the chain of skills you intend to run. Invokable before you start."
2127
+ },
2128
+ {
2129
+ "slug": "whereami",
2130
+ "type": "skill",
2131
+ "path": ".claude/skills/whereami/SKILL.md",
2132
+ "tier": "lite",
2133
+ "content_hash": "sha256:dd5ba20dbfbc2168a10d0b9b42ff85827423aad69192e5b8cede579b4d672315",
2134
+ "description": "Show project state in one glance — phase, active goal, agents in flight, subsystem progress, gate checklist, freshness. Reads docs/whereami.md. Run at session start before /sprint to orient.",
2135
+ "composes_with": [
2136
+ "sprint",
2137
+ "whats-the-plan"
2138
+ ],
2139
+ "inputs": [
2140
+ "Optional freshness flag"
2141
+ ],
2142
+ "outputs": [
2143
+ "Current phase and iteration",
2144
+ "Active agents",
2145
+ "Subsystem status",
2146
+ "Gate progress"
2147
+ ],
2148
+ "problem": "Project state lives across whereami and iteration goals and chronicles and git. No single-glance view.",
2149
+ "value": "Phase and active goal and agents in flight and gate progress — one page."
2150
+ },
2151
+ {
2152
+ "slug": "active-record",
2153
+ "type": "standard",
2154
+ "path": "standards/migration-discipline/active-record.md",
2155
+ "tier": "lite",
2156
+ "content_hash": "sha256:22c328a521d7ae0f604c7b9396f1d25b9bd63e899c4790a95e4a4a97e561720f",
2157
+ "description": "The ActiveRecord sibling of .claude/rules/schema-management.md."
2158
+ },
2159
+ {
2160
+ "slug": "alembic",
2161
+ "type": "standard",
2162
+ "path": "standards/migration-discipline/alembic.md",
2163
+ "tier": "lite",
2164
+ "content_hash": "sha256:ff624b11c3c3cea65c59ae6b3cbf5fb18963dcaaec737fe2411e19a586ce20ec",
2165
+ "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
+ },
2167
+ {
2168
+ "slug": "artifact-composition",
2169
+ "type": "standard",
2170
+ "path": "standards/artifact-composition.md",
2171
+ "tier": "lite",
2172
+ "content_hash": "sha256:20c76a356086524d01bd444b56c358b43cf60289f713c2c5bbf492e5f5292900",
2173
+ "description": "The substrate has three artifact classes that logically compose into a work-decomposition tree."
2174
+ },
2175
+ {
2176
+ "slug": "bash-hook-safety",
2177
+ "type": "standard",
2178
+ "path": "standards/bash-hook-safety.md",
2179
+ "tier": "lite",
2180
+ "content_hash": "sha256:03a09192fbaf92140034072ddbd09c2a5abc0c3a576d5287c70b980b7723088e",
2181
+ "description": "This standard codifies the defensive coding discipline for bassclef's bash hooks (.claude/hooks/.sh) + supporting bash scripts (scripts/.sh, lib/*.sh)."
2182
+ },
2183
+ {
2184
+ "slug": "bassclef-configs-schema",
2185
+ "type": "standard",
2186
+ "path": "standards/bassclef-configs-schema.md",
2187
+ "tier": "lite",
2188
+ "content_hash": "sha256:5d1027f5bc17154d4ba1c69580a8e273216de1a9d7efbf00295dcbf0fc8f399a",
2189
+ "description": ".claude/bassclef-configs.jsonc is the unified configuration discovery surface for bassclef adoption."
2190
+ },
2191
+ {
2192
+ "slug": "bassclef-evolution",
2193
+ "type": "standard",
2194
+ "path": "standards/bassclef-evolution.md",
2195
+ "tier": "lite",
2196
+ "content_hash": "sha256:5a23fffc878db6509d20d5f7f17fc59a5892566dba54055fba3d8f76f02b3ab3",
2197
+ "description": "Bassclef evolves from three sources. Each source has a defined path to promotion. No standard enters bassclef without review."
2198
+ },
2199
+ {
2200
+ "slug": "bassclef-internal-jargon",
2201
+ "type": "standard",
2202
+ "path": "standards/bassclef-internal-jargon.md",
2203
+ "tier": "lite",
2204
+ "content_hash": "sha256:d300080f00eeb15f337e91037af4ab84e2fc556d0fe19e4f8c5e667ba8bc811c",
2205
+ "description": "This is the one list of bassclef-internal jargon terms with plain-English alternatives."
2206
+ },
2207
+ {
2208
+ "slug": "bassclef-managed-sentinel",
2209
+ "type": "standard",
2210
+ "path": "standards/bassclef-managed-sentinel.md",
2211
+ "tier": "lite",
2212
+ "content_hash": "sha256:9f0865679f5708323dd0009cf2c6cab18f1200a1e37a3672d29af949f8d6fc13",
2213
+ "description": "The .bassclef-managed sentinel marks a directory as bassclef-managed content."
2214
+ },
2215
+ {
2216
+ "slug": "bassclef-source-config",
2217
+ "type": "standard",
2218
+ "path": "standards/bassclef-source-config.md",
2219
+ "tier": "lite",
2220
+ "content_hash": "sha256:406b845be8898f00286b41d2511d95a44debcf6a0bb98e28389e77b18073ad86",
2221
+ "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
+ },
2223
+ {
2224
+ "slug": "branch-stacking",
2225
+ "type": "standard",
2226
+ "path": "standards/branch-stacking.md",
2227
+ "tier": "lite",
2228
+ "content_hash": "sha256:8c1ea15be632e969252b7206b99e57615b471541bc6994d8e5cb99725780cb91",
2229
+ "description": "Stacked atomic branches are the default for any iteration with N≥2 issues."
2230
+ },
2231
+ {
2232
+ "slug": "cargo",
2233
+ "type": "standard",
2234
+ "path": "standards/dependency-discipline/cargo.md",
2235
+ "tier": "lite",
2236
+ "content_hash": "sha256:797efaca51ae644760ad1329ef76b56037556aaac981fe36ff945263f737e98b",
2237
+ "description": "The Rust package-manager sibling of .claude/rules/new-dependency-check.md."
2238
+ },
2239
+ {
2240
+ "slug": "code-safety-principles",
2241
+ "type": "standard",
2242
+ "path": "standards/code-safety-principles.md",
2243
+ "tier": "lite",
2244
+ "content_hash": "sha256:4fb4c317e247fd64e1451a6fc65f198b30373fa38105271700ae4b09642d5163",
2245
+ "description": "This standard codifies language-agnostic principles for writing safer code across bassclef's supported stacks (TypeScript, Python, Ruby, Java, Go, bash)."
2246
+ },
2247
+ {
2248
+ "slug": "composer-prerequisites",
2249
+ "type": "standard",
2250
+ "path": "standards/composer-prerequisites.md",
2251
+ "tier": "lite",
2252
+ "content_hash": "sha256:437843edc90bf8c1f6f9a115361ea860a33d2cf80a130b35dd24d006df721faf",
2253
+ "description": "Composer skills (/preview-build, /build, /shape full, future multi-skill chains) require certain prerequisites to dispatch safely."
2254
+ },
2255
+ {
2256
+ "slug": "deferred-actions-schema",
2257
+ "type": "standard",
2258
+ "path": "standards/deferred-actions-schema.md",
2259
+ "tier": "lite",
2260
+ "content_hash": "sha256:77f24a1bd51a09e3c73c02e06af0fb07abc031e987568ef1a03b2f775339e859",
2261
+ "description": "Standard for docs/deferred-actions/*.md entries — the capability-routed handoff primitive that carries deferred work across session modalities."
2262
+ },
2263
+ {
2264
+ "slug": "deployment-topology",
2265
+ "type": "standard",
2266
+ "path": "standards/deployment-topology.md",
2267
+ "tier": "lite",
2268
+ "content_hash": "sha256:a295ed93bef05b5473c42851f347e0572dc4083cd52ba08bc78fa829faf4f207",
2269
+ "description": "Document the deployment target your project actually uses, so substrate-side hooks + rules + skills load the right per-platform siblings via the loader (future ticket) reading tech_stack.deploy from .claude/bassclef-configs.jsonc."
2270
+ },
2271
+ {
2272
+ "slug": "docs-sync-allowlist",
2273
+ "type": "standard",
2274
+ "path": "standards/docs-sync-allowlist.md",
2275
+ "tier": "lite",
2276
+ "content_hash": "sha256:8ff55ce66a79c43ad8e75ea8c791fe57017ed4cf56f5c31c6f79ca2ac17c88e2",
2277
+ "description": "Files whose change triggers bassclef-docs-sync.yml."
2278
+ },
2279
+ {
2280
+ "slug": "domain-and-dns",
2281
+ "type": "standard",
2282
+ "path": "standards/domain-and-dns.md",
2283
+ "tier": "lite",
2284
+ "content_hash": "sha256:12ff27f4c46a10823f2a885ef27dd1359c40bc117a1203da002b889eee7b549e",
2285
+ "description": "- .claude/skills/bind-subdomain/SKILL.md — operationalizes this standard - scripts/bind-subdomain.sh + scripts/adapters/* — the implementation - standards/substrate-config-schema.md — field conventions used by the script -…"
2286
+ },
2287
+ {
2288
+ "slug": "ec2-tailscale",
2289
+ "type": "standard",
2290
+ "path": "standards/deployment-topology/ec2-tailscale.md",
2291
+ "tier": "lite",
2292
+ "content_hash": "sha256:2daa9f1a21612f8c8c4a8e22f6132cb2899757c9508a6a8c9316dba6f5e316da",
2293
+ "description": "The operator's reference deployment. Stack-specific instantiation of standards/deployment-topology.md for adopters who pick the same target."
2294
+ },
2295
+ {
2296
+ "slug": "frontend-stack",
2297
+ "type": "standard",
2298
+ "path": "standards/frontend-stack.md",
2299
+ "tier": "lite",
2300
+ "content_hash": "sha256:29798e30ebdb7991ca766a92d7e15e1e689b56f2965ebf49f8ae965f4f098ec3",
2301
+ "description": "Document the stack your project actually uses, so substrate-side hooks + rules + skills load the right per-stack siblings via the loader (future ticket) reading tech_stack from .claude/bassclef-configs.jsonc."
2302
+ },
2303
+ {
2304
+ "slug": "frontmatter-schema",
2305
+ "type": "standard",
2306
+ "path": "standards/frontmatter-schema.md",
2307
+ "tier": "lite",
2308
+ "content_hash": "sha256:2d1e06338d4f1991f56858705a8a9898c98c2a2d9a7ae1d1f1e20d5882b17453",
2309
+ "description": "Schema for the YAML frontmatter that opens substrate files — .claude/skills/<name>/SKILL.md and .claude/rules/<name>.md."
2310
+ },
2311
+ {
2312
+ "slug": "gem",
2313
+ "type": "standard",
2314
+ "path": "standards/dependency-discipline/gem.md",
2315
+ "tier": "lite",
2316
+ "content_hash": "sha256:1f70db87075da251640d253c92fc198b81937eff12f9a013b948c51acc0b51e1",
2317
+ "description": "The Ruby package-manager sibling of .claude/rules/new-dependency-check.md."
2318
+ },
2319
+ {
2320
+ "slug": "go-mod",
2321
+ "type": "standard",
2322
+ "path": "standards/dependency-discipline/go-mod.md",
2323
+ "tier": "lite",
2324
+ "content_hash": "sha256:93a94ea3a92075f9cd84a1fbe88dd8d2e7e83b0c27f8e1e1161e50435d6a8388",
2325
+ "description": "The Go package-manager sibling of .claude/rules/new-dependency-check.md."
2326
+ },
2327
+ {
2328
+ "slug": "gorm",
2329
+ "type": "standard",
2330
+ "path": "standards/migration-discipline/gorm.md",
2331
+ "tier": "lite",
2332
+ "content_hash": "sha256:e48d6d6e9e01a7306673c80e333242934074ab66e82438705710052cd12d9d79",
2333
+ "description": "The GORM (Go ORM) sibling of .claude/rules/schema-management.md."
2334
+ },
2335
+ {
2336
+ "slug": "graceful-exit",
2337
+ "type": "standard",
2338
+ "path": "standards/graceful-exit.md",
2339
+ "tier": "lite",
2340
+ "content_hash": "sha256:57b764759a55c7649fbd827fbfb00037c996d917097e9f1847da51831511db40",
2341
+ "description": "Defines how autonomous agent sessions save state, handle interruptions, and enable the next session to resume without data loss or ambiguity."
2342
+ },
2343
+ {
2344
+ "slug": "hook-idempotency",
2345
+ "type": "standard",
2346
+ "path": "standards/hook-idempotency.md",
2347
+ "tier": "lite",
2348
+ "content_hash": "sha256:003c862bade64c9064c1cf5ce7e28b71340ac5c43942327903fa09791f876710",
2349
+ "description": "Hooks must be idempotent. If a hook fails partway and reruns, it must not duplicate work, generate false warnings, or corrupt state."
2350
+ },
2351
+ {
2352
+ "slug": "hook-injection-discipline",
2353
+ "type": "standard",
2354
+ "path": "standards/hook-injection-discipline.md",
2355
+ "tier": "lite",
2356
+ "content_hash": "sha256:16d552a559f91bad6f4907b6a744c284d0c6e48fff9ee43166d03714a53e26b3",
2357
+ "description": "- ADR-035 (just shipped, 8632d15) — 9-surface hook taxonomy + block-vs-inject menu; this standard names the contract for the inject side - code.claude.com/docs/en/hooks (WebFetch 2026-06-27) — additionalContext injection JSON shape; 10K char limit…"
2358
+ },
2359
+ {
2360
+ "slug": "hook-install-class",
2361
+ "type": "standard",
2362
+ "path": "standards/hook-install-class.md",
2363
+ "tier": "lite",
2364
+ "content_hash": "sha256:037a70c219c26c994092e5e55bec1e66d1dcf02d01e9ec3ea219586b60fa5852",
2365
+ "description": "- ADR-035 — names the install-class declaration as a foundational invariant (# install-class: operator | project | dual header) - ADR-032 — adopter sync dispatcher architecture (operator-class hooks wired at $HOME; project-class hooks wired at…"
2366
+ },
2367
+ {
2368
+ "slug": "input-handler-interface",
2369
+ "type": "standard",
2370
+ "path": "standards/input-handler-interface.md",
2371
+ "tier": "lite",
2372
+ "content_hash": "sha256:63c43d55670e749724e12402d3cf5fa4ae3ddcb3fc798187e9c394071bdff4c9",
2373
+ "description": "The interface contract between operator inputs (text / URL / image / repo / transcript / napkin / mixed) and the cameo pipeline's extraction layer."
2374
+ },
2375
+ {
2376
+ "slug": "kiss-words",
2377
+ "type": "standard",
2378
+ "path": "standards/steering-hints/kiss-words.md",
2379
+ "tier": "lite",
2380
+ "content_hash": "sha256:7def4904aa055611914ce1128cfd8aae6974974823bf86fa41311b2f6e424825",
2381
+ "description": "Write at grade 8. Cap grade 10. Short sentences. Subject-verb-object. Drop bassclef-only words per standards/bassclef-internal-jargon.md. Keep standard tech words (API, hook, PR, schema)."
2382
+ },
2383
+ {
2384
+ "slug": "lite",
2385
+ "type": "standard",
2386
+ "path": "standards/tier-runtime-deps/lite.md",
2387
+ "tier": "lite",
2388
+ "content_hash": "sha256:376ae592dc5bf9db06999a98a3fffc7779d2f1deca150fb104a7cbd063a23fa3",
2389
+ "description": "Per standards/tier-dependency-analysis.md Source 3."
2390
+ },
2391
+ {
2392
+ "slug": "lite-manifest-schema-changes",
2393
+ "type": "standard",
2394
+ "path": "standards/lite-manifest-schema-changes.md",
2395
+ "tier": "lite",
2396
+ "content_hash": "sha256:a464a2c08db0b4cd6866e68e2518d74ff26332167f24833c4f47dc229ec39180",
2397
+ "description": "Chronological ledger of every lite-manifest schema change. Adopters read this before sync to know what shifted."
2398
+ },
2399
+ {
2400
+ "slug": "luminary-matching",
2401
+ "type": "standard",
2402
+ "path": "standards/luminary-matching.md",
2403
+ "tier": "lite",
2404
+ "content_hash": "sha256:a85c58c641a6e2b920c1018c3eb4394b7bce9c6f48ec485c700a0907121bdba9",
2405
+ "description": "Bassclef core picks luminaries for variant generation via a single LLM call to the configured model provider."
2406
+ },
2407
+ {
2408
+ "slug": "luminary-problem-patterns",
2409
+ "type": "standard",
2410
+ "path": "standards/luminary-problem-patterns.md",
2411
+ "tier": "lite",
2412
+ "content_hash": "sha256:5de157922db7cf41b2edf29e8eb3dd4b13ff3cc97b20285e418343904ef39208",
2413
+ "description": "Auto-generated. Do not hand-edit. Re-run via: bash scripts/luminary-problem-patterns-aggregate.sh"
2414
+ },
2415
+ {
2416
+ "slug": "mobile-ephemeral-session",
2417
+ "type": "standard",
2418
+ "path": "standards/mobile-ephemeral-session.md",
2419
+ "tier": "lite",
2420
+ "content_hash": "sha256:167a67574cacc8ae02e7bc5117d3b12b92ccff82fa52280fcc0497560eb2d9c8",
2421
+ "description": "Autonomous sessions running in ephemeral environments — claude.ai/code mobile sandbox, CI runners executing agentic work, temporary dev containers — have different state-continuity constraints than desktop sessions."
2422
+ },
2423
+ {
2424
+ "slug": "model-routing-discipline",
2425
+ "type": "standard",
2426
+ "path": "standards/model-routing-discipline.md",
2427
+ "tier": "lite",
2428
+ "content_hash": "sha256:a6d628d4a0499d48e2372ab977ca35a5b512dd954806c00dafff134da8ea7897",
2429
+ "description": "- ADR-021 — anchor catalog selection (cameo engine model context, now operator-internal) - bassclef#853 Sub-bet 16 + Sub-bet 19 — model routing substrate primitive - bassclef#944 — Voyage matcher excision (operator-internal pinning moved to…"
2430
+ },
2431
+ {
2432
+ "slug": "nextjs",
2433
+ "type": "standard",
2434
+ "path": "standards/api-conventions/nextjs.md",
2435
+ "tier": "lite",
2436
+ "content_hash": "sha256:18b9d15d1b1436c61639eee1dc2cc069907e7ba5980f397924777a2f94690607",
2437
+ "description": "Stack-specific instantiation of .claude/rules/api-conventions.md for Next.js App Router."
2438
+ },
2439
+ {
2440
+ "slug": "npm",
2441
+ "type": "standard",
2442
+ "path": "standards/dependency-discipline/npm.md",
2443
+ "tier": "lite",
2444
+ "content_hash": "sha256:a2f59ba5043ecf6fc805f9e871742180707985c1d3bdbeb9978d4841b0489744",
2445
+ "description": "The Node.js package-manager sibling of .claude/rules/new-dependency-check.md."
2446
+ },
2447
+ {
2448
+ "slug": "ogilvy-writing-rules",
2449
+ "type": "standard",
2450
+ "path": "standards/ogilvy-writing-rules.md",
2451
+ "tier": "lite",
2452
+ "content_hash": "sha256:b0a0c6dfeef989bf6a9ce4b97b715c09652794413def699233297faca2b47f01",
2453
+ "description": "This standard holds the 10 rules bassclef's writing-craft discipline references."
2454
+ },
2455
+ {
2456
+ "slug": "opener-discipline",
2457
+ "type": "standard",
2458
+ "path": "standards/opener-discipline.md",
2459
+ "tier": "lite",
2460
+ "content_hash": "sha256:158e771361178f07991c0d52222856c4ce1226e8bc8177e734356666a5f87dd7",
2461
+ "description": "Every planning-surface opener carries three blocks in this order — Problem, Value prop, Evidence."
2462
+ },
2463
+ {
2464
+ "slug": "operator-facing-prose-discipline",
2465
+ "type": "standard",
2466
+ "path": "standards/operator-facing-prose-discipline.md",
2467
+ "tier": "lite",
2468
+ "content_hash": "sha256:d474018a4058b6ac94e618a8f0833ad0007311e151a2d8c9385c1ea7f0b83c17",
2469
+ "description": "Universal principle: any shorthand in operator-facing prose carries a plain-language gloss at first mention per response."
2470
+ },
2471
+ {
2472
+ "slug": "persona-schema",
2473
+ "type": "standard",
2474
+ "path": "standards/persona-schema.md",
2475
+ "tier": "lite",
2476
+ "content_hash": "sha256:b1d6a4c513cae58698c6b8281f76178c100103d48f1ef7216bf0883f5ad05535",
2477
+ "description": "Bassclef schema for user personas in sunj-labs repos."
2478
+ },
2479
+ {
2480
+ "slug": "pip",
2481
+ "type": "standard",
2482
+ "path": "standards/dependency-discipline/pip.md",
2483
+ "tier": "lite",
2484
+ "content_hash": "sha256:2b3e76cb0d169ffc31c27c66d103ada428c7fb9aa289c5e891734ac173c566ff",
2485
+ "description": "The Python package-manager sibling of .claude/rules/new-dependency-check.md."
2486
+ },
2487
+ {
2488
+ "slug": "pluggable-luminaries",
2489
+ "type": "standard",
2490
+ "path": "standards/pluggable-luminaries.md",
2491
+ "tier": "lite",
2492
+ "content_hash": "sha256:fcb9b3b6655529b91abdf0a2bc4dc80ea704df8fed81d5cfe82ef6b21f1c61b7",
2493
+ "description": "Each agent in bassclef has a default set of luminaries — thinkers whose principles guide its decisions."
2494
+ },
2495
+ {
2496
+ "slug": "pr-body-discipline",
2497
+ "type": "standard",
2498
+ "path": "standards/pr-body-discipline.md",
2499
+ "tier": "lite",
2500
+ "content_hash": "sha256:757d277c5343fd33ca45da4b9f8f1e6472eba0ab1913ebd7ff48eb44b9584412",
2501
+ "description": "PR bodies are public substrate. When bassclef (and bassclef) ship public, PR bodies become permanent public history visible to every adopter, contributor, and reader who follows a commit back to its PR. This standard documents the scrub discipline…"
2502
+ },
2503
+ {
2504
+ "slug": "preview-state-schema",
2505
+ "type": "standard",
2506
+ "path": "standards/preview-state-schema.md",
2507
+ "tier": "lite",
2508
+ "content_hash": "sha256:e312cbeb541a50ac135f095c69e32f231b3838d24e6485c5f16a46ea0b2890eb",
2509
+ "description": "docs/preview-state/<slug>.yml is the session-spanning state file for each /preview cycle."
2510
+ },
2511
+ {
2512
+ "slug": "prisma",
2513
+ "type": "standard",
2514
+ "path": "standards/migration-discipline/prisma.md",
2515
+ "tier": "lite",
2516
+ "content_hash": "sha256:6418f2d14a1cabc3892a0f2322122d95e8ae8689a4fddc9c4d08afa85320eb14",
2517
+ "description": "The Prisma sibling of .claude/rules/schema-management.md."
2518
+ },
2519
+ {
2520
+ "slug": "project-directory-layout",
2521
+ "type": "standard",
2522
+ "path": "standards/project-directory-layout.md",
2523
+ "tier": "lite",
2524
+ "content_hash": "sha256:fec13744cd05f15144f313fe284c1d471be755bceb2b94e476e0629ffe231c50",
2525
+ "description": "Standard directory structure for sunj-labs repositories."
2526
+ },
2527
+ {
2528
+ "slug": "release-tagging",
2529
+ "type": "standard",
2530
+ "path": "standards/release-tagging.md",
2531
+ "tier": "lite",
2532
+ "content_hash": "sha256:02d26ec55708de37cf5993c0a26a2843cf68c4f5a6c0e0001382dcaec8a32bf2",
2533
+ "description": "Every release of bassclef carries a semantic version tag."
2534
+ },
2535
+ {
2536
+ "slug": "reserved-skill-names",
2537
+ "type": "standard",
2538
+ "path": "standards/reserved-skill-names.md",
2539
+ "tier": "lite",
2540
+ "content_hash": "sha256:fefea98cec3376b9bc33695b8193138d32d06493a958eb7c580c41ff767879ab",
2541
+ "description": "Bassclef MUST NOT create a skill with a name that Claude Code (the harness) already claims."
2542
+ },
2543
+ {
2544
+ "slug": "scannable-multi-option-output",
2545
+ "type": "standard",
2546
+ "path": "standards/scannable-multi-option-output.md",
2547
+ "tier": "lite",
2548
+ "content_hash": "sha256:fdda63554877912112412d71915d11ce3b734c75050119666231439afe418961",
2549
+ "description": "Design principles for skills that render multi-option choice surfaces (e.g."
2550
+ },
2551
+ {
2552
+ "slug": "sdlc-compliance",
2553
+ "type": "standard",
2554
+ "path": "standards/sdlc-compliance.md",
2555
+ "tier": "lite",
2556
+ "content_hash": "sha256:a33d198a8a1e1225345f3b775f98ce8e55dc20fa7db5d3f558bf2024355af613",
2557
+ "description": "Defines how gate evidence is captured, where it lives, and how it's queried."
2558
+ },
2559
+ {
2560
+ "slug": "secrets-lifecycle",
2561
+ "type": "standard",
2562
+ "path": "standards/secrets-lifecycle.md",
2563
+ "tier": "lite",
2564
+ "content_hash": "sha256:9ce8862a12edbda6dfef2246bd19a43fbd8e469958883ca9ab57dbef91f0468c",
2565
+ "description": "substrate.secrets.md is the single declarative source for secrets/token lifecycle in any bassclef-substrate repo."
2566
+ },
2567
+ {
2568
+ "slug": "security-scanner-adapter",
2569
+ "type": "standard",
2570
+ "path": "standards/security-scanner-adapter.md",
2571
+ "tier": "lite",
2572
+ "content_hash": "sha256:e78ab13fdfe3a654365e7c48bbeb2c759238073485a8392fb9794ddaae12ca16",
2573
+ "description": "The adapter pattern that turns bassclef's per-language security defaults into adopter-runnable CI."
2574
+ },
2575
+ {
2576
+ "slug": "session-board",
2577
+ "type": "standard",
2578
+ "path": "standards/session-board.md",
2579
+ "tier": "lite",
2580
+ "content_hash": "sha256:eb3ef832175ed745c412ca42f9ad854d0a298b828e647706547dcded15e2e32a",
2581
+ "description": "The session-board is a session-level coordinator artifact for multi-bet longrun sessions."
2582
+ },
2583
+ {
2584
+ "slug": "skill-output-discipline",
2585
+ "type": "standard",
2586
+ "path": "standards/skill-output-discipline.md",
2587
+ "tier": "lite",
2588
+ "content_hash": "sha256:0d495470ee3c5b3712e5a8ff258de7c029fad5af5328c6efb34f2ff7321a4d89",
2589
+ "description": "Every skill that returns operator-facing prose runs /kiss words --rewrite on the full output before returning."
2590
+ },
2591
+ {
2592
+ "slug": "sqlalchemy",
2593
+ "type": "standard",
2594
+ "path": "standards/migration-discipline/sqlalchemy.md",
2595
+ "tier": "lite",
2596
+ "content_hash": "sha256:709758949bd2dd844b4f59b0fa98d4356e13827c4a7b7f2758287cf8a9d9ceca",
2597
+ "description": "The SQLAlchemy sibling of .claude/rules/schema-management.md."
2598
+ },
2599
+ {
2600
+ "slug": "state-spine",
2601
+ "type": "standard",
2602
+ "path": "standards/state-spine.md",
2603
+ "tier": "lite",
2604
+ "content_hash": "sha256:a3bccef9419e73b896bbf7dec3512530dd181654aae8769e255e90f3cfc682c0",
2605
+ "description": "Schema'd JSON state spine for bassclef's substrate."
2606
+ },
2607
+ {
2608
+ "slug": "state-spine-contract",
2609
+ "type": "standard",
2610
+ "path": "standards/state-spine-contract.md",
2611
+ "tier": "lite",
2612
+ "content_hash": "sha256:90207f681fac7c552c141fecff4aba4167d54a837186998d2d4731dc2703491e",
2613
+ "description": "The interface contract for lib/state.sh — the typed accessor library over bassclef's state spine."
2614
+ },
2615
+ {
2616
+ "slug": "substrate-config-schema",
2617
+ "type": "standard",
2618
+ "path": "standards/substrate-config-schema.md",
2619
+ "tier": "lite",
2620
+ "content_hash": "sha256:94931a2f1f0e08f4381ddbc464ecd1578170f832a41d263a42f67ac0dfafee48",
2621
+ "description": "substrate.config.md is the single source of truth for external resource references in any bassclef-substrate repo."
2622
+ },
2623
+ {
2624
+ "slug": "tech-stack-config",
2625
+ "type": "standard",
2626
+ "path": "standards/tech-stack-config.md",
2627
+ "tier": "lite",
2628
+ "content_hash": "sha256:5822c04b98cf9ad4137b704a3b10b4798c6bcb04ddcf014bbea1049853d35138",
2629
+ "description": "The tech_stack: block inside .claude/bassclef-configs.jsonc declares the adopter's primary tech stack."
2630
+ },
2631
+ {
2632
+ "slug": "template",
2633
+ "type": "standard",
2634
+ "path": "standards/adr-template.md",
2635
+ "tier": "lite",
2636
+ "content_hash": "sha256:d2b0502b242882ab9702b9fcbc9c977a964904b8afcf3d9bd2b0103a736c673f"
2637
+ },
2638
+ {
2639
+ "slug": "tier-dependency-analysis",
2640
+ "type": "standard",
2641
+ "path": "standards/tier-dependency-analysis.md",
2642
+ "tier": "lite",
2643
+ "content_hash": "sha256:41dee952572446c156b55bcebb93f751f2d1c260d22f5683933acc708883e65d",
2644
+ "description": "Reference doc for the tier-dependency-audit subsystem."
2645
+ },
2646
+ {
2647
+ "slug": "tier-tag-schema",
2648
+ "type": "standard",
2649
+ "path": "standards/tier-tag-schema.md",
2650
+ "tier": "lite",
2651
+ "content_hash": "sha256:588bdbf155ad85f29e982ce3ade69673ee24b4389b7e4055782cb41cfd8d4a2f",
2652
+ "description": "Per-file maturity-signal field that governs flow from bassclef-upstream (upstream experimental) → bassclef (public hardened release mirror)."
2653
+ },
2654
+ {
2655
+ "slug": "two-layer-config",
2656
+ "type": "standard",
2657
+ "path": "standards/two-layer-config.md",
2658
+ "tier": "lite",
2659
+ "content_hash": "sha256:a15dd3d6fdc1d6b40a04736715e5dc82ee90bf7f67ae15fb9d078e2e2cc0a7a0",
2660
+ "description": "Bassclef's config splits into two layers."
2661
+ },
2662
+ {
2663
+ "slug": "typescript",
2664
+ "type": "standard",
2665
+ "path": "standards/sdlc-gates/typescript.md",
2666
+ "tier": "lite",
2667
+ "content_hash": "sha256:09be3054c3b0941d8820f1e9ad1fddf3584dd28575dadcbd20076426748fcf95",
2668
+ "description": "Stack-specific instantiation of .claude/rules/sdlc-gates.md for TypeScript."
2669
+ },
2670
+ {
2671
+ "slug": "use-case-format",
2672
+ "type": "standard",
2673
+ "path": "standards/use-case-format.md",
2674
+ "tier": "lite",
2675
+ "content_hash": "sha256:8743b924277f196e1ece1221305c55403dde98c548412b796d2b62c4b46d869b",
2676
+ "description": "- Alistair Cockburn — Writing Effective Use Cases (2000)."
2677
+ },
2678
+ {
2679
+ "slug": "user-story-invest",
2680
+ "type": "standard",
2681
+ "path": "standards/user-story-invest.md",
2682
+ "tier": "lite",
2683
+ "content_hash": "sha256:ae9fe95371bf00cb22676dc7d368c836f4974b6f965b60de741d04d6f7627e73",
2684
+ "description": "Validation rules for user stories produced by /user-stories."
2685
+ },
2686
+ {
2687
+ "slug": "velocity-and-appetite",
2688
+ "type": "standard",
2689
+ "path": "standards/velocity-and-appetite.md",
2690
+ "tier": "lite",
2691
+ "content_hash": "sha256:9b05bd692eee86ab121e1f53e4401b055b8e52d964d6a6df72db73e42a6cfbc0",
2692
+ "description": "How work is estimated, measured, and calibrated in agent-driven SDLC."
2693
+ },
2694
+ {
2695
+ "slug": "voice-input-pattern",
2696
+ "type": "standard",
2697
+ "path": "standards/voice-input-pattern.md",
2698
+ "tier": "lite",
2699
+ "content_hash": "sha256:8e23724cd94b0d7539648f2621edfaf35c2f0a81fc76c3563b142b9ef624d30c",
2700
+ "description": "How bassclef handles voice as input to skill dispatches."
2701
+ },
2702
+ {
2703
+ "slug": "whereami-schema",
2704
+ "type": "standard",
2705
+ "path": "standards/whereami-schema.md",
2706
+ "tier": "lite",
2707
+ "content_hash": "sha256:e7f0aab23b635bde944c296f9b0d0ca734535464cb28373ca441031553229364",
2708
+ "description": "docs/whereami.md is the authoritative project-state snapshot in any bassclef-substrate repo."
2709
+ },
2710
+ {
2711
+ "slug": "worktree-management",
2712
+ "type": "standard",
2713
+ "path": "standards/worktree-management.md",
2714
+ "tier": "lite",
2715
+ "content_hash": "sha256:e276ed19d9f7a79e51ce234663539aa8a69d3812a5a925b5a66bbc1b7b159414",
2716
+ "description": "Defines the lifecycle for git worktrees in autonomous agent sessions."
2717
+ },
2718
+ {
2719
+ "slug": "writing-guide",
2720
+ "type": "standard",
2721
+ "path": "standards/writing-guide.md",
2722
+ "tier": "lite",
2723
+ "content_hash": "sha256:7878c3fb53691769f2597928f4b4cadee66d1121ff9254d187f41ee4ba54526d",
2724
+ "description": "Technical. Direct. For the next agent or session picking up the work."
2725
+ },
2726
+ {
2727
+ "slug": "chronicle-template",
2728
+ "type": "template",
2729
+ "path": "templates/chronicle-template.md",
2730
+ "tier": "lite",
2731
+ "content_hash": "sha256:233315697334dab6978a862170fdd1a8c64a859a348f708201c1d152493e8d4d"
2732
+ },
2733
+ {
2734
+ "slug": "deferred-action-template",
2735
+ "type": "template",
2736
+ "path": "templates/deferred-action-template.md",
2737
+ "tier": "lite",
2738
+ "content_hash": "sha256:e89142d26d733678d202853e9de6d924a5cd9fb24f7b1110a8c4b5d0100862ab"
2739
+ },
2740
+ {
2741
+ "slug": "memory-proposal-template",
2742
+ "type": "template",
2743
+ "path": "templates/memory-proposal-template.md",
2744
+ "tier": "lite",
2745
+ "content_hash": "sha256:4e398028c3cf91b5bfbb53cdb5926c7b9629fab6cc4ae68ad89fc0d09908b1dc"
2746
+ },
2747
+ {
2748
+ "slug": "persona-template",
2749
+ "type": "template",
2750
+ "path": "templates/persona-template.md",
2751
+ "tier": "lite",
2752
+ "content_hash": "sha256:5cd75bc077f2f91b4c9a05679983baf96507e6a994a39f009909534ead159873"
2753
+ },
2754
+ {
2755
+ "slug": "pr-faq",
2756
+ "type": "template",
2757
+ "path": "templates/pr-faq.md",
2758
+ "tier": "lite",
2759
+ "content_hash": "sha256:e57b8c2fddee70842b37024560866ca85c466e6684fb4cf6b3ee0cb976bff6d3"
2760
+ },
2761
+ {
2762
+ "slug": "secret-rotation-template",
2763
+ "type": "template",
2764
+ "path": "templates/secret-rotation-template.md",
2765
+ "tier": "lite",
2766
+ "content_hash": "sha256:a61e17882d1b1444dc142c828b7c94316c97d69364d3684cb726ec4d5c53cb22"
2767
+ },
2768
+ {
2769
+ "slug": "spec-template",
2770
+ "type": "template",
2771
+ "path": "templates/spec-template.md",
2772
+ "tier": "lite",
2773
+ "content_hash": "sha256:68f85e21426157461613b2fc55dd0e447b1d6d3940b41830dd3b23c7bc2f1365"
2774
+ },
2775
+ {
2776
+ "slug": "use-case-template",
2777
+ "type": "template",
2778
+ "path": "templates/use-case-template.md",
2779
+ "tier": "lite",
2780
+ "content_hash": "sha256:076a0d32600ba5745b5b8a2e1d277130c139a53f39d0f2d3138f3b60a7f608ac"
2781
+ },
2782
+ {
2783
+ "slug": "user-story-template",
2784
+ "type": "template",
2785
+ "path": "templates/user-story-template.md",
2786
+ "tier": "lite",
2787
+ "content_hash": "sha256:1067477c72618f7a4d9af8cc2eadc10fc3504f5fdbc0f82164ac97af07b585a6"
2788
+ },
2789
+ {
2790
+ "slug": "whereami-template",
2791
+ "type": "template",
2792
+ "path": "templates/whereami-template.md",
2793
+ "tier": "lite",
2794
+ "content_hash": "sha256:40578aac16ae0a0cfa3a91eb96d23c1fde11dcfdbd4034f7f8557dd3b8d74934"
2795
+ }
2796
+ ]
2797
+ }