Ship a ticket with separate plan, code and review agents and a stop rule

Odilon Hugonnot shipped a URL-sharing fix with Claude Code agents on three models; blind Opus reviewers found a real Safari bug and a weak test, and the loop stopped after 3 rounds.

Done withClaude Code· Oct 31, 2026

What they did

Hugonnot runs tickets through a Claude Code skill that chains five steps: plan, code, proof, review and wrap-up. One sentence picks the models: a Fable agent writes the plan, a Sonnet agent writes the code from a brief, and Opus agents review in a loop without knowing who wrote the change. The ticket was to let the author's contrast checker read two colours from the page URL and keep the URL in sync. Tests came first with Playwright in a real browser and failed for the right reason before any code existed. Hugonnot then undid the fix in several ways to check each test turned red again, and took screenshots at three screen sizes. The review loop stops when a round has no blocking or important finding and no code change, or hands control back to Hugonnot after five rounds.

How it went

Round 1 reproduced a real bug in WebKit: rewriting the URL on every colour picker event hit Safari's limit of 100 rewrites in 10 seconds, so the URL froze on an old colour. The fix was a 250 ms delay. Round 2 showed no test actually checked that delay; spacing the test's events 16 ms apart fixed it. Round 3 found nothing and the loop stopped. Nine findings in total: 5 fixed, 1 rejected, 3 deferred. The author gives no time or quality comparison against working without the setup.

Worth knowing

The rule came from an earlier change that was reviewed 15 rounds in a row because nobody set a limit and the code kept growing. Hugonnot also found that the read-only reviewers could edit files: an instruction in the prompt is only a request, so restrict tools in the agent definition.

Try it

With Claude Code· 2 parts to fill in

Work this ticket in steps: [ticket description]. First write a plan listing the files to touch and the tests to write first. Then write the tests and run them; they must fail for the right reason before any code is written. Write the fix, run the tests, then undo the fix and confirm at least one test turns red again. Then start a reviewer agent with read-only tools that has not seen your reasoning and ask it for blocking and important findings. Fix and review again until a round has no blocking or important findings and no code change, or stop after [number] rounds and hand back to me with the open findings.

Square brackets are the parts to fill in. The prompt is ours; the story is theirs.

Where they said it

Related