| name | dual-pass-review |
| description | Use AFTER any code changes (feature implementation, bug fix, refactor) to enforce mandatory dual-pass review. First pass reviews unstaged changes for correctness and convention compliance. Second pass ONLY executes if first pass made any corrections. Ensures work follows project conventions, development rules, and best practices before task completion. |
| allowed-tools | Read, Write, Edit, Grep, Glob, Bash, Task |
Dual-Pass Code Review Workflow
Mandatory review checkpoint that runs after any code changes to ensure quality and convention compliance.
Core Principle
Every code change requires verification before task completion.
Two review passes:
- First Pass: Review unstaged changes for correctness + convention compliance
- Second Pass: Conditional - ONLY if first pass made changes, review again
When to Use
Trigger AUTOMATICALLY after:
- Feature implementation (
/cook, /code)
- Bug fixes (
/fix, /debug)
- Refactoring (
/refactor)
- Any edit/write operations that modify code
Review Dimensions
1. Task Correctness
2. Project Conventions
3. Development Rules Compliance
4. Code Quality
Execution Protocol
Step 1: Get Unstaged Changes
git status --short
git diff
git diff --staged
Step 2: First Pass Review
For EACH changed file, verify:
## First Pass Review Checklist
### File: [filename]
**Task Correctness:**
- [ ] Addresses original requirement
- [ ] Logic is complete and correct
- [ ] No missing edge cases
**Convention Compliance:**
- [ ] Follows platform patterns from AGENTS.md
- [ ] Uses correct base classes
- [ ] Naming conventions followed
- [ ] BEM classes on all template elements (frontend)
**Development Rules:**
- [ ] YAGNI/KISS/DRY compliance
- [ ] Logic in correct layer
- [ ] No anti-patterns (side effects in handlers, generic repos, etc.)
**Quality:**
- [ ] Compiles without errors
- [ ] No security issues
- [ ] Proper error handling
Step 3: First Pass Corrections
If issues found:
- Document each issue clearly
- Fix issues immediately
- Track that corrections were made
## First Pass Corrections Made
1. [File:Line] - [Issue] → [Fix Applied]
2. [File:Line] - [Issue] → [Fix Applied]
...
Step 4: Conditional Second Pass
CRITICAL DECISION POINT:
IF first_pass_made_changes == true:
EXECUTE full second pass review
ELSE:
SKIP second pass, proceed to summary
Step 5: Second Pass Review (If Needed)
Re-run complete review on current unstaged changes:
git diff
Verify ALL checklist items again:
- Task correctness
- Convention compliance
- Development rules
- Code quality
Step 6: Generate Summary
## Dual-Pass Review Summary
**First Pass:**
- Files reviewed: [count]
- Issues found: [count]
- Corrections made: [yes/no]
**Second Pass:**
- Executed: [yes/no]
- Reason: [first pass made changes / first pass clean]
- Additional issues: [count if executed]
**Final Status:** [APPROVED / NEEDS ATTENTION]
**Remaining Concerns:**
- [List any minor items for future consideration]
Common Issues to Check
Backend Anti-Patterns
await notificationService.SendAsync(...);
IPlatformRootRepository<Entity>
var entity = new Entity { Name = req.Name };
await repo.GetAllAsync(...)
Frontend Anti-Patterns
<div><span>{{ name }}</span></div>
this.data$.subscribe(...)
readonly types = [{ value: 1, label: 'Type A' }];
constructor(private http: HttpClient) {}
Integration with Workflows
This skill is the FINAL step before task completion in:
| Workflow | Sequence (Updated) |
|---|
| Feature | plan → cook → test → dual-pass-review → docs-update → watzup |
| Bug Fix | debug → plan → fix → test → dual-pass-review |
| Refactor | plan → code → test → dual-pass-review |
Review Commands
grep -r "IPlatformRootRepository" --include="*.cs"
grep -r "new Entity {" --include="*Handler.cs"
grep -r "SendAsync\|NotifyAsync" --include="*CommandHandler.cs"
grep -r "class=\"\"" --include="*.html"
grep -r "subscribe()" --include="*.ts" | grep -v "untilDestroyed"
Key Rules
- NEVER skip first pass - Always review unstaged changes
- Second pass is CONDITIONAL - Only if first pass made corrections
- Be honest and brutal - Flag all issues, don't be lenient
- Evidence-based - Cite specific files and lines
- Follow project conventions - Check AGENTS.md patterns
Output Format
Always end with clear status:
---
**Review Status:** [APPROVED / CORRECTIONS NEEDED]
**Passes Executed:** [1 / 2]
**Ready for Commit:** [Yes / No]
---