When touching critical code (auth, payments, data)
Never skip because:
"It's simple" — simple bugs compound
"I'm in a hurry" — reviews save time
"I tested it" — you have blind spots
Review Process
Step 1: Self-Review First
Before dispatching a reviewer, check yourself:
Code follows project conventions
All tests pass
No debug print statements left
No hardcoded secrets or credentials
Error handling in place
Commit messages are clear
# Run full test suite
pytest tests/ -q
# Check for debug code
search_files("print(", path="src/", file_glob="*.py")
search_files("console.log", path="src/", file_glob="*.js")
# Check for TODOs
search_files("TODO|FIXME|HACK", path="src/")
delegate_task(
goal="Review implementation for correctness and quality",
context="""
WHAT WAS IMPLEMENTED:
[Brief description of the feature/fix]
ORIGINAL REQUIREMENTS:
[From plan, issue, or user request]
FILES CHANGED:
- src/models/user.py (added User class)
- src/auth/login.py (added login endpoint)
- tests/test_auth.py (added 8 tests)
REVIEW CHECKLIST:
- [ ] Correctness: Does it do what it should?
- [ ] Edge cases: Are they handled?
- [ ] Error handling: Is it adequate?
- [ ] Code quality: Clear names, good structure?
- [ ] Test coverage: Are tests meaningful?
- [ ] Security: Any vulnerabilities?
- [ ] Performance: Any obvious issues?
OUTPUT FORMAT:
- Summary: [brief assessment]
- Critical Issues: [must fix — blocks merge]
- Important Issues: [should fix before merge]
- Minor Issues: [nice to have]
- Strengths: [what was done well]
- Verdict: APPROVE / REQUEST_CHANGES
""",
toolsets=['file']
)