加载中

创建您的第一个技能

第 2 课10 分钟
本节课内容学完后,您将能够
  • 使用正确的frontmatter结构从零开始创建一个技能
  • 测试并验证技能在Claude Code中能够正确加载
  • 解释Claude Code如何将传入的请求与可用技能进行匹配
  • 描述技能优先级层级(Enterprise、Personal、Project),以及为什么插件技能位于该层级之外

创建您的第一个技能

加载中

创建您的第一个技能 · 4 min

摘要文字记录

本视频将带您从零开始构建一个技能——一个适用于您所有项目的个人PR描述技能。您将确切了解如何构建SKILL.md文件、测试它,并理解Claude Code如何发现技能并将其与您的请求进行匹配。视频还涵盖了当名称冲突时决定哪个技能胜出的优先级层级。

关键要点

  • 技能是一个包含SKILL.md文件的目录,该文件在frontmatter中包含元数据(名称、描述),下方是说明
  • Claude在启动时仅加载技能名称和描述,然后使用语义匹配将传入的请求与这些描述进行匹配
  • 匹配成功后,仅包含名称、描述和说明的技能会完整加载而无需询问您。如果某个技能预先批准了工具或添加了钩子,Claude Code可能会先请求您的批准
  • 名称冲突的优先级:Enterprise → Personal → Project。插件技能具有命名空间,因此它们会与同名技能一起加载
  • 要更新技能,请编辑其SKILL.md。要删除技能,请删除其目录。Claude Code会在当前会话中识别该更改,无需重启。如果~/.claude/skills在本次会话中是新建的,请在每次更改后运行/reload-skills

让我们从零开始创建一个技能,然后看看Claude Code在幕后实际是如何加载和匹配技能的。

创建技能

我们将构建一个个人技能,教Claude如何以一致的格式编写PR描述。由于这是一个个人技能,它位于您的主目录中,并适用于您的所有项目。

首先,在skills文件夹内为您的技能创建一个目录。目录名称应与您的技能名称匹配:

mkdir -p ~/.claude/skills/pr-description

然后在该目录内创建一个SKILL.md文件。该文件分为两部分,由frontmatter的破折号分隔:

markdown
---
name: pr-description
description: Writes pull request descriptions. Use when creating a PR, writing a PR, or when the user asks to summarize changes for a pull request.
---

When writing a PR description:

1. Run `git diff main...HEAD` to see all changes on this branch
2. Write a description following this format:

## What
One sentence explaining what this PR does.

## Why
Brief context on why this change is needed

## Changes
- Bullet points of specific changes made
- Group related changes together
- Mention any files deleted or renamed

name标识您的技能。description告诉Claude何时使用它——这是匹配标准。第二组破折号之后的所有内容都是技能被激活时Claude遵循的说明。

编辑器中打开的pr-description的SKILL.md,旁边是commit-message、debugging和documentation技能文件夹。

测试您的技能

Claude Code会监视您的技能目录,因此新技能在当前会话中无需重启即可使用。如果~/.claude/skills在会话开始时不存在,Claude Code尚未对其进行监视,因此请立即运行/reload-skills,并在之后的每次更改后再次运行。您可以通过检查可用技能列表来验证您的技能是否可用。

Claude Code可用技能输出,包含"documentation"、"debugging"、pr-description和commit-message等技能。

您应该能看到您的技能已列出。要测试它,请在某个分支上进行一些更改,然后说类似"为我的更改写一个PR描述"这样的话。Claude会表明它正在使用PR描述技能,检查您的diff,并按照您的模板编写描述——每次格式都相同。

技能匹配的工作原理

当Claude Code启动时,它会扫描多个位置以查找技能,但只加载名称和描述,而不是完整内容。这是一个重要的细节。

当您发送请求时,Claude会将您的消息与所有可用技能的描述进行比较。例如,"解释这个函数的作用"会匹配一个描述为"用可视化图表解释代码"的技能,因为意图存在重叠。

一旦找到匹配项,Claude会读取完整的SKILL.md文件并遵循其说明。仅包含名称、描述和说明的技能(如pr-description)会在不询问您的情况下加载。如果某个技能预先批准了工具或添加了钩子,根据您的权限模式,Claude Code可能会要求您先批准它。上面的视频和下面的图片展示了Claude Code v2.1.19为pr-description等技能移除的批准步骤。

审查后端代码安全问题和合规疏漏的技能的frontmatter,以及"使用backend-review技能?"。

技能优先级

如果您克隆了一个仓库,其中有一个与您某个个人技能同名的技能,哪一个会胜出?这里有一个明确的优先级顺序:

  1. Enterprise——托管设置,优先级最高
  2. Personal——您的主目录(~/.claude/skills)
  3. Project——仓库内的.claude/skills目录

这使组织能够通过企业技能强制执行标准,同时仍允许个人定制。如果您的公司有一个企业级的"code-review"技能,而您创建了一个同名的个人"code-review"技能,企业版本将优先生效。来自已安装插件的技能位于此顺序之外。它们以/plugin-name:skill-name的形式进行命名空间划分,因此插件技能和另一个同名技能都会加载。

为避免冲突,请使用描述性名称。不要只用"review",而应使用类似"frontend-review"或"backend-review"这样的名称。

更新和删除技能

要更新技能,请编辑其SKILL.md文件。要删除技能,请删除其目录。Claude Code会在当前会话中识别该更改,因此您无需重启。如果您在本次会话中因为~/.claude/skills是新建的而早些时候运行过/reload-skills,请在每次更改后再次运行它。

课程反思

  • 在您的日常工作流程中,有哪一项任务是您现在就可以转化为技能的?描述会是什么样子?
  • 优先级层级可能会如何影响您团队的技能管理策略?您会更依赖个人级别还是项目级别的技能?

接下来是什么

在下一课中,您将学习高级配置选项,包括元数据字段、使用allowed-tools预先批准工具,以及如何使用渐进式披露和多文件组织来构建更大的技能。