Most review comments are noise: style nits, hypothetical concerns, "consider adding a comment". A useful review answers three questions in order — does it break anything, does it handle the edges, is it understandable three months from now — and says nothing else.
Here is the sequence I run (with AI assistance) before every merge, condensed.
Pass 1: behavior
Read the diff as a spec change, not as code. What does the system do differently after this merge? If you cannot state it in one sentence, the PR is too big or the description is too thin — send it back before reading further. This single rule kills most wasted review hours.
Pass 2: edges
For every input the code accepts, ask: empty, huge, negative, duplicate, concurrent, expired. AI help shines here — the trick is asking for a table of edge cases with expected vs actual behavior, not a vague "find bugs". Vague asks produce vague bug lists; a forced table produces testable claims.
Pass 3: the three-month test
Would a teammate understand this module without the author? Names that hide behavior, booleans that mean two things, error paths that swallow context. This is where AI review is genuinely useful, because it has no ego: ask it to rank findings by severity and to not report style. Explicitly forbidding style noise cuts the output by half and doubles the signal.
What a review prompt needs to actually work
After iterating on this for months, the prompts that produce senior-quality reviews have four things in common: a defined role with authority, an explicit severity scale, a forbidden-topics list (style, formatting, hypotheticals), and a required output format (table or ranked list). Copy-paste versions for that pass — plus 147 others for refactors, tests, debugging, SQL, migrations and the rest of the daily loop — are in the Prompt Pack for Developers.
If you'd rather not rebuild this from scratch, I packaged the exact scripts I use: Prompt Pack for Developers — 150 developer prompts across 15 categories, with the exact wording that works.