GitHub Copilot

Verified against GitHub Copilot Chat · 2026-08-09

Turn a PR review into a repo-specific checklist Copilot Chat actually runs against the diff

A Copilot Chat prompt that reviews a pull request against your team's actual blocking criteria — not a generic 'looks good' pass — by naming the specific risk areas, house conventions, and severity rules before it ever reads the diff.

GitHub Copilot Chat5 fillable variables

The prompt

Ready to copy — highlighted parts are example details you can swap.

You are reviewing a pull request in this repository using Copilot Chat, with the PR's diff open or referenced via #file so you have the actual changed lines in context, not a description of them.

PR CONTEXT
Adds rate limiting to the /api/checkout endpoint after last week's incident where a retry loop from a client bug hit it 40,000 times in an hour.

RISK AREAS TO WEIGHT MOST HEAVILY
Whether the rate-limit key is scoped per-user or per-IP (per-IP would break for users behind a shared corporate proxy), and whether the 429 response includes a Retry-After header.

HOUSE CONVENTIONS THIS DIFF MUST FOLLOW
All new middleware must be registered in middleware/index.ts, not imported ad hoc in the route file; error responses must use the shared ApiError class.

BLOCKING VS. NITPICK RULE
Anything that could let a request bypass the rate limiter entirely is blocking; naming, comment style, and import order are nitpicks only.

FILES OUT OF SCOPE FOR THIS REVIEW
package-lock.json and any file under generated/ that changed only because of a dependency bump.

STEP 1 — SCAN FOR BLOCKING ISSUES FIRST
Go through the diff once looking only for issues that match the blocking criteria above — do not surface a style nitpick in this pass even if you notice one, since mixing severities in one list is how a genuine blocker gets buried under six formatting comments and skimmed past. For each blocking issue, cite the exact file and line range from the diff you were shown, not a paraphrase of what the file probably does — if you are inferring behavior from a function name rather than reading its body, say so explicitly rather than presenting a guess as a finding.

STEP 2 — CHECK THE RISK AREAS SPECIFICALLY
For each item under RISK AREAS, state explicitly whether this diff touches it at all. If it does not, say so in one line and move on — do not manufacture a paragraph of analysis about a risk area the diff never goes near just to look thorough.

STEP 3 — HOUSE CONVENTIONS PASS
Check the diff against each house convention listed above as a yes/no, not a vibe. A convention either was followed in the changed lines or it was not; if you can't tell from what's in context, say which additional file you'd need to see rather than assuming compliance.

STEP 4 — NITPICKS, SEPARATED
List lower-severity suggestions in their own section, clearly separated from Step 1, and skip the files named as out of scope entirely — do not comment on a vendored or generated file just because it happened to appear in the diff.

OUTPUT FORMAT
1. Verdict: approve / request changes / needs discussion.
2. Blocking issues (file:line, what's wrong, what would fix it).
3. Risk-area check (one line per named risk area).
4. House-convention check (one line per convention, yes/no/can't-tell).
5. Nitpicks (separate section, optional to act on).

Customize

Optional — swap in your own details for the highlighted parts above.

Why this works

Copilot Chat's code review reads only the diff and whatever files you've pulled into context with #file or #codebase — it has no memory of your team's actual bar for what blocks a merge versus what's a preference, so an unscoped 'review this PR' prompt defaults to a generic pass that treats a missing Retry-After header and a debatable variable name as the same category of finding. Splitting the pass into a blocking-issues-first step and a separately labeled nitpicks section exploits how the model allocates attention across a response: when severities are interleaved, a genuine blocker sitting between five style comments gets the same visual weight as the nitpicks around it and is the item most likely to get skimmed past by a human reviewer scanning quickly, whereas forcing the blocking scan to happen first and alone means the finding that matters gets read before reviewer attention degrades. Requiring a yes/no/can't-tell answer against each house convention — rather than a free-form paragraph — closes a specific failure mode where Copilot Chat, working only from a diff without the full file, will infer that a convention was probably followed based on surrounding code style even when the actual enforcement point isn't visible in the changed lines; forcing an explicit can't-tell answer surfaces exactly where the review needs a wider context window instead of silently guessing. Naming out-of-scope files matters because a diff that includes a lockfile or generated output will otherwise get commented on as if it were hand-written source, producing a review comment on a file no human is meant to read or edit, which erodes trust in the rest of the review's judgment even where it was accurate.

What you get back

Verdict: request changes. Blocking: middleware/rateLimiter.ts:14 — the limiter key uses req.ip, which the risk-area note flags as breaking for users behind a shared proxy; switch to a per-user key derived from the session token. House conventions: middleware registration — yes, correctly added to middleware/index.ts; ApiError usage — no, the 429 branch returns a raw object literal instead of ApiError. Nitpicks: rateLimiter.ts:31 — variable name `cnt` could be `requestCount` for clarity.

Verified against

GitHub Copilot Chat 2026.08 · 2026-08-09

Changelog

  • 2026-08-09 Initial publish, verified against GitHub Copilot Chat 2026.08.

Need this built into your business?

If a prompt isn't enough — custom software, built and maintained for you — that's Scult's day job.

EXPLORE CUSTOM SOFTWARE
Write a .github/copilot-instructions.md file Copilot actually followsA repository-wide custom-instructions file that Copilot loads automatically into every Chat request, code-review pass, coding-agent session, and commit or PR-description generation in this repo, written so each rule holds up standing alone instead of only in the context it was written in.GitHub Copilot Chat (VS Code)GitHub Copilot code review2026-07-20Scope Copilot's instructions to one directory with an applyTo instructions fileA path-scoped .github/instructions/*.instructions.md template using the applyTo frontmatter glob, so a directory-specific rule — a different test framework, a stricter API contract, a legacy pattern that must not spread — applies only where it is actually true instead of polluting the repo-wide instructions file.GitHub Copilot Chat (VS Code)GitHub Copilot coding agent2026-07-21Define a custom Copilot Chat mode instead of re-explaining your workflow every sessionA .github/chatmodes/*.chatmode.md definition — scoped tools, a fixed model, and a narrow system prompt — that turns a repeated review-and-plan style of conversation into a mode you switch into once, instead of a persona you re-describe in the first message every time.GitHub Copilot Chat (VS Code)2026-07-22Turn a prompt you keep retyping into a Copilot prompt file instead of pasting it againA .github/prompts/*.prompt.md reusable prompt file with input placeholders, invoked as a slash command from the Chat input box, so a well-tuned multi-paragraph prompt becomes one command instead of a paste you have to keep re-finding.GitHub Copilot Chat (VS Code)2026-07-22
All GitHub Copilot prompts

Check your AI visibility

One URL in, a 0–100 score and the exact fixes out.

RUN THE CHECK

Browse all the tools

15 tools across six categories
13 of them never send your data anywhere

Free · No signup · No trial clock

SEE THE DIRECTORY