Claude Code 完整指南(九):Plugins(打包已定义的 AI 能力)
通过本文,你将系统理解 Claude Code Plugins:它把 .claude/ 中已定义的 commands / agents / hooks / Skills / MCP / LSP 能力,打包、标准化、可复用,形成可安装的团队级扩展,Plugins 让 Claude Code 的能力不再局限个人项目,而是可以安全地在团队和跨项目中共享与落地。
1. 引言
参考官方文档(建议收藏):
- https://code.claude.com/docs/en/plugins
- https://code.claude.com/docs/en/discover-plugins
- https://code.claude.com/docs/en/plugins-reference

在前面的博客,博主已经系统讲解了 Claude Code 的核心能力,有兴趣的同学可以先了解:
- 《Claude Code 完整指南(一):安装、CLI 实战、IDE 集成一次讲透》
- 《Claude Code 完整指南(二):终端命令全解析(收藏级)》
- 《Claude Code 完整指南(三):命令背后的数据流动》
- 《Claude Code 完整指南(四):Hooks(自动化事件触发)》
- 《Claude Code 完整指南(五):Subagents(AI 角色工程化)》
- 《Claude Code 完整指南(六):Skills(可复用的标准操作流程)》
- 《Claude Code 完整指南(七):MCP(让 AI 连接外部真实系统)》
- 《Claude Code 完整指南(八):Output Styles(系统提示词的真正用法)》
这一篇我们聊 Plugins,它不是一个新的概念,而是把在 .claude/ 里写的 slash commands / agents / hooks / Skills / MCP 这些能力,打包成一个 可安装、可版本化、可给其它人复用 的“能力包”。
2. Plugins 是什么?
一句话总结:Plugin = 一个目录 + 一个清单文件 .claude-plugin/plugin.json + 一堆你要分发的能力(commands / agents / hooks / Skills / MCP / LSP)。
大白话就是:你把 Claude Code 当成一台“可扩展的工作台”,.claude/ 适合你自己在当前项目里折腾,而Plugin 更像一个“可安装的扩展包”,可以跨项目复用,还能发给团队/社区。
2.1 Plugin 命名空间
Plugin 的 slash command 一律 带命名空间,如果文件叫 commands/hello.md,插件名(plugin.json 里的 name)叫 my-first-plugin,那么最终命令就是:/my-first-plugin:hello
为什么要 namespace命名空间? 因为装了多个插件后,都叫 /review、/hello 的概率太高了,使用命名空间就能防止冲突。
2.2 Plugin 什么时候使用?
什么时候用 Plugin,什么时候继续用 .claude/?官方给的对比非常直白:
| 你现在的需求 | 更适合 |
|---|---|
| 我就自己用、在单个项目里调试、想快 | .claude/(Standalone) |
| 要给同事用、要跨项目复用、要版本管理 | Plugin |
我很在意命令短:/review、/hello |
.claude/ |
我能接受命令带前缀:/team-tools:review |
Plugin |
一个很实际的路径是:先在 .claude/ 里把东西跑通 → 再打包成 Plugin 分享,这比一上来就写插件舒服很多。
2.3 Plugin 包含什么?
插件不是只能装“命令”,它更像一个能力集合,把它理解成“一个团队最佳实践包”,包含如下内容。
2.3.1 Commands(自定义 slash commands)
- 放在
commands/下,每个文件一个命令 - 写法是 Markdown + frontmatter(
--- description: ... ---) - 适合:把常用提示词/流程固化成一条命令,比如
/team:review、/team:release-notes
2.3.2 Hooks(事件触发器)
- 放在
hooks/hooks.json(也可以写到plugin.json里) - 适合:让 Claude Code 在某些事件后自动跑动作(比如“写文件后自动跑格式化/测试”)
2.3.3 Agents(子代理 / 子角色)
- 放在
agents/下 - 适合:把“专精角色”做成可复用资源,比如“安全审计 agent”“SQL 优化 agent”
2.3.4 Skills(可复用 SOP)
- 放在
skills/下(每个 Skill 一个目录,里面有SKILL.md) - 适合:把可重复的标准流程沉淀下来,让模型自动触发(例如:事故分诊、PR 检查、日志分析)
2.3.5 MCP servers(外部系统连接器)
- 适合:把“连接 GitHub / Jira / Notion / Figma / 数据库”等能力,打包给团队一键安装
2.3.6 LSP servers(代码智能)
2.3.6.1 LSP 是什么?
前面没有提过 LSP 这个概念,我们可以把 LSP(Language Server Protocol)理解成一套“统一接口”,让编辑器 / 工具去问一个 语言服务进程,比如:
- “这个符号定义在哪?”
- “这个函数有几个引用?”
- “我这段代码现在有哪些类型错误/诊断?”
VS Code 之所以能做“跳转定义、找引用、实时报错”,背后就是 LSP 这一套。Claude Code 里的 LSP 插件,本质上是在告诉 Claude Code:
- “这门语言用哪个 language server(可执行程序)”
- “怎么启动它、怎么跟它通信”
这样 Claude 在 改代码/读代码 的时候,就能拿到语义级信息(比纯文本搜索强很多),例如它能更可靠地定位定义、理解类型、发现编辑后引入的错误。
2.3.6.2 LSP 安装
LSP的安装步骤一般如下:
- 先去
/plugin的 Discover 里找对应语言的*-lsp插件(官方 marketplace 里有很多常见语言) - 安装后,打开
/plugin的 Errors 看它要求的 binary 是什么 - 把这个 binary 装到系统(例如系统包管理器、语言自己的包管理器),保证终端里能直接运行它(也就是在
$PATH里)
以下是几个典型 binary 名字:
- Python:
pyright-langserver - TypeScript:
typescript-language-server - Rust:
rust-analyzer - Go:
gopls
3. Plugin 使用
3.1 Plugin 命令

