code-review
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|targetchanges: 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
- Examples:
-
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
- Plain text:
-
save: Boolean flag (--save)
- If true: write review to
docs/CODE_REVIEW.md - Default: show in chat only
- If true: write review to
Process Workflow
1. 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
2. Load Intent (if provided)
- If starts with
@: Read file at path - Otherwise: use string as-is
- Store for Requirements Alignment section
3. 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 review1: Lint failed → auto-fix2: Format failed → auto-fix4: Tests failed → auto-fix8: 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 formatdirectly - 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
4. 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
5. Present Review
Always show review in chat, formatted with markdown headings.
6. 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