Claude Code 自己写一个插件并发布到 marketplace:plugin.json、marketplace.json、validate 到团队安装的完整流程

想把自己写的 Skill、Hook 打包给团队用?按 Claude Code 官方 Plugins 文档,从目录结构、plugin.json、claude plugin validate,到写 marketplace.json、推到 Git、让同事一条命令安装,再到版本更新,走完一遍完整流程。

NNathaniel bigo··原创首发·AI 辅助撰写
12 分钟读完
资料核对于 2026-11-05 · 依据官方文档与公开资料整理 Pro 账号
本文根据 Claude Code 官方文档《Create a Claude Code plugin》《Publish a plugin》《Create a marketplace》整理,资料核对于 2026-11-05。配图为本站整理的示意图,不是界面截图。本站(bigolab.com)不是 Anthropic 官方网站。

适用于谁

  • 已经有自己的 Skill、子智能体或 Hook,想打包后让团队一条命令装上的人;
  • 想知道「插件」「marketplace」到底是什么关系、怎么自己建一个的人。

怎么安装别人的插件,站内已有 /guides/claude-code-plugins-marketplace;本文讲自己做、自己发。

结论先说

  1. 插件 = 一个目录 + 一份清单。 官方定义:插件是一组 Skill、子智能体、Hook、MCP 服务器的目录,外加 .claude-plugin/plugin.json(清单),Claude Code 把它当作一个整体加载。
  2. 什么时候值得做成插件。 官方说,只给自己或一个项目用,保留 .claude/ 里的独立配置就行;想与团队共享、装进多个项目或发布带版本的发行版,再做插件。
  3. 插件里的 Skill 命令带前缀。 例如 /my-first-plugin:hello,所以两个插件都有 hello 也不会冲突。
  4. marketplace 就是一个 Git 仓库里的 .claude-plugin/marketplace.json。 官方说文件进了仓库,插件就算发布了,没有提交表单;仓库私有,市场就是私有的。
  5. 改了代码但没改 version,用户收不到更新。 这是官方特别提醒的坑。

从目录到团队安装的流程

图:本站根据 Claude Code 官方文档:Create a plugin 整理的示意图

一、目录结构和 plugin.json

下面用一个演示插件 db-guard,里面装站内另一篇讲过的 migration-review Skill(见 /guides/claude-code-write-own-skill-auto-trigger)。官方规定每类组件放在固定位置:

text
db-guard/
├── .claude-plugin/
│   └── plugin.json
├── skills/
│   └── migration-review/
│       ├── SKILL.md
│       └── scripts/check.sh
├── agents/            # 可选:子智能体,每个一个 .md
├── hooks/hooks.json   # 可选:Hook 配置
└── .mcp.json          # 可选:MCP 服务器

官方特别强调:.claude-plugin/ 里只放 plugin.json,把 Skill 放进去不会加载;插件根目录是它自己的目录,不是 ~/.claude/。

bash
mkdir -p db-guard/.claude-plugin db-guard/skills

db-guard/.claude-plugin/plugin.json(字段来自官方示例):

json
{
  "name": "db-guard",
  "description": "数据库迁移检查:Skill 与检查脚本",
  "version": "1.0.0",
  "author": { "name": "Your Name" }
}

官方对字段的说明:name 必填,会成为插件里每个 Skill 和子智能体的前缀,不要有空格;description 是用户在 /plugin 里看到的文字;version 可选,设置后用户停留在该版本,直到你改它;author.name 必填(若写了 author)。

二、把已有配置搬进插件

如果你已经有 .claude/ 下的配置,官方的迁移做法是复制:

bash
cp -r .claude/skills db-guard/
cp -r .claude/agents db-guard/      # 没有就跳过
cp -r .claude/commands db-guard/    # 没有就跳过

