plugins/security-audit/skills/triaging-security-report/SKILL.md
Verify an external or AI-generated security report against the actual codebase before acting on it. Use when handed a scanner PDF, automated teardown, audit report, or bug-bounty submission — classifies every finding CONFIRMED / OVERSTATED / FALSE-POSITIVE / FABRICATED and salvages the real work items.
npx skillsauth add qte77/claude-code-utils triaging-security-reportInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Report: $ARGUMENTS
Automated security reports are high-recall, low-precision. A representative episode: a
multi-agent MITRE ATLAS teardown rated a repo HIGH on 10 findings — verified triage found
1 real (severity overstated), 1 hardening kernel, and 8 false positives, 2 of them
fabricated: it flagged a sed command in a Makefile that contains no sed, and flagged the
XXE defense (defusedxml) and a path-traversal sanitizer as the vulnerabilities. The
report's own chain-prover said 0 of 10 confirmed. Acting on such a report unverified wastes
days and can make code worse (one suggested fix would have broken the tool's defaults).
Before any code work, extract: confirmed-vs-flagged counts, confidence markers
(unconfirmed, memory_hint, inferred, not_tested edges), and how the headline rating
was derived. A headline severity that its own metadata contradicts (HIGH rating, 0 confirmed)
reframes the whole document from "findings" to "hypotheses".
Table them: id · claim · claimed file:line · claimed severity. Note which findings cite code ("evidence") vs which are architecture-level ("missing control").
For each: Read/Grep the cited location and search the repo for the claimed pattern
(the line may have drifted). Assign one verdict (rubric details in
references/verdict-rubric.md):
| Verdict | Meaning | Example from the field |
| --- | --- | --- |
| CONFIRMED | Pattern exists as claimed | token interpolated into git push argv |
| OVERSTATED | Real pattern, wrong severity for the deployment context | that token: ephemeral single-tenant CI runner, auto-revoking — HIGH → LOW/MEDIUM |
| FALSE-POSITIVE | Pattern exists but is not a vulnerability | json.loads flagged as "insecure deserialization"; config-file URL flagged as SSRF |
| FABRICATED | Cited code doesn't exist, or the flagged code IS the mitigation | nonexistent Makefile sed; defusedxml flagged as the XXE hole |
Architecture-level findings (missing prompt firewall, absent tool sandbox, no authz gate) only count when the corresponding attack surface exists in this codebase. A control for a component the repo doesn't contain (e.g. LLM-boundary controls in a deterministic data pipeline whose LLM calls happen in a separate system) is not a gap — record it as out-of-scope with the architectural reason.
Apply the trusted-input precedents (full list in the rubric): env vars and CLI flags are trusted; operator-authored config is trusted; SSRF requires untrusted host/protocol control, not path; ephemeral CI runners shrink secrets-exposure windows; DoS/rate-limit findings are usually out of scope for triage.
# Triage: <report name> (<date>, headline rating: <X>)
Report self-assessment: <confirmed counts / confidence markers>
| # | Claim | Claimed loc | Verified loc | Verdict | Action |
|---|-------|-------------|--------------|---------|--------|
| 1 | ... | file:line | file:line | CONFIRMED (sev: M, was H) | issue #N |
| 2 | ... | file:line | — (absent) | FABRICATED | declined: <reason> |
Net: <n> real / <n> overstated / <n> false-positive / <n> fabricated.
Salvaged: <issues/PRs filed>. Declined: <count> with rationale above.
development
Audits a site's SEO and AI-search (GEO) readiness — meta tags, Open Graph/Twitter, JSON-LD, robots/llms conventions — and generates fixes. Use when reviewing search visibility, social previews, structured data, or LLM/AI-crawler discoverability.
development
Analyzes industry websites for design patterns, layout, typography, and content strategies using first-principles thinking. Use when researching website design, UI patterns, or competitive design analysis.
development
Audits website usability for UX optimization, covering forms, navigation, validation, and microcopy. Use when reviewing user experience, task completion flows, or interface friction points.
development
Audits website accessibility for WCAG 2.2 AA compliance, generating findings and code fixes. Use when reviewing accessibility, keyboard navigation, screen reader compatibility, or inclusive design.