Claude Code 学习站

Claude Code 插件系统完整参考(组件、CLI、manifest)

Claude Code 插件系统官方参考:涵盖 Skills/Agents/Hooks/MCP/LSP 等组件 schema、plugin.json manifest 全字段、CLI 子命令选项及插件环境变量速查表,以表格为主,准确对应原文。

本页目录37
AI 摘要 · 待复核整理于 2026-06-15原文:Plugins reference(Anthropic)Claude Code插件开发参考文档CLI命令
要点速览
  • `plugin.json` 唯一必填字段为 `name`(kebab-case),manifest 本身可完全省略,Claude Code 自动发现默认位置的组件
  • Agent frontmatter 不支持 `hooks`、`mcpServers`、`permissionMode`(安全限制);`isolation` 唯一有效值为 `worktree`
  • 三个内置环境变量:`${CLAUDE_PLUGIN_ROOT}`(安装目录绝对路径)、`${CLAUDE_PLUGIN_DATA}`(持久数据目录)、`CLAUDE_PLUGIN_OPTION_<KEY>`(用户配置导出给子进程)
  • marketplace 安装的插件缓存于 `~/.claude/plugins/cache`,孤立版本 7 天后自动删除;Glob/Grep 工具不搜索孤立目录
  • `skills` 字段追加到默认目录;`commands/agents/outputStyles` 等替换默认目录;`hooks/mcpServers/lspServers` 各有独立合并规则
  • CLI 提供 init/install/uninstall/prune/enable/disable/update/list/details/validate 共 10 个子命令,`plugin prune` 需 v2.1.121+

本文是对官方参考页的中文整理,完整与最新内容以原文为准:https://code.claude.com/docs/en/plugins-reference

概述

Plugin(插件) 是一个自包含的组件目录,用于扩展 Claude Code 功能。支持的组件类型:Skills(技能)、Agents(子代理)、Hooks(钩子)、MCP 服务器、LSP 服务器、Monitors(监控器)、Output Styles(输出样式)。


插件组件参考

Skills(技能)

项目说明
默认目录skills/commands/;或插件根目录的单个 SKILL.md
文件格式Skills 是含 SKILL.md 的目录;commands 是简单 markdown 文件
自动发现安装时自动发现;Claude 可根据任务上下文自动调用
单技能布局根目录有 SKILL.md 且无 skills/ 子目录时,自动作为单技能插件加载(需 v2.1.142+)

SKILL.md frontmatter 字段:

字段说明
name技能调用名称;省略时回退到安装目录名(marketplace 安装会是版本字符串,建议显式设置)

目录结构示例:

skills/
├── pdf-processor/
│   ├── SKILL.md
│   ├── reference.md(可选)
│   └── scripts/(可选)
└── code-reviewer/
    └── SKILL.md

Agents(子代理)

项目说明
默认目录agents/
文件格式Markdown 文件,含 YAML frontmatter

Agent frontmatter 支持字段(所有字段均为可选):

