skills/multi-model-review/SKILL.md
Pre-PR multi-model review, parallel opus and codex exec adversarial lanes, then adversarial verification of merged findings. Read-only. Use before shipping nontrivial diffs.
npx skillsauth add bjornmelin/dev-skills multi-model-reviewInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Two independent review lanes run in parallel, then every merged finding is
adversarially verified against the actual code. Replaces the retired
multi-model-review workflow: per MODELS.md there is no Claude shim - the
main loop (Fable) runs the codex lane itself via direct background Bash.
Inputs: repo (absolute path, required), base (default main), focus
(default: correctness, security, edge cases, API contracts, maintainability).
Shared review contract (put in BOTH lane prompts):
Repo:
<repo>. Review the diffgit diff <base>...HEAD; if that diff is empty, review staged+unstaged changes instead. Focus:<focus>. You are READ-ONLY: do not edit any file. Read the changed files fully - not just the diff hunks. Report findings with file:line, why each matters, and the precise fix. If the change is clean, use verdict "ship" with zero findings - do not invent issues.
Opus lane - Agent(model: 'opus', effort: 'high', run_in_background: true).
Prompt = shared contract + "You are the Claude reviewer lane. Set reviewer to
"opus-4.8". Return ONLY a JSON object matching
<skill-dir>/references/findings-schema.json
(read it first) - no prose around it."
<skill-dir> throughout means this skill's base directory (provided when the
skill is invoked) - substitute the real absolute path in every prompt/command.
Codex lane - direct codex exec, no relay agent:
<skill-dir>/references/adversarial-prompt.md (this skill's own
template - its output contract matches findings-schema.json):
TARGET_LABEL = "diff vs <base> in <repo>", USER_FOCUS = focus,
REVIEW_COLLECTION_GUIDANCE = "Collect the diff yourself with git
(git diff <base>...HEAD, falling back to uncommitted changes if empty) and
read changed files fully.", REVIEW_INPUT = "Use git and file reads in the
repo working directory." Write it to <scratchpad>/mmr-prompt.md.codex exec -m gpt-5.6-sol -c model_reasoning_effort="medium" -s read-only --cd <repo> --output-schema <skill-dir>/references/findings-schema.json --output-last-message <scratchpad>/mmr-codex-findings.json - < <scratchpad>/mmr-prompt.md
Effort routing per MODELS.md: "medium" (Sol worker) is the default review
tier; pin "high" for consequential or cross-cutting diffs. Never xhigh.
mmr-codex-findings.json; set reviewer to
"gpt-5.6-sol" if absent.Spawn one verify agent - Agent(model: 'opus', effort: 'high') - with the
shared contract, the merged lane JSON, and:
Adversarially VERIFY each finding against the actual code: open the cited file:line, confirm the claim is real on THIS diff (not stale, hypothetical, or about pre-existing code), dedupe overlapping findings across lanes (set confirmedBy to "both" when lanes agree - that raises confidence), and reject false positives with concrete evidence. Order confirmed findings by severity. Overall verdict: "blocker" if any confirmed critical/high, "changes-recommended" if any confirmed finding remains, else "ship". Return ONLY a JSON object matching
<skill-dir>/references/verified-schema.json.
For a tiny finding set (≤3), Fable may verify inline instead of spawning.
tools
Independent gpt-5.6 diff review via the Codex CLI, normal or steerable adversarial with JSON findings. Use before shipping nontrivial changes.
development
Delegate implementation, investigation, or bulk work to gpt-5.6 codex via pinned codex exec. Use for clear-spec builds, migrations, debugging, or any task MODELS.md routes to codex.
development
Adversarial pre-mortem: imagine the plan failed, work backwards to surface risky assumptions + irreversible bets, then harden them. Proactively offer it (after the current request; confirm first) before a hard-to-reverse or one-way-door call (API, schema, framework, a hire), an all-upside plan, or unvalidated assumptions. Also on request.
documentation
Batch-grill a plan or design round by round: whole settled frontier per round, recommended answers + close-call scores, ADRs + a glossary via domain-modeling, /pre-mortem handoff on irreversible calls.