Agent-skill van Geonovum voor het maken van een SBOM (software bill of materials) volgens de 2026 CISA Minimum Elements, als voorbereiding op de SBOM-verplichting uit de Cyber Resilience Act (CRA).
Een agent-skill is een map met een instructiedocument (SKILL.md) dat een AI-assistent erbij pakt zodra het onderwerp langskomt. De metadata staat in publiccode.yml en in de frontmatter van de skill, en de status staat in nl.gov.status.
Let op. De skill is een hulpmiddel en levert geen conformiteitsverklaring. De opsteller van een SBOM blijft verantwoordelijk voor de inhoud. Zie DISCLAIMER.md.
| Skill | Status | Doel |
|---|---|---|
geonovum-sbom |
concept | Maakt voor een repository een CycloneDX 1.7-SBOM met VEX en een SPDX 2.3-SBOM, met per component producent, versie, purl of CPE, licentie en hash, en een VEX-analyse van bekende kwetsbaarheden via OSV. Werkt ook voor repositories zonder lockfile: met meegeleverde (vendored) JavaScript- en CSS-bestanden, CDN-links en componenten die de server levert. |
De status concept betekent dat de skill nog niet is vastgesteld. Een hogere status vraagt een expertreview, een gepubliceerde reviewprocedure met acceptatiecriteria, en een test met minstens twee assistenten waarvan één open source of Europees.
Kopieer de map skills/geonovum-sbom/ naar de skillmap van je assistent. Welke map dat is, staat in de documentatie van de assistent.
De repository is ook ingericht als plugin geonovum-sbom, met manifesten per assistent in de verborgen mappen. Zodra de skill via de skills-marketplace van developer.overheid.nl wordt aangeboden, staan de installatie-instructies per assistent in de README van die marketplace.
Vraag je assistent om een SBOM voor een repository, bijvoorbeeld: "Maak een SBOM voor deze repo volgens de CISA minimum elements, in CycloneDX en SPDX." De skill:
- begint bij de vorige SBOM, als die er is:
scripts/scan_repo.js --sincelaat zien wat er sindsdien is veranderd, zodat alleen dat wordt bijgewerkt; - brengt de repository in kaart met
scripts/scan_repo.js: lockfiles, meegeleverde bestanden (ook bibliotheken die in een ander bestand zijn ingebed) en of ze geladen worden, CDN-links, wat de server moet leveren, en waar de metadata staan, telkens met bestand en regel; - laat voor ecosystemen met een lockfile een tool zoals cdxgen of syft de afhankelijkheidsboom maken, zo nodig na een build of installatie, zodat de versies kloppen die echt worden geleverd;
- zoekt zelf alleen na wat de tooling niet kan vaststellen;
- schrijft een inventaris en maakt daarmee met
scripts/build_sbom.jsde twee SBOMs, met hashes van de gecommitte bestanden en kwetsbaarheden uit OSV, en valideert ze offline metscripts/validate_sbom.js; - rapporteert welke CISA-elementen nog ontbreken (zoals de handtekening) en welke kwetsbaarheden nog geanalyseerd moeten worden;
- zet desgevraagd de inventaris en twee workflows in de repository.
sbom.ymlmaakt de SBOMs bij elke GitHub-release opnieuw, valideert en ondertekent ze, en hangt ze aan de release.sbom-kwetsbaarheden.ymllegt elke week de SBOM van de versie die in gebruik is naast OSV, metscripts/check_vulns.js. De actions in beide zijn vastgezet op een commit-hash.
Nodig: Node.js 18 of nieuwer en git. Voor de validatie installeert de skill ajv in een tijdelijke map; voor repositories met een lockfile gebruikt hij een SBOM-tool zoals cdxgen, na toestemming.
| Bron | Rol |
|---|---|
| 2026 CISA Minimum Elements for a Software Bill of Materials | Welke gegevens een SBOM minimaal moet bevatten (nl.gov.source) |
| Cyber Resilience Act, bijlage I deel II | De wettelijke SBOM-verplichting voor producten met digitale elementen |
| CycloneDX 1.7 (ECMA-424) | Formaat van sbom.cdx.json, inclusief VEX |
| SPDX 2.3 | Formaat van sbom.spdx.json |
| OSV | Bron van bekende kwetsbaarheden |
De JSON-schema's in skills/geonovum-sbom/assets/schemas/ zijn ongewijzigde kopieën van de officiële schema's van CycloneDX (Apache-2.0) en SPDX, voor validatie zonder netwerk.
In skills/geonovum-sbom/evals/ staan drie testcases: een repository zonder lockfile met meegeleverde bestanden, een Node.js-app met lockfile, en een Flask-app met alleen requirements.txt. Elke testcase heeft een prompt, invoerbestanden en controles die beschrijven wat een goed resultaat is.
Fouten in de skill meld je als issue. Werkafspraken voor wijzigingen staan in CONTRIBUTING.md.
Copyright © 2026 Geonovum. Licensed under the EUPL.
De skill valt onder de EUPL-1.2. Alle taalversies van de EUPL zijn gelijkwaardig; de Nederlandse tekst staat in het Publicatieblad van de EU. De meegeleverde CycloneDX-schema's vallen onder Apache-2.0, het SPDX-schema onder de licentie van het SPDX-project.