bassclef-configs.jsonc
The adopter-facing config file. Plan tier, testing tiers, model routing, and prose discipline live here.
Use this when
You want to change how bassclef behaves in your repo — which Claude model each agent uses, which paths need strict TDD, what your plan tier limit is, or whether prose discipline runs against every agent reply. All of that lives in one file.
Skip this when
You are changing the sync behavior (.bassclef-source.json) or the
Claude Code harness wiring (.claude/settings.json). Those are
different files with different jobs.
Where the file lives
.claude/bassclef-configs.jsoncCommitted to your repo. Every adopter has one; every change goes
through code review like any other config edit. The .jsonc
extension means comments are allowed — bassclef ships inline
descriptions on every field so you can read the file without a
separate reference doc.
What each block controls
sync
Whether bassclef syncs its own substrate from upstream at session start.
Cross-references .bassclef-source.json
for the sync mechanism itself. This block is the on/off switch;
.bassclef-source.json is the "where from" and "which version."
model_tier
Per-agent model routing. bassclef ships 8 agents (Builder, Closer,
Deployer, DocsWriter, Explorer, Orchestrator, Reviewer, Shaper). Each
gets a tier — cheap-fast (Haiku), balanced (Sonnet), or
capable (Opus).
Default routing: most agents on cheap-fast; Builder on balanced
because code quality matters more than routing cost; Shaper on
capable because problem framing is the highest-leverage thinking.
Override when your budget or accuracy needs demand it.
plan_tier
Your Anthropic plan tier. Caps parallel agent dispatch per plan limits.
tier-1— single-agent serial (safest; matches free / Pro plans)tier-2— 2-3 parallel after upgradetier-4— 5+ parallel for operator-scale workflows
This gate exists because dispatching more agents than your rate limit allows produces 429 errors and rework cycles. Set it once; forget it.
prose_discipline
Whether the Stop hook scans agent replies for bassclef-internal jargon.
true(default) — advisory. The hook writes findings to stderr."strict"— the hook blocks the stop until prose is clean.false— disabled.
Turn off if you want the hook silent. Leave on true for the
adopter-friendly default: findings surface but do not block.
testing
Per-path testing tier enforcement. Four tiers — 0 strict TDD,
1 test-with, 2 smoke, 3 manual verify.
Sample seed for a TypeScript + Next.js stack:
"testing": {
"global_floor": 1,
"path_matchers": [
{ "match": "lib/domain/**/*.ts", "tier": 0 },
{ "match": "lib/infra/**/*.ts", "tier": 0 },
{ "match": "app/api/**/*.ts", "tier": 1 },
{ "match": "app/actions/**/*.ts", "tier": 1 },
{ "match": "app/_components/**/*.tsx", "tier": 2 },
{ "match": "app/**/*.tsx", "tier": 2 },
{ "match": "docs/**/*.md", "tier": 3 }
]
}Pure domain and infrastructure get Tier 0 (test first, TDD rhythm). Route handlers and server actions get Tier 1 (test alongside). UI gets Tier 2 (smoke test). Docs get Tier 3 (manual verify — the eye test).
When to edit
- New stack — adopt bassclef in a Python or Ruby repo and the
seeded TypeScript paths do not apply. Rewrite
path_matchersto match your stack. - Plan upgrade — you upgraded your Anthropic plan; bump
plan_tierto unlock parallel dispatch. - Agent routing — Builder is generating buggy code and you want to
try
capablemodel tier; editmodel_tier.Builder. - Turning prose discipline strict — your team wants adopter-facing
prose to never ship with jargon; set
prose_discipline.kiss_words_turn_proseto"strict".
When NOT to edit
- Do not add hooks here. Hooks live in
.claude/settings.json. - Do not add external resource references (Google Doc IDs, URLs,
env-var names). Those live in
substrate.config.md— a separate file bassclef reads for reference material. - Do not change the schema shape (add top-level fields not in
standards/state-spine/schemas/bassclef-configs.schema.json). The schema validator will reject writes that add unknown fields.
Sample — full file
The bassclef-web repo ships this file with comments explaining each block. Read it in context:
.claude/bassclef-configs.jsoncEvery field carries a comment describing its default, what reads it, and where to look for more.
Related
- Substrate config (
.bassclef-source.json) — sync source, version, tier - Settings (
.claude/settings.json) — harness hooks + additionalDirectories - Directory layout — where each substrate artifact lives
- Tier system — lite / standard / ultra comparison