Produce signed software bills of materials from real artifacts and consume them to answer "are we affected" fast. Use when setting up build output, responding to a new advisory, or fielding a customer SBOM request.
Scanned 9/5/2026
Install to Claude Code
npx -y skills add Amey-Thakur/AI-SKILLS --skill sbom-management --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Sbom Management?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/amey-thakur-sbom-management)More formats (shields.io, HTML) on the badges page.
---
name: sbom-management
description: Produce signed software bills of materials from real artifacts and consume them to answer "are we affected" fast. Use when setting up build output, responding to a new advisory, or fielding a customer SBOM request.
---
# SBOM management
A software bill of materials (SBOM) is the ingredient list for what you
shipped. Without one, the day a critical advisory lands you are grepping
lockfiles across repos and guessing what is actually deployed. Generated
right and kept current, an SBOM turns that scramble into a query.
## Method
1. **Generate from the built artifact, not the source tree.** Run `syft`
against the final container image or binary: `syft my-image:1.4 -o
cyclonedx-json`. Scanning source misses vendored code, build-time
injections, and base-image packages, so the SBOM must describe what
actually left the build.
2. **Pick one format and hold it.** CycloneDX and SPDX are both machine
readable; CycloneDX carries dependency graph and VEX in one document,
SPDX is common for license and compliance work. Convert on demand with
`cyclonedx-cli convert` rather than maintaining two source formats.
3. **Include the NTIA minimum elements.** Every component needs supplier,
name, version, a unique identifier (a PURL like
`pkg:npm/lodash@4.17.21` or a CPE), dependency relationships, plus
author and timestamp. An SBOM with no PURLs cannot be matched to an
advisory feed and is decoration.
4. **Sign the SBOM and bind it to the artifact digest.** Attach it as an
attestation with `cosign attest --predicate sbom.json --type cyclonedx`
so a consumer can confirm the SBOM belongs to that exact image and was
not swapped. An unsigned SBOM is a claim, not evidence.
5. **Consume continuously, not once.** Feed stored SBOMs to `grype
sbom:./sbom.json` or load them into Dependency-Track, which re-evaluates
every stored SBOM as new CVEs arrive. The point is that a fresh advisory
flags an old release without anyone rebuilding it.
6. **Emit VEX to kill the false positives.** Publish an OpenVEX or
CycloneDX VEX statement marking unreachable findings `not_affected` with
a justification like `vulnerable_code_not_in_execute_path`, so consumers
and your own dashboard stop paging on a CVE you already triaged.
7. **Track coverage and freshness.** Require an SBOM for every deployed
artifact and regenerate it each release. A stale SBOM from three
releases back answers "are we affected" confidently and wrongly.
## Checks
- Can you list every running service that contains `log4j-core 2.14` from
stored SBOMs in minutes, without rebuilding anything?
- Does each release ship a signed SBOM whose component set matches what the
image actually contains?
- When a new CVE publishes, does something re-scan existing SBOMs
automatically, or only the next build?
## Boundaries
This skill covers producing and consuming the inventory. Hardening the
pipeline that builds and signs artifacts belongs to supply-chain-defense,
and gating or removing an individual risky package belongs to
dependency-auditing. Format mandates from a specific regulator defer to
that program's own requirements.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!