插件
当您信任的配置在整个团队中运行起来后,它的价值会大得多。
问题在于如何把它传递出去。您构建了一个出色的 .claude 目录,里面有
技能、子代理和钩子,然后呢?每个人都在机器之间复制粘贴
文件,并祈祷它们能保持同步。插件解决了这个问题。插件是
Claude Code 打包配置并将其从一个人传递给下一个人的方式。
这件事有两个方面,我们都会讲到。第一,使用其他人发布的插件。 第二,当您构建出值得分享的东西后,将其打包。
什么是插件
插件是一个可安装的单元。它打包了您原本需要手动分享的所有内容:技能、子代理、钩子和 MCP 服务器配置,以及更长尾的内容,比如语言服务器协议(language server protocol)服务器、后台监视器、主题,还有 settings.json 的一部分。一个版本,一次安装。
插件所在的位置决定了您如何安装它。在会话中,您可以直接按名称安装一个插件:
/plugin install github@claude-plugins-official该命令会先打开插件的详情,以便您查看并选择作用域。然后 Claude Code 会安装它,并打印一份简短的摘要。摘要要么说明该插件在此会话中已经处于激活状态,要么提到 /reload-plugins,并由 Claude Code 为您运行该重新加载操作。只有当重新加载警告您的下一条消息将重新读取整个对话时,您才需要介入:运行 /reload-plugins --force 以强制激活该插件。
为您的团队添加市场
对于团队来说,更好的做法是一次性添加一个私有市场(marketplace)。市场是插件解析所依赖的共享来源:
/plugin marketplace add your-org/claude-plugins您可以随意命名它。一旦添加完成,之后的每次安装都会通过它来解析。这样您就能在一个地方获得集中式的发现、版本跟踪和更新,而不是分散在每个人的笔记本电脑上。
您可以从"发现"(Discover)标签页浏览可用的内容。它会列出您各个市场中的插件,方便您搜索和选择。
安装前先阅读
这是最重要的部分。插件会以您的权限在您的机器上运行代码。它的钩子会在每次匹配的工具调用时触发。因此,如果您为了某个插件的技能而安装它,无论您是否阅读过,您也会同时获得它的 PreToolUse 和 Stop 钩子。
想想这意味着什么。一个社区插件可能附带一个每次都会调用某个网络端点的 Stop 钩子,而您的配置中不会有任何提示警告您这一点。这并不是要您避免使用插件的理由,而是要您先查看清楚的理由。
在安装之前,请查看插件的详情。Claude Code 会向您展示它将安装的内容,并估算上下文成本,同时附带一条明确的提示:Anthropic 并不控制第三方插件内部的内容。
关于插件的来源,有两点值得了解:
- 插件之所以能进入社区市场,是因为编写它的人将其提交给了 Anthropic。
- 官方市场则是通过另一条独立的流程进行审核筛选的。
但被列出并不等于值得信任。因此规则依然成立:只从您真正信任的来源安装插件和添加市场,并在启用插件之前检查它实际会做什么。
组件与您自己的组件并行运行
插件不会覆盖您的配置。它的组件会与您自己的组件并行运行。这大体上是好事,但也有一些您应该了解的后果。
钩子会叠加。插件的 PreToolUse 钩子和您自己的 PreToolUse 钩子都会在每次工具调用时触发。两者互不替代。这正是为什么您要先阅读详情的原因。
技能、代理和命令都以插件名称作为命名空间,因此它们永远不会与您自己的发生冲突。插件也可以附带一个 settings.json 文件,但只能是一个范围很窄的文件。Claude Code 只会遵循其中的两个键:agent 键和 subagent 状态栏键。
这个 agent 键值得停下来说一说。设置它会将插件的某个子代理提升为主线程,同时带上它的系统提示、工具限制和模型。换句话说,启用插件可能会改变 Claude Code 的默认行为方式。这正是您在启用插件之前就要先查看的主要原因之一。
插件安装后,您可以在插件面板中查看它添加的所有内容、管理它,并将其卸载。
打包您自己的插件
现在来看另一面。一旦您构建出一个可用的 .claude 目录,就不要让您的团队在机器之间复制粘贴它了,而是应该将其打包。
好消息是您不需要重新组织任何结构。插件使用的正是您已经在用的那种 .claude 结构:
- 每个技能一个文件夹。
- 每个子代理在
agents下对应一个 markdown 文件。 hooks/hooks.json和.mcp.json,位于插件根目录。
目录结构完成了大部分工作。Claude Code 通过约定来发现组件。
清单(manifest)
除此之外,还有一个可选的清单文件。它位于 .claude-plugin/plugin.json,保存着名称、版本、描述和作者信息:
{
"name": "svg-splitter-review",
"version": "0.1.0",
"description": "Reviews the SVG Splitter repo",
"author": {
"name": "Lewis Menelaws"
}
}清单是可选的。省略它,Claude Code 仍然会通过目录约定发现您的组件。但有几个细节值得了解:
- 名称是唯一必填的字段。 它会将您的技能命名空间化为
/plugin-name:skill-name,因此该插件中的某个技能会以/svg-splitter-review:<skill-name>的形式运行。这样可以避免您的技能与其他人的发生冲突。 - 像对待其他依赖一样对其进行版本管理。 这正是让更新和版本跟踪能够在您的团队中正常工作的原因。
要点总结
两条简单的规则涵盖了这里的大部分内容:
- 当您使用插件时,先阅读再安装。插件会以您的权限运行代码,所以要先查看它的钩子、代理和 MCP 服务器。
- 当您构建插件时,一旦它能正常工作,就立即打包您的
.claude。一份清单,一次安装。
这就是全部要点。一个可安装的单元,让您信任的配置能够触达您的整个团队。