<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Riven Desk</title>
    <description>The latest articles on DEV Community by Riven Desk (@rivendesk).</description>
    <link>https://dev.to/rivendesk</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4115288%2F12056af1-db08-4dda-83ff-835cce20e0ea.png</url>
      <title>DEV Community: Riven Desk</title>
      <link>https://dev.to/rivendesk</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rivendesk"/>
    <language>en</language>
    <item>
      <title>STOP conditions I use before merging an AI agent PR</title>
      <dc:creator>Riven Desk</dc:creator>
      <pubDate>Tue, 08 Sep 2026 14:16:03 +0000</pubDate>
      <link>https://dev.to/rivendesk/stop-conditions-i-use-before-merging-an-ai-agent-pr-5h96</link>
      <guid>https://dev.to/rivendesk/stop-conditions-i-use-before-merging-an-ai-agent-pr-5h96</guid>
      <description>&lt;p&gt;A 10-minute review bar tells you &lt;em&gt;how&lt;/em&gt; to look. STOP conditions tell you &lt;em&gt;when to stop looking&lt;/em&gt; and refuse the merge as written.&lt;/p&gt;

&lt;p&gt;I wrote the timed review here: &lt;a href="https://dev.to/rivendesk/i-stopped-rubber-stamping-ai-prs-heres-the-10-minute-review-bar-i-use-28i3"&gt;I stopped rubber-stamping AI PRs — here's the 10-minute review bar I use&lt;/a&gt;. The short checklist is here: &lt;a href="https://dev.to/rivendesk/how-i-review-ai-agent-prs-in-10-minutes-checklist-you-can-steal-1fc2"&gt;How I review AI agent PRs in 10 minutes&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;This post is the hard edge: concrete conditions where I &lt;strong&gt;reject&lt;/strong&gt;, &lt;strong&gt;ask for a split&lt;/strong&gt;, or &lt;strong&gt;ask before continuing&lt;/strong&gt; — even if CI is green and the agent summary sounds confident.&lt;/p&gt;

&lt;h2&gt;
  
  
  What a STOP condition is
&lt;/h2&gt;

&lt;p&gt;A STOP is not a style nit. It is a pre-agreed line that ends the current review path.&lt;/p&gt;

&lt;p&gt;For each one I pick one of three outcomes:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Reject / request changes&lt;/strong&gt; — the PR can stay one unit, but it must change before merge.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Split&lt;/strong&gt; — the work is too mixed; ship the intent first, park the rest.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ask&lt;/strong&gt; — I do not have enough written intent, ownership, or rollback story to decide alone.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If a condition fires, I do not “finish later and LGTM.” The STOP &lt;em&gt;is&lt;/em&gt; the decision.&lt;/p&gt;

&lt;h2&gt;
  
  
  STOP 1 — Blast radius with no written plan
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Fire when:&lt;/strong&gt; a large file set changed across modules or layers, with no short plan in the ticket or PR explaining why that radius was required.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Continue only if:&lt;/strong&gt; a human wrote the boundary — e.g. “touch A and B; leave C; no lockfile.”&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Outcome:&lt;/strong&gt; &lt;strong&gt;Ask&lt;/strong&gt; for the plan, or &lt;strong&gt;split&lt;/strong&gt; into the minimal fix plus follow-ups. Unplanned multi-file agent work is where drive-by renames hide.&lt;/p&gt;

&lt;h2&gt;
  
  
  STOP 2 — Mixed concerns in one “quick fix”
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Fire when:&lt;/strong&gt; app logic, lockfile/dependency churn, and infra (CI, deploy, secrets wiring) land together under a small-fix title.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Continue only if:&lt;/strong&gt; each concern is necessary for the &lt;em&gt;same&lt;/em&gt; intent and rollback is still one revert — rare for true quick fixes.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Outcome:&lt;/strong&gt; &lt;strong&gt;Split&lt;/strong&gt;. Dependency bumps deserve their own attention; burying them next to a bugfix is how rubber-stamping happens.&lt;/p&gt;

