Add vuln-triage Claude skill - #44246
Conversation
Encodes Fleet's vulnerability triage workflow as a Claude skill: routes software/CVE pairs to the correct scanner (NVD/OSV/OVAL/MSRC/Office/ goval-dictionary/CustomCVE), runs nvdvuln when applicable, reconciles the CVE against multiple upstream sources (NVD, MITRE, GHSA, OSV.dev, vendor advisories) before proposing a fix, and surfaces systemic data-source changes ahead of one-off overrides. The skill maintains its own software.source-to-scanner routing table.
There was a problem hiding this comment.
Claude Code Review
This repository is configured for manual code reviews. Comment @claude review to trigger a review and subscribe this PR to future pushes, or @claude review once for a one-time review.
Tip: disable this comment in your organization's Code Review settings.
There was a problem hiding this comment.
Pull request overview
Adds a new Claude skill that documents Fleet's vulnerability triage workflow for false positives and false negatives across multiple data sources (NVD, OSV, OVAL, MSRC, Office, etc.). The skill provides a routing table mapping software.source × platform to scanners and prescribes a cross-source verification process before proposing fixes.
Changes:
- Adds
.claude/skills/vuln-triage/SKILL.mdwith an 11-step triage workflow. - Encodes a routing table for scanner selection and references key code paths.
- Establishes guardrails (cross-source verification, systemic-vs-one-off) and a diagnose-then-propose posture.
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
|
I don't have a lot of experience with claude skills so I asked it to review the file. I don't know how accurate these are so take them with a grain of salt. I verified the file/function references — all exist — and compared the skill against existing Fleet skills ( Factual error (must fix)The OSV claim is wrong. The skill says:
But Effectiveness issues
Smaller stuff
VerdictThe skill is technically accurate on file/function references and the routing table is a genuinely useful artifact. Top three fixes that would most improve effectiveness:
|
Step 10 said "do not auto-edit" while Edit was listed in allowed-tools, which read as a contradiction. Reframe the gate as the explicit propose-first / approve step — Edit stays allowed so the approved apply doesn't re-prompt.
The file lives in this repo at server/vulnerabilities/nvd/cpe_translations.json and is republished into fleetdm/nvd releases daily — earlier wording had the direction reversed, sending the fix to the wrong repo.
- Fix factual error: OSV IS in fleetctl vulnerability-data-stream (osv.RefreshAll at vulnerability_data_stream.go:106). - Parse $ARGUMENTS in step 1 so structured invocations aren't ignored. - Add FP disambiguation (wrong CPE / wrong CVE range / wrong version comparison) to steer steps 5-6. - Step 5: fetch OSV via curl+Read (JSON, not HTML); gate GHSA/MSRC/vendor fetches on routing instead of always running all five. - Bound git log / gh issue list with --since / --limit. - Tag routing table with a 'last verified at commit' marker. - Inline the diagnose-then-apply-on-approval definition; drop the dangling fix-ci reference. - Add curl pattern to allowed-tools; add /vuln-triage trigger to description.
|
Thanks for the thorough review. Pushed cd26cb45f9 addressing most of it:
Deliberately skipped:
|
Attribute BuildLinuxExclusionRegex to nvd/cpe.go (not oval_platform.go) and use /tmp/ instead of ./tmp/ for the OSV cross-check output path.
Related issue: N/A — tooling/skill addition
Summary
Adds
.claude/skills/vuln-triage/SKILL.md, a Claude skill that encodes Fleet's vulnerability false-positive / false-negative triage workflow.The skill:
<software, CVE>pair to the correct scanner using an embeddedsoftware.source × platform → scannertable (NVD, OSV, OVAL, goval-dictionary, MSRC, macoffice, winoffice, CustomCVE).tools/nvd/nvdvuln(Mode 1 or Mode 2) when the software is NVD-handled and parses its CPE/CVE output./tmp/vulndbssetup and points the engineer atfleetctl vulnerability-data-streamfor missing feeds.Why
Vuln-bug triage is a recurring task that spans 7 data sources and many override layers. The cognitive load is mostly route-finding. This skill captures that route-finding once so engineers don't reconstruct it each time, while keeping the engineer in the loop for any data-source or code edit (diagnose + propose, no auto-edit).
Notes for reviewers
.claude/skills/vuln-triage/SKILL.md.Checklist for submitter
.claude/skills/).Testing
Manual triage scenarios to validate after merge:
/vuln-triageinvokes it explicitly.server/vulnerabilities/nvd/cpe_matching_rules.go) lands at the same file/fix shape.python3-foodeb) routes to OSV, not nvdvuln./tmp/vulndbsproduces a clear advisory message instead of a silent failure.