Review a pull request
A review prompt that finds real bugs instead of style nits — and, crucially, that does not filter its own findings before you see them.
When to use it
Reviewing a diff where a missed bug costs more than a false alarm — payments, auth, data migrations.
What it prevents
Silent filtering. Tell a current model to report “only important issues” and it will obey you literally: it finds the bugs, judges them below your bar, and says nothing. Measured recall drops even though the model found more. Ask for everything and filter afterwards.
The prompt
Review the diff below and report every defect you find.
### Context
This is a payments service. A bug here moves real money, so a false negative costs far more than a false positive.
### Requirements
- Report every issue, including ones you are unsure about. Do not filter for importance — a later pass will do that.
- For each finding, give the line, what breaks, and the input that triggers it.
- Rank by severity, worst first.
- Output format: A markdown list, one entry per finding.
- Avoid: style and naming preferences, and praise for what is already correct.
### Diff
"""
- if (amount > 0) { charge(amount) }
+ if (amount) { charge(amount) }
"""Instant checks
States a concrete task
PassedAvoids vague language
PassedSpecifies an output format
PassedGives context or audience
PassedAvoids dangling references
PassedAvoids over-aggressive phrasing
PassedDefines what a good answer looks like
Passed
Why each part is there
Every section of that prompt exists because a specific failure happens without it. These are the checks it passes, and what each one is protecting you from:
- States a concrete task — why this matters
- Avoids vague language — why this matters
- Specifies an output format — why this matters
- Gives context or audience — why this matters
- Avoids dangling references — why this matters
- Avoids over-aggressive phrasing — why this matters
- Defines what a good answer looks like — why this matters
How to adapt this one
Change the diff and the stakes line — “payments, a bug moves real money” becomes “auth, a bug leaks data” or “a migration, a bug is irreversible”. That one sentence calibrates how paranoid the model is. Keep “report everything, do not filter for importance” verbatim; it is the instruction the whole prompt exists to deliver, and the one most people accidentally leave out.
The mistake this prompt avoids
Asking for “only the important issues”. Current models take that literally: they find the bug, judge it below your bar, and stay silent — so measured recall drops even though the model saw more than it told you. Ask for every finding, ranked by severity, and do your own filtering on a list you can actually see.
A variation
Reviewing your own pre-commit diff rather than someone else’s PR? Add “assume the author is competent and in a hurry” — it steers the model away from tutorial-grade explanations of correct code and toward the two lines that will page someone at 3am. The goal shifts from teaching to catching.
Check your version
Once you have adapted it, run it through the checker. The same nine checks that graded this page will grade yours, free and in your browser — paste it in, or build one from scratch by answering a few questions.