给 Codex 配好的 Skill,换到 Cursor 或 Claude Code 里,为什么常常还要重新摆目录、再写一遍配置?Agent Plugins 想解决的正是这份重复劳动。它不是新模型,也不是插件商店,而是一套由Amazon、Cursor、Microsoft、OpenAI 和 Vercel联合开放的可移植包规范,把 plugin.json、Agent Skills 和 MCP 服务器装进可预测的目录。本文把 1.0.0 的结构、加载规则和安全边界拆开讲清楚,再用一个最小插件走完整个过程。
01为什么 Agent 插件需要一种共同格式
AI Agent 的能力越来越像软件工程里的依赖包。有人把工作方法写进 Agent Skills,有人通过 MCP 接入服务,也有人为某个客户端补上命令、钩子或专用配置。
问题是,同一份能力到了不同客户端里,往往要换目录、改字段、复制文件。作者维护的是同一个插件,却可能要准备好几套包装。客户端也得理解各自不同的布局,迁移成本就这样一点点堆起来。
Agent Plugins 给出的答案很克制。它不试图统一所有 Agent 产品,只定义一个最小的互操作底座:什么文件必须存在,Skills 和 MCP 放在哪里,客户端怎样发现它们,哪里出错时应该停多大范围。
所以它更像插件世界的通用包装箱,而不是一个新的运行时。箱子的尺寸和标签统一了,谁来运输、怎么安检、最终摆进哪个货架,仍由客户端决定。
02一个插件的最小骨架
一个 Agent Plugin 就是一个自包含目录。根目录必须有 plugin.json,Skills 和 MCP 配置都是可选项。完整一点的结构可以长这样:
my-plugin/├── plugin.json├── skills/│ └── summarize/│ ├── SKILL.md│ ├── scripts/│ └── references/├── mcp.json└── com.example.client/ └── hooks/这里有四层角色。
plugin.json 说明插件是谁、面向哪个规范版本。skills/ 放 Agent Skills,每个直接子目录代表一个可被发现的 Skill。mcp.json 描述本地或远程 MCP 服务器的连接方式。com.example.client/ 是客户端扩展目录,用反向域名命名空间避免撞名。

这套布局有两个容易忽略的点。一个是固定位置,plugin.json 不能把 Skills 或 MCP 重定向到任意目录。另一个是包边界,规范要求插件提供的文件解析后仍留在插件根目录内,不能靠 ../、符号链接或同类机制逃出包。
03plugin.json 先把身份和版本说清楚
plugin.json 是每个插件唯一的可移植清单。最小版本只有两个必填字段:
{ "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json", "name": "hello-plugin"}$schema 不只是给编辑器做自动补全,它声明了整套校验和解释规则。客户端应根据自己已经支持的规范版本来解析插件,不能在加载插件时临时上网下载一个陌生 Schema,再边看边猜。
name 也有明确约束。它只能使用小写字母、数字、连字符和句点,长度为 1 到 64 个字符,首尾必须是字母或数字,不能出现连续的 -- 或 ..。
清单的顶层结构是封闭的。除了 $schema、name、version、description、author、homepage、repository、license、keywords 和 extensions,其他顶层字段都不属于可移植规范。未知顶层字段会被报告并忽略;其余类型或约束错误通常会让整个插件被拒绝。
这个区别很关键。拼错一个可选字段,不应该偷偷获得新语义;真正破坏清单结构的错误,也不能带病继续加载。
04Skills 和 MCP 一个教方法,一个接能力
Agent Plugins 1.0 只定义两种可移植组件:Agent Skills 和 MCP servers。
Agent Skills 负责把操作方法、领域知识和配套资源打包。规范并不重新发明 SKILL.md,而是直接采用 Agent Skills 规范。Agent Plugins 只规定发现位置:客户端扫描 skills/ 的直接子目录,找到名称精确为 SKILL.md 的普通文件;它不会递归到更深层继续找新的 Skill。
MCP 负责连接外部工具和数据。根目录的 mcp.json 使用封闭结构,1.0.0 支持三种传输类型:
stdio:用单个可执行文件令牌启动本地进程。streamable-http:连接当前的远程 MCP HTTP 端点。sse:兼容旧版 HTTP+SSE,客户端可以不支持。
一个本地服务器配置可以这样写:
{ "$schema": "https://agent-plugins.org/schemas/1.0.0/mcp.schema.json", "mcpServers": { "validator": { "type": "stdio", "command": "./bin/validator", "args": ["--data", "${PLUGIN_DATA}/validator"], "env": { "CONFIG": "${PLUGIN_ROOT}/config.json" }, "cwd": "${PLUGIN_ROOT}" } }}PLUGIN_ROOT 指向已解析的插件根目录,适合读取随包发布的脚本和配置。PLUGIN_DATA 是客户端为当前插件实例管理的可写持久目录,适合放依赖、缓存和更新后仍需保留的数据。
两者不能混用。包内文件属于 PLUGIN_ROOT,运行时状态属于 PLUGIN_DATA。这样升级插件时,客户端既能替换包内容,也不用顺手把缓存和持久数据一起抹掉。
05客户端怎样加载,也怎样把故障关在局部
客户端会先读取并校验根目录的 plugin.json,然后按自己支持的组件类型去固定位置发现 Skills 与 MCP。缺少 skills/ 或 mcp.json 不是错误,因为两者本来就是可选的。
真正有意思的是故障边界。
如果 plugin.json 存在致命 Schema 错误,整个插件会被拒绝。如果某一个 SKILL.md 无效,客户端跳过这个 Skill,其他组件继续加载。如果 mcp.json 顶层结构、版本或 Schema 不合法,只禁用这个插件的 MCP;如果只是某个服务器条目配置错误、传输不受支持、启动失败或认证失败,也只跳过那个条目。

