dual-review
Runs dual PR reviews in parallel to merge unique and common findings into a single, comprehensive report.
Install
mkdir -p .claude/skills/dual-review && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/11984" && unzip -o skill.zip -d .claude/skills/dual-review && rm skill.zipInstalls to .claude/skills/dual-review
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Run pr-review twice in parallel — once in this Claude session, once via OpenAI's Codex CLI — then merge the findings into unique-to-each / agreed-by-both buckets followed by both raw reports. Use when the user says "dual-review PR #N" or wants a second-opinion review.Key capabilities
- →Run pr-review locally as Claude
- →Run pr-review remotely via Codex CLI
- →Merge findings into unique-to-each buckets
- →Merge findings into agreed-by-both buckets
- →Print merged report with raw outputs
- →Resolve PR number from input
How it works
This skill runs `pr-review` in parallel using Claude locally and OpenAI's Codex CLI remotely. It then merges the findings from both reports into categorized buckets and presents a unified output.
Inputs & outputs
When to use dual-review
- →Second-opinion PR review
- →Comparing review results between two models
- →Comprehensive code audit
About this skill
You are running the pr-review skill twice — locally as Claude, and remotely via the codex CLI — and merging the results. Be terse. The user wants the union of findings, not two separate reports.
ARGUMENTS: <PR number> (with or without leading #).
Steps
-
Preflight. Run
command -v codexvia Bash. If it errors, stop and tell the user to install the OpenAI Codex CLI (npm i -g @openai/codexor equivalent) and authenticate. -
Resolve PR number. Strip a leading
#if present. Call it<N>. -
Build the Codex prompt. Read
.claude/skills/pr-review/SKILL.mdand append a final lineARGUMENTS: #<N>. Write the combined text to/tmp/dual-review-prompt-<N>.md. -
Launch Codex in the background. Use Bash with
run_in_background: true. Pipe the prompt via stdin — the pr-review skill starts with---(YAML frontmatter), which codex's arg parser treats as a flag separator and rejects with exit 2 if passed positionally:cat /tmp/dual-review-prompt-<N>.md | \ codex exec --skip-git-repo-check --sandbox read-only --full-auto - \ > /tmp/dual-review-codex-<N>.md 2>&1--full-autois required for non-interactive background use (otherwise codex blocks on approval prompts).--sandbox read-onlykeeps codex from touching the working tree. You'll be notified when it finishes. Do not poll. -
In parallel, run pr-review yourself by following
.claude/skills/pr-review/SKILL.mdfor PR<N>. Produce the full report (template and all). Hold it in memory; do not print it yet. -
When the background task completes, read
/tmp/dual-review-codex-<N>.md. If it's empty or errored, skip to step 8 and note the dual leg failed — don't suppress your own findings to fit the template. -
Merge. Walk both reports finding-by-finding. Two findings match if they cite the same
file.go:line(±a few lines) or describe the same root cause in different words. Preserve each finding's original severity tag ([blocker]/[nit]/[question]) and original wording — do not paraphrase. For agreed-by-both findings, prefer the more specific phrasing of the two and cite both severities if they disagree (e.g.[blocker — Claude] / [nit — Codex]). -
Print the merged report in this exact order:
## PR #<N> — Dual review ### Findings unique to Claude - **[blocker]** `file.go:42` — … ### Findings unique to Codex - **[blocker]** `file.go:99` — … ### Findings agreed by both - **[blocker]** `file.go:123` — … ### Description vs. diff <one line: union of both reports' findings> ### Recommendation <one short paragraph merging both recommendations> --- ### Raw — Claude <verbatim Claude pr-review output> ### Raw — Codex <verbatim Codex pr-review output>If a bucket is empty, write
_None._rather than omitting the header — the user wants to see at a glance whether each agent found something the other missed.
Don'ts
- Don't drop a finding because the other side missed it. Bucketing exists precisely to surface those.
- Don't paraphrase severity tags or finding text in the buckets — copy them verbatim. Only the trailing
Description vs. diffandRecommendationare synthesized. - Don't post the review (no
gh pr review, no comments). Just print. - Don't strip the raw reports — they're the audit trail for the merge.
- Don't run
codex execin the foreground; it blocks long enough that running pr-review yourself in parallel is the whole point.
Caveats
- Codex inherits cwd and shell env, so
ghandgitauth carry over. Ifgh auth statusfails for Claude, it'll fail for Codex too. - Codex output is whatever its model decides to produce; it may not follow the pr-review template exactly. Bucket what's there; don't try to rewrite it.
- If the two reports disagree on a fact (e.g. one claims a line panics, the other claims it's safe), put it in
unique to <agent>rather thanagreed-by-both. Don't arbitrate — that's the user's job.
When not to use it
- →When the user does not want a second-opinion review
- →When the user does not want findings merged into unique/agreed buckets
- →When the OpenAI Codex CLI is not installed or authenticated
Prerequisites
Limitations
- →Requires the OpenAI Codex CLI to be installed and authenticated
- →Codex output may not follow the pr-review template exactly
- →Does not arbitrate disagreements between the two reports
How it compares
This skill provides a dual-perspective review by combining findings from two different AI models, offering a more complete and cross-validated assessment than a single review.
Compared to similar skills
dual-review side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| dual-review (this skill) | 0 | 3mo | No flags | Intermediate |
| effective-go | 323 | 9mo | No flags | Beginner |
| architect-review | 109 | 4mo | No flags | Advanced |
| resolve-conflicts | 81 | 8mo | Review | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
effective-go
openshift
Apply Go best practices, idioms, and conventions from golang.org/doc/effective_go. Use when writing, reviewing, or refactoring Go code to ensure idiomatic, clean, and efficient implementations.
architect-review
sickn33
Master software architect specializing in modern architecture patterns, clean architecture, microservices, event-driven systems, and DDD. Reviews system designs and code changes for architectural integrity, scalability, and maintainability. Use PROACTIVELY for architectural decisions.
resolve-conflicts
antinomyhq
Use this skill immediately when the user mentions merge conflicts that need to be resolved. Do not attempt to resolve conflicts directly - invoke this skill first. This skill specializes in providing a structured framework for merging imports, tests, lock files (regeneration), configuration files, and handling deleted-but-modified files with backup and analysis.
solid-principles
SmidigStorm
Enforce SOLID principles (Single Responsibility, Open/Closed, Liskov Substitution, Interface Segregation, Dependency Inversion) in object-oriented design. Use when writing or reviewing classes and modules.
python-testing-patterns
wshobson
Implement comprehensive testing strategies with pytest, fixtures, mocking, and test-driven development. Use when writing Python tests, setting up test suites, or implementing testing best practices.
codex
Lucklyric
Invoke Codex CLI for complex coding tasks requiring high reasoning capabilities. This skill should be invoked when users explicitly mention "Codex", request complex implementation challenges, advanced reasoning, or need high-reasoning model assistance. Automatically triggers on codex-related requests and supports session continuation for iterative development.