&lt;h2&gt;
  
  
  STOP 3 — “No behavior change” while the surface moved
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Fire when:&lt;/strong&gt; the summary says refactor-only / no behavior change, but types, routes, public APIs, flags, or error contracts moved.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Continue only if:&lt;/strong&gt; the PR lists the external surface that changed and how callers stay safe — with tests or a migration note.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Outcome:&lt;/strong&gt; &lt;strong&gt;Reject&lt;/strong&gt; the claim language and &lt;strong&gt;request changes&lt;/strong&gt; until the description matches the diff. Summary theater is merge-blocking when it contradicts the file list.&lt;/p&gt;

&lt;h2&gt;
  
  
  STOP 4 — No one-sentence rollback story
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Fire when:&lt;/strong&gt; you cannot say how you undo this at 2am: single revert, documented forward fix, or explicit irreversible step with a plan.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Continue only if:&lt;/strong&gt; the change set is coherent, or irreversible pieces (migrations, permission flips) have a written plan in the PR.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Outcome:&lt;/strong&gt; &lt;strong&gt;Ask&lt;/strong&gt; for the rollback sentence before approve. Agent PRs often lack the mental model you would have authored yourself.&lt;/p&gt;

&lt;h2&gt;
  
  
  STOP 5 — Security-sensitive paths you only skimmed
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Fire when:&lt;/strong&gt; auth, sessions, permissions, payments, secrets, shell/filesystem, templated commands, or new outbound network calls changed — and you only skimmed those hunks.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Continue only if:&lt;/strong&gt; you read them (or parked them), with at least one failure/abuse check for the sensitive bit.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Outcome:&lt;/strong&gt; &lt;strong&gt;Ask&lt;/strong&gt; for time or a second reviewer, or &lt;strong&gt;reject&lt;/strong&gt; until the hotspot is isolated. Ten-minute review is not a license to wave past auth.&lt;/p&gt;

&lt;h2&gt;
  
  
  STOP 6 — Tests that would not catch the bug returning
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Fire when:&lt;/strong&gt; CI is green, but tests only assert something returned,” noisy snapshots, or paths that fail solely if the function is deleted.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Continue only if:&lt;/strong&gt; at least one assertion would fail on the regression you care about — ideally a negative or edge path from the human intent.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Outcome:&lt;/strong&gt; &lt;strong&gt;Request changes&lt;/strong&gt;. Weak tests make green feel like permission.&lt;/p&gt;

&lt;h2&gt;
  
  
  STOP 7 — No owner for the follow-up
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Fire when:&lt;/strong&gt; the PR crosses team or on-call boundaries and nobody is named for if this misbehaves Monday.”&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Continue only if:&lt;/strong&gt; an owner (person or rotation) is explicit in the PR or ticket.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Outcome:&lt;/strong&gt; &lt;strong&gt;Ask&lt;/strong&gt;. Agents do not own production; humans do.&lt;/p&gt;

&lt;h2&gt;
  
  
  How I apply these
&lt;/h2&gt;

&lt;p&gt;I run them &lt;strong&gt;early&lt;/strong&gt;, during the file-list / hotspot pass — not after half an hour of line comments. When one fires, I name it in the review: which STOP, reject vs split vs ask, and the smallest evidence that clears it. Same language for juniors and seniors.&lt;/p&gt;

&lt;p&gt;No fake “bugs down X%” metrics. The point is fewer merges you cannot explain, and fewer 2am archaeology sessions on agent-authored blobs. If a PR cannot clear these STOPs, that is useful signal: narrower intent, a written plan, a split, or a deeper review — not a faster approve.&lt;/p&gt;




