Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Analyzes code diffs and files to identify bugs, security vulnerabilities (SQL injection, XSS, insecure deserialization), code smells, N+1 queries, naming issues, and architectural concerns, then produces a structured review report with prioritized, actionable feedback. Use when reviewing pull requests, conducting code quality audits, identifying refactoring opportunities, or checking for security issues. Invoke for PR reviews, code quality checks, refactoring suggestions, review code, code quali
.claude/skills/jeffallan-code-reviewer/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-05 | ✗→✓ | ▲ Improved | 12% | 0% |
| case-12 | ✓→✗ | ▼ Worse | -41% | 0% |
| case-07 | ✓→✓ | = Same ✓ | 25% | 0% |
| case-06 | ✓→✓ | = Same ✓ | 36% | 0% |
| case-02 | ✓→✓ | = Same ✓ | 61% | 0% |
Senior engineer conducting thorough, constructive code reviews that improve quality and share knowledge.
> Disagreement handling: If the author has left comments explaining a non-obvious choice, acknowledge their reasoning before suggesting an alternative. Never block on style preferences when a linter or formatter is configured.
Load detailed guidance based on context:
<!-- Spec Compliance and Receiving Feedback rows adapted from obra/superpowers by Jesse Vincent (@obra), MIT License -->
| Topic | Reference | Load When | |-------|-----------|-----------| | Review Checklist | references/review-checklist.md | Starting a review, categories | | Common Issues | references/common-issues.md | N+1 queries, magic numbers, patterns | | Feedback Examples | references/feedback-examples.md | Writing good feedback | | Report Template | references/report-template.md | Writing final review report | | Spec Compliance | references/spec-compliance-review.md | Reviewing implementations, PR review, spec verification | | Receiving Feedback | references/receiving-feedback.md | Responding to review comments, handling feedback |
python# BAD: query inside loop for user in users: orders = Order.objects.filter(user=user) # N+1 # GOOD: prefetch in bulk users = User.objects.prefetch_related('orders').all()
python# BAD if status == 3: ... # GOOD ORDER_STATUS_SHIPPED = 3 if status == ORDER_STATUS_SHIPPED: ...
python# BAD: string interpolation in query cursor.execute(f"SELECT * FROM users WHERE id = {user_id}") # GOOD: parameterized query cursor.execute("SELECT * FROM users WHERE id = %s", [user_id])
Code review report must include:
SOLID, DRY, KISS, YAGNI, design patterns, OWASP Top 10, language idioms, testing patterns
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-07 | pass→pass | 7,500 | 3,521 | -53% | 1 | 1 | 0% | 1,235 | 1,544 | +25% | 0 | 0 | — |
case-06 | pass→pass | 11,569 | 8,974 | -22% | 1 | 1 | 0% | 1,863 | 2,536 | +36% | 0 | 0 | — |
case-01 | fail→fail | 11,463 | 4,185 | -63% | 1 | 1 | 0% | 1,677 | 1,842 | +10% | 0 | 0 | — |
case-02 | pass→pass | 8,499 | 8,754 | +3% | 1 | 1 | 0% | 1,602 | 2,584 | +61% | 0 | 0 | — |
case-03 | pass→pass | 6,660 | 4,622 | -31% | 1 | 1 | 0% | 1,222 | 1,867 | +53% | 0 | 0 | — |
case-04 | pass→pass | 7,727 | 10,949 | +42% | 1 | 1 | 0% | 1,567 | 2,916 | +86% | 0 | 0 | — |
case-05 | fail→pass | 9,325 | 4,464 | -52% | 1 | 1 | 0% | 1,533 | 1,723 | +12% | 0 | 0 | — |
case-08 | pass→pass | 6,629 | 4,265 | -36% | 1 | 1 | 0% | 1,186 | 1,742 | +47% | 0 | 0 | — |
case-09 | pass→pass | 6,719 | 3,109 | -54% | 1 | 1 | 0% | 1,135 | 1,580 | +39% | 0 | 0 | — |
case-10 | pass→pass | 11,070 | 11,363 | +3% | 1 | 1 | 0% | 1,991 | 3,095 | +55% | 0 | 0 | — |
case-11 | pass→pass | 15,806 | 6,502 | -59% | 1 | 1 | 0% | 1,380 | 1,916 | +39% | 0 | 0 | — |
case-12 | pass→fail | 16,346 | 4,851 | -70% | 1 | 1 | 0% | 3,024 | 1,791 | -41% | 0 | 0 | — |
case-13 | pass→pass | 7,406 | 6,753 | -9% | 1 | 1 | 0% | 1,310 | 2,144 | +64% | 0 | 0 | — |
case-14 | pass→pass | 9,052 | 5,366 | -41% | 1 | 1 | 0% | 1,661 | 1,843 | +11% | 0 | 0 | — |
case-15 | fail→fail | 11,620 | 9,795 | -16% | 1 | 1 | 0% | 2,009 | 2,863 | +43% | 0 | 0 | — |
case-16 | pass→pass | 12,538 | 10,272 | -18% | 1 | 1 | 0% | 2,118 | 2,621 | +24% | 0 | 0 | — |
case-22 | pass→pass | 20,286 | 16,082 | -21% | 1 | 1 | 0% | 3,710 | 4,066 | +10% | 0 | 0 | — |
case-17 | pass→pass | 9,830 | 2,037 | -79% | 1 | 1 | 0% | 1,844 | 1,279 | -31% | 0 | 0 | — |
case-18 | pass→pass | 13,003 | 13,454 | +3% | 1 | 1 | 0% | 2,351 | 3,428 | +46% | 0 | 0 | — |
case-19 | pass→pass | 10,300 | 12,239 | +19% | 1 | 1 | 0% | 2,411 | 3,491 | +45% | 0 | 0 | — |
case-20 | pass→pass | 9,398 | 5,567 | -41% | 1 | 1 | 0% | 1,699 | 2,133 | +26% | 0 | 0 | — |
case-21 | pass→pass | 9,135 | 5,518 | -40% | 1 | 1 | 0% | 1,537 | 1,919 | +25% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of 0 percentage points is the difference between those two pass rates over the 22 comparable cases. 1 case got worse with the skill loaded, and it is included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.