在 Claude Code 里输入 /plugin,会打开插件管理器(一个带 Tab 的界面),常用的几个 Tab:
- Discover:逛插件“应用商店”
- Installed:你装了哪些、启用/禁用/卸载
- Marketplaces:你添加了哪些“商店”
- Errors:插件没生效时先看这里
如果没有 /plugin 命令,通常是版本太老,插件功能要求 Claude Code >= 1.0.33(跑一下 claude --version)。
3.2 Marketplace 是什么?
Marketplace 就是“插件目录/插件清单”。流程两步走:
- 先添加 marketplace(只是把商店加进来,还没安装任何插件)
- 再从这个 marketplace 安装某个插件
官方 marketplace(claude-plugins-official)默认可用,安装插件类似这样:
/plugin install plugin-name@claude-plugins-official
3.3 添加官方 demo marketplace
Anthropic 在 anthropics/claude-code 仓库里维护了一个 demo marketplace(名字叫 claude-code-plugins),你可以手动加一下:
/plugin marketplace add anthropics/claude-code

然后你就能在 Discover 里看到 demo 插件,点安装即可;也可以用命令行直接装,例如:
/plugin install commit-commands@anthropics-claude-code
3.4 安装范围
插件安装有 scope(和 Claude Code 其它配置的 scope 是一套体系):
user:装在~/.claude/settings.json,自己所有项目都能用(默认)project:装在.claude/settings.json,团队随仓库一起共享local:装在.claude/settings.local.json,只在本机生效,且一般会被 gitignore
你可以用 CLI 装,并指定 scope:
# 默认 user
claude plugin install formatter@my-marketplace
# 团队共享(project)
claude plugin install formatter@my-marketplace --scope project
# 仅本机(local)
claude plugin install formatter@my-marketplace --scope local
4. 自定义 Plugin
4.1 目录结构
首先需要知道插件目录的结构,.claude-plugin/ 里只能放 plugin.json,其它目录都在插件根目录,标准结构如下:
my-first-plugin/
├── .claude-plugin/
│ └── plugin.json
└── commands/
└── hello.md
4.2 编写 Plugin
了解清楚后,可以写plugin.json,例如:my-first-plugin/.claude-plugin/plugin.json (官方 quickstart):
{
"name": "my-first-plugin",
"description": "A greeting plugin to learn the basics",
"version": "1.0.0",
"author": {
"name": "Your Name"
}
}
其中
name很关键:它既是插件 ID,也是 slash command 的命名空间前缀。
接着 写一个命令 ,my-first-plugin/commands/hello.md 示例(官方 quickstart):
---
description: Greet the user with a friendly message
---
# Hello Command
Greet the user warmly and ask how you can help them today.
开发/调试时,不需要把插件丢进 marketplace,可以直接用 --plugin-dir 加载本地目录:
claude --plugin-dir ./my-first-plugin
然后在会话里运行:
/my-first-plugin:hello
也可以同时加载多个本地插件(多写几次 --plugin-dir)。如果插件不加载、命令不出现,先做两件事:
- 打开
/plugin→ 看 Errors tab - 跑校验:
claude plugin validate或/plugin validate
4.3 打包
如果你已经在 .claude/ 里有一套东西,迁移的目标其实很简单:搬家 + 加一个清单文件,迁移后最明显的变化(官方对照表):
Standalone(.claude/) |
Plugin |
|---|---|
| 只能在一个项目里用 | 可以通过 marketplace 共享 |
.claude/commands/ |
plugin-name/commands/ |
hooks 在 settings.json |
hooks 在 hooks/hooks.json |
| 分享靠手动复制 | 用 /plugin install 安装 |
注意:如果 “原来的 .claude/ 文件还在”,又“插件也加载了”,可能会出现重复/覆盖,官方建议是迁移稳定后,把原来的 .claude/ 相关文件删掉,避免重复。
5. 文末
通过阅读本文,相信大家已经系统理解了 Claude Code 中 Plugins 的设计理念与工程价值:它并不是一组“零散功能的简单集合”,而是一种 将 commands / agents / hooks / Skills / MCP / LSP 等能力进行标准化封装与分发的工程机制。
希望本文能帮助大家,也欢迎在评论区分享 Plugin 的实践经验,感谢阅读,本文完!
更多推荐


所有评论(0)