genotoxic — Claude Code skill: mutation testing triage
Sorts survived mutants into false positives, missing unit tests and fuzzing targets, using a code graph built with Trailmark.
npx skills add trailofbits/skills --skill genotoxic -a claude-codeWhat genotoxic does
genotoxic runs three phases. First it parses the target with Trailmark and calls engine.preanalysis() — that step is mandatory, because triage later leans on blast radius, entry points and taint data. Then comes the mutation framework for your language. Finally the findings get classified into four buckets: corroborated by both tools, harmless, needs a unit test, or needs a fuzz harness.
Trailmark has to be there before anything else. If uv run trailmark fails, install it with uv tool install trailmark rather than falling back to reading the code by hand. You also need a mutation framework for the target language and a test suite that currently passes. necessist is optional and worth adding: it strips statements from tests to expose assertions that never fail. Install it with cargo install necessist; it covers Go, Rust, Solidity/Foundry, TypeScript/Hardhat, TypeScript/Vitest and Rust/Anchor.
On macOS, run ulimit -n 1024 before every mull-runner call. Tahoe (26+) leaves file descriptors unlimited by default, and Mull crashes when it spawns subprocesses. A project with no test suite at all is the wrong place to start — there is nothing for the mutants to survive against.
What it helps with
- separate harmless survived mutants from ones that point at real gaps
- spot functions that want a fuzz harness instead of more unit tests
- strip test statements that assert nothing useful
- rank test work by data flow context
- flag mutants sitting in dead code for removal
Example prompts for the agent
- Run mutation testing over
src/and triage the survived mutants with genotoxic - Build the Trailmark code graph and show where unit tests would pay off most
- Run necessist and list the unnecessary statements in the test suite
How to install genotoxic
1Skills CLI (Vercel)
npx skills add trailofbits/skills --skill genotoxic -a claude-code2Manually: put the files in place
~/.claude/skills/genotoxic/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/genotoxic/
1Skills CLI (Vercel)
npx skills add trailofbits/skills --skill genotoxic -a codex2Manually: put the files in place
.agents/skills/genotoxic/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add trailofbits/skills --skill genotoxic -a cursor2Manually: put the files in place
.cursor/skills/genotoxic/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install trailofbits/skills genotoxic2Manually: put the files in place
.github/skills/genotoxic/SKILL.md1Skills CLI (Vercel)
npx skills add trailofbits/skills --skill genotoxic -a gemini-cli2Platform CLI
gemini skills install https://github.com/trailofbits/skills --path plugins/trailmark/skills/genotoxicManually: put the files in place
.devin/skills/genotoxic/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add trailofbits/skills --skill genotoxic -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about genotoxic
How do I install genotoxic in Claude Code?
Run npx skills add trailofbits/skills --skill genotoxic -a claude-code. The skill lands at ~/.claude/skills/genotoxic/SKILL.md.
What does genotoxic do?
It builds a code graph with Trailmark, runs mutation testing and necessist, then sorts the results into false positives, missing unit tests, fuzzing targets and findings both tools agree on.
What does genotoxic need to run?
Trailmark, a mutation testing framework for your language, and a passing test suite. necessist is a separate install via cargo install necessist.