&lt;p&gt;I packaged the checklist, Cursor-oriented rules, and review prompts I use into a small &lt;strong&gt;AI Agent Code Review Kit&lt;/strong&gt; ($29): &lt;a href="https://chopragunji.gumroad.com/l/nxoboi" rel="noopener noreferrer"&gt;https://chopragunji.gumroad.com/l/nxoboi&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For a second set of eyes on one difficult agent PR, the &lt;strong&gt;Agent PR Audit&lt;/strong&gt; is here: &lt;a href="https://chopragunji.gumroad.com/l/byoyi" rel="noopener noreferrer"&gt;https://chopragunji.gumroad.com/l/byoyi&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;— Riven Desk&lt;/p&gt;

&lt;p&gt;What STOP conditions do you treat as merge-blockers on agent PRs? Worst drive-by you caught (or wish you had) — drop it in the comments.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>codereview</category>
      <category>productivity</category>
      <category>github</category>
    </item>
    <item>
      <title>How I review AI agent PRs in 10 minutes (checklist you can steal)</title>
      <dc:creator>Riven Desk</dc:creator>
      <pubDate>Tue, 08 Sep 2026 10:49:58 +0000</pubDate>
      <link>https://dev.to/rivendesk/how-i-review-ai-agent-prs-in-10-minutes-checklist-you-can-steal-1fc2</link>
      <guid>https://dev.to/rivendesk/how-i-review-ai-agent-prs-in-10-minutes-checklist-you-can-steal-1fc2</guid>
      <description>&lt;p&gt;AI-generated pull requests are getting better at looking finished. That is exactly why I review them with a small, repeatable bar instead of trusting a green check, a long summary, or my first impression.&lt;/p&gt;

&lt;p&gt;Here is the tight version of my 10-minute review. It is designed for the moment when an agent has opened a PR and you need to decide whether it deserves attention, revision, or a merge.&lt;/p&gt;

&lt;h2&gt;
  
  
  Minute 1: Restate the job
&lt;/h2&gt;

&lt;p&gt;Read the issue, acceptance criteria, and the PR title. Then write one sentence in your own words: “This change should do X, for Y, without breaking Z.”&lt;/p&gt;

&lt;p&gt;If you cannot write that sentence, do not start reviewing the diff yet. Ask for clarification or inspect the surrounding code until the boundary is clear. A fuzzy request makes every later judgment fuzzy too.&lt;/p&gt;

&lt;h2&gt;
  
  
  Minutes 2–3: Check the shape of the change
&lt;/h2&gt;

&lt;p&gt;Look at the file list and the diff size before reading individual lines.&lt;br&gt;
 “While I was here” is not automatically a bonus. Split unrelated work into a separate PR, or send the change back with a narrower boundary.&lt;/p&gt;

&lt;h2&gt;
  
  
  Minutes 4–6: Trace the behavior
&lt;/h2&gt;

&lt;p&gt;Follow the main path from input to output. Read the changed code as if you were the caller, not as if you were grading the agent’s explanation.&lt;/p&gt;

&lt;p&gt;Check the happy path, then ask:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;What happens when the input is empty, duplicated, malformed, slow, or very large?&lt;/li&gt;
&lt;li&gt;What happens on retries, partial failure, or a missing record?&lt;/li&gt;
&lt;li&gt;Does the change preserve existing permissions, validation, and error handling?&lt;/li&gt;
&lt;li&gt;Could it leak data, log a secret, create a race, or make an expensive call in a loop?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;I also compare the implementation with local conventions. An elegant pattern in the abstract can still be the wrong pattern for this repository. Consistency is a maintenance feature.&lt;/p&gt;

&lt;h2&gt;
  
  
  Minutes 7–8: Test the test
&lt;/h2&gt;

&lt;p&gt;Do not treat the presence of tests as proof of coverage. Read what the assertions actually distinguish.&lt;/p&gt;

&lt;p&gt;A useful test should fail when the important behavior regresses. Look for the boundary cases you named in minute one, plus at least one negative path. If the test only checks that a function returns something, or snapshots a large object without meaningful assertions, it may be test-shaped documentation rather than protection.&lt;/p&gt;

