乐于分享
好东西不私藏

别只做skill了,都去做插件吧

别只做skill了,都去做插件吧

Claude Code的插件系统上线有一阵子了。文档读下来,它解决的问题比表面看起来更根本:Claude Code的配置一直散落在 .claude/ 目录里,难以分享,难以版本化,难以审核。插件把这些打包成了标准单元。

注意一个细节:插件里的技能、代理、钩子、MCP服务器,这些能力在插件出现之前都已经存在。插件做的只是把它们标准化。理解这一点,就理解了整个插件系统设计的出发点。

插件和独立配置,怎么选

方式技能名称适合场景
独立配置(.claude/ 目录)/hello个人工作流、项目定制、快速实验
插件(自带清单的独立目录)/plugin-name:hello团队分享、社区分发、版本化发布、跨项目复用

建议:先用独立配置快速迭代,需要分享时再转成插件。

快速上手:第一个插件

三步走。

创建目录和清单文件

mkdir my-first-plugin
mkdir my-first-plugin/.claude-plugin

plugin.json 定义插件的身份:

{
"name": "my-first-plugin",
"description": "A greeting plugin to learn the basics",
"version": "1.0.0",
"author": {
"name": "Your Name"
}
}

name 是唯一标识,也是技能命名空间。version 可选,设置后用户只在版本号更新时收到更新。

添加技能。技能放在 skills/ 目录下,每个技能是一个文件夹,里面一个 SKILL.md

mkdir -p my-first-plugin/skills/hello
---
description: Greet the user with a friendly message
disable-model-invocation: true
---

Greet the user warmly and ask how you can help them today.

本地测试

claude --plugin-dir ./my-first-plugin

启动后在输入框敲 /my-first-plugin:hello 就能看到效果。

命名空间这个设计值得多说一句。插件技能一律用 /插件名:技能名 的格式,多个插件里存在同名技能也不会互相覆盖。想让技能接收参数,在 SKILL.md 里用 $ARGUMENTS 占位符:

---
description: Greet the user with a personalized message
---

# Hello Skill

Greet the user named "$ARGUMENTS" warmly and ask how you can help them today. Make the greeting personal and encouraging.

改完跑 /reload-plugins 就能生效。注意:重载后的技能数量统计只覆盖 commands/ 目录,可能显示 0 skills,但技能实际已经加载了。

另外,claude plugin init my-tool 会在 ~/.claude/skills/ 下初始化一个插件,下次会话自动加载为 my-tool@skills-dir,不需要手动传 --plugin-dir

一个插件能装什么

目录作用
.claude-plugin/只放 plugin.json 清单文件
skills/技能,<名称>/SKILL.md 结构
commands/技能的老写法,扁平 Markdown 文件,新插件用 skills/
agents/自定义代理定义
hooks/事件处理,hooks.json
.mcp.jsonMCP 服务器配置
.lsp.json语言服务器配置,给代码智能用
monitors/后台监视器配置
bin/插件启用时加入 PATH 的可执行文件
settings.json插件启用时应用的默认设置

新手最常见的错误:把 commands/agents/skills/ 这些目录放进 .claude-plugin/ 里面。.claude-plugin/ 里只放 plugin.json,其他所有目录都在插件根目录下。

只有一个技能的插件可以把 SKILL.md 直接放在插件根目录,用 frontmatter 里的 name 字段作为调用名。打算做多技能插件就用 skills/ 目录。

复杂插件可以加什么

LSP 服务器。需要支持官方没覆盖的语言时,加一个 .lsp.json

{
"go": {
"command": "gopls",
"args": ["serve"],
"extensionToLanguage": {
".go": "go"
}
}
}

用户机器上必须装有对应的语言服务器二进制,否则会在 /plugin 管理器的 Errors 标签里看到启动失败。

后台监视器monitors/monitors.json 定义监视器,插件激活时自动启动,stdout 的每一行都会作为通知发给 Claude:

[
{
"name": "error-log",
"command": "tail -F ./logs/error.log",
"description": "Application error log"
}
]

默认设置settings.json 目前只支持 agentsubagentStatusLine 两个键,未知键会被静默忽略。agent 可以把插件里的自定义代理激活为主线程,改变 Claude Code 的默认行为:

{
"agent": "security-reviewer"
}

测试插件

--plugin-dir 标志是本地开发的主通道,支持直接指向目录,也支持 .zip 压缩包:

claude --plugin-dir ./my-plugin.zip

如果本地插件和已安装的 marketplace 插件同名,本地版本在当前会话中优先。这个机制很实用,测试已安装插件的修改版时不用先卸载。注意 --plugin-dir 无法覆盖被强制启用或禁用的插件。

远程测试用 --plugin-url

claude --plugin-url https://example.com/my-plugin.zip

拉取失败或压缩包无效时,Claude Code 会正常启动,但会在 /plugin 管理器的 Errors 标签里记录加载错误。安全考虑和安装任何插件一样,只加载你信任的源。

开发中跑 /reload-plugins 可以热加载更新,不用重启。插件没生效时按三步排查:目录结构是否放对位置、逐个测试组件、用 CLI 的调试工具(见 Plugins reference (https://code.claude.com/docs/en/plugins-reference#debugging-and-development-tools))。

提交到社区市场

Anthropic 维护两个公共市场:

  • claude-plugins-official:官方维护的精选集,首次交互式启动时自动注册。如果被官方市场收录,你的 CLI 可以直接提示用户安装插件。
  • claude-community:社区市场,第三方提交经过审核后进入,用 /plugin marketplace add anthropics/claude-plugins-community 添加。

提交前先本地验证:

claude plugin validate ./your-plugin

通过会打印 ✔ Validation passed,有警告会提示,加 --strict 把警告当错误处理。

提交渠道有两个:claude.ai 的表单需要 Team 或 Enterprise 组织,个人作者走 Console 表单。审核通过后,插件会固定在社区仓库的某个 commit SHA 上,之后你每推新提交,CI 会自动更新这个 pin。公共目录每晚同步,所以审核通过到出现在 marketplace.json 里会有延迟。

官方市场是另一套逻辑,Anthropic 自行决定收录哪些插件,没有申请流程。

从 .claude/ 迁移

如果你已经有独立配置,迁移成本不高。创建插件目录和清单文件,然后复制:

cp -r .claude/commands my-plugin/
cp -r .claude/agents my-plugin/
cp -r .claude/skills my-plugin/

钩子单独处理,从 settings.json 里把 hooks 对象复制到 hooks/hooks.json

迁移完记得删掉 .claude/ 里的原文件。项目级和用户级的 .claude/agents/ 会覆盖同名插件代理,不删的话插件版本不会生效。技能则不会冲突,插件技能是命名空间化的,原版和插件版会同时存在。

插件到底改变了什么

插件没有发明新能力。技能、代理、钩子、MCP 服务器,单独配置时都能用。插件做的是把这些东西标准化,加了版本、名字、描述和分发渠道。

Claude Code 从工具变成了平台。工具做好自己的事,平台让别人做事。插件市场里会长出什么,现在还说不好,但至少,复制粘贴 .claude/ 目录的日子快到头了。

继MCP、SKILL后,六大厂商联合制定 AI Agent 插件打包标准

值得一提的是,除了Claude Code,Cursor,dsh都在纷纷推出自己的插件市场,原本零散的零件已经正在被更利于发行和售卖的插件形式转变,伴随着dsh,Codex harness这样的框架开源,AI原生软件的形式正在清晰化。

关注公众号回复“进群”入群讨论