Claude Code 学习站
Mingyu's Library

学习站 / 实战 Tip / E · 配置与选型

Skill/Hook/MCP/Subagent/Plugin 该用哪个

五种扩展机制名字都听过,真要配置时不知道选哪个——按「你要解决什么问题」对号入座,一张表定选型。

这五个机制不是五选一的竞品,它们插在 agentic loop 的不同位置,解决不同的问题,而且经常组合使用。选错的代价通常是「上下文被浪费」或「该发生的事没发生」。

一句话结论

结论 按目的选:可复用的知识和工作流用 Skill;必须每次都发生的强制动作用 Hook;连接外部工具和数据用 MCP;需要隔离上下文或并行用 Subagent;要把这一套打包分发给别的仓库或团队才用 Plugin——Plugin 是打包层,不是第五种独立能力。

做法步骤

  1. 先对一张决策表。官方官方 features-overview 文档给出了各机制的定位与适用场景,整理成对比表如下(「不适用」一列是本站观点的反向提醒):
    机制它是什么适用不适用(该换成)
    Skill装着知识、清单或工作流的 markdown 文件,可 /名字 调用,Claude 也能在相关时自动加载反复粘贴的同一段 prompt、API 风格指南、/deploy 这类可触发流程「每次都必须发生」的动作(→ Hook);连外部系统(→ MCP)
    Hook在生命周期事件(如 PostToolUse、SessionStart)上必然执行的脚本/HTTP 请求/prompt/子代理编辑后自动 lint、拦截危险命令、结束时发通知——不需要模型思考的确定性动作需要 Claude 判断怎么做的流程(→ Skill)
    MCP连接外部服务的开放协议,由服务器提供工具和数据访问查数据库、读 issue、发 Slack、控制浏览器——Claude 本来看不到的系统教 Claude「怎么用好这些工具」的知识(→ Skill,两者常搭配)
    Subagent拥有独立上下文窗口的隔离工人,干完只把摘要交回主会话要读几十个文件的调研、并行任务、防止副任务淹没主上下文想跨会话复用的内容(→ Skill);多个会话相互通信(→ agent teams)
    Plugin打包层:把 skills、hooks、subagents、MCP 服务器捆成一个可安装单元,skill 带命名空间(/my-plugin:review)第二个仓库需要同一套配置、要分发给团队或社区单项目的个人配置(直接放 .claude/ 就够)

    官方别忘了还有第六个更基础的选项:总是要遵守的「always do X」规则放 CLAUDE.md,它每个会话自动全文载入,不需要任何触发。

  2. 用官方「触发信号」自查。官方官方建议不要一上来配齐所有机制,而是遇到对应信号再加:Claude 把同一个约定搞错两次 → 写进 CLAUDE.md;你第三次粘贴同一段操作手册 → 存成 Skill;你老是从浏览器复制 Claude 看不到的数据 → 接 MCP;某个副任务的输出淹没了对话 → 走 Subagent;想要某件事「每次都自动发生」 → 写 Hook;第二个仓库需要同样配置 → 打包成 Plugin。
  3. 易混的两对,记住判别句。官方Skill vs Hook:Hook 在事件上必然触发(确定性有保证),Skill 靠 Claude 理解执行(结果可能有偏差)——所以护栏必须放 Hook,在 CLAUDE.md 或 Skill 里写「never edit .env」只是请求,PreToolUse hook 拦截才是强制。Skill vs Subagent:Skill 是「可加载的内容」,Subagent 是「隔离的执行环境」,二者可组合——skill 可以用 context: fork 在隔离上下文跑,subagent 可以用 skills: 字段预载 skill。
  4. 算一笔上下文账再定。官方各机制的上下文成本不同:CLAUDE.md 全文每次请求都在;Skill 默认只常驻描述、用到才载全文;MCP 只载工具名、schema 用到才取;Subagent 完全隔离;Hook 在外部执行、除非有输出返回否则零成本。上下文越金贵(参见 MCP 服务器装太多的代价),越应该把重内容往 Skill/Subagent/Hook 挪。
  5. 组合而不是单选。官方真实配置通常是组合:MCP 连上数据库 + Skill 记录你的 schema 和查询习惯;/audit Skill 派出安全/性能/风格三个并行 Subagent;编辑后 Hook 跑 lint 并把结果喂回上下文。深入每个机制可看课程 D7 SkillsD8 HooksD9 MCPD10 SubagentsD14 Plugins

可直接抄的 prompt

我想给 Claude Code 加一个能力:<描述你的需求,例如「每次编辑完文件自动跑 eslint」「把团队的发布检查清单交给 Claude」「让 Claude 能查我们的 PostgreSQL」>。

请按官方选型逻辑判断该用 Skill、Hook、MCP、Subagent 还是 Plugin(或组合),说明理由,
然后直接生成对应配置:
- Skill 写到 .claude/skills/<名字>/SKILL.md
- Hook 写进 .claude/settings.json 的 "hooks" 键
- MCP 给出 claude mcp add 命令
- Subagent 写到 .claude/agents/<名字>.md
最后解释这个配置什么时候载入、占多少上下文。

来源与最后核实日期