&lt;p&gt;I call it summary theater when the description is polished, specific-sounding, and only loosely connected to what changed. “Improved reliability” is not evidence. “Added validation” is not evidence until you can point to the validation and its tests. A summary is useful as an index; it is never a substitute for verification.&lt;/p&gt;

&lt;h2&gt;
  
  
  Minute 10: Choose one of three outcomes
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Merge:&lt;/strong&gt; The boundary is clear, the behavior matches the job, risks are understood, and the tests protect the important cases.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Request changes:&lt;/strong&gt; Name the smallest concrete correction, the scenario it fixes, and how you would verify it.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Split or close:&lt;/strong&gt; The work has scope creep, the premise is wrong, or review would be safer as a fresh proposal.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A short review is not a shallow review. It is a time-boxed way to spend attention on the highest-risk claims first. If the change cannot clear this bar in ten minutes, that is useful information: the PR needs a better boundary or a deeper review, not a faster “LGTM.”&lt;/p&gt;

&lt;p&gt;I wrote the longer version of this approach here: &lt;a href="https://dev.to/rivendesk/i-stopped-rubber-stamping-ai-prs-heres-the-10-minute-review-bar-i-use-28i3"&gt;I stopped rubber-stamping AI PRs — here’s the 10-minute review bar I use&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;If you want a ready-to-use starting point, my &lt;a href="https://chopragunji.gumroad.com/l/nxoboi" rel="noopener noreferrer"&gt;AI Agent Code Review Kit&lt;/a&gt; packages the checklist, Cursor rules, and prompts. For a second set of eyes on one difficult change, the &lt;a href="https://chopragunji.gumroad.com/l/byoyi" rel="noopener noreferrer"&gt;Agent PR Audit&lt;/a&gt; is available too.&lt;/p&gt;

&lt;p&gt;— Riven Desk&lt;br&gt;
Run the smallest relevant test command yourself, then inspect the diff for untested branches. Weak tests are a common failure mode because they let an agent demonstrate motion without demonstrating correctness.&lt;/p&gt;

&lt;h2&gt;
  
  
  Minute 9: Read the summary last
&lt;/h2&gt;

&lt;p&gt;Now read the PR summary and let it explain rather than persuade. Compare each claim with the diff and test output.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Are the changed files where you expected them to be?&lt;/li&gt;
&lt;li&gt;Is the agent touching configuration, dependencies, migrations, or public APIs unnecessarily?&lt;/li&gt;
&lt;li&gt;Did a focused fix turn into a refactor?&lt;/li&gt;
&lt;li&gt;Are generated files, formatting churn, or unrelated cleanup hiding the meaningful lines?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is where I catch scope creep. An agent may solve the stated problem and quietly redesign three neighboring systems.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>codereview</category>
      <category>productivity</category>
      <category>github</category>
    </item>
    <item>
      <title>I stopped rubber-stamping AI PRs — here's the 10-minute review bar I use</title>
      <dc:creator>Riven Desk</dc:creator>
      <pubDate>Tue, 08 Sep 2026 08:56:00 +0000</pubDate>
      <link>https://dev.to/rivendesk/i-stopped-rubber-stamping-ai-prs-heres-the-10-minute-review-bar-i-use-28i3</link>
      <guid>https://dev.to/rivendesk/i-stopped-rubber-stamping-ai-prs-heres-the-10-minute-review-bar-i-use-28i3</guid>
      <description>&lt;p&gt;Coding agents are great at producing diffs. They're less great at knowing when a "quick fix" quietly became a 30-file refactor with a new dependency, a renamed helper, and a test suite that only fails if you delete the function entirely.&lt;/p&gt;

&lt;p&gt;I kept merging PRs that &lt;em&gt;looked&lt;/em&gt; fine: confident summary, CI green, "improved robustness" in the description. Then: drive-by renames, lockfile churn I didn't ask for, auth-adjacent code I never mentally authored. The failure mode wasn't "AI bad" — it was rubber-stamping when review bandwidth couldn't keep up.&lt;/p&gt;

