pr-reviewer
Original:🇺🇸 English
Translated
Reviews the current local diff or branch at the end of a coding session for high-confidence bugs and repository instruction-file compliance. Use when asked to run `/pr-reviewer` before commit, before push, or before handing changes off for PR creation or update, and when only certain, actionable findings should be reported while style feedback is ignored.
9installs
Sourcemblode/agent-skills
Added on
NPX Install
npx skill4agent add mblode/agent-skills pr-reviewerTags
Translated version includes tags in frontmatterSKILL.md Content
View Translation Comparison →Local Review
Perform systematic review with actionable, validated feedback only.
Use this skill as an explicit local self-review step before handoff, not as a generic replacement for native PR review tools.
Run it before when a coding session produced changes worth checking.
/doneReference Files
| File | Read When |
|---|---|
| Default: choosing severity labels and filtering weak findings |
| Before producing a local review report |
| When deciding whether the work stays in local self-review or should hand off to PR-specific workflows |
| When the diff touches auth, input handling, external APIs, file uploads, or environment configuration |
| When the diff touches data fetching, rendering, images, dependencies, or bundle-affecting imports |
Scope
- Default target: staged or uncommitted local changes
- Secondary target: current branch diff against base when the working tree is clean or the user asks for branch review
- Explicit PR requests are secondary: keep the same review criteria, but treat them as a handoff path rather than the main workflow
- Keep the skill focused on concrete bugs, missing validation/tests that clearly matter, and repository instruction-file compliance
- Do not use this skill for inbound PR comments or thread resolution; use for that
pr-comments
Workflow
Copy this checklist to track progress:
text
Review progress:
- [ ] Discover local review target
- [ ] Gather context and scoped instruction files
- [ ] Choose the local review path
- [ ] Validate findings
- [ ] Produce the review report- Discover the review target:
- If staged or unstaged changes exist, review those first
- Otherwise review the current branch diff against its base
- Only switch to a PR handoff summary when the user explicitly points at an existing PR
- Record the current branch and changed files so the report is grounded in the local session
- Gather context:
- Capture the change intent from the session, recent commits, or the user's request
- Load relevant repository instruction files (/
AGENTS.mdas applicable, including any in nested package/MFE directories whose code is in the diff)CLAUDE.md - Apply only in-scope instruction-file rules for the changed paths
- Run the project's lint, type check, and test commands (from scripts) to capture current status — note pre-existing failures so they are distinguishable from regressions caused by the change. Include the lint/type-check/test status in the report so the reader knows the baseline at review time
package.json
- Choose the local review path:
- Local self-review is the default: current diff/branch with a local report in chat
- Existing PR requests are secondary: apply the same validation bar, then produce a concise handoff summary instead of changing the main workflow
- For large changes, shard by subsystem and keep the final report consolidated
- Validate issues:
- Re-check exact lines before reporting
- Keep only high-confidence issues; drop speculative or duplicate items
- Confirm each issue still applies to the latest diff and maps to a changed line
- Collapse multiple comments that share the same root cause into one finding
- Produce the report:
- Default output: a local review report in chat
- Organize findings into ,
Must fix before push, andShould fix soonReady for handoff - Do not post inline comments, resolve threads, or handle inbound review feedback from this skill
- Hand off inbound PR feedback to
pr-comments
High signal only
Flag only when certain:
- Code will fail to compile (syntax, types, imports)
- Code will produce incorrect behavior (clear logic or state errors)
- Code introduces a concrete security risk with direct exploit path — load for the three-tier classification when the diff touches auth, input handling, external APIs, or environment configuration
references/security-checklist.md - Code introduces a measurable performance regression — load for common bottleneck patterns when the diff touches data fetching, rendering, images, or dependencies
references/performance-checklist.md - Changed behavior is clearly missing a necessary regression or validation test, including: a new component or hook shipped with no co-located test file, or an existing test where every assertion is a render-only presence check () with no user interaction or branch coverage
expect(getByText(...)).toBeInTheDocument() - Bug fix without a failing test that reproduces it first (Prove-It Pattern: if the fix is correct, a test for the bug should fail before and pass after)
- Test code over-abstracts shared setup to the point where individual tests are unreadable without tracing helpers (prefer DAMP — Descriptive And Meaningful Phrases — over DRY in test code)
- Lint, type check, or tests fail as a result of the change (distinguish from pre-existing failures captured in step 2)
- Unambiguous instruction-file violation (quote rule, verify scope)
- YAGNI violation: code adds abstractions, config systems, or extension points not justified by a current requirement (three similar lines is better than a premature abstraction)
- KISS violation: implementation is more complex than the problem demands — a simpler approach exists that achieves the same result
Never flag:
- Style, quality, or subjective preferences
- Pre-existing issues unrelated to the change
- Potential issues dependent on unknown inputs
- Linter-only issues likely caught automatically
- Explicitly silenced violations
Output format
Read before producing the report if you need a formatting refresher.
references/comment-examples.mdDefault local output:
markdown
## Local review
### Must fix before push
- [<severity>] `path/to/file.ts:line` <short factual title>
Why: <one to two sentences with concrete impact>
Fix: <committable fix or clear implementation guidance>
### Should fix soon
- [<severity>] `path/to/file.ts:line` <short factual title>
Why: <one to two sentences with concrete impact>
Fix: <committable fix or clear implementation guidance>
### Ready for handoff
- <brief readiness summary>If the user explicitly points at an existing PR, adapt the same validated findings into a concise handoff summary:
markdown
## PR handoff summary
- [<severity>] `path/to/file.ts:line` <short factual title>
Why: <one to two sentences with concrete impact>
Fix: <committable fix or clear implementation guidance>Summary (if no issues):
## Local review
### Must fix before push
- None.
### Should fix soon
- None.
### Ready for handoff
- No blocking issues found. Checked for high-confidence bugs, missing validation/tests, and instruction-file compliance on the current local changes.Anti-patterns
- Starting by asking for a PR number when local changes are available -> review the local diff first
- Teaching inline review comments as the default output -> keep the main path local-first
- "This might cause issues" -> "Variable is undefined at
x, causingsrc/foo.ts:45at runtime."ReferenceError - "Consider refactoring" -> "Violates instruction-file rule '<quoted rule>' in scoped file ."
src/foo.ts - Multiple comments for the same root cause -> one comment linking all affected locations
Related skills
- for session capture after the review is complete
done - for triaging and resolving inbound review threads after feedback has been left
pr-babysitter
Every flagged issue should be something a senior engineer would catch.