Review Pending Changes
Read-only review before commit or PR - findings only, never edits.
Steps
- Enumerate:
git status --porcelain, git diff --stat. Diff = uncommitted changes plus commits ahead of the target branch (an explicit base ref overrides). Resolve the base ref and confirm the diff is non-empty before any deeper work - a bad ref or an empty diff fails here, cheaply, not halfway through the review. Nothing changed - report and stop.
- Load the rules that apply to the changed paths (project rules plus pack rules).
- Read the full diffs (
git diff, git diff --cached) AND the surrounding code - a locally clean change can still break a caller or violate a boundary.
- Two independent axes when a spec drove the change - review conventions and review intent separately, and never merge their rankings (a strong result on one axis must not mask a miss on the other):
- Standards axis: the checks in step 5, against rules and sibling code.
- Spec axis: the diff against the spec's requirements - each requirement delivered, partially delivered, or missing; scope creep the spec never asked for; each finding quoting the requirement it maps to. Report the worst finding per axis, not one winner across both.
Without a spec, run the standards axis alone.
- Check, grouped by severity:
- Critical (block): correctness bugs; boundary/layering violations; credentials anywhere in the reviewed diff (run
git-scan-secrets, diff scope); weakened gates (skipped tests, suppressions, lowered thresholds); new logic without tests; cross-cutting drift - grep every removed/renamed symbol across the tree.
- Warning: convention violations, oversized files or diffs, duplicated helpers, missing validation at external boundaries.
- Suggestion: naming, comments restating code, extractable helpers.
- Verify each finding by re-reading the code - drop anything you cannot evidence.
- Report:
## Critical
- `path/file.ts:42` - <what> - <why / rule>
## Warning
...
## Suggestion
...
## Summary
- files: N, +A/-D; critical: N, warning: N, suggestion: N
- verdict: BLOCK | PASS-WITH-WARNINGS | CLEAN
Verify
- Every finding carries
file:line plus evidence; a verdict is stated.
Scope / hand-off
- Fixing - the author/orchestrator; committing -
git-commit-push (a BLOCK verdict means fix first).
Constraints
- A diff mixing unrelated changes - the first finding is "split it".
1---2name: dev-review-changes3description: Reviews pending changes against the project's rules and reports findings with a severity verdict. Read-only - never edits, stages, or commits.4---56# Review Pending Changes78Read-only review before commit or PR - findings only, never edits.910## Steps11121. Enumerate: `git status --porcelain`, `git diff --stat`. Diff = uncommitted changes plus commits ahead of the target branch (an explicit base ref overrides). Resolve the base ref and confirm the diff is non-empty **before any deeper work** - a bad ref or an empty diff fails here, cheaply, not halfway through the review. Nothing changed - report and stop.132. Load the rules that apply to the changed paths (project rules plus pack rules).143. Read the full diffs (`git diff`, `git diff --cached`) AND the surrounding code - a locally clean change can still break a caller or violate a boundary.154. **Two independent axes when a spec drove the change** - review conventions and review intent separately, and never merge their rankings (a strong result on one axis must not mask a miss on the other):16 - **Standards axis**: the checks in step 5, against rules and sibling code.17 - **Spec axis**: the diff against the spec's requirements - each requirement delivered, partially delivered, or missing; scope creep the spec never asked for; each finding quoting the requirement it maps to. Report the worst finding per axis, not one winner across both.18 Without a spec, run the standards axis alone.195. Check, grouped by severity:20 - **Critical** (block): correctness bugs; boundary/layering violations; credentials anywhere in the reviewed diff (run `git-scan-secrets`, `diff` scope); weakened gates (skipped tests, suppressions, lowered thresholds); new logic without tests; cross-cutting drift - grep every removed/renamed symbol across the tree.21 - **Warning**: convention violations, oversized files or diffs, duplicated helpers, missing validation at external boundaries.22 - **Suggestion**: naming, comments restating code, extractable helpers.236. Verify each finding by re-reading the code - drop anything you cannot evidence.247. Report:2526```27## Critical28- `path/file.ts:42` - <what> - <why / rule>29## Warning30...31## Suggestion32...33## Summary34- files: N, +A/-D; critical: N, warning: N, suggestion: N35- verdict: BLOCK | PASS-WITH-WARNINGS | CLEAN36```3738## Verify3940- Every finding carries `file:line` plus evidence; a verdict is stated.4142## Scope / hand-off4344- Fixing - the author/orchestrator; committing - `git-commit-push` (a BLOCK verdict means fix first).4546## Constraints4748- A diff mixing unrelated changes - the first finding is "split it".