字段类型说明
namestring代理名称
descriptionstring描述及 Claude 何时调用它
modelstring使用的模型(如 sonnet
effortstring推理努力级别(如 medium
maxTurnsnumber最大轮次(如 20
toolsstring允许使用的工具列表
disallowedToolsstring禁止使用的工具(如 Write, Edit
skillsstring代理可使用的技能
memory记忆配置
background后台运行设置
isolationstring隔离方式,唯一有效值为 worktree

安全限制:插件级 Agent 不支持 hooksmcpServerspermissionMode 字段。


Hooks(钩子)

项目说明
默认位置hooks/hooks.json,或内联于 plugin.json
文件格式JSON,含事件匹配器与动作

Hook 类型:

类型说明
command执行 shell 命令或脚本
http将事件 JSON 以 POST 请求发送至 URL
mcp_tool调用 MCP 服务器上的工具
prompt使用 LLM 评估提示(使用 $ARGUMENTS 占位符)
agent运行带工具的代理验证器,用于复杂验证任务

Hook 事件(与用户自定义 Hook 事件相同):

事件名触发时机
SessionStart会话开始或恢复时
Setup使用 --init-only-p 模式下 --init/--maintenance 时(CI/脚本一次性准备)
UserPromptSubmit提交 prompt 时,Claude 处理之前
UserPromptExpansion用户键入命令展开为 prompt 时,可阻止展开
PreToolUse工具调用执行之前,可阻止
PermissionRequest出现权限对话框时
PermissionDenied工具调用被自动模式分类器拒绝时;返回 {retry: true} 可让模型重试
PostToolUse工具调用成功后
PostToolUseFailure工具调用失败后
PostToolBatch一批并行工具调用全部完成后,下次模型调用之前
NotificationClaude Code 发送通知时
MessageDisplay显示助手消息文本时
SubagentStart子代理启动时
SubagentStop子代理结束时

MCP 服务器

项目说明
默认位置.mcp.json,或内联于 plugin.json
格式标准 MCP 服务器配置
自动启动插件启用时自动启动

配置对象常用字段:

字段说明
command服务器可执行文件路径(支持 ${CLAUDE_PLUGIN_ROOT} 变量替换)
args命令行参数数组
env环境变量对象
cwd服务器工作目录

LSP 服务器

项目说明
默认位置.lsp.json,或内联于 plugin.json
格式JSON,映射语言服务器名称到配置对象

LSP 必填字段:

字段说明
commandLSP 可执行文件(必须在 PATH 中)
extensionToLanguage文件扩展名 → 语言标识符的映射对象(如 {".go": "go"}

LSP 可选字段:

字段说明默认值
args命令行参数
transport通信传输协议stdio
env环境变量
initializationOptions初始化时传入服务器的选项
settings通过 workspace/didChangeConfiguration 传递的设置
workspaceFolder服务器工作区目录路径
startupTimeout等待服务器启动的最长时间(毫秒)
maxRestarts放弃前的最大重启次数
diagnostics编辑后是否将诊断推入 Claude 上下文true

注意: LSP 插件不包含语言服务器本体,需用户自行安装对应二进制文件。若出现 Executable not found in $PATH,检查 /plugin 错误标签页。

官方 marketplace 可用 LSP 插件:

插件名语言服务器安装命令
pyright-lspPyright(Python)pip install pyrightnpm install -g pyright
typescript-lspTypeScript Language Servernpm install -g typescript-language-server typescript
rust-analyzer-lsprust-analyzer参见 rust-analyzer 官方安装文档

Monitors(监控器)

项目说明
默认位置monitors.json(通过 manifest experimental.monitors 字段引用)
功能插件启用时自动启动的后台监控器
状态实验性功能

Output Styles(输出样式)

项目说明
默认目录output-styles/
manifest 字段outputStyles
功能插件启用时自动应用;文件名格式为 output-styles/<name>.md

插件 manifest 模式(plugin.json)

文件位置: .claude-plugin/plugin.json整个 manifest 为可选

省略 manifest 时,Claude Code 从默认位置自动发现组件,并从目录名派生插件名。

完整 schema 示例

{
  "name": "plugin-name",
  "displayName": "Plugin Name",
  "version": "1.2.0",
  "description": "Brief plugin description",
  "author": {
    "name": "Author Name",
    "email": "author@example.com",
    "url": "https://github.com/author"
  },
  "homepage": "https://docs.example.com/plugin",
  "repository": "https://github.com/author/plugin",
  "license": "MIT",
  "keywords": ["keyword1", "keyword2"],
  "skills": "./custom/skills/",
  "commands": ["./custom/commands/special.md"],
  "agents": ["./custom/agents/reviewer.md"],
  "hooks": "./config/hooks.json",
  "mcpServers": "./mcp-config.json",
  "outputStyles": "./styles/",
  "lspServers": "./.lsp.json",
  "experimental": {
    "themes": "./themes/",
    "monitors": "./monitors.json"
  },
  "dependencies": [
    "helper-lib",
    { "name": "secrets-vault", "version": "~2.1.0" }
  ]
}

必填字段

字段类型说明示例
namestring唯一标识符(kebab-case,不含空格),用于组件命名空间deployment-tools

组件命名空间示例:插件 plugin-dev 下的 agent agent-creator 在 UI 中显示为 plugin-dev:agent-creator

元数据字段

字段类型说明
$schemastringJSON Schema URL,供编辑器自动补全和验证(Claude Code 加载时忽略)
displayNamestring界面显示名称,可含空格和任意大小写(需 v2.1.143+);省略时回退到 name
versionstring语义版本号;省略时回退到 git commit SHA
descriptionstring简短描述
authorobject作者信息,子字段:nameemailurl
homepagestring文档或主页 URL
repositorystring代码仓库 URL
licensestring许可证标识符(如 MIT
keywordsarray字符串数组

组件路径字段

字段类型路径行为说明
skillsstring/array追加到默认 skills/额外技能目录(始终扫描默认目录)
commandsstring/array替换默认 commands/自定义 commands 路径
agentsstring/array替换默认 agents/自定义 agents 路径
hooksstring独立合并规则自定义 hooks 配置路径
mcpServersstring独立合并规则自定义 MCP 配置路径
lspServersstring独立合并规则自定义 LSP 配置路径
outputStylesstring/array替换默认自定义输出样式目录
experimental.themesstring替换默认自定义主题目录(实验性)
experimental.monitorsstring替换默认自定义 monitors 配置(实验性)

所有路径须相对于插件根目录,以 ./ 开头。可指定为单值字符串或字符串数组。若要保留默认目录并追加,需显式列出默认路径。

dependencies 字段

数组,每项可以是:

  • 字符串形式:"helper-lib"
  • 对象形式:{ "name": "secrets-vault", "version": "~2.1.0" }

手动安装的插件不会被 plugin prune 移除;只有作为依赖自动安装的才会被清理。

userConfig 字段

让用户通过配置对话框填写插件选项。键名须为合法标识符。

子字段必填类型说明
typestringstringnumberbooleandirectoryfile 之一
titlestring配置对话框中显示的标签
descriptionstring字段下方显示的帮助文本
sensitivebooleantrue 时屏蔽输入并存入系统密钥链(而非 settings.json),有约 2 KB 总限制
requiredbooleantrue 时,字段为空则验证失败
default用户未填写时的默认值
multiplebooleanstring 类型,允许字符串数组
min / maxnumbernumber 类型的值范围

访问方式:

使用场景访问形式
MCP/LSP 配置、hook 命令、monitor 命令中的变量替换${user_config.KEY}
子进程环境变量CLAUDE_PLUGIN_OPTION_<KEY>
非敏感值的存储位置settings.jsonpluginConfigs[<plugin-id>].options
敏感值的存储位置系统密钥链或 ~/.claude/.credentials.json

channels 字段

声明注入对话的消息频道,需绑定插件提供的 MCP 服务器。

子字段必填说明
server必须匹配插件 mcpServers 中的某个键
userConfig与顶层 userConfig 字段相同的 schema(可按频道配置 bot token 等)

关于未识别字段

  • 无法识别的顶层字段:claude plugin validate 报告为警告(非错误),插件仍可加载
  • 字段类型错误:报告为错误,导致加载失败
  • 字段名偏差 1-2 字符时,给出可能的正确字段名提示
  • --strict 标志:将警告升级为错误,建议在 CI 中使用
  • Claude Code 忽略不认识的顶层字段,因此 plugin.json 可兼容 VS Code/Cursor 扩展 manifest、npm package.json、MCPB/DXT bundle manifest 等生态

环境变量

在 skill/agent 内容、hook 命令、monitor 命令及 MCP/LSP 服务器配置中均可使用:

变量说明
${CLAUDE_PLUGIN_ROOT}插件安装目录的绝对路径,用于引用脚本和二进制文件
${CLAUDE_PLUGIN_DATA}插件持久化数据目录(卸载时随最后一个安装范围一同删除)
CLAUDE_PLUGIN_OPTION_<KEY>userConfig 中各选项的值,以环境变量形式导出给 hook 进程和服务器子进程

CLI 命令参考

所有命令以 claude plugin 为前缀;交互式会话中对应 /plugin <subcommand>

plugin init

初始化插件脚手架。

参数/选项说明
<name>插件目录名
--with <组件...>附加模板:skillshooksagentsmcplspoutput-stylechannel
--force覆盖已有脚手架
-h, --help显示帮助

plugin install

从 marketplace 安装插件。参数 <plugin> 格式:plugin-nameplugin-name@marketplace-name

选项说明默认值
-s, --scope <scope>user(全局)、project(写入 .claude/settings.jsonenabledPlugins,团队共享)、local(gitignore)user
-h, --help显示帮助

plugin uninstall

别名: removerm

选项说明默认值
-s, --scope <scope>userprojectlocaluser
--keep-data保留插件的 ${CLAUDE_PLUGIN_DATA} 目录
--prune同时移除不再被依赖的自动安装依赖
-y, --yes跳过 --prune 确认提示(非 TTY 时必需)
-h, --help显示帮助

plugin prune

移除不再被任何已安装插件依赖的自动安装依赖。别名: autoremove需 v2.1.121+

选项说明默认值
-s, --scope <scope>userprojectlocaluser
--dry-run仅列出将被移除内容,不实际删除
-y, --yes跳过确认提示(非 TTY 时必需)
-h, --help显示帮助

plugin enable / plugin disable

启用或禁用已安装插件。启用时会同步启用其声明的依赖。

选项说明默认值
-s, --scope <scope>userprojectlocal
-h, --help显示帮助

plugin update

更新插件到最新版本。

选项说明默认值
-s, --scope <scope>userprojectlocalmanageduser
-h, --help显示帮助

plugin list

列出已安装插件(版本、来源 marketplace、启用状态)。

选项说明
--json以 JSON 格式输出
--available包含 marketplace 可用插件(需配合 --json
-h, --help显示帮助

交互式会话中可用 /plugin list;支持 --enabled/--disabled 过滤和 ls 简写。

plugin details

显示插件的组件清单和预计 token 消耗。

claude plugin details <name>

输出按 Skills、Agents、Hooks、MCP servers、LSP servers 分组,提供两类 token 估算:

指标说明
Always-on每次会话固定增加的 token(列表描述、技能名等)
On-invoke组件触发时消耗的 token(按组件单独列出,非插件总量)

plugin validate

验证插件目录配置。

claude plugin validate <path> [--strict]
选项说明
--strict将警告作为错误处理,建议在 CI 中使用
-h, --help显示帮助

插件目录结构

标准布局

my-plugin/
├── .claude-plugin/
│   └── plugin.json         ← manifest(可选)
├── skills/
│   └── my-skill/
│       └── SKILL.md
├── commands/
│   └── my-command.md
├── agents/
│   └── my-agent.md
├── hooks/
│   └── hooks.json
├── .mcp.json
├── .lsp.json
├── output-styles/
│   └── my-style.md
└── SKILL.md                ← 单技能插件可直接放根目录

默认文件位置参考

组件默认位置
Manifest.claude-plugin/plugin.json
Skillsskills/(含子目录)
Commandscommands/
Agentsagents/
Hookshooks/hooks.json
MCP 服务器.mcp.json
LSP 服务器.lsp.json
Output Stylesoutput-styles/
Monitors(实验性)monitors.json
持久数据目录${CLAUDE_PLUGIN_DATA}

插件缓存与文件解析

缓存机制

项目说明
缓存位置~/.claude/plugins/cache
版本隔离每个安装版本独立目录
孤立版本删除更新/卸载后标记为孤立,7 天后自动删除
搜索排除Glob/Grep 工具跳过孤立版本目录

仅 marketplace 安装的插件才被复制到缓存;通过 --plugin-dir--plugin-url 安装的插件原地使用。

路径限制

已安装插件不能引用插件目录之外的文件(../ 路径遍历无效,外部文件未被复制进缓存)。

符号链接处理规则

符号链接目标位置处理方式
插件自身目录内保留为相对符号链接(目标随插件一同复制)
同一 marketplace 中其他插件解引用,将目标内容复制进缓存(可共享 skills 等资产)
marketplace 之外跳过(安全限制,防止引入系统路径等任意文件)

使用 --plugin-dir 或本地路径安装的插件:仅保留指向自身目录内的符号链接,其余跳过。


路径字段行为规则汇总

字段行为
commandsagentsoutputStylesexperimental.themesexperimental.monitors替换默认目录;若要保留默认并追加,需显式列出默认路径
skills追加到默认 skills/ 目录,始终扫描默认目录(marketplace 根目录源例外)
hooksmcpServerslspServers各有独立合并规则,参见对应章节