Registry Resource Types & Source Types
RegistryResourceType (the type field)
SKILL · HOOK · PLUGIN · MCP · KNOWLEDGE · PROMPT · PERMISSION_PRESET · MEMORY_POLICY
Uniqueness is (organization, type, resourceKey) — the same key can be reused across different types.
RegistrySourceType (the sourceType field on publish)
| Value | Content-backed? | Meaning |
|---|---|---|
INLINE | ✅ | You paste the content directly. Default when sourceType is omitted. |
UPLOAD | ✅ | A packaged bundle (e.g. an entire plugin folder) sent as the content string. |
GIT_BACKED | ✅ | Content tracked in Git, synced in. |
CATALOG_PACKAGE | ✅ | A vendored package. |
EXTERNAL_REFERENCE | ❌ | A pointer to a vendor-hosted service — no content, metadata only. |
CLAUDE_MARKETPLACE | ❌ | A reference to a plugin on a Claude Code marketplace. The worker resolves or installs the selected version when package installation is enabled; otherwise it must already be available. |
AGENT_SKILLS | ❌ | A pointer to a skill in a real GitHub repo. Only valid for type: SKILL. |
BUILT_IN_PROVIDER | ❌ | A capability the Runtime Provider itself already has natively. |
PLATFORM_MANAGED | ❌ | A platform-owned policy (e.g. secret redaction), not user content. |
PACKAGE_INSTALLER | ❌ | An install command run on the worker rather than static content. |
"Content-backed" (✅) means content is required and gets uploaded to object storage as the version's payload — you'll get a 400 if you omit it. Not content-backed (❌) means metadata is required instead — omitting that is the 400 you'll get.
Metadata envelope (compatibility)
Every publish gets normalized into a schemaVersion: "agentmesh.registry/v2" envelope with a compatibility block:
{
"schemaVersion": "agentmesh.registry/v2",
"sourceType": "...",
"compatibility": {
"mode": "PORTABLE" | "NATIVE",
"adapterKeys": ["claude-code"],
"requiredFeatures": ["hooks"]
}
}
Default mode by type: HOOK/PLUGIN (and anything BUILT_IN_PROVIDER) default to NATIVE; everything else defaults to PORTABLE. Native resources must identify a compatible adapter. Legacy HOOK and PLUGIN metadata without adapterKeys falls back to claude-code; other native resources may be rejected when no adapter can be derived. requiredFeatures defaults by type: SKILL→skills, HOOK→hooks, PLUGIN→plugins, MCP→mcp.
Adapter/feature identifiers are canonicalized to lowercase and must match [a-z0-9][a-z0-9._-]{0,119} — claude/claude-cli both canonicalize to claude-code.
Referencing a resource from an Agent Profile
The ref format is resourceKey@version or resourceKey@latest. At dispatch time AgentMesh resolves the selected version and checks its provider compatibility:
- A missing, wrong-version, or incompatible resource fails dispatch when its binding has
required: true. - A missing, wrong-version, or incompatible optional resource is skipped.
- A registered but inactive resource fails dispatch; deactivate or remove its binding before running the profile.
Required-resource failures return 409 CONFLICT before a workspace is provisioned.