Before reviewing code, understand the context:
Run these checks mentally before manual review:
text
□ Static analysis patterns (type mismatches, unused imports, dead code)
□ Security patterns (injection, unsafe deserialization, hardcoded secrets)
□ Performance patterns (N+1 queries, unbounded loops, missing indexes)
□ Concurrency patterns (race conditions, deadlocks, missing synchronization)
Follow the CHECKLIST.md for systematic review.
Use templates from TEMPLATES.md for structured feedback.
DimensionFocus AreaKey QuestionsCorrectnessLogic, edge casesDoes it work correctly in all scenarios?SecurityVulnerabilities, data protectionAre there security risks or data leaks?PerformanceEfficiency, resource usageWill this scale? Any bottlenecks?MaintainabilityReadability, structureCan others understand and modify this?ObservabilityLogging, monitoring, debuggingCan we detect and diagnose issues?TestingCoverage, qualityAre changes adequately tested?
LevelIconWhen to UseResponse RequiredBlockerSecurity vulnerability, data loss, crashMust fix before mergeCritical🔴 Bug, incorrect logic, broken functionalityMust fix before mergeWarningCode smell, suboptimal pattern, minor issueShould addressSuggestion💡 Improvement opportunity, alternative approachConsiderInfoℹObservation, documentation noteOptional
text
□ Type hints on public functions
□ No mutable default arguments
□ Context managers for resources
□ f-strings over .format() or %
□ Proper exception handling (not bare except)
□ __init__.py exports are intentional
text
□ async/await with try-catch (no unhandled promises)
□ No implicit any (TypeScript strict mode)
□ Proper null/undefined handling
□ No direct DOM manipulation in React
□ Keys in list rendering
□ useEffect dependencies complete
text
□ try-with-resources for Closeable
□ Optional for nullable returns
□ Proper equals/hashCode implementation
□ No raw types (generics)
□ Stream API used appropriately
□ Thread safety considered
text
□ Error handling (not ignored)
□ defer for cleanup
□ Context passed as first parameter
□ No goroutine leaks
□ Proper mutex usage
□ go vet and golangci-lint clean
text
□ No unnecessary clones
□ Proper error types (Result)
□ Lifetimes annotated correctly
□ No unsafe blocks without justification
□ Iterator chains over loops where appropriate
□ Clippy warnings addressed
text
□ async/await patterns correct
□ using statements for IDisposable
□ Nullable reference types enabled
□ LINQ queries efficient
□ Proper exception filtering
□ CancellationToken usage
text
□ No N+1 queries (includes/eager_load)
□ Proper error handling (rescue)
□ Bang methods for mutating operations
□ Frozen string literals
□ RuboCop clean
text
□ Type declarations on parameters/returns
□ Prepared statements (no SQL injection)
□ Proper error handling (try-catch)
□ No global state
□ PSR standards followed
See TEMPLATES.md for detailed markdown templates.
json
{
"summary": "Brief overview",
"issues": [
{
"severity": "critical",
"file": "src/auth.py",
"line": 42,
"category": "security",
"message": "SQL injection vulnerability",
"suggestion": "Use parameterized queries"
}
],
"positive_notes": ["Good use of type hints"],
"recommendation": "approve_with_changes"
}
text
Review Summary for PR #123
==========================
[✓] Correctness - 2 issues found
[✓] Security - 1 critical issue
[✓] Performance - No issues
[✓] Maintainability - 3 suggestions
[✓] Testing - Coverage adequate
[✓] Observability - Missing error context
Recommendation: Changes required before merge