Use agent-bom to check package, SBOM, inventory, and agent dependency exposure against OSV, GitHub Security Advisories, NVD, EPSS, and CISA KEV with explicit...
---
name: agent-bom-vulnerability-intel
description: >-
Use agent-bom to check package, SBOM, inventory, and agent dependency
exposure against OSV, GitHub Security Advisories, NVD, EPSS, and CISA KEV
with explicit data-boundary choices. Use when a user asks for CVE lookup,
advisory intelligence, exploitability context, fix versions, GHSA/OSV/NVD
enrichment, or package vulnerability triage.
version: 0.88.4
license: Apache-2.0
compatibility: >-
Requires Python 3.11+ and agent-bom installed from this repository or PyPI.
No credentials are required for basic public advisory lookups. Optional
NVD_API_KEY and GITHUB_TOKEN values only raise provider rate limits.
metadata:
author: msaad00
homepage: https://github.com/msaad00/agent-bom
source: https://github.com/msaad00/agent-bom
pypi: https://pypi.org/project/agent-bom/
openclaw:
requires:
bins:
- agent-bom
env: []
credentials: none
credential_policy: "Do not ask users to paste credentials. Optional NVD_API_KEY and GITHUB_TOKEN values may be present in the operator environment for rate limits, but their values must never be displayed, logged, or copied into prompts."
optional_env:
- NVD_API_KEY
- GITHUB_TOKEN
optional_bins: []
emoji: "\U0001F6E1"
homepage: https://github.com/msaad00/agent-bom
source: https://github.com/msaad00/agent-bom
license: Apache-2.0
os:
- darwin
- linux
- windows
credential_handling: "No cloud or source-control credentials are needed. Advisory API tokens stay in the operator environment and are used only by agent-bom's existing advisory clients; do not echo or persist token values."
data_flow: "Default package checks send package names, versions, ecosystems, PURLs, and CVE/advisory IDs to public advisory databases. Source code, raw config files, secrets, env values, and full scan reports are not sent to advisory providers. Use offline/cache-approved mode when private package names are sensitive."
file_reads:
- "operator-provided inventory JSON"
- "operator-provided CycloneDX/SPDX SBOM files"
- "local agent configuration paths only when the operator chooses a local scan"
file_writes:
- "operator-selected JSON/SARIF/report output path"
network_endpoints:
- url: "https://api.osv.dev/v1"
purpose: "OSV package vulnerability lookup"
auth: false
- url: "https://api.github.com/advisories"
purpose: "GitHub Security Advisories lookup; optional token only raises rate limits"
auth: false
- url: "https://services.nvd.nist.gov/rest/json/cves/2.0"
purpose: "NVD CVSS, CWE, and publication metadata enrichment"
auth: false
- url: "https://api.first.org/data/v1/epss"
purpose: "EPSS exploit probability enrichment"
auth: false
- url: "https://www.cisa.gov/sites/default/files/feeds/known_exploited_vulnerabilities.json"
purpose: "CISA Known Exploited Vulnerabilities enrichment"
auth: false
telemetry: false
persistence: false
privilege_escalation: false
always: false
autonomous_invocation: restricted
---
# agent-bom-vulnerability-intel
Use this skill to answer vulnerability-intelligence questions through
agent-bom's existing scanners and canonical evidence model. Do not create
one-off OSV, GHSA, NVD, EPSS, or KEV clients in the agent session; route through
agent-bom so advisory provenance, aliases, severity gates, cache behavior,
redaction, and output schemas stay consistent.
## Modes
Start with the smallest mode that answers the user:
| Mode | Use When | Data Boundary |
|------|----------|---------------|
| `explain-only` | User wants to know what would be queried | No advisory calls |
| `check-package` | User names one package/version/ecosystem | Only that package identifier is queried |
| `scan-local` | User wants findings from local agents or a local inventory file | Local parse first; advisory calls use package identifiers only |
| `offline-review` | Private package names cannot leave the environment | Use local/cache-approved data only; disclose reduced coverage |
| `export` | User wants PR gate, SARIF, JSON, or audit evidence | Write only to an operator-selected path |
## Guardrails
- Ask before scanning a broad filesystem path or local agent configs.
- Do not paste or reveal `NVD_API_KEY`, `GITHUB_TOKEN`, package-registry
credentials, cloud credentials, or env values.
- Do not send full source files, lockfiles, config contents, secrets, or scan
reports to advisory providers. agent-bom extracts package identifiers first.
- Treat unknown or unresolvable versions as coverage gaps, not clean results.
- Preserve advisory provenance. Do not collapse OSV, GHSA, NVD, EPSS, and KEV
into a single unlabelled severity.
- Do not modify dependencies or install fixes unless the user explicitly asks
for a remediation workflow.
## Workflows
### Explain the Boundary
When the user asks "what leaves my environment?", answer before running:
```text
This lookup sends package identifiers (name, version, ecosystem/PURL) and CVE
IDs to public advisory databases. It does not send source code, raw configs,
secrets, env values, credentials, or full scan reports. Use offline-review if
private package names are sensitive.
```
### Check One Package
```bash
agent-bom check flask==2.0.0 --ecosystem pypi
```
Use this for quick triage and fix-version checks. If the package name belongs
to a private registry or internal project, use `explain-only` first and let the
operator decide whether the identifier may be queried externally.
### Scan a Canonical Inventory
```bash
agent-bom agents --inventory inventory.json --format json --output findings.json
```
Use this after an operator-pull adapter or discovery skill emits canonical
inventory. The inventory can stop at the file boundary; scanning is an explicit
operator handoff.
### Export for a PR Gate
```bash
agent-bom agents --inventory inventory.json --format sarif --output agent-bom.sarif
```
Use SARIF only when the user wants GitHub code-scanning or AppSec PR-gate
evidence. Keep JSON for local analysis and audit trails.
### Offline Review
If external advisory calls are not allowed, run with the project's offline or
cache-approved mode and say clearly that coverage depends on the locally
available vulnerability database. Do not call a clean offline result equivalent
to a fresh OSV/GHSA/NVD lookup.
## Output Rules
- Show CVE/GHSA/PYSEC aliases together when available.
- Include severity source, fix version, EPSS, KEV status, CWE, and advisory
source chain when present.
- Separate "no vulnerabilities found" from "not enough data to evaluate."
- Keep raw credentials and credential-bearing URLs out of output, logs, prompts,
SARIF locations, and exported reports.
don't have the plugin yet? install it then click "run inline in claude" again.
extracted implicit decision logic into explicit if-else branches, added edge cases (rate limits, timeouts, unresolvable versions, coverage gaps), documented all five external advisory apis as inputs with urls and purposes, expanded procedure steps with concrete command examples and error handling, and clarified output contract and outcome signals.
use this skill to answer vulnerability-intelligence questions through agent-bom's existing scanners and canonical evidence model. route all cve lookups, advisory enrichment, exploitability context, fix-version queries, and package-triage requests through agent-bom rather than building one-off osv, ghsa, nvd, epss, or kev clients. this keeps advisory provenance, aliases, severity gates, cache behavior, redaction, and output schemas consistent across the session.
required
optional (increases rate limits and coverage)
NVD_API_KEY: nist nvd api token, stored in operator environment only, never logged or echoedGITHUB_TOKEN: github api token, stored in operator environment only, never logged or echoeddata inputs, user-provided
external advisory apis (no auth required for public lookups)
identify the user's question and select the minimal mode that answers it (see decision points below). do not default to broad scanning.
if the user asks about data boundaries first (e.g., "what leaves my environment?"), explain before executing: "this lookup sends package identifiers (name, version, ecosystem/purl) and cve ids to public advisory databases. it does not send source code, raw configs, secrets, env values, credentials, or full scan reports. use offline-review mode if private package names are sensitive."
for single-package lookup mode, execute:
agent-bom check <package-name>==<version> --ecosystem <ecosystem>
example: agent-bom check flask==2.0.0 --ecosystem pypi. output: cve/ghsa/pysec aliases, severity, fix versions, epss, kev status, and advisory source.
for sbom or inventory scan mode, accept the operator-provided file path and execute:
agent-bom agents --inventory <path-to-inventory.json> --format json --output <operator-selected-path>
the inventory must contain canonical package identifiers. do not ingest raw lockfiles or config files directly; extract identifiers first.
for pr-gate or export mode, use sarif output only if the user explicitly requests github code-scanning or appsec integration:
agent-bom agents --inventory <path> --format sarif --output agent-bom.sarif
keep json for local analysis and audit trails.
for offline or cache-approved mode, check operator environment for local vulnerability databases and run with cache constraints:
agent-bom check --offline-only <package-name>==<version> --ecosystem <ecosystem>
output: clearly state that coverage depends on locally available data and is not equivalent to a fresh osv/ghsa/nvd lookup.
enrich output with provenance: when results arrive, display cve/ghsa/pysec aliases together, include severity source (osv, ghsa, nvd), fix versions, epss scores, kev status, cwe identifiers, and advisory source chain.
handle empty or incomplete results: distinguish "no vulnerabilities found after advisory lookup" from "insufficient version data to evaluate." flag unresolvable versions as coverage gaps, not clean results.
write exported output only to operator-selected paths. do not persist credentials, credential-bearing urls, env values, or secrets in any exported file.
if the user asks "what data leaves my environment?"
if the user names a single package and version
check-package mode (procedure step 3). do not scan the entire local filesystem.if the user provides an sbom, inventory, or local agent scan
scan-local mode (procedure step 4). extract package identifiers first; do not send raw source, lockfiles, or config contents to advisory providers.if the user's package name suggests a private or internal registry (e.g., "my-org-internal-lib")
explain-only mode to show what would be sent.if the user requests pr-gate, github code-scanning, or appsec integration
export mode with sarif output (procedure step 5). do not export sarif unless explicitly requested.if external advisory lookups are forbidden or the operator declares a private environment
offline-review mode (procedure step 6). clearly state reduced coverage and do not claim equivalence to live osv/ghsa/nvd queries.if nvd_api_key or github_token are present in the operator environment
if a package version cannot be resolved or is not found in any advisory database
if rate limits are hit (429 http status)
if network timeout or transient failure occurs
success output is a structured advisory report containing
output must not contain
format options
--format json: structured advisory data for audit, local analysis, and integration. default.--format sarif: github code-scanning and pr-gate integration only when requested.--format text: human-readable summary (use only for cli output, not persistence).the skill worked when
credits: original author msaad00 (https://github.com/msaad00/agent-bom). enriched for implexa quality standards.