关于 Anthropic 内部如何使用技能的全面指南,由 Thariq (@trq212) 于 2026 年 3 月 17 日发布。
| ← 返回 Claude Code 最佳实践 |
技能已成为 Claude Code 中使用最多的扩展点之一。它们灵活、易于制作、易于分发。但这种灵活性也让人难以知道什么最有效。Thariq 分享了在 Anthropic 广泛使用技能的经验教训,那里有数百个技能在使用中。
一个常见的误解是技能"只是 markdown 文件",但最有趣的部分是它们是文件夹,可以包含脚本、资源、数据等 —— 代理可以发现、探索和操纵的东西。技能还有多种配置选项,包括注册动态钩子。
在统计了所有技能后,团队注意到它们聚集成 9 个反复出现的类别。最好的技能清晰地符合其中一个;更令人困惑的技能跨越多个。
解释如何正确使用库、CLI 或 SDK 的技能。这些可以是内部库,也可以是 Claude Code 有时会遇到问题的常见库。它们通常包含一个参考代码片段文件夹和编写脚本时应避免的陷阱列表。
示例: billing-lib、internal-platform-cli、frontend-design
描述如何测试或验证代码是否工作的技能。这些通常与外部工具如 Playwright、tmux 等配对。验证技能对于确保 Claude 的输出正确非常有用。值得让工程师花一周时间把你的验证技能做得非常出色。
示例: signup-flow-driver、checkout-verifier、tmux-cli-driver
连接到你的数据和监控堆栈的技能。这些可能包括用凭据获取数据的库、特定的仪表板 ID 等,以及常见工作流或获取数据方式的说明。
示例: funnel-query、cohort-compare、grafana
将重复性工作流自动化为单个命令的技能。这些通常相当简单的指令,但可能对其他技能或 MCP 有更复杂的依赖。在日志文件中保存以前的结果可以帮助模型保持一致并反思工作流的以前执行。
示例: standup-post、create--ticket、weekly-recap
为代码库中的特定功能生成框架样板代码的技能。你可以将这些技能与可以组合使用的脚本结合。当你的脚手架有自然语言需求不能完全由代码覆盖时,它们特别有用。
示例: new--workflow、new-migration、create-app
在你的组织中强制执行代码质量并帮助审查代码的技能。这些可以包括确定性脚本或工具以获得最大的健壮性。你可能希望作为钩子的一部分或在 GitHub Action 中自动运行这些技能。
示例: adversarial-review、code-style、testing-practices
帮助你在代码库中获取、推送和部署代码的技能。这些技能可能引用其他技能来收集数据。
示例: babysit-pr、deploy-、cherry-pick-prod
获取症状(如 Slack 讨论串、警报或错误特征),进行多工具调查,并生成结构化报告的技能。
示例: -debugging、oncall-runner、log-correlator
执行例行维护和运维程序的技能 —— 其中一些涉及破坏性操作,受益于防护栏。这些让工程师在关键操作中更容易遵循最佳实践。
示例: -orphans、dependency-management、cost-investigation
编写有效技能的 9 个最佳实践,以及关于分发和测量的指导。
Claude Code 对你的代码库了解很多,Claude 对编程了解很多,包括很多默认观点。如果你发布的技能主要是关于知识的,尝试专注于将 Claude 推出其正常思维方式的信息。前端设计技能是一个很好的例子 —— 它是通过与客户迭代改进 Claude 的设计品味而构建的,避免像 Inter 字体和紫色渐变这样的经典模式。
任何技能中最高信号的内容是陷阱部分。这些部分应该建立在 Claude 使用你的技能时遇到的常见失败点上。理想情况下,你会随着时间的推移更新技能以捕获这些陷阱。
技能是一个文件夹,而不仅仅是一个 markdown 文件。你应该把整个文件系统看作一种上下文工程和渐进式披露的形式。告诉 Claude 你的技能中有哪些文件,它会在适当的时候读取它们。最简单的形式是指向其他 markdown 文件 —— 例如,将详细的函数签名和使用示例拆分到 references/api.md。你可以有参考文件夹、脚本、示例等。
Claude 通常会尝试坚持你的指令,因为技能非常可重用,你要小心不要过于具体。给 Claude 它需要的信息,但给它适应情况的灵活性。不要规定性的分步指令,而是给出目标和约束。
有些技能可能需要用户提供上下文来设置。一个好的模式是将这些设置信息存储在技能目录的 config.json 文件中。如果配置未设置,代理可以向用户询问信息。你可以指示 Claude 使用 AskUserQuestion 工具进行结构化、多选题提问。
当 Claude Code 启动会话时,它会构建一个包含描述的每个可用技能列表。这个列表是 Claude 扫描决定"这个请求有对应的技能吗?"的内容。这意味着描述字段不是摘要 —— 它是何时触发此技能的描述。为模型编写它。
一些技能可以通过在其中存储数据来包含某种形式的内存。你可以在像追加文本日志文件或 JSON 文件这样简单的东西中存储数据,或在像 SQLite 数据库这样复杂的东西中存储。存储在技能目录中的数据可能会在升级技能时被删除,所以使用 ${CLAUDE_PLUGIN_DATA} 作为每个插件存储数据的稳定文件夹。
你可以给 Claude 的最强大的工具之一是代码。给 Claude 脚本和库让 Claude 把它的回合花在组合上,决定下一步做什么而不是重建样板代码。Claude 然后可以动态生成脚本来组合这个功能以进行更高级的分析。
技能可以包含仅在技能被调用时激活的钩子,并持续到会话结束。用于更有观点但你不想一直运行的钩子,但在某些时候非常有用。
示例:
/careful— 通过 Bash 的 PreToolUse 匹配器阻止 rm -rf、DROP TABLE、force-push、kubectl delete/freeze— 阻止不在特定目录中的任何 Edit/Write
与团队共享技能的两种方式:
- 提交到你的仓库(在
.claude/skills下)— 最适合在相对较少仓库中工作的小团队 - 制作插件并建立 Claude Code 插件市场,用户可以上传和安装插件
每个提交的技能也会给模型的上下文增加一点内容。随着规模扩大,内部插件市场允许你分发技能并让团队决定安装哪些。
没有一个集中式团队决定哪些技能进入市场。相反,尝试有机地找到最有用的技能。上传到 GitHub 的沙盒文件夹并在 Slack 或其他论坛中指向它。一旦技能获得了关注(由技能所有者决定),他们可以提交 PR 将其移入市场。在发布前进行策划以避免重复的技能很重要。
你可能希望有相互依赖的技能。例如,一个上传文件的上传技能,和一个生成 CSV 并上传它的 CSV 生成技能。这种依赖管理尚未原生内置到市场或技能中,但你可以通过名称引用其他技能,如果已安装,模型会调用它们。
要了解技能的表现,使用 PreToolUse 钩子让你在公司内部记录技能使用情况。这意味着你可以找到受欢迎或与预期相比触发不足的技能。
技能是代理非常强大、灵活的工具,但还处于早期,我们都在弄清楚如何最好地使用它们。把这更多地看作是一个有用技巧的锦囊,而不是一个权威指南。理解技能的最佳方式是开始、实验,看看什么对你有效。我们的大多数技能最初只是几行代码和一个陷阱,因为人们不断添加 Claude 遇到新边缘情况的内容而变得更好。


























