Skip to content

Explore SBOM generation for plugin releases #6

Description

@mlieberman85

Context

During the design of the release process (feature 006-release-process), we debated whether to include an SBOM with each release. The plugin is a Mode 3 reference-only distribution (11 files — markdown, shell scripts, JSON manifests) that does not bundle any external tools. Key findings:

  • A syft-auto SBOM produces a file inventory that's largely redundant with the SLSA provenance's source tree hash
  • The plugin's external runtime requirements (Kusari CLI, jq, bash) are declared in plugins/kusari/prerequisites.json and enforced at install time — not bundled
  • An SBOM with HAS_PREREQUISITE relationships (SPDX) was prototyped but dropped because no consumers currently process SBOMs for Claude Code plugins, and the information is already available via prerequisites.json + provenance

What to explore

  • When does an SBOM become genuinely useful for this artifact type? (compliance requirements, registry publishing, downstream tooling adoption)
  • If/when the plugin bundles dependencies or installs external tools (Mode 1/2/4), the SBOM should expand — what triggers that transition?
  • SPDX vs CycloneDX format preference for the Claude Code ecosystem
  • Whether the prerequisites.json → SPDX HAS_PREREQUISITE pattern (prototyped in the design docs at specs/006-release-process/) is the right shape when we do add it
  • Constitution §III mandates SBOM per release — should this be amended for plugin-shaped artifacts, or should the SBOM be added once the ecosystem matures?

Design artifacts

The full design discussion (distribution scope = SBOM scope, Mode 3 framing, HAS_PREREQUISITE vs RUNTIME_DEPENDENCY_OF) is preserved in:

  • specs/006-release-process/research.md §2 and §12
  • specs/006-release-process/data-model.md (Prerequisites declaration entity)
  • specs/006-release-process/contracts/prerequisites-declaration.md
  • specs/006-release-process/contracts/release-artifact-shape.md (SBOM content expectations — currently reflects the dropped design)

These can serve as the starting point when this work is picked up.

Extension point

The release workflow (.github/workflows/release.yml) has a post-version-bump extension point where SBOM generation would naturally land — after validation passes, before signing/provenance.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions