diff-review-strategy

PR size-based review depth, performance review checklist, architecture conformance checks, and framework-specific review patterns.

422 stars

Best use case

diff-review-strategy is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

PR size-based review depth, performance review checklist, architecture conformance checks, and framework-specific review patterns.

Teams using diff-review-strategy should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/diff-review-strategy/SKILL.md --create-dirs "https://raw.githubusercontent.com/vibeeval/vibecosystem/main/skills/diff-review-strategy/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/diff-review-strategy/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How diff-review-strategy Compares

Feature / Agentdiff-review-strategyStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

PR size-based review depth, performance review checklist, architecture conformance checks, and framework-specific review patterns.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

Related Guides

SKILL.md Source

# Diff Review Strategy

## PR Size Categories and Review Depth

| Category | Lines Changed | Review Depth | Action |
|----------|--------------|--------------|--------|
| XS | 1–10 | Quick scan | Auto-approve if tests pass, typo/doc fixes |
| S | 11–50 | Focused | Check edge cases, naming, one logic path |
| M | 51–200 | Thorough | Full logic review, design check, test coverage |
| L | 201–500 | Walkthrough | Request author explanation, check design first |
| XL | 500+ | Split required | Block merge, ask to split into logical units |

### XS/S review checklist
```
[ ] Does the change do exactly what the title says?
[ ] Are edge cases handled (null, empty, out-of-range)?
[ ] Are variable names clear?
[ ] Are tests updated or added?
```

### M review checklist
```
[ ] Is the design the simplest solution?
[ ] Are error paths handled?
[ ] Is there duplication that should be extracted?
[ ] Does it follow existing patterns in the codebase?
[ ] Are there security implications (user input, auth)?
[ ] Is the test coverage meaningful (not just happy path)?
```

### L/XL protocol
```
1. Read the PR description and linked ticket first
2. Review architecture/design before line-by-line reading
3. Request a walkthrough if intent is unclear
4. If XL: comment "Please split by [feature / layer / file]"
```

## Performance Review Checklist

### Database
```
[ ] N+1 query? (loop calling DB inside a loop)
[ ] Missing index on filtered/sorted column?
[ ] SELECT * where only specific columns needed?
[ ] Missing pagination on list endpoints?
[ ] Transaction missing on multi-step writes?
```

### React / Frontend
```
[ ] Unnecessary re-renders? (missing memo/useCallback/useMemo)
[ ] Large component re-renders on every keystroke?
[ ] Images missing width/height (layout shift)?
[ ] Heavy dependency imported at top level (should be lazy)?
[ ] Bundle size impact? (check with next build or vite --report)
```

### General backend
```
[ ] Synchronous I/O inside async handler?
[ ] Missing cache for repeated identical queries?
[ ] Large payload returned when only summary needed?
[ ] Polling where event/webhook would be better?
```

## Architecture Conformance Checks

### Layer violation detection
```
Controller → Service → Repository → DB     (ALLOWED)
Controller → Repository → DB               (VIOLATION: skip service)
Service → Controller                       (VIOLATION: wrong direction)
Repository → Service                       (VIOLATION: wrong direction)
```

Red flags in the diff:
- `import { db } from '../db'` inside a route handler file
- `import { Router } from 'express'` inside a service file
- Direct `fetch()` calls inside a React component (should be in a hook or service)

### Dependency direction (clean architecture)
```
Entities (innermost) — no imports from outer rings
Use Cases — import Entities only
Adapters — import Use Cases and Entities
Frameworks — import everything, imported by nothing
```

### Feature coupling detection
```
[ ] Does feature A import from feature B's internals?
[ ] If yes, should this be a shared utility or event instead?
[ ] Are feature-specific types leaking into shared modules?
```

## Framework-Specific Review Patterns

### React
```
[ ] Hooks called conditionally? (rules of hooks violation)
[ ] Missing key prop in lists? Or key is array index?
[ ] useEffect missing cleanup return for subscriptions/timers?
[ ] State mutation instead of new object? ({ ...prev, field: val })
[ ] Prop drilling 3+ levels deep? (consider context or composition)
```

