gauntletlisted
Install: claude install-skill ksdisch/claude-config
# Gauntlet
**You are the orchestrator.** Three agents do the work; you run every gate. The relay's whole
value is that a stage advances on a command's exit code, not on an agent's account of itself —
so the gates live here, in Bash, in this session, and nowhere else.
| Stage | Agent | Gate you run |
|---|---|---|
| 1 Specify | `specifier` (opus/high) | **G1** — spec files exist and are shaped like Gherkin |
| 2 Code | `gauntlet-coder` (opus/high) | **G2** — suite exit 0 **and** the diff touches a test file |
| 3 Harden | `mutation-hardener` (sonnet/high, `HARDEN` mode) | **G3** — suite still green **and** no *unaccepted* mutation survivors (see Stage 3: `PASSED` vs `PASSED-WITH-ACCEPTED(n)`) |
The run produces a branch and a scorecard. It does **not** merge. Merging is the normal git
workflow plus `adversarial-review`, outside this skill — one gate per merge, and the gauntlet's
stages never substitute for it.
## Cross-cutting invariants
These hold at every stage. A stage that cannot satisfy one stops the run; it never proceeds
degraded and quiet.
- **GATES-ARE-LOCAL** — every gate is a command *you* run and read the exit code of. An agent's
claim that its tests pass is input to your next dispatch, never a substitute for running them.
If you did not run it this lap, it did not pass. **G3's accepted-survivor path is the one
documented exception**, and it exists because a mutant no honest test can kill would otherwise
make that gate unsatisfiable. It is fenced acco