← 返回 关于

构建 Claude Code 的经验:我们如何使用 Skills

2026-07-22 · 原文链接

Skills 已成为 Claude Code 最常用的扩展点之一。它们灵活、易于创建,也便于分发。

但这种灵活性也让人难以判断什么做法最有效:哪些 skills 值得做?写出一个好 skill 的秘诀是什么?又该在什么时候与他人分享?

在 Anthropic,我们一直广泛地在 Claude Code 中使用 skills,目前已有数百个处于活跃使用状态。以下是我们用 skills 加速开发时总结出的经验。

什么是 Skills?

如果你刚接触 skills,建议先阅读我们的文档,或观看我们最新的 Agent Skills Skilljar 课程。本文假定你已经对它们有一些基本了解。

我们经常听到一个误解:skills “不过就是 Markdown 文件”。但 skills 最有意思的地方恰恰在于,它们不只是文本文件;它们是目录,里面可以包含脚本、资源、数据等,agent 能够发现、浏览并操作这些内容。

在 Claude Code 中,skills 还拥有多种配置选项,其中包括注册动态 hooks。

我们发现,Claude Code 中一些最有意思的 skills,正是创造性地运用了这些配置选项和目录结构。

Skills 的类型

梳理完所有 skills 后,我们发现它们会聚成几类反复出现的模式。最好的 skills 往往能清楚地归入其中一类;令人困惑的那些通常横跨了好几类。这并非一份权威清单,但它很适合用来思考:你的组织内部是否还缺少某类 skill。

1. 库与 API 参考

这类 skills 说明如何正确使用某个库、CLI 或 SDK。它们既可以服务于内部库,也可以覆盖 Claude Code 有时难以掌握的常见库。这类 skill 通常会附带参考代码片段目录,以及一份提醒 Claude 在编写脚本时应避开的常见坑的清单。

示例:

2. 产品验证

这类 skills 说明如何测试或验证代码是否正常工作。它们通常会搭配 Playwright、tmux 等外部工具来完成验证。

验证类 skills 对确保 Claude 的产出正确极其有用。让一名工程师专门花一周时间把验证 skills 打磨到位,往往非常值得。

可以考虑让 Claude 录制其输出的视频,以便你准确看到它测试了什么;也可以在每一步强制进行可编程的状态断言。这些做法通常通过在 skill 中包含各种脚本来实现。

示例:

3. 数据获取与分析

这类 skills 连接你的数据与监控栈。它们可以包含用于带凭据获取数据的库、特定 dashboard ID,以及常用工作流或数据获取方法的说明。

示例:

4. 业务流程与团队自动化

这类 skills 将重复性工作流自动化为一条命令。它们的说明通常比较简单,但也可能对其他 skills 或 MCP 有更复杂的依赖。对于这类 skill,把先前结果存入日志文件能帮助模型保持一致性,并反思此前的工作流执行结果。

示例:

5. 代码脚手架与模板

这类 skills 为代码库中特定职能生成框架样板。你可以将它们与可组合的脚本结合使用。当脚手架带有无法完全用代码覆盖的自然语言要求时,它们尤其有用。

示例:

6. 代码质量与审查

这类 skills 在组织内部落实代码质量要求,并辅助代码审查。为了获得最大的可靠性,它们可以包含确定性的脚本或工具。你可能还会希望通过 hooks 或 GitHub Action 自动运行它们。

7. CI/CD 与部署

这类 skills 帮助你在代码库中拉取、推送和部署代码。它们可能会引用其他 skills 来收集所需数据。

示例:

8. Runbook

这类 skills 接收一个症状(例如 Slack 讨论串、告警或错误特征),引导完成多工具调查,并产出结构化报告。

示例:

9. 基础设施运维

这类 skills 执行日常维护和运维操作,其中有些涉及破坏性动作,因此需要护栏。它们让工程师更容易在关键操作中遵循最佳实践。

示例:

编写 Skills 的建议

确定要做什么 skill 后,该如何把它写好?以下是我们发现的一些最佳实践、技巧和窍门。

我们最近还发布了 Skill Creator,让创建 skills 变得更容易。

不要陈述显而易见的事

Claude Code 对你的代码库了解很多,Claude 也很懂编程,并且带着不少默认倾向。如果你发布的 skill 主要承载知识,尽量聚焦于那些能让 Claude 跳出惯常思路的信息。

frontend design skill 是个很好的例子——Anthropic 的一位工程师通过与客户反复迭代来改善 Claude 的设计品味,帮助它避免使用 Inter 字体、紫色渐变等经典套路。

建立一个 Gotchas 区段

任何 skill 中信号密度最高的内容,都是 Gotchas 区段。它应当从 Claude 在使用该 skill 时反复遇到的失败点中逐步积累。理想情况下,你会随着时间推移更新 skill,把这些坑持续沉淀进去。

利用文件系统与渐进式披露

