Dual agent review
Skill alainabo/aso-dual-agent-review/.claude/skills/dual-agent-review
Use when someone wants two AI agents to review each other's work before a human ships it — for ANY kind of work, not just code: documents, marketing content, designs, contracts, analyses, spreadsheets, websites. Triggers include "set up dual-agent review", "peer review between my agents", "make my agents check each other", "review without babysitting", "second opinion agent", or wanting to install this workflow in a new project. Interviews the user about their domain, then installs the shared review folder, proposal template, silent whispers, per-agent manual sections, and a /check-reviews skill — all adapted to their work.From its SKILL.md
npx -y skills add alainabo/aso-dual-agent-review --skill dual-agent-reviewAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
7.4 KB, ~1.6k tokens by cl100k_base, as published. Nobody here has run it
What this skill does
Installs a dual-agent peer-review system: two AI agents (any pair — Claude Code + Codex, Claude + Gemini CLI, two Claude projects, ...) that review each other's work before a human performs the final act. Works for any domain — code, documents, marketing campaigns, legal drafts, financial models, designs. The user answers a short interview; everything installed is adapted to their answers.
The idea in one paragraph: An agent reviewing its own work has a blind spot — the same reasoning that produced the mistake tends to miss it. A second, independent agent catches what the first cannot. The human stays the final gate but stops being the messenger: silent session-start "whispers" tell each agent when work is waiting on it, so the human never has to relay "the other one reviewed" or re-explain the protocol. Ship quality goes up; babysitting goes to zero.
What gets installed:
- A shared review folder (
<project>/agent-review/by default) with a protocolREADME.mdand a proposalTEMPLATE.md— the paper trail both agents write to. - One whisper script per agent — a silent bash script that scans the review folder and prints a one-line note only when a proposal is waiting on that specific agent (needs fix / needs countersign / needs review). Silent otherwise: near-zero token cost.
- A manual section per agent — pasted into each agent's operating manual (
CLAUDE.md,AGENTS.md, etc.) wiring the whisper to session start and teaching the propose/review/revise rules. - A
/check-reviewsskill (for the Claude Code side) — one trigger phrase that scans, classifies whose turn it is, and acts: fixes findings, reviews peer proposals, countersigns approvals.
All template sources live in references/ with {{PLACEHOLDER}} slots. Read them, fill them from the interview, write them to their destinations. Do not invent your own protocol text — adapt these.
Step 1 — Interview (keep it to ~6 questions, one message)
Ask, with sensible defaults offered:
- The two agents. Which two? (Default: Claude Code + Codex.) What operating-manual file does each read at session start? (Claude Code →
CLAUDE.md; Codex →AGENTS.md; Gemini CLI →GEMINI.md; another Claude project → its ownCLAUDE.md.) - The work. What kind of work goes through this loop? (Code in a git repo / documents / marketing content / designs / mixed.) This drives the scope wording and review flavor.
- Where work-in-progress lives. Git branches (which integration branch)? Draft files in a folder? Cloud doc links? The reviewer must be able to open the actual work from what the proposal says.
- The final act. What does the human do when both agents agree — merge to main? publish the post? send the contract? sign off the report? This exact phrase goes into the never-do rules.
- Review criteria. What should the reviewer check against? Existing guardrail files (brand guide, style guide, coding standards, legal checklist) — get paths; or offer to draft a starter criteria list from their answers.
- Locations. Project root, review-folder path (default
<root>/agent-review/), and the human's name.
Step 2 — Install
- Create the review folder. Write
README.mdfromreferences/review-folder-README.mdandTEMPLATE.mdfromreferences/proposal-TEMPLATE.md, filling every{{PLACEHOLDER}}from the interview. In the README,{{WORK_LOCATION}}should describe git branching if they chose git (feature branches from the integration branch, never direct to the shipping branch) or the drafts folder/doc convention otherwise. - Generate both whispers from
references/whisper.sh: substitute{{REVIEW_DIR}}(absolute path),{{ME}}/{{PEER}}(the agent names exactly as they'll appear in proposal files). Write agent A's copy somewhere agent A owns (e.g..claude/hooks/review-whisper.sh) and agent B's copy in agent B's workspace.chmod +xboth. - Wire session start. For Claude Code: add a
SessionStarthook to.claude/settings.local.json(create or extendhooks.SessionStartwith acommandentry running the script — preserve existing settings, validate JSON after). For agents without hooks (Codex, most CLIs): the manual section's "run this at session start" instruction is the mechanism — put it at the very top of that agent's manual. - Paste the manual section from
references/manual-section.mdinto each agent's operating manual, placeholders filled per side. - Install
/check-reviewsfor the Claude Code side: writereferences/check-reviews-skill.md(placeholders filled) to.claude/skills/check-reviews/SKILL.md.
Step 3 — Verify before declaring done (do not skip)
bash -nboth whispers, then run both against the real (empty) review folder — both must exit 0 silently.- Simulate the states in a temp folder (point a sed-patched copy of each whisper at it): proposal awaiting first review → only the reviewer's whisper fires; Changes Requested unaddressed → only the proposer's fires; revised → only the reviewer's; countersign pending → only the proposer's; both-agreed → neither. No state may trigger both whispers at once. Run with the OS default shell (macOS ships bash 3.2 — the template's length-guarded array loops exist for exactly that; keep them).
- Validate any JSON you touched. Confirm each manual reads coherently where you pasted.
- Walk the user through one dry run: have them ask agent A for a trivial change, watch the proposal appear, ask agent B to review, watch the whisper fire on the next session.
Hard rules to preserve in everything you install
These are the load-bearing rules — every installed artifact must carry them:
- Agents never perform the final act. The human ships, merges, publishes, sends, signs. Always.
- No agent ever marks its own proposal AGREED. Only the peer's sign-off counts.
- No rubber-stamping. A review that didn't open the actual work is not a review.
- Whispers only surface — they never act. Acting is triggered by the human (or by the agent reading its manual at session start), never by the hook itself.
- One turn at a time. The classification logic (proposer vs reviewer, last-revision vs last-review ordering) must guarantee a proposal is never "waiting on" both agents simultaneously.
Customizing further
Users can rename sections, add review rounds, or add a third agent (the whisper generalizes: one copy per agent, {{PEER}} becomes a check across the others' boxes — but tell them two is the sweet spot; three agents triples cost for diminishing returns). The proposal file format is the stable interface — anything that writes/reads Proposed by:, ## Review — <name>, ## Revision — <name>, and the AGREED checkboxes stays compatible.
What ships with it: 5 files
13.6 KB alongside SKILL.md, 1 of them executable
references/
- check-reviews-skill.md3.9 KB
- manual-section.md2.1 KB
- proposal-TEMPLATE.md1.5 KB
- review-folder-README.md3.1 KB
- whisper.shruns2.9 KB