ECC 插件清单约束指南:Claude Code plugin.json 验证器的未公开规则与正确姿势

发布时间:2026/10/29 0:57:21

ECC 插件清单约束指南:Claude Code plugin.json 验证器的未公开规则与正确姿势 ECC 插件清单约束指南Claude Code plugin.json 验证器的未公开规则与正确姿势【免费下载链接】ECCThe agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.项目地址: https://gitcode.com/GitHub_Trending/ev/ECC本文围绕 ECC 仓库中的 PLUGIN_SCHEMA_NOTES.md 展开系统讲解 Claude Code 插件清单plugin.json验证器那些未在公开 schema 文档中记载、但实际强制执行的约束必填的version字段、必须为数组的组件字段、严禁添加的agents/hooks字段、用于 MCP 隔离的空mcpServers声明等。读完本文你能够安全地修改、校验 ECC 或任何 Claude Code 插件的清单文件避开「本地验证通过、安装时报Invalid input」这类隐蔽故障并理解 ECC 如何用回归测试把这些规则固化下来。背景一个「严格且有主见」的验证器Claude Code 插件清单验证器的典型故障模式是清单文件看起来完全合理但验证器却拒绝它只抛出一个模糊的错误例如agents: Invalid input这类问题很难排查因为公开 schema 参考并没有完整描述验证器的全部行为。ECC 仓库把基于真实安装失败、验证器实际行为、以及和已知可用插件对比得出的约束记录在 PLUGIN_SCHEMA_NOTES.md 中目的正是「防止静默破坏和重复回归」。该文档的定位很明确如果你要编辑 plugin.json先读这份笔记。必填字段versionversion字段是验证器的强制要求即使某些官方示例里省略了它。缺失时安装可能失败在 marketplace 安装阶段或 CLI 校验阶段。{ version: 1.1.0 }从仓库自身的 schema 可以进一步看出取值约束plugin.schema.json 中version的 pattern 为^[0-9]\.[0-9]\.[0-9](?:-[0-9A-Za-z.-])?$即标准 SemVer可选带预发布后缀。当前 ECC 的实际清单中version为2.2.1与 marketplace.json 中声明的版本保持一致——两处版本号同步也是仓库测试所约束的。字段形状规则commands/skills/hooks必须永远是数组以下字段必须始终是数组commandsskillshooks如果存在即使只有一个条目字符串值也不被接受。这条规则一致地适用于所有组件路径字段。仓库的 plugin.json 遵循了这一点{ name: ecc, version: 2.2.1, mcpServers: {}, skills: [./skills/], commands: [./commands/] }对应的回归测试位于 tests/plugin-manifest.test.jsclaude plugin.json commands is an array确保commands字段一旦退化为字符串就会被测试捕获。路径解析规则commands和skills接受目录路径但仅当它们被包裹在数组中显式文件路径最安全、也最具前瞻性most future-proof。这与「避免依赖推断路径」的防反模式列表一脉相承能用显式路径就不要让验证器去猜。Agent 的toolsfrontmatter使用标量而不是数组上一条数组规则只适用于plugin.json不适用于agent 的 Markdown frontmatter。Claude Code 的 agent 文件使用逗号分隔的标量来声明工具白名单tools: Read, Glob, Grep不要写成 YAML 序列例如tools: [Read, Glob, Grep]。省略tools字段会让 agent 获得所有工具的访问权限但 ECC 的 agent 都显式声明白名单且仓库验证器要求该字段存在。仓库中的 agent 文件与这一规则完全一致例如 agents/code-reviewer.md--- name: code-reviewer description: Expert code review specialist. ... tools: Read, Grep, Glob, Bash model: sonnet ---这里tools: Read, Grep, Glob, Bash正是标准的逗号分隔标量写法68 个 agent 文件均遵循同样的形状。agents字段不要添加警告不要在plugin.json中添加agents字段。Claude Code 插件验证器会完全拒绝它。agents不是 Claude Code 插件清单 schema 的一部分。它的任何形式——字符串路径、路径数组、目录数组——都会导致校验错误agents: Invalid inputagents/目录下的 agent.md文件会按约定自动发现与 hooks 的机制类似不需要在清单中声明。历史沿革本仓库曾把 agents 以文件路径数组的形式显式列入plugin.json。这种做法通过了仓库自己的 schema 校验却通不过 Claude Code 实际验证器——因为后者根本不认识这个字段。该字段已在 PR #1459 中移除。hooks字段不要添加有回归测试强制警告不要在plugin.json中添加hooks字段。这一条由回归测试强制保护。Claude Codev2.1会按约定自动加载任何已安装插件的hooks/hooks.json。如果你同时在plugin.json里再声明一次就会触发重复加载错误Duplicate hooks file detected: ./hooks/hooks.json resolves to already-loaded file. The standard hooks/hooks.json is loaded automatically, so manifest.hooks should only reference additional hook files.反复横跳的历史这条规则在仓库中造成了多轮「修复/回滚」循环Commit动作触发原因22ad036添加 hooks用户报告 hooks not loadinga7bc5f2移除 hooks用户报告 duplicate hooks error#52779085e添加 hooks用户报告 agents not loading#88e3a1306移除 hooks用户报告 duplicate hooks error#103根因Claude Code CLI 在不同版本间改变了行为——v2.1 之前需要在清单中显式声明hooksv2.1 及以后按约定自动加载重复声明会直接报错。当前规则由测试固化这个「不要再加回去」的规则被写进了两处回归测试tests/hooks/hooks.test.js 中的plugin.json does NOT have explicit hooks declaration断言plugin.json不含hooks字段tests/plugin-manifest.test.js 中的同名测试直接断言!(hooks in claudePlugin)并注明「Claude Code v2.1 按约定自动加载hooks/hooks.json」。注意边界如果你在添加的是额外的hook 文件不是hooks/hooks.json本身那些可以在清单中声明但标准的hooks/hooks.json绝不能声明。ECC 的 hook 入口正是 hooks/hooks.json配合hooks/codex-hooks.json支持 Codex 侧的安装。mcpServers字段保留显式的空对象MCP 隔离开关ECC 在仓库根目录保留 .mcp.json 用于 Codex 插件安装和手工 MCP 配置此外还有更完整的 mcp-configs/mcp-servers.json包含 GitHub、Jira、Supabase、firecrawl 等多个 server 定义。但 Claude Code 也会按约定自动发现插件根目录的.mcp.json这会把同样的 MCP server 打包进 Claude 插件安装。因此 plugin.json 中刻意保留了这个显式空对象{ mcpServers: {} }这个 opt-out 的作用是阻止 Claude 插件安装自动加载 ECC 根目录的 MCP 定义。为什么必须这样做因为 Claude 插件 slug 虽然已刻意取短名ecc但遗留安装和严格的 provider 网关在更长的插件标识符上会生成超长 MCP 工具名并直接拒绝。例如形如mcp__plugin_everything-claude-code_github__create_pull_request_review的工具名超过 64 个字符会被严格的 OpenAI 兼容网关拒收。这一行为被 tests/plugin-manifest.test.js 精确验证测试先断言该历史超长工具名确实超过 64 字符再断言mcpServers键必须显式存在且严格等于{}Object.prototype.hasOwnPropertydeepStrictEqual保证未来重构不会无意移除这个 opt-out。想要使用打包 MCP server 的用户应手动从 .mcp.json 或 mcp-configs/mcp-servers.json 配置。验证器行为特征小结claude plugin validate比部分 marketplace 预览更严格路径有歧义时本地验证可能通过、安装时却失败错误信息往往很笼统Invalid input不指示根因跨平台安装尤其是 Windows对路径假设更不宽容。一句话心态假定验证器是敌对且字面化的Assume the validator is hostile and literal。已知反模式清单以下写法「看起来正确」但会被拒绝用字符串值代替数组以任何形式添加agents—— 不是被识别的清单字段会报Invalid input缺少version依赖推断路径inferred paths假设 marketplace 行为与本地验证一致添加hooks: ./hooks/hooks.json—— 该文件已被约定自动加载会触发重复错误移除mcpServers: {}—— 会重新启用 Claude 插件安装的根目录.mcp.json自动发现可能产生超长的 MCP 工具名。原则避免取巧保持显式Avoid cleverness. Be explicit.。最小可用示例与 ECC 实际清单对照文档给出的「已知可用最小示例」{ version: 1.1.0, commands: [./commands/], skills: [./skills/] }该结构已经过 Claude 插件验证器验证。注意其中既没有hooks字段也没有agents字段——两者都按约定自动加载显式添加任何一个都会导致错误。ECC 实际发布的 plugin.json 在此骨架上额外携带了元数据description、author、homepage、repository、license、keywords和两个userConfig偏好项hooks_enabled布尔默认true控制是否启用本地 hook 自动化和hook_profile字符串取minimal/standard/strict非法值安全回退到standard。tests/plugin-manifest.test.js 专门断言userConfig只暴露这两个 key且字段形状固定为type/title/description/default四项——注释说明 Claude 的userConfig不支持enum所以hook_profile只能声明为string并在运行时做回退。贡献者检查清单在提交任何触碰plugin.json的变更之前确保所有组件字段都是数组包含version不要添加agents或hooks字段两者都按约定自动加载除非有意改变 Claude 插件的 MCP 打包行为否则保留mcpServers: {}运行验证claude plugin validate .claude-plugin/plugin.json如有疑问宁要冗长、不要方便choose verbosity over convenience。为什么这份文档值得长期维护ECC 是一个被广泛 fork、并常被当作参考实现的仓库把验证器的「怪癖」文档化可以阻止问题反复出现、降低贡献者的挫败感、并在生态演进时保住插件的稳定性。文档的最后一句规则值得记住如果验证器本身变了先更新这份文档——它和 tests/plugin-manifest.test.js、tests/hooks/hooks.test.js 中的断言一起构成了「文档 测试」双层防线防止上述任何一条约束在后续版本中被无意破坏。【免费下载链接】ECCThe agent harness performance optimization system. Skills, instincts, memory, security, and research-first development for Claude Code, Codex, Opencode, Cursor and beyond.项目地址: https://gitcode.com/GitHub_Trending/ev/ECC创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/25 7:50:11

Svelte style: 指令完全指南:从模板语法到编译与运行时实现

Svelte style: 指令完全指南:从模板语法到编译与运行时实现 【免费下载链接】svelte web development for the rest of us 项目地址: https://gitcode.com/GitHub_Trending/sv/svelte 本篇基于 Svelte 官方文档中的 style: 指令说明,系统讲解这一…

2026/10/25 7:50:11

蓝牙音箱系统设计实战:从模块划分到整机验证

蓝牙音箱是消费电子里少有的“四合一”项目:射频、音频、电源、声学,任何一个方向单独拿出来都能养一个工程师岗位,但在这类产品里,所有人必须围绕同一个腔体和同一块 PCB 协作。这也是为什么很多蓝牙音箱项目开案时各模块都正常&…

2026/10/29 0:53:45

CEF 125与Chromium 6422集成指南:H264支持与C#实战

简介:CEF 125.0系列(Chromium 6422分支)x64架构H.264版本DLL合集,面向希望在WPF、WinForms等.NET桌面应用中嵌入现代浏览器内核、并需要原生支持H.264视频播放的C#开发者。该版本最低支持.NET Framework 4.6.2与Windows 10以上系统…

2026/10/29 0:53:45

2021南信大levoj部分参考答案:从解题框架到可复用算法模板

