@thebassclef/lite 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.cjs +2 -0
- package/dist/cli.js +2 -0
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/package.json +1 -1
- package/substrate/.bassclef/lite-manifest.json +999 -92
- package/substrate/.claude/hooks/longrun-prep-compounding-axis-check.sh +492 -0
- package/substrate/.claude/hooks/longrun-prep-compounding-sequence-check.sh +492 -0
- package/substrate/.claude/hooks/pre-commit-gate.sh +1 -2
- package/substrate/.claude/hooks/turn-prose-kiss-check.sh +30 -1
- package/substrate/.claude/luminaries/glenford-myers.md +230 -0
- package/substrate/.claude/luminaries/hunt-thomas.md +115 -0
- package/substrate/.claude/luminaries/hyrum-wright.md +94 -0
- package/substrate/.claude/luminaries/michael-feathers.md +2 -2
- package/substrate/.claude/luminaries/tony-hoare.md +170 -0
- package/substrate/.claude/luminaries/vaughn-vernon.md +50 -0
- package/substrate/.claude/luminaries/w-edwards-deming.md +158 -0
- package/substrate/.claude/rules/accessor-library-discipline.md +138 -0
- package/substrate/.claude/rules/adr-discipline.md +120 -0
- package/substrate/.claude/rules/api-conventions.md +125 -0
- package/substrate/.claude/rules/bootstrap-pair-discipline.md +141 -0
- package/substrate/.claude/rules/cold-adopter-harness-discipline.md +129 -0
- package/substrate/.claude/rules/compounding-axis-fresh-analysis.md +188 -0
- package/substrate/.claude/rules/compounding-sequence-fresh-analysis.md +188 -0
- package/substrate/.claude/rules/defensive-bash.md +68 -0
- package/substrate/.claude/rules/deferred-actions.md +233 -0
- package/substrate/.claude/rules/github-issue-flash-tweet.md +156 -0
- package/substrate/.claude/rules/hook-wire-on-author.md +103 -0
- package/substrate/.claude/rules/iteration-bet-brief-completeness.md +54 -0
- package/substrate/.claude/rules/lite-manifest-schema-change-discipline.md +3 -3
- package/substrate/.claude/rules/longrun-prep-plan-doc-compression.md +89 -0
- package/substrate/.claude/rules/loop-discipline.md +81 -0
- package/substrate/.claude/rules/manual-prod-approval.md +100 -0
- package/substrate/.claude/rules/marker-enrichment-discipline.md +99 -0
- package/substrate/.claude/rules/mobile-ephemeral-session.md +109 -0
- package/substrate/.claude/rules/new-dependency-check.md +51 -0
- package/substrate/.claude/rules/option-label-discipline.md +108 -0
- package/substrate/.claude/rules/pattern-annotation.md +100 -0
- package/substrate/.claude/rules/plain-english-discipline.md +11 -9
- package/substrate/.claude/rules/plan-enumeration-needs-value-props.md +211 -0
- package/substrate/.claude/rules/pr-title-shape.md +161 -0
- package/substrate/.claude/rules/prototype-workflow.md +65 -0
- package/substrate/.claude/rules/reserved-skill-names.md +123 -0
- package/substrate/.claude/rules/schema-management.md +49 -0
- package/substrate/.claude/rules/security.md +37 -0
- package/substrate/.claude/rules/skill-composition-declarations.md +124 -0
- package/substrate/.claude/rules/skill-description-clarity.md +247 -0
- package/substrate/.claude/rules/skill-procedure-step-list.md +137 -0
- package/substrate/.claude/rules/stuck-signal-diagnostic.md +140 -0
- package/substrate/.claude/rules/substrate-config-schema.md +98 -0
- package/substrate/.claude/rules/test-list-discipline.md +175 -0
- package/substrate/.claude/rules/test-sufficiency.md +210 -0
- package/substrate/.claude/rules/testing-tier-config.md +145 -0
- package/substrate/.claude/rules/testing.md +38 -0
- package/substrate/.claude/rules/turn-estimate-grounding.md +134 -0
- package/substrate/.claude/rules/visual-hierarchy.md +437 -0
- package/substrate/.claude/rules/we-dont-break-adopters.md +126 -0
- package/substrate/.claude/rules/wu-sequencing-compounds.md +145 -0
- package/substrate/.claude/skills/build/SKILL.md +1 -1
- package/substrate/.claude/skills/chronicle/SKILL.md +55 -0
- package/substrate/.claude/skills/clean-artifacts/SKILL.md +249 -0
- package/substrate/.claude/skills/decompose/SKILL.md +1 -1
- package/substrate/.claude/skills/diagnose/SKILL.md +1 -1
- package/substrate/.claude/skills/feynman/SKILL.md +90 -0
- package/substrate/.claude/skills/howdoi/SKILL.md +1 -1
- package/substrate/.claude/skills/ia-model/SKILL.md +1 -1
- package/substrate/.claude/skills/interaction-design/SKILL.md +1 -1
- package/substrate/.claude/skills/interpret-input/SKILL.md +8 -8
- package/substrate/.claude/skills/journal/SKILL.md +209 -0
- package/substrate/.claude/skills/kiss/SKILL.md +1 -1
- package/substrate/.claude/skills/launch/SKILL.md +14 -23
- package/substrate/.claude/skills/lean-canvas/SKILL.md +1 -1
- package/substrate/.claude/skills/longrun/SKILL.md +45 -8
- package/substrate/.claude/skills/luminary/SKILL.md +1 -1
- package/substrate/.claude/skills/ogilvy-writing-audit/SKILL.md +1 -1
- package/substrate/.claude/skills/onboard-repo/SKILL.md +143 -709
- package/substrate/.claude/skills/pattern-review/SKILL.md +1 -1
- package/substrate/.claude/skills/personas/SKILL.md +5 -5
- package/substrate/.claude/skills/promote/SKILL.md +1 -1
- package/substrate/.claude/skills/requirement/SKILL.md +1 -1
- package/substrate/.claude/skills/retro/SKILL.md +1 -1
- package/substrate/.claude/skills/riff/SKILL.md +1 -1
- package/substrate/.claude/skills/roadmap-reconcile/SKILL.md +1 -1
- package/substrate/.claude/skills/session-end/SKILL.md +1 -1
- package/substrate/.claude/skills/session-log/SKILL.md +3 -3
- package/substrate/.claude/skills/skills/SKILL.md +1 -1
- package/substrate/.claude/skills/spec/SKILL.md +1 -1
- package/substrate/.claude/skills/sprint/SKILL.md +1 -1
- package/substrate/.claude/skills/stage/SKILL.md +1 -1
- package/substrate/.claude/skills/state-a-problem/SKILL.md +1 -1
- package/substrate/.claude/skills/temperance/SKILL.md +1 -1
- package/substrate/.claude/skills/use-case/SKILL.md +1 -1
- package/substrate/.claude/skills/user-stories/SKILL.md +1 -1
- package/substrate/.claude/skills/value-prop/SKILL.md +1 -1
- package/substrate/.claude/skills/verify/SKILL.md +1 -1
- package/substrate/.claude/skills/visual-review/SKILL.md +503 -0
- package/substrate/.claude/skills/whats-the-plan/SKILL.md +202 -0
- package/substrate/.claude/skills/whereami/SKILL.md +2 -2
- package/substrate/CONTRIBUTING.md +1 -1
- package/substrate/README.md +5 -5
- package/substrate/lib/prose-scan-boundary.sh +171 -0
- package/substrate/lib/tier-check.sh +50 -1
- package/substrate/lib/tier-dependency-audit.sh +159 -4
- package/substrate/presence/install/bassclef-sync.template.sh +1 -1
- package/substrate/scripts/generate-lite-manifest.sh +21 -5
- package/substrate/standards/adr-template.md +86 -0
- package/substrate/standards/api-conventions/nextjs.md +84 -0
- package/substrate/standards/artifact-composition.md +209 -0
- package/substrate/standards/bash-hook-safety.md +246 -0
- package/substrate/standards/branch-stacking.md +408 -0
- package/substrate/standards/code-safety-principles.md +176 -0
- package/substrate/standards/composer-prerequisites.md +155 -0
- package/substrate/standards/dependency-discipline/cargo.md +39 -0
- package/substrate/standards/dependency-discipline/gem.md +43 -0
- package/substrate/standards/dependency-discipline/go-mod.md +41 -0
- package/substrate/standards/dependency-discipline/npm.md +42 -0
- package/substrate/standards/dependency-discipline/pip.md +42 -0
- package/substrate/standards/deployment-topology/ec2-tailscale.md +225 -0
- package/substrate/standards/deployment-topology.md +69 -0
- package/substrate/standards/docs-sync-allowlist.md +4 -4
- package/substrate/standards/domain-and-dns.md +145 -0
- package/substrate/standards/frontend-stack.md +67 -0
- package/substrate/standards/frontmatter-schema.md +154 -0
- package/substrate/standards/hook-injection-discipline.md +202 -0
- package/substrate/standards/hook-install-class.md +215 -0
- package/substrate/standards/input-handler-interface.md +152 -0
- package/substrate/standards/lite-manifest-schema-changes.md +60 -0
- package/substrate/standards/luminary-matching.md +105 -0
- package/substrate/standards/migration-discipline/active-record.md +50 -0
- package/substrate/standards/migration-discipline/alembic.md +43 -0
- package/substrate/standards/migration-discipline/gorm.md +50 -0
- package/substrate/standards/migration-discipline/prisma.md +53 -0
- package/substrate/standards/migration-discipline/sqlalchemy.md +51 -0
- package/substrate/standards/mobile-ephemeral-session.md +167 -0
- package/substrate/standards/model-routing-discipline.md +160 -0
- package/substrate/standards/persona-schema.md +229 -0
- package/substrate/standards/pluggable-luminaries.md +323 -0
- package/substrate/standards/pr-body-discipline.md +115 -0
- package/substrate/standards/preview-state-schema.md +189 -0
- package/substrate/standards/reserved-skill-names.md +120 -0
- package/substrate/standards/scannable-multi-option-output.md +261 -0
- package/substrate/standards/sdlc-gates/typescript.md +57 -0
- package/substrate/standards/session-board.md +256 -0
- package/substrate/standards/state-spine-contract.md +255 -0
- package/substrate/standards/steering-hints/kiss-words.md +11 -0
- package/substrate/standards/substrate-config-schema.md +267 -0
- package/substrate/standards/tier-dependency-analysis.md +1 -1
- package/substrate/standards/tier-tag-schema.md +1 -1
- package/substrate/standards/two-layer-config.md +99 -0
- package/substrate/standards/use-case-format.md +292 -0
- package/substrate/standards/user-story-invest.md +268 -0
- package/substrate/standards/velocity-and-appetite.md +229 -0
- package/substrate/standards/voice-input-pattern.md +119 -0
- package/substrate/standards/worktree-management.md +211 -0
- package/substrate/templates/chronicle-template.md +75 -0
- package/substrate/templates/memory-proposal-template.md +77 -0
- package/substrate/templates/persona-template.md +200 -0
- package/substrate/templates/pr-faq.md +45 -0
- package/substrate/templates/secret-rotation-template.md +162 -0
- package/substrate/templates/spec-template.md +131 -0
- package/substrate/templates/use-case-template.md +194 -0
- package/substrate/templates/user-story-template.md +107 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"tier": "lite",
|
|
3
|
-
"manifest_version": "1.5.
|
|
4
|
-
"generated_at": "2026-09-
|
|
3
|
+
"manifest_version": "1.5.7",
|
|
4
|
+
"generated_at": "2026-09-11T10:55:49Z",
|
|
5
5
|
"entries": [
|
|
6
6
|
{
|
|
7
7
|
"slug": "029-release-pipeline",
|
|
@@ -131,6 +131,22 @@
|
|
|
131
131
|
"content_hash": "sha256:7cb4c033003b987c4dddc74f9f24d9b28f111ee73622a2fa9f9a34d786191aad",
|
|
132
132
|
"description": "kiss-expansion-inject.sh — UserPromptExpansion hook that injects"
|
|
133
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:2b797e8eceb51dfe9060069027156541f787386d6830675a7f56921a8c72fe59",
|
|
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:2b797e8eceb51dfe9060069027156541f787386d6830675a7f56921a8c72fe59",
|
|
148
|
+
"description": "longrun-prep-compounding-sequence-check.sh — Stop hook that fires when"
|
|
149
|
+
},
|
|
134
150
|
{
|
|
135
151
|
"slug": "plain-english-steering",
|
|
136
152
|
"type": "hook",
|
|
@@ -168,7 +184,7 @@
|
|
|
168
184
|
"type": "hook",
|
|
169
185
|
"path": ".claude/hooks/pre-commit-gate.sh",
|
|
170
186
|
"tier": "lite",
|
|
171
|
-
"content_hash": "sha256:
|
|
187
|
+
"content_hash": "sha256:6a825617f0cde4d3a77590ad9907667ee181539fee35badce87bfa27fb94a3c1",
|
|
172
188
|
"description": "Observable failure trap — closes bassclef-upstream#1075 (silent-stderr class)."
|
|
173
189
|
},
|
|
174
190
|
{
|
|
@@ -256,7 +272,7 @@
|
|
|
256
272
|
"type": "hook",
|
|
257
273
|
"path": ".claude/hooks/turn-prose-kiss-check.sh",
|
|
258
274
|
"tier": "lite",
|
|
259
|
-
"content_hash": "sha256:
|
|
275
|
+
"content_hash": "sha256:ac0ffe20336df8a4574da133cd4de6b7b8d5442e55893d4f8bdd2f4aea1aafbf",
|
|
260
276
|
"description": "Turn-prose /kiss check — Stop hook that scans the most recent assistant"
|
|
261
277
|
},
|
|
262
278
|
{
|
|
@@ -323,6 +339,14 @@
|
|
|
323
339
|
"content_hash": "sha256:24ca4785a7f8cce14d8fff8d95b2780275179a126c254bba11356d62f112c585",
|
|
324
340
|
"description": "output-discipline.sh — classifier library for substrate output discipline audit."
|
|
325
341
|
},
|
|
342
|
+
{
|
|
343
|
+
"slug": "prose-scan-boundary",
|
|
344
|
+
"type": "lib",
|
|
345
|
+
"path": "lib/prose-scan-boundary.sh",
|
|
346
|
+
"tier": "lite",
|
|
347
|
+
"content_hash": "sha256:bffddf54274cff49f10db5e10ce13f4551cf96e96773cf6e94854977e4489614",
|
|
348
|
+
"description": "lib/prose-scan-boundary.sh"
|
|
349
|
+
},
|
|
326
350
|
{
|
|
327
351
|
"slug": "rewrite-check",
|
|
328
352
|
"type": "lib",
|
|
@@ -352,7 +376,7 @@
|
|
|
352
376
|
"type": "lib",
|
|
353
377
|
"path": "lib/tier-check.sh",
|
|
354
378
|
"tier": "lite",
|
|
355
|
-
"content_hash": "sha256:
|
|
379
|
+
"content_hash": "sha256:c8b5ca9c7af75a49727612792e423ca0209b643039d08cfd99084707043dae75",
|
|
356
380
|
"description": "lib/tier-check.sh — adopter tier resolution + gate."
|
|
357
381
|
},
|
|
358
382
|
{
|
|
@@ -360,7 +384,7 @@
|
|
|
360
384
|
"type": "lib",
|
|
361
385
|
"path": "lib/tier-dependency-audit.sh",
|
|
362
386
|
"tier": "lite",
|
|
363
|
-
"content_hash": "sha256:
|
|
387
|
+
"content_hash": "sha256:7ee5cc3c7372ca6aef3c81f614ec119ffed8874e00a78d441ce8d0304c7b6308",
|
|
364
388
|
"description": "lib/tier-dependency-audit.sh"
|
|
365
389
|
},
|
|
366
390
|
{
|
|
@@ -459,6 +483,30 @@
|
|
|
459
483
|
"content_hash": "sha256:47accc6c9c138d585345e6f81a7cf6a1dbd42433844ccb8d9a86a8294b458d1b",
|
|
460
484
|
"description": "\\\"Program to an interface, not an implementation."
|
|
461
485
|
},
|
|
486
|
+
{
|
|
487
|
+
"slug": "glenford-myers",
|
|
488
|
+
"type": "luminary",
|
|
489
|
+
"path": ".claude/luminaries/glenford-myers.md",
|
|
490
|
+
"tier": "lite",
|
|
491
|
+
"content_hash": "sha256:440ed5d16bfc52152f5a86ac4bf08fc7d91927a7f333cae2c5813f46df0e4f7f",
|
|
492
|
+
"description": "\\\"The purpose of testing is to find errors, not to demonstrate the absence of errors.\\\""
|
|
493
|
+
},
|
|
494
|
+
{
|
|
495
|
+
"slug": "hunt-thomas",
|
|
496
|
+
"type": "luminary",
|
|
497
|
+
"path": ".claude/luminaries/hunt-thomas.md",
|
|
498
|
+
"tier": "lite",
|
|
499
|
+
"content_hash": "sha256:4824b5a19b26787b5622966542e682733005afca04fc423f8347c29560b21023",
|
|
500
|
+
"description": "\\\"Every piece of knowledge must have a single, unambiguous, authoritative representation in a system."
|
|
501
|
+
},
|
|
502
|
+
{
|
|
503
|
+
"slug": "hyrum-wright",
|
|
504
|
+
"type": "luminary",
|
|
505
|
+
"path": ".claude/luminaries/hyrum-wright.md",
|
|
506
|
+
"tier": "lite",
|
|
507
|
+
"content_hash": "sha256:079855a86658dd4553dd0dfe7bc32fdecdde0a8ef0da71acb8901472b1cc9eb6",
|
|
508
|
+
"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.\\\""
|
|
509
|
+
},
|
|
462
510
|
{
|
|
463
511
|
"slug": "jason-fried-dhh",
|
|
464
512
|
"type": "luminary",
|
|
@@ -520,7 +568,7 @@
|
|
|
520
568
|
"type": "luminary",
|
|
521
569
|
"path": ".claude/luminaries/michael-feathers.md",
|
|
522
570
|
"tier": "lite",
|
|
523
|
-
"content_hash": "sha256:
|
|
571
|
+
"content_hash": "sha256:768da9d3388f1a0bd6da07be4705afc61559d13f7055dec40eefc19480800747",
|
|
524
572
|
"description": "\\\"Legacy code is code without tests. Everything else is detail.\\\" [ref:1]"
|
|
525
573
|
},
|
|
526
574
|
{
|
|
@@ -563,6 +611,30 @@
|
|
|
563
611
|
"content_hash": "sha256:7d7d4b9a9ec1a13669fa5f1c5abab91ed5d20ae1f81a379cb5d5dda6645b33bf",
|
|
564
612
|
"description": "\\\"An argument is a whole organism. Take out one part and the rest collapses.\\\""
|
|
565
613
|
},
|
|
614
|
+
{
|
|
615
|
+
"slug": "tony-hoare",
|
|
616
|
+
"type": "luminary",
|
|
617
|
+
"path": ".claude/luminaries/tony-hoare.md",
|
|
618
|
+
"tier": "lite",
|
|
619
|
+
"content_hash": "sha256:d557d1b083f558ce08dbfb3d14ebdaa9b36f278d94eece28031e07da2a47e63d",
|
|
620
|
+
"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…"
|
|
621
|
+
},
|
|
622
|
+
{
|
|
623
|
+
"slug": "vaughn-vernon",
|
|
624
|
+
"type": "luminary",
|
|
625
|
+
"path": ".claude/luminaries/vaughn-vernon.md",
|
|
626
|
+
"tier": "lite",
|
|
627
|
+
"content_hash": "sha256:43e708b76437fe0da9c2c68c8c0b5ff9ef48939fa049b8d20304c987aff3e888",
|
|
628
|
+
"description": "\\\"DDD is implementable. Here's how.\\\""
|
|
629
|
+
},
|
|
630
|
+
{
|
|
631
|
+
"slug": "w-edwards-deming",
|
|
632
|
+
"type": "luminary",
|
|
633
|
+
"path": ".claude/luminaries/w-edwards-deming.md",
|
|
634
|
+
"tier": "lite",
|
|
635
|
+
"content_hash": "sha256:9b5d51d106b5f4398c15c1412c781b81f2cde55fecc294c120479a06b8de92a9",
|
|
636
|
+
"description": "\\\"A bad system will beat a good person every time.\\\""
|
|
637
|
+
},
|
|
566
638
|
{
|
|
567
639
|
"slug": "bassclef-hook-connect",
|
|
568
640
|
"type": "presence-template",
|
|
@@ -584,7 +656,7 @@
|
|
|
584
656
|
"type": "presence-template",
|
|
585
657
|
"path": "presence/install/bassclef-sync.template.sh",
|
|
586
658
|
"tier": "lite",
|
|
587
|
-
"content_hash": "sha256:
|
|
659
|
+
"content_hash": "sha256:c0459c5b16a7f875dc71aafd8fc5b40b1c9115fa6edd2c4d6e3d9ada5903dbe0",
|
|
588
660
|
"description": "description: BASSCLEF_SYNC_VERSION=2026-09-06-1496-sessionstart-heal-v1"
|
|
589
661
|
},
|
|
590
662
|
{
|
|
@@ -631,7 +703,7 @@
|
|
|
631
703
|
"type": "root-doc",
|
|
632
704
|
"path": "CONTRIBUTING.md",
|
|
633
705
|
"tier": "lite",
|
|
634
|
-
"content_hash": "sha256:
|
|
706
|
+
"content_hash": "sha256:59fdb81b80bbe65960c87bfc634fd6117df9261d262f32c73f6737b562338bb1",
|
|
635
707
|
"description": "Bassclef is a framework for guiding AI agents through software development — skills, rules, hooks, and standards that compose into an opinionated SDLC substrate."
|
|
636
708
|
},
|
|
637
709
|
{
|
|
@@ -639,7 +711,7 @@
|
|
|
639
711
|
"type": "root-doc",
|
|
640
712
|
"path": "README.md",
|
|
641
713
|
"tier": "lite",
|
|
642
|
-
"content_hash": "sha256:
|
|
714
|
+
"content_hash": "sha256:f1c4bb6e9146ceb519f5f5c05a5cbc8798e8a885cbbab7a55af6293569111390",
|
|
643
715
|
"description": "A shared substrate for working with AI coding agents."
|
|
644
716
|
},
|
|
645
717
|
{
|
|
@@ -650,6 +722,22 @@
|
|
|
650
722
|
"content_hash": "sha256:0c4d177670be95c7b0e37554633d508ec6c2b82f18110355f382abdfd9410359",
|
|
651
723
|
"description": "Please report security vulnerabilities privately via GitHub's security advisory system:"
|
|
652
724
|
},
|
|
725
|
+
{
|
|
726
|
+
"slug": "accessor-library-discipline",
|
|
727
|
+
"type": "rule",
|
|
728
|
+
"path": ".claude/rules/accessor-library-discipline.md",
|
|
729
|
+
"tier": "lite",
|
|
730
|
+
"content_hash": "sha256:9a44d773f7122f75527ceef2ebc881c202cf71e9f75771a87b5cd324b5c59cdc",
|
|
731
|
+
"description": "State spine consumers (skills, hooks, rules, scripts) MUST go through the typed accessor library lib/state.sh to read or write bassclef state."
|
|
732
|
+
},
|
|
733
|
+
{
|
|
734
|
+
"slug": "api-conventions",
|
|
735
|
+
"type": "rule",
|
|
736
|
+
"path": ".claude/rules/api-conventions.md",
|
|
737
|
+
"tier": "lite",
|
|
738
|
+
"content_hash": "sha256:223642ccb94b2ce3da6c211db8eac773dd18f97df48cef0ea38ef12ef475e02f",
|
|
739
|
+
"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/."
|
|
740
|
+
},
|
|
653
741
|
{
|
|
654
742
|
"slug": "artifact-ingestion",
|
|
655
743
|
"type": "rule",
|
|
@@ -674,6 +762,14 @@
|
|
|
674
762
|
"content_hash": "sha256:f2c576d4fbbfbd6ccce9747b6571c421997db61f130e392772dc9e2d2144f3c2",
|
|
675
763
|
"description": "Session-start hook output may contain lines prefixed with BLOCKED:."
|
|
676
764
|
},
|
|
765
|
+
{
|
|
766
|
+
"slug": "bootstrap-pair-discipline",
|
|
767
|
+
"type": "rule",
|
|
768
|
+
"path": ".claude/rules/bootstrap-pair-discipline.md",
|
|
769
|
+
"tier": "lite",
|
|
770
|
+
"content_hash": "sha256:fcee1628d961e7aec6d743331b4aca7aa7bdcc3c7002129c6c3b71b35cf46d76",
|
|
771
|
+
"description": "Every substrate primitive ships with its paired bootstrap discipline."
|
|
772
|
+
},
|
|
677
773
|
{
|
|
678
774
|
"slug": "branching",
|
|
679
775
|
"type": "rule",
|
|
@@ -682,6 +778,14 @@
|
|
|
682
778
|
"content_hash": "sha256:292de9c9fda44c0c9e92bd2fd0551d04a686ed60607b094635bf5db74465c57d",
|
|
683
779
|
"description": "Trunk-based development — branch naming and flow"
|
|
684
780
|
},
|
|
781
|
+
{
|
|
782
|
+
"slug": "cold-adopter-harness-discipline",
|
|
783
|
+
"type": "rule",
|
|
784
|
+
"path": ".claude/rules/cold-adopter-harness-discipline.md",
|
|
785
|
+
"tier": "lite",
|
|
786
|
+
"content_hash": "sha256:75bcda06afacb6bfc6074d3851abb3154bd13aa167ee0ef293125c628f897813",
|
|
787
|
+
"description": "Substrate changes that touch any adopter-observable surface MUST pass the cold-adopter harness before merge."
|
|
788
|
+
},
|
|
685
789
|
{
|
|
686
790
|
"slug": "commit-conventions",
|
|
687
791
|
"type": "rule",
|
|
@@ -690,6 +794,22 @@
|
|
|
690
794
|
"content_hash": "sha256:69ae0083d62003eb70442ef3d5fcffd0061723a18da931f823795123ff7fc312",
|
|
691
795
|
"description": "Commit message format — Conventional Commits"
|
|
692
796
|
},
|
|
797
|
+
{
|
|
798
|
+
"slug": "compounding-axis-fresh-analysis",
|
|
799
|
+
"type": "rule",
|
|
800
|
+
"path": ".claude/rules/compounding-axis-fresh-analysis.md",
|
|
801
|
+
"tier": "lite",
|
|
802
|
+
"content_hash": "sha256:ad0466cd320fb9e6f870ab6bd8a121c38ebebcbc09a6a98a88ed78817702e09c",
|
|
803
|
+
"description": "When /longrun prep proposes scope shapes, each shape's compounding-sequence row comes from fresh analysis."
|
|
804
|
+
},
|
|
805
|
+
{
|
|
806
|
+
"slug": "compounding-sequence-fresh-analysis",
|
|
807
|
+
"type": "rule",
|
|
808
|
+
"path": ".claude/rules/compounding-sequence-fresh-analysis.md",
|
|
809
|
+
"tier": "lite",
|
|
810
|
+
"content_hash": "sha256:ad0466cd320fb9e6f870ab6bd8a121c38ebebcbc09a6a98a88ed78817702e09c",
|
|
811
|
+
"description": "When /longrun prep proposes scope shapes, each shape's compounding-sequence row comes from fresh analysis."
|
|
812
|
+
},
|
|
693
813
|
{
|
|
694
814
|
"slug": "context-engineering",
|
|
695
815
|
"type": "rule",
|
|
@@ -706,6 +826,22 @@
|
|
|
706
826
|
"content_hash": "sha256:c319a027124fa9de0066fd60b2b05456808c4b4220baf74c298f6ece73e21df5",
|
|
707
827
|
"description": "Context window management — thresholds, compaction strategy, survival kit"
|
|
708
828
|
},
|
|
829
|
+
{
|
|
830
|
+
"slug": "defensive-bash",
|
|
831
|
+
"type": "rule",
|
|
832
|
+
"path": ".claude/rules/defensive-bash.md",
|
|
833
|
+
"tier": "lite",
|
|
834
|
+
"content_hash": "sha256:b98ab2db618fea5a720c161b867da4b40be8861aed55d6564e80b6d02976237c",
|
|
835
|
+
"description": "Every bash hook + script in bassclef follows standards/bash-hook-safety.md."
|
|
836
|
+
},
|
|
837
|
+
{
|
|
838
|
+
"slug": "deferred-actions",
|
|
839
|
+
"type": "rule",
|
|
840
|
+
"path": ".claude/rules/deferred-actions.md",
|
|
841
|
+
"tier": "lite",
|
|
842
|
+
"content_hash": "sha256:9998b35c7c3a3122f5ae3644e72e60dcd3151c686e8d61b725afa83747176fce",
|
|
843
|
+
"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."
|
|
844
|
+
},
|
|
709
845
|
{
|
|
710
846
|
"slug": "destructive-operations",
|
|
711
847
|
"type": "rule",
|
|
@@ -722,6 +858,22 @@
|
|
|
722
858
|
"content_hash": "sha256:f387cde3e41ca4cf3afc65aee9982e76da19b7798e84d0e602e8e2ff5f9c7306",
|
|
723
859
|
"description": "Three-step diagnosis before writing any fix"
|
|
724
860
|
},
|
|
861
|
+
{
|
|
862
|
+
"slug": "discipline",
|
|
863
|
+
"type": "rule",
|
|
864
|
+
"path": ".claude/rules/adr-discipline.md",
|
|
865
|
+
"tier": "lite",
|
|
866
|
+
"content_hash": "sha256:2d772050842f0cea271acc44708aa92b06c7f3b2bcd721cf28f6cf49a53a6986",
|
|
867
|
+
"description": "Every load-bearing architectural decision MUST be recorded as an ADR (Architecture Decision Record) per Michael Nygard's lifecycle: proposed → accepted → deprecated → superseded."
|
|
868
|
+
},
|
|
869
|
+
{
|
|
870
|
+
"slug": "github-issue-flash-tweet",
|
|
871
|
+
"type": "rule",
|
|
872
|
+
"path": ".claude/rules/github-issue-flash-tweet.md",
|
|
873
|
+
"tier": "lite",
|
|
874
|
+
"content_hash": "sha256:c4c19892b1ad47750228e90429325c5634694dec6276b7bb945e83492234f216",
|
|
875
|
+
"description": "Every GitHub issue body opens with Problem (≤500 chars): + --- + technical detail."
|
|
876
|
+
},
|
|
725
877
|
{
|
|
726
878
|
"slug": "guardrails",
|
|
727
879
|
"type": "rule",
|
|
@@ -730,6 +882,14 @@
|
|
|
730
882
|
"content_hash": "sha256:f24b55a2cac772ccc86da182b02a7ce7eddec4d13a0009a6f9f3ed7db6784823",
|
|
731
883
|
"description": "Agent guardrails — behavior boundaries, escalation rules, capability ceilings for autonomous operation"
|
|
732
884
|
},
|
|
885
|
+
{
|
|
886
|
+
"slug": "hook-wire-on-author",
|
|
887
|
+
"type": "rule",
|
|
888
|
+
"path": ".claude/rules/hook-wire-on-author.md",
|
|
889
|
+
"tier": "lite",
|
|
890
|
+
"content_hash": "sha256:7d9701db5353312664b7bcf8e864810df4083cf240618969124e848391be39cb",
|
|
891
|
+
"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."
|
|
892
|
+
},
|
|
733
893
|
{
|
|
734
894
|
"slug": "identifier-leak-prevention",
|
|
735
895
|
"type": "rule",
|
|
@@ -738,14 +898,70 @@
|
|
|
738
898
|
"content_hash": "sha256:8c0a6f9a3cf3da6c6c83b0890bb73af8479f1f4a257dcef45b022772a7d92842",
|
|
739
899
|
"description": "Bassclef commits stay free of operator machine identifiers."
|
|
740
900
|
},
|
|
901
|
+
{
|
|
902
|
+
"slug": "iteration-bet-brief-completeness",
|
|
903
|
+
"type": "rule",
|
|
904
|
+
"path": ".claude/rules/iteration-bet-brief-completeness.md",
|
|
905
|
+
"tier": "lite",
|
|
906
|
+
"content_hash": "sha256:eb10d19eeacccbdfe11065bd6917c8fdbb7613ad1b987e100b0ce1add47f10ba",
|
|
907
|
+
"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…"
|
|
908
|
+
},
|
|
741
909
|
{
|
|
742
910
|
"slug": "lite-manifest-schema-change-discipline",
|
|
743
911
|
"type": "rule",
|
|
744
912
|
"path": ".claude/rules/lite-manifest-schema-change-discipline.md",
|
|
745
913
|
"tier": "lite",
|
|
746
|
-
"content_hash": "sha256:
|
|
914
|
+
"content_hash": "sha256:98094f0b06a5fcdbf8f7ce1eeefbc476b4a67011da14b3532b140309d5e3994c",
|
|
747
915
|
"description": "Every lite-manifest schema change ships a migration-note ledger entry in the same PR. Adopters read the ledger before sync."
|
|
748
916
|
},
|
|
917
|
+
{
|
|
918
|
+
"slug": "longrun-prep-plan-doc-compression",
|
|
919
|
+
"type": "rule",
|
|
920
|
+
"path": ".claude/rules/longrun-prep-plan-doc-compression.md",
|
|
921
|
+
"tier": "lite",
|
|
922
|
+
"content_hash": "sha256:595c2fec55cbd340013d80ba6b555498f1772e77242a5d37744eb1f27885c950",
|
|
923
|
+
"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…"
|
|
924
|
+
},
|
|
925
|
+
{
|
|
926
|
+
"slug": "loop-discipline",
|
|
927
|
+
"type": "rule",
|
|
928
|
+
"path": ".claude/rules/loop-discipline.md",
|
|
929
|
+
"tier": "lite",
|
|
930
|
+
"content_hash": "sha256:923b28dea58a6a7bb523ee797e826549bcb8bcac563403df172c721ac0b40d15",
|
|
931
|
+
"description": "Every step that ships code or substrate runs the six-step cycle for shipping code or substrate."
|
|
932
|
+
},
|
|
933
|
+
{
|
|
934
|
+
"slug": "manual-prod-approval",
|
|
935
|
+
"type": "rule",
|
|
936
|
+
"path": ".claude/rules/manual-prod-approval.md",
|
|
937
|
+
"tier": "lite",
|
|
938
|
+
"content_hash": "sha256:2991feacdd1b1befc112f8e84a8c3e0f43f513ae489f22881ec05bf0299d1f10",
|
|
939
|
+
"description": "Prod deploys require GitHub Environments with required_reviewers — no exceptions"
|
|
940
|
+
},
|
|
941
|
+
{
|
|
942
|
+
"slug": "marker-enrichment-discipline",
|
|
943
|
+
"type": "rule",
|
|
944
|
+
"path": ".claude/rules/marker-enrichment-discipline.md",
|
|
945
|
+
"tier": "lite",
|
|
946
|
+
"content_hash": "sha256:8d22224aaaa7a2fce758948209387ed0c786d8015a0e065fdf46d757b1574ca1",
|
|
947
|
+
"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…"
|
|
948
|
+
},
|
|
949
|
+
{
|
|
950
|
+
"slug": "mobile-ephemeral-session",
|
|
951
|
+
"type": "rule",
|
|
952
|
+
"path": ".claude/rules/mobile-ephemeral-session.md",
|
|
953
|
+
"tier": "lite",
|
|
954
|
+
"content_hash": "sha256:524032f07708a3d58b6ef3f3c444289dc20b93d51fad848a88567b09305281c9",
|
|
955
|
+
"description": "Mobile/ephemeral session rules — state round-trips through git, no filesystem-only markers, explicit session-end"
|
|
956
|
+
},
|
|
957
|
+
{
|
|
958
|
+
"slug": "new-dependency-check",
|
|
959
|
+
"type": "rule",
|
|
960
|
+
"path": ".claude/rules/new-dependency-check.md",
|
|
961
|
+
"tier": "lite",
|
|
962
|
+
"content_hash": "sha256:6652925e0387957e199aa89f990373b38cd97f9687248fcb7c7d071ad87ce39b",
|
|
963
|
+
"description": "New dependency check — verify before adding any package; loads per-pkg-manager sibling"
|
|
964
|
+
},
|
|
749
965
|
{
|
|
750
966
|
"slug": "oo-ad-entry-point",
|
|
751
967
|
"type": "rule",
|
|
@@ -762,13 +978,37 @@
|
|
|
762
978
|
"content_hash": "sha256:f268d9c6788f51ddbb932202ecdc929f2766a6a82b9f40e7705069c2470aab2a",
|
|
763
979
|
"description": "Any shorthand in operator-facing prose carries a plain-language gloss at first mention per response."
|
|
764
980
|
},
|
|
981
|
+
{
|
|
982
|
+
"slug": "option-label-discipline",
|
|
983
|
+
"type": "rule",
|
|
984
|
+
"path": ".claude/rules/option-label-discipline.md",
|
|
985
|
+
"tier": "lite",
|
|
986
|
+
"content_hash": "sha256:137b32a27123282218c1da25b68803d1580fac83e766da02ba6bedc6933f8e64",
|
|
987
|
+
"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…"
|
|
988
|
+
},
|
|
989
|
+
{
|
|
990
|
+
"slug": "pattern-annotation",
|
|
991
|
+
"type": "rule",
|
|
992
|
+
"path": ".claude/rules/pattern-annotation.md",
|
|
993
|
+
"tier": "lite",
|
|
994
|
+
"content_hash": "sha256:b608a6c2b35c6af2be1ef01f1269edf2437c533e79af241f0e0d8f622852463d",
|
|
995
|
+
"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."
|
|
996
|
+
},
|
|
765
997
|
{
|
|
766
998
|
"slug": "plain-english-discipline",
|
|
767
999
|
"type": "rule",
|
|
768
1000
|
"path": ".claude/rules/plain-english-discipline.md",
|
|
769
1001
|
"tier": "lite",
|
|
770
|
-
"content_hash": "sha256:
|
|
771
|
-
"description": "All bassclef writing
|
|
1002
|
+
"content_hash": "sha256:d6e8953f1724ba0fc3d47f5ddfdca51bc3bff4f8b0b62d33ebb748d1447fc785",
|
|
1003
|
+
"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."
|
|
1004
|
+
},
|
|
1005
|
+
{
|
|
1006
|
+
"slug": "plan-enumeration-needs-value-props",
|
|
1007
|
+
"type": "rule",
|
|
1008
|
+
"path": ".claude/rules/plan-enumeration-needs-value-props.md",
|
|
1009
|
+
"tier": "lite",
|
|
1010
|
+
"content_hash": "sha256:4647d74d8ebfc1bfa26143ce1dff8c6f2818137967ec827edaa600e05ff70f0f",
|
|
1011
|
+
"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 +…"
|
|
772
1012
|
},
|
|
773
1013
|
{
|
|
774
1014
|
"slug": "pr-body-shape",
|
|
@@ -786,6 +1026,38 @@
|
|
|
786
1026
|
"content_hash": "sha256:f9387e07995c4980bffef4dff282ca36d644aa386baf4241f0ded26041b456a0",
|
|
787
1027
|
"description": "The default PR strategy for any multi-issue iteration is stacked atomic branches: one branch per issue, one PR per branch, each independently reviewable and revertable."
|
|
788
1028
|
},
|
|
1029
|
+
{
|
|
1030
|
+
"slug": "pr-title-shape",
|
|
1031
|
+
"type": "rule",
|
|
1032
|
+
"path": ".claude/rules/pr-title-shape.md",
|
|
1033
|
+
"tier": "lite",
|
|
1034
|
+
"content_hash": "sha256:05780143ba80310cbf8feb2d80e2e19623e9ae137820b55e9924395c60b07806",
|
|
1035
|
+
"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…"
|
|
1036
|
+
},
|
|
1037
|
+
{
|
|
1038
|
+
"slug": "prototype-workflow",
|
|
1039
|
+
"type": "rule",
|
|
1040
|
+
"path": ".claude/rules/prototype-workflow.md",
|
|
1041
|
+
"tier": "lite",
|
|
1042
|
+
"content_hash": "sha256:5c06701cac7dc02bb080be3d867782a9c1650b25329078351cb5b86f5ff8b7de",
|
|
1043
|
+
"description": "Design prototypes (artifacts under docs/prototypes/**) are visual statements to Reviewer (\\\"this is what we want built\\\")."
|
|
1044
|
+
},
|
|
1045
|
+
{
|
|
1046
|
+
"slug": "reserved-skill-names",
|
|
1047
|
+
"type": "rule",
|
|
1048
|
+
"path": ".claude/rules/reserved-skill-names.md",
|
|
1049
|
+
"tier": "lite",
|
|
1050
|
+
"content_hash": "sha256:4ae26427b71e55d500b8e60cc249e021c7ff6b8670861b324c76b566dd368a7b",
|
|
1051
|
+
"description": "Bassclef MUST NOT create a skill (.claude/skills/<name>/SKILL.md) with a name Claude Code's harness already claims."
|
|
1052
|
+
},
|
|
1053
|
+
{
|
|
1054
|
+
"slug": "schema-management",
|
|
1055
|
+
"type": "rule",
|
|
1056
|
+
"path": ".claude/rules/schema-management.md",
|
|
1057
|
+
"tier": "lite",
|
|
1058
|
+
"content_hash": "sha256:a5c156169d5b11bc978dfb59a76cc45ed0fd887897b87a76f0da2acbc9ca70f3",
|
|
1059
|
+
"description": "Schema management — never apply schema changes without a migration; loads per-ORM sibling"
|
|
1060
|
+
},
|
|
789
1061
|
{
|
|
790
1062
|
"slug": "sdlc-gates",
|
|
791
1063
|
"type": "rule",
|
|
@@ -794,6 +1066,14 @@
|
|
|
794
1066
|
"content_hash": "sha256:c1a6e27d8911375a5287dfa08a557aafd852b3de02f6180cfcdddd190fdee091",
|
|
795
1067
|
"description": "Universal SDLC gates — pre-build temperance + diagnose, post-build /verify, observed-failure chain. Stack-specific globs live in per-language siblings under standards/sdlc-gates/."
|
|
796
1068
|
},
|
|
1069
|
+
{
|
|
1070
|
+
"slug": "security",
|
|
1071
|
+
"type": "rule",
|
|
1072
|
+
"path": ".claude/rules/security.md",
|
|
1073
|
+
"tier": "lite",
|
|
1074
|
+
"content_hash": "sha256:1a3b527079890dd701ed3c16e5e91e2b408505a8b736f7f694e66e092cca964c",
|
|
1075
|
+
"description": "Security scanning — loads when touching source, config, or infra files"
|
|
1076
|
+
},
|
|
797
1077
|
{
|
|
798
1078
|
"slug": "session-artifacts",
|
|
799
1079
|
"type": "rule",
|
|
@@ -802,6 +1082,30 @@
|
|
|
802
1082
|
"content_hash": "sha256:4101a23b7c81a914e4b18a43dce81f05a86f26643c75534a6313da28a645d5f3",
|
|
803
1083
|
"description": "Session artifacts — chronicle + journal entries at every phase transition and session end"
|
|
804
1084
|
},
|
|
1085
|
+
{
|
|
1086
|
+
"slug": "skill-composition-declarations",
|
|
1087
|
+
"type": "rule",
|
|
1088
|
+
"path": ".claude/rules/skill-composition-declarations.md",
|
|
1089
|
+
"tier": "lite",
|
|
1090
|
+
"content_hash": "sha256:f6389e3d442dce5831d176288b836d7e6d0dae6d642e43907c77dbcf31888fea",
|
|
1091
|
+
"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."
|
|
1092
|
+
},
|
|
1093
|
+
{
|
|
1094
|
+
"slug": "skill-description-clarity",
|
|
1095
|
+
"type": "rule",
|
|
1096
|
+
"path": ".claude/rules/skill-description-clarity.md",
|
|
1097
|
+
"tier": "lite",
|
|
1098
|
+
"content_hash": "sha256:fbaebf9b9070ccf5dd542d0079f78fd56d922f0aa2db8d84c1f499405fb5966b",
|
|
1099
|
+
"description": "Every skill's frontmatter description field must be parseable by an engineer with no bassclef context in under 60 seconds."
|
|
1100
|
+
},
|
|
1101
|
+
{
|
|
1102
|
+
"slug": "skill-procedure-step-list",
|
|
1103
|
+
"type": "rule",
|
|
1104
|
+
"path": ".claude/rules/skill-procedure-step-list.md",
|
|
1105
|
+
"tier": "lite",
|
|
1106
|
+
"content_hash": "sha256:46c5dde2a6a68b305da111a2b2233d3f08a2d17dab7c1db05648e6f96e35e3f8",
|
|
1107
|
+
"description": "Before executing any SKILL procedure, I write the numbered step list into the response."
|
|
1108
|
+
},
|
|
805
1109
|
{
|
|
806
1110
|
"slug": "state-schema-validation",
|
|
807
1111
|
"type": "rule",
|
|
@@ -810,6 +1114,78 @@
|
|
|
810
1114
|
"content_hash": "sha256:ce40db379fd0c8d1ce333b762e5b96d68d04ef31ab2c080141cfaf005948cdd8",
|
|
811
1115
|
"description": "State-spine entity writes MUST conform to their JSON Schema."
|
|
812
1116
|
},
|
|
1117
|
+
{
|
|
1118
|
+
"slug": "stuck-signal-diagnostic",
|
|
1119
|
+
"type": "rule",
|
|
1120
|
+
"path": ".claude/rules/stuck-signal-diagnostic.md",
|
|
1121
|
+
"tier": "lite",
|
|
1122
|
+
"content_hash": "sha256:ddacc9253b91194e89b30f7713102efbe38ef2365f816ee0d49bb2a754c49eee",
|
|
1123
|
+
"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."
|
|
1124
|
+
},
|
|
1125
|
+
{
|
|
1126
|
+
"slug": "substrate-config-schema",
|
|
1127
|
+
"type": "rule",
|
|
1128
|
+
"path": ".claude/rules/substrate-config-schema.md",
|
|
1129
|
+
"tier": "lite",
|
|
1130
|
+
"content_hash": "sha256:d6a52334ee5048589dfb95ad2917fb19640913ed55a4e5874831455528e3e3e1",
|
|
1131
|
+
"description": "Substrate config + secrets schemas — single source of truth for external resource references and secret lifecycle"
|
|
1132
|
+
},
|
|
1133
|
+
{
|
|
1134
|
+
"slug": "test-list-discipline",
|
|
1135
|
+
"type": "rule",
|
|
1136
|
+
"path": ".claude/rules/test-list-discipline.md",
|
|
1137
|
+
"tier": "lite",
|
|
1138
|
+
"content_hash": "sha256:cec2ae2fa9280e72c305446bd3baf0a02f162df3343a3e18cdf51327018b6526",
|
|
1139
|
+
"description": "Every test file opens with a # test-list: commented block enumerating the assertions the step owes."
|
|
1140
|
+
},
|
|
1141
|
+
{
|
|
1142
|
+
"slug": "test-sufficiency",
|
|
1143
|
+
"type": "rule",
|
|
1144
|
+
"path": ".claude/rules/test-sufficiency.md",
|
|
1145
|
+
"tier": "lite",
|
|
1146
|
+
"content_hash": "sha256:6cd81418e94586602f7954aa49f9404a43e9db4dbe450d8e0eb55c0b8e379b7a",
|
|
1147
|
+
"description": "The Tier 0 hook (bassclef#1037) enforces test PRESENCE + RECENCY."
|
|
1148
|
+
},
|
|
1149
|
+
{
|
|
1150
|
+
"slug": "testing",
|
|
1151
|
+
"type": "rule",
|
|
1152
|
+
"path": ".claude/rules/testing.md",
|
|
1153
|
+
"tier": "lite",
|
|
1154
|
+
"content_hash": "sha256:045d9b68d16ab8564d5881a9ba09a18bf0bcb35662108fa269e59f720d789614",
|
|
1155
|
+
"description": "Three-layer test strategy — loads when touching source or test files"
|
|
1156
|
+
},
|
|
1157
|
+
{
|
|
1158
|
+
"slug": "testing-tier-config",
|
|
1159
|
+
"type": "rule",
|
|
1160
|
+
"path": ".claude/rules/testing-tier-config.md",
|
|
1161
|
+
"tier": "lite",
|
|
1162
|
+
"content_hash": "sha256:730a452e90eaf30afa8d346448b42ee86b2b0faaa01830219b7b8671a37b97d5",
|
|
1163
|
+
"description": "Bassclef's testing discipline is configured per path-matcher in .claude/bassclef-configs.jsonc under the testing section."
|
|
1164
|
+
},
|
|
1165
|
+
{
|
|
1166
|
+
"slug": "turn-estimate-grounding",
|
|
1167
|
+
"type": "rule",
|
|
1168
|
+
"path": ".claude/rules/turn-estimate-grounding.md",
|
|
1169
|
+
"tier": "lite",
|
|
1170
|
+
"content_hash": "sha256:d83145835a3fc99df75aa1420026c1dafeb01fed87a9f263daece4931567fd9c",
|
|
1171
|
+
"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."
|
|
1172
|
+
},
|
|
1173
|
+
{
|
|
1174
|
+
"slug": "visual-hierarchy",
|
|
1175
|
+
"type": "rule",
|
|
1176
|
+
"path": ".claude/rules/visual-hierarchy.md",
|
|
1177
|
+
"tier": "lite",
|
|
1178
|
+
"content_hash": "sha256:8048e8a0c1a0f8bcc6bd488381ec8a9d1c2bce18354002820f910ab02a871666",
|
|
1179
|
+
"description": "Long agent responses that mix summary + analysis + enumeration + action become walls of text."
|
|
1180
|
+
},
|
|
1181
|
+
{
|
|
1182
|
+
"slug": "we-dont-break-adopters",
|
|
1183
|
+
"type": "rule",
|
|
1184
|
+
"path": ".claude/rules/we-dont-break-adopters.md",
|
|
1185
|
+
"tier": "lite",
|
|
1186
|
+
"content_hash": "sha256:354cb85a921035b730b292428d23b43a9a14bee7d3eccb1c5075d4c42c620b66",
|
|
1187
|
+
"description": "Bassclef adopts Linus Torvalds's rule: we do not break adopters."
|
|
1188
|
+
},
|
|
813
1189
|
{
|
|
814
1190
|
"slug": "whereami-load-bearing",
|
|
815
1191
|
"type": "rule",
|
|
@@ -826,6 +1202,14 @@
|
|
|
826
1202
|
"content_hash": "sha256:1cab202649c1156a817898a7c5297dda877b9c7b6dd5577ec75523e0e6fcd3ba",
|
|
827
1203
|
"description": "Plain check. Before I ship any operator-facing prose in this turn, I run the six Ogilvy tests against my draft. If any test fails, I rewrite before I ship."
|
|
828
1204
|
},
|
|
1205
|
+
{
|
|
1206
|
+
"slug": "wu-sequencing-compounds",
|
|
1207
|
+
"type": "rule",
|
|
1208
|
+
"path": ".claude/rules/wu-sequencing-compounds.md",
|
|
1209
|
+
"tier": "lite",
|
|
1210
|
+
"content_hash": "sha256:2fef52e185d46d7236e504516b8007c75dd9ce32f63c41d6f689f4e595e080bb",
|
|
1211
|
+
"description": "WUs within a chosen goal shape ship as compounding builds."
|
|
1212
|
+
},
|
|
829
1213
|
{
|
|
830
1214
|
"slug": "aggregate-telemetry",
|
|
831
1215
|
"type": "script",
|
|
@@ -847,7 +1231,7 @@
|
|
|
847
1231
|
"type": "script",
|
|
848
1232
|
"path": "scripts/generate-lite-manifest.sh",
|
|
849
1233
|
"tier": "lite",
|
|
850
|
-
"content_hash": "sha256:
|
|
1234
|
+
"content_hash": "sha256:f14fc1be68d166fbf67bce45fc51d7a46cc9f037e17f3742d877809f417ecb9c",
|
|
851
1235
|
"description": "Generate lite-manifest.json at repo root."
|
|
852
1236
|
},
|
|
853
1237
|
{
|
|
@@ -887,8 +1271,8 @@
|
|
|
887
1271
|
"type": "skill",
|
|
888
1272
|
"path": ".claude/skills/build/SKILL.md",
|
|
889
1273
|
"tier": "lite",
|
|
890
|
-
"content_hash": "sha256:
|
|
891
|
-
"description": "Take a buildable plan and ship it. Reads
|
|
1274
|
+
"content_hash": "sha256:256e9f6d8beb1c2aecdfe8aa46692284285369ec4bd1a8ca75c92d7123daba95",
|
|
1275
|
+
"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.",
|
|
892
1276
|
"inputs": [
|
|
893
1277
|
"A goal slug pointing to a spec on disk"
|
|
894
1278
|
],
|
|
@@ -901,13 +1285,50 @@
|
|
|
901
1285
|
"problem": "A buildable plan sits on disk. Nothing ships until someone writes code and PRs and gates prod.",
|
|
902
1286
|
"value": "Reads the plan and ships it. Runs the whole cycle so you can watch instead of type."
|
|
903
1287
|
},
|
|
1288
|
+
{
|
|
1289
|
+
"slug": "chronicle",
|
|
1290
|
+
"type": "skill",
|
|
1291
|
+
"path": ".claude/skills/chronicle/SKILL.md",
|
|
1292
|
+
"tier": "lite",
|
|
1293
|
+
"content_hash": "sha256:ac4b6594677e474ca8072b69264e8310d4da13e752a4c76e689c26dee531678c",
|
|
1294
|
+
"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.",
|
|
1295
|
+
"composes_with": [
|
|
1296
|
+
"session-log"
|
|
1297
|
+
],
|
|
1298
|
+
"inputs": [
|
|
1299
|
+
"Optional session or goal ref"
|
|
1300
|
+
],
|
|
1301
|
+
"outputs": [
|
|
1302
|
+
"Session log entry at chronicle/*"
|
|
1303
|
+
],
|
|
1304
|
+
"problem": "Grace-window sessions still call for /chronicle. New alias for /session-log keeps both live.",
|
|
1305
|
+
"value": "Writes the session log through the grace window. Same output as /session-log."
|
|
1306
|
+
},
|
|
1307
|
+
{
|
|
1308
|
+
"slug": "clean-artifacts",
|
|
1309
|
+
"type": "skill",
|
|
1310
|
+
"path": ".claude/skills/clean-artifacts/SKILL.md",
|
|
1311
|
+
"tier": "lite",
|
|
1312
|
+
"content_hash": "sha256:d408a989e4a574d6101f52946aa2378559b357f3b664466915f2a0fef75c8bbd",
|
|
1313
|
+
"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.",
|
|
1314
|
+
"inputs": [
|
|
1315
|
+
"Optional --dry-run flag"
|
|
1316
|
+
],
|
|
1317
|
+
"outputs": [
|
|
1318
|
+
"Files removed by class",
|
|
1319
|
+
"Skipped safety-list entries",
|
|
1320
|
+
"Total space reclaimed"
|
|
1321
|
+
],
|
|
1322
|
+
"problem": "Workflow exhaust piles up — stale verify markers, old screenshots, expired SDLC traces.",
|
|
1323
|
+
"value": "Sweeps three classes of exhaust from the working tree. Idempotent. Safe by exclusion list."
|
|
1324
|
+
},
|
|
904
1325
|
{
|
|
905
1326
|
"slug": "decompose",
|
|
906
1327
|
"type": "skill",
|
|
907
1328
|
"path": ".claude/skills/decompose/SKILL.md",
|
|
908
1329
|
"tier": "lite",
|
|
909
|
-
"content_hash": "sha256:
|
|
910
|
-
"description": "
|
|
1330
|
+
"content_hash": "sha256:c63846fb14847f638fce848553a4a2c7ed777de4c917c00fe2ba29f42b7d3717",
|
|
1331
|
+
"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.",
|
|
911
1332
|
"composes_with": [
|
|
912
1333
|
"spec",
|
|
913
1334
|
"ia-model",
|
|
@@ -932,8 +1353,8 @@
|
|
|
932
1353
|
"type": "skill",
|
|
933
1354
|
"path": ".claude/skills/diagnose/SKILL.md",
|
|
934
1355
|
"tier": "lite",
|
|
935
|
-
"content_hash": "sha256:
|
|
936
|
-
"description": "Diagnose a defect before fixing
|
|
1356
|
+
"content_hash": "sha256:36c92a85d63e1f87f19a389ce56af5cba250f0fd77c349e7573176d9e8cf8849",
|
|
1357
|
+
"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.",
|
|
937
1358
|
"inputs": [
|
|
938
1359
|
"A failing test or error log",
|
|
939
1360
|
"A bug ticket or screenshot"
|
|
@@ -947,13 +1368,31 @@
|
|
|
947
1368
|
"problem": "Bugs get fixed on guesses. The wrong cause gets patched. The class comes back a week later.",
|
|
948
1369
|
"value": "A short trace from failure to root cause. You fix the class once instead of the instance three times."
|
|
949
1370
|
},
|
|
1371
|
+
{
|
|
1372
|
+
"slug": "feynman",
|
|
1373
|
+
"type": "skill",
|
|
1374
|
+
"path": ".claude/skills/feynman/SKILL.md",
|
|
1375
|
+
"tier": "lite",
|
|
1376
|
+
"content_hash": "sha256:adee64105a432da8c3a9c8d98bffc505ac1f334e727ea3e33f063934d78731d2",
|
|
1377
|
+
"description": "Explain a technical concept in plain English — Feynman style. For CTO-vettable sidebars in journal entries or standalone micro-posts.",
|
|
1378
|
+
"inputs": [
|
|
1379
|
+
"A concept name or paragraph text"
|
|
1380
|
+
],
|
|
1381
|
+
"outputs": [
|
|
1382
|
+
"Feynman-style explanation",
|
|
1383
|
+
"Analogy anchors",
|
|
1384
|
+
"Grade-8 prose"
|
|
1385
|
+
],
|
|
1386
|
+
"problem": "Technical concepts get explained with jargon. Non-technical readers stop reading.",
|
|
1387
|
+
"value": "Explains a technical concept in plain English — Feynman style. For CTO-vettable sidebars in journal entries."
|
|
1388
|
+
},
|
|
950
1389
|
{
|
|
951
1390
|
"slug": "howdoi",
|
|
952
1391
|
"type": "skill",
|
|
953
1392
|
"path": ".claude/skills/howdoi/SKILL.md",
|
|
954
1393
|
"tier": "lite",
|
|
955
|
-
"content_hash": "sha256:
|
|
956
|
-
"description": "
|
|
1394
|
+
"content_hash": "sha256:4c2d3e9310fed5c294764a77aba62afb42c0696bd2e401a7bad8ce44537a577d",
|
|
1395
|
+
"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.",
|
|
957
1396
|
"inputs": [
|
|
958
1397
|
"A one-sentence goal in plain English"
|
|
959
1398
|
],
|
|
@@ -969,8 +1408,8 @@
|
|
|
969
1408
|
"type": "skill",
|
|
970
1409
|
"path": ".claude/skills/ia-model/SKILL.md",
|
|
971
1410
|
"tier": "lite",
|
|
972
|
-
"content_hash": "sha256:
|
|
973
|
-
"description": "Build information architecture from entity inventory
|
|
1411
|
+
"content_hash": "sha256:f1571468b8a84a0e6a3f1babea6db21d18282ce94ff1eb5b1a0e2ca758f5cb28",
|
|
1412
|
+
"description": "Build information architecture from an entity inventory plus task flows. Derives nav structure, labeling, and screen map from the domain nouns.",
|
|
974
1413
|
"inputs": [
|
|
975
1414
|
"Task flows from spec",
|
|
976
1415
|
"Entity inventory from decompose"
|
|
@@ -988,8 +1427,8 @@
|
|
|
988
1427
|
"type": "skill",
|
|
989
1428
|
"path": ".claude/skills/interaction-design/SKILL.md",
|
|
990
1429
|
"tier": "lite",
|
|
991
|
-
"content_hash": "sha256:
|
|
992
|
-
"description": "IA
|
|
1430
|
+
"content_hash": "sha256:fde42694455cfecd84aa51a616ea4dc96b9bd33ffbf807f36ba0a2ab0343eaaa",
|
|
1431
|
+
"description": "Turn IA plus task flows into interaction design — state diagrams, sequence diagrams, user flows. Final step in the UX translation chain before decompose.",
|
|
993
1432
|
"inputs": [
|
|
994
1433
|
"IA model plus task flows"
|
|
995
1434
|
],
|
|
@@ -1006,24 +1445,41 @@
|
|
|
1006
1445
|
"type": "skill",
|
|
1007
1446
|
"path": ".claude/skills/interpret-input/SKILL.md",
|
|
1008
1447
|
"tier": "lite",
|
|
1009
|
-
"content_hash": "sha256:
|
|
1010
|
-
"description": "
|
|
1448
|
+
"content_hash": "sha256:83ad77b1963f620eb4cde6b0578d63fdbd6214e552141ca7beef148453ab27a2",
|
|
1449
|
+
"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.",
|
|
1011
1450
|
"inputs": [
|
|
1012
1451
|
"Any input — text or URL or image or repo ref or transcript"
|
|
1013
1452
|
],
|
|
1014
1453
|
"outputs": [
|
|
1015
1454
|
"A schema-validated InputArtifact with kind and content"
|
|
1016
1455
|
],
|
|
1017
|
-
"problem": "Different sessions start with different input shapes
|
|
1456
|
+
"problem": "Different sessions start with different input shapes — text or URL or image or repo or transcript.",
|
|
1018
1457
|
"value": "One schema-validated artifact from any input. Downstream skills read one shape not seven."
|
|
1019
1458
|
},
|
|
1459
|
+
{
|
|
1460
|
+
"slug": "journal",
|
|
1461
|
+
"type": "skill",
|
|
1462
|
+
"path": ".claude/skills/journal/SKILL.md",
|
|
1463
|
+
"tier": "lite",
|
|
1464
|
+
"content_hash": "sha256:2c1b578fdc781165f3749420d5e8e3a20c5df922e0b18f64266b67ab7de8d843",
|
|
1465
|
+
"description": "Draft a journal entry from this session's work — tuned to PE, search, and board audiences per the writing guide and brand questionnaire.",
|
|
1466
|
+
"inputs": [
|
|
1467
|
+
"Optional audience filter — PE or search or board"
|
|
1468
|
+
],
|
|
1469
|
+
"outputs": [
|
|
1470
|
+
"Journal draft with voice per audience",
|
|
1471
|
+
"Audience recommendations table"
|
|
1472
|
+
],
|
|
1473
|
+
"problem": "Session work fades from memory. Insight worth sharing with PE partners or eng leaders never gets written.",
|
|
1474
|
+
"value": "Drafts a journal entry from this session's work. Tuned for PE, search, and board audiences."
|
|
1475
|
+
},
|
|
1020
1476
|
{
|
|
1021
1477
|
"slug": "kiss",
|
|
1022
1478
|
"type": "skill",
|
|
1023
1479
|
"path": ".claude/skills/kiss/SKILL.md",
|
|
1024
1480
|
"tier": "lite",
|
|
1025
|
-
"content_hash": "sha256:
|
|
1026
|
-
"description": "Keep
|
|
1481
|
+
"content_hash": "sha256:5f490b66e0a043a485a47ab224f50ab5d5fc316811573d604ed3a84feadb3db6",
|
|
1482
|
+
"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.",
|
|
1027
1483
|
"composes_with": [
|
|
1028
1484
|
"value-prop",
|
|
1029
1485
|
"feynman"
|
|
@@ -1037,15 +1493,15 @@
|
|
|
1037
1493
|
"Grade-8 rewrite when words"
|
|
1038
1494
|
],
|
|
1039
1495
|
"problem": "Scope grows. Prose fills with jargon. Adopters read a wall of bassclef-internal words and give up.",
|
|
1040
|
-
"value": "Two modes
|
|
1496
|
+
"value": "Two modes — scope compresses what ships. Words rewrites vocabulary to grade 8. Plain English at the wire."
|
|
1041
1497
|
},
|
|
1042
1498
|
{
|
|
1043
1499
|
"slug": "launch",
|
|
1044
1500
|
"type": "skill",
|
|
1045
1501
|
"path": ".claude/skills/launch/SKILL.md",
|
|
1046
1502
|
"tier": "lite",
|
|
1047
|
-
"content_hash": "sha256:
|
|
1048
|
-
"description": "Turn an idea into a buildable plan.
|
|
1503
|
+
"content_hash": "sha256:c62c19ce308db5bca3d8526d23bfa8569b1f35a39281dcc0db85bbd7d7f3a027",
|
|
1504
|
+
"description": "Turn an idea into a buildable plan. Ships a clickable mock gallery plus the spec, user stories, decomposition, and migration plan. Two sizes: medium and full. Two deploy modes: extended (subdomain) and --local (localhost).",
|
|
1049
1505
|
"inputs": [
|
|
1050
1506
|
"A rough idea or ticket or canvas"
|
|
1051
1507
|
],
|
|
@@ -1056,15 +1512,15 @@
|
|
|
1056
1512
|
"GRASP responsibility matrix"
|
|
1057
1513
|
],
|
|
1058
1514
|
"problem": "An idea is a doc. A working feature is code. The gap in between is where projects stall.",
|
|
1059
|
-
"value": "Turns an idea into a buildable plan
|
|
1515
|
+
"value": "Turns an idea into a buildable plan — mock gallery and spec and INVEST stories. Ready for /build."
|
|
1060
1516
|
},
|
|
1061
1517
|
{
|
|
1062
1518
|
"slug": "lean-canvas",
|
|
1063
1519
|
"type": "skill",
|
|
1064
1520
|
"path": ".claude/skills/lean-canvas/SKILL.md",
|
|
1065
1521
|
"tier": "lite",
|
|
1066
|
-
"content_hash": "sha256:
|
|
1067
|
-
"description": "Produce a Lean Canvas — Ash Maurya's 9-box
|
|
1522
|
+
"content_hash": "sha256:df18d2e623b80b1f9e480e2d9c8ebd05f86b9226cb72c5b2e08857e37d7cfe43",
|
|
1523
|
+
"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.",
|
|
1068
1524
|
"inputs": [
|
|
1069
1525
|
"Personas file",
|
|
1070
1526
|
"Value proposition data",
|
|
@@ -1082,8 +1538,8 @@
|
|
|
1082
1538
|
"type": "skill",
|
|
1083
1539
|
"path": ".claude/skills/longrun/SKILL.md",
|
|
1084
1540
|
"tier": "lite",
|
|
1085
|
-
"content_hash": "sha256:
|
|
1086
|
-
"description": "Run a long autonomous session that paces itself
|
|
1541
|
+
"content_hash": "sha256:a3fcae9f836ed6aec94b6e62b808bfefd434cc10e191bbbd7759049d64fe14e3",
|
|
1542
|
+
"description": "Run a long autonomous session that paces itself. Prepares scope. Checkpoints at phase boundaries. Closes with session log and retrospective. Three modes: prep, checkpoint, closeout.",
|
|
1087
1543
|
"composes_with": [
|
|
1088
1544
|
"value-prop",
|
|
1089
1545
|
"kiss",
|
|
@@ -1105,15 +1561,15 @@
|
|
|
1105
1561
|
"Session log at closeout"
|
|
1106
1562
|
],
|
|
1107
1563
|
"problem": "Sessions over 50 turns drift. Context compacts and the goal disappears.",
|
|
1108
|
-
"value": "A long autonomous session that paces itself. Prep and checkpoint and closeout
|
|
1564
|
+
"value": "A long autonomous session that paces itself. Prep and checkpoint and closeout — clean state every wake."
|
|
1109
1565
|
},
|
|
1110
1566
|
{
|
|
1111
1567
|
"slug": "luminary",
|
|
1112
1568
|
"type": "skill",
|
|
1113
1569
|
"path": ".claude/skills/luminary/SKILL.md",
|
|
1114
1570
|
"tier": "lite",
|
|
1115
|
-
"content_hash": "sha256:
|
|
1116
|
-
"description": "Browse and preview luminary files
|
|
1571
|
+
"content_hash": "sha256:b7399429963452f19e63cfc5cdef10ced8ebe15aedf005b3b41fbc58f10a5512",
|
|
1572
|
+
"description": "Browse and preview luminary files. Filter by discipline (ux, visual, architecture, product), by claiming agent (designer, architect), or preview a specific luminary by slug. Catalog analog to /skills.",
|
|
1117
1573
|
"inputs": [
|
|
1118
1574
|
"Optional discipline filter — ux or visual or architecture or product"
|
|
1119
1575
|
],
|
|
@@ -1129,8 +1585,8 @@
|
|
|
1129
1585
|
"type": "skill",
|
|
1130
1586
|
"path": ".claude/skills/ogilvy-writing-audit/SKILL.md",
|
|
1131
1587
|
"tier": "lite",
|
|
1132
|
-
"content_hash": "sha256:
|
|
1133
|
-
"description": "Audit prose against Ogilvy's 10 writing rules
|
|
1588
|
+
"content_hash": "sha256:97ea7bf9dccd30a3ad157b34a1eeba778431f516e48e1b656bf21b4b4e1a885a",
|
|
1589
|
+
"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'.",
|
|
1134
1590
|
"composes_with": [
|
|
1135
1591
|
"kiss"
|
|
1136
1592
|
],
|
|
@@ -1149,8 +1605,8 @@
|
|
|
1149
1605
|
"type": "skill",
|
|
1150
1606
|
"path": ".claude/skills/onboard-repo/SKILL.md",
|
|
1151
1607
|
"tier": "lite",
|
|
1152
|
-
"content_hash": "sha256:
|
|
1153
|
-
"description": "Bootstrap bassclef framework in a new repo. Installs sync hook
|
|
1608
|
+
"content_hash": "sha256:9969026b7611ea329488c82a98541cb88eec2a416987f3c6f21ee952e81ca478",
|
|
1609
|
+
"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).",
|
|
1154
1610
|
"inputs": [
|
|
1155
1611
|
"Optional flags — --with-deploy-host or --with-secrets or --full"
|
|
1156
1612
|
],
|
|
@@ -1160,15 +1616,15 @@
|
|
|
1160
1616
|
"Whereami stub"
|
|
1161
1617
|
],
|
|
1162
1618
|
"problem": "Setting up bassclef in a new repo takes an hour of trial. Missing directories and wrong hook wiring.",
|
|
1163
|
-
"value": "One command bootstraps everything
|
|
1619
|
+
"value": "One command bootstraps everything — sync hook and config file and whereami scaffold."
|
|
1164
1620
|
},
|
|
1165
1621
|
{
|
|
1166
1622
|
"slug": "pattern-review",
|
|
1167
1623
|
"type": "skill",
|
|
1168
1624
|
"path": ".claude/skills/pattern-review/SKILL.md",
|
|
1169
1625
|
"tier": "lite",
|
|
1170
|
-
"content_hash": "sha256:
|
|
1171
|
-
"description": "Review code through the lens of world-class engineering patterns — GoF, Fowler, SOLID, DDD. Flag violations
|
|
1626
|
+
"content_hash": "sha256:de9793afcf7e575e22bab2bc97c7e42b5e1b065dd6c9e5395b56c6d9823cb7c4",
|
|
1627
|
+
"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.",
|
|
1172
1628
|
"inputs": [
|
|
1173
1629
|
"A file path or PR ref or code block"
|
|
1174
1630
|
],
|
|
@@ -1185,7 +1641,7 @@
|
|
|
1185
1641
|
"type": "skill",
|
|
1186
1642
|
"path": ".claude/skills/personas/SKILL.md",
|
|
1187
1643
|
"tier": "lite",
|
|
1188
|
-
"content_hash": "sha256:
|
|
1644
|
+
"content_hash": "sha256:c03a2e1235ef7774fa014aff0e3690e6c81224887c46c8bcf7690ce7a80b5e19",
|
|
1189
1645
|
"description": "Load, list, and manage user personas — the bassclef WHO record. Downstream skills (value-prop-canvas, synthetic-user, user-stories, jtbd-tasks) read from its output. Defaults to operator when no personas exist.",
|
|
1190
1646
|
"inputs": [
|
|
1191
1647
|
"Manage command — list or add or edit or delete"
|
|
@@ -1202,8 +1658,8 @@
|
|
|
1202
1658
|
"type": "skill",
|
|
1203
1659
|
"path": ".claude/skills/promote/SKILL.md",
|
|
1204
1660
|
"tier": "lite",
|
|
1205
|
-
"content_hash": "sha256:
|
|
1206
|
-
"description": "Propose promoting
|
|
1661
|
+
"content_hash": "sha256:4ca532e4c28e5eca00820b545df210ad1f41b75aa5b8056e680bd0707ee9cc0b",
|
|
1662
|
+
"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.",
|
|
1207
1663
|
"composes_with": [
|
|
1208
1664
|
"state-a-problem",
|
|
1209
1665
|
"kiss",
|
|
@@ -1224,8 +1680,8 @@
|
|
|
1224
1680
|
"type": "skill",
|
|
1225
1681
|
"path": ".claude/skills/requirement/SKILL.md",
|
|
1226
1682
|
"tier": "lite",
|
|
1227
|
-
"content_hash": "sha256:
|
|
1228
|
-
"description": "Produce Cockburn use cases
|
|
1683
|
+
"content_hash": "sha256:527fead149e6330901010533db3907a867afb53ee3c6eec1a49a77a827a043f8",
|
|
1684
|
+
"description": "Produce Cockburn use cases plus INVEST user stories for a feature in one pass. Sam writes formal use cases for a spec. Louis writes INVEST stories for a backlog. You get both from one operator input. Combines /use-case + /user-stories.",
|
|
1229
1685
|
"composes_with": [
|
|
1230
1686
|
"use-case",
|
|
1231
1687
|
"user-stories",
|
|
@@ -1246,8 +1702,8 @@
|
|
|
1246
1702
|
"type": "skill",
|
|
1247
1703
|
"path": ".claude/skills/retro/SKILL.md",
|
|
1248
1704
|
"tier": "lite",
|
|
1249
|
-
"content_hash": "sha256:
|
|
1250
|
-
"description": "
|
|
1705
|
+
"content_hash": "sha256:4a120be15c22cbeac57307a0c7f2748193676500219a422a8daf7cf0207b43a0",
|
|
1706
|
+
"description": "Reflect at session close. Names what worked, what didn't, and what to change next time. Feeds candidate follow-on tickets.",
|
|
1251
1707
|
"inputs": [
|
|
1252
1708
|
"Optional session or goal ref"
|
|
1253
1709
|
],
|
|
@@ -1255,7 +1711,7 @@
|
|
|
1255
1711
|
"Kept and Changed and Learned sections",
|
|
1256
1712
|
"Follow-on ticket candidates"
|
|
1257
1713
|
],
|
|
1258
|
-
"problem": "Sessions end and the lessons vanish. What worked and what broke
|
|
1714
|
+
"problem": "Sessions end and the lessons vanish. What worked and what broke — nowhere written.",
|
|
1259
1715
|
"value": "A short retro that names what to keep and what to change next session."
|
|
1260
1716
|
},
|
|
1261
1717
|
{
|
|
@@ -1263,8 +1719,8 @@
|
|
|
1263
1719
|
"type": "skill",
|
|
1264
1720
|
"path": ".claude/skills/riff/SKILL.md",
|
|
1265
1721
|
"tier": "lite",
|
|
1266
|
-
"content_hash": "sha256:
|
|
1267
|
-
"description": "Produce 2-3 clickable mock alternatives for a UI surface. Each mock uses a different luminary lens. Louis picks a marketing variant. Sam picks a direction before building. Combines /interpret-input + /luminary + /stage
|
|
1722
|
+
"content_hash": "sha256:692f69bfdc0f0a4832b4331a3116c38277e0589f062d5bb244b0e5d74284616c",
|
|
1723
|
+
"description": "Produce 2-3 clickable mock alternatives for a UI surface. Each mock uses a different luminary lens. Louis picks a marketing variant. Sam picks a direction before building. Combines /interpret-input + /luminary + /stage + /visual-review.",
|
|
1268
1724
|
"composes_with": [
|
|
1269
1725
|
"interpret-input",
|
|
1270
1726
|
"luminary",
|
|
@@ -1285,8 +1741,8 @@
|
|
|
1285
1741
|
"type": "skill",
|
|
1286
1742
|
"path": ".claude/skills/roadmap-reconcile/SKILL.md",
|
|
1287
1743
|
"tier": "lite",
|
|
1288
|
-
"content_hash": "sha256:
|
|
1289
|
-
"description": "Audit canvas LR-N tables and roadmap entries against recent chronicles, merged PRs, and freshly-filed tickets
|
|
1744
|
+
"content_hash": "sha256:b46e232e9e2b14e930ccfadd8ce8f75c504f1b46cf00782e55b3181012f4a656",
|
|
1745
|
+
"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.",
|
|
1290
1746
|
"inputs": [
|
|
1291
1747
|
"Optional --dry-run or --apply flag",
|
|
1292
1748
|
"Roadmap path or canvas ref"
|
|
@@ -1304,8 +1760,8 @@
|
|
|
1304
1760
|
"type": "skill",
|
|
1305
1761
|
"path": ".claude/skills/session-end/SKILL.md",
|
|
1306
1762
|
"tier": "lite",
|
|
1307
|
-
"content_hash": "sha256:
|
|
1308
|
-
"description": "Close the session cleanly
|
|
1763
|
+
"content_hash": "sha256:2b71c7f1d795e8b5360a42320329849b3c4ee2532797cb2628c392c8fea9191a",
|
|
1764
|
+
"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.",
|
|
1309
1765
|
"composes_with": [
|
|
1310
1766
|
"chronicle",
|
|
1311
1767
|
"whereami",
|
|
@@ -1333,8 +1789,8 @@
|
|
|
1333
1789
|
"type": "skill",
|
|
1334
1790
|
"path": ".claude/skills/session-log/SKILL.md",
|
|
1335
1791
|
"tier": "lite",
|
|
1336
|
-
"content_hash": "sha256:
|
|
1337
|
-
"description": "Write the session's log entry — what shipped, what was decided, what's still open. Reads the day's commits and conversation
|
|
1792
|
+
"content_hash": "sha256:7e988e3d209239fe6c057ae0f62bd424b3f0e76bd98dd8d0d196892b65628602",
|
|
1793
|
+
"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.",
|
|
1338
1794
|
"composes_with": [
|
|
1339
1795
|
"kiss",
|
|
1340
1796
|
"promote",
|
|
@@ -1355,8 +1811,8 @@
|
|
|
1355
1811
|
"type": "skill",
|
|
1356
1812
|
"path": ".claude/skills/skills/SKILL.md",
|
|
1357
1813
|
"tier": "lite",
|
|
1358
|
-
"content_hash": "sha256:
|
|
1359
|
-
"description": "Browse the skill catalog live
|
|
1814
|
+
"content_hash": "sha256:6472c85a85872e3f49866e36fa342a214944f98e200605d4b1443e80f917379c",
|
|
1815
|
+
"description": "Browse the skill catalog live. Every skill grouped by discovery cluster with descriptions, modes, and key chains. Reads SKILL.md frontmatter directly so the catalog explains itself.",
|
|
1360
1816
|
"inputs": [
|
|
1361
1817
|
"Optional filter — cluster name or phase or keyword"
|
|
1362
1818
|
],
|
|
@@ -1373,8 +1829,8 @@
|
|
|
1373
1829
|
"type": "skill",
|
|
1374
1830
|
"path": ".claude/skills/spec/SKILL.md",
|
|
1375
1831
|
"tier": "lite",
|
|
1376
|
-
"content_hash": "sha256:
|
|
1377
|
-
"description": "
|
|
1832
|
+
"content_hash": "sha256:270434f4df108dda39b147e608813112605a6fa14cafb84a9a0ff036398cec3f",
|
|
1833
|
+
"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.",
|
|
1378
1834
|
"inputs": [
|
|
1379
1835
|
"A canvas path or issue ref or scope description"
|
|
1380
1836
|
],
|
|
@@ -1391,8 +1847,8 @@
|
|
|
1391
1847
|
"type": "skill",
|
|
1392
1848
|
"path": ".claude/skills/sprint/SKILL.md",
|
|
1393
1849
|
"tier": "lite",
|
|
1394
|
-
"content_hash": "sha256:
|
|
1395
|
-
"description": "Show what's in flight and what's next. Reads project state, open issues, and the active goal
|
|
1850
|
+
"content_hash": "sha256:e4009cc29324c91443c05296d2146357ef185b617944933f10ac37d9c3757226",
|
|
1851
|
+
"description": "Show what's in flight and what's next. Reads project state, open issues, and the active goal. Proposes the next sprint at thread level, not just the nearest leaf. Run at session start.",
|
|
1396
1852
|
"composes_with": [
|
|
1397
1853
|
"value-prop",
|
|
1398
1854
|
"kiss",
|
|
@@ -1414,8 +1870,8 @@
|
|
|
1414
1870
|
"type": "skill",
|
|
1415
1871
|
"path": ".claude/skills/stage/SKILL.md",
|
|
1416
1872
|
"tier": "lite",
|
|
1417
|
-
"content_hash": "sha256:
|
|
1418
|
-
"description": "Turn an idea into clickable mock variants on a deployed subdomain. Two sizes: quick (~30 min, 2 variants) and light (~2h, 3 variants
|
|
1873
|
+
"content_hash": "sha256:c6de3e0b742bccc5afffc8d78674166092c5e59552b89a7979c4ae0eb743526f",
|
|
1874
|
+
"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.",
|
|
1419
1875
|
"inputs": [
|
|
1420
1876
|
"A UI intent or design goal",
|
|
1421
1877
|
"Optional size — quick or light"
|
|
@@ -1432,8 +1888,8 @@
|
|
|
1432
1888
|
"type": "skill",
|
|
1433
1889
|
"path": ".claude/skills/state-a-problem/SKILL.md",
|
|
1434
1890
|
"tier": "lite",
|
|
1435
|
-
"content_hash": "sha256:
|
|
1436
|
-
"description": "Draft a problem statement for a PR, issue, canvas, or spec. Two sizes
|
|
1891
|
+
"content_hash": "sha256:47c14fab6014b82dfa82183a83cbff37005db75f2a436cdb57266b89ba7c5736",
|
|
1892
|
+
"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.",
|
|
1437
1893
|
"composes_with": [
|
|
1438
1894
|
"kiss",
|
|
1439
1895
|
"value-prop"
|
|
@@ -1453,8 +1909,8 @@
|
|
|
1453
1909
|
"type": "skill",
|
|
1454
1910
|
"path": ".claude/skills/temperance/SKILL.md",
|
|
1455
1911
|
"tier": "lite",
|
|
1456
|
-
"content_hash": "sha256:
|
|
1457
|
-
"description": "Pause
|
|
1912
|
+
"content_hash": "sha256:3402ca1c510b0877688d0e4a2151214d8b6ef5567d787de15687651a90b1c92c",
|
|
1913
|
+
"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.",
|
|
1458
1914
|
"inputs": [
|
|
1459
1915
|
"Optional scope decision context"
|
|
1460
1916
|
],
|
|
@@ -1471,8 +1927,8 @@
|
|
|
1471
1927
|
"type": "skill",
|
|
1472
1928
|
"path": ".claude/skills/use-case/SKILL.md",
|
|
1473
1929
|
"tier": "lite",
|
|
1474
|
-
"content_hash": "sha256:
|
|
1475
|
-
"description": "Produce Cockburn-style use cases — main success scenario
|
|
1930
|
+
"content_hash": "sha256:82c16334720b14205f3c7f3f341c27a026872fadca6cfad4affa932abed0df18",
|
|
1931
|
+
"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).",
|
|
1476
1932
|
"inputs": [
|
|
1477
1933
|
"A feature or persona-scoped scope"
|
|
1478
1934
|
],
|
|
@@ -1489,8 +1945,8 @@
|
|
|
1489
1945
|
"type": "skill",
|
|
1490
1946
|
"path": ".claude/skills/user-stories/SKILL.md",
|
|
1491
1947
|
"tier": "lite",
|
|
1492
|
-
"content_hash": "sha256:
|
|
1493
|
-
"description": "Produce INVEST-shaped user stories that trace back to personas, JTBDs, and value-prop-canvas entries. Backlog-intake artifact for incremental delivery. Distinct from /task-scenarios (UX
|
|
1948
|
+
"content_hash": "sha256:70f1fe80d9bd84cc422c2a96284f521c994f60efd4f0013f37e7b929ec3268ea",
|
|
1949
|
+
"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).",
|
|
1494
1950
|
"inputs": [
|
|
1495
1951
|
"A feature scope plus personas ref"
|
|
1496
1952
|
],
|
|
@@ -1506,8 +1962,8 @@
|
|
|
1506
1962
|
"type": "skill",
|
|
1507
1963
|
"path": ".claude/skills/value-prop/SKILL.md",
|
|
1508
1964
|
"tier": "lite",
|
|
1509
|
-
"content_hash": "sha256:
|
|
1510
|
-
"description": "Draft a value prop for a ticket, goal, or feature. Three sizes
|
|
1965
|
+
"content_hash": "sha256:2076942e47fd906a53e9069102535cf05b947c56118d8428b90957d294e9f316",
|
|
1966
|
+
"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.",
|
|
1511
1967
|
"inputs": [
|
|
1512
1968
|
"A ticket ref or doc path or scope description",
|
|
1513
1969
|
"Optional size — tweet or brief or verbose"
|
|
@@ -1517,15 +1973,15 @@
|
|
|
1517
1973
|
"Ready to paste as opener"
|
|
1518
1974
|
],
|
|
1519
1975
|
"problem": "PR bodies and ticket bodies open with solution-framing. The reader has no reason to care.",
|
|
1520
|
-
"value": "One line that names claim plus sharpener. Three sizes
|
|
1976
|
+
"value": "One line that names claim plus sharpener. Three sizes — tweet and brief and verbose."
|
|
1521
1977
|
},
|
|
1522
1978
|
{
|
|
1523
1979
|
"slug": "verify",
|
|
1524
1980
|
"type": "skill",
|
|
1525
1981
|
"path": ".claude/skills/verify/SKILL.md",
|
|
1526
1982
|
"tier": "lite",
|
|
1527
|
-
"content_hash": "sha256:
|
|
1528
|
-
"description": "
|
|
1983
|
+
"content_hash": "sha256:031886691ef69ba72110b918fe2b07af31ff7f51e2489eb3aba2c2372b609200",
|
|
1984
|
+
"description": "Verify post-build before committing. Matches change type to check list. Writes a marker the pre-commit hook reads. Runs after each task.",
|
|
1529
1985
|
"inputs": [
|
|
1530
1986
|
"Change type or scope hint"
|
|
1531
1987
|
],
|
|
@@ -1537,12 +1993,48 @@
|
|
|
1537
1993
|
"problem": "Tests run but scope-drift and missed acceptance and ADR violations slip through.",
|
|
1538
1994
|
"value": "Post-build gate that matches change type to check list. Runs before commit not after."
|
|
1539
1995
|
},
|
|
1996
|
+
{
|
|
1997
|
+
"slug": "visual-review",
|
|
1998
|
+
"type": "skill",
|
|
1999
|
+
"path": ".claude/skills/visual-review/SKILL.md",
|
|
2000
|
+
"tier": "lite",
|
|
2001
|
+
"content_hash": "sha256:d9239fb8d5048ab21b58e4abd1fa675f1d5ed5fab70eed549613e58d4243bca7",
|
|
2002
|
+
"description": "Visual UX review — screenshot a rendered page and evaluate against design tokens, usability standard, and Creative Director / Designer luminaries. Requires Playwright MCP.",
|
|
2003
|
+
"inputs": [
|
|
2004
|
+
"Page URL and viewport"
|
|
2005
|
+
],
|
|
2006
|
+
"outputs": [
|
|
2007
|
+
"Screenshot at each viewport",
|
|
2008
|
+
"Findings per usability rule",
|
|
2009
|
+
"Token alignment report"
|
|
2010
|
+
],
|
|
2011
|
+
"problem": "Rendered pages ship with visual regressions. Design tokens drift from usability standards.",
|
|
2012
|
+
"value": "Visual UX review — screenshot a rendered page and evaluate against design tokens plus usability."
|
|
2013
|
+
},
|
|
2014
|
+
{
|
|
2015
|
+
"slug": "whats-the-plan",
|
|
2016
|
+
"type": "skill",
|
|
2017
|
+
"path": ".claude/skills/whats-the-plan/SKILL.md",
|
|
2018
|
+
"tier": "lite",
|
|
2019
|
+
"content_hash": "sha256:7094cd419af9972aa65f4ac55c0261e52405bd8ae4f152301ba255e49ab47e2e",
|
|
2020
|
+
"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.",
|
|
2021
|
+
"inputs": [
|
|
2022
|
+
"Current task or scope description"
|
|
2023
|
+
],
|
|
2024
|
+
"outputs": [
|
|
2025
|
+
"Ordered skill chain",
|
|
2026
|
+
"Rationale per step",
|
|
2027
|
+
"Alternative chains"
|
|
2028
|
+
],
|
|
2029
|
+
"problem": "Multi-skill chains dispatch without declaring the plan. Operator can't audit mid-flight.",
|
|
2030
|
+
"value": "Declares the chain of skills you intend to run. Invokable before you start."
|
|
2031
|
+
},
|
|
1540
2032
|
{
|
|
1541
2033
|
"slug": "whereami",
|
|
1542
2034
|
"type": "skill",
|
|
1543
2035
|
"path": ".claude/skills/whereami/SKILL.md",
|
|
1544
2036
|
"tier": "lite",
|
|
1545
|
-
"content_hash": "sha256:
|
|
2037
|
+
"content_hash": "sha256:dd5ba20dbfbc2168a10d0b9b42ff85827423aad69192e5b8cede579b4d672315",
|
|
1546
2038
|
"description": "Show project state in one glance — phase, active goal, agents in flight, subsystem progress, gate checklist, freshness. Reads docs/whereami.md. Run at session start before /sprint to orient.",
|
|
1547
2039
|
"composes_with": [
|
|
1548
2040
|
"sprint",
|
|
@@ -1558,7 +2050,39 @@
|
|
|
1558
2050
|
"Gate progress"
|
|
1559
2051
|
],
|
|
1560
2052
|
"problem": "Project state lives across whereami and iteration goals and chronicles and git. No single-glance view.",
|
|
1561
|
-
"value": "Phase and active goal and agents in flight and gate progress
|
|
2053
|
+
"value": "Phase and active goal and agents in flight and gate progress — one page."
|
|
2054
|
+
},
|
|
2055
|
+
{
|
|
2056
|
+
"slug": "active-record",
|
|
2057
|
+
"type": "standard",
|
|
2058
|
+
"path": "standards/migration-discipline/active-record.md",
|
|
2059
|
+
"tier": "lite",
|
|
2060
|
+
"content_hash": "sha256:22c328a521d7ae0f604c7b9396f1d25b9bd63e899c4790a95e4a4a97e561720f",
|
|
2061
|
+
"description": "The ActiveRecord sibling of .claude/rules/schema-management.md."
|
|
2062
|
+
},
|
|
2063
|
+
{
|
|
2064
|
+
"slug": "alembic",
|
|
2065
|
+
"type": "standard",
|
|
2066
|
+
"path": "standards/migration-discipline/alembic.md",
|
|
2067
|
+
"tier": "lite",
|
|
2068
|
+
"content_hash": "sha256:ff624b11c3c3cea65c59ae6b3cbf5fb18963dcaaec737fe2411e19a586ce20ec",
|
|
2069
|
+
"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)."
|
|
2070
|
+
},
|
|
2071
|
+
{
|
|
2072
|
+
"slug": "artifact-composition",
|
|
2073
|
+
"type": "standard",
|
|
2074
|
+
"path": "standards/artifact-composition.md",
|
|
2075
|
+
"tier": "lite",
|
|
2076
|
+
"content_hash": "sha256:20c76a356086524d01bd444b56c358b43cf60289f713c2c5bbf492e5f5292900",
|
|
2077
|
+
"description": "The substrate has three artifact classes that logically compose into a work-decomposition tree."
|
|
2078
|
+
},
|
|
2079
|
+
{
|
|
2080
|
+
"slug": "bash-hook-safety",
|
|
2081
|
+
"type": "standard",
|
|
2082
|
+
"path": "standards/bash-hook-safety.md",
|
|
2083
|
+
"tier": "lite",
|
|
2084
|
+
"content_hash": "sha256:03a09192fbaf92140034072ddbd09c2a5abc0c3a576d5287c70b980b7723088e",
|
|
2085
|
+
"description": "This standard codifies the defensive coding discipline for bassclef's bash hooks (.claude/hooks/.sh) + supporting bash scripts (scripts/.sh, lib/*.sh)."
|
|
1562
2086
|
},
|
|
1563
2087
|
{
|
|
1564
2088
|
"slug": "bassclef-configs-schema",
|
|
@@ -1600,6 +2124,38 @@
|
|
|
1600
2124
|
"content_hash": "sha256:406b845be8898f00286b41d2511d95a44debcf6a0bb98e28389e77b18073ad86",
|
|
1601
2125
|
"description": "The thin-pointer bassclef-sync hook (presence/install/bassclef-sync.template.sh and consumer-vendored bassclef-sync.sh) has two paths to load bassclef's substrate:"
|
|
1602
2126
|
},
|
|
2127
|
+
{
|
|
2128
|
+
"slug": "branch-stacking",
|
|
2129
|
+
"type": "standard",
|
|
2130
|
+
"path": "standards/branch-stacking.md",
|
|
2131
|
+
"tier": "lite",
|
|
2132
|
+
"content_hash": "sha256:8c1ea15be632e969252b7206b99e57615b471541bc6994d8e5cb99725780cb91",
|
|
2133
|
+
"description": "Stacked atomic branches are the default for any iteration with N≥2 issues."
|
|
2134
|
+
},
|
|
2135
|
+
{
|
|
2136
|
+
"slug": "cargo",
|
|
2137
|
+
"type": "standard",
|
|
2138
|
+
"path": "standards/dependency-discipline/cargo.md",
|
|
2139
|
+
"tier": "lite",
|
|
2140
|
+
"content_hash": "sha256:797efaca51ae644760ad1329ef76b56037556aaac981fe36ff945263f737e98b",
|
|
2141
|
+
"description": "The Rust package-manager sibling of .claude/rules/new-dependency-check.md."
|
|
2142
|
+
},
|
|
2143
|
+
{
|
|
2144
|
+
"slug": "code-safety-principles",
|
|
2145
|
+
"type": "standard",
|
|
2146
|
+
"path": "standards/code-safety-principles.md",
|
|
2147
|
+
"tier": "lite",
|
|
2148
|
+
"content_hash": "sha256:4fb4c317e247fd64e1451a6fc65f198b30373fa38105271700ae4b09642d5163",
|
|
2149
|
+
"description": "This standard codifies language-agnostic principles for writing safer code across bassclef's supported stacks (TypeScript, Python, Ruby, Java, Go, bash)."
|
|
2150
|
+
},
|
|
2151
|
+
{
|
|
2152
|
+
"slug": "composer-prerequisites",
|
|
2153
|
+
"type": "standard",
|
|
2154
|
+
"path": "standards/composer-prerequisites.md",
|
|
2155
|
+
"tier": "lite",
|
|
2156
|
+
"content_hash": "sha256:437843edc90bf8c1f6f9a115361ea860a33d2cf80a130b35dd24d006df721faf",
|
|
2157
|
+
"description": "Composer skills (/preview-build, /build, /shape full, future multi-skill chains) require certain prerequisites to dispatch safely."
|
|
2158
|
+
},
|
|
1603
2159
|
{
|
|
1604
2160
|
"slug": "deferred-actions-schema",
|
|
1605
2161
|
"type": "standard",
|
|
@@ -1608,14 +2164,78 @@
|
|
|
1608
2164
|
"content_hash": "sha256:77f24a1bd51a09e3c73c02e06af0fb07abc031e987568ef1a03b2f775339e859",
|
|
1609
2165
|
"description": "Standard for docs/deferred-actions/*.md entries — the capability-routed handoff primitive that carries deferred work across session modalities."
|
|
1610
2166
|
},
|
|
2167
|
+
{
|
|
2168
|
+
"slug": "deployment-topology",
|
|
2169
|
+
"type": "standard",
|
|
2170
|
+
"path": "standards/deployment-topology.md",
|
|
2171
|
+
"tier": "lite",
|
|
2172
|
+
"content_hash": "sha256:a295ed93bef05b5473c42851f347e0572dc4083cd52ba08bc78fa829faf4f207",
|
|
2173
|
+
"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."
|
|
2174
|
+
},
|
|
1611
2175
|
{
|
|
1612
2176
|
"slug": "docs-sync-allowlist",
|
|
1613
2177
|
"type": "standard",
|
|
1614
2178
|
"path": "standards/docs-sync-allowlist.md",
|
|
1615
2179
|
"tier": "lite",
|
|
1616
|
-
"content_hash": "sha256:
|
|
2180
|
+
"content_hash": "sha256:8ff55ce66a79c43ad8e75ea8c791fe57017ed4cf56f5c31c6f79ca2ac17c88e2",
|
|
1617
2181
|
"description": "Files whose change triggers bassclef-docs-sync.yml."
|
|
1618
2182
|
},
|
|
2183
|
+
{
|
|
2184
|
+
"slug": "domain-and-dns",
|
|
2185
|
+
"type": "standard",
|
|
2186
|
+
"path": "standards/domain-and-dns.md",
|
|
2187
|
+
"tier": "lite",
|
|
2188
|
+
"content_hash": "sha256:12ff27f4c46a10823f2a885ef27dd1359c40bc117a1203da002b889eee7b549e",
|
|
2189
|
+
"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 -…"
|
|
2190
|
+
},
|
|
2191
|
+
{
|
|
2192
|
+
"slug": "ec2-tailscale",
|
|
2193
|
+
"type": "standard",
|
|
2194
|
+
"path": "standards/deployment-topology/ec2-tailscale.md",
|
|
2195
|
+
"tier": "lite",
|
|
2196
|
+
"content_hash": "sha256:2daa9f1a21612f8c8c4a8e22f6132cb2899757c9508a6a8c9316dba6f5e316da",
|
|
2197
|
+
"description": "The operator's reference deployment. Stack-specific instantiation of standards/deployment-topology.md for adopters who pick the same target."
|
|
2198
|
+
},
|
|
2199
|
+
{
|
|
2200
|
+
"slug": "frontend-stack",
|
|
2201
|
+
"type": "standard",
|
|
2202
|
+
"path": "standards/frontend-stack.md",
|
|
2203
|
+
"tier": "lite",
|
|
2204
|
+
"content_hash": "sha256:29798e30ebdb7991ca766a92d7e15e1e689b56f2965ebf49f8ae965f4f098ec3",
|
|
2205
|
+
"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."
|
|
2206
|
+
},
|
|
2207
|
+
{
|
|
2208
|
+
"slug": "frontmatter-schema",
|
|
2209
|
+
"type": "standard",
|
|
2210
|
+
"path": "standards/frontmatter-schema.md",
|
|
2211
|
+
"tier": "lite",
|
|
2212
|
+
"content_hash": "sha256:2d1e06338d4f1991f56858705a8a9898c98c2a2d9a7ae1d1f1e20d5882b17453",
|
|
2213
|
+
"description": "Schema for the YAML frontmatter that opens substrate files — .claude/skills/<name>/SKILL.md and .claude/rules/<name>.md."
|
|
2214
|
+
},
|
|
2215
|
+
{
|
|
2216
|
+
"slug": "gem",
|
|
2217
|
+
"type": "standard",
|
|
2218
|
+
"path": "standards/dependency-discipline/gem.md",
|
|
2219
|
+
"tier": "lite",
|
|
2220
|
+
"content_hash": "sha256:1f70db87075da251640d253c92fc198b81937eff12f9a013b948c51acc0b51e1",
|
|
2221
|
+
"description": "The Ruby package-manager sibling of .claude/rules/new-dependency-check.md."
|
|
2222
|
+
},
|
|
2223
|
+
{
|
|
2224
|
+
"slug": "go-mod",
|
|
2225
|
+
"type": "standard",
|
|
2226
|
+
"path": "standards/dependency-discipline/go-mod.md",
|
|
2227
|
+
"tier": "lite",
|
|
2228
|
+
"content_hash": "sha256:93a94ea3a92075f9cd84a1fbe88dd8d2e7e83b0c27f8e1e1161e50435d6a8388",
|
|
2229
|
+
"description": "The Go package-manager sibling of .claude/rules/new-dependency-check.md."
|
|
2230
|
+
},
|
|
2231
|
+
{
|
|
2232
|
+
"slug": "gorm",
|
|
2233
|
+
"type": "standard",
|
|
2234
|
+
"path": "standards/migration-discipline/gorm.md",
|
|
2235
|
+
"tier": "lite",
|
|
2236
|
+
"content_hash": "sha256:e48d6d6e9e01a7306673c80e333242934074ab66e82438705710052cd12d9d79",
|
|
2237
|
+
"description": "The GORM (Go ORM) sibling of .claude/rules/schema-management.md."
|
|
2238
|
+
},
|
|
1619
2239
|
{
|
|
1620
2240
|
"slug": "graceful-exit",
|
|
1621
2241
|
"type": "standard",
|
|
@@ -1632,6 +2252,38 @@
|
|
|
1632
2252
|
"content_hash": "sha256:003c862bade64c9064c1cf5ce7e28b71340ac5c43942327903fa09791f876710",
|
|
1633
2253
|
"description": "Hooks must be idempotent. If a hook fails partway and reruns, it must not duplicate work, generate false warnings, or corrupt state."
|
|
1634
2254
|
},
|
|
2255
|
+
{
|
|
2256
|
+
"slug": "hook-injection-discipline",
|
|
2257
|
+
"type": "standard",
|
|
2258
|
+
"path": "standards/hook-injection-discipline.md",
|
|
2259
|
+
"tier": "lite",
|
|
2260
|
+
"content_hash": "sha256:16d552a559f91bad6f4907b6a744c284d0c6e48fff9ee43166d03714a53e26b3",
|
|
2261
|
+
"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…"
|
|
2262
|
+
},
|
|
2263
|
+
{
|
|
2264
|
+
"slug": "hook-install-class",
|
|
2265
|
+
"type": "standard",
|
|
2266
|
+
"path": "standards/hook-install-class.md",
|
|
2267
|
+
"tier": "lite",
|
|
2268
|
+
"content_hash": "sha256:037a70c219c26c994092e5e55bec1e66d1dcf02d01e9ec3ea219586b60fa5852",
|
|
2269
|
+
"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…"
|
|
2270
|
+
},
|
|
2271
|
+
{
|
|
2272
|
+
"slug": "input-handler-interface",
|
|
2273
|
+
"type": "standard",
|
|
2274
|
+
"path": "standards/input-handler-interface.md",
|
|
2275
|
+
"tier": "lite",
|
|
2276
|
+
"content_hash": "sha256:63c43d55670e749724e12402d3cf5fa4ae3ddcb3fc798187e9c394071bdff4c9",
|
|
2277
|
+
"description": "The interface contract between operator inputs (text / URL / image / repo / transcript / napkin / mixed) and the cameo pipeline's extraction layer."
|
|
2278
|
+
},
|
|
2279
|
+
{
|
|
2280
|
+
"slug": "kiss-words",
|
|
2281
|
+
"type": "standard",
|
|
2282
|
+
"path": "standards/steering-hints/kiss-words.md",
|
|
2283
|
+
"tier": "lite",
|
|
2284
|
+
"content_hash": "sha256:7def4904aa055611914ce1128cfd8aae6974974823bf86fa41311b2f6e424825",
|
|
2285
|
+
"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)."
|
|
2286
|
+
},
|
|
1635
2287
|
{
|
|
1636
2288
|
"slug": "lite",
|
|
1637
2289
|
"type": "standard",
|
|
@@ -1645,9 +2297,17 @@
|
|
|
1645
2297
|
"type": "standard",
|
|
1646
2298
|
"path": "standards/lite-manifest-schema-changes.md",
|
|
1647
2299
|
"tier": "lite",
|
|
1648
|
-
"content_hash": "sha256:
|
|
2300
|
+
"content_hash": "sha256:e35cb524e6ef8f24d2747f7360e0d8ecb33d95895688985b440d6e1ef6c3fe33",
|
|
1649
2301
|
"description": "Chronological ledger of every lite-manifest schema change. Adopters read this before sync to know what shifted."
|
|
1650
2302
|
},
|
|
2303
|
+
{
|
|
2304
|
+
"slug": "luminary-matching",
|
|
2305
|
+
"type": "standard",
|
|
2306
|
+
"path": "standards/luminary-matching.md",
|
|
2307
|
+
"tier": "lite",
|
|
2308
|
+
"content_hash": "sha256:a85c58c641a6e2b920c1018c3eb4394b7bce9c6f48ec485c700a0907121bdba9",
|
|
2309
|
+
"description": "Bassclef core picks luminaries for variant generation via a single LLM call to the configured model provider."
|
|
2310
|
+
},
|
|
1651
2311
|
{
|
|
1652
2312
|
"slug": "luminary-problem-patterns",
|
|
1653
2313
|
"type": "standard",
|
|
@@ -1656,6 +2316,38 @@
|
|
|
1656
2316
|
"content_hash": "sha256:5de157922db7cf41b2edf29e8eb3dd4b13ff3cc97b20285e418343904ef39208",
|
|
1657
2317
|
"description": "Auto-generated. Do not hand-edit. Re-run via: bash scripts/luminary-problem-patterns-aggregate.sh"
|
|
1658
2318
|
},
|
|
2319
|
+
{
|
|
2320
|
+
"slug": "mobile-ephemeral-session",
|
|
2321
|
+
"type": "standard",
|
|
2322
|
+
"path": "standards/mobile-ephemeral-session.md",
|
|
2323
|
+
"tier": "lite",
|
|
2324
|
+
"content_hash": "sha256:167a67574cacc8ae02e7bc5117d3b12b92ccff82fa52280fcc0497560eb2d9c8",
|
|
2325
|
+
"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."
|
|
2326
|
+
},
|
|
2327
|
+
{
|
|
2328
|
+
"slug": "model-routing-discipline",
|
|
2329
|
+
"type": "standard",
|
|
2330
|
+
"path": "standards/model-routing-discipline.md",
|
|
2331
|
+
"tier": "lite",
|
|
2332
|
+
"content_hash": "sha256:a6d628d4a0499d48e2372ab977ca35a5b512dd954806c00dafff134da8ea7897",
|
|
2333
|
+
"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…"
|
|
2334
|
+
},
|
|
2335
|
+
{
|
|
2336
|
+
"slug": "nextjs",
|
|
2337
|
+
"type": "standard",
|
|
2338
|
+
"path": "standards/api-conventions/nextjs.md",
|
|
2339
|
+
"tier": "lite",
|
|
2340
|
+
"content_hash": "sha256:18b9d15d1b1436c61639eee1dc2cc069907e7ba5980f397924777a2f94690607",
|
|
2341
|
+
"description": "Stack-specific instantiation of .claude/rules/api-conventions.md for Next.js App Router."
|
|
2342
|
+
},
|
|
2343
|
+
{
|
|
2344
|
+
"slug": "npm",
|
|
2345
|
+
"type": "standard",
|
|
2346
|
+
"path": "standards/dependency-discipline/npm.md",
|
|
2347
|
+
"tier": "lite",
|
|
2348
|
+
"content_hash": "sha256:a2f59ba5043ecf6fc805f9e871742180707985c1d3bdbeb9978d4841b0489744",
|
|
2349
|
+
"description": "The Node.js package-manager sibling of .claude/rules/new-dependency-check.md."
|
|
2350
|
+
},
|
|
1659
2351
|
{
|
|
1660
2352
|
"slug": "ogilvy-writing-rules",
|
|
1661
2353
|
"type": "standard",
|
|
@@ -1680,6 +2372,54 @@
|
|
|
1680
2372
|
"content_hash": "sha256:d474018a4058b6ac94e618a8f0833ad0007311e151a2d8c9385c1ea7f0b83c17",
|
|
1681
2373
|
"description": "Universal principle: any shorthand in operator-facing prose carries a plain-language gloss at first mention per response."
|
|
1682
2374
|
},
|
|
2375
|
+
{
|
|
2376
|
+
"slug": "persona-schema",
|
|
2377
|
+
"type": "standard",
|
|
2378
|
+
"path": "standards/persona-schema.md",
|
|
2379
|
+
"tier": "lite",
|
|
2380
|
+
"content_hash": "sha256:b1d6a4c513cae58698c6b8281f76178c100103d48f1ef7216bf0883f5ad05535",
|
|
2381
|
+
"description": "Bassclef schema for user personas in sunj-labs repos."
|
|
2382
|
+
},
|
|
2383
|
+
{
|
|
2384
|
+
"slug": "pip",
|
|
2385
|
+
"type": "standard",
|
|
2386
|
+
"path": "standards/dependency-discipline/pip.md",
|
|
2387
|
+
"tier": "lite",
|
|
2388
|
+
"content_hash": "sha256:2b3e76cb0d169ffc31c27c66d103ada428c7fb9aa289c5e891734ac173c566ff",
|
|
2389
|
+
"description": "The Python package-manager sibling of .claude/rules/new-dependency-check.md."
|
|
2390
|
+
},
|
|
2391
|
+
{
|
|
2392
|
+
"slug": "pluggable-luminaries",
|
|
2393
|
+
"type": "standard",
|
|
2394
|
+
"path": "standards/pluggable-luminaries.md",
|
|
2395
|
+
"tier": "lite",
|
|
2396
|
+
"content_hash": "sha256:fcb9b3b6655529b91abdf0a2bc4dc80ea704df8fed81d5cfe82ef6b21f1c61b7",
|
|
2397
|
+
"description": "Each agent in bassclef has a default set of luminaries — thinkers whose principles guide its decisions."
|
|
2398
|
+
},
|
|
2399
|
+
{
|
|
2400
|
+
"slug": "pr-body-discipline",
|
|
2401
|
+
"type": "standard",
|
|
2402
|
+
"path": "standards/pr-body-discipline.md",
|
|
2403
|
+
"tier": "lite",
|
|
2404
|
+
"content_hash": "sha256:757d277c5343fd33ca45da4b9f8f1e6472eba0ab1913ebd7ff48eb44b9584412",
|
|
2405
|
+
"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…"
|
|
2406
|
+
},
|
|
2407
|
+
{
|
|
2408
|
+
"slug": "preview-state-schema",
|
|
2409
|
+
"type": "standard",
|
|
2410
|
+
"path": "standards/preview-state-schema.md",
|
|
2411
|
+
"tier": "lite",
|
|
2412
|
+
"content_hash": "sha256:e312cbeb541a50ac135f095c69e32f231b3838d24e6485c5f16a46ea0b2890eb",
|
|
2413
|
+
"description": "docs/preview-state/<slug>.yml is the session-spanning state file for each /preview cycle."
|
|
2414
|
+
},
|
|
2415
|
+
{
|
|
2416
|
+
"slug": "prisma",
|
|
2417
|
+
"type": "standard",
|
|
2418
|
+
"path": "standards/migration-discipline/prisma.md",
|
|
2419
|
+
"tier": "lite",
|
|
2420
|
+
"content_hash": "sha256:6418f2d14a1cabc3892a0f2322122d95e8ae8689a4fddc9c4d08afa85320eb14",
|
|
2421
|
+
"description": "The Prisma sibling of .claude/rules/schema-management.md."
|
|
2422
|
+
},
|
|
1683
2423
|
{
|
|
1684
2424
|
"slug": "project-directory-layout",
|
|
1685
2425
|
"type": "standard",
|
|
@@ -1696,6 +2436,22 @@
|
|
|
1696
2436
|
"content_hash": "sha256:02d26ec55708de37cf5993c0a26a2843cf68c4f5a6c0e0001382dcaec8a32bf2",
|
|
1697
2437
|
"description": "Every release of bassclef carries a semantic version tag."
|
|
1698
2438
|
},
|
|
2439
|
+
{
|
|
2440
|
+
"slug": "reserved-skill-names",
|
|
2441
|
+
"type": "standard",
|
|
2442
|
+
"path": "standards/reserved-skill-names.md",
|
|
2443
|
+
"tier": "lite",
|
|
2444
|
+
"content_hash": "sha256:fefea98cec3376b9bc33695b8193138d32d06493a958eb7c580c41ff767879ab",
|
|
2445
|
+
"description": "Bassclef MUST NOT create a skill with a name that Claude Code (the harness) already claims."
|
|
2446
|
+
},
|
|
2447
|
+
{
|
|
2448
|
+
"slug": "scannable-multi-option-output",
|
|
2449
|
+
"type": "standard",
|
|
2450
|
+
"path": "standards/scannable-multi-option-output.md",
|
|
2451
|
+
"tier": "lite",
|
|
2452
|
+
"content_hash": "sha256:46e4e5e96fdd297a447abc64841ae6011cdefe9534dd45f1e5b6e6959d8ad6d5",
|
|
2453
|
+
"description": "Design principles for skills that render multi-option choice surfaces (e.g."
|
|
2454
|
+
},
|
|
1699
2455
|
{
|
|
1700
2456
|
"slug": "sdlc-compliance",
|
|
1701
2457
|
"type": "standard",
|
|
@@ -1720,6 +2476,14 @@
|
|
|
1720
2476
|
"content_hash": "sha256:e78ab13fdfe3a654365e7c48bbeb2c759238073485a8392fb9794ddaae12ca16",
|
|
1721
2477
|
"description": "The adapter pattern that turns bassclef's per-language security defaults into adopter-runnable CI."
|
|
1722
2478
|
},
|
|
2479
|
+
{
|
|
2480
|
+
"slug": "session-board",
|
|
2481
|
+
"type": "standard",
|
|
2482
|
+
"path": "standards/session-board.md",
|
|
2483
|
+
"tier": "lite",
|
|
2484
|
+
"content_hash": "sha256:eb3ef832175ed745c412ca42f9ad854d0a298b828e647706547dcded15e2e32a",
|
|
2485
|
+
"description": "The session-board is a session-level coordinator artifact for multi-bet longrun sessions."
|
|
2486
|
+
},
|
|
1723
2487
|
{
|
|
1724
2488
|
"slug": "skill-output-discipline",
|
|
1725
2489
|
"type": "standard",
|
|
@@ -1728,6 +2492,14 @@
|
|
|
1728
2492
|
"content_hash": "sha256:00f7d97c1c39750d45e52a02d9f7ddb11b20b856eb35f0b9cf13fd39a8086d9c",
|
|
1729
2493
|
"description": "Every skill that returns operator-facing prose runs /kiss words --rewrite on the full output before returning."
|
|
1730
2494
|
},
|
|
2495
|
+
{
|
|
2496
|
+
"slug": "sqlalchemy",
|
|
2497
|
+
"type": "standard",
|
|
2498
|
+
"path": "standards/migration-discipline/sqlalchemy.md",
|
|
2499
|
+
"tier": "lite",
|
|
2500
|
+
"content_hash": "sha256:709758949bd2dd844b4f59b0fa98d4356e13827c4a7b7f2758287cf8a9d9ceca",
|
|
2501
|
+
"description": "The SQLAlchemy sibling of .claude/rules/schema-management.md."
|
|
2502
|
+
},
|
|
1731
2503
|
{
|
|
1732
2504
|
"slug": "state-spine",
|
|
1733
2505
|
"type": "standard",
|
|
@@ -1736,6 +2508,22 @@
|
|
|
1736
2508
|
"content_hash": "sha256:a3bccef9419e73b896bbf7dec3512530dd181654aae8769e255e90f3cfc682c0",
|
|
1737
2509
|
"description": "Schema'd JSON state spine for bassclef's substrate."
|
|
1738
2510
|
},
|
|
2511
|
+
{
|
|
2512
|
+
"slug": "state-spine-contract",
|
|
2513
|
+
"type": "standard",
|
|
2514
|
+
"path": "standards/state-spine-contract.md",
|
|
2515
|
+
"tier": "lite",
|
|
2516
|
+
"content_hash": "sha256:90207f681fac7c552c141fecff4aba4167d54a837186998d2d4731dc2703491e",
|
|
2517
|
+
"description": "The interface contract for lib/state.sh — the typed accessor library over bassclef's state spine."
|
|
2518
|
+
},
|
|
2519
|
+
{
|
|
2520
|
+
"slug": "substrate-config-schema",
|
|
2521
|
+
"type": "standard",
|
|
2522
|
+
"path": "standards/substrate-config-schema.md",
|
|
2523
|
+
"tier": "lite",
|
|
2524
|
+
"content_hash": "sha256:94931a2f1f0e08f4381ddbc464ecd1578170f832a41d263a42f67ac0dfafee48",
|
|
2525
|
+
"description": "substrate.config.md is the single source of truth for external resource references in any bassclef-substrate repo."
|
|
2526
|
+
},
|
|
1739
2527
|
{
|
|
1740
2528
|
"slug": "tech-stack-config",
|
|
1741
2529
|
"type": "standard",
|
|
@@ -1744,12 +2532,19 @@
|
|
|
1744
2532
|
"content_hash": "sha256:5822c04b98cf9ad4137b704a3b10b4798c6bcb04ddcf014bbea1049853d35138",
|
|
1745
2533
|
"description": "The tech_stack: block inside .claude/bassclef-configs.jsonc declares the adopter's primary tech stack."
|
|
1746
2534
|
},
|
|
2535
|
+
{
|
|
2536
|
+
"slug": "template",
|
|
2537
|
+
"type": "standard",
|
|
2538
|
+
"path": "standards/adr-template.md",
|
|
2539
|
+
"tier": "lite",
|
|
2540
|
+
"content_hash": "sha256:d2b0502b242882ab9702b9fcbc9c977a964904b8afcf3d9bd2b0103a736c673f"
|
|
2541
|
+
},
|
|
1747
2542
|
{
|
|
1748
2543
|
"slug": "tier-dependency-analysis",
|
|
1749
2544
|
"type": "standard",
|
|
1750
2545
|
"path": "standards/tier-dependency-analysis.md",
|
|
1751
2546
|
"tier": "lite",
|
|
1752
|
-
"content_hash": "sha256:
|
|
2547
|
+
"content_hash": "sha256:41dee952572446c156b55bcebb93f751f2d1c260d22f5683933acc708883e65d",
|
|
1753
2548
|
"description": "Reference doc for the tier-dependency-audit subsystem."
|
|
1754
2549
|
},
|
|
1755
2550
|
{
|
|
@@ -1757,9 +2552,57 @@
|
|
|
1757
2552
|
"type": "standard",
|
|
1758
2553
|
"path": "standards/tier-tag-schema.md",
|
|
1759
2554
|
"tier": "lite",
|
|
1760
|
-
"content_hash": "sha256:
|
|
2555
|
+
"content_hash": "sha256:588bdbf155ad85f29e982ce3ade69673ee24b4389b7e4055782cb41cfd8d4a2f",
|
|
1761
2556
|
"description": "Per-file maturity-signal field that governs flow from bassclef-upstream (upstream experimental) → bassclef (public hardened release mirror)."
|
|
1762
2557
|
},
|
|
2558
|
+
{
|
|
2559
|
+
"slug": "two-layer-config",
|
|
2560
|
+
"type": "standard",
|
|
2561
|
+
"path": "standards/two-layer-config.md",
|
|
2562
|
+
"tier": "lite",
|
|
2563
|
+
"content_hash": "sha256:a15dd3d6fdc1d6b40a04736715e5dc82ee90bf7f67ae15fb9d078e2e2cc0a7a0",
|
|
2564
|
+
"description": "Bassclef's config splits into two layers."
|
|
2565
|
+
},
|
|
2566
|
+
{
|
|
2567
|
+
"slug": "typescript",
|
|
2568
|
+
"type": "standard",
|
|
2569
|
+
"path": "standards/sdlc-gates/typescript.md",
|
|
2570
|
+
"tier": "lite",
|
|
2571
|
+
"content_hash": "sha256:09be3054c3b0941d8820f1e9ad1fddf3584dd28575dadcbd20076426748fcf95",
|
|
2572
|
+
"description": "Stack-specific instantiation of .claude/rules/sdlc-gates.md for TypeScript."
|
|
2573
|
+
},
|
|
2574
|
+
{
|
|
2575
|
+
"slug": "use-case-format",
|
|
2576
|
+
"type": "standard",
|
|
2577
|
+
"path": "standards/use-case-format.md",
|
|
2578
|
+
"tier": "lite",
|
|
2579
|
+
"content_hash": "sha256:8743b924277f196e1ece1221305c55403dde98c548412b796d2b62c4b46d869b",
|
|
2580
|
+
"description": "- Alistair Cockburn — Writing Effective Use Cases (2000)."
|
|
2581
|
+
},
|
|
2582
|
+
{
|
|
2583
|
+
"slug": "user-story-invest",
|
|
2584
|
+
"type": "standard",
|
|
2585
|
+
"path": "standards/user-story-invest.md",
|
|
2586
|
+
"tier": "lite",
|
|
2587
|
+
"content_hash": "sha256:ae9fe95371bf00cb22676dc7d368c836f4974b6f965b60de741d04d6f7627e73",
|
|
2588
|
+
"description": "Validation rules for user stories produced by /user-stories."
|
|
2589
|
+
},
|
|
2590
|
+
{
|
|
2591
|
+
"slug": "velocity-and-appetite",
|
|
2592
|
+
"type": "standard",
|
|
2593
|
+
"path": "standards/velocity-and-appetite.md",
|
|
2594
|
+
"tier": "lite",
|
|
2595
|
+
"content_hash": "sha256:9b05bd692eee86ab121e1f53e4401b055b8e52d964d6a6df72db73e42a6cfbc0",
|
|
2596
|
+
"description": "How work is estimated, measured, and calibrated in agent-driven SDLC."
|
|
2597
|
+
},
|
|
2598
|
+
{
|
|
2599
|
+
"slug": "voice-input-pattern",
|
|
2600
|
+
"type": "standard",
|
|
2601
|
+
"path": "standards/voice-input-pattern.md",
|
|
2602
|
+
"tier": "lite",
|
|
2603
|
+
"content_hash": "sha256:8e23724cd94b0d7539648f2621edfaf35c2f0a81fc76c3563b142b9ef624d30c",
|
|
2604
|
+
"description": "How bassclef handles voice as input to skill dispatches."
|
|
2605
|
+
},
|
|
1763
2606
|
{
|
|
1764
2607
|
"slug": "whereami-schema",
|
|
1765
2608
|
"type": "standard",
|
|
@@ -1768,6 +2611,14 @@
|
|
|
1768
2611
|
"content_hash": "sha256:e7f0aab23b635bde944c296f9b0d0ca734535464cb28373ca441031553229364",
|
|
1769
2612
|
"description": "docs/whereami.md is the authoritative project-state snapshot in any bassclef-substrate repo."
|
|
1770
2613
|
},
|
|
2614
|
+
{
|
|
2615
|
+
"slug": "worktree-management",
|
|
2616
|
+
"type": "standard",
|
|
2617
|
+
"path": "standards/worktree-management.md",
|
|
2618
|
+
"tier": "lite",
|
|
2619
|
+
"content_hash": "sha256:e276ed19d9f7a79e51ce234663539aa8a69d3812a5a925b5a66bbc1b7b159414",
|
|
2620
|
+
"description": "Defines the lifecycle for git worktrees in autonomous agent sessions."
|
|
2621
|
+
},
|
|
1771
2622
|
{
|
|
1772
2623
|
"slug": "writing-guide",
|
|
1773
2624
|
"type": "standard",
|
|
@@ -1776,6 +2627,13 @@
|
|
|
1776
2627
|
"content_hash": "sha256:7878c3fb53691769f2597928f4b4cadee66d1121ff9254d187f41ee4ba54526d",
|
|
1777
2628
|
"description": "Technical. Direct. For the next agent or session picking up the work."
|
|
1778
2629
|
},
|
|
2630
|
+
{
|
|
2631
|
+
"slug": "chronicle-template",
|
|
2632
|
+
"type": "template",
|
|
2633
|
+
"path": "templates/chronicle-template.md",
|
|
2634
|
+
"tier": "lite",
|
|
2635
|
+
"content_hash": "sha256:233315697334dab6978a862170fdd1a8c64a859a348f708201c1d152493e8d4d"
|
|
2636
|
+
},
|
|
1779
2637
|
{
|
|
1780
2638
|
"slug": "deferred-action-template",
|
|
1781
2639
|
"type": "template",
|
|
@@ -1783,6 +2641,55 @@
|
|
|
1783
2641
|
"tier": "lite",
|
|
1784
2642
|
"content_hash": "sha256:e89142d26d733678d202853e9de6d924a5cd9fb24f7b1110a8c4b5d0100862ab"
|
|
1785
2643
|
},
|
|
2644
|
+
{
|
|
2645
|
+
"slug": "memory-proposal-template",
|
|
2646
|
+
"type": "template",
|
|
2647
|
+
"path": "templates/memory-proposal-template.md",
|
|
2648
|
+
"tier": "lite",
|
|
2649
|
+
"content_hash": "sha256:4e398028c3cf91b5bfbb53cdb5926c7b9629fab6cc4ae68ad89fc0d09908b1dc"
|
|
2650
|
+
},
|
|
2651
|
+
{
|
|
2652
|
+
"slug": "persona-template",
|
|
2653
|
+
"type": "template",
|
|
2654
|
+
"path": "templates/persona-template.md",
|
|
2655
|
+
"tier": "lite",
|
|
2656
|
+
"content_hash": "sha256:5cd75bc077f2f91b4c9a05679983baf96507e6a994a39f009909534ead159873"
|
|
2657
|
+
},
|
|
2658
|
+
{
|
|
2659
|
+
"slug": "pr-faq",
|
|
2660
|
+
"type": "template",
|
|
2661
|
+
"path": "templates/pr-faq.md",
|
|
2662
|
+
"tier": "lite",
|
|
2663
|
+
"content_hash": "sha256:e57b8c2fddee70842b37024560866ca85c466e6684fb4cf6b3ee0cb976bff6d3"
|
|
2664
|
+
},
|
|
2665
|
+
{
|
|
2666
|
+
"slug": "secret-rotation-template",
|
|
2667
|
+
"type": "template",
|
|
2668
|
+
"path": "templates/secret-rotation-template.md",
|
|
2669
|
+
"tier": "lite",
|
|
2670
|
+
"content_hash": "sha256:a61e17882d1b1444dc142c828b7c94316c97d69364d3684cb726ec4d5c53cb22"
|
|
2671
|
+
},
|
|
2672
|
+
{
|
|
2673
|
+
"slug": "spec-template",
|
|
2674
|
+
"type": "template",
|
|
2675
|
+
"path": "templates/spec-template.md",
|
|
2676
|
+
"tier": "lite",
|
|
2677
|
+
"content_hash": "sha256:68f85e21426157461613b2fc55dd0e447b1d6d3940b41830dd3b23c7bc2f1365"
|
|
2678
|
+
},
|
|
2679
|
+
{
|
|
2680
|
+
"slug": "use-case-template",
|
|
2681
|
+
"type": "template",
|
|
2682
|
+
"path": "templates/use-case-template.md",
|
|
2683
|
+
"tier": "lite",
|
|
2684
|
+
"content_hash": "sha256:076a0d32600ba5745b5b8a2e1d277130c139a53f39d0f2d3138f3b60a7f608ac"
|
|
2685
|
+
},
|
|
2686
|
+
{
|
|
2687
|
+
"slug": "user-story-template",
|
|
2688
|
+
"type": "template",
|
|
2689
|
+
"path": "templates/user-story-template.md",
|
|
2690
|
+
"tier": "lite",
|
|
2691
|
+
"content_hash": "sha256:1067477c72618f7a4d9af8cc2eadc10fc3504f5fdbc0f82164ac97af07b585a6"
|
|
2692
|
+
},
|
|
1786
2693
|
{
|
|
1787
2694
|
"slug": "whereami-template",
|
|
1788
2695
|
"type": "template",
|