Claude Code官方文档扩展CLAUDE.mdSkillsHooksMCP

Claude Code 扩展机制总览 - CLAUDE.md / Skills / Hooks / MCP / 插件何时用

了解何时使用 CLAUDE.md、Skills、subagents、hooks、MCP 和 plugins——选择正确的扩展层来满足你的工作流需求。

· 阅读约 17 分钟

Claude Code 结合了一个能够推理代码的模型和内置工具,用于文件操作、搜索、执行和网络访问。内置工具涵盖了大多数编码任务。本指南涵盖扩展层:您添加的功能,用于自定义 Claude 的知识、将其连接到外部服务以及自动化工作流。

ℹ️ 有关核心代理循环如何工作的信息,请参阅 Claude Code 如何工作

初次使用 Claude Code?CLAUDE.md 开始了解项目约定,然后根据需要添加其他扩展。

概述

扩展插入代理循环的不同部分:

  • CLAUDE.md 添加 Claude 每个会话都能看到的持久上下文
  • Skills 添加可重用的知识和可调用的工作流
  • MCP 将 Claude 连接到外部服务和工具
  • Subagents 在隔离的上下文中运行自己的循环,返回摘要
  • Agent teams 协调多个独立会话,具有共享任务和点对点消息传递
  • Hooks 在生命周期事件上触发,可以运行脚本、HTTP 请求、提示或 subagent
  • Pluginsmarketplaces 打包和分发这些功能

Skills 是最灵活的扩展。Skill 是一个包含知识、工作流或说明的 markdown 文件。您可以使用 /deploy 之类的命令调用 skills,或者 Claude 可以在相关时自动加载它们。Skills 可以在您当前的对话中运行,也可以通过 subagents 在隔离的上下文中运行。

将功能与您的目标相匹配

功能范围从 Claude 每个会话都能看到的始终开启的上下文,到您或 Claude 可以调用的按需功能,再到在特定事件上运行的后台自动化。下表显示了可用的功能以及何时使用每个功能。

功能作用何时使用示例
CLAUDE.md每次对话加载的持久上下文项目约定、“始终执行 X” 规则”使用 pnpm,而不是 npm。提交前运行测试。“
SkillClaude 可以使用的说明、知识和工作流可重用内容、参考文档、可重复的任务/deploy 运行您的部署清单;包含端点模式的 API 文档 skill
Subagent返回摘要结果的隔离执行上下文上下文隔离、并行任务、专门的工作者读取许多文件但仅返回关键发现的研究任务
Agent teams协调多个独立的 Claude Code 会话并行研究、新功能开发、使用竞争假设进行调试生成审查者同时检查安全性、性能和测试
MCP连接到外部服务外部数据或操作查询您的数据库、发布到 Slack、控制浏览器
Hook由事件触发的脚本、HTTP 请求、提示或 subagent必须在每个匹配事件上运行的自动化每次文件编辑后运行 ESLint

Plugins 是打包层。Plugin 将 skills、hooks、subagents 和 MCP servers 捆绑到单个可安装单元中。Plugin skills 是命名空间的(如 /my-plugin:review),因此多个 plugins 可以共存。当您想在多个存储库中重用相同的设置或通过 marketplace 分发给他人时,使用 plugins。

随时间推移构建您的设置

您不需要提前配置所有内容。每个功能都有一个可识别的触发器,大多数团队大致按以下顺序添加它们:

触发器添加
Claude 两次出错约定或命令将其添加到 CLAUDE.md
您一直在输入相同的提示来启动任务将其保存为用户可调用的 skill
您第三次将相同的剧本或多步骤过程粘贴到聊天中将其捕获为 skill
您一直在从 Claude 看不到的浏览器标签页复制数据将该系统连接为 MCP server
一个辅助任务用您不会再次引用的输出淹没您的对话通过 subagent 路由它
您希望每次都发生某事而无需询问编写 hook
第二个存储库需要相同的设置将其打包为 plugin

相同的触发器告诉您何时更新您已有的内容。重复的错误或反复出现的审查评论是 CLAUDE.md 编辑,而不是聊天中的一次性更正。您一直手动调整的工作流是需要另一次修订的 skill。

比较相似的功能

某些功能可能看起来相似。以下是如何区分它们。

Skill vs Subagent

Skills 和 subagents 解决不同的问题:

  • Skills 是可重用的内容,您可以将其加载到任何上下文中
  • Subagents 是与您的主对话分开运行的隔离工作者
方面SkillSubagent
它是什么可重用的说明、知识或工作流具有自己上下文的隔离工作者
关键优势在上下文之间共享内容上下文隔离。工作单独进行,仅返回摘要
上下文窗口影响添加到您的主窗口使用具有自己输入和输出令牌的单独窗口
最适合参考材料、可调用的工作流读取许多文件的任务、并行工作、专门的工作者

Skills 可以是参考或操作。 参考 skills 提供 Claude 在整个会话中使用的知识(如您的 API 风格指南)。操作 skills 告诉 Claude 执行特定操作(如运行您的部署工作流的 /deploy)。

当您需要上下文隔离或上下文窗口变满时,使用 subagent

CLAUDE.md vs Skill

两者都存储说明,但它们的加载方式和用途不同。

方面CLAUDE.mdSkill
加载每个会话,自动按需
可以包含文件是,使用 @path 导入是,使用 @path 导入
可以触发工作流是,使用 /<name>
最适合”始终执行 X” 规则参考材料、可调用的工作流

如果 Claude 应该始终知道它,请将其放在 CLAUDE.md 中

如果它是 Claude 有时需要的参考材料(API 文档、风格指南)或您使用 /<name> 触发的工作流(部署、审查、发布),请将其放在 skill 中

经验法则: 保持 CLAUDE.md 在 200 行以下。

CLAUDE.md vs Rules vs Skills

所有三者都存储说明,但它们的加载方式不同:

方面CLAUDE.md.claude/rules/Skill
加载每个会话每个会话,或当打开匹配的文件时按需,当调用或相关时
范围整个项目可以限定到文件路径特定于任务
最适合核心约定和构建命令特定于语言或目录的指南参考材料、可重复的工作流

Subagent vs Agent team

两者都并行化工作,但它们在架构上不同:

  • Subagents 在您的会话内运行并将结果报告回您的主上下文
  • Agent teams 是相互通信的独立 Claude Code 会话
方面SubagentAgent team
上下文自己的上下文窗口;结果返回给调用者自己的上下文窗口;完全独立
通信仅向主代理报告结果队友直接相互发送消息
协调主代理管理所有工作具有自我协调的共享任务列表
最适合仅结果重要的专注任务需要讨论和协作的复杂工作
令牌成本较低:结果摘要返回到主上下文较高:每个队友是一个单独的 Claude 实例

MCP vs Skill

MCP 将 Claude 连接到外部服务。Skills 扩展 Claude 的知识,包括如何有效地使用这些服务。

方面MCPSkill
它是什么连接到外部服务的协议知识、工作流和参考材料
提供工具和数据访问知识、工作流、参考材料
示例Slack 集成、数据库查询、浏览器控制代码审查清单、部署工作流、API 风格指南

Hook vs Skill

Hook 在生命周期事件上触发;skill 被加载到上下文中供 Claude 应用。

方面HookSkill
运行Shell 命令、HTTP 请求、LLM 提示或 subagentClaude 读取和遵循的说明
由以下触发生命周期事件,如 PostToolUseSessionStart您输入 /<name>,或 Claude 将描述与您的任务相匹配
确定性总是在其事件上触发;触发器是有保证的Claude 解释说明;结果可能会有所不同
上下文成本零,除非 hook 返回输出描述在每个会话加载;使用时加载完整内容
最适合每次都以相同方式运行且不需要 Claude 思考的操作需要推理的工作流、参考材料、多步骤任务

当操作必须每次都以相同方式发生且不需要 Claude 思考时,使用 hook

当 Claude 应该决定如何应用步骤或内容是知识而不是脚本时,使用 skill

将护栏放在 hooks 中。 CLAUDE.md 或 skill 中的”永远不要编辑 .env”之类的说明是请求,而不是保证。阻止编辑的 PreToolUse hook 是强制执行。

了解功能如何分层

功能可以在多个级别定义:用户范围、每个项目、通过 plugins 或通过托管策略。您还可以在子目录中嵌套 CLAUDE.md 文件或在 monorepo 的特定包中放置 skills。当相同的功能存在于多个级别时,以下是它们的分层方式:

  • CLAUDE.md 文件 是累加的:所有级别同时向 Claude 的上下文贡献内容。
  • Skills 和 subagents 按名称覆盖:当相同的名称存在于多个级别时,一个定义根据优先级获胜。Plugin skills 是命名空间的以避免冲突。
  • MCP 服务器 按名称覆盖:本地 > 项目 > 用户。
  • Hooks 合并:所有注册的 hooks 为其匹配的事件触发,无论来源如何。

组合功能

每个扩展解决不同的问题:CLAUDE.md 处理始终开启的上下文,skills 处理按需知识和工作流,MCP 处理外部连接,subagents 处理隔离,hooks 处理自动化。真实的设置根据您的工作流组合它们。

例如,您可能使用 CLAUDE.md 处理项目约定、使用 skill 处理部署工作流、使用 MCP 连接到数据库、使用 hook 在每次编辑后运行 linting。每个功能处理它最擅长的事情。

