1. 引言

参考官方文档(建议收藏):

在这里插入图片描述
在前面的博客,博主已经系统讲解了 Claude Code 的核心能力,有兴趣的同学可以先了解:

这一篇我们聊 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)

详情参考:《Claude Code 完整指南(二):终端命令全解析(收藏级)》

  • 放在 commands/ 下,每个文件一个命令
  • 写法是 Markdown + frontmatter(--- description: ... ---
  • 适合:把常用提示词/流程固化成一条命令,比如 /team:review/team:release-notes

2.3.2 Hooks(事件触发器)

详情参考:《Claude Code 完整指南(四):Hooks(自动化事件触发)》

  • 放在 hooks/hooks.json(也可以写到 plugin.json 里)
  • 适合:让 Claude Code 在某些事件后自动跑动作(比如“写文件后自动跑格式化/测试”)

2.3.3 Agents(子代理 / 子角色)

详情参考:《Claude Code 完整指南(五):Subagents(AI 角色工程化)》

  • 放在 agents/
  • 适合:把“专精角色”做成可复用资源,比如“安全审计 agent”“SQL 优化 agent”

2.3.4 Skills(可复用 SOP)

详情参考:《Claude Code 完整指南(六):Skills(可复用的标准操作流程)》

  • 放在 skills/ 下(每个 Skill 一个目录,里面有 SKILL.md
  • 适合:把可重复的标准流程沉淀下来,让模型自动触发(例如:事故分诊、PR 检查、日志分析)

2.3.5 MCP servers(外部系统连接器)

详情参考:《Claude Code 完整指南(七):MCP(让 AI 连接外部真实系统)》

  • 适合:把“连接 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的安装步骤一般如下:

  1. 先去 /pluginDiscover 里找对应语言的 *-lsp 插件(官方 marketplace 里有很多常见语言)
  2. 安装后,打开 /pluginErrors 看它要求的 binary 是什么
  3. 把这个 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 就是“插件目录/插件清单”。流程两步走:

  1. 先添加 marketplace(只是把商店加进来,还没安装任何插件)
  2. 再从这个 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)。如果插件不加载、命令不出现,先做两件事:

  1. 打开 /plugin → 看 Errors tab
  2. 跑校验: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 的实践经验,感谢阅读,本文完!

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