skills/code-review-checklist/SKILL.md
Generates comprehensive, context-aware code review checklists tailored to the specific codebase, programming language, and team standards. Analyzes PR diffs and suggests what reviewers should focus on.
npx skillsauth add curiositech/windags-skills code-review-checklistInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Generate thorough, contextual code review checklists that route attention to highest-risk areas based on what actually changed, not generic advice.
Step 1: Scan PR title, description, and git diff summary to classify change type Step 2: Apply corresponding decision tree, checking items in priority order
IF New Feature:
├─ Security First: Does change touch auth, user input, or data access?
│ ├─ YES → Check input validation, auth boundaries, SQL injection vectors
│ └─ NO → Skip to API review
├─ API Surface: New public methods minimal? Could interface be smaller?
├─ Edge Cases: Test null/empty/max inputs, concurrent access, network failures
└─ Backwards Compatibility: Migration path for breaking changes?
IF Bug Fix:
├─ Triage Severity: Critical (security/data loss) vs Normal vs Cosmetic
│ ├─ CRITICAL → Verify fix addresses root cause, add regression test
│ ├─ NORMAL → Check blast radius, search for similar patterns
│ └─ COSMETIC → Ensure fix doesn't introduce complexity
├─ Root Cause: Comment explains WHY bug occurred, not just what changed
└─ Test Coverage: Regression test fails on old code, passes on new
IF Refactoring:
├─ Behavior Preservation Check: Do existing tests pass unmodified?
│ ├─ YES → Focus on performance implications
│ └─ NO → Require explanation for each test change
├─ No Feature Smuggling: Are behavior changes documented/intentional?
├─ Incremental Safety: Could split into smaller PRs to reduce risk?
└─ Performance Impact: New allocations, DB calls, or O(n) changes?
IF Dependencies:
├─ Version Jump Size: Patch vs Minor vs Major update
│ ├─ MAJOR → Read breaking changes, check for API usage
│ ├─ MINOR → Verify new features don't auto-enable unsafely
│ └─ PATCH → Quick security scan, verify lockfile consistency
├─ Security Focus: Does update address CVE? Check for new vulnerabilities
└─ Bundle Impact: Frontend deps - check bundle size growth
IF Config/Infrastructure:
├─ Secret Exposure: Scan for API keys, passwords, tokens in plain text
├─ Rollback Safety: Can revert without data loss or downtime?
├─ Environment Consistency: Does change work across dev/staging/prod?
└─ Deployment Dependencies: Required manual steps documented?
PR: "Add advanced user search with role filtering"
Files: routes/users.js, services/userSearch.js, test/search.test.js
Decision Tree Application:
userSearch.js line 23: SELECT * FROM users WHERE name LIKE '%${req.query.name}%'What Novice Misses:
Expert Catches:
${req.query.name} allows injectionPR: "Remove transaction wrapper for better performance"
Files: services/payment.js - removes database transaction
Decision Tree Application:
db.transaction() wrapper around payment operationsWhat Novice Misses:
Expert Catches:
Mark review complete only when ALL conditions verified:
This skill should NOT be used for:
system-design skill insteadperformance-optimization skillsecurity-review skilltechnical-decision-making skillDelegate when:
system-designperformance-optimizationsecurity-reviewdatabase-designtechnical-decision-makingtools
Building resilient distributed systems with circuit breakers, retries with full-jitter exponential backoff, retry budgets (per-request 3-attempt + per-client 10% ratio per Google SRE), deadline propagation, and the cascading-failure math (4 layers × 3 retries = 64x amplification). Grounded in Resilience4j, Microsoft Cloud Patterns, AWS Architecture Blog (Marc Brooker), and Google SRE Book.
testing
Designing HTTP cache headers that work correctly across browsers, CDNs, and shared proxies — `Cache-Control` directives per RFC 9111, `stale-while-revalidate` and `stale-if-error` per RFC 5861, the Vary header for varying responses, and surrogate keys for tag-based purging. Grounded in IETF RFCs and Cloudflare/Fastly docs.
development
Use when designing or fixing a Content Security Policy on a real site, choosing between nonce-based and hash-based CSP, adding strict-dynamic, debugging "Refused to execute inline script" errors, deploying CSP in report-only mode first, configuring report-to / report-uri, or auditing an existing policy for unsafe-inline / unsafe-eval / wildcards. Triggers: "CSP blocks legitimate inline script", strict-dynamic, nonce-{RANDOM}, sha256-{HASH}, object-src none, base-uri none, frame-ancestors, Trusted Types, X-Content-Security-Policy obsolete, report-only vs enforced. NOT for general HTTP security headers (HSTS, COOP/COEP), Trusted Types deep dive, CORS configuration, or building a WAF.
tools
Choosing and operating an HTTP API versioning strategy that doesn't break clients — Stripe's date-based pinned versions, the Deprecation/Sunset header pair (RFC 9745 + RFC 8594), URI vs header vs media-type approaches, and the version-transformer pattern. Grounded in Stripe's published architecture and IETF RFCs.