bassclef
Config

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.jsonc

Committed 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 upgrade
  • tier-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_matchers to match your stack.
  • Plan upgrade — you upgraded your Anthropic plan; bump plan_tier to unlock parallel dispatch.
  • Agent routing — Builder is generating buggy code and you want to try capable model tier; edit model_tier.Builder.
  • Turning prose discipline strict — your team wants adopter-facing prose to never ship with jargon; set prose_discipline.kiss_words_turn_prose to "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.jsonc

Every field carries a comment describing its default, what reads it, and where to look for more.

On this page

© 2025–2026 Sunjay Pandey·Privacy·Apache-2.0 code