如前所述,skill 是一个目录,而不只是一份 Markdown 文件。你应当把整个文件系统视为上下文工程和渐进式披露的一种形式:告诉 Claude skill 中有哪些文件,它就会在合适的时候读取它们。

最简单的渐进式披露方式,是指向其他供 Claude 使用的 Markdown 文件。例如,你可以把详细的函数签名和使用示例拆到 references/api.md 中。

另一个例子是:如果最终产物是 Markdown 文件,可以在 assets/ 中放入一个供复制和使用的模板文件。

你还可以准备 references、scripts、examples 等目录,帮助 Claude 更高效地完成工作。

不要把 Claude 绑死在轨道上

Claude 通常会努力遵循你的指令;而 skills 又具有高度复用性,因此要小心别把指令写得过于具体。给 Claude 它所需的信息,同时保留根据具体情境调整的空间。例如:

认真想清楚初始化配置

有些 skills 需要由用户提供上下文来完成设置。例如,如果你要制作一个把 standup 发到 Slack 的 skill,可能需要让 Claude 询问应发送到哪个 Slack 频道。

一个不错的模式是:把这些设置资料存入 skill 目录中的 config.json。如果配置尚未完成,agent 就可以向用户提问。

如果想让 agent 呈现结构化的多选问题,可以指示 Claude 使用 AskUserQuestion 工具。

Description 字段是写给模型看的

Claude Code 启动一个 session 时,会构建所有可用 skill 及其 description 的列表。模型会扫描这个列表,判断“这个请求是否有对应的 skill?”所以 description 不是摘要,而是对该 skill 应在何时触发的说明。

记忆与数据存储

有些 skills 可以通过在内部存储数据而具备某种记忆能力。你可以使用从仅追加的文本日志或 JSON 文件,到 SQLite 数据库这样复杂的任意载体。

例如,一个 standup-post skill 可以保存它写过的每一篇 standup 到 standups.log。下一次运行时,模型就能读取自己的历史,告诉你相比昨天发生了什么变化。

存放在 skill 目录中的数据可能会在升级 skill 时被删除,因此应把这些数据放在稳定目录中。截至目前,我们提供 ${CLAUDE_PLUGIN_DATA} 作为每个 plugin 的稳定数据目录。

保存脚本并生成代码

你能交给 Claude 的最强大工具之一就是代码。提供脚本和库,能让 Claude 把更多回合花在组合与判断下一步,而不是重新搭建样板代码上。

例如,在数据科学 skill 中,你可以提供一套从事件源获取数据的函数库:

Claude 随后便能即时生成脚本来组合这些能力,从而回答诸如“星期二发生了什么?”这样的提示,并完成更复杂的分析。

按需 Hooks

skills 可以包含只在调用时激活、并持续整个 session 的 hooks。对于那些不想一直运行、但在特定场景下极其有用的强约束 hooks,这种方式很合适。

例如:

分发 Skills

Skills 的最大好处之一,是可以将它们分享给团队中的其他人。

分享 skills 有两种方式:

对于跨越仓库不多的小团队,把 skills 签入仓库就很合适。但每个签入的 skill 都会给模型上下文增加一点负担。随着规模扩大,内部 plugin marketplace 能让你分发 skills,并由团队成员自行决定安装哪些。

管理一个 Marketplace

如何决定哪些 skills 应进入 marketplace?人们又该如何提交它们?

我们没有一个集中式团队来做这个决定;相反,我们会让真正有用的 skills 自然涌现。如果你有一个希望大家尝试的 skill,可以把它上传到 GitHub 中的 sandbox 目录,再在 Slack 或其他论坛中分享链接。

当某个 skill 获得足够关注后(由 skill 的所有者决定),就可以提交一个 PR,把它移入 marketplace。

需要提醒的是,创建糟糕或重复的 skills 非常容易,因此在发布前建立某种审核机制很重要。

组合 Skills

你可能会需要彼此依赖的 skills。例如,一个文件上传 skill 负责上传文件,另一个 CSV 生成 skill 负责生成 CSV 并上传。marketplace 目前尚未原生提供这类依赖管理,但你可以直接按名称引用其他 skills;如果它们已安装,模型就会调用它们。

衡量 Skills

为了了解一个 skill 的表现,我们使用 PreToolUse hook 记录公司内部的 skill 使用情况(示例代码在这里)。这样我们就能找出哪些 skills 受欢迎,或相对于预期触发得太少。

结语

Skills 是赋予 agents 强大且灵活能力的工具,但这仍是一个很早期的领域,我们都还在摸索。

与其把这篇文章视为一份定论,不如把它看作一袋我们见过确实有效的实用建议。理解 skills 的最好方式,是开始使用、不断实验,再看看结果。我们的大多数 skills 最初只有几行内容和一个 gotcha;随着 Claude 遇到更多边界情况,人们不断补充,它们才逐渐变好。

希望这些内容对你有帮助;如有问题,欢迎告诉我。