Independently rerun supplied proof-of-concept code against freshly built versions from before and after a change. Compare observed behavior, verify reachability through real interfaces, and preserve separate logs showing agreement, divergence, or blockers.
- Independently check a supplied reproduction result
- Compare behavior before and after a change
- Verify reachability with the claimed access level
trailofbits/skills☆ 7.8KUpdated Oct 24, 2026
Coordinate investigations into regressions introduced by PRs or commits. Assign preparation, discovery, reproduction, independent verification, decisions, and reporting to separate stages, while preserving evidence and progress records for later resumption.
- Investigate regressions across PRs or commits
- Coordinate staged work across multiple agents
- Resume an investigation from saved progress
trailofbits/skills☆ 7.8KUpdated Oct 24, 2026
Independently reproduce a reported runtime or compiler bug in a local repository. Build the baseline, exercise the actual artifact or compiler, and save logs and structured records distinguishing reproduction, absence of the behavior, and setup blockers.
- Reproduce a reported runtime bug locally
- Verify a compiler failure using its diagnostic
- Preserve logs and records for a reproduction handoff
trailofbits/skills☆ 7.8KUpdated Oct 24, 2026
Review a specific code change and trace its callers to identify behavior that may have broken. Record suspected regressions, reachable triggers, evidence needs, and coverage gaps so a separate reproduction step can investigate them.
- Find possible regressions introduced by a code change
- Trace changed behavior to supported interfaces
- Organize candidates for reproduction
trailofbits/skills☆ 7.8KUpdated Oct 24, 2026
Handle one known local bug or testable bug hypothesis through reproduction, independent validation, repair, and regression checks. Produce a local patch commit and evidence reports that help reviewers judge whether the fix is ready.
- Investigate and repair one reported local bug
- Have separate agents verify reproduction and the fix
- Prepare evidence reports for patch review
trailofbits/skills☆ 7.8KUpdated Oct 24, 2026
Build and run systems before and after a change, then execute the same reproduction procedure against both. Save environment details, inputs, commands, and separate logs to document observed behavior and any setup blockers.
- Compare behavior before and after a change
- Create a portable procedure to reproduce a suspected defect
- Record environments, commands, and execution logs
trailofbits/skills☆ 7.8KUpdated Oct 24, 2026
Independently verifies a committed security patch by testing the original, patched, and fully reverted code. It preserves test evidence, checks the declared repair scope, and reports confirmed failures, missing evidence, and limits of what was proven.
- Independently verify a security patch
- Compare original, patched, and reverted behavior
- Check valid inputs for regressions
trailofbits/skills☆ 7.8KUpdated Oct 24, 2026
Assess source code and live reproduction evidence to decide whether a change introduced a regression, a newly caused defect. Record supported conclusions, exclusions, severity, and unresolved gaps in an evidence-linked decision file.
- Decide whether a change introduced a new defect
- Separate existing bugs from newly introduced defects
- Record missing evidence and unresolved questions
trailofbits/skills☆ 7.8KUpdated Oct 24, 2026
Prepare a regression investigation by fixing the exact before and after source versions, preserving PR or commit context, and producing a sealed preparation record that explains change boundaries and evidence collection limits.
- Prepare source versions for a regression investigation
- Preserve PR discussions and review comments
- Document change boundaries and collection limits
trailofbits/skills☆ 7.8KUpdated Oct 24, 2026
Create dictionaries of keywords and identifying byte sequences for fuzzing, or testing with generated inputs. Extract useful entries from code, binaries, or specifications, then configure fuzzers to explore parsing paths beyond initial input validation.
- Build a dictionary for JSON or XML parser fuzzing
- Add protocol keywords to generated test inputs
- Test image parsers with file signatures and chunk names
trailofbits/skills☆ 7.8KUpdated Oct 24, 2026
Evaluate vulnerability reports using seven practical criteria, including attacker capabilities, real usage, documented behavior, and remediation costs. Produce a reasoned decision to accept, dismiss, or request more evidence before committing to deeper investigation.
- Screening AI-generated security findings before human review
- Assessing whether a reported CVE warrants investigation
- Reviewing bug bounty submissions
trailofbits/skills☆ 7.8KUpdated Oct 24, 2026
Build a custom fuzzer, a tool that tests code with many generated inputs, using LibAFL in Rust. Combine input mutation, execution feedback, scheduling, and target execution components when standard fuzzers offer insufficient control.
- Build a fuzzer for a nonstandard target or architecture
- Implement custom input mutation and feedback strategies
- Prototype a new fuzzing research technique
trailofbits/skills☆ 7.8KUpdated Oct 24, 2026
Checks cryptographic code against known attacks and edge cases using Project Wycheproof test vectors, predefined inputs and expected results. Helps load cases, interpret failures, compare implementations, and integrate checks into automated testing.
- Testing cryptographic code against known attacks
- Comparing results across cryptographic libraries
- Investigating rejected or incorrectly accepted signatures
trailofbits/skills☆ 7.8KUpdated Oct 24, 2026
Turn a Mermaid sequence diagram of a cryptographic protocol into a ProVerif model, a file for formal security checks. It includes queries for secrecy, authentication, replay resistance, and forward secrecy where applicable.
- Converting a cryptographic protocol diagram into a .pv file
- Preparing session key secrecy checks
- Modeling authentication and replay resistance
trailofbits/skills☆ 7.8KUpdated Oct 24, 2026
Build a graph of functions and calls across multiple programming languages to investigate entry points, paths to sensitive operations, and potential impact. Use the results to prioritize security reviews and connect external findings with source code.
- Tracing call paths from entry points to sensitive functions
- Prioritizing code for a security audit
- Connecting calls across language and RPC boundaries
trailofbits/skills☆ 7.8KUpdated Oct 24, 2026
Compare code structure across two commits, tags, or directories to identify security-relevant changes. Produces a report on new attack paths, privilege boundaries, complexity, and how widely a change could affect other functions.
- Compare code structure before a release
- Investigate new attack paths after code changes
- Track untrusted data flows across a refactor
trailofbits/skills☆ 7.8KUpdated Oct 24, 2026
Evaluate how well existing tests catch code changes, then combine the results with function relationships. Get a report separating harmless findings, missing unit tests, and targets for fuzzing, which tests many generated inputs.
- Triage code changes that existing tests failed to catch
- Prioritize missing unit tests
- Find functions suited to fuzzing
trailofbits/skills☆ 7.8KUpdated Oct 24, 2026
Compares code relationships before and after a branch, pull request, or release change using Trailmark. Flags structural security regressions, such as removed authorization checks or newly reachable sensitive operations, and provides evidence for reviewers.
- Checking structural security changes before merging a PR
- Reviewing call paths after a security fix
- Assessing attack surface changes in a release
trailofbits/skills☆ 7.8KUpdated Oct 24, 2026
Set up libFuzzer to test C/C++ code with varied inputs guided by which code paths run. Build test harnesses, manage sample inputs and dictionaries, enable error detectors, and reproduce crashes or investigate stalled coverage.
- Starting fuzz testing for a C/C++ library
- Writing or debugging an LLVMFuzzerTestOneInput harness
- Investigating runs that find no crashes or new code paths
trailofbits/skills☆ 7.8KUpdated Oct 24, 2026
Measure which code fuzzing reaches as it tries many generated inputs. Use coverage reports to find unreachable areas, compare progress, and guide improvements to test harnesses, starting inputs, or dictionaries of useful input values.
- Establish initial coverage for a fuzzing run
- Investigate why fuzzing stops reaching new code
- Compare coverage before and after harness changes
trailofbits/skills☆ 7.8KUpdated Oct 24, 2026
Identify checks and changing global state that block fuzzing, then adjust them in fuzzing builds. The skill covers targeted validation bypasses, repeatable behavior, coverage comparisons, and checks for false crash reports introduced by patches.
- Getting past checksum or hash checks during fuzzing
- Making time-seeded random behavior repeatable
- Comparing code coverage before and after a patch
trailofbits/skills☆ 7.8KUpdated Oct 24, 2026
Set up Atheris to test Python code and C extensions with automatically varied inputs. It guides test harness creation, coverage tracking to explore more code, and AddressSanitizer setup for finding memory errors.
- Fuzzing a Python package or parser
- Investigating memory corruption in Python C extensions
- Turning raw bytes into typed test arguments
trailofbits/skills☆ 7.8KUpdated Oct 24, 2026
Builds and improves C/C++ and Rust fuzzing harnesses, the entry points that feed generated test data into code. Helps structure inputs, reach more code paths, and address crashes caused by inconsistent test behavior.
- Writing a first fuzzing harness
- Building structured inputs for an API
- Investigating crashes that cannot be reproduced
trailofbits/skills☆ 7.8KUpdated Oct 24, 2026
Audit C/C++ and Rust code for secrets left in memory. It checks missing or incomplete wipes, examines compiler output for removed cleanup operations, and produces reports with evidence and suggested fixes.
- Auditing cryptographic key cleanup
- Checking password and token memory wipes
- Investigating cleanup removed by compiler optimization
trailofbits/skills☆ 7.8KUpdated Oct 24, 2026