trailmark-finding-triage

Triages a single security finding using Trailmark graph reachability, taint, and blast-radius evidence.

6.9k|598|Updated Jan 14, 2026
One-click install
npx skills add https://github.com/trailofbits/skills --skill trailmark-finding-triage
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: trailmark-finding-triage
Source: https://github.com/trailofbits/skills/tree/main/plugins/trailmark/skills/trailmark-finding-triage
Command: npx skills add https://github.com/trailofbits/skills --skill trailmark-finding-triage

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

Security auditors waste time chasing static-analysis findings that are unreachable or unexploitable. This Skill builds a concise graph evidence packet for one candidate finding so you can decide whether to promote it to PoC work, deprioritize it, or send it for manual review.

Core Features & Use Cases

  • Graph-Based Reachability Analysis: Binds a finding to a Trailmark graph node and checks entrypoint paths, taint, privilege-boundary, and blast-radius subgraph membership.
  • Flexible Input Normalization: Accepts file/line references, function names, SARIF results, weAudit annotations, Markdown report excerpts, or manual claims.
  • Structured Verdicts: Emits a standardized evidence packet with a verdict (Promote, Needs manual review, Deprioritize, Blocked) and confidence level.
  • Use Case: Before spending hours on a PoC for a Semgrep finding in contracts/Bridge.sol, run triage to confirm the flagged function is entrypoint-reachable and identify which auth checks still need manual review.

Quick Start

Ask the assistant to triage a specific finding, for example: use Trailmark finding triage on src/Vault.sol line 148 where withdraw may bypass the balance update.

Frequently Asked Questions about trailmark-finding-triage

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I triage a static analysis finding before writing a PoC?

Provide the finding's file and line, function name, or SARIF result and the skill binds it to a Trailmark graph node. It then checks entrypoint reachability, taint, and blast radius, returning a verdict of Promote, Needs manual review, Deprioritize, or Blocked.

What inputs does Trailmark finding triage accept?

It accepts file/line references, function names, SARIF results, weAudit annotations, Markdown finding excerpts, and manual claims. Every input is normalized into a candidate record with title, location, suspected source or sink, and claimed impact before graph analysis.

Does graph reachability prove a finding is exploitable?

No. The skill explicitly separates graph reachability from exploitability. A reachable path still needs attacker-controlled inputs and compatible preconditions, so auth checks and validators are flagged as manual review targets rather than proof of safety or exploitability.

What happens when a finding cannot be bound to a graph node?

The skill reports a binding limitation instead of guessing, and the verdict becomes Blocked. It records the cause, such as unsupported languages, parser errors, dynamic dispatch, or ambiguous matches, in the evidence packet's limitations section.

When should I not use single-finding triage?

Avoid it when multiple weak findings might compose into a chain, when you need a full audit or remediation review, or when the target is a PR diff. Use composition, audit, remediation-review, or graph-evolution workflows for those cases.