&lt;p&gt;So I stopped relying on vibes. I forced a thin, explicit bar I can finish in about ten minutes. Shareable below — steal it, argue with it, add to it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What "AI-aware" review actually means
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Tests that prove nothing.&lt;/strong&gt; Happy-path asserts that pass even if the bug returns.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Unclear rollback.&lt;/strong&gt; You didn't write the mental model, so at 2am you don't know what to revert.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI-aware review is not "distrust everything." It's matching human intent to agent delivery &lt;em&gt;before&lt;/em&gt; you read every line like it's 2014.&lt;/p&gt;

&lt;h2&gt;
  
  
  The 10-minute review bar
&lt;/h2&gt;

&lt;p&gt;Do these in order. If something fails early, stop — don't sink twenty minutes into a PR that should be split.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. Restate the human intent (60 seconds)
&lt;/h3&gt;

&lt;p&gt;Ignore the agent summary first. Write one sentence of what &lt;em&gt;you&lt;/em&gt; (or the ticket author) asked for.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Add rate limiting to the public signup endpoint."&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you can't state that without reading the diff, the PR description is already broken. Fix that before diving in.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. File-list sanity check (90 seconds)
&lt;/h3&gt;

&lt;p&gt;Scan the changed files against&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Hotspots first, not alphabetical (2 minutes)
&lt;/h3&gt;

&lt;p&gt;Jump to risky surfaces before cosmetic churn:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Auth, sessions, permissions&lt;/li&gt;
&lt;li&gt;Payments / money paths&lt;/li&gt;
&lt;li&gt;Filesystem, shell, &lt;code&gt;eval&lt;/code&gt;, templated commands&lt;/li&gt;
&lt;li&gt;New outbound network calls&lt;/li&gt;
&lt;li&gt;Secrets, tokens, &lt;code&gt;.env&lt;/code&gt; patterns, anything that looks like a prompt or credential leaked into code or comments&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You're not doing a full security audit in ten minutes. You're checking whether the agent wandered into dangerous neighborhoods without being asked.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Scope creep pass (90 seconds)
&lt;/h3&gt;

&lt;p&gt;Look specifically for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Mass formatting or import reshuffles&lt;/li&gt;
&lt;li&gt;New dependencies you wouldn't have chosen&lt;/li&gt;
&lt;li&gt;"No behavior change" claims while types or public APIs moved&lt;/li&gt;
&lt;li&gt;Extra abstractions the ticket never named&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Agents love helpfulness. Helpfulness without a plan is how a one-line bugfix becomes a mini rewrite.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. Rollback story (60 seconds)
&lt;/h3&gt;

&lt;h3&gt;
  
  
  6. Test quality, not coverage theater (2 minutes)
&lt;/h3&gt;

&lt;p&gt;Read the tests as adversarial:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Would they fail if the original bug came back?&lt;/li&gt;
&lt;li&gt;Or do they only fail if the function is deleted?&lt;/li&gt;
&lt;li&gt;Are edge cases / failure paths covered for the risky bits?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Green CI with weak tests is how rubber-stamping feels safe.&lt;/p&gt;

&lt;h3&gt;
  
  
  7. Ownership &amp;amp; STOP conditions (60 seconds)
&lt;/h3&gt;

&lt;p&gt;Before approve:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Who owns the follow-up if this misbehaves?&lt;/li&gt;
&lt;li&gt;Was there a written plan for a multi-file change?&lt;/li&gt;
&lt;li&gt;Does this cross your personal STOP line?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;STOP and ask (or split) when:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The agent touched a large file set with no plan written down.&lt;/li&gt;
&lt;li&gt;Lockfile + app logic + infra landed in one "quick fix."&lt;/li&gt;
&lt;li&gt;The summary says "no behavior change" but types, routes, or public APIs moved.&lt;/li&gt;
&lt;li&gt;You can't explain the rollback path in one sentence.&lt;/li&gt;
&lt;li&gt;Security-sensitive files changed and you only skimmed them.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Those are merge-blockers for me, not style nits.&lt;/p&gt;

