Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Referee for writer/reviewer loops between coding agents, where one tool writes code and the other reviews it in rounds: Claude Code writing while Codex reviews, or the reverse. Use when running or setting up a cross-model review loop, a test-fix loop, or any "loop until clean" workflow. Sets the loop contract up front, keeps an append-only per-round ledger, applies stop rules so the loop converges, ends, or escalates to a human instead of burning tokens on two agents disagreeing. Does not write
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 83% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 56% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 9% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 9% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 61% | 0% |
A reviewer running on a different vendor's model catches what the writer cannot see. The two can also disagree politely forever, at your expense. The stop rules loops ship with today are "clean" and a round cap. Real loops die in ways neither covers. This skill is the stop switch and the receipt.
Any loop where one agent produces and another judges: cross-agent code review (Claude Code writes, Codex reviews, or the reverse), test-fix loops, doc-review loops. Run the referee alongside the loop, not instead of it.
No extra software. The loop lives inside one agent session, and that agent is the referee. Example with Claude Code writing and Codex reviewing:
codex exec "review this diff for must-fix bugs: $(git diff)", or the Codex plugin, or a review bot on the PR.
and loops or stops and says which rule fired.
Works the same with the roles reversed, or with any writer/reviewer pair. The stop rules bind on countable events (a reopened finding, two rounds of diff growth, the round cap), so the orchestrating agent cannot easily talk itself into one more round.
Write these down before round 1. Changing them mid-loop is how loops run away.
security). Findings below the floor get logged, not fixed, and never extend the loop.
Append one row after every round. Never edit old rows.
markdown| round | opened | closed | reopened | must-fix left | diff lines | verdict | |---|---|---|---|---|---|---| | 1 | 4 | 0 | 0 | 3 | +120/-30 | continue | | 2 | 1 | 3 | 0 | 1 | +18/-6 | continue | | 3 | 0 | 1 | 0 | 0 | +2/-2 | clean: stop |
Stop the loop the moment a rule fires, and name the rule. In order:
not progress, it is the writer and the reviewer disagreeing. Stop immediately, hand it to the human with both positions. Round n+1 does not get to re-litigate round n.
Same as a reopen: the human decides.
rounds in a row. The loop is diverging, not converging. Stop and recommend reverting to the round with the fewest must-fix findings; the ledger says which. The human approves any revert. The referee never reverts code itself.
leftovers. Never silently raise the cap.
loop is done, it just does not want to say so. Stop.
Hand the human the ledger plus each unresolved finding in this form, not the transcript:
textfinding: expired tokens pass at exact boundary (`auth.ts:42`) reviewer says: use `now >= exp`, the boundary is exploitable writer says: spec reads exp as inclusive; changing it breaks token refresh tests rounds contested: 2, 3
Silence is not an exit.
Other measured skills in the registry, with their headline benchmark lift.