Skip to content

ci: guard that every bundled SKILL.md carries metadata.github-* provenanceΒ #40

Description

@devantler

πŸ€– Generated by the Daily AI Assistant

Part of #38 (Theme 4 β€” provenance & supply-chain hardening).

Problem

AGENTS.md is emphatic that bundled skills come only from upstream via gh skill install and are never hand-edited to diverge β€” the install records the true upstream in each skill's metadata.github-* frontmatter (github-repo, github-path, github-ref, github-tree-sha). But scripts/validate-manifests.sh enforces only structural parity (manifest ↔ filesystem ↔ README table). It does not assert that every bundled SKILL.md actually carries that provenance frontmatter, so a hand-authored or provenance-stripped skill would pass CI today β€” silently breaking the "sourced from upstream, never divergent" contract.

Proposed direction

Extend scripts/validate-manifests.sh with a provenance-presence guard: for every discovered plugins/*/skills/*/SKILL.md, assert the frontmatter contains a non-empty metadata.github-repo (and ideally github-path/github-ref). Fail with a clear message naming the offending skill if absent. Pin the new check in scripts/validate-manifests.test.sh β€” PASS a fixture with provenance, FAIL a fixture with it stripped β€” so a future refactor that weakens the guard fails the self-test (the repo's established discipline).

Acceptance criteria

  • validate-manifests.sh fails when any bundled SKILL.md lacks metadata.github-repo provenance.
  • validate-manifests.test.sh covers both the PASS (provenance present) and FAIL (stripped) scenarios.
  • All currently-bundled skills pass the new guard (or any genuinely-local skill is explicitly exempted with a documented reason).

Size

S β€” single guard function + self-test, mirroring the existing checks; immediately shippable.

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

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions