dual-review
A Claude Code slash command that sends your plan or diff to a second AI agent for independent, structured review before and after you implement.
What it does
/dual-review Implement feature X
- Explore the codebase to understand the area being changed
- Plan a draft implementation
- Pre-review — send the plan to the
reviewtool on theclaude_reviewer(orcodex) MCP server for a structured verdict - Iterate — on
NEEDS_REVISION, address critical/major issues and re-submit, up to 3 rounds - Implement once the plan is
APPROVED - Post-review — send the final
git difftocode_reviewfor a post-implementation check - Summarize with the full review history
The reviewer runs in a separate agent instance with read-only codebase access and returns:
{
"verdict": "APPROVED | NEEDS_REVISION",
"issues": [
{ "severity": "critical | major | minor", "description": "...", "recommendation": "..." }
],
"suggestions": ["..."]
}
Iteration rules: critical issues must be addressed before re-submitting; major issues should
be; minor issues are at your discretion. After 3 NEEDS_REVISION rounds, the issues are presented
to you for a decision instead of looping forever.
Why it exists
dual-review isn't a bolted-on extra — it's the workflow the MCP bridge itself was built to
enable. The bridge's original design doc (SPEC.md) describes exactly this loop: give a second AI
a plan or diff via the claude_reviewer/codex MCP tools, before and after implementing, so a
review round doesn't mean manually copy-pasting a diff into another agent's chat window.
For most of the project's life it lived only as skills/dual-review/SKILL.md — usable if you had
this repo cloned, but not installable on its own. That changed 8 days into the project's public
life, via three commits that turned it into a real distributable skill:
3c12bac— scaffolded multi-channel skill distribution infrastructure (pnpm workspace, package generation, marketplace generation, askills-releaseChangesets pipeline) for the repo as a whole. At this pointdual-reviewstill had nometadata.json, so package generation was blocked for it specifically.0aac0a7— authoreddual-review's missingmetadata.json, unblocking package generation. Fully generated, synced, and validated — but stillprivate: true, nothing published yet.bf7279b— flipped it toprivate: falseand enabled it for npm publish.
The result: @mcp-agent-bridge/skill-dual-review is now a real, independently versioned package
(currently 1.0.0 on npm) and a plugin in this repo's own Claude Code marketplace, installable
without cloning the bridge itself.
Install
Claude Code Plugin
/plugin marketplace add catesandrew/mcp-agent-bridge
/plugin install mab@mcp-agent-bridge
npm package
The skill is published as @mcp-agent-bridge/skill-dual-review.
Inspect or fetch it directly:
npm view @mcp-agent-bridge/skill-dual-review
Its SKILL.md, metadata.json, LICENSE, and README.md are the package contents — copy
SKILL.md into your agent's skills directory if your tooling consumes skill files directly rather
than through a plugin manager.
Manual / clone
git clone https://github.com/catesandrew/mcp-agent-bridge.git
cp -r mcp-agent-bridge/skills/dual-review ~/.claude/skills/dual-review
Configuration
The skill needs the claude_reviewer MCP server (this repo's Claude bridge) reachable. Default:
http://localhost:8940/mcp, configured in .mcp.json:
{
"mcpServers": {
"claude_reviewer": {
"type": "streamable-http",
"url": "http://localhost:8940/mcp"
}
}
}
Environment variables (inherited from the bridge server):
CLAUDE_REVIEW_MODEL— model used by the reviewer (default:opus)CLAUDE_REVIEW_MAX_TURNS— max agentic turns per review (default:8)CLAUDE_REVIEW_CWD— working directory for the reviewer's file accessCLAUDE_REVIEW_ALLOWED_TOOLS— comma-separated tools the reviewer can use