第9集:Plugin 解剖 — 一个 Plugin 包含什么
💡 进群学习加 wx: agentupdate
(申请发送: agentupdate)
(申请发送: agentupdate)
Plugin 是 Claude Code 扩展体系的最终形态。它不是一个单一的功能,而是一个“全家桶”,将多种组件打包在一起进行分发。
核心清单:plugin.json
每个 Plugin 的根目录(或 .claude-plugin/ 目录下)都必须有一个 plugin.json。
{
"name": "my-awesome-plugin",
"version": "1.0.0",
"description": "这是我的第一个插件",
"hooks": { ... }, // 定义 Hook
"commands": [ ... ], // 定义 Command
"keywords": [ ... ] // 关键词
}
组件对比矩阵
不同的插件侧重点不同。通过下表,我们可以看到几个典型插件的组成:
| 插件名 | Skill | Hook | MCP | Command | 特色 |
|---|---|---|---|---|---|
| GSD | 137个 | 9个 | 0 | 0 | 纯指令驱动,工程化极强 |
| caveman | 5个 | 2个 | 0 | 3个 | 超强压缩模式,极致节省 Token |
| claude-mem | 7个 | 9个 | 1个 | 0 | 带有后台 Worker 服务,具备长期记忆 |
| claude-hud | 0 | 0 | 0 | 2个 | 纯 UI 状态栏增强,编译型项目 |
典型文件结构
以 caveman 为例,一个典型的插件目录如下:
caveman/
├── .claude-plugin/
│ └── plugin.json # 插件清单(定义入口与 Hook)
├── hooks/
│ ├── activate.js # 会话启动 Hook
│ └── tracker.js # 消息追踪 Hook
├── skills/
│ └── caveman/
│ └── SKILL.md # /caveman 斜杠命令
├── commands/
│ └── caveman.toml # 结构化命令定义
└── CLAUDE.md # 插件级的项目约束
工作流示意图
graph LR
P[plugin.json] --> S[Skills]
P --> H[Hooks]
P --> M[MCP]
P --> C[Commands]
S -->|定义| SC[斜杠命令]
H -->|响应| LE[生命周期事件]
M -->|提供| ET[额外工具能力]