[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-trail-of-bits-differential-review":3,"mdc--hf8cmz-key":38,"related-repo-trail-of-bits-differential-review":1016,"related-org-trail-of-bits-differential-review":1112},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":26,"repoUrl":27,"updatedAt":28,"license":29,"forks":30,"topics":31,"repo":33,"sourceUrl":36,"mdContent":37},"differential-review","perform security-focused differential code reviews","Performs security-focused differential review of code changes (PRs, commits, diffs). Adapts analysis depth to codebase size, uses git history for context, calculates blast radius, checks test coverage, and generates comprehensive markdown reports. Automatically detects and prevents security regressions.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"trail-of-bits","Trail of Bits","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Ftrail-of-bits.png","trailofbits",[13,17,20,23],{"name":14,"slug":15,"type":16},"Security","security","tag",{"name":18,"slug":19,"type":16},"Code Review","code-review",{"name":21,"slug":22,"type":16},"Git","git",{"name":24,"slug":25,"type":16},"Code Analysis","code-analysis",6139,"https:\u002F\u002Fgithub.com\u002Ftrailofbits\u002Fskills","2026-07-18T05:47:52.134934",null,541,[32],"agent-skills",{"repoUrl":27,"stars":26,"forks":30,"topics":34,"description":35},[32],"Trail of Bits Claude Code skills for security research, vulnerability detection, and audit workflows","https:\u002F\u002Fgithub.com\u002Ftrailofbits\u002Fskills\u002Ftree\u002FHEAD\u002Fplugins\u002Fdifferential-review\u002Fskills\u002Fdifferential-review","---\nname: differential-review\ndescription: >\n  Performs security-focused differential review of code changes (PRs, commits, diffs).\n  Adapts analysis depth to codebase size, uses git history for context, calculates\n  blast radius, checks test coverage, and generates comprehensive markdown reports.\n  Automatically detects and prevents security regressions.\nallowed-tools: Read Write Grep Glob Bash\n---\n\n# Differential Security Review\n\nSecurity-focused code review for PRs, commits, and diffs.\n\n## Core Principles\n\n1. **Risk-First**: Focus on auth, crypto, value transfer, external calls\n2. **Evidence-Based**: Every finding backed by git history, line numbers, attack scenarios\n3. **Adaptive**: Scale to codebase size (SMALL\u002FMEDIUM\u002FLARGE)\n4. **Honest**: Explicitly state coverage limits and confidence level\n5. **Output-Driven**: Always generate comprehensive markdown report file\n\n---\n\n## Rationalizations (Do Not Skip)\n\n| Rationalization | Why It's Wrong | Required Action |\n|-----------------|----------------|-----------------|\n| \"Small PR, quick review\" | Heartbleed was 2 lines | Classify by RISK, not size |\n| \"I know this codebase\" | Familiarity breeds blind spots | Build explicit baseline context |\n| \"Git history takes too long\" | History reveals regressions | Never skip Phase 1 |\n| \"Blast radius is obvious\" | You'll miss transitive callers | Calculate quantitatively |\n| \"No tests = not my problem\" | Missing tests = elevated risk rating | Flag in report, elevate severity |\n| \"Just a refactor, no security impact\" | Refactors break invariants | Analyze as HIGH until proven LOW |\n| \"I'll explain verbally\" | No artifact = findings lost | Always write report |\n\n---\n\n## Quick Reference\n\n### Codebase Size Strategy\n\n| Codebase Size | Strategy | Approach |\n|---------------|----------|----------|\n| SMALL (\u003C20 files) | DEEP | Read all deps, full git blame |\n| MEDIUM (20-200) | FOCUSED | 1-hop deps, priority files |\n| LARGE (200+) | SURGICAL | Critical paths only |\n\n### Risk Level Triggers\n\n| Risk Level | Triggers |\n|------------|----------|\n| HIGH | Auth, crypto, external calls, value transfer, validation removal |\n| MEDIUM | Business logic, state changes, new public APIs |\n| LOW | Comments, tests, UI, logging |\n\n---\n\n## Workflow Overview\n\n```\nPre-Analysis → Phase 0: Triage → Phase 1: Code Analysis → Phase 2: Test Coverage\n    ↓              ↓                    ↓                        ↓\nPhase 3: Blast Radius → Phase 4: Deep Context → Phase 5: Adversarial → Phase 6: Report\n```\n\n---\n\n## Decision Tree\n\n**Starting a review?**\n\n```\n├─ Need detailed phase-by-phase methodology?\n│  └─ Read: methodology.md\n│     (Pre-Analysis + Phases 0-4: triage, code analysis, test coverage, blast radius)\n│\n├─ Analyzing HIGH RISK change?\n│  ├─ Read: adversarial.md\n│  │  (Phase 5: Attacker modeling, exploit scenarios, exploitability rating)\n│  └─ Or delegate to: adversarial-modeler agent\n│     (Autonomous attacker modeling with concrete exploit scenarios)\n│\n├─ Writing the final report?\n│  └─ Read: reporting.md\n│     (Phase 6: Report structure, templates, formatting guidelines)\n│\n├─ Looking for specific vulnerability patterns?\n│  └─ Read: patterns.md\n│     (Regressions, reentrancy, access control, overflow, etc.)\n│\n└─ Quick triage only?\n   └─ Use Quick Reference above, skip detailed docs\n```\n\n---\n\n## Agents\n\n**`adversarial-modeler`** — Models attacker perspectives and builds exploit\nscenarios for HIGH RISK code changes. Follows the 5-step adversarial\nmethodology (attacker model, attack vectors, exploitability rating, exploit\nscenario, baseline cross-reference) and produces structured vulnerability\nreports. Delegate to this agent when Phase 5 analysis is needed on high-risk\nchanges.\n\n---\n\n## Quality Checklist\n\nBefore delivering:\n\n- [ ] All changed files analyzed\n- [ ] Git blame on removed security code\n- [ ] Blast radius calculated for HIGH risk\n- [ ] Attack scenarios are concrete (not generic)\n- [ ] Findings reference specific line numbers + commits\n- [ ] Report file generated\n- [ ] User notified with summary\n\n---\n\n## Integration\n\n**audit-context-building skill:**\n- Pre-Analysis: Build baseline context\n- Phase 4: Deep context on HIGH RISK changes\n\n**issue-writer skill:**\n- Transform findings into formal audit reports\n- Command: `issue-writer --input DIFFERENTIAL_REVIEW_REPORT.md --format audit-report`\n\n---\n\n## Example Usage\n\n### Quick Triage (Small PR)\n```\nInput: 5 file PR, 2 HIGH RISK files\nStrategy: Use Quick Reference\n1. Classify risk level per file (2 HIGH, 3 LOW)\n2. Focus on 2 HIGH files only\n3. Git blame removed code\n4. Generate minimal report\nTime: ~30 minutes\n```\n\n### Standard Review (Medium Codebase)\n```\nInput: 80 files, 12 HIGH RISK changes\nStrategy: FOCUSED (see methodology.md)\n1. Full workflow on HIGH RISK files\n2. Surface scan on MEDIUM\n3. Skip LOW risk files\n4. Complete report with all sections\nTime: ~3-4 hours\n```\n\n### Deep Audit (Large, Critical Change)\n```\nInput: 450 files, auth system rewrite\nStrategy: SURGICAL + audit-context-building\n1. Baseline context with audit-context-building\n2. Deep analysis on auth changes only\n3. Blast radius analysis\n4. Adversarial modeling\n5. Comprehensive report\nTime: ~6-8 hours\n```\n\n---\n\n## When NOT to Use This Skill\n\n- **Greenfield code** (no baseline to compare)\n- **Documentation-only changes** (no security impact)\n- **Formatting\u002Flinting** (cosmetic changes)\n- **User explicitly requests quick summary only** (they accept risk)\n\nFor these cases, use standard code review instead.\n\n---\n\n## Red Flags (Stop and Investigate)\n\n**Immediate escalation triggers:**\n- Removed code from \"security\", \"CVE\", or \"fix\" commits\n- Access control modifiers removed (onlyOwner, internal → external)\n- Validation removed without replacement\n- External calls added without checks\n- High blast radius (50+ callers) + HIGH risk change\n\nThese patterns require adversarial analysis even in quick triage.\n\n---\n\n## Tips for Best Results\n\n**Do:**\n- Start with git blame for removed code\n- Calculate blast radius early to prioritize\n- Generate concrete attack scenarios\n- Reference specific line numbers and commits\n- Be honest about coverage limitations\n- Always generate the output file\n\n**Don't:**\n- Skip git history analysis\n- Make generic findings without evidence\n- Claim full analysis when time-limited\n- Forget to check test coverage\n- Miss high blast radius changes\n- Output report only to chat (file required)\n\n---\n\n## Supporting Documentation\n\n- **[methodology.md](methodology.md)** - Detailed phase-by-phase workflow (Phases 0-4)\n- **[adversarial.md](adversarial.md)** - Attacker modeling and exploit scenarios (Phase 5)\n- **[reporting.md](reporting.md)** - Report structure and formatting (Phase 6)\n- **[patterns.md](patterns.md)** - Common vulnerability patterns reference\n\n---\n\n**For first-time users:** Start with [methodology.md](methodology.md) to understand the complete workflow.\n\n**For experienced users:** Use this page's Quick Reference and Decision Tree to navigate directly to needed content.\n",{"data":39,"body":41},{"name":4,"description":6,"allowed-tools":40},"Read Write Grep Glob Bash",{"type":42,"children":43},"root",[44,53,59,66,122,126,132,291,294,300,307,388,394,455,458,464,477,480,486,494,503,506,512,526,529,535,540,613,616,622,630,643,651,670,673,679,685,694,700,709,715,724,727,733,776,781,784,790,798,826,831,834,840,848,881,889,922,925,931,987,990,1006],{"type":45,"tag":46,"props":47,"children":49},"element","h1",{"id":48},"differential-security-review",[50],{"type":51,"value":52},"text","Differential Security Review",{"type":45,"tag":54,"props":55,"children":56},"p",{},[57],{"type":51,"value":58},"Security-focused code review for PRs, commits, and diffs.",{"type":45,"tag":60,"props":61,"children":63},"h2",{"id":62},"core-principles",[64],{"type":51,"value":65},"Core Principles",{"type":45,"tag":67,"props":68,"children":69},"ol",{},[70,82,92,102,112],{"type":45,"tag":71,"props":72,"children":73},"li",{},[74,80],{"type":45,"tag":75,"props":76,"children":77},"strong",{},[78],{"type":51,"value":79},"Risk-First",{"type":51,"value":81},": Focus on auth, crypto, value transfer, external calls",{"type":45,"tag":71,"props":83,"children":84},{},[85,90],{"type":45,"tag":75,"props":86,"children":87},{},[88],{"type":51,"value":89},"Evidence-Based",{"type":51,"value":91},": Every finding backed by git history, line numbers, attack scenarios",{"type":45,"tag":71,"props":93,"children":94},{},[95,100],{"type":45,"tag":75,"props":96,"children":97},{},[98],{"type":51,"value":99},"Adaptive",{"type":51,"value":101},": Scale to codebase size (SMALL\u002FMEDIUM\u002FLARGE)",{"type":45,"tag":71,"props":103,"children":104},{},[105,110],{"type":45,"tag":75,"props":106,"children":107},{},[108],{"type":51,"value":109},"Honest",{"type":51,"value":111},": Explicitly state coverage limits and confidence level",{"type":45,"tag":71,"props":113,"children":114},{},[115,120],{"type":45,"tag":75,"props":116,"children":117},{},[118],{"type":51,"value":119},"Output-Driven",{"type":51,"value":121},": Always generate comprehensive markdown report file",{"type":45,"tag":123,"props":124,"children":125},"hr",{},[],{"type":45,"tag":60,"props":127,"children":129},{"id":128},"rationalizations-do-not-skip",[130],{"type":51,"value":131},"Rationalizations (Do Not Skip)",{"type":45,"tag":133,"props":134,"children":135},"table",{},[136,160],{"type":45,"tag":137,"props":138,"children":139},"thead",{},[140],{"type":45,"tag":141,"props":142,"children":143},"tr",{},[144,150,155],{"type":45,"tag":145,"props":146,"children":147},"th",{},[148],{"type":51,"value":149},"Rationalization",{"type":45,"tag":145,"props":151,"children":152},{},[153],{"type":51,"value":154},"Why It's Wrong",{"type":45,"tag":145,"props":156,"children":157},{},[158],{"type":51,"value":159},"Required Action",{"type":45,"tag":161,"props":162,"children":163},"tbody",{},[164,183,201,219,237,255,273],{"type":45,"tag":141,"props":165,"children":166},{},[167,173,178],{"type":45,"tag":168,"props":169,"children":170},"td",{},[171],{"type":51,"value":172},"\"Small PR, quick review\"",{"type":45,"tag":168,"props":174,"children":175},{},[176],{"type":51,"value":177},"Heartbleed was 2 lines",{"type":45,"tag":168,"props":179,"children":180},{},[181],{"type":51,"value":182},"Classify by RISK, not size",{"type":45,"tag":141,"props":184,"children":185},{},[186,191,196],{"type":45,"tag":168,"props":187,"children":188},{},[189],{"type":51,"value":190},"\"I know this codebase\"",{"type":45,"tag":168,"props":192,"children":193},{},[194],{"type":51,"value":195},"Familiarity breeds blind spots",{"type":45,"tag":168,"props":197,"children":198},{},[199],{"type":51,"value":200},"Build explicit baseline context",{"type":45,"tag":141,"props":202,"children":203},{},[204,209,214],{"type":45,"tag":168,"props":205,"children":206},{},[207],{"type":51,"value":208},"\"Git history takes too long\"",{"type":45,"tag":168,"props":210,"children":211},{},[212],{"type":51,"value":213},"History reveals regressions",{"type":45,"tag":168,"props":215,"children":216},{},[217],{"type":51,"value":218},"Never skip Phase 1",{"type":45,"tag":141,"props":220,"children":221},{},[222,227,232],{"type":45,"tag":168,"props":223,"children":224},{},[225],{"type":51,"value":226},"\"Blast radius is obvious\"",{"type":45,"tag":168,"props":228,"children":229},{},[230],{"type":51,"value":231},"You'll miss transitive callers",{"type":45,"tag":168,"props":233,"children":234},{},[235],{"type":51,"value":236},"Calculate quantitatively",{"type":45,"tag":141,"props":238,"children":239},{},[240,245,250],{"type":45,"tag":168,"props":241,"children":242},{},[243],{"type":51,"value":244},"\"No tests = not my problem\"",{"type":45,"tag":168,"props":246,"children":247},{},[248],{"type":51,"value":249},"Missing tests = elevated risk rating",{"type":45,"tag":168,"props":251,"children":252},{},[253],{"type":51,"value":254},"Flag in report, elevate severity",{"type":45,"tag":141,"props":256,"children":257},{},[258,263,268],{"type":45,"tag":168,"props":259,"children":260},{},[261],{"type":51,"value":262},"\"Just a refactor, no security impact\"",{"type":45,"tag":168,"props":264,"children":265},{},[266],{"type":51,"value":267},"Refactors break invariants",{"type":45,"tag":168,"props":269,"children":270},{},[271],{"type":51,"value":272},"Analyze as HIGH until proven LOW",{"type":45,"tag":141,"props":274,"children":275},{},[276,281,286],{"type":45,"tag":168,"props":277,"children":278},{},[279],{"type":51,"value":280},"\"I'll explain verbally\"",{"type":45,"tag":168,"props":282,"children":283},{},[284],{"type":51,"value":285},"No artifact = findings lost",{"type":45,"tag":168,"props":287,"children":288},{},[289],{"type":51,"value":290},"Always write report",{"type":45,"tag":123,"props":292,"children":293},{},[],{"type":45,"tag":60,"props":295,"children":297},{"id":296},"quick-reference",[298],{"type":51,"value":299},"Quick Reference",{"type":45,"tag":301,"props":302,"children":304},"h3",{"id":303},"codebase-size-strategy",[305],{"type":51,"value":306},"Codebase Size Strategy",{"type":45,"tag":133,"props":308,"children":309},{},[310,331],{"type":45,"tag":137,"props":311,"children":312},{},[313],{"type":45,"tag":141,"props":314,"children":315},{},[316,321,326],{"type":45,"tag":145,"props":317,"children":318},{},[319],{"type":51,"value":320},"Codebase Size",{"type":45,"tag":145,"props":322,"children":323},{},[324],{"type":51,"value":325},"Strategy",{"type":45,"tag":145,"props":327,"children":328},{},[329],{"type":51,"value":330},"Approach",{"type":45,"tag":161,"props":332,"children":333},{},[334,352,370],{"type":45,"tag":141,"props":335,"children":336},{},[337,342,347],{"type":45,"tag":168,"props":338,"children":339},{},[340],{"type":51,"value":341},"SMALL (\u003C20 files)",{"type":45,"tag":168,"props":343,"children":344},{},[345],{"type":51,"value":346},"DEEP",{"type":45,"tag":168,"props":348,"children":349},{},[350],{"type":51,"value":351},"Read all deps, full git blame",{"type":45,"tag":141,"props":353,"children":354},{},[355,360,365],{"type":45,"tag":168,"props":356,"children":357},{},[358],{"type":51,"value":359},"MEDIUM (20-200)",{"type":45,"tag":168,"props":361,"children":362},{},[363],{"type":51,"value":364},"FOCUSED",{"type":45,"tag":168,"props":366,"children":367},{},[368],{"type":51,"value":369},"1-hop deps, priority files",{"type":45,"tag":141,"props":371,"children":372},{},[373,378,383],{"type":45,"tag":168,"props":374,"children":375},{},[376],{"type":51,"value":377},"LARGE (200+)",{"type":45,"tag":168,"props":379,"children":380},{},[381],{"type":51,"value":382},"SURGICAL",{"type":45,"tag":168,"props":384,"children":385},{},[386],{"type":51,"value":387},"Critical paths only",{"type":45,"tag":301,"props":389,"children":391},{"id":390},"risk-level-triggers",[392],{"type":51,"value":393},"Risk Level Triggers",{"type":45,"tag":133,"props":395,"children":396},{},[397,413],{"type":45,"tag":137,"props":398,"children":399},{},[400],{"type":45,"tag":141,"props":401,"children":402},{},[403,408],{"type":45,"tag":145,"props":404,"children":405},{},[406],{"type":51,"value":407},"Risk Level",{"type":45,"tag":145,"props":409,"children":410},{},[411],{"type":51,"value":412},"Triggers",{"type":45,"tag":161,"props":414,"children":415},{},[416,429,442],{"type":45,"tag":141,"props":417,"children":418},{},[419,424],{"type":45,"tag":168,"props":420,"children":421},{},[422],{"type":51,"value":423},"HIGH",{"type":45,"tag":168,"props":425,"children":426},{},[427],{"type":51,"value":428},"Auth, crypto, external calls, value transfer, validation removal",{"type":45,"tag":141,"props":430,"children":431},{},[432,437],{"type":45,"tag":168,"props":433,"children":434},{},[435],{"type":51,"value":436},"MEDIUM",{"type":45,"tag":168,"props":438,"children":439},{},[440],{"type":51,"value":441},"Business logic, state changes, new public APIs",{"type":45,"tag":141,"props":443,"children":444},{},[445,450],{"type":45,"tag":168,"props":446,"children":447},{},[448],{"type":51,"value":449},"LOW",{"type":45,"tag":168,"props":451,"children":452},{},[453],{"type":51,"value":454},"Comments, tests, UI, logging",{"type":45,"tag":123,"props":456,"children":457},{},[],{"type":45,"tag":60,"props":459,"children":461},{"id":460},"workflow-overview",[462],{"type":51,"value":463},"Workflow Overview",{"type":45,"tag":465,"props":466,"children":470},"pre",{"className":467,"code":469,"language":51},[468],"language-text","Pre-Analysis → Phase 0: Triage → Phase 1: Code Analysis → Phase 2: Test Coverage\n    ↓              ↓                    ↓                        ↓\nPhase 3: Blast Radius → Phase 4: Deep Context → Phase 5: Adversarial → Phase 6: Report\n",[471],{"type":45,"tag":472,"props":473,"children":475},"code",{"__ignoreMap":474},"",[476],{"type":51,"value":469},{"type":45,"tag":123,"props":478,"children":479},{},[],{"type":45,"tag":60,"props":481,"children":483},{"id":482},"decision-tree",[484],{"type":51,"value":485},"Decision Tree",{"type":45,"tag":54,"props":487,"children":488},{},[489],{"type":45,"tag":75,"props":490,"children":491},{},[492],{"type":51,"value":493},"Starting a review?",{"type":45,"tag":465,"props":495,"children":498},{"className":496,"code":497,"language":51},[468],"├─ Need detailed phase-by-phase methodology?\n│  └─ Read: methodology.md\n│     (Pre-Analysis + Phases 0-4: triage, code analysis, test coverage, blast radius)\n│\n├─ Analyzing HIGH RISK change?\n│  ├─ Read: adversarial.md\n│  │  (Phase 5: Attacker modeling, exploit scenarios, exploitability rating)\n│  └─ Or delegate to: adversarial-modeler agent\n│     (Autonomous attacker modeling with concrete exploit scenarios)\n│\n├─ Writing the final report?\n│  └─ Read: reporting.md\n│     (Phase 6: Report structure, templates, formatting guidelines)\n│\n├─ Looking for specific vulnerability patterns?\n│  └─ Read: patterns.md\n│     (Regressions, reentrancy, access control, overflow, etc.)\n│\n└─ Quick triage only?\n   └─ Use Quick Reference above, skip detailed docs\n",[499],{"type":45,"tag":472,"props":500,"children":501},{"__ignoreMap":474},[502],{"type":51,"value":497},{"type":45,"tag":123,"props":504,"children":505},{},[],{"type":45,"tag":60,"props":507,"children":509},{"id":508},"agents",[510],{"type":51,"value":511},"Agents",{"type":45,"tag":54,"props":513,"children":514},{},[515,524],{"type":45,"tag":75,"props":516,"children":517},{},[518],{"type":45,"tag":472,"props":519,"children":521},{"className":520},[],[522],{"type":51,"value":523},"adversarial-modeler",{"type":51,"value":525}," — Models attacker perspectives and builds exploit\nscenarios for HIGH RISK code changes. Follows the 5-step adversarial\nmethodology (attacker model, attack vectors, exploitability rating, exploit\nscenario, baseline cross-reference) and produces structured vulnerability\nreports. Delegate to this agent when Phase 5 analysis is needed on high-risk\nchanges.",{"type":45,"tag":123,"props":527,"children":528},{},[],{"type":45,"tag":60,"props":530,"children":532},{"id":531},"quality-checklist",[533],{"type":51,"value":534},"Quality Checklist",{"type":45,"tag":54,"props":536,"children":537},{},[538],{"type":51,"value":539},"Before delivering:",{"type":45,"tag":541,"props":542,"children":545},"ul",{"className":543},[544],"contains-task-list",[546,559,568,577,586,595,604],{"type":45,"tag":71,"props":547,"children":550},{"className":548},[549],"task-list-item",[551,557],{"type":45,"tag":552,"props":553,"children":556},"input",{"disabled":554,"type":555},true,"checkbox",[],{"type":51,"value":558}," All changed files analyzed",{"type":45,"tag":71,"props":560,"children":562},{"className":561},[549],[563,566],{"type":45,"tag":552,"props":564,"children":565},{"disabled":554,"type":555},[],{"type":51,"value":567}," Git blame on removed security code",{"type":45,"tag":71,"props":569,"children":571},{"className":570},[549],[572,575],{"type":45,"tag":552,"props":573,"children":574},{"disabled":554,"type":555},[],{"type":51,"value":576}," Blast radius calculated for HIGH risk",{"type":45,"tag":71,"props":578,"children":580},{"className":579},[549],[581,584],{"type":45,"tag":552,"props":582,"children":583},{"disabled":554,"type":555},[],{"type":51,"value":585}," Attack scenarios are concrete (not generic)",{"type":45,"tag":71,"props":587,"children":589},{"className":588},[549],[590,593],{"type":45,"tag":552,"props":591,"children":592},{"disabled":554,"type":555},[],{"type":51,"value":594}," Findings reference specific line numbers + commits",{"type":45,"tag":71,"props":596,"children":598},{"className":597},[549],[599,602],{"type":45,"tag":552,"props":600,"children":601},{"disabled":554,"type":555},[],{"type":51,"value":603}," Report file generated",{"type":45,"tag":71,"props":605,"children":607},{"className":606},[549],[608,611],{"type":45,"tag":552,"props":609,"children":610},{"disabled":554,"type":555},[],{"type":51,"value":612}," User notified with summary",{"type":45,"tag":123,"props":614,"children":615},{},[],{"type":45,"tag":60,"props":617,"children":619},{"id":618},"integration",[620],{"type":51,"value":621},"Integration",{"type":45,"tag":54,"props":623,"children":624},{},[625],{"type":45,"tag":75,"props":626,"children":627},{},[628],{"type":51,"value":629},"audit-context-building skill:",{"type":45,"tag":541,"props":631,"children":632},{},[633,638],{"type":45,"tag":71,"props":634,"children":635},{},[636],{"type":51,"value":637},"Pre-Analysis: Build baseline context",{"type":45,"tag":71,"props":639,"children":640},{},[641],{"type":51,"value":642},"Phase 4: Deep context on HIGH RISK changes",{"type":45,"tag":54,"props":644,"children":645},{},[646],{"type":45,"tag":75,"props":647,"children":648},{},[649],{"type":51,"value":650},"issue-writer skill:",{"type":45,"tag":541,"props":652,"children":653},{},[654,659],{"type":45,"tag":71,"props":655,"children":656},{},[657],{"type":51,"value":658},"Transform findings into formal audit reports",{"type":45,"tag":71,"props":660,"children":661},{},[662,664],{"type":51,"value":663},"Command: ",{"type":45,"tag":472,"props":665,"children":667},{"className":666},[],[668],{"type":51,"value":669},"issue-writer --input DIFFERENTIAL_REVIEW_REPORT.md --format audit-report",{"type":45,"tag":123,"props":671,"children":672},{},[],{"type":45,"tag":60,"props":674,"children":676},{"id":675},"example-usage",[677],{"type":51,"value":678},"Example Usage",{"type":45,"tag":301,"props":680,"children":682},{"id":681},"quick-triage-small-pr",[683],{"type":51,"value":684},"Quick Triage (Small PR)",{"type":45,"tag":465,"props":686,"children":689},{"className":687,"code":688,"language":51},[468],"Input: 5 file PR, 2 HIGH RISK files\nStrategy: Use Quick Reference\n1. Classify risk level per file (2 HIGH, 3 LOW)\n2. Focus on 2 HIGH files only\n3. Git blame removed code\n4. Generate minimal report\nTime: ~30 minutes\n",[690],{"type":45,"tag":472,"props":691,"children":692},{"__ignoreMap":474},[693],{"type":51,"value":688},{"type":45,"tag":301,"props":695,"children":697},{"id":696},"standard-review-medium-codebase",[698],{"type":51,"value":699},"Standard Review (Medium Codebase)",{"type":45,"tag":465,"props":701,"children":704},{"className":702,"code":703,"language":51},[468],"Input: 80 files, 12 HIGH RISK changes\nStrategy: FOCUSED (see methodology.md)\n1. Full workflow on HIGH RISK files\n2. Surface scan on MEDIUM\n3. Skip LOW risk files\n4. Complete report with all sections\nTime: ~3-4 hours\n",[705],{"type":45,"tag":472,"props":706,"children":707},{"__ignoreMap":474},[708],{"type":51,"value":703},{"type":45,"tag":301,"props":710,"children":712},{"id":711},"deep-audit-large-critical-change",[713],{"type":51,"value":714},"Deep Audit (Large, Critical Change)",{"type":45,"tag":465,"props":716,"children":719},{"className":717,"code":718,"language":51},[468],"Input: 450 files, auth system rewrite\nStrategy: SURGICAL + audit-context-building\n1. Baseline context with audit-context-building\n2. Deep analysis on auth changes only\n3. Blast radius analysis\n4. Adversarial modeling\n5. Comprehensive report\nTime: ~6-8 hours\n",[720],{"type":45,"tag":472,"props":721,"children":722},{"__ignoreMap":474},[723],{"type":51,"value":718},{"type":45,"tag":123,"props":725,"children":726},{},[],{"type":45,"tag":60,"props":728,"children":730},{"id":729},"when-not-to-use-this-skill",[731],{"type":51,"value":732},"When NOT to Use This Skill",{"type":45,"tag":541,"props":734,"children":735},{},[736,746,756,766],{"type":45,"tag":71,"props":737,"children":738},{},[739,744],{"type":45,"tag":75,"props":740,"children":741},{},[742],{"type":51,"value":743},"Greenfield code",{"type":51,"value":745}," (no baseline to compare)",{"type":45,"tag":71,"props":747,"children":748},{},[749,754],{"type":45,"tag":75,"props":750,"children":751},{},[752],{"type":51,"value":753},"Documentation-only changes",{"type":51,"value":755}," (no security impact)",{"type":45,"tag":71,"props":757,"children":758},{},[759,764],{"type":45,"tag":75,"props":760,"children":761},{},[762],{"type":51,"value":763},"Formatting\u002Flinting",{"type":51,"value":765}," (cosmetic changes)",{"type":45,"tag":71,"props":767,"children":768},{},[769,774],{"type":45,"tag":75,"props":770,"children":771},{},[772],{"type":51,"value":773},"User explicitly requests quick summary only",{"type":51,"value":775}," (they accept risk)",{"type":45,"tag":54,"props":777,"children":778},{},[779],{"type":51,"value":780},"For these cases, use standard code review instead.",{"type":45,"tag":123,"props":782,"children":783},{},[],{"type":45,"tag":60,"props":785,"children":787},{"id":786},"red-flags-stop-and-investigate",[788],{"type":51,"value":789},"Red Flags (Stop and Investigate)",{"type":45,"tag":54,"props":791,"children":792},{},[793],{"type":45,"tag":75,"props":794,"children":795},{},[796],{"type":51,"value":797},"Immediate escalation triggers:",{"type":45,"tag":541,"props":799,"children":800},{},[801,806,811,816,821],{"type":45,"tag":71,"props":802,"children":803},{},[804],{"type":51,"value":805},"Removed code from \"security\", \"CVE\", or \"fix\" commits",{"type":45,"tag":71,"props":807,"children":808},{},[809],{"type":51,"value":810},"Access control modifiers removed (onlyOwner, internal → external)",{"type":45,"tag":71,"props":812,"children":813},{},[814],{"type":51,"value":815},"Validation removed without replacement",{"type":45,"tag":71,"props":817,"children":818},{},[819],{"type":51,"value":820},"External calls added without checks",{"type":45,"tag":71,"props":822,"children":823},{},[824],{"type":51,"value":825},"High blast radius (50+ callers) + HIGH risk change",{"type":45,"tag":54,"props":827,"children":828},{},[829],{"type":51,"value":830},"These patterns require adversarial analysis even in quick triage.",{"type":45,"tag":123,"props":832,"children":833},{},[],{"type":45,"tag":60,"props":835,"children":837},{"id":836},"tips-for-best-results",[838],{"type":51,"value":839},"Tips for Best Results",{"type":45,"tag":54,"props":841,"children":842},{},[843],{"type":45,"tag":75,"props":844,"children":845},{},[846],{"type":51,"value":847},"Do:",{"type":45,"tag":541,"props":849,"children":850},{},[851,856,861,866,871,876],{"type":45,"tag":71,"props":852,"children":853},{},[854],{"type":51,"value":855},"Start with git blame for removed code",{"type":45,"tag":71,"props":857,"children":858},{},[859],{"type":51,"value":860},"Calculate blast radius early to prioritize",{"type":45,"tag":71,"props":862,"children":863},{},[864],{"type":51,"value":865},"Generate concrete attack scenarios",{"type":45,"tag":71,"props":867,"children":868},{},[869],{"type":51,"value":870},"Reference specific line numbers and commits",{"type":45,"tag":71,"props":872,"children":873},{},[874],{"type":51,"value":875},"Be honest about coverage limitations",{"type":45,"tag":71,"props":877,"children":878},{},[879],{"type":51,"value":880},"Always generate the output file",{"type":45,"tag":54,"props":882,"children":883},{},[884],{"type":45,"tag":75,"props":885,"children":886},{},[887],{"type":51,"value":888},"Don't:",{"type":45,"tag":541,"props":890,"children":891},{},[892,897,902,907,912,917],{"type":45,"tag":71,"props":893,"children":894},{},[895],{"type":51,"value":896},"Skip git history analysis",{"type":45,"tag":71,"props":898,"children":899},{},[900],{"type":51,"value":901},"Make generic findings without evidence",{"type":45,"tag":71,"props":903,"children":904},{},[905],{"type":51,"value":906},"Claim full analysis when time-limited",{"type":45,"tag":71,"props":908,"children":909},{},[910],{"type":51,"value":911},"Forget to check test coverage",{"type":45,"tag":71,"props":913,"children":914},{},[915],{"type":51,"value":916},"Miss high blast radius changes",{"type":45,"tag":71,"props":918,"children":919},{},[920],{"type":51,"value":921},"Output report only to chat (file required)",{"type":45,"tag":123,"props":923,"children":924},{},[],{"type":45,"tag":60,"props":926,"children":928},{"id":927},"supporting-documentation",[929],{"type":51,"value":930},"Supporting Documentation",{"type":45,"tag":541,"props":932,"children":933},{},[934,948,961,974],{"type":45,"tag":71,"props":935,"children":936},{},[937,946],{"type":45,"tag":75,"props":938,"children":939},{},[940],{"type":45,"tag":941,"props":942,"children":944},"a",{"href":943},"methodology.md",[945],{"type":51,"value":943},{"type":51,"value":947}," - Detailed phase-by-phase workflow (Phases 0-4)",{"type":45,"tag":71,"props":949,"children":950},{},[951,959],{"type":45,"tag":75,"props":952,"children":953},{},[954],{"type":45,"tag":941,"props":955,"children":957},{"href":956},"adversarial.md",[958],{"type":51,"value":956},{"type":51,"value":960}," - Attacker modeling and exploit scenarios (Phase 5)",{"type":45,"tag":71,"props":962,"children":963},{},[964,972],{"type":45,"tag":75,"props":965,"children":966},{},[967],{"type":45,"tag":941,"props":968,"children":970},{"href":969},"reporting.md",[971],{"type":51,"value":969},{"type":51,"value":973}," - Report structure and formatting (Phase 6)",{"type":45,"tag":71,"props":975,"children":976},{},[977,985],{"type":45,"tag":75,"props":978,"children":979},{},[980],{"type":45,"tag":941,"props":981,"children":983},{"href":982},"patterns.md",[984],{"type":51,"value":982},{"type":51,"value":986}," - Common vulnerability patterns reference",{"type":45,"tag":123,"props":988,"children":989},{},[],{"type":45,"tag":54,"props":991,"children":992},{},[993,998,1000,1004],{"type":45,"tag":75,"props":994,"children":995},{},[996],{"type":51,"value":997},"For first-time users:",{"type":51,"value":999}," Start with ",{"type":45,"tag":941,"props":1001,"children":1002},{"href":943},[1003],{"type":51,"value":943},{"type":51,"value":1005}," to understand the complete workflow.",{"type":45,"tag":54,"props":1007,"children":1008},{},[1009,1014],{"type":45,"tag":75,"props":1010,"children":1011},{},[1012],{"type":51,"value":1013},"For experienced users:",{"type":51,"value":1015}," Use this page's Quick Reference and Decision Tree to navigate directly to needed content.",{"items":1017,"total":1111},[1018,1035,1045,1061,1076,1089,1101],{"slug":1019,"name":1019,"fn":1020,"description":1021,"org":1022,"tags":1023,"stars":26,"repoUrl":27,"updatedAt":1034},"address-sanitizer","detect memory errors during fuzzing","AddressSanitizer detects memory errors during fuzzing. Use when fuzzing C\u002FC++ code to find buffer overflows and use-after-free bugs.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1024,1027,1030,1031],{"name":1025,"slug":1026,"type":16},"C#","c",{"name":1028,"slug":1029,"type":16},"Debugging","debugging",{"name":14,"slug":15,"type":16},{"name":1032,"slug":1033,"type":16},"Testing","testing","2026-07-17T06:05:14.925095",{"slug":1036,"name":1036,"fn":1037,"description":1038,"org":1039,"tags":1040,"stars":26,"repoUrl":27,"updatedAt":1044},"aflpp","perform multi-core fuzzing of C\u002FC++ projects","AFL++ is a fork of AFL with better fuzzing performance and advanced features. Use for multi-core fuzzing of C\u002FC++ projects.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1041,1042,1043],{"name":1025,"slug":1026,"type":16},{"name":14,"slug":15,"type":16},{"name":1032,"slug":1033,"type":16},"2026-07-17T06:05:12.433192",{"slug":1046,"name":1046,"fn":1047,"description":1048,"org":1049,"tags":1050,"stars":26,"repoUrl":27,"updatedAt":1060},"agentic-actions-auditor","audit GitHub Actions for security vulnerabilities","Audits GitHub Actions workflows for security vulnerabilities in AI agent integrations including Claude Code Action, Gemini CLI, OpenAI Codex, and GitHub AI Inference. Detects attack vectors where attacker-controlled input reaches AI agents running in CI\u002FCD pipelines, including env var intermediary patterns, direct expression injection, dangerous sandbox configurations, and wildcard user allowlists. Use when reviewing workflow files that invoke AI coding agents, auditing CI\u002FCD pipeline security for prompt injection risks, or evaluating agentic action configurations.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1051,1052,1055,1056,1059],{"name":511,"slug":508,"type":16},{"name":1053,"slug":1054,"type":16},"CI\u002FCD","ci-cd",{"name":24,"slug":25,"type":16},{"name":1057,"slug":1058,"type":16},"GitHub Actions","github-actions",{"name":14,"slug":15,"type":16},"2026-07-18T05:47:48.564744",{"slug":1062,"name":1062,"fn":1063,"description":1064,"org":1065,"tags":1066,"stars":26,"repoUrl":27,"updatedAt":1075},"algorand-vulnerability-scanner","scan Algorand smart contracts for vulnerabilities","Scans Algorand smart contracts for 11 common vulnerabilities including rekeying attacks, unchecked transaction fees, missing field validations, and access control issues. Use when auditing Algorand projects (TEAL\u002FPyTeal).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1067,1070,1071,1072],{"name":1068,"slug":1069,"type":16},"Audit","audit",{"name":24,"slug":25,"type":16},{"name":14,"slug":15,"type":16},{"name":1073,"slug":1074,"type":16},"Smart Contracts","smart-contracts","2026-07-18T05:47:43.989063",{"slug":1077,"name":1077,"fn":1078,"description":1079,"org":1080,"tags":1081,"stars":26,"repoUrl":27,"updatedAt":1088},"ask-questions-if-underspecified","clarify requirements before implementation","Clarify requirements before implementing. Use when serious doubts arise.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1082,1085],{"name":1083,"slug":1084,"type":16},"Engineering","engineering",{"name":1086,"slug":1087,"type":16},"Productivity","productivity","2026-07-17T06:05:33.543262",{"slug":1090,"name":1090,"fn":1091,"description":1092,"org":1093,"tags":1094,"stars":26,"repoUrl":27,"updatedAt":1100},"atheris","fuzz Python code with Atheris","Atheris is a coverage-guided Python fuzzer based on libFuzzer. Use for fuzzing pure Python code and Python C extensions.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1095,1098,1099],{"name":1096,"slug":1097,"type":16},"Python","python",{"name":14,"slug":15,"type":16},{"name":1032,"slug":1033,"type":16},"2026-07-17T06:05:14.575191",{"slug":1102,"name":1102,"fn":1103,"description":1104,"org":1105,"tags":1106,"stars":26,"repoUrl":27,"updatedAt":1110},"audit-augmentation","augment code graphs with audit findings","Augments Trailmark code graphs with external audit findings from SARIF static analysis results, weAudit annotation files, and version-gated Trailmark 0.4.x binary-analysis graph exports. Maps findings to graph nodes by file and line overlap, creates severity-based subgraphs, and enables cross-referencing findings with pre-analysis data (blast radius, taint, etc.). Use when projecting SARIF results onto a code graph, overlaying weAudit annotations, importing binary graph findings, cross-referencing Semgrep, CodeQL, or binary-analysis findings with call graph data, or visualizing audit findings in the context of code structure.\n",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1107,1108,1109],{"name":1068,"slug":1069,"type":16},{"name":24,"slug":25,"type":16},{"name":14,"slug":15,"type":16},"2026-08-01T05:44:54.920542",77,{"items":1113,"total":1217},[1114,1121,1127,1135,1142,1147,1153,1159,1172,1183,1195,1206],{"slug":1019,"name":1019,"fn":1020,"description":1021,"org":1115,"tags":1116,"stars":26,"repoUrl":27,"updatedAt":1034},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1117,1118,1119,1120],{"name":1025,"slug":1026,"type":16},{"name":1028,"slug":1029,"type":16},{"name":14,"slug":15,"type":16},{"name":1032,"slug":1033,"type":16},{"slug":1036,"name":1036,"fn":1037,"description":1038,"org":1122,"tags":1123,"stars":26,"repoUrl":27,"updatedAt":1044},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1124,1125,1126],{"name":1025,"slug":1026,"type":16},{"name":14,"slug":15,"type":16},{"name":1032,"slug":1033,"type":16},{"slug":1046,"name":1046,"fn":1047,"description":1048,"org":1128,"tags":1129,"stars":26,"repoUrl":27,"updatedAt":1060},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1130,1131,1132,1133,1134],{"name":511,"slug":508,"type":16},{"name":1053,"slug":1054,"type":16},{"name":24,"slug":25,"type":16},{"name":1057,"slug":1058,"type":16},{"name":14,"slug":15,"type":16},{"slug":1062,"name":1062,"fn":1063,"description":1064,"org":1136,"tags":1137,"stars":26,"repoUrl":27,"updatedAt":1075},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1138,1139,1140,1141],{"name":1068,"slug":1069,"type":16},{"name":24,"slug":25,"type":16},{"name":14,"slug":15,"type":16},{"name":1073,"slug":1074,"type":16},{"slug":1077,"name":1077,"fn":1078,"description":1079,"org":1143,"tags":1144,"stars":26,"repoUrl":27,"updatedAt":1088},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1145,1146],{"name":1083,"slug":1084,"type":16},{"name":1086,"slug":1087,"type":16},{"slug":1090,"name":1090,"fn":1091,"description":1092,"org":1148,"tags":1149,"stars":26,"repoUrl":27,"updatedAt":1100},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1150,1151,1152],{"name":1096,"slug":1097,"type":16},{"name":14,"slug":15,"type":16},{"name":1032,"slug":1033,"type":16},{"slug":1102,"name":1102,"fn":1103,"description":1104,"org":1154,"tags":1155,"stars":26,"repoUrl":27,"updatedAt":1110},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1156,1157,1158],{"name":1068,"slug":1069,"type":16},{"name":24,"slug":25,"type":16},{"name":14,"slug":15,"type":16},{"slug":1160,"name":1160,"fn":1161,"description":1162,"org":1163,"tags":1164,"stars":26,"repoUrl":27,"updatedAt":1171},"audit-context-building","build architectural context for code analysis","Enables ultra-granular, line-by-line code analysis to build deep architectural context before vulnerability or bug finding.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1165,1168,1169,1170],{"name":1166,"slug":1167,"type":16},"Architecture","architecture",{"name":1068,"slug":1069,"type":16},{"name":24,"slug":25,"type":16},{"name":1083,"slug":1084,"type":16},"2026-07-18T05:47:40.122449",{"slug":1173,"name":1173,"fn":1174,"description":1175,"org":1176,"tags":1177,"stars":26,"repoUrl":27,"updatedAt":1182},"audit-prep-assistant","prepare codebases for security audits","Prepares codebases for security review using Trail of Bits' checklist. Helps set review goals, runs static analysis tools, increases test coverage, removes dead code, ensures accessibility, and generates documentation (flowcharts, user stories, inline comments).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1178,1179,1180,1181],{"name":1068,"slug":1069,"type":16},{"name":24,"slug":25,"type":16},{"name":1083,"slug":1084,"type":16},{"name":14,"slug":15,"type":16},"2026-07-18T05:47:39.210985",{"slug":1184,"name":1184,"fn":1185,"description":1186,"org":1187,"tags":1188,"stars":26,"repoUrl":27,"updatedAt":1194},"burpsuite-project-parser","parse Burp Suite project files","Searches and explores Burp Suite project files (.burp) from the command line. Use when searching response headers or bodies with regex patterns, extracting security audit findings, dumping proxy history or site map data, or analyzing HTTP traffic captured in a Burp project.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1189,1190,1193],{"name":1068,"slug":1069,"type":16},{"name":1191,"slug":1192,"type":16},"CLI","cli",{"name":14,"slug":15,"type":16},"2026-07-17T06:05:33.198077",{"slug":1196,"name":1196,"fn":1197,"description":1198,"org":1199,"tags":1200,"stars":26,"repoUrl":27,"updatedAt":1205},"c-review","audit C and C++ code","Performs comprehensive C\u002FC++ security review for memory corruption, integer overflows, race conditions, and platform-specific vulnerabilities. Use when auditing native C\u002FC++ applications, reviewing daemons or services for memory safety, or hunting integer overflow \u002F use-after-free \u002F race conditions in userspace code.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1201,1202,1203,1204],{"name":1068,"slug":1069,"type":16},{"name":1025,"slug":1026,"type":16},{"name":24,"slug":25,"type":16},{"name":14,"slug":15,"type":16},"2026-07-17T06:05:11.333374",{"slug":1207,"name":1207,"fn":1208,"description":1209,"org":1210,"tags":1211,"stars":26,"repoUrl":27,"updatedAt":1216},"cairo-vulnerability-scanner","scan Cairo and StarkNet contracts for vulnerabilities","Scans Cairo\u002FStarkNet smart contracts for 6 critical vulnerabilities including felt252 arithmetic overflow, L1-L2 messaging issues, address conversion problems, and signature replay. Use when auditing StarkNet projects.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[1212,1213,1214,1215],{"name":1068,"slug":1069,"type":16},{"name":24,"slug":25,"type":16},{"name":14,"slug":15,"type":16},{"name":1073,"slug":1074,"type":16},"2026-07-18T05:47:42.84568",111]