&lt;h2&gt;
  
  
  Free checklist (copy/paste)
&lt;/h2&gt;

&lt;p&gt;Use this as a PR comment template or a personal pre-merge gate:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;AI PR — 10-minute bar

[ ] Human intent in one sentence (not the agent summary)
[ ] File list matches intent — no drive-by files
[ ] Hotspots checked: auth / payments / fs / shell / network / secrets
[ ] No surprise deps, renames, or formatting-only churn mixed in

## Optional: ask the agent for a blast-radius summary

Before you deep-read, paste something like this into the same agent (or a fresh chat with the diff):

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;br&gt;
text&lt;br&gt;
Summarize this PR for a human reviewer:&lt;br&gt;
1) Intended change in one sentence&lt;br&gt;
2) Files that seem unrelated to that intent&lt;br&gt;
3) Security-sensitive touchpoints&lt;br&gt;
4) New dependencies or infra changes&lt;br&gt;
5) Suggested split if the blast radius is too wide&lt;br&gt;
Be skeptical. Prefer "I might be wrong" over polish.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;
Treat the answer as a map, not truth. You're still the reviewer.

## Habits that compound

The checklist works better if a few team habits exist upstream:

- **Commit or stash before long agent runs.** Easy revert beats archaeology.
- **Plan before multi-file edits.** A five-bullet plan in the PR beats a post-hoc apology.
- **PR description must separate** what the human wanted vs what the agent added. That single split kills a lot of summary theater.
- **Prefer small agent loops.** One intent per PR — agents can chain; you don't have to merge the chain as one blob.

It's just an explicit bar so juniors and seniors share the same merge / fix / split language.

## What this is not

- Not a claim that AI review tools replace humans.
- Not enterprise GRC, compliance theater, or a vendor pitch dressed as process.
- Not fabricated "bugs down X%" metrics. I don't have those, and you shouldn't trust posts that invent them.

I'm not anti-agent. I'm anti-rubber-stamp. Agents ship faster than thoughtful review capacity on small teams; a thin bar is how I keep both speed and sleep.

---

I packaged the checklist, Cursor-oriented rules, and review prompts I actually use into a small **AI Agent Code Review Kit** ($29): [https://chopragunji.gumroad.com/l/nxoboi](https://chopragunji.gumroad.com/l/nxoboi)

If you've got a better checklist item — or a war story about an agent drive-by — drop it in the comments. I'll steal the good ones.
[ ] Rollback story is clear (single revert or documented plan)
[ ] Tests would fail if the bug returned
[ ] STOP conditions clear? (big unplanned blast radius, mixed concerns, "no behavior change" lies)

Decision: merge / request changes / split PR
Notes:
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ask out loud: if this breaks at 2am, can I revert cleanly?&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Single coherent change set → usually yes&lt;/li&gt;
&lt;li&gt;Mixed refactors + feature + lockfile → often no&lt;/li&gt;
&lt;li&gt;Data migration or irreversible side effects → pause and demand a plan&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you didn't mentally author the change, the rollback question matters more, not less. that one sentence. Ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Is every file necessary for the intent?&lt;/li&gt;
&lt;li&gt;Any renames, docs, configs, or lockfiles that weren't requested?&lt;/li&gt;
&lt;li&gt;App logic + infra + dependency bump in one "quick fix"?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Unrelated files → park them, ask for a split, or open a follow-up. Do not negotiate with yourself ("it's probably fine").&lt;br&gt;
Classic code review still matters: correctness, readability, design. Agent PRs add a few failure modes that show up more often:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Scope creep.&lt;/strong&gt; Unrelated files, formatting-only churn, "while I was there" refactors.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Surprise surface area.&lt;/strong&gt; New deps, new network calls, shell/filesystem touch points you didn't request.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Summary theater.&lt;/strong&gt; The agent writes a polished narrative that doesn't match the file list.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>codereview</category>
      <category>cursor</category>
    </item>
  </channel>
</rss>
