/code-review-expert
Expert code review of current git changes with a senior engineer lens. Detects SOLID violations, security risks, performance issues, error handling gaps, boundary condition bugs, and dead code — then proposes actionable improvements.
Usage
/code-review-expert [target] [--commit <range>] [--strict]
Arguments
| Argument |
Description |
target |
File or directory to review (default: current git changes) |
--commit <range> |
Review a specific commit or range (e.g., HEAD~3..HEAD) |
--strict |
Apply stricter thresholds — flag P2/P3 issues more aggressively |
Severity Levels
| Level |
Name |
Description |
Action |
| P0 |
Critical |
Security vulnerability, data loss risk, correctness bug |
Must block merge |
| P1 |
High |
Logic error, significant SOLID violation, performance regression |
Should fix before merge |
| P2 |
Medium |
Code smell, maintainability concern, minor SOLID violation |
Fix in this PR or create follow-up |
| P3 |
Low |
Style, naming, minor suggestion |
Optional improvement |
Instructions
When this skill is invoked:
Agent Behavior
Autonomy:
- Complete the full review end-to-end without pausing
- Present all findings in a single structured report
- Do NOT implement changes until user explicitly confirms
Thoroughness:
- Load all reference checklists in parallel before beginning analysis
- Check against all standards in
.claude/rules/ (auto-loaded)
- Cross-reference with
prd/00_technology.md for technology-specific patterns
- Include file:line references for all findings
Review Process
1) Preflight context
- Run
git status -sb, git diff --stat, and git diff to scope changes.
- If
target is specified, scope to those files. If --commit is specified, use git diff <range>.
- Use
rg or grep to find related modules, usages, and contracts.
- Identify entry points, ownership boundaries, and critical paths (auth, payments, data writes, network).
Edge cases:
- No changes: If diff is empty, inform user and ask if they want to review staged changes or a specific commit range.
- Large diff (>500 lines): Summarize by file first, then review in batches by module/feature area.
- Mixed concerns: Group findings by logical feature, not just file order.
2) SOLID + architecture smells
- Load
.claude/references/solid-checklist.md for specific prompts.
- Evaluate against all 5 SOLID principles:
- SRP: Overloaded modules with unrelated responsibilities.
- OCP: Frequent edits to add behavior instead of extension points.
- LSP: Subclasses that break expectations or require type checks.
- ISP: Wide interfaces with unused methods.
- DIP: High-level logic tied to low-level implementations.
- When proposing a refactor, explain why it improves cohesion/coupling and outline a minimal, safe split.
- If refactor is non-trivial, propose an incremental plan instead of a large rewrite.
3) Removal candidates + iteration plan
- Load
.claude/references/removal-plan.md for template.
- Identify code that is unused, redundant, or feature-flagged off.
- Distinguish safe delete now vs defer with plan.
- Provide a follow-up plan with concrete steps and checkpoints (tests/metrics).
4) Security and reliability scan
- Load
.claude/references/security-checklist.md for coverage.
- Also read
.claude/agents/security-reviewer.md for the security perspective.
- Check for:
- XSS, injection (SQL/NoSQL/command), SSRF, path traversal
- AuthZ/AuthN gaps, missing tenancy checks
- Secret leakage or API keys in logs/env/files
- Rate limits, unbounded loops, CPU/memory hotspots
- Unsafe deserialization, weak crypto, insecure defaults
- Race conditions: concurrent access, check-then-act, TOCTOU, missing locks
- Call out both exploitability and impact.
5) Code quality scan
- Load
.claude/references/code-quality-checklist.md for coverage.
- Check for:
- Error handling: swallowed exceptions, overly broad catch, missing error handling, async errors
- Performance: N+1 queries, CPU-intensive ops in hot paths, missing cache, unbounded memory
- Boundary conditions: null/undefined handling, empty collections, numeric boundaries, off-by-one
- Flag issues that may cause silent failures or production incidents.
6) Output format
Structure the review as follows:
## Code Review Summary
**Files reviewed**: X files, Y lines changed
**Overall assessment**: [APPROVE / REQUEST_CHANGES / COMMENT]
---
## Findings
### P0 — Critical
(none or list)
### P1 — High
1. **[file:line]** Brief title
- Description of issue
- Suggested fix
### P2 — Medium
2. (continue numbering across sections)
- ...
### P3 — Low
...
---
## Removal/Iteration Plan
(if applicable)
## Additional Suggestions
(optional improvements, not blocking)
Inline comments: Use this format for file-specific findings:
::code-comment{file="path/to/file.ts" line="42" severity="P1"}
Description of the issue and suggested fix.
::
Clean review: If no issues found, explicitly state:
- What was checked
- Any areas not covered (e.g., "Did not verify database migrations")
- Residual risks or recommended follow-up tests
7) Next steps confirmation
After presenting findings, ask user how to proceed:
---
## Next Steps
I found X issues (P0: _, P1: _, P2: _, P3: _).
**How would you like to proceed?**
1. **Fix all** — I'll implement all suggested fixes
2. **Fix P0/P1 only** — Address critical and high priority issues
3. **Fix specific items** — Tell me which issues to fix
4. **No changes** — Review complete, no implementation needed
Please choose an option or provide specific instructions.
Important: Do NOT implement any changes until user explicitly confirms. This is a review-first workflow.
Resources
| File |
Purpose |
.claude/references/solid-checklist.md |
SOLID smell prompts and refactor heuristics |
.claude/references/security-checklist.md |
Web/app security and runtime risk checklist |
.claude/references/code-quality-checklist.md |
Error handling, performance, boundary conditions |
.claude/references/removal-plan.md |
Template for deletion candidates and follow-up plan |
Example
$ /code-review-expert
Scoping changes... 8 files, 342 lines changed
Loading review checklists...
## Code Review Summary
**Files reviewed**: 8 files, 342 lines changed
**Overall assessment**: REQUEST_CHANGES
---
## Findings
### P0 — Critical
(none)
### P1 — High
1. **src/services/payment.ts:89** Race condition in balance deduction
- Check-then-act pattern: balance is read, checked, then deducted in separate operations
- Suggested fix: Use `SELECT FOR UPDATE` or atomic `UPDATE WHERE balance >= amount`
2. **src/api/users.ts:34** Missing ownership check (IDOR)
- Any authenticated user can access other users' data via `GET /users/:id`
- Suggested fix: Add `where: { id: params.id, orgId: req.user.orgId }`
### P2 — Medium
3. **src/services/order.ts:12-45** SRP violation — mixed concerns
- Order service handles validation, pricing, inventory, and notifications
- Suggested fix: Extract `PricingService` and `NotificationService`
4. **src/api/orders.ts:67** Swallowed exception in error handler
- `catch (e) { return null }` hides failures from callers
- Suggested fix: Log error with context and throw a typed `OrderError`
### P3 — Low
5. **src/models/user.ts:8** Missing max length on `name` field
- Could allow unbounded string storage
- Suggested fix: Add `@MaxLength(255)` constraint
---
## Next Steps
I found 5 issues (P0: 0, P1: 2, P2: 2, P3: 1).
**How would you like to proceed?**
1. **Fix all** — I'll implement all suggested fixes
2. **Fix P0/P1 only** — Address critical and high priority issues
3. **Fix specific items** — Tell me which issues to fix
4. **No changes** — Review complete, no implementation needed
1---2name: code-review-expert3description: Expert code review of current git changes with a senior engineer lens: SOLID, security, performance, error handling, boundary conditions.4---56# /code-review-expert78Expert code review of current git changes with a senior engineer lens. Detects SOLID violations, security risks, performance issues, error handling gaps, boundary condition bugs, and dead code — then proposes actionable improvements.910## Usage1112```13/code-review-expert [target] [--commit <range>] [--strict]14```1516## Arguments1718| Argument | Description |19|----------|-------------|20| `target` | File or directory to review (default: current git changes) |21| `--commit <range>` | Review a specific commit or range (e.g., `HEAD~3..HEAD`) |22| `--strict` | Apply stricter thresholds — flag P2/P3 issues more aggressively |2324## Severity Levels2526| Level | Name | Description | Action |27|-------|------|-------------|--------|28| **P0** | Critical | Security vulnerability, data loss risk, correctness bug | Must block merge |29| **P1** | High | Logic error, significant SOLID violation, performance regression | Should fix before merge |30| **P2** | Medium | Code smell, maintainability concern, minor SOLID violation | Fix in this PR or create follow-up |31| **P3** | Low | Style, naming, minor suggestion | Optional improvement |3233## Instructions3435When this skill is invoked:3637### Agent Behavior3839**Autonomy:**40- Complete the full review end-to-end without pausing41- Present all findings in a single structured report42- Do NOT implement changes until user explicitly confirms4344**Thoroughness:**45- Load all reference checklists in parallel before beginning analysis46- Check against all standards in `.claude/rules/` (auto-loaded)47- Cross-reference with `prd/00_technology.md` for technology-specific patterns48- Include file:line references for all findings4950### Review Process5152#### 1) Preflight context5354- Run `git status -sb`, `git diff --stat`, and `git diff` to scope changes.55- If `target` is specified, scope to those files. If `--commit` is specified, use `git diff <range>`.56- Use `rg` or `grep` to find related modules, usages, and contracts.57- Identify entry points, ownership boundaries, and critical paths (auth, payments, data writes, network).5859**Edge cases:**60- **No changes**: If diff is empty, inform user and ask if they want to review staged changes or a specific commit range.61- **Large diff (>500 lines)**: Summarize by file first, then review in batches by module/feature area.62- **Mixed concerns**: Group findings by logical feature, not just file order.6364#### 2) SOLID + architecture smells6566- Load `.claude/references/solid-checklist.md` for specific prompts.67- Evaluate against all 5 SOLID principles:68 - **SRP**: Overloaded modules with unrelated responsibilities.69 - **OCP**: Frequent edits to add behavior instead of extension points.70 - **LSP**: Subclasses that break expectations or require type checks.71 - **ISP**: Wide interfaces with unused methods.72 - **DIP**: High-level logic tied to low-level implementations.73- When proposing a refactor, explain *why* it improves cohesion/coupling and outline a minimal, safe split.74- If refactor is non-trivial, propose an incremental plan instead of a large rewrite.7576#### 3) Removal candidates + iteration plan7778- Load `.claude/references/removal-plan.md` for template.79- Identify code that is unused, redundant, or feature-flagged off.80- Distinguish **safe delete now** vs **defer with plan**.81- Provide a follow-up plan with concrete steps and checkpoints (tests/metrics).8283#### 4) Security and reliability scan8485- Load `.claude/references/security-checklist.md` for coverage.86- Also read `.claude/agents/security-reviewer.md` for the security perspective.87- Check for:88 - XSS, injection (SQL/NoSQL/command), SSRF, path traversal89 - AuthZ/AuthN gaps, missing tenancy checks90 - Secret leakage or API keys in logs/env/files91 - Rate limits, unbounded loops, CPU/memory hotspots92 - Unsafe deserialization, weak crypto, insecure defaults93 - **Race conditions**: concurrent access, check-then-act, TOCTOU, missing locks94- Call out both **exploitability** and **impact**.9596#### 5) Code quality scan9798- Load `.claude/references/code-quality-checklist.md` for coverage.99- Check for:100 - **Error handling**: swallowed exceptions, overly broad catch, missing error handling, async errors101 - **Performance**: N+1 queries, CPU-intensive ops in hot paths, missing cache, unbounded memory102 - **Boundary conditions**: null/undefined handling, empty collections, numeric boundaries, off-by-one103- Flag issues that may cause silent failures or production incidents.104105#### 6) Output format106107Structure the review as follows:108109```markdown110## Code Review Summary111112**Files reviewed**: X files, Y lines changed113**Overall assessment**: [APPROVE / REQUEST_CHANGES / COMMENT]114115---116117## Findings118119### P0 — Critical120(none or list)121122### P1 — High1231. **[file:line]** Brief title124 - Description of issue125 - Suggested fix126127### P2 — Medium1282. (continue numbering across sections)129 - ...130131### P3 — Low132...133134---135136## Removal/Iteration Plan137(if applicable)138139## Additional Suggestions140(optional improvements, not blocking)141```142143**Inline comments**: Use this format for file-specific findings:144```145::code-comment{file="path/to/file.ts" line="42" severity="P1"}146Description of the issue and suggested fix.147::148```149150**Clean review**: If no issues found, explicitly state:151- What was checked152- Any areas not covered (e.g., "Did not verify database migrations")153- Residual risks or recommended follow-up tests154155#### 7) Next steps confirmation156157After presenting findings, ask user how to proceed:158159```markdown160---161162## Next Steps163164I found X issues (P0: _, P1: _, P2: _, P3: _).165166**How would you like to proceed?**1671681. **Fix all** — I'll implement all suggested fixes1692. **Fix P0/P1 only** — Address critical and high priority issues1703. **Fix specific items** — Tell me which issues to fix1714. **No changes** — Review complete, no implementation needed172173Please choose an option or provide specific instructions.174```175176**Important**: Do NOT implement any changes until user explicitly confirms. This is a review-first workflow.177178## Resources179180| File | Purpose |181|------|---------|182| `.claude/references/solid-checklist.md` | SOLID smell prompts and refactor heuristics |183| `.claude/references/security-checklist.md` | Web/app security and runtime risk checklist |184| `.claude/references/code-quality-checklist.md` | Error handling, performance, boundary conditions |185| `.claude/references/removal-plan.md` | Template for deletion candidates and follow-up plan |186187## Example188189```190$ /code-review-expert191192Scoping changes... 8 files, 342 lines changed193194Loading review checklists...195196## Code Review Summary197198**Files reviewed**: 8 files, 342 lines changed199**Overall assessment**: REQUEST_CHANGES200201---202203## Findings204205### P0 — Critical206(none)207208### P1 — High2091. **src/services/payment.ts:89** Race condition in balance deduction210 - Check-then-act pattern: balance is read, checked, then deducted in separate operations211 - Suggested fix: Use `SELECT FOR UPDATE` or atomic `UPDATE WHERE balance >= amount`2122132. **src/api/users.ts:34** Missing ownership check (IDOR)214 - Any authenticated user can access other users' data via `GET /users/:id`215 - Suggested fix: Add `where: { id: params.id, orgId: req.user.orgId }`216217### P2 — Medium2183. **src/services/order.ts:12-45** SRP violation — mixed concerns219 - Order service handles validation, pricing, inventory, and notifications220 - Suggested fix: Extract `PricingService` and `NotificationService`2212224. **src/api/orders.ts:67** Swallowed exception in error handler223 - `catch (e) { return null }` hides failures from callers224 - Suggested fix: Log error with context and throw a typed `OrderError`225226### P3 — Low2275. **src/models/user.ts:8** Missing max length on `name` field228 - Could allow unbounded string storage229 - Suggested fix: Add `@MaxLength(255)` constraint230231---232233## Next Steps234235I found 5 issues (P0: 0, P1: 2, P2: 2, P3: 1).236237**How would you like to proceed?**2382391. **Fix all** — I'll implement all suggested fixes2402. **Fix P0/P1 only** — Address critical and high priority issues2413. **Fix specific items** — Tell me which issues to fix2424. **No changes** — Review complete, no implementation needed243```