Expand description
Plugin bundle contract: the .claude-plugin/plugin.json manifest shape and
the well-formedness predicate every consumer shares.
A plugin bundle is the installable artifact a host (Claude Code / Cowork)
reads: a directory rooted on .claude-plugin/plugin.json plus the component
files it ships (skills/<n>/SKILL.md, agents/<n>.md, .mcp.json, …).
PluginManifest is that manifest; bundle_has_manifest is the single
definition of “is this directory a well-formed bundle?” so the gateway
serve path, the bridge sync, the CLI generator, and the marketplace export
never drift on the contract.
The manifest is also an inbound shape: the importer reads manifests
authored for Claude Code, which permit component keys systemprompt derives
from the tree instead (skills, agents, commands) and inline MCP server
definitions. Those keys are accepted as opaque serde_json::Value — an
external-format boundary whose shape Anthropic owns — and are never
serialised back out, so the bundle contract this crate emits is unchanged.
Copyright (c) systemprompt.io — Business Source License 1.1. See https://systemprompt.io for licensing details.
Structs§
Enums§
- Manifest
Dependency - One
dependenciesentry in Claude Code’splugin.jsonvocabulary: a bare plugin name resolved in the same marketplace, or an object naming the marketplace and a semver range.