Code Review
Expert code reviewer with automated pre-review checks (tests, linting, formatting) and optional auto-fix capabilities.
Parameters
The skill accepts different modes and options:
mode: changes | target
-
changes : Review uncommitted changes (git diff + status)
-
target : Review specific files/directories matching glob pattern
target: File path or glob pattern (required if mode=target)
-
Examples: src/auth , **/*.ts , lib/utils.ts
intent: Optional description or file reference
-
Plain text: "add OAuth2 authentication"
-
File reference (example): @docs/requirements.md (placeholder - replace with actual requirements file)
-
Used for Requirements Alignment section
save: Boolean flag (--save)
-
If true: write review to docs/CODE_REVIEW.md
-
Default: show in chat only
Process Workflow
- Gather Code
changes mode:
git status git diff HEAD
target mode:
-
Use Glob to find files matching target pattern
-
Read matched files
-
Exit gracefully if nothing found
- Load Intent (if provided)
-
If starts with @ : Read file at path
-
Otherwise: use string as-is
-
Store for Requirements Alignment section
- Pre-Review Checks
Run scripts/pre-review.sh to check tests, linting, formatting:
bash scripts/pre-review.sh
Exit codes (bitwise OR):
-
0 : All passed → proceed to review
-
1 : Lint failed → auto-fix
-
2 : Format failed → auto-fix
-
4 : Tests failed → auto-fix
-
8 : No package.json → skip to review
Handle failures:
Exit code 8 (no package.json):
-
Skip all checks
-
Proceed directly to review
Exit code 1 (lint failed):
-
Spawn Task with fix-eslint skill
-
Wait for completion
-
If auto-fix fails or times out, note the failure and proceed to review anyway
-
Re-run pre-review.sh once. If still failing after the second run, proceed to review and note failures in output
Exit code 2 (format failed):
-
Run pnpm format directly
-
Re-run pre-review.sh once. If still failing after the second run, proceed to review and note failures in output
Exit code 4 (tests failed):
-
Spawn Task: "Fix failing tests - review test output and fix the code to make tests pass"
-
Wait for completion
-
If auto-fix fails or times out, note the failure and proceed to review anyway
-
Re-run pre-review.sh once. If still failing after the second run, proceed to review and note failures in output
Multiple failures (e.g., 7 = lint + format + tests):
-
Handle in sequence: format first, then lint, then tests
-
Re-run checks after each fix
Max attempts:
-
Limit to 2 full pre-review cycles (1 initial run + 1 retry)
-
If checks still fail after second run, proceed to review anyway
-
Note failures in review output
- Execute Review
Follow methodology.md for complete review process and output format.
Process:
-
Scan for critical safety/security issues
-
Verify tests & edge cases
-
If intent provided: validate implementation accomplishes goals
-
Note improvements & positives
-
Summarize decision with next steps
Output format: Use exact headings from methodology.md:
-
Critical Issues - with line numbers (L42, L42-47, file.ts:42)
-
Functional Gaps - missing tests/handling
-
Requirements Alignment - only if intent provided
-
Improvements Suggested
-
Positive Observations
-
Overall Assessment - Approve | Request Changes | Comment Only
- Present Review
Always show review in chat, formatted with markdown headings.
- Save (if requested)
If save=true:
-
Use Write tool to create/overwrite docs/CODE_REVIEW.md
-
Include all sections with exact headings
-
Preserve markdown formatting
Examples
Review uncommitted changes:
mode: changes intent: null save: false
Review with intent:
mode: changes intent: "Implement OAuth2 authentication with secure token storage" save: false
Review specific files:
mode: target target: "src/auth/**/*.ts" intent: "security review" save: true
Review with file-based requirements:
mode: changes intent: "@docs/requirements/auth.md" # Example: replace with actual requirements file path save: true
Notes
-
Use this skill immediately after writing or modifying code
-
Gracefully handles projects without package.json (skips checks)
-
Auto-fixes: delegates to fix-eslint skill for lint errors, runs pnpm format for format errors
-
Intent can be plain text or file reference with @ prefix
-
Re-runs checks after auto-fixes, max 2 cycles
-
Pre-review script (scripts/pre-review.sh) returns bitwise exit codes: 1=lint, 2=format, 4=test, 8=no package.json