模式工作原理示例
Skill + MCPMCP 提供连接;skill 教导 Claude 如何很好地使用它MCP 连接到您的数据库,skill 记录您的架构和查询模式
Skill + SubagentSkill 为并行工作生成 subagents/audit skill 启动在隔离上下文中工作的安全性、性能和风格 subagents
CLAUDE.md + SkillsCLAUDE.md 保存始终开启的规则;skills 保存按需加载的参考材料CLAUDE.md 说”遵循我们的 API 约定”,skill 包含完整的 API 风格指南
Hook + MCPHook 通过 MCP 触发外部操作编辑后 hook 在 Claude 修改关键文件时发送 Slack 通知

了解上下文成本

您添加的每个功能都会消耗 Claude 的一些上下文。太多可能会填满您的上下文窗口,但它也可能增加噪音,使 Claude 效率降低;skills 可能无法正确触发,或 Claude 可能会失去对您的约定的跟踪。了解这些权衡有助于您构建有效的设置。有关这些功能如何在运行会话中组合的交互式视图,请参阅 探索上下文窗口

按功能的上下文成本

每个功能都有不同的加载策略和上下文成本:

功能何时加载加载内容上下文成本
CLAUDE.md会话开始完整内容每个请求
Skills会话开始 + 使用时启动时的描述,使用时的完整内容低(每个请求的描述)
MCP 服务器会话开始工具名称;完整架构按需低,直到使用工具
Subagents生成时具有指定 skills 的新鲜上下文与主会话隔离
Hooks触发时无(外部运行)零,除非 hook 返回额外上下文

默认情况下,skill 描述在会话开始时加载,以便 Claude 可以决定何时使用它们。在 skill 的 frontmatter 中设置 disable-model-invocation: true 以将其完全隐藏在 Claude 中,直到您手动调用它。

了解功能如何加载

每个功能在会话的不同点加载。

CLAUDE.md

何时: 会话开始

加载内容: 所有 CLAUDE.md 文件的完整内容(托管、用户和项目级别)。

继承: Claude 从您的工作目录读取 CLAUDE.md 文件直到根目录,并在访问这些文件时发现子目录中的嵌套文件。

💡 保持 CLAUDE.md 在 200 行以下。将参考材料移到 skills,这些 skills 按需加载。

Skills

Skills 是 Claude 工具包中的额外功能。它们可以是参考材料(如 API 风格指南)或可调用的工作流,您可以使用 /<name> 触发(如 /deploy)。

何时: 取决于 skill 的配置。默认情况下,描述在会话开始时加载,完整内容在使用时加载。对于仅用户 skills(disable-model-invocation: true),在您调用它们之前不加载任何内容。

加载内容: 对于模型可调用的 skills,Claude 在每个请求中看到名称和描述。当您使用 /<name> 调用 skill 或 Claude 自动加载它时,完整内容加载到您的对话中。

Claude 如何选择 skills: Claude 将您的任务与 skill 描述相匹配,以决定哪些相关。

上下文成本: 低,直到使用。仅用户 skills 在调用前成本为零。

💡 对于有副作用的 skills,使用 disable-model-invocation: true。这节省上下文并确保只有您触发它们。

MCP 服务器

何时: 会话开始。

加载内容: 来自连接的服务器的工具名称。完整的 JSON 架构保持延迟,直到 Claude 需要特定工具。

上下文成本: 工具搜索默认启用,因此空闲 MCP 工具消耗最少的上下文。

可靠性说明: MCP 连接可能在会话中途无声地失败。如果服务器断开连接,其工具会无警告地消失。

💡 运行 /mcp 查看每个服务器的令牌成本。断开您未主动使用的服务器。

Subagents

何时: 按需,当您或 Claude 为任务生成一个时。

加载内容: 新鲜、隔离的上下文,包含:

  • 系统提示(与父级共享以提高缓存效率)
  • agent 的 skills: 字段中列出的 skills 的完整内容
  • CLAUDE.md 和 git 状态(从父级继承)
  • 主 agent 在提示中传递的任何上下文

上下文成本: 与主会话隔离。

💡 对于不需要您完整对话上下文的工作,使用 subagents。

Hooks

何时: 触发时。Hooks 在特定的生命周期事件上触发。

加载内容: 默认情况下无。Hooks 在主对话外执行。

上下文成本: 零,除非 hook 返回作为消息添加到您的对话中的输出。

💡 Hooks 非常适合不需要影响 Claude 上下文的副作用(linting、logging)。

了解更多

每个功能都有自己的指南,包含设置说明、示例和配置选项。

  • CLAUDE.md - 存储项目上下文、约定和说明
  • Skills - 给予 Claude 领域专业知识和可重用的工作流
  • Subagents - 将工作卸载到隔离的上下文
  • Agent teams - 协调多个并行工作的会话
  • MCP - 将 Claude 连接到外部服务
  • Hooks - 使用 hooks 自动化工作流
  • Plugins - 捆绑和共享功能集
  • Marketplaces - 托管和分发 plugin 集合

本文翻译自 Anthropic Claude Code 官方文档,最近一次同步:2025-05-01。