1. Scope the Diff
Identify all changed files:
```bash
git diff --name-only HEAD~1 --diff-filter=ACMR
```
For each file in the list, skip any that produces no actual diff hunks.
2. Understand Intent & Requirements
Before reviewing code, understand what it should do:
- Original task/issue: What was requested?
- Product impact: What does this deliver for users?
- Acceptance criteria: What defines "done"?
Ask: "Does the implementation satisfy the requirements?"
3. Review Each File
For each changed file and each diff hunk, evaluate in context of the existing codebase.
MANDATORY: Trace Complete Execution Before Flagging Critical/Major
Before classifying any issue as Critical or Major, you MUST:
- Read the complete code path - not just the suspicious line
- Trace what actually happens - follow execution from start to end
- Verify the issue exists - confirm there is no defensive code preventing it
- Consider all scenarios - including error paths, cancellation, edge cases
4. Review Categories
| Category | What to Check |
| -------------------------------- | ------------------------------------------------------- |
| Design & Architecture | Fits system patterns, avoids coupling, clear separation |
| Complexity & Maintainability | Flat control flow, low complexity, DRY, no dead code |
| Functionality & Correctness | Valid/invalid inputs handled, edge cases covered |
| Readability & Naming | Intent-revealing names, comments explain WHY |
| Best Practices | Language/framework idioms, SOLID principles |
| Test Coverage | Success + failure paths tested |
| Standardization | Style guide conformance, zero new lint warnings |
| Security | Input validation, secrets management, OWASP Top 10 |
| Performance | No N+1 queries, efficient I/O, no memory leaks |
| Logging | State machine pattern, proper tense, actionable context |
| Metrics | No cardinality explosions, proper naming, documented |
Automation tip: Delegate style/formatting to linters (ESLint, Prettier). Focus human review on logic, architecture, and edge cases.
4.1 Logging Review
| Check | β Good | β Bad |
|-------|--------|-------|
| Length | 50-200 chars | >200 (truncation) |
| Multiline | Single line | Multiple lines |
| Start | "Syncing orders" (progressive) | "Sync orders" |
| End OK | "Orders synced" (past) | "Syncing complete" |
| End Fail | "Failed to sync orders" | "Error" |
| Context | "DB timeout after 30s" | "Database error" |
4.2 Metrics Review
| Check | β Good | β Bad (CRITICAL) |
|-------|--------|------------------|
| Labels | status=2xx, method=GET | user_id, order_id |
| Naming | api.request.total | apiRequestTotal |
| Type | Counter (events), Histogram (latency) | Gauge for everything |
CRITICAL: High-cardinality labels (user_id, request_id, timestamp) cause monitoring system crashes.
5. Check Project Rules
MANDATORY: Check and enforce rules from:
.claude/CLAUDE.md or CLAUDE.md (root).cursor/rules/ folderAGENTS.md- Follow ALL patterns and conventions defined there
6. Report & Fix Issues
For each validated issue:
- File:
: - Issue: One-line summary
- Fix: Concise suggested change
Severity levels:
- Critical (P0): Security vulnerabilities, data loss, crashes
- Major (P1): Significant bugs, performance issues, architectural violations
- Minor (P2): Code style, minor improvements
- Enhancement (P3): Nice-to-have improvements
MANDATORY: Fix all issues immediately after identifying them.
- Start with highest priority (Critical β Major β Minor)
- For each issue:
- Fix the code
- Verify fix doesn't break anything
- CHECKPOINT COMMIT: git add -A && git commit -m "fix: brief description"
- Continue until ALL issues are resolved
7. Run Quality Gates
After all issues are fixed, run lint β build β test for project type (see Quick Start table).
If any gate fails, fix immediately and commit the fix.
8. Final Report
Provide structured output:
```markdown
Strengths
[What's well done - be specific with file:line references]
Issues Found & Fixed
- Critical: [count] - [brief list]
- Major: [count] - [brief list]
- Minor: [count] - [brief list]
Quality Gates
- Lint: β/β
- Typecheck: β/β
- Build: β/β
- Tests: β/β
Assessment
Ready to proceed? [Yes / Yes with notes / No - needs fixes]
Reasoning: [1-2 sentence technical assessment]
```
If no issues: "Code review complete. No issues found. All quality gates pass. Ready to proceed."