Hook 要把 .claude/settings.json 里的 hooks 对象复制进 hooks/hooks.json,格式相同,外面包一层顶层 "hooks" 键。官方提醒两点:

  • 迁移期间原来的 .claude/ 还在,Skill 和子智能体因为带前缀不会冲突,但 Hook 没有前缀,两处都有会各跑一次;确认插件好用后,删掉原件并从设置里移除 hooks。
  • 脚本路径在 Hook 命令和 MCP 配置里要写成 ${CLAUDE_PLUGIN_ROOT}/...,官方说 validate 会报告不是 ./ 开头的组件路径。

三、验证和本地试跑

官方在发布前建议的三步:

bash
claude plugin validate ./db-guard
claude --plugin-dir ./db-guard

第一条会检查清单和 Skill 的 frontmatter,通过时最后一行是 ✔ Validation passed;失败时每条消息会指出要改的字段。第二条只在这次会话里加载插件,不写入你的设置。进去后运行带前缀的命令:

text
/db-guard:migration-review

边改边测时,官方说在会话里运行 /reload-plugins 加载改动。发布前再用 claude plugin validate --strict ./db-guard,它会把「未知字段」「缺少 version」之类的警告也当失败(退出码 1),适合放进 CI。

四、写 marketplace.json 并推到 Git

官方给了最省事的发布方式:插件自己的仓库里就放一份市场文件,位置在 .claude-plugin/marketplace.json,source 写 "./" 表示仓库根:

json
{
  "name": "acme-tools",
  "owner": { "name": "Your Name" },
  "plugins": [
    { "name": "db-guard", "source": "./" }
  ]
}

规则(来自官方):

  • 市场的 name 要起得别人不容易重名,因为一个用户不能装两个同名市场;
  • 条目的 name 要和 plugin.json 里的 name 一致,否则按清单名安装会报 Plugin "<manifest-name>" not found in marketplace;
  • 相对路径从市场根目录写,不要用 ..;
  • 官方保留了一批名字(例如 claude-plugins-official),添加叫这个名字的市场会被拒绝。

如果一个仓库里放多个插件,官方的目录是 my-marketplace/plugins/<插件名>/,条目 source 写 ./plugins/<插件名>。

先在本机走通一遍再推送,官方的本地回路是:

bash
claude plugin validate .
claude plugin marketplace add ./
claude plugin install db-guard@acme-tools
claude plugin list

install 的 id 是「条目名 + @ + 市场名」;list 里应看到 db-guard@acme-tools 且状态为 enabled。想从头再来,用 claude plugin marketplace remove acme-tools,它会移除市场并卸载其中的插件。然后 git push 到你的 GitHub 或其他 Git 仓库即可,官方说谁能克隆仓库谁就能安装,所以私有仓库就是私有市场。

自建 marketplace 常见错误怎么查

图:本站根据官方文档整理的示意图

五、同事怎么装

官方给的几种写法,把来源和名字换成你的:

bash
claude plugin marketplace add your-org/acme-tools
claude plugin install db-guard@acme-tools

会话里也可以一条命令完成:/plugin install db-guard --marketplace your-org/acme-tools(官方标注需要 v2.1.275 或更高);在 shell 里一步完成的写法需要 v2.1.292 或更高。安装前请同事先看看你的仓库里放了什么,原因见 /guides/agent-skills-security-audit-before-install。

六、发新版本

官方的规则是二选一:

  • 每次发布都递增 plugin.json 里的 version。 如果你设了 version,之后只推提交不改版本,用户运行 claude plugin update 会看到 is already at the latest version,仍然用旧的;
  • 或者在 Git 托管的市场里干脆不写 version,这时 Claude Code 用提交的 SHA 当版本。此时 --strict 会因缺少 version 报警,官方说那就去掉 --strict。

用户拿更新有两条路:自己运行 claude plugin update db-guard@acme-tools;或者为你的市场开自动更新,官方说默认是关的,由用户一侧设置。

七、要发给更多人怎么办

按官方「Publish a plugin」的对比:

方式谁能装自动拿更新吗
不用市场,直接发目录或 .zip你发给的人不会,他们用的就是你发的那份
自己的 marketplace能访问该仓库的人默认关
提交到 Anthropic 目录在 claude.ai 或 Cowork 里添加的人,也会同步进他们的 Claude Code会(版本发布之后)

提交到 Anthropic 目录需要一个 GitHub 仓库和付费的 claude.ai 方案,在开发者门户提交;官方还说本地 validate 通过不保证门户一定通过,门户有额外规则。官方的 claude-plugins-official 市场不接受通过这个门户提交。这部分流程以 claude.com 官方页面为准,本文不展开。

常见问题

Q:只想给自己用,需要 marketplace 吗?

不需要。官方说可以用 --plugin-dir,或者把带 .claude-plugin/plugin.json 的目录放到 ~/.claude/skills/ 下,之后每次启动自动加载(除非管理员禁用了)。目录优先级见 /guides/claude-code-skills-directory-location-priority。

Q:claude plugin validate 过了,安装还是失败?

官方说两者查的东西不同:validate 只读市场目录内的文件。条目的 source 指向不存在的目录时 validate 会通过,但安装时报 Source path does not exist;github、git-subdir 这类远程来源写错,也只会在安装时暴露。

Q:装好了没看到我的 Skill?

先 claude plugin details <插件名> 看 Component inventory 里有没有列出;再对照第一节的目录结构,确认 Skill 在 skills/<名字>/SKILL.md,而不是放进了 .claude-plugin/(官方说放在那里的组件不会加载)。

订阅和额度

插件里的 Skill 和子智能体运行时用的是你自己的 Claude Code 额度。订阅选择见 /chongzhi/claude-code,价格和额度以官方页面当前显示为准。

相关教程

参考资料

  • Claude Code 文档:Create a Claude Code plugin — https://code.claude.com/docs/en/plugins/create
  • Claude Code 文档:Publish a plugin — https://code.claude.com/docs/en/plugins/publish
  • Claude Code 文档:Create a marketplace — https://code.claude.com/docs/en/plugin-marketplaces

Nathaniel 的更多内容

  1. 01

    Claude Personal Finance 是什么:连银行账户问花销、怎么开、只读权限、谁能用、怎么解除

    Claude 的 Personal Finance(beta)通过 Plaid 只读连接你的银行、信用卡、贷款和投资账户,在一页里看余额和花销并用自然语言提问。本文按官方帮助页讲谁能用(仅美国、Pro/Max/Ultra)、连接与解除步骤、Claude 能看什么,以及它做不到的事。

    Claude0
  2. 02

    Claude Code 离开一小时回来对话被「压缩」了:Idle compaction 是什么、条件、怎么关

    Claude Code 的 idle compaction 会在你离开约一小时后,把 200K token 以上的长对话先压缩成摘要,下一条消息就不用重新处理整段历史。本文按官方文档讲触发条件、看到什么提示、用 /config 或 idleCompaction 关闭、调阈值,以及恢复旧对话的用量警告。

    Claude0
  3. 03

    ChatGPT Computer History 是什么:Mac 桌面端的活动记忆怎么开、怎么暂停和清除、谁能用

    Computer History 是 ChatGPT macOS 桌面应用里默认关闭的可选功能,把你在应用和网站里的活动整理成记忆和时间线,供 ChatGPT 与 Codex 引用。本文按官方文档讲怎么开、记录什么不记录什么、怎么暂停与清除、数据存哪、谁能用,以及提示注入风险。

    ChatGPTCodex0
  4. 04

    Codex 输入框出现灰色建议:Composer predictions 是什么、Tab 接受、怎么关、谁能用

    Codex 桌面 App 的 Composer predictions(beta)会在 Codex 回完后,根据当前对话在输入框里给出下一条消息的建议,按 Tab 接受、不会自动发送。本文按官方帮助页讲谁能用、哪些线程支持、怎么关、算不算额度,以及没出现时怎么查。

    ChatGPTCodex0
  5. 05

    ChatGPT 隐私中心(Privacy Center)在哪里:隐私设置入口、三大分类和哪些套餐有

    ChatGPT 的 Privacy Center 把记忆、广告、位置、临时对话、锁定对话、两步验证、模型改进、数据导出和删号等入口集中到一页。本文按官方帮助页讲怎么打开、三大分类各有什么、哪些套餐有,以及它不会替你改任何设置。

    ChatGPT0
  6. 06

    Claude Code 处理大仓库:怎么让它只看需要的目录(子目录 CLAUDE.md、claudeMdExcludes、deny 规则)

    仓库太大,Claude Code 总在读无关文件、读进别的包的规则?本文按官方大仓库指南讲:从哪个目录启动、子目录 CLAUDE.md、claudeMdExcludes、Read 的 deny 规则、worktree.sparsePaths、additionalDirectories,以及一份合并后的配置示例。

    Claude0

