Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Peer Review Ralph Loop — combines Cavekit kits with a Ralph Loop and true cross-model peer review using Codex (OpenAI). Claude builds from specs; Codex reviews adversarially. Primary path: Codex CLI delegation via codex-review.sh (fast, no MCP overhead). Legacy fallback: Codex as MCP server when CLI delegation is unavailable. Covers setup, iteration patterns, convergence detection, and completion criteria. Triggers: "peer review loop", "ralph loop with codex", "cavekit ralph", "peer review build
.claude/skills/hashgraph-online-peer-review-loop/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-03 | ✗→✓ | ▲ Improved | 611% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 45% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 146% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 55% | 0% |
| case-15 | ✗→✓ | ▲ Improved | 26% | 0% |
Run a Cavekit cavekit through a Ralph Loop where Claude builds and Codex adversarially reviews. This is the most rigorous automated quality process available: every few iterations, a completely different model (different training data, different biases, different blind spots) challenges your implementation.
| Factor | Single-Model Loop | Peer Review Loop | |--------|-------------------|------------------| | Blind spots | Same model, same blind spots every iteration | Two models catch different classes of issues | | Cavekit drift | Builder may silently deviate from cavekit | Peer reviewer checks cavekit compliance explicitly | | Quality floor | Converges to "good enough for one model" | Converges to "survives cross-examination" | | Dead ends | May retry failed approaches | Peer reviewer flags repeated patterns |
┌─────────────────────────────────────────────────────┐
│ Ralph Loop │
│ (Stop hook feeds same prompt each iteration) │
│ │
│ ┌──────────┐ ┌──────────────┐ ┌────────────┐ │
│ │ Claude │───▶│ Build from │───▶│ Commit │ │
│ │ (Build) │ │ cavekit + │ │ changes │ │
│ └──────────┘ └──────────────┘ └──────┬─────┘ │
│ ▲ │ │
│ │ ▼ │
│ ┌──────────┐ ┌──────────────┐ ┌────────────┐ │
│ │ Fix │◀──│ Parse │◀──│ Codex CLI │ │
│ │ findings │ │ findings │ │ (Review) │ │
│ └──────────┘ └──────────────┘ └────────────┘ │
│ │
│ Completion: all cavekit requirements met + │
│ no CRITICAL/HIGH findings │
└─────────────────────────────────────────────────────┘The peer review loop supports two invocation paths:
scripts/codex-review.sh whichcalls codex directly in --approval-mode full-auto with a structured review prompt. Faster, no MCP server overhead, findings are parsed and appended to context/impl/impl-review-findings.md automatically.
.mcp.json. Claude calls the MCP tool on review iterations. Used only when Codex CLI delegation is unavailable (e.g., older Codex versions).
The build script (setup-build.sh) auto-detects which path to use: if codex-review.sh is present and codex CLI is available, it uses CLI delegation. Otherwise it falls back to MCP configuration.
bash# Basic: implement a cavekit with peer review /ck:peer-review-loop context/kits/cavekit-auth.md # With options /ck:peer-review-loop context/kits/cavekit-api.md --max-iterations 20 --codex-model gpt-5.4-mini # Review-only mode (review existing code, don't build new) /ck:peer-review-loop context/kits/cavekit-api.md --review-only # Review every iteration instead of every 2nd /ck:peer-review-loop context/kits/cavekit-auth.md --review-interval 1
.mcp.json (if not already configured)When codex CLI is available, the loop delegates review to scripts/codex-review.sh which exposes the bp_codex_review function. This runs Codex in full-auto mode with a structured adversarial review prompt, parses findings into a standardized table, and appends them to context/impl/impl-review-findings.md.
bash# What the build loop runs on review iterations: source scripts/codex-review.sh bp_codex_review --base main
The CLI path is faster (no MCP server startup), produces structured findings with severity levels (P0-P3), and handles fallback gracefully if Codex is unavailable.
When Codex CLI delegation is not available, the command configures Codex as an MCP server automatically:
json{ "mcpServers": { "codex-reviewer": { "command": "codex", "args": ["mcp-server", "-c", "model=\"gpt-5.4\""] } } }
Claude calls this MCP server on review iterations to get peer review feedback. The MCP server exposes Codex as a tool that accepts prompts and returns responses — Claude sends the cavekit + code diff, Codex returns findings.
Use --codex-model to specify which OpenAI model Codex should use:
bash/ck:peer-review-loop cavekit.md --codex-model gpt-5.4-mini # faster, cheaper /ck:peer-review-loop cavekit.md --codex-model gpt-5.4 # default, most capable
Iteration 1: BUILD — Read cavekit, implement first requirement
Iteration 2: REVIEW — Call Codex CLI (or MCP fallback), get findings, fix CRITICAL/HIGH
Iteration 3: BUILD — Continue implementing, address remaining findings
Iteration 4: REVIEW — Call Codex CLI (or MCP fallback) again, new findings on new code
...
Iteration N: BUILD — All requirements met, all findings fixed
→ outputs <promise>SPEC COMPLETE</promise>The review interval is configurable. Default is every 2nd iteration. Use --review-interval 1 for maximum rigor (review every iteration).
Review findings are tracked in context/peer-review-findings.md:
markdown# Peer Review Findings ## Latest Review: Iteration 4 — 2026-03-14T10:30:00Z ### Reviewer: Codex (gpt-5.4) | # | Severity | File | Issue | Status | |---|----------|------|-------|--------| | 1 | CRITICAL | src/auth.ts:L42 | Missing input validation on token | FIXED | | 2 | HIGH | src/auth.ts:L67 | Race condition in session refresh | FIXED | | 3 | MEDIUM | src/auth.ts:L15 | Unused import | NEW | | 4 | LOW | src/auth.ts:L3 | Comment typo | WONTFIX | ## History ### Iteration 2 | # | Severity | File | Issue | Status | |---|----------|------|-------|--------| | 1 | CRITICAL | src/auth.ts:L20 | SQL injection in login query | FIXED |
The loop exits when the completion promise is output. The prompt instructs Claude to ONLY output it when ALL of these are true:
Alternates between implementing cavekit requirements and calling Codex for review. Use for greenfield implementation from a cavekit.
--review-only)Skips building. Each iteration calls Codex to review existing code against the cavekit, then fixes issues found. Use when code already exists and you want peer review QA.
npm install -g @openai/codexcodex login or env var)The peer review loop has converged when:
If the loop hits max iterations without converging:
context/peer-review-findings.md for persistent issues/ck:revise to trace issues back to kitsOther measured skills in the registry, with their headline benchmark lift.