场景你一定不陌生:你写了一个 stop hook 自动更新 CLAUDE.md,同事写了一个 MCP server 查内部文档,第三个人搞了个 slash command 一键部署——但这些东西只活在各自己的机器上。新人入职打开 |
Anthropic 给这种现象起了个名字叫"部落知识"(tribal knowledge)——配置散落在个人机器上,传不下去。2026 年 5 月正式推出的插件(Plugin)机制就是来解决这个问题的。
先说清楚:插件不会让 Claude 变聪明。它做的事更实在——把一套能跑通的配置变成可安装、可版本管理、可分发的单元。相当于把你的.claude/打包成了一个"团队版",别人一条命令就能装上。
这篇文章带你从头到尾走一遍——从现有配置打包开始,到建市场、发版本、避坑。
| 1插件到底能打包什么 |
一个插件就是一个包含.claude-plugin/plugin.json清单文件加上任意 harness 组件的目录。能打包进去的组件有这些:
skills/ | |
hooks/hooks.json | |
.mcp.json | |
agents/ | |
commands/ | |
.lsp.jsonmonitors//settings.json |
🚫 新手第一坑 只有 |
| 2第一步:从现有配置打包 |
最快的起步方式:把你.claude/里已经在用的东西包装一下。第一次搞大概两小时,之后再做二十分钟就够了。
假设你现在的.claude/里已经有了一个 code-review skill 和一个 stop hook,把它们搬进插件目录结构是这样的:
| 目录结构 |
team-plugin/ |
然后写一个最小的plugin.json:
| JSON · plugin.json |
{ |
几个字段的讲究:
name不只是个标签——它直接成为所有 skill 的命名空间前缀。比如你的插件叫team-toolkit,里面的code-reviewskill 调用时就是/team-toolkit:code-review。命名空间是强制的——三个插件各自带一个/deploy也不会打架。
version是可选的,但我建议从一开始就写。设了版本号之后,只有你主动升级版本时用户才会收到更新。不设的话每次 commit 都算一次新版本——自己用还行,团队用就是灾难。
💡 本地测试 写好之后用 |
| 3第二步:创建市场,分发给团队 |
插件做好了,怎么让同事装上?答案是市场(marketplace)——一个列出插件及其获取位置的目录文件。
在仓库里建一个.claude-plugin/marketplace.json:
| JSON · marketplace.json |
{ |
source字段很灵活,支持这几种来源:
| 1 | 相对路径插件和 marketplace 在同一个仓库里,写 "./plugins/xxx" |
| 2 | GitHub 仓库写 {"source": "github", "repo": "owner/repo"},最常见的团队内分发方式 |
| 3 | Git URL / npm / git-subdir通用 git 地址、npm 包、monorepo 子目录——覆盖更复杂的仓库结构 |
| 4 | Anthropic 公共市场官方 curated claude-plugins-official 和社区 claude-community |
团队成员的安装就两步:
| ▸ 安装命令 |
/plugin marketplace add https://github.com/your-org/team-config |
注意@team-plugins这个后缀——它指定市场名。如果两个市场有同名插件,用@market-name来消除歧义。
| 4版本管理:commit SHA 还是 semver? |
三种版本策略,适用的场景不一样:
"version": "1.2.0" | ||
"sha"字段 |
⚠️ 注意 commit SHA 模式适合原型阶段——每次 push 对所有安装了插件的人生效,不需要通知。一旦有队友在用,马上切到显式 semver。不然你随便合个 PR,所有人的 Claude Code 会话都会静默更新,出了问题你连是谁触发的都不知道。 |
回滚也很简单:在 marketplace.json 里把插件的sha指回旧版本的 commit,推送后用户下次启动自动拿旧代码。这个杠杆在市场层,不在插件层——所以市场的设计比插件本身更关键。
| 5最容易踩的三个坑 |
除了前面说的"组件塞进.claude-plugin/",还有两个坑:
坑二:命名空间变了。原来在.claude/skills/里,你的 code-review skill 直接/code-review调用。打包进插件之后变成/team-toolkit:code-review。你的 CLAUDE.md 和 sub-agent 定义里如果引用了旧路径,都得更新——不然悄悄失效。
坑三:不要硬编码路径。插件安装后实际存放在~/.claude/plugins/cache,不是你开发时的目录。MCP 配置里如果需要引用插件自带的文件,用环境变量${CLAUDE_PLUGIN_ROOT}代替绝对路径。另外,MCP 配置里的 API key 千万别写死在插件里——用环境变量引用,不然凭据跟着插件一起分发。
· · ·
| 别急着造插件,先用着再说 最好的插件是从实战中长出来的,不是提前设计出来的 |
有一条建议值得单独拎出来说:不要一上来就做插件。
先在.claude/里把各个组件搭好,在自己的日常工作里跑上几周。你会发现有些 skill 你压根不用、有些 hook 触发太频繁需要收敛、有些描述写得太模糊别人看不懂。等模式稳定了,把活下来的东西打包进插件。
插件真正的瓶颈不是技术——是"在作者机器上能跑"到"另外五个工程师也能用"之间的这一步。大部分插件死在这一段,因为作者把自己的习惯当成了普适方案。解决办法很简单:给 skills 加路径作用域(path-scoped),让每个行为限定在它合理的目录范围里,不要全局生效。
说到底,插件跟 skill 不是一个量级的东西。Skill 是一个工作流,插件更像是 npm 包——有版本号、有清单文件、有命名空间、有市场、有更新机制。不需要分发的时候用独立 skill 就够了;需要让十个人一条命令装上,才上插件。
从个人配置到团队标准 你的 Claude Code 配置值得分享 关注公众号「克劳德猎手」获取更多内容 👇 |
| 📌 相关阅读 |
夜雨聆风