这是一种很实用的失败策略。一个插件里既有文档型 Skill,又有三个 MCP 服务,其中一个远程端点暂时不可用,不应该让其余能力全部消失。规范要求客户端尽量报告问题,同时继续加载彼此独立的有效组件。
对插件作者来说,这也改变了调试顺序。先确认是清单级错误、组件类型级错误,还是单个服务器级错误,再决定修哪里。别一看到插件没完全工作,就把整个目录推倒重来。
06共同格式不等于统一运行时
Agent Plugins 解决的是包装与发现,不包办安装、分发、启用、更新、权限、用户界面和凭据管理。客户端可以逐步采用规范,只支持 Skills 的客户端也能合规;支持 MCP 的客户端至少实现 stdio 或 streamable-http 之一即可。

安全边界更不能读错。插件路径必须留在包内,这能防止包通过配置路径直接越界读取其他文件,但规范明确说明,这不等于给插件子进程套上沙箱。进程启动后能访问什么路径、拥有什么网络和系统权限,仍要看客户端与操作系统的执行策略。
凭据也不该塞进插件包。远程 MCP 的 headers 和本地服务器的 env 都是可见配置,不是通用秘密存储。1.0.0 没有定义可移植的 OAuth 或凭据引用字段,认证发现、用户交互和凭据保存都由客户端处理。
把这条边界记住,很多误解会自然消失。Agent Plugins 让同一份能力更容易被多个客户端理解,但它没有替你完成权限审计,也没有保证来自任意来源的插件都安全。
07五分钟搭一个最小插件
最小可用插件只需要一个清单和一个 Skill。先创建目录:
hello-plugin/├── plugin.json└── skills/ └── greet/ └── SKILL.mdplugin.json 使用前面那份最小清单。再写 skills/greet/SKILL.md:
---name: greetdescription: 向用户打招呼并主动询问需要什么帮助。---向用户打招呼,并用一句话询问需要什么帮助。然后按五项检查。
$schema 是否正好指向目标 Agent Plugins 版本。name 是否满足小写命名规则。每个 Skill 是否位于 skills/的直接子目录,文件名是否精确为SKILL.md。配置中被规范定义为插件相对路径的字段,是否以 ./开始并保持在插件根目录内。如果加入 mcp.json,它的 Schema 版本是否与plugin.json一致,配置里是否没有密钥。
做到这里,插件包已经符合可移植结构。怎样把本地目录安装或导入具体客户端,规范故意没有统一命令,需要继续看对应客户端的安装说明。
这不是缺失,而是边界设计。不同客户端有不同的信任模型、发布渠道和交互方式,强行塞进 1.0.0,只会把一个小而稳的互操作底座重新做成大而难落地的平台。
08现在能用在哪里,以及还该观察什么
截至 2026 年 8 月 7 日,官网的兼容客户端页面列出了 VS Code、Cursor、GitHub Copilot、ChatGPT & Codex 和 Kiro。它们支持的 MCP 传输并不完全相同,这正好说明客户端可以渐进采用,而不是等所有能力一次性对齐。
项目以开放方式开发。官网称初始技术指导委员会包含来自 Amazon、Cursor、Microsoft、OpenAI 和 Vercel 的核心维护者,重大提案与技术决策通过公开仓库和 GitHub Discussions 推进。
不过,1.0.0 的完整规范页面仍标为草案状态。今天可以基于它做插件、验证目录、梳理迁移方式,也应该在正式分发前固定目标 Schema 版本,并关注后续规范变化。尤其是 commands、hooks、agents、rules 和 LSP servers 等组件,目前都不属于 v1 的可移植核心。
Agent Plugins 不是它又给生态添了一个新名词,而是它主动把目标缩小了。先让 Skills 和 MCP 用同一种包装方式移动起来,再把权限、分发和产品体验留给客户端竞争。
一个小小的共同格式,可能比一套试图包办一切的宏大平台更容易真正长出来。
参考:https://agent-plugins.org/
夜雨聆风