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
More from otrebu/agents
gh-code-search
Search GitHub for real-world code examples and implementation patterns. Use when user wants to find code examples on GitHub, search GitHub repositories, discover how others implement features, learn library usage patterns, or research architectural approaches. Fetches top results with smart ranking (stars, recency, language), extracts factual data (imports, syntax patterns, metrics), and returns clean markdown for analysis and pattern identification.
85fix-eslint
Automatically fix ESLint errors by modifying code to comply with linting rules. For small codebases (≤20 errors), fixes directly. For larger codebases (>20 errors), spawns parallel agents per directory for efficient processing. Never disables rules or adds ignore comments.
22web-to-markdown
Batch-process web pages via headless Playwright browser, extract HTML, convert to markdown using Turndown, and save to timestamped scratchpad file. Use when user asks to "capture these pages as markdown", "save web content", "fetch and convert webpages", or needs clean markdown from HTML. All URLs from one prompt → single file at docs/web-captures/<timestamp>.md.
22readwise-api
Fetch and analyze Readwise reading activity for any date range. Use when user asks about articles saved, highlights created, or most-highlighted content for today, yesterday, last week, last month, or custom date ranges (e.g., "show my Readwise activity from Jan 1-7"). Requires READWISE_API_TOKEN env var. Connects to Readwise Highlights API (v2) and Reader API (v3).
13timestamp
Generate deterministic timestamps in YYYYMMDDHHMMSS format using bash. Use when you need timestamps for filenames, logging, or any situation requiring consistent timestamp formatting without LLM generation.
12claude-permissions
Configure, manage, update and review Claude Code permissions, sandboxing, and tool access. Use when user wants to set up permissions, configure sandboxing, update allowed tools, manage settings.json permissions, or review permissions in skills or commands or agents or settings.json. When user writes a new skill, command, agent, or updates settings.json, they should use this skill to manage permissions.
11