简介:南信大2021年LEVOJ在线编程平台的部分题目参考答案,面向南信大学生及算法编程爱好者,用于刷题复盘、算法巩固与考前冲刺。资源包大小约12KB,以C语言源码文件为主(文件总数未单列),覆盖字符…

2026/10/29 0:53:45

Agent-Reach:打造高可靠任务型智能体的落地工程方案

做智能体(Agent)项目最磨人的一件事,往往不是大模型不够聪明,而是它“说了”却没“做到”。模型很自信地给了你一段行动计划,结果实际调工具时参数传错、路径跑偏、任务做到一半卡住,最后返回一个看似正确实…

2026/10/29 0:53:45

SAP集团成本多级评估:OKEU参数与OKKP分配顺序

简介:SAP 集团成本多级评估是集团财务与成本会计领域的关键配置主题,这份 docx 文档面向集团财务人员、成本会计以及 SAP CO 模块实施顾问,重点解决集团内部与利润中心之间转移价格的合理确定,以及多币种环境下的成本评估难题。内…

2026/10/29 0:53:45

AI营销核心技术解析:动态用户画像与智能内容生成

1. 项目概述:AI营销如何重构企业增长逻辑去年服务某消费品客户时,他们的市场总监给我看了一组数据:传统EDM邮件打开率不足2%,而接入AI内容生成系统后,个性化邮件打开率飙升至27%。这个案例让我深刻意识到,A…

