differential-review
Install this skill
npx skills add trailofbits/skillsWorks across Claude Code, Cursor, Codex, Copilot & Antigravity
Differential-review is a security-focused audit framework that structures code analysis based on risk rather than PR size. It mandates evidence-based findings tied to specific Git history and line-level changes. By categorizing codebase size into tactical tiersβSmall, Medium, and Largeβit directs focus toward high-impact areas like authentication, value transfer, and external service calls. It rejects assumptions that code familiarity or small diffs exempt a change from scrutiny. Instead, it enforces a systematic workflow that progresses from initial triage to adversarial modeling and final artifact generation. The skill prevents common reviewer biases by requiring documented blast radius calculations and explicit analysis of removed security controls. It produces detailed, actionable reports, ensuring that every identified security regression is traceable to a specific commit, thereby minimizing the chance of missed vulnerabilities in critical paths.
When to Use This Skill
- β’Auditing PRs that modify authentication or authorization logic
- β’Reviewing refactored code for potential logic regressions
- β’Evaluating external library integration for supply-chain risks
- β’Assessing security impacts of state-changing operations
How to Invoke This Skill
Example prompts that trigger this skill in Claude Code, Cursor, or Antigravity:
- βPerform a differential review on this pull request
- βAudit these code changes for security vulnerabilities
- βAssess the blast radius of this commit
- βRun a high-risk security scan on this feature branch
- βIdentify security regressions in this refactor
Pro Tips
- π‘Ensure your prompt includes comprehensive context, such as prior git history or baseline code, for the most accurate differential analysis.
- π‘Combine this skill with broader SAST tools to catch both granular diff-based issues and wider architectural vulnerabilities.
- π‘Even for seemingly minor changes, leverage this skill to identify subtle security implications, as it's designed to classify by risk, not just code size.
What this skill does
- β’Categorizes audit scope by codebase scale and risk level
- β’Links security regressions directly to Git blame history
- β’Generates structured audit reports with threat models
- β’Calculates blast radius for high-risk component modifications
- β’Automates triage of complex diffs into actionable review queues
When not to use it
- βFormatting, whitespace, or linting-only changes
- βPurely documentation updates without functional code
- βGreenfield projects lacking established security baselines
Example workflow
- Triage PR files based on risk categories
- Apply git-blame on deleted security-sensitive code
- Calculate the blast radius for critical path changes
- Perform adversarial modeling for high-risk triggers
- Generate final markdown report with documented findings
Prerequisites
- βRead access to the git repository
- βContext regarding the application's authentication flow
Pitfalls & limitations
- !Over-reliance on automated triage without manual verification
- !Assuming small diffs are inherently low-risk
- !Failing to account for transitive dependency callers
FAQ
How it compares
Unlike generic manual reviews, this skill mandates an evidence-based, artifact-driven methodology that enforces tracking vulnerabilities back to specific commits.
Source & trust
π Full skill instructions β original source: trailofbits/skills
Security-focused code review for PRs, commits, and diffs.
## Core Principles
1. **Risk-First**: Focus on auth, crypto, value transfer, external calls
2. **Evidence-Based**: Every finding backed by git history, line numbers, attack scenarios
3. **Adaptive**: Scale to codebase size (SMALL/MEDIUM/LARGE)
4. **Honest**: Explicitly state coverage limits and confidence level
5. **Output-Driven**: Always generate comprehensive markdown report file
---
## Rationalizations (Do Not Skip)
| Rationalization | Why It's Wrong | Required Action |
|-----------------|----------------|-----------------|
| "Small PR, quick review" | Heartbleed was 2 lines | Classify by RISK, not size |
| "I know this codebase" | Familiarity breeds blind spots | Build explicit baseline context |
| "Git history takes too long" | History reveals regressions | Never skip Phase 1 |
| "Blast radius is obvious" | You'll miss transitive callers | Calculate quantitatively |
| "No tests = not my problem" | Missing tests = elevated risk rating | Flag in report, elevate severity |
| "Just a refactor, no security impact" | Refactors break invariants | Analyze as HIGH until proven LOW |
| "I'll explain verbally" | No artifact = findings lost | Always write report |
---
## Quick Reference
### Codebase Size Strategy
| Codebase Size | Strategy | Approach |
|---------------|----------|----------|
| SMALL (<20 files) | DEEP | Read all deps, full git blame |
| MEDIUM (20-200) | FOCUSED | 1-hop deps, priority files |
| LARGE (200+) | SURGICAL | Critical paths only |
### Risk Level Triggers
| Risk Level | Triggers |
|------------|----------|
| HIGH | Auth, crypto, external calls, value transfer, validation removal |
| MEDIUM | Business logic, state changes, new public APIs |
| LOW | Comments, tests, UI, logging |
---
## Workflow Overview
Pre-Analysis β Phase 0: Triage β Phase 1: Code Analysis β Phase 2: Test Coverage
β β β β
Phase 3: Blast Radius β Phase 4: Deep Context β Phase 5: Adversarial β Phase 6: Report---
## Decision Tree
**Starting a review?**
ββ Need detailed phase-by-phase methodology?
β ββ Read: methodology.md
β (Pre-Analysis + Phases 0-4: triage, code analysis, test coverage, blast radius)
β
ββ Analyzing HIGH RISK change?
β ββ Read: adversarial.md
β (Phase 5: Attacker modeling, exploit scenarios, exploitability rating)
β
ββ Writing the final report?
β ββ Read: reporting.md
β (Phase 6: Report structure, templates, formatting guidelines)
β
ββ Looking for specific vulnerability patterns?
β ββ Read: patterns.md
β (Regressions, reentrancy, access control, overflow, etc.)
β
ββ Quick triage only?
ββ Use Quick Reference above, skip detailed docs---
## Quality Checklist
Before delivering:
- [ ] All changed files analyzed
- [ ] Git blame on removed security code
- [ ] Blast radius calculated for HIGH risk
- [ ] Attack scenarios are concrete (not generic)
- [ ] Findings reference specific line numbers + commits
- [ ] Report file generated
- [ ] User notified with summary
---
## Integration
**audit-context-building skill:**
- Pre-Analysis: Build baseline context
- Phase 4: Deep context on HIGH RISK changes
**issue-writer skill:**
- Transform findings into formal audit reports
- Command:
issue-writer --input DIFFERENTIAL_REVIEW_REPORT.md --format audit-report---
## Example Usage
### Quick Triage (Small PR)
Input: 5 file PR, 2 HIGH RISK files
Strategy: Use Quick Reference
1. Classify risk level per file (2 HIGH, 3 LOW)
2. Focus on 2 HIGH files only
3. Git blame removed code
4. Generate minimal report
Time: ~30 minutes### Standard Review (Medium Codebase)
Input: 80 files, 12 HIGH RISK changes
Strategy: FOCUSED (see methodology.md)
1. Full workflow on HIGH RISK files
2. Surface scan on MEDIUM
3. Skip LOW risk files
4. Complete report with all sections
Time: ~3-4 hours### Deep Audit (Large, Critical Change)
Input: 450 files, auth system rewrite
Strategy: SURGICAL + audit-context-building
1. Baseline context with audit-context-building
2. Deep analysis on auth changes only
3. Blast radius analysis
4. Adversarial modeling
5. Comprehensive report
Time: ~6-8 hours---
## When NOT to Use This Skill
- **Greenfield code** (no baseline to compare)
- **Documentation-only changes** (no security impact)
- **Formatting/linting** (cosmetic changes)
- **User explicitly requests quick summary only** (they accept risk)
For these cases, use standard code review instead.
---
## Red Flags (Stop and Investigate)
**Immediate escalation triggers:**
- Removed code from "security", "CVE", or "fix" commits
- Access control modifiers removed (onlyOwner, internal β external)
- Validation removed without replacement
- External calls added without checks
- High blast radius (50+ callers) + HIGH risk change
These patterns require adversarial analysis even in quick triage.
---
## Tips for Best Results
**Do:**
- Start with git blame for removed code
- Calculate blast radius early to prioritize
- Generate concrete attack scenarios
- Reference specific line numbers and commits
- Be honest about coverage limitations
- Always generate the output file
**Don't:**
- Skip git history analysis
- Make generic findings without evidence
- Claim full analysis when time-limited
- Forget to check test coverage
- Miss high blast radius changes
- Output report only to chat (file required)
---
## Supporting Documentation
- **[methodology.md](methodology.md)** - Detailed phase-by-phase workflow (Phases 0-4)
- **[adversarial.md](adversarial.md)** - Attacker modeling and exploit scenarios (Phase 5)
- **[reporting.md](reporting.md)** - Report structure and formatting (Phase 6)
- **[patterns.md](patterns.md)** - Common vulnerability patterns reference
---
**For first-time users:** Start with [methodology.md](methodology.md) to understand the complete workflow.
**For experienced users:** Use this page's Quick Reference and Decision Tree to navigate directly to needed content.
How to Use This Skill Unit
Option A: Project-Specific (Recommended)
- Click "Download" above
- In your project, create the directory:
.agent/skills/differential-review/ - Save the file as
SKILL.md - The agent will automatically discover the skill based on its description.
Option B: Global Installation (All Agents)
Save the file to these locations to make it available across all projects:
- Claude Code:
~/.claude/skills/trailofbits/skills/differential-review/SKILL.md - Cursor:
~/.cursor/skills/trailofbits/skills/differential-review/SKILL.md - Antigravity:
~/.gemini/antigravity/skills/trailofbits/skills/differential-review/SKILL.md
π Install with CLI:npx skills add trailofbits/skills