A copyable reference package for the Agent Plugins Specification v1.0.0.
This repository demonstrates the portable core and includes an Agent Skill that helps migrate existing plugins from client-specific formats. It is a reference example, not a substitute for the normative specification; if they differ, the specification wins.
agent-plugins-example/
├── plugin.json # Required portable manifest
├── skills/ # Portable Agent Skills
│ └── migrate-agent-plugin/
│ ├── SKILL.md
│ └── references/
│ ├── client-extensions.md
│ ├── migration-guide.md
│ └── validation-checklist.md
├── README.md
└── LICENSE
The smallest valid plugin needs only plugin.json. This example includes a skill so it is useful as well as structurally illustrative.
Agent Plugins v1 defines two portable component types:
skills/.mcp.json using the matching v1.0.0 MCP schema.The root plugin.json schema is closed. Do not add hooks, agents, commands, mcpServers, lspServers, or arbitrary client fields at its top level. Put portable MCP configuration in mcp.json and client-owned manifest data inside extensions.
See the authoritative documentation for the plugin manifest, skills, MCP servers, and client extensions.
Hooks and similar capabilities are not portable v1 components. A client can add them through a reverse-domain extension namespace it owns and documents:
your-plugin/
├── plugin.json
├── skills/
├── mcp.json # Optional portable MCP configuration
└── com.vendor.client/ # Optional client extension
└── hooks/
└── hooks.json
If a client uses both manifest data and files, plugin.json can contain an extension object:
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "your-plugin",
"extensions": {
"com.vendor.client": {
"settingDefinedByThatClient": true
}
}
}
com.vendor.client is illustrative. Use only a namespace and fields documented by the client that owns them. Other clients ignore an extension they do not implement, leaving the portable skills and MCP configuration usable.
Use an additive migration:
plugin.json without deleting working platform files.skills/<skill-name>/SKILL.md.mcp.json with explicit transport types.The included migrate-agent-plugin skill contains the full migration workflow, artifact mapping, extension strategy, and validation checklist.
name, version, description, author, and other allowed metadata in plugin.json.skills/.mcp.json only if the plugin provides MCP servers.The directory name and manifest name do not have to match under the portable specification, but keeping them identical is strongly recommended for predictable packaging and discovery.
7 commits
4 commits
A copyable reference package for the Agent Plugins Specification v1.0.0.
This repository demonstrates the portable core and includes an Agent Skill that helps migrate existing plugins from client-specific formats. It is a reference example, not a substitute for the normative specification; if they differ, the specification wins.
agent-plugins-example/
├── plugin.json # Required portable manifest
├── skills/ # Portable Agent Skills
│ └── migrate-agent-plugin/
│ ├── SKILL.md
│ └── references/
│ ├── client-extensions.md
│ ├── migration-guide.md
│ └── validation-checklist.md
├── README.md
└── LICENSE
The smallest valid plugin needs only plugin.json. This example includes a skill so it is useful as well as structurally illustrative.
Agent Plugins v1 defines two portable component types:
skills/.mcp.json using the matching v1.0.0 MCP schema.The root plugin.json schema is closed. Do not add hooks, agents, commands, mcpServers, lspServers, or arbitrary client fields at its top level. Put portable MCP configuration in mcp.json and client-owned manifest data inside extensions.
See the authoritative documentation for the plugin manifest, skills, MCP servers, and client extensions.
Hooks and similar capabilities are not portable v1 components. A client can add them through a reverse-domain extension namespace it owns and documents:
your-plugin/
├── plugin.json
├── skills/
├── mcp.json # Optional portable MCP configuration
└── com.vendor.client/ # Optional client extension
└── hooks/
└── hooks.json
If a client uses both manifest data and files, plugin.json can contain an extension object:
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "your-plugin",
"extensions": {
"com.vendor.client": {
"settingDefinedByThatClient": true
}
}
}
com.vendor.client is illustrative. Use only a namespace and fields documented by the client that owns them. Other clients ignore an extension they do not implement, leaving the portable skills and MCP configuration usable.
Use an additive migration:
plugin.json without deleting working platform files.skills/<skill-name>/SKILL.md.mcp.json with explicit transport types.The included migrate-agent-plugin skill contains the full migration workflow, artifact mapping, extension strategy, and validation checklist.
name, version, description, author, and other allowed metadata in plugin.json.skills/.mcp.json only if the plugin provides MCP servers.The directory name and manifest name do not have to match under the portable specification, but keeping them identical is strongly recommended for predictable packaging and discovery.
7 commits
4 commits