.claude/skills/fix-review/SKILL.md
Verify fix commits address security findings without introducing new bugs or regressions. Analyzes diffs for anti-patterns like removed validation, weakened access control, reduced error handling, reordered external calls, and changed integer operations. Generates structured FIX_REVIEW_REPORT with finding status tracking.
npx skillsauth add oimiragieo/agent-studio fix-reviewInstall 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.
This skill implements Trail of Bits' fix review methodology for the agent-studio framework. When a security audit produces findings and developers commit fixes, this skill systematically verifies that each finding is properly addressed without introducing new vulnerabilities or regressions.
Source repository: https://github.com/trailofbits/skills
License: CC-BY-SA-4.0
Output: Structured FIX_REVIEW_REPORT.md
NO FINDING CLOSED WITHOUT FIX VERIFICATION
A finding is not fixed until the fix has been reviewed against the original finding description, verified to address the root cause, and confirmed not to introduce new issues.
| Status | Meaning |
| ------------------ | ----------------------------------------------------------------------------- |
| FIXED | Finding is fully addressed. Root cause eliminated. No regressions introduced. |
| PARTIALLY_FIXED | Some aspects addressed but gaps remain. More dangerous than unfixed. |
| NOT_ADDRESSED | Fix does not relate to the finding, or finding location unchanged. |
| CANNOT_DETERMINE | Insufficient context or code complexity prevents definitive assessment. |
| NEW_ISSUE | Fix introduces a new vulnerability or regression. |
The following anti-patterns indicate potentially incorrect or incomplete fixes:
ALERT: Input validation was removed or weakened in the fix.
Indicators:
ALERT: Authorization checks were reduced or bypassed in the fix.
Indicators:
ALERT: Error handling was simplified or removed, potentially hiding failures.
Indicators:
ALERT: Order of external calls changed, potentially creating race conditions or TOCTOU.
Indicators:
ALERT: Integer arithmetic modified, check for overflow/underflow/truncation.
Indicators:
ALERT: Cryptographic operations were changed in a potentially weakening way.
Indicators:
Read the original findings report to understand what was found:
# Read findings file
cat findings-report.md
# Or extract from issue tracker
gh issue view <issue-number>
Map each finding to its fix commit(s):
# View commits since the findings report
git log --oneline --since="<audit-date>"
# View a specific fix commit
git show <commit-hash>
# View PR diff
gh pr diff <pr-number>
For each finding-fix pair:
# Fix Review Report
**Date**: YYYY-MM-DD
**Reviewer**: [agent-type]
**Audit Reference**: [original audit report path]
**Commits Reviewed**: [list of commit hashes]
## Summary
| Status | Count |
| ---------------- | ----- |
| FIXED | N |
| PARTIALLY_FIXED | N |
| NOT_ADDRESSED | N |
| CANNOT_DETERMINE | N |
| NEW_ISSUE | N |
## Finding Reviews
### Finding F-001: [Title]
- **Original Severity**: Critical/High/Medium/Low/Informational
- **Original Location**: `file:line`
- **Fix Commit**: `<hash>`
- **Fix Status**: FIXED | PARTIALLY_FIXED | NOT_ADDRESSED | CANNOT_DETERMINE
- **Anti-Patterns Detected**: None | [list]
**Original Finding Summary**:
[Brief description of the finding]
**Fix Analysis**:
[Line-by-line analysis of what the fix does]
**Root Cause Addressed**: Yes/No/Partial
[Explanation]
**Regression Risk**: None/Low/Medium/High
[Explanation of potential regressions]
**Remaining Gaps** (if PARTIALLY_FIXED):
- [ ] Gap 1: [description]
- [ ] Gap 2: [description]
---
### Finding F-002: [Title]
[Same structure as above]
---
## New Issues Introduced
### NI-001: [Title]
- **Introduced By**: `<commit-hash>`
- **Location**: `file:line`
- **Severity**: Critical/High/Medium/Low
- **Description**: [What the new issue is]
- **Recommendation**: [How to fix it]
## Recommendations
1. [Prioritized list of remaining actions]
2. [Re-audit recommendations if needed]
audit-context-building to deeply analyze the codefix-review to verifycode-reviewer for additional review perspectivesvariant-analysis to check if similar patterns exist elsewhere| Skill | Relationship |
| ------------------------ | ------------------------------------------------- |
| audit-context-building | Provides deep context for understanding fixes |
| differential-review | Security-focused diff review (lower granularity) |
| variant-analysis | Finds unpatched variants of fixed vulnerabilities |
| static-analysis | Automated confirmation of fix effectiveness |
| code-reviewer | General code quality review of fix commits |
| Anti-Pattern | Why It Fails | Correct Approach | | ---------------------------------------- | --------------------------------------------------------------------- | ---------------------------------------------------------------- | | Reviewing diff without reading finding | Fix may address wrong issue or only surface symptom | Always re-read original finding before reviewing fix diff | | Closing finding after any code change | Change may be unrelated or insufficient | Verify fix status is FIXED with root cause elimination confirmed | | Ignoring partial fixes | PARTIALLY_FIXED is more dangerous than NOT_ADDRESSED (false security) | Track remaining gaps explicitly; keep finding open | | Skipping anti-pattern checklist | Subtle regressions (weakened validation, reordered checks) go unseen | Run all 6 anti-pattern checks on every fix diff | | Not checking for variant vulnerabilities | Same bug pattern likely exists elsewhere in codebase | Invoke variant-analysis after confirming fix |
Before starting:
Read .claude/context/memory/learnings.md
Check for:
After completing:
.claude/context/memory/learnings.md.claude/context/memory/issues.md.claude/context/memory/decisions.mdASSUME INTERRUPTION: If it's not in memory, it didn't happen.
tools
Comprehensive biosignal processing toolkit for analyzing physiological data including ECG, EEG, EDA, RSP, PPG, EMG, and EOG signals. Use this skill when processing cardiovascular signals, brain activity, electrodermal responses, respiratory patterns, muscle activity, or eye movements. Applicable for heart rate variability analysis, event-related potentials, complexity measures, autonomic nervous system assessment, psychophysiology research, and multi-modal physiological signal integration.
tools
Comprehensive toolkit for creating, analyzing, and visualizing complex networks and graphs in Python. Use when working with network/graph data structures, analyzing relationships between entities, computing graph algorithms (shortest paths, centrality, clustering), detecting communities, generating synthetic networks, or visualizing network topologies. Applicable to social networks, biological networks, transportation systems, citation networks, and any domain involving pairwise relationships.
data-ai
Molecular featurization for ML (100+ featurizers). ECFP, MACCS, descriptors, pretrained models (ChemBERTa), convert SMILES to features, for QSAR and molecular ML.
development
Run Python code in the cloud with serverless containers, GPUs, and autoscaling. Use when deploying ML models, running batch processing jobs, scheduling compute-intensive tasks, or serving APIs that require GPU acceleration or dynamic scaling.