graph-evolution — Claude Code skill: what it does, how to install
Compares Trailmark code graphs across two code snapshots to spot structural security changes. It catches attack path expansion and privilege shifts that text diffs overlook.
npx skills add trailofbits/skills --skill graph-evolution -a claude-codeWhat graph-evolution does
This skill builds Trailmark structural graphs for two git commits, tags, or directories to evaluate architectural evolution. Plain text diffs only surface modified lines. In contrast, this approach tracks changes in taint propagation, privilege boundaries, and function blast radius across revisions.
The workflow relies on trailmark, which must be installed using uv tool install trailmark. It isolates each revision with temporary git worktrees, runs pre-analysis on both graphs, and runs trailmark diff alongside graph_diff.py to inspect subgraph membership changes.
Pay close attention to the target language flag. The trailmark diff command assumes Python by default. On codebases in other languages, it exits cleanly with empty arrays without warning you. Always specify the --language flag explicitly to prevent silent false negatives.
What it helps with
- identify new attack paths introduced between git revisions
- spot untracked blast radius growth in modified functions
- detect taint propagation shifts caused by refactoring
- audit privilege boundary modifications across release tags
Example prompts for the agent
- Compare structural graphs between main and the release tag using graph-evolution.
- Check for new attack paths and blast radius growth across the last two commits.
- Run a structural diff between these two worktree directories.
How to install graph-evolution
1Skills CLI (Vercel)
npx skills add trailofbits/skills --skill graph-evolution -a claude-code2Manually: put the files in place
~/.claude/skills/graph-evolution/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/graph-evolution/
1Skills CLI (Vercel)
npx skills add trailofbits/skills --skill graph-evolution -a codex2Manually: put the files in place
.agents/skills/graph-evolution/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add trailofbits/skills --skill graph-evolution -a cursor2Manually: put the files in place
.cursor/skills/graph-evolution/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install trailofbits/skills graph-evolution2Manually: put the files in place
.github/skills/graph-evolution/SKILL.md1Skills CLI (Vercel)
npx skills add trailofbits/skills --skill graph-evolution -a gemini-cli2Platform CLI
gemini skills install https://github.com/trailofbits/skills --path plugins/trailmark/skills/graph-evolutionManually: put the files in place
.devin/skills/graph-evolution/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add trailofbits/skills --skill graph-evolution -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
From the same set35
The whole set →Similar
Questions about graph-evolution
How to install graph-evolution in Claude Code?
Run npx skills add trailofbits/skills --skill graph-evolution -a claude-code. You also need trailmark installed via uv tool install trailmark.
What does graph-evolution do?
It builds and contrasts Trailmark graphs between two code snapshots. This exposes architectural security shifts that regular line diffs miss, like taint propagation changes.
Why did graph-evolution produce an empty diff?
The underlying trailmark diff tool targets Python by default. If your project uses another language, pass the --language parameter explicitly to avoid getting empty result arrays.