trailmark-finding-triage — Claude Code skill: triage one finding
Builds a graph evidence packet for a single security finding: reachability, entrypoint paths, taint and blast radius. Useful before you spend time on a PoC.
npx skills add trailofbits/skills --skill trailmark-finding-triage -a claude-codeWhat trailmark-finding-triage does
The skill takes one candidate issue — a file and line, a function name, a SARIF result, a weAudit annotation or a report excerpt — and normalises it into a title, path, suspected source or sink, and claimed impact. With no concrete code anchor it stops and asks for one.
Then it builds a Trailmark graph, or reuses a fresh one from .trailmark/, binds the finding to a node and runs a query recipe: entrypoint paths with their trust levels, membership in the tainted, privilege_boundary and high_blast_radius subgraphs, direct callers and callees, downstream sinks. For file and line anchors there is a bundled script, scripts/evidence_packet.py, that builds the graph once and handles several findings in one pass, writing the packet as JSON. It runs through uv run --no-project, so uv has to be on the machine.
Reachability in the graph is not proof of exploitability. An empty path list can also mean the analysis is limited — dynamic dispatch, proxies, an incomplete entrypoint model. An auth check sitting on the path is a review target, not a clean bill of health. The output is one verdict: Promote, Needs manual review or Deprioritize.
What it helps with
- decide whether a scanner result deserves PoC time
- check if a manual finding is reachable from an entrypoint
- assemble evidence before validating an exploit
- triage a suspicious function spotted during manual audit
- judge whether to promote or shelve a finding
Example prompts for the agent
- Triage the finding at
src/auth/session.c:142— is it reachable from any entrypoint? - Build the evidence packet for this function before I write a PoC
- Check this SARIF result for a path from an entrypoint with untrusted input
How to install trailmark-finding-triage
1Skills CLI (Vercel)
npx skills add trailofbits/skills --skill trailmark-finding-triage -a claude-code2Manually: put the files in place
~/.claude/skills/trailmark-finding-triage/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/trailmark-finding-triage/
1Skills CLI (Vercel)
npx skills add trailofbits/skills --skill trailmark-finding-triage -a codex2Manually: put the files in place
.agents/skills/trailmark-finding-triage/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add trailofbits/skills --skill trailmark-finding-triage -a cursor2Manually: put the files in place
.cursor/skills/trailmark-finding-triage/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install trailofbits/skills trailmark-finding-triage2Manually: put the files in place
.github/skills/trailmark-finding-triage/SKILL.md1Skills CLI (Vercel)
npx skills add trailofbits/skills --skill trailmark-finding-triage -a gemini-cli2Platform CLI
gemini skills install https://github.com/trailofbits/skills --path plugins/trailmark/skills/trailmark-finding-triageManually: put the files in place
.devin/skills/trailmark-finding-triage/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add trailofbits/skills --skill trailmark-finding-triage -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 trailmark-finding-triage
How do I install trailmark-finding-triage in Claude Code?
Run npx skills add trailofbits/skills --skill trailmark-finding-triage -a claude-code. The skill file then lands at ~/.claude/skills/trailmark-finding-triage/SKILL.md.
What does trailmark-finding-triage do?
It triages one security finding against the Trailmark graph: entrypoint paths, taint and privilege-boundary membership, callers and callees. You get a priority verdict plus an evidence packet.
How is it different from a full audit?
It handles exactly one candidate and stops there. When several weak findings might compose into a chain, use a composition workflow; to verify a fix, use remediation-review.