balisted
Install: claude install-skill connorpham/vteam-harness
> **Model routing for this tool** (from `model-routing.data.yaml`, snapshot 2026-08-17):
> `frontier` → **fable** · `workhorse` → **opus** · `standard` → **sonnet** · `utility` → **haiku**
> Roles → tiers: ba-challenger: standard · ba-draft: standard · dev-r1: workhorse · dev-r2: standard (high-stakes: workhorse) · dev-r3: workhorse · explore: utility · qa-challenger: standard · sa-background: workhorse · sa-challenger: workhorse · sa-writer: workhorse
> Resolve at runtime: `python3 .vteam/scripts/model_route.py <role> --tool claude-code [--high-stakes]` — high-stakes diffs (review.high_stakes_*) bump dev-r2 to the workhorse tier.
> Spawning a subagent: pass the resolved name as the Agent tool's `model` parameter.
# /ba — from spec to runnable backlog (BA lane, no code)
**What this workflow is NOT:** it never writes product code, never invents
requirements the spec doesn't state, and never files tickets that skipped the B3
challenger gate. Its single output: a backlog where every ticket is EXECUTABLE by
/dev and VERIFIABLE by /qa without either having to re-open the whole spec.
**Immutable principles:**
1. **The spec is the source; the BA is a translator, not an author.** Every story
and every AC cites its spec section (`spec §x.y`). Spec silent or
self-contradictory → that's a QUESTION for the owner (collected in the gap
list), never a guess. The schema is the second source — a story contradicting
the schema gets flagged, not silently adapted.
2. **Acceptance