Skip to content

Skills 技能

模块编号: 5 · 难度: 进阶 · 预计时间: 1 小时

在上一章了解了如何与 Claude Code 互动后,是时候给它装上“定制武器”了。Skills(技能)就像是为 Claude 编写的专属插件。你可以把团队的最佳实践、常用的重复性任务,甚至是一些复杂的代码审查标准,打包成一个技能,让 Claude 在需要时随时调用。

技能加载机制:不会撑爆上下文

你可能会担心:“如果我写了几十个技能,每次对话都要加载这些内容,会不会把 Token 消耗光?”

不用担心。Claude 采用的是三层渐进式加载

  1. 只看简介:每次对话开始时,Claude 只能看到所有技能的名称和 description(描述)。
  2. 需要才看正文:当它判定当前任务需要某个技能时,才会去读取对应的 SKILL.md 正文。
  3. 深入相关文件:如果正文里提到了技能目录下的其他文件,它会在执行时再去读取这些文件。

这种机制让你可以放心地囤积大量技能,而不必为了节省上下文而删减工具。

技能文件结构

技能文件可以存放在两个地方,取决于你想让谁用:

  • 项目级:存放在当前项目的 .claude/skills/<技能名>/SKILL.md,非常适合针对具体仓库配置并分享给团队使用。
  • 个人级:存放在你电脑的主目录 ~/.claude/skills/<技能名>/SKILL.md,所有项目都能调用。

一个典型的技能目录结构长这样:

text
.claude/
└── skills/
    ├── code-review/
    │   ├── SKILL.md       # 必须包含这个核心文件
    │   └── guidelines.md  # 技能正文里可以引用的辅助说明
    └── git-commit/
        └── SKILL.md

编写关键的简介 (Description)

由于 Claude 决定是否自动使用某个技能全靠看 description,这个字段极其重要。它需要非常具体,最好包含触发词,且有 250 个字符的上限。

好的描述:

yaml
---
description: 专门用于前端 Vue 3 组件的 Code Review。触发条件:用户要求 Review 代码,或检查 Vue 文件质量。
---

差的描述:

yaml
---
description: 帮我检查代码。
---

高级玩法:动态上下文与调用控制

技能不仅是一段静态提示词,它可以通过在头部信息(frontmatter)或正文里添加配置,实现非常灵活的控制:

  • 动态注入 Shell 输出:你可以使用 !command 语法,在技能加载时运行命令并把结果直接拼接到内容中。比如想让 Claude 知道当前的 Git 分支:`The current branch is !`git branch --show-current
  • 隔离的思考环境:如果在配置中添加 context: fork,Claude 会把这个技能的任务交给一个隔离的“分身”(子智能体)去处理。完成后子智能体只带着结果回来,不会让中间冗长的思考和尝试过程污染你们的主对话上下文。
  • 更多前端控制字段
    • disable-model-invocation: 设置为 true 时,只有你能手动触发(通过指令),Claude 绝不会在对话中自己决定去调用它。
    • user-invocable: 设置为 false 则相反,只能让 Claude 根据任务需求自己去调用,不能通过 /技能名 手动调用。
    • paths: 限制这个技能只在特定的文件路径下才会被触发考虑(例如 src/**/*.js)。
    • effort: 控制执行这个技能时的思考深度(可选值:low / medium / high)。
    • model: 强制这个技能使用特定的模型(如 sonnetopus)。

参数和工具限制

你可以给技能传递自定义参数,并在内容里用 $ARGUMENTS(代表接收到的所有参数)或 $0, $1(按位置接收)来替换。配合 argument-hint 配置,可以在没有提供参数时提示用户如何使用。

如果你想限制技能的权限,比如希望一个安全检查技能只能读代码不能乱改代码,可以用 allowed-tools 限制它只能访问特定的工具。

动手试一试

下面是一个在终端中快速创建并使用自定义技能的体验流程:

Terminal

模板区

这里为你准备了两个可直接复制的模板。只需把它们保存为对应目录下的 SKILL.md 即可体验。

1. 基础代码审查模板

适合大多数情况的轻量级审查技能:

yaml
---
description: 执行项目级别的代码审查。检查代码风格、潜在的 Bug 和性能问题。
---

你是一个资深工程师。请对我目前做出的改动进行 Code Review。

要求:
1. 重点关注可读性和模块化。
2. 指出潜在的内存泄漏或性能瓶颈。
3. 给出具体的修改建议,而不仅仅是指出哪里有问题。

2. 带参数和受限工具的高级模板

带有参数提示,而且被限制为只读,保证绝对安全不会修改代码:

yaml
---
description: 帮我分析指定框架的最佳实践。触发条件:用户提供框架名称。
argument-hint: 请提供框架名称,如 /analyze-framework React
allowed-tools: [Read, Glob, Grep]
context: fork
---

请帮我整理 $ARGUMENTS 框架在我们项目中的最佳实践。

结合一下当前的系统信息:!`uname -a`

你需要执行以下操作:
1. 使用搜索工具找出项目中关于 $ARGUMENTS 的现有代码文件。
2. 总结目前的用法模式。
3. 结合官方文档规范,提出优化和改进建议。

测验

📝

测验时间

第 1/3 题
Skills 的 description 字段有什么作用?

← 命令深入 · 下一个:Hooks 钩子 →