plugins/vulnetix/skills/remediation/SKILL.md
Get a context-aware remediation plan for a vulnerability with fix verification steps
npx skillsauth add davepoon/buildwithclaude remediationInstall 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.
This skill generates a comprehensive, context-aware remediation plan for a specific vulnerability using the VDB V2 remediation API. It auto-detects your repository's ecosystem, package manager, installed versions, container images, and OS to provide targeted fix guidance including registry upgrades, source patches, distribution advisories, workarounds, CWE-specific remediation strategies, and verification commands.
How this differs from /vulnetix:fix: The existing /vulnetix:fix skill fetches V1 fix data and proposes manual manifest edits. This skill uses the V2 remediation plan endpoint which provides context-aware guidance (ecosystem, version, OS, container), CWE remediation strategies, CrowdSec threat intelligence (live exploitation data), workaround effectiveness scoring, SSVC decision support, and verification commands per package manager.
This skill reads and updates the .vulnetix/memory.yaml file in the repository root. This file is shared with /vulnetix:fix, /vulnetix:exploits, /vulnetix:package-search, /vulnetix:vuln, and /vulnetix:exploits-search.
The canonical schema is defined in /vulnetix:fix. This skill updates base fields and appends remediation plan events to the history log.
At the start of every invocation:
.vulnetix/memory.yaml exists in the repo root.vulnetix/scans/*.cdx.json -- cross-reference for component dataPreviously seen: <vulnId> -- <developer-friendly status> (as of <date>)
Priority: <P1/P2/P3/P4> (<score>) (if cwss data exists)
Last decision: <developer-friendly decision> -- "<reason>"
After completing the remediation plan (Step 7):
status: under_investigation, discovery.source: userseverity, safe_harbour, and versions.fixed_in from the remediation plan data. Merge aliases.status or decision unless the user explicitly makes a decision during the conversationhistory: event: remediation-plan, detail: summary of fix options found (registry fixes, source fixes, workarounds, distribution patches)not_affected --> "Not affected"affected --> "Vulnerable"fixed --> "Fixed"under_investigation --> "Investigating"When gh CLI is available (check with gh auth status 2>/dev/null), query Dependabot alerts for the vuln ID to cross-reference with the remediation plan.
"Dependabot PR #N proposes this upgrade -- consider reviewing and merging it"dependabot section in the memory entry.vulnetix/memory.yaml as described abovepackage field, use that package namevulnetix vdb vuln "$ARGUMENTS" -o json
Extract affected package names and ecosystems from the response.Build the CLI flags automatically from repository state:
| Flag | Source | How to detect |
|------|--------|---------------|
| --ecosystem | Manifest files | From Step 1 ecosystem detection |
| --package-name | VDB response or memory | Affected package name matching repo |
| --current-version | Lockfile/manifest | Installed version from Step 1 |
| --package-manager | Manifest file type | package-lock.json --> npm, yarn.lock --> yarn, poetry.lock --> pip/poetry, etc. |
| --purl | Constructed | If ecosystem + name + version are known, construct pkg:<eco>/<name>@<version> |
| --container-image | Containerfile/Dockerfile | Use Glob for Containerfile, Dockerfile, *.dockerfile. If found, Read and extract FROM image reference (e.g., node:18-alpine) |
| --os | OS detection | Check for /etc/os-release or infer from container base image |
| --vendor | VDB response | From affected products vendor field |
| --product | VDB response | From affected products product field |
Always set:
--include-guidance -- includes CWE-specific remediation strategies--include-verification-steps -- includes per-package-manager verification commandsIf no package context can be determined (no manifests, no memory), run the command without package-specific flags -- the API will still return general remediation guidance.
vulnetix vdb remediation plan "$ARGUMENTS" -V v2 --include-guidance --include-verification-steps -o json [context flags]
CLI Reference (from vulnetix vdb remediation plan docs):
| Flag | Type | Description |
|------|------|-------------|
| --ecosystem | string | Package ecosystem (npm, pypi, maven, go, cargo, etc.) |
| --package-name | string | Package name |
| --current-version | string | Currently installed version (enables version-specific guidance) |
| --package-manager | string | Package manager (npm, pip, cargo, maven, etc.) |
| --purl | string | Package URL (overrides ecosystem + package-name) |
| --container-image | string | Container image reference (e.g., node:18-alpine) |
| --os | string | OS identifier (e.g., ubuntu:22.04, debian-11) |
| --vendor | string | Vendor name for CPE matching |
| --product | string | Product name for CPE matching |
| --registry | string | Registry filter (npm, pypi, maven-central) |
| --include-guidance | bool | Include CWE-specific markdown guidance |
| --include-verification-steps | bool | Include verification commands per package manager |
| -V | string | API version -- must be v2 |
| -o, --output | string | Output format: json or pretty |
Examples:
# Basic remediation plan
vulnetix vdb remediation plan CVE-2021-44228 -V v2 --include-guidance --include-verification-steps -o json
# With full package context
vulnetix vdb remediation plan CVE-2021-44228 -V v2 \
--ecosystem maven --package-name log4j-core --current-version 2.14.1 \
--package-manager maven --include-guidance --include-verification-steps -o json
# Using PURL
vulnetix vdb remediation plan CVE-2021-44228 -V v2 \
--purl "pkg:maven/org.apache.logging.log4j/[email protected]" \
--include-guidance --include-verification-steps -o json
# With container context
vulnetix vdb remediation plan CVE-2024-XXXXX -V v2 \
--ecosystem npm --package-name express --current-version 4.17.1 \
--container-image "node:18-alpine" --include-guidance --include-verification-steps -o json
Response structure (from V2 OAS):
The response includes:
cveId, state, title, aliases, descriptiondescriptions[] -- multi-source descriptions with language and source attributioncrowdSecSummary -- live threat intelligence:
totalSightings, uniqueIPs, isActivefirstSeen, lastSeentopSourceCountries, topTargetCountriesmitreTechniques, behaviorscvssDetails -- parsed CVSS vector components (attackVector, attackComplexity, privilegesRequired, userInteraction, scope, impact metrics)agent_prompt -- AI-optimized remediation context stringRender a structured remediation report with the following sections:
Vulnerability Summary:
<CVE ID> -- <title>
<description -- first 2-3 sentences>
Severity: <CVSS score> (<level>) | EPSS: <score>
Threat Activity (from CrowdSec data, if present):
Live Exploitation: <Active/Inactive>
Sightings: <totalSightings> from <uniqueIPs> unique IPs
Last seen: <lastSeen>
Source countries: <top 3>
MITRE techniques: <techniques in developer language>
If no CrowdSec data, skip this section.
Registry Fixes (version upgrades per ecosystem):
| Ecosystem | Package | Current | Fix Version | Verified | Confidence | Registry | |-----------|---------|---------|-------------|----------|------------|----------| | maven | log4j-core | 2.14.1 | 2.17.1 | Yes | High | Maven Central |
For each fix, report Safe Harbour confidence:
Source Fixes (upstream commits/PRs, if available):
Upstream fix: <commit URL>
SHA: <sha>
Author: <author>
Message: <commit message>
Repository health: <commit frequency, contributor count>
Distribution Patches (if --os or --container-image was set):
| Distro | Patch ID | Affected Packages | Priority | |--------|----------|-------------------|----------| | Ubuntu 22.04 | USN-XXXX-X | liblog4j2-java | High |
Workarounds (interim mitigations, if no immediate fix):
Workaround: <description>
Effectiveness: <score>/100
Applicable versions: <range>
Requires restart: <Yes/No>
Verification: <steps>
CWE Guidance (weakness-specific remediation strategies):
CWE-<id>: <title>
Remediation strategy:
<markdown guidance from API>
Verification guidance:
<markdown from API>
Verification Steps (per package manager):
Verify the fix:
npm: npm audit --json | jq '.vulnerabilities["<package>"]'
maven: mvn dependency:tree | grep <package>
pip: pip show <package> | grep Version
"Dependabot PR #N already proposes this upgrade -- consider reviewing and merging"/vulnetix:exploits analysis exists in memory (threat_model, cwss), surface the priority: "Prior exploit analysis: P1 (87.5) -- Act now"/vulnetix:fix analysis exists, note what was previously proposedBased on the remediation plan, present concrete actions:
/vulnetix:fix) with the fix version from the remediation plan. Offer to apply it.apt-get update && apt-get install --only-upgrade <package>)vulnetix vdb vuln <vuln-id> to verify the fix resolved the vulnerabilityCross-references:
"Run /vulnetix:exploits $ARGUMENTS for exploit intelligence and threat modeling""Run /vulnetix:vuln $ARGUMENTS for full vulnerability details""Run /vulnetix:exploits-search --ecosystem <eco> to discover related exploited vulnerabilities"versions.fixed_in -- from the registry fix dataversions.fix_source -- registry name and versionseverity -- from CVSS datasafe_harbour -- computed from fix confidencealiases -- merge any newly discovered aliasesdependabot -- if gathered in Step 5history: event: remediation-plan, detail: summary of fix options (e.g., "Registry fix: 2.17.1 (Maven Central, High confidence). 2 workarounds available. CWE-502 guidance provided.")If the user applies a fix or makes a decision:
/vulnetix:exploitsstatus: fixed and decision.choice: fix-applied if they apply the fixevent: fix-applied with detail including the version changevulnetix vdb remediation plan returns an error, fall back to vulnetix vdb fixes "$ARGUMENTS" -o json (V1 endpoint) and present basic fix data. Note that V2 enrichment (workarounds, CWE guidance, verification steps) is unavailable..vulnetix/memory.yaml cannot be written, warn but do not block/vulnetix:fixagent_prompt field in the response contains AI-optimized context -- use it to inform your analysis but do not display it raw to the user.vulnetix/memory.yaml after generating the plandevelopment
Show drill-me learning progress — topics studied, cards due for review, weakest concepts, and what to study next. Use when the user asks what's due, how their learning is going, or for their drill-me status.
development
Teach the user a topic as an adaptive tutor — retrieval practice, spaced repetition with decay, and persistent memory in ~/.drill-me/. Use when the user wants to learn or be drilled on something, says "drill me on X", "teach me X", or wants to study a topic, a codebase, or a document.
development
Turn any codebase into evidence-grounded Markdown docs plus a machine-readable index.json. Every claim cites its source; never invents deployment steps.
tools
Assesses the current state of the startup project and recommends what to focus on next. Use when there is a need or a question from the user to understand what the next steps are or what to focus on next.