Skip to content

feat(catalog): add attested-delivery plugin + harden pin enforcement - #1

Merged
zircote merged 6 commits into
mainfrom
feat/catalog-attested-delivery-plugin
Jun 23, 2026
Merged

feat(catalog): add attested-delivery plugin + harden pin enforcement#1
zircote merged 6 commits into
mainfrom
feat/catalog-attested-delivery-plugin

Conversation

@zircote

@zircote zircote commented Jun 22, 2026

Copy link
Copy Markdown
Contributor

Summary

Introduces the attested-delivery plugin (agents + skills, hosted in the .github/ subdir of attested-delivery/.github) to the marketplace catalog, and hardens pin enforcement so the catalog cannot point at an unpinned or non-resolving plugin.

⚠️ Draft — SHA is a placeholder

The plugin's 11 files are currently staged, not committed in .github, so no commit contains it yet. The entry is pinned to the current .github main (b266315) as a placeholder, and catalog-admission correctly fails on it (that commit has no .github/.claude-plugin/plugin.json). Bump sha to the commit that lands the plugin (you're merging them together), then mark ready — admission will go green.

Changes

  • Catalog entry (git-subdirurl + path: .github + ref + sha) for attested-delivery.
  • Pin enforcement hardened (your requirement — plugins MUST be pinned; CI must absolutely require pins):
    • catalog-admission now runs on every PR (not only marketplace.json changes) so it can be a required status check.
    • It rejects a ref without a sha, and rejects any external pin whose sha does not resolve to a real .claude-plugin/plugin.json — a 40-char string alone is no longer enough.
  • Doc fix: docs/how-to/add-a-plugin.md git-subdir schema corrected to url/path (was repo/subdir) per canonical Anthropic docs.

Required-check action (owner)

Add catalog-admission to branch protection required checks so the pin requirement is enforced at merge.

@zircote
zircote marked this pull request as ready for review June 22, 2026 21:49
Copilot AI review requested due to automatic review settings June 22, 2026 21:49

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds the new attested-delivery external plugin entry to the marketplace catalog and strengthens CI admission so the catalog cannot reference mutable or non-resolving external plugin pins.

Changes:

  • Add a git-subdir + url/path + ref + sha catalog entry for attested-delivery.
  • Update catalog-admission workflow to run on every PR and fail closed on missing/invalid pins, plus verify that pinned SHAs actually contain a plugin manifest.
  • Update plugin-subdir documentation schema (repo/subdirurl/path) and describe the stricter admission invariants.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.

File Description
docs/how-to/add-a-plugin.md Updates the documented external plugin source schema and clarifies the stricter admission gate behavior.
.github/workflows/catalog-admission.yml Runs admission on all PRs and adds a fail-closed “pinned SHA resolves to plugin.json” check.
.claude-plugin/marketplace.json Adds the new attested-delivery external plugin entry pinned by sha.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread .github/workflows/catalog-admission.yml
Comment thread .claude-plugin/marketplace.json Outdated
zircote and others added 2 commits June 22, 2026 22:41
- Catalog the attested-delivery plugin (agents + skills) hosted in the .github/
  subdir of attested-delivery/.github via a git-subdir source. SHA is a PLACEHOLDER
  (current .github main) — the plugin is staged-not-committed there; bump to its
  real merge commit before this leaves draft.
- catalog-admission now runs on EVERY pull request (not only marketplace.json
  changes) so it can be a required status check, and additionally REJECTS any
  external pin whose sha does not resolve to a .claude-plugin/plugin.json — a sha
  string alone is no longer sufficient.
- Fix the git-subdir schema in docs/how-to (url/path, not repo/subdir) per the
  canonical Anthropic docs.
Re-pin the plugin entry from the placeholder SHA to the .github v0.1.0 release
(f211de9, ref v0.1.0), which contains .github/.claude-plugin/plugin.json so the
new fail-closed resolver check passes.
@zircote
zircote force-pushed the feat/catalog-attested-delivery-plugin branch from 257b476 to 33a64b0 Compare June 23, 2026 02:41
@zircote
zircote requested a review from Copilot June 23, 2026 02:42

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.

Comment thread docs/how-to/add-a-plugin.md
Comment thread .github/workflows/catalog-admission.yml
Comment thread .github/workflows/catalog-admission.yml Outdated
…attestations

Switch the attested-delivery plugin entry from url/path to canonical repo/subdir
(the schema the shared verify engine reads), and teach the resolver to accept
both forms. With .github v0.1.0 now attested, catalog-admission verifies the
release's SLSA provenance fail-closed.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated 3 comments.

Comment thread .claude-plugin/marketplace.json
Comment thread docs/how-to/add-a-plugin.md Outdated
Comment thread .github/workflows/catalog-admission.yml
…engine fix

claude plugin validate requires the url/path form for git-subdir (not repo/subdir).
Revert the attested-delivery plugin entry to url/path (keep v0.1.0 / f211de9), and
re-pin catalog-admission's verify engine to the .github SHA that resolves repo from
url (36cdbd7). Now: claude-validate, the resolver, and the fail-closed attestation
verify against .github v0.1.0 all pass.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.

Comment thread .github/workflows/catalog-admission.yml Outdated
- catalog-admission resolver: accept https/git@/ssh URL forms and normalize
  trailing slash before .git; a non-github URL yields an invalid slug and fails
  closed (Copilot).
- add-a-plugin: list the fail-closed attestation-verify invariant in the
  catalog-admission section.

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 3 out of 3 changed files in this pull request and generated no new comments.

@zircote
zircote merged commit 51f03c7 into main Jun 23, 2026
21 checks passed
@zircote
zircote deleted the feat/catalog-attested-delivery-plugin branch June 23, 2026 03:17
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants