A methodology for running multiple AI coding agents on one repository without trusting any of them.
Contract freeze, package ownership, an independent verification gate, cross-review, and arbitration — so parallel agents ship one deliverable instead of colliding, greenwashing, or silently relaxing quality.
This is not a “type faster with N bots” guide. It is a verification-first development method, extracted from a real one-day run that published a Go CLI (raggate v0.1.2) with three agents (Claude Code as integrator, Codex and Grok as implementers). Sanitized logs of that run ship in fixture/.
日本語: README.ja.md
Self-reported “tests pass” from each agent is not enough. In the source project:
- Both workers reported green packages while their halves disagreed at the integration boundary (sample suite vs mock corpus) — only an independent e2e gate caught it.
- Cross-review found 9 release-blocking (P1) issues (gate bypass, unbounded HTTP reads, score clamping that turned malformed judge output into a perfect score, and more).
- A one-word
.gitignorepattern quietly excluded the main binary path from git while local builds still worked. - A CI-only port collision appeared when
go run &left a child process holding the listen port.
The protocol in this repo exists because each rule failed once in practice.
# From a Claude Code session (plugin marketplace must resolve this public repo)
/plugin marketplace add mutton-dev/verified-agent-triad
/plugin install verified-agent-triad@mutton-dev-verified-agent-triadExact marketplace slug syntax can vary by Claude Code version; if install fails, use Option B.
git clone https://github.com/mutton-dev/verified-agent-triad.git
mkdir -p ~/.claude/skills
cp -R verified-agent-triad/skills/verified-agent-triad ~/.claude/skills/
# Resulting path must be:
# ~/.claude/skills/verified-agent-triad/SKILL.mdClaude Code discovers skills as directories under ~/.claude/skills/<name>/ (or project-local .claude/skills/<name>/) that contain a SKILL.md. After copy, start a new session and ask to “run a multi-agent implementation with verified-agent-triad.”
There is no marketplace for every harness. Point the agent at the skill file:
- Clone this repo (or vendor
skills/verified-agent-triad/). - In your project
AGENTS.md(or system prompt), add:
## Multi-agent protocol
When running 2+ coding agents in parallel, follow:
skills/verified-agent-triad/SKILL.md
(use templates/ for dispatch files; read fixture/ for a worked example).- Use the templates under
templates/as the only dispatch format (file-based tasks, not chat-only handoffs).
| Path | Role |
|---|---|
skills/verified-agent-triad/SKILL.md |
Protocol (roles, 5 stages, hard-won rules, acceptance scenario) |
templates/task-brief.md |
Per-worker dispatch file |
templates/contract.md |
Shared contract header + change-request protocol |
templates/owner-map.md |
File → owner table |
templates/review-brief.md |
Cross-review instructions + severity scale |
templates/rejection.md |
Verification-gate rejection with evidence |
templates/acceptance-report.md |
Final attribution + verification log |
fixture/raggate-run/ |
Sanitized excerpts from the real raggate triad run |
fixture/acceptance/ |
Toy dry-run scenario (seeded boundary violation + contract-change request) |
Drawn from the sanitized fixture logs and the published artifacts:
| Fact | Detail |
|---|---|
| Agents | 3 (1 integrator + 2 package-owning implementers) |
| Calendar | ~1 day from scaffold to public Go CLI v0.1.2 |
| Gate rejections | 2 independent verification rejections before merge (suite/corpus mismatch; later CI port bind race) |
| Cross-review | 9 P1 release blockers written and arbitrated (not rubber-stamped) |
| Downstream | raggate + raggate-action + Zenn write-up |
The headline is not speed. The headline is what independent verification prevented from shipping.
Full detail: skills/verified-agent-triad/SKILL.md.
- Contract freeze — shared types, ownership map, stubs compile; workers cannot edit the contract.
- Task dispatch — one file per worker; acceptance = commands, not adjectives;
DONEmarker + timeout. - Independent verification gate — integrator re-runs commands, boundary-diffs ownership, runs cross-package e2e.
- Cross-review — workers review each other; integrator arbitrates; reviewers never patch the code they reviewed.
- Release gate — full command suite + secret/PII grep; human owns irreversible publish steps.
- raggate — regression tests & quality gates for LLM/RAG pipelines: https://github.com/mutton-dev/raggate
- raggate-action — the same gate as a GitHub Action: https://github.com/mutton-dev/raggate-action
- Zenn (ja) — product article for raggate: https://zenn.dev/mutton/articles/b0e17496a34b13
- Postmortem draft (ja) — multi-agent run narrative:
docs/zenn-draft-triad-postmortem.md