Code Review
Use this skill when the main question is "is this specific change ready, what evidence do we trust, and what should a reviewer actually say?"
The job is not to dump a giant clean-code checklist.
The job is to:
- normalize the review packet,
- choose the right review mode,
- inspect the highest-risk behavior first,
- separate missing evidence from proven defects,
- classify findings by severity,
- route non-review work out immediately.
Read references/intake-packets-and-escalations.md before handling an unfamiliar review packet.
Read references/review-modes.md for deeper heuristics by change type.
Read references/handoff-boundaries.md when deciding whether code-review, git-workflow, debugging, testing-strategies, web-accessibility, web-accessibility, or repo/PR workflow skills should own the next step.
When to use this skill
- Reviewing a PR, MR, local diff, patch stack, or self-review packet before merge
- Deciding what reviewer comments matter most and how severe they are
- Checking a change for correctness, security, migration/rollout risk, maintainability, and missing validation evidence
- Writing a concise approve / request-changes / block / route-out review brief
- Reviewing backend, frontend, CLI, fullstack, or game-programming changes where the core task is judgment on the change rather than implementation
When not to use this skill
- The real task is splitting commits, rebasing, conflict resolution, or push recovery → use
git-workflow
- The real task is reproducing or isolating a live failure → use
debugging
- The real task is choosing long-term coverage shape, CI gates, or flaky-suite policy → use
testing-strategies
- The real task is pure design, accessibility, or visual-governance critique → use
web-accessibility or web-accessibility
- The real task is reviewer assignment, CODEOWNERS interpretation, labels, merge queue, or repo settings → use a repo / PR workflow skill
- The real task is measurement-led bottleneck analysis or tuning → use
performance-optimization
Instructions
Step 1: Normalize the review packet
Start from the evidence already present instead of asking for an idealized packet.
Capture:
- review surface: PR / MR / local diff / patch stack / self-review
- goal of the change
- hotspots: API, UI, schema, auth, config, build/release, game runtime, tooling, unknown
- packet shape: diff only | diff + tests | schema/auth rollout notes | screenshots/preview | CI bot findings | game/runtime validation notes | mixed
- obvious evidence present or missing
Minimum frame:
Review surface: PR
Goal: add coupon support to checkout
Hotspots: discount logic, schema migration, auth edge cases
Packet: diff + tests, no rollout notes
If the packet is still mostly branch hygiene or repo-admin work, route out before pretending review has started.
Step 2: Choose one primary review mode
Pick one primary mode from references/review-modes.md:
- general change review
- backend / platform review
- frontend / UX-adjacent review
- game-programming / engine review
- policy / meta review
Rule: one primary mode, optional secondary mode.
Do not flatten every diff into the same checklist.
Step 3: Inspect the highest-risk path first
Prioritize in this order:
- broken correctness or edge-case handling
- security / privacy / trust-boundary mistakes
- schema, migration, config, rollout, or compatibility risk
- missing or misleading tests / screenshots / previews / rollout proof
- maintainability problems that will slow future work
- style and readability nits
High-value questions:
- Can the change behave incorrectly even if current tests are green?
- Did a trust boundary, permission rule, secret path, or user-controlled input change?
- Did the change alter schemas, contracts, jobs, rollout behavior, or game/runtime state without enough safeguards?
- Is the packet missing the one artifact needed to judge the risky path honestly?
Step 4: Separate findings from missing evidence
A review can fail because the code is wrong or because the packet is not convincing enough.
Evidence sources to check:
- the diff itself
- nearby code paths and existing invariants
- tests and fixtures
- schema / contract / migration notes
- screenshots, recordings, or preview links for behavior/layout-sensitive frontend work
- rollout notes, config changes, and CI bot findings
- playtest or engine-validation notes for game/runtime work
Good finding shape:
[Blocker] The new API still trusts the client-provided discount amount. Recompute discount server-side and add a regression test for mismatched input.
Good missing-evidence shape:
[Major] The diff changes responsive navigation states, but the packet has no screenshots or preview link for mobile/tablet open-close behavior.
Step 5: Classify severity and route-outs
Use a small, explicit severity model.
- Blocker — merge should not proceed: correctness break, security issue, data loss, broken migration, or clearly missing validation for a risky path
- Major — important but fixable in the current review round: missing tests/evidence for a core path, incomplete rollout/migration story, or a high-maintenance design choice
- Minor — readability, naming, local cleanup, optional simplification
- Route-out — the concern is real, but another skill owns the next step
Typical route-outs:
- commit cleanup / rebase / push safety →
git-workflow
- reproduce and isolate live failure →
debugging
- broader coverage policy or flaky-suite direction →
testing-strategies
- visual/accessibility/product polish review →
web-accessibility or web-accessibility
- reviewer assignment, CODEOWNERS, branch rules, merge queue, PR operations → repo / PR workflow skill
Step 6: Produce a reviewer-grade decision brief
Preferred shape:
# Code Review Brief
## Decision
- Approve | Request changes | Block pending investigation | Needs follow-up from another skill
## Review frame
- Surface:
- Goal:
- Primary mode:
- Packet:
## Key findings
1. [Severity] ...
2. [Severity] ...
3. [Route-out] ...
## Missing evidence
- ...
## Recommended next step
- merge
- patch specific issues
- collect one missing artifact
- split the diff
- route next to another skill
If approving, say why the change looks safe:
- risky areas reviewed
- evidence that exists
- residual concerns, if any
Step 7: Escalate confidence honestly
- If the diff is too large, say review confidence is limited and focus on the highest-risk slice.
- If frontend or marketing-site behavior depends on rendering states, ask for preview evidence instead of bluffing.
- If backend or rollout risk is high, demand migration/config/rollback proof before approval.
- If game/runtime behavior still needs playtest or engine validation, state that clearly.
- If bot findings exist (reviewdog, CI comments, static-analysis annotations), treat them as evidence inputs, not as the final review judgment.
Output format
Always return a concise review brief or review-comment set.
Required qualities:
- identify the review surface and change goal
- focus on the highest-risk findings first
- separate concrete defects from missing evidence
- choose an explicit decision
- name the correct neighboring skill when the task has shifted
- avoid generic checklist filler
Examples
Example 1: Backend PR with migration risk
Input
Review this PR that adds coupon support to the checkout API. There is a schema migration and a few tests.
Output sketch
- Decision: Request changes
- Review frame: backend / platform review, packet = diff + tests + migration
- Key findings:
- [Blocker] discount value is still accepted from the client instead of recomputed server-side
- [Major] migration lacks rollback/backfill notes and no compatibility test covers old rows
- [Major] no test for invalid or expired coupon race conditions
- Recommended next step: patch validation + add migration/test evidence, then re-review
Example 2: Frontend diff that needs preview evidence
Input
Can you code-review this responsive navbar change before I merge it?
Output sketch
- Decision: Needs follow-up before approval
- Summary: implementation may be maintainable, but behavior cannot be fully judged from the diff alone
- Key findings:
- [Major] missing mobile/tablet screenshots or preview link for menu states
- [Minor] duplicated breakpoint logic should be centralized
- [Route-out] accessibility or visual-polish checks should go through
web-accessibility / web-accessibility
Example 3: Request that should route away
Input
Before review, help me split this huge branch into smaller commits and rebase it cleanly.
Output sketch
- Decision: Route out
- Summary: this is primarily a Git-structure problem, not review judgment yet
- Route:
git-workflow
Example 4: Review packet with bot annotations
Input
reviewdog already commented on the lint and static-analysis issues. Can you do the final review pass?
Output sketch
- Treat the bot comments as inputs, not the full answer
- Re-check the risky behavior, missing evidence, and merge decision
- Route repo-admin follow-up elsewhere if the request shifts into PR operations
Best practices
- Review the highest-risk behavior before style or formatting.
- Tie every serious finding to evidence from the diff, nearby code, tests, or one clearly missing artifact.
- Distinguish missing evidence from proven bugs.
- Use severity labels so authors know what blocks merge.
- Keep one primary review mode instead of flattening every diff into one checklist.
- Ask for previews/screenshots when rendered behavior matters.
- Demand rollout or migration proof when backend/platform risk is high.
- Treat CI bots and static-analysis comments as evidence inputs, not as the reviewer.
- Route Git, debugging, test-policy, UI-governance, and repo-admin tasks out instead of absorbing everything.
- If approving, say why the change looks safe — not just "LGTM".
References
1---2name: code-review3description: Turn a PR, diff, merge request, or patch stack into one evidence-first review brief with severity, missing-proof checks, and route-outs.4---567891011# Code Review1213Use this skill when the main question is **"is this specific change ready, what evidence do we trust, and what should a reviewer actually say?"**1415The job is not to dump a giant clean-code checklist.16The job is to:171. normalize the review packet,182. choose the right review mode,193. inspect the highest-risk behavior first,204. separate missing evidence from proven defects,215. classify findings by severity,226. route non-review work out immediately.2324Read [references/intake-packets-and-escalations.md](references/intake-packets-and-escalations.md) before handling an unfamiliar review packet.25Read [references/review-modes.md](references/review-modes.md) for deeper heuristics by change type.26Read [references/handoff-boundaries.md](references/handoff-boundaries.md) when deciding whether `code-review`, `git-workflow`, `debugging`, `testing-strategies`, `web-accessibility`, `web-accessibility`, or repo/PR workflow skills should own the next step.2728## When to use this skill29- Reviewing a PR, MR, local diff, patch stack, or self-review packet before merge30- Deciding what reviewer comments matter most and how severe they are31- Checking a change for correctness, security, migration/rollout risk, maintainability, and missing validation evidence32- Writing a concise approve / request-changes / block / route-out review brief33- Reviewing backend, frontend, CLI, fullstack, or game-programming changes where the core task is judgment on the change rather than implementation3435## When not to use this skill36- **The real task is splitting commits, rebasing, conflict resolution, or push recovery** → use `git-workflow`37- **The real task is reproducing or isolating a live failure** → use `debugging`38- **The real task is choosing long-term coverage shape, CI gates, or flaky-suite policy** → use `testing-strategies`39- **The real task is pure design, accessibility, or visual-governance critique** → use `web-accessibility` or `web-accessibility`40- **The real task is reviewer assignment, CODEOWNERS interpretation, labels, merge queue, or repo settings** → use a repo / PR workflow skill41- **The real task is measurement-led bottleneck analysis or tuning** → use `performance-optimization`4243## Instructions4445### Step 1: Normalize the review packet46Start from the evidence already present instead of asking for an idealized packet.4748Capture:49- review surface: PR / MR / local diff / patch stack / self-review50- goal of the change51- hotspots: API, UI, schema, auth, config, build/release, game runtime, tooling, unknown52- packet shape: diff only | diff + tests | schema/auth rollout notes | screenshots/preview | CI bot findings | game/runtime validation notes | mixed53- obvious evidence present or missing5455Minimum frame:56```markdown57Review surface: PR58Goal: add coupon support to checkout59Hotspots: discount logic, schema migration, auth edge cases60Packet: diff + tests, no rollout notes61```6263If the packet is still mostly branch hygiene or repo-admin work, route out before pretending review has started.6465### Step 2: Choose one primary review mode66Pick one primary mode from [references/review-modes.md](references/review-modes.md):67- general change review68- backend / platform review69- frontend / UX-adjacent review70- game-programming / engine review71- policy / meta review7273Rule: one primary mode, optional secondary mode.74Do not flatten every diff into the same checklist.7576### Step 3: Inspect the highest-risk path first77Prioritize in this order:781. broken correctness or edge-case handling792. security / privacy / trust-boundary mistakes803. schema, migration, config, rollout, or compatibility risk814. missing or misleading tests / screenshots / previews / rollout proof825. maintainability problems that will slow future work836. style and readability nits8485High-value questions:86- Can the change behave incorrectly even if current tests are green?87- Did a trust boundary, permission rule, secret path, or user-controlled input change?88- Did the change alter schemas, contracts, jobs, rollout behavior, or game/runtime state without enough safeguards?89- Is the packet missing the one artifact needed to judge the risky path honestly?9091### Step 4: Separate findings from missing evidence92A review can fail because the code is wrong **or** because the packet is not convincing enough.9394Evidence sources to check:95- the diff itself96- nearby code paths and existing invariants97- tests and fixtures98- schema / contract / migration notes99- screenshots, recordings, or preview links for behavior/layout-sensitive frontend work100- rollout notes, config changes, and CI bot findings101- playtest or engine-validation notes for game/runtime work102103Good finding shape:104```markdown105[Blocker] The new API still trusts the client-provided discount amount. Recompute discount server-side and add a regression test for mismatched input.106```107108Good missing-evidence shape:109```markdown110[Major] The diff changes responsive navigation states, but the packet has no screenshots or preview link for mobile/tablet open-close behavior.111```112113### Step 5: Classify severity and route-outs114Use a small, explicit severity model.115116- **Blocker** — merge should not proceed: correctness break, security issue, data loss, broken migration, or clearly missing validation for a risky path117- **Major** — important but fixable in the current review round: missing tests/evidence for a core path, incomplete rollout/migration story, or a high-maintenance design choice118- **Minor** — readability, naming, local cleanup, optional simplification119- **Route-out** — the concern is real, but another skill owns the next step120121Typical route-outs:122- commit cleanup / rebase / push safety → `git-workflow`123- reproduce and isolate live failure → `debugging`124- broader coverage policy or flaky-suite direction → `testing-strategies`125- visual/accessibility/product polish review → `web-accessibility` or `web-accessibility`126- reviewer assignment, CODEOWNERS, branch rules, merge queue, PR operations → repo / PR workflow skill127128### Step 6: Produce a reviewer-grade decision brief129Preferred shape:130```markdown131# Code Review Brief132133## Decision134- Approve | Request changes | Block pending investigation | Needs follow-up from another skill135136## Review frame137- Surface:138- Goal:139- Primary mode:140- Packet:141142## Key findings1431. [Severity] ...1442. [Severity] ...1453. [Route-out] ...146147## Missing evidence148- ...149150## Recommended next step151- merge152- patch specific issues153- collect one missing artifact154- split the diff155- route next to another skill156```157158If approving, say why the change looks safe:159- risky areas reviewed160- evidence that exists161- residual concerns, if any162163### Step 7: Escalate confidence honestly164- If the diff is too large, say review confidence is limited and focus on the highest-risk slice.165- If frontend or marketing-site behavior depends on rendering states, ask for preview evidence instead of bluffing.166- If backend or rollout risk is high, demand migration/config/rollback proof before approval.167- If game/runtime behavior still needs playtest or engine validation, state that clearly.168- If bot findings exist (reviewdog, CI comments, static-analysis annotations), treat them as evidence inputs, not as the final review judgment.169170## Output format171Always return a concise review brief or review-comment set.172173Required qualities:174- identify the review surface and change goal175- focus on the highest-risk findings first176- separate concrete defects from missing evidence177- choose an explicit decision178- name the correct neighboring skill when the task has shifted179- avoid generic checklist filler180181## Examples182183### Example 1: Backend PR with migration risk184**Input**185> Review this PR that adds coupon support to the checkout API. There is a schema migration and a few tests.186187**Output sketch**188- Decision: Request changes189- Review frame: backend / platform review, packet = diff + tests + migration190- Key findings:191 1. [Blocker] discount value is still accepted from the client instead of recomputed server-side192 2. [Major] migration lacks rollback/backfill notes and no compatibility test covers old rows193 3. [Major] no test for invalid or expired coupon race conditions194- Recommended next step: patch validation + add migration/test evidence, then re-review195196### Example 2: Frontend diff that needs preview evidence197**Input**198> Can you code-review this responsive navbar change before I merge it?199200**Output sketch**201- Decision: Needs follow-up before approval202- Summary: implementation may be maintainable, but behavior cannot be fully judged from the diff alone203- Key findings:204 1. [Major] missing mobile/tablet screenshots or preview link for menu states205 2. [Minor] duplicated breakpoint logic should be centralized206 3. [Route-out] accessibility or visual-polish checks should go through `web-accessibility` / `web-accessibility`207208### Example 3: Request that should route away209**Input**210> Before review, help me split this huge branch into smaller commits and rebase it cleanly.211212**Output sketch**213- Decision: Route out214- Summary: this is primarily a Git-structure problem, not review judgment yet215- Route: `git-workflow`216217### Example 4: Review packet with bot annotations218**Input**219> reviewdog already commented on the lint and static-analysis issues. Can you do the final review pass?220221**Output sketch**222- Treat the bot comments as inputs, not the full answer223- Re-check the risky behavior, missing evidence, and merge decision224- Route repo-admin follow-up elsewhere if the request shifts into PR operations225226## Best practices2271. Review the highest-risk behavior before style or formatting.2282. Tie every serious finding to evidence from the diff, nearby code, tests, or one clearly missing artifact.2293. Distinguish missing evidence from proven bugs.2304. Use severity labels so authors know what blocks merge.2315. Keep one primary review mode instead of flattening every diff into one checklist.2326. Ask for previews/screenshots when rendered behavior matters.2337. Demand rollout or migration proof when backend/platform risk is high.2348. Treat CI bots and static-analysis comments as evidence inputs, not as the reviewer.2359. Route Git, debugging, test-policy, UI-governance, and repo-admin tasks out instead of absorbing everything.23610. If approving, say why the change looks safe — not just "LGTM".237238## References239- [GitHub Docs — About pull request reviews](https://docs.github.com/en/pull-requests/collaborating-with-pull-requests/reviewing-changes-in-pull-requests/about-pull-request-reviews)240- [GitHub Docs — About code owners](https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/about-code-owners)241- [GitHub Docs — About protected branches](https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/managing-protected-branches/about-protected-branches)242- [GitLab Docs — Merge request approvals](https://docs.gitlab.com/ee/user/project/merge_requests/approvals/)243- [reviewdog](https://github.com/reviewdog/reviewdog)244- [Danger JS](https://danger.systems/js/)