Multi-model AI code review for Claude Code -- run GPT-5.4 and Gemini-3.1-Pro side-by-side as your personal review panel.
One command. Two frontier models. A synthesized COMMITTEE_REVIEW.md dropped into your repo.
Platform note: Works on macOS, Linux, and Windows (WSL only). PowerShell and CMD are not supported -- use WSL on Windows.
Every AI model has blind spots. GPT might catch a concurrency bug that Gemini misses; Gemini might flag an architectural issue GPT glosses over. Running both in parallel and cross-referencing their findings gives you:
- Higher recall -- issues flagged by either model are surfaced
- Higher precision -- issues flagged by both models are almost certainly real
- Diverse perspectives -- different training data = different intuitions about code quality
- One report -- no tab-switching; everything lands in a single Markdown file
You run /review
|
v
+-----------+ +-----------+
| Codex CLI | | Gemini CLI|
| (GPT-5.4) | | (3.1-Pro) |
+-----------+ +-----------+
\ /
\ /
v v
COMMITTEE_REVIEW.md
|
v
Claude synthesizes
consensus + findings
Both models run in parallel via Python's ThreadPoolExecutor. The script collects their structured reviews, writes a unified report, and Claude presents the synthesis.
| Dependency | Install | Purpose |
|---|---|---|
| Claude Code | docs.anthropic.com | Host environment for the skill |
| Codex CLI | npm install -g @openai/codex |
GPT-5.4 code review |
| Gemini CLI | npm install -g @google/gemini-cli |
Gemini-3.1-Pro code review |
| Python 3.9+ | System or conda | Runs the orchestration script |
| Node.js 18+ | nodejs.org | Required by Codex & Gemini CLIs |
| Unix shell | macOS / Linux / WSL | Not compatible with PowerShell or CMD |
Make sure both codex and gemini are authenticated before first use:
# Authenticate Codex (uses OpenAI API key)
codex auth
# Authenticate Gemini (opens browser OAuth)
geminigit clone git@github.com:sheikhahnaf/reviewer-committee.git
bash reviewer-committee/install.sh- Copies slash command definitions to
~/.claude/commands/:reviewer-committee.md-- main skill (the brain)review.md--/reviewslash commandreview-diff.md--/review-diffslash commandreview-commit.md--/review-commitslash command
- Sets
REVIEWER_COMMITTEE_DIRin~/.claude/settings.jsonso commands can locate the Python script - Checks that
codex,gemini, andpython3are available (warns if missing)
Open Claude Code in any project and type:
/review
If you see "Running Codex and Gemini in parallel...", you're set.
| Command | What it reviews | Example |
|---|---|---|
/review |
All uncommitted changes (staged + unstaged) | Just type /review |
/review-diff main |
Current branch vs a base branch | /review-diff develop |
/review-commit abc123 |
A specific commit by SHA | /review-commit HEAD~1 |
Claude recognizes these phrases and triggers the skill automatically:
- "run the committee"
- "get committee feedback"
- "do a multi-model review"
- "sanity check the code"
- "committee review this"
You can also run the Python script directly:
# Review uncommitted changes
python scripts/run_committee_review.py --mode uncommitted
# Review against a base branch
python scripts/run_committee_review.py --mode base --param main
# Review a specific commit
python scripts/run_committee_review.py --mode commit --param abc123f
# Review specific files
python scripts/run_committee_review.py --mode files --param "src/app.py src/utils.py"
# Review a different project (run from anywhere)
python scripts/run_committee_review.py --mode uncommitted --project-dir /path/to/projectThe script writes a structured Markdown report to your project root:
# Committee Review Report
**Subject:** Uncommitted changes (staged + unstaged)
**Date:** 2025-03-06 14:32:01
**Panel:** GPT-5.4 (Codex CLI) . Gemini-3.1-Pro-Preview (Gemini CLI)
---
## Codex Review (GPT-5.4)
### Strengths
...
### Critical Issues
...
### Important Issues
...
---
## Gemini Review (Gemini-3.1-Pro-Preview)
### Strengths
...
### Critical Issues
...
### Important Issues
...
---
## How to Process This Review
...After writing the report, Claude reads it and presents a synthesis:
## Committee Summary
**Consensus issues** (both reviewers flagged): [highest confidence]
**Codex only:** [...]
**Gemini only:** [...]
**Recommendation:** Approve with Changes
Reviews all staged + unstaged changes via git diff --cached and git diff. Use this during active development to catch issues before committing.
Reviews all commits on your branch vs a base branch via git diff <branch>...HEAD. Ideal before opening or merging a PR.
Reviews a single commit via git show <SHA>. Good for post-commit audits or reviewing someone else's work.
Reviews specific files by reading their full contents (not a diff). Useful for targeted reviews of specific modules.
Both reviewers use a consistent severity framework:
| Severity | Action | Examples |
|---|---|---|
| Critical | Fix before anything else | Bugs, security vulnerabilities, data loss, crashes |
| Important | Fix before merging | Correctness, design flaws, missing error handling |
| Minor | Address if time permits | Style, naming, docs, minor optimizations |
Consensus issues (flagged by both models) have the highest confidence and should be prioritized first.
reviewer-committee/
README.md # You are here
LICENSE # MIT License
SKILL.md # Skill definition (copied to ~/.claude/commands/)
install.sh # Installation script
.gitignore # Ignores .DS_Store, __pycache__, COMMITTEE_REVIEW.md
commands/
review.md # /review slash command
review-diff.md # /review-diff slash command
review-commit.md # /review-commit slash command
scripts/
run_committee_review.py # Core orchestration script
You have no staged or unstaged changes. Check with git status. If you want to review committed code, use /review-commit <SHA> or /review-diff main.
Large diffs can take a while. Narrow the scope:
- Use
--mode files --param "specific_file.py"to review only what matters - Split large PRs into smaller reviews
Install the missing CLI:
npm install -g @openai/codex # for Codex
npm install -g @google/gemini-cli # for GeminiRun gemini interactively once to complete the OAuth flow, then retry.
The report still generates with the successful review. The failed reviewer's section shows the error message. This is by design -- partial results are better than no results.
Make sure the repo directory hasn't moved since installation. If it has, re-run bash install.sh to update the path in ~/.claude/settings.json.
Edit scripts/run_committee_review.py:
- Codex model: Change
'model="gpt-5.4"'in therun_codex_reviewfunction - Gemini model: Change
"gemini-3.1-pro-preview"in therun_gemini_reviewfunction
The GEMINI_REVIEW_PROMPT variable at the top of the script controls the structure Gemini follows. Edit it to match your team's review standards.
python scripts/run_committee_review.py --mode uncommitted --output-dir ./reviews/rm ~/.claude/commands/reviewer-committee.md
rm ~/.claude/commands/review.md
rm ~/.claude/commands/review-diff.md
rm ~/.claude/commands/review-commit.mdOptionally remove REVIEWER_COMMITTEE_DIR from ~/.claude/settings.json.
- Fork the repo
- Create a feature branch
- Run
/reviewon your own changes (dogfooding encouraged) - Open a PR