2026/10/29 0:48:45

Axure变量与表达式使用详解:跨页传值、中继器分页筛选避坑

简介:面向具备一定Axure基础的产品经理、UI/UX设计师与前端原型开发人员,这份专题PDF聚焦变量与函数系统在复杂原型交互中的落地方法,帮助读者从基础操作过渡到跨页面数据共享、动态列表生成、响应式布局调整与条件分支等进阶实现。资源包仅含…

2026/10/28 14:42:12

全国计算机二级C语言真题PDF高效刷题指南

简介:这份PDF是全国计算机二级C语言考试的试题与答案解析,专为备考二级C语言的考生准备。内容涵盖C语言特点与设计理念、程序基本组成单位、main函数执行流程、函数嵌套调用规则、标识符命名规范、整型实型字符型数据类型、八进制十六进制数合法形式、运…

2026/10/28 15:28:56

requests+BeautifulSoup:爬虫抓取h1标题的入门实战指南

简介:一份以实战为导向的Python爬虫入门资源,面向具备基本编程基础、希望快速掌握网络数据抓取的初学者,可解决从零编写简单爬虫的常见困惑。实例以requests库发送HTTP请求、BeautifulSoup解析HTML文档,完整演示从网页中提取 标题…

2026/10/28 3:32:29

递推最小二乘参数辨识MATLAB编程:二阶系统与渐消记忆实现

简介:这是一篇面向控制系统、信号处理与机器学习等领域学习者的最小二乘参数辨识程序说明文档。资源共包含一个docx格式文档,压缩包大小七十八KB,内容围绕递推最小二乘算法和渐消记忆最小二乘算法展开:先构造一个极点位于单位圆内…

2026/10/29 0:03:42

学生选课系统DFD图绘制指南:边界划分与分层校验实战

简介:文档以顶层与第一层DFD图为核心,完整刻画学生选课系统的逻辑模型,面向软件工程课程设计、系统分析学习及毕设前期建模人群。顶层图界定系统边界,外部实体包括管理员、教师和学生三类角色;第一层图进一步细化用户登…

2026/10/29 0:03:42

JIRA敏捷落地:Scrum角色权限、Sprint与燃尽图避坑指南

简介:围绕“基于JIRA的敏捷开发项目管理”这一主题,面向产品负责人、Scrum Master及研发测试成员,梳理Scrum角色分工、迭代流程与JIRA工具配置的对应关系,适合初、中级团队导入敏捷管理时参考。压缩包共1个docx文件,大…

2026/10/29 0:03:42

SEMI S8人机工程验收实战:从条款拆解到现场实测的完整指南

简介:面向半导体设备设计、制造与运维工程师及安全合规人员,这份资料聚焦SEMI标准体系下的设备安全规范,重点收录SEMI S8-0308《半导体制造设备人体工程学工程安全指南》。内容围绕设备设计原则、错误与事故预防、人体工程学适配三大主线展开…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