同产品的其他教程

  1. 01

    Claude Code 在 CI 里跑:从本机 claude -p 到 GitHub Actions 的完整例子(自动审 PR、控成本)

    一条线走完 Claude Code 的 CI 用法:先在本机用 claude --bare -p 配 --json-schema 跑通,再写进 GitHub Actions 用 claude-code-action@v1 自动审 PR,最后加上 --max-turns、超时、并发限制来控成本,并附上常见故障的排查顺序。

    Claude0
  2. 02

    Claude Code 自定义 subagent 实例:测试员、调试员、只读调研员、只读数据库员怎么写

    四个可直接改的 subagent 实例:跑测试的 test-runner、找根因的 debugger、只读调研员、用 PreToolUse hook 限成只读 SQL 的 db-reader;讲 tools、disallowedTools、model、maxTurns 怎么配,怎么点名调用。

    Claude0
  3. 03

    Claude Code 的 CLAUDE.md 模板:前端、后端、数据分析各一份,附拆分与自检方法

    直接拿去改的三份 CLAUDE.md 模板(前端、后端、数据分析),每份都控制在官方建议的 200 行以内;再讲怎么用 .claude/rules 的 paths 拆出专属规则、用 @ 导入长文档,以及用 /context all 和 /doctor prompt-audit 检查是否生效。

    Claude0
  4. 04

    Claude Code 写一个会自动触发的 Skill:从需求到触发,用 description、when_to_use 和 paths 控制它什么时候出场

    写好的 Skill 总是不触发,或者什么都触发?本文按 Claude Code 官方「Extend Claude with skills」走一遍完整实例:把「改数据库迁移前先检查」写成一个会自动出场的 Skill,包含 description、when_to_use、paths、附带脚本、触发测试和评估。

    Claude0
  5. 05

    Claude Code 配 Sentry MCP 排查线上报错:添加命令、浏览器授权、贴 issue 链接修 bug 和插件子智能体

    线上报错只能手动复制堆栈给 Claude Code?Sentry 官方提供 MCP 服务,可以让它直接读 issue、堆栈和 trace。本文按 Claude Code 官方 MCP 文档和 Sentry MCP 官方说明,讲添加命令、/mcp 授权、典型排查流程、插件方式和自托管注意事项。

    Claude0
  6. 06

    Claude Code 配 Context7 MCP 查最新文档:两种安装方式、use context7 怎么写、指定库和版本

    Claude Code 写出来的代码用了旧版 API?Context7 是一个把库的最新文档喂给编程助手的 MCP 服务。本文按 Context7 官方仓库和文档,讲两种安装方式、在 Claude Code 里的添加命令、use context7 与 library ID 的写法,以及使用时的注意事项。

    Claude0

0 条评论

登录 后参与评论

还没有评论,来抢沙发~