### Next.js
```
[ ] Data fetching happening client-side when it could be server-side?
[ ] 'use client' added unnecessarily to a component with no interactivity?
[ ] Large third-party lib imported in a Server Component?
[ ] Dynamic route missing generateStaticParams for static generation?
[ ] API route missing input validation?
```

### Express
```
[ ] Middleware added in wrong order? (auth before body-parser?)
[ ] Error handler missing 4-argument signature (err, req, res, next)?
[ ] Async handler missing try/catch or asyncHandler wrapper?
[ ] User input used directly in SQL/file path/shell command?
[ ] Missing rate limiter on public endpoints?
```

## Review Comment Templates

### Nitpick (non-blocking)
```
nit: Consider renaming `data` to `userProfile` for clarity — easy to
confuse with the raw API response above.
```

### Suggestion (non-blocking, better approach available)
```
suggestion: This could use `Promise.all` to run both requests in
parallel instead of sequentially. Would save ~300ms per call.

  // instead of:
  const a = await fetchA()
  const b = await fetchB()

  // consider:
  const [a, b] = await Promise.all([fetchA(), fetchB()])
```

### Blocker (must fix before merge)
```
blocker: This passes `req.params.id` directly into the SQL query
string — SQL injection risk. Use a parameterized query:

  db.query('SELECT * FROM users WHERE id = $1', [req.params.id])
```

### Praise (leave these too — morale matters)
```
nice: Clean separation of concerns here. The service layer staying
unaware of the HTTP layer makes this easy to test.
```

## Review Anti-Patterns to Avoid

- Bike-shedding on style that the linter already enforces
- Asking "why not X?" without explaining why X would be better
- Leaving blockers with no suggested fix
- Reviewing XL PRs line by line without first understanding the design
- Approving without reading tests

Related Skills

test-strategy

422
from vibeeval/vibecosystem

Test pyramid decision matrix, coverage targets, when to write which test type, mock vs real dependency decisions, and test ROI analysis.

security-review

422
from vibeeval/vibecosystem

Use this skill when adding authentication, handling user input, working with secrets, creating API endpoints, or implementing payment/sensitive features. Provides comprehensive security checklist and patterns.

review

422
from vibeeval/vibecosystem

Comprehensive code review workflow - parallel specialized reviews → synthesis

paywall-strategy

422
from vibeeval/vibecosystem

Mobil uygulama paywall strateji rehberi. 14 kategori benchmark database, 4 paywall modeli, trial optimizasyonu, placement mapping, pricing psychology, regional pricing (PPP) ve Apple/Google compliance checklist.

differential-review

422
from vibeeval/vibecosystem

Security-focused differential code review with blast radius analysis, risk-adaptive depth (DEEP/FOCUSED/SURGICAL), git history correlation, and structured finding format. Adapted from Trail of Bits. Use when reviewing PRs, commits, or code changes for security implications.

workflow-router

422
from vibeeval/vibecosystem

Goal-based workflow orchestration - routes tasks to specialist agents based on user goals

wiring

422
from vibeeval/vibecosystem

Wiring Verification

websocket-patterns

422
from vibeeval/vibecosystem

Connection management, room patterns, reconnection strategies, message buffering, and binary protocol design.

visual-verdict

422
from vibeeval/vibecosystem

Screenshot comparison QA for frontend development. Takes a screenshot of the current implementation, scores it across multiple visual dimensions, and returns a structured PASS/REVISE/FAIL verdict with concrete fixes. Use when implementing UI from a design reference or verifying visual correctness.

verification-loop

422
from vibeeval/vibecosystem

Comprehensive verification system covering build, types, lint, tests, security, and diff review before a PR.

vector-db-patterns

422
from vibeeval/vibecosystem

Embedding strategies, ANN algorithms, hybrid search, RAG chunking strategies, and reranking for semantic search and retrieval.

variant-analysis

422
from vibeeval/vibecosystem

Find similar vulnerabilities across a codebase after discovering one instance. Uses pattern matching, AST search, Semgrep/CodeQL queries, and manual tracing to propagate findings. Adapted from Trail of Bits. Use after finding a bug to check if the same pattern exists elsewhere.