Big Review
Review like a sharp senior engineer, not a linter. Catch bugs that
compile, pass the obvious tests, and still don't work — and catch the
PR that works perfectly but doesn't do what it was supposed to do.
Purpose
High-signal review built from five moves:
- Intent — what is this change for, and does it actually do
that? Design before lines.
- Triage — don't review files that can't carry a bug.
- Context — mine the codebase (conventions, siblings, callers,
history) before judging any hunk.
- Find — a mechanical surface pass plus depth-pass thinking modes
(semantic correctness, failure paths, removed behavior, caller
contracts, trust boundaries, tests that would actually fail).
- Verify — try to disprove every candidate finding before it's
allowed out. Findings that survive carry evidence and a concrete
failure scenario.
Core stance:
- Review changed behavior and intent, not formatting noise.
- Read each reviewable file end-to-end, not just the changed hunks.
- Every finding survives a disproof attempt and cites evidence.
- Prefer fewer, stronger comments. One proven High beats ten nits.
- A missed real bug and a false positive are both failures, but they
are not symmetric: false positives destroy trust in every future
comment. When impact is low and confidence is low, stay silent.
- If nothing is wrong, say "No findings." Clean code is a good
outcome, not a prompt to invent a concern.
Default workflow
- Determine the target. One of: uncommitted local diff; current
branch vs merge base; specific files; a GitHub PR; a pasted diff.
If ambiguous, ask once; otherwise default to the local branch vs
merge base.
- Get the diff (read-only — never mutate repo state while gathering
context).
- Local branch:
git merge-base origin/main HEAD to find <base>,
then git diff <base>...HEAD (three-dot).
- Uncommitted:
git status --short, git diff, and git diff --staged if relevant.
- GitHub PR (only when asked and
gh is available): gh pr diff <n> and gh pr view <n>. Fetch full file contents from the head
ref before judging (see references/github-delivery.md). Never
review from hunks alone.
- Intent pass (
references/intent-and-context.md). Read the PR
description / ticket / commit messages, restate the goal, and check
the change against it. If the design is wrong — wrong layer,
wrong approach, shouldn't exist — say so now and don't line-polish
code you're recommending be rewritten.
- Triage each file → review it or clear it. Cleared files are
a hard skip — no comments on them.
(
references/triage-and-severity.md)
- Context pass (
references/intent-and-context.md). Conventions,
sibling implementations, callers of changed symbols, git history on
suspicious lines, existing helpers, and what's missing from the
diff. Read tests first — they're the spec.
- Read each reviewable file end-to-end before judging any hunk —
including resolving how changed symbols wire up (registries,
conventions, tables in other files).
- Surface pass (
references/surface-checklist.md).
- Depth pass (
references/depth-modes.md).
- Verification gate (
references/verification-gate.md). Every
candidate gets a disproof attempt and a concrete failure scenario,
or it dies here. Apply the comment budget.
- Assign severity High / Medium / Low and order by blast radius
(
references/triage-and-severity.md).
- Write output in the requested mode, using
references/voice-and-output.md.
For large PRs (roughly >12 reviewable files or >1000 changed lines),
parallelize the find/verify phases with subagents — see
references/scaling.md.
Mode selection
Normal review (default)
Triggers: "review my code", "big review", "deep review", "pre-PR
review". Output: the full chat template — verdict, cleared files,
findings grouped by severity, checked-clean list.
Fast / rabbit review
Triggers: "rabbit review", "fast review", "quick sweep", "triage this
PR". Compressed workflow: skip the deep context pass, keep the intent
check and the verification gate (speed never excuses a false
positive). Terse output: one compact file:line — issue. Fix: … per
finding, skip most Lows, LGTM for small ranges checked and found
clean.
Self-review / local-fix mode
When the PR/branch is the user's own, or they ask you to fix findings
locally. Report findings in chat by default. Apply fixes only when
explicitly asked; keep them narrow; run the relevant tests (or say why
not); summarize what changed. Do not post review comments or
self-approve.
GitHub PR review mode
When the user asks to prepare or post a PR review. Default to
preparing a ready-to-post plan (path, line, body, intended event).
Post nothing unless explicitly asked. Prefer inline comments;
severity → event: any High → REQUEST_CHANGES; no High + ≥1 Medium →
COMMENT; only Lows or none → APPROVE. Never self-approve. See
references/github-delivery.md.
Reference loading map
- Always read
references/intent-and-context.md (intent pass +
context mining) and references/triage-and-severity.md (triage gate
- Read
references/surface-checklist.md for the surface pass.
- Read
references/depth-modes.md for the depth pass.
- Read
references/verification-gate.md before deciding whether any
finding is worth emitting — no finding skips the gate.
- Read
references/voice-and-output.md before writing final comments.
- Read
references/github-delivery.md only when preparing or
posting GitHub inline comments.
- Read
references/scaling.md only for large PRs.
In fast mode you may skip the deep parts of intent-and-context, but
never skip the verification gate or voice rules.
Output contract
## Verdict
[Request changes / Comment / Approve / No findings]
One human line. If intent and implementation diverge, that's the
headline, not a footnote.
## Cleared
- `path`: reason
## Findings
### High
1. `file:line` — finding title
Issue:
Evidence:
Fix:
### Medium
...
### Low (non-blocking)
...
## Checked clean
- `path`: what was checked
Rules:
- No findings → write "No findings." and skip the Findings section.
- Never manufacture findings; never pad a clean review.
- Never leak internal labels (D1, S4, CONFIRMED/PLAUSIBLE) into
author-facing text.
- Don't duplicate linter/formatter/typechecker output.
- Don't comment on cleared files.
- Don't comment on pre-existing problems the diff didn't touch or
worsen (at most one explicitly out-of-scope note, if it's serious).
- Don't speculate without evidence.
Non-goals
- No generic lint review or style bible.
- No summarizing the PR back to the author.
- No praise.
- No broad-rewrite requests for a narrow bug.
- Don't invent repository conventions — verify them.
- Never mutate files, commit, push, or post a review unless the
user explicitly asks. Gathering context is read-only.
1---2name: big-review3description: Deep, evidence-first code review for local diffs and GitHub PRs. Use for "big review", "deep review", "review my code", "pre-PR review", "review-proof this", "rabbit review", "fast review", "triage this PR", semantic correctness review, failure-path review, and high-signal PR review.4---56# Big Review78Review like a sharp senior engineer, not a linter. Catch bugs that9compile, pass the obvious tests, and still don't work — and catch the10PR that works perfectly but doesn't do what it was supposed to do.1112## Purpose1314High-signal review built from five moves:15161. **Intent** — what is this change *for*, and does it actually do17 that? Design before lines.182. **Triage** — don't review files that can't carry a bug.193. **Context** — mine the codebase (conventions, siblings, callers,20 history) before judging any hunk.214. **Find** — a mechanical surface pass plus depth-pass thinking modes22 (semantic correctness, failure paths, removed behavior, caller23 contracts, trust boundaries, tests that would actually fail).245. **Verify** — try to *disprove* every candidate finding before it's25 allowed out. Findings that survive carry evidence and a concrete26 failure scenario.2728Core stance:29- Review **changed behavior and intent**, not formatting noise.30- Read each reviewable file **end-to-end**, not just the changed hunks.31- Every finding survives a **disproof attempt** and cites **evidence**.32- Prefer **fewer, stronger** comments. One proven High beats ten nits.33- A missed real bug and a false positive are both failures, but they34 are not symmetric: false positives destroy trust in *every* future35 comment. When impact is low and confidence is low, stay silent.36- If nothing is wrong, say **"No findings."** Clean code is a good37 outcome, not a prompt to invent a concern.3839## Default workflow40411. **Determine the target.** One of: uncommitted local diff; current42 branch vs merge base; specific files; a GitHub PR; a pasted diff.43 If ambiguous, ask once; otherwise default to the local branch vs44 merge base.452. **Get the diff (read-only — never mutate repo state while gathering46 context).**47 - Local branch: `git merge-base origin/main HEAD` to find `<base>`,48 then `git diff <base>...HEAD` (three-dot).49 - Uncommitted: `git status --short`, `git diff`, and `git diff50 --staged` if relevant.51 - GitHub PR (only when asked and `gh` is available): `gh pr diff52 <n>` and `gh pr view <n>`. Fetch full file contents from the head53 ref before judging (see `references/github-delivery.md`). Never54 review from hunks alone.553. **Intent pass** (`references/intent-and-context.md`). Read the PR56 description / ticket / commit messages, restate the goal, and check57 the change against it. If the *design* is wrong — wrong layer,58 wrong approach, shouldn't exist — say so now and don't line-polish59 code you're recommending be rewritten.604. **Triage each file** → *review it* or *clear it*. Cleared files are61 a **hard skip** — no comments on them.62 (`references/triage-and-severity.md`)635. **Context pass** (`references/intent-and-context.md`). Conventions,64 sibling implementations, callers of changed symbols, git history on65 suspicious lines, existing helpers, and what's *missing* from the66 diff. Read tests first — they're the spec.676. **Read each reviewable file end-to-end** before judging any hunk —68 including resolving how changed symbols wire up (registries,69 conventions, tables in other files).707. **Surface pass** (`references/surface-checklist.md`).718. **Depth pass** (`references/depth-modes.md`).729. **Verification gate** (`references/verification-gate.md`). Every73 candidate gets a disproof attempt and a concrete failure scenario,74 or it dies here. Apply the comment budget.7510. **Assign severity** High / Medium / Low and order by blast radius76 (`references/triage-and-severity.md`).7711. **Write output** in the requested mode, using78 `references/voice-and-output.md`.7980For large PRs (roughly >12 reviewable files or >1000 changed lines),81parallelize the find/verify phases with subagents — see82`references/scaling.md`.8384## Mode selection8586### Normal review (default)87Triggers: "review my code", "big review", "deep review", "pre-PR88review". Output: the full chat template — verdict, cleared files,89findings grouped by severity, checked-clean list.9091### Fast / rabbit review92Triggers: "rabbit review", "fast review", "quick sweep", "triage this93PR". Compressed workflow: skip the deep context pass, keep the intent94check and the verification gate (speed never excuses a false95positive). Terse output: one compact `file:line — issue. Fix: …` per96finding, skip most Lows, `LGTM` for small ranges checked and found97clean.9899### Self-review / local-fix mode100When the PR/branch is the user's own, or they ask you to fix findings101locally. **Report findings in chat by default.** Apply fixes only when102explicitly asked; keep them narrow; run the relevant tests (or say why103not); summarize what changed. Do **not** post review comments or104self-approve.105106### GitHub PR review mode107When the user asks to prepare or post a PR review. Default to108**preparing** a ready-to-post plan (path, line, body, intended event).109**Post nothing unless explicitly asked.** Prefer inline comments;110severity → event: any High → `REQUEST_CHANGES`; no High + ≥1 Medium →111`COMMENT`; only Lows or none → `APPROVE`. Never self-approve. See112`references/github-delivery.md`.113114## Reference loading map115116- **Always** read `references/intent-and-context.md` (intent pass +117 context mining) and `references/triage-and-severity.md` (triage gate118 + severity tiers).119- Read `references/surface-checklist.md` for the surface pass.120- Read `references/depth-modes.md` for the depth pass.121- Read `references/verification-gate.md` **before deciding whether any122 finding is worth emitting** — no finding skips the gate.123- Read `references/voice-and-output.md` before writing final comments.124- Read `references/github-delivery.md` **only** when preparing or125 posting GitHub inline comments.126- Read `references/scaling.md` **only** for large PRs.127128In fast mode you may skip the deep parts of intent-and-context, but129never skip the verification gate or voice rules.130131## Output contract132133```134## Verdict135[Request changes / Comment / Approve / No findings]136One human line. If intent and implementation diverge, that's the137headline, not a footnote.138139## Cleared140- `path`: reason141142## Findings143144### High1451. `file:line` — finding title146 Issue:147 Evidence:148 Fix:149150### Medium151...152153### Low (non-blocking)154...155156## Checked clean157- `path`: what was checked158```159160Rules:161- No findings → write "No findings." and skip the Findings section.162- Never manufacture findings; never pad a clean review.163- Never leak internal labels (D1, S4, CONFIRMED/PLAUSIBLE) into164 author-facing text.165- Don't duplicate linter/formatter/typechecker output.166- Don't comment on cleared files.167- Don't comment on pre-existing problems the diff didn't touch or168 worsen (at most one explicitly out-of-scope note, if it's serious).169- Don't speculate without evidence.170171## Non-goals172173- No generic lint review or style bible.174- No summarizing the PR back to the author.175- No praise.176- No broad-rewrite requests for a narrow bug.177- Don't invent repository conventions — verify them.178- **Never** mutate files, commit, push, or post a review unless the179 user explicitly asks. Gathering context is read-only.