Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
36 changes: 23 additions & 13 deletions specification/ai-catalog.md
Original file line number Diff line number Diff line change
Expand Up @@ -406,12 +406,17 @@ A Trust Manifest MUST contain:
DID, SPIFFE ID, or URL; these are illustrative and the set of
identity schemes is open.

When a Trust Manifest appears within a Catalog Entry, the `identity`
field's authority or trust domain MUST align with the publisher domain segment of
the entry's URN `identifier` field. This binding ensures trust claims are
cryptographically bound to the authorized publisher of the catalog entry.
Consumers MUST reject a Trust Manifest whose identity domain does not
align with the publisher domain of the entry's `identifier`.
When a Trust Manifest appears within a Catalog Entry whose
`identifier` carries a publisher domain segment (such as the
`urn:air` naming format), the `identity` field's authority or trust
domain MUST align with that publisher domain. This binding ensures
trust claims are bound to the authorized publisher of the catalog
entry. Consumers MUST reject a Trust Manifest whose identity domain
does not align with the publisher domain of such an entry's
`identifier`. When the `identifier` format has no publisher domain
segment (custom or local formats), this check does not apply, and
consumers SHOULD rely on other verification instead, such as
attestations or signature verification.

When a Trust Manifest appears on a Host Info object, `identity`
SHOULD match the host's `identifier` field when present.
Expand Down Expand Up @@ -1977,7 +1982,7 @@ plugins/
| Plugin `tags` | Entry `tags[]` (merged with category) |
| Plugin `author` | Entry `publisher` |
| Plugin `source` (url, git-subdir, or path) | Entry `url` (pointing to the plugin repository) |
| Plugin `source.sha` | Entry `trustManifest.provenance[].sourceDigest` |
| Plugin `source.sha` | Entry `metadata.sourceSha` (a git revision identifier, not a content digest) |
| Plugin `homepage` | Entry `metadata.homepage` |
| Plugin `.claude-plugin/plugin.json` | The artifact content (referenced via `url`) |
| *(not in marketplace)* | Entry `trustManifest` (identity, attestations) |
Expand All @@ -1992,7 +1997,10 @@ differently to AI Catalog entry fields:
Direct URL source
: `{"source": "url", "url": "https://github.com/org/repo.git", "sha": "..."}`
maps to entry `url` pointing at the repository, with `sha` captured
as provenance digest.
in entry `metadata`. A git commit SHA is a revision identifier
rather than a content digest of a fetchable document, so it does not
map to `sourceDigest` (which also requires SHA-256 or stronger, see
[Digest Format](#digest-format)).

Git subdirectory source
: `{"source": "git-subdir", "url": "org/repo", "path": "plugins/name", "ref": "main"}`
Expand Down Expand Up @@ -2038,15 +2046,15 @@ maps to an AI Catalog where each plugin is an entry:
"description": "Cross-platform ad management for Google Ads, Meta Ads, TikTok Ads, and LinkedIn Ads.",
"tags": ["productivity", "ads"],
"metadata": {
"homepage": "https://www.adspirer.com"
"homepage": "https://www.adspirer.com",
"sourceSha": "aa70dbdbbbb843e94a794c10c2b13f5dd66b5e40"
},
"trustManifest": {
"identity": "urn:claude-plugin:adspirer:ads-agent",
"provenance": [
{
"relation": "publishedFrom",
"sourceId": "https://github.com/amekala/adspirer-mcp-plugin",
"sourceDigest": "sha1:aa70dbdbbbb843e94a794c10c2b13f5dd66b5e40"
"sourceId": "https://github.com/amekala/adspirer-mcp-plugin"
}
]
}
Expand All @@ -2061,13 +2069,15 @@ maps to an AI Catalog where each plugin is an entry:
"identifier": "did:web:aikido.dev",
"displayName": "Aikido Security"
},
"metadata": {
"sourceSha": "d7fa8b8e192680d9a26c1a5dcaead7cf5cdb7139"
},
"trustManifest": {
"identity": "urn:claude-plugin:aikido:security",
"provenance": [
{
"relation": "publishedFrom",
"sourceId": "https://github.com/AikidoSec/aikido-claude-plugin",
"sourceDigest": "sha1:d7fa8b8e192680d9a26c1a5dcaead7cf5cdb7139"
"sourceId": "https://github.com/AikidoSec/aikido-claude-plugin"
}
]
}
Expand Down
Loading