Claude团队:我们如何使用技能
我们在Anthropic内部广泛使用Claude Code中的技能,有数百个技能正在积极使用中。这些是我们学到的关于使用技能来加速开发的经验教训
微信 ezpoda免费咨询:AI编程 | AI模型微调| AI私有化部署
AI工具导航 | Tripo 3D | Meshy AI | ElevenLabs | KlingAI | ArtSpace | Phot.AI | InVideo
技能已成为Claude Code中使用最多的扩展点之一。它们灵活、易于制作、简单分发。
但这种灵活性也使得很难知道什么效果最好。什么类型的技能值得制作?写好一个技能的秘诀是什么?什么时候与他人分享它们?
我们在Anthropic内部广泛使用Claude Code中的技能,有数百个技能正在积极使用中。这些是我们学到的关于使用技能来加速开发的经验教训。
1、什么是技能?
如果你是技能的新手,我推荐阅读我们的文档或观看我们关于Skilljar上Agent技能的最新课程。本文假设你已经对技能有一些了解。
我们听到的关于技能的一个常见误解是它们"只是markdown文件",但技能最有趣的部分在于它们不仅仅是文本文件。它们是文件夹,可以包含脚本、资源、数据等,智能体可以发现、探索和操纵这些文件。
在Claude Code中,技能还有各种各样的配置选项,包括注册动态钩子。
我们发现,Claude Code中最有趣的技能创造性地使用了这些配置选项和文件夹结构。
2、技能的类型
在对所有技能进行分类后,我们注意到它们聚类成几个重复出现的类别。最好的技能能清楚地归入某一类;更令人困惑的技能则横跨多个类别。这不是一个确定的列表,但它是思考你的组织内部是否缺少任何技能的好方法。

2.1 库和API参考
解释如何正确使用库、CLI或SDK的技能。这些可以是内部库的,也可以是Claude Code有时会遇到困难的常见库的。这些技能通常包含一个参考代码片段文件夹和Claude在编写脚本时应避免的陷阱列表。
示例:
- billing-lib — 你的内部计费库:边界情况、陷阱等
- internal-platform-cli — 你的内部CLI包装器的每个子命令,以及何时使用它们的示例
- frontend-design — 让Claude更擅长你的设计系统
2.2 产品验证
描述如何测试或验证你的代码是否正常工作的技能。这些通常与playwright、tmux等外部工具配对用于验证。
验证技能对于确保Claude的输出正确非常有用。让一个工程师花一周时间让你的验证技能变得优秀是值得的。
考虑使用让Claude录制其输出的视频等技术,这样你就可以确切地看到它测试了什么,或者强制执行每个步骤状态的程序化断言。这些通常通过在技能中包含各种脚本来完成。
示例:
- signup-flow-driver — 在无头浏览器中运行注册→邮件验证→引导流程,每个步骤都有状态断言钩子
- checkout-verifier — 使用Stripe测试卡驱动结账界面,验证发票是否真的进入正确状态
- tmux-cli-driver — 用于需要TTY的交互式CLI测试
2.3 数据获取和分析
连接到你的数据监控堆栈的技能。这些技能可能包含获取你的数据的库和凭证、特定的仪表板ID等,以及关于常见工作流程或获取数据方式的说明。
示例:
- funnel-query — "我需要连接哪些事件才能看到注册→激活→付费"以及实际包含规范user_id的表格
- cohort-compare — 比较两个队列的留存或转化率,标记统计显著的差异,链接到细分定义
- grafana — 数据源UID、集群名称、问题→仪表板查找表
2.4 业务流程和团队自动化
将重复性工作流程自动化为一个命令的技能。这些技能通常相当简单的说明,但可能对其他技能或MCP有更复杂的依赖。对于这些技能,将以前的结果保存在日志文件中可以帮助模型保持一致并反思以前执行的工作流程。
示例:
- standup-post — 聚合你的工单跟踪器、GitHub活动和之前的Slack消息→格式化的每日站会,仅显示变化
- create--ticket — 强制执行模式(有效的枚举值、必填字段)以及创建后的工作流程(ping审查者、在Slack中链接)
- weekly-recap — 合并的PR + 关闭的工单 + 部署→格式化的回顾帖子
2.5 代码脚手架和模板
为代码库中的特定功能生成框架样板代码的技能。你可以将这些技能与可以组合的脚本结合使用。当你的脚手架具有无法完全由代码覆盖的自然语言要求时,它们特别有用。
示例:
- new--workflow — 用你的注释脚手架新的服务/工作流/处理程序
- new-migration — 你的迁移文件模板加上常见的陷阱
- create-app — 新的内部应用,预配置了你的认证、日志记录和部署配置
2.6 代码质量和审查
在你的组织内强制执行代码质量并帮助审查代码的技能。这些可以包括确定性脚本或工具以获得最大的鲁棒性。你可能希望将这些技能作为钩子的一部分自动运行,或在GitHub Action中运行。
- adversarial-review — 生成一个全新视角的子智能体来批评,实施修复,迭代直到发现退化为吹毛求疵
- code-style — 强制执行代码风格,特别是Claude默认做得不好的风格
- testing-practices — 关于如何编写测试和测试什么的说明
2.7 CI/CD和部署
帮助你在代码库中获取、推送和部署代码的技能。这些技能可能引用其他技能来收集数据。
示例:
- babysit-pr — 监控PR→重试不稳定的CI→解决合并冲突→启用自动合并
- deploy- — 构建→冒烟测试→逐步流量推出并比较错误率→出现回归时自动回滚
- cherry-pick-prod — 隔离工作目录→挑选→冲突解决→带有模板的PR
2.8 运行手册
获取症状(如Slack线程、警报或错误特征),通过多工具调查,并生成结构化报告的技能。
示例:
- -debugging — 将症状映射→工具→查询模式,用于你最高流量的服务
- oncall-runner — 获取警报→检查通常的嫌疑对象→格式化发现结果
- log-correlator — 给定请求ID,从可能接触它的每个系统中拉取匹配的日志
2.9 基础设施操作
执行例行维护和操作程序的技能——其中一些涉及破坏性操作,受益于护栏。这些使工程师更容易在关键操作中遵循最佳实践。
示例:
- -orphans — 查找孤立的pod/卷→发布到Slack→浸泡期→用户确认→级联清理
- dependency-management — 你组织的依赖项批准工作流程
- cost-investigation — "为什么我们的存储/出口账单飙升",包含特定的存储桶和查询模式
3、制作技能的技巧

一旦你决定要制作什么技能,如何编写它?这些是我们发现的一些最佳实践、技巧和窍门。
我们还最近发布了Skill Creator,使在Claude Code中创建技能更容易。
3.1 不要陈述显而易见的内容
Claude Code对你的代码库了解很多,Claude对编码了解很多,包括许多默认的观点。如果你要发布一个主要是关于知识的技能,试着专注于推动Claude走出其正常思维方式的信息。
前端设计技能是一个很好的例子——它是由Anthropic的一位工程师通过与客户迭代改进Claude的设计品味而构建的,避免了Inter字体和紫色渐变等经典模式。
3.2 构建一个陷阱部分

任何技能中信号最高的内容是陷阱部分。这些部分应该由Claude在使用你的技能时遇到的常见失败点构建。理想情况下,你会随着时间的推移更新你的技能以捕捉这些陷阱。
3.3 使用文件系统和渐进式披露

就像我们之前说的,技能是一个文件夹,而不仅仅是一个markdown文件。你应该把整个文件系统视为一种上下文工程和渐进式披露的形式。告诉Claude你的技能中有哪些文件,它会在适当的时候阅读它们。
最简单的渐进式披露形式是指向Claude使用的其他markdown文件。例如,你可以将详细的函数签名和用法示例拆分到references/api.md中。
另一个例子:如果你的最终输出是一个markdown文件,你可能在assets/中包含一个模板文件来复制和使用。
你可以有参考、脚本、示例等文件夹,帮助Claude更有效地工作。
3.4 避免强行规定Claude
Claude通常会尽量遵循你的指示,而且由于技能非常可重用,你会想在指示中小心不要过于具体。给Claude它需要的信息,但给它适应情况的灵活性。例如:

3.5 考虑设置

一些技能可能需要用户使用上下文来设置。例如,如果你正在制作一个将每日站会发布到Slack的技能,你可能希望Claude询问要发布到哪个Slack频道。
一个好的模式是将这些设置信息存储在技能目录中的config.json文件中,如上面的示例。如果配置未设置,智能体可以向用户询问信息。
如果你想让智能体呈现结构化的多项选择问题,你可以指示Claude使用AskUserQuestion工具。
3.6 描述字段是给模型的
当Claude Code启动会话时,它会构建每个可用技能的列表及其描述。这个列表是Claude扫描以决定"有没有适合这个请求的技能?"的内容。这意味着描述字段不是摘要——它是对何时触发此PR的描述。

3.7 记忆和存储数据

一些技能可以通过在内部存储数据来包含一种形式的记忆。你可以将数据存储在简单的仅追加文本日志文件或JSON文件中,或复杂的SQLite数据库中。
例如,一个standup-post技能可能会保留一个standups.log,记录它编写的每个帖子,这意味着下次你运行它时,Claude会阅读自己的历史并可以告诉你自昨天以来发生了什么变化。
存储在技能目录中的数据可能会在升级技能时被删除,所以你应该将其存储在稳定的文件夹中。目前我们提供${**CLAUDE_PLUGIN_DATA**}作为每个插件存储数据的稳定文件夹。
3.8 存储脚本和生成代码
你能给Claude的最强大的工具之一是代码。给Claude脚本和库让Claude可以将它的回合花在组合上,决定下一步做什么,而不是重构样板代码。
例如,在你的数据科学技能中,你可能有一个函数库来获取你的事件源的数据。为了让Claude进行复杂的分析,你可以给它一组辅助函数,如下所示:

Claude然后可以即时生成脚本,组合这些功能来完成像"周二发生了什么?"这样的提示的更高级分析。

3.9 按需钩子
技能可以包含仅在技能被调用时激活的钩子,并在会话期间持续。将此项用于你不想一直运行的更有主见的钩子,但在某些时候非常有用。
例如:
- /careful — 通过Bash上的PreToolUse匹配器阻止rm -rf、DROP TABLE、force-push、kubectl delete。你只希望在知道自己在触碰生产环境时启用这个——总是开着会让你发疯
- /freeze — 阻止任何不在特定目录中的Edit/Write。在调试时很有用:"我想添加日志,但我一直不小心修复了不相关的"
4、分发技能
技能的最大好处之一是你可以与团队的其他成员分享它们。
你可以通过两种方式与他人分享技能:
- 将你的技能检入你的仓库(在./.claude/skills下)
- 制作一个插件,并拥有一个Claude Code插件市场,用户可以在其中上传和安装插件(在此处阅读文档)
对于在相对较少的仓库中工作的小团队,将技能检入仓库效果很好。但每个检入的技能也会增加模型的上下文。随着规模扩大,内部插件市场允许你分发技能,让你的团队决定安装哪些。
5、管理市场
你如何决定哪些技能进入市场?人们如何提交它们?
我们没有中央团队来决定;相反,我们尝试有机地找到最有用的技能。如果你有一个技能希望人们试用,你可以将其上传到GitHub中的沙盒文件夹,并在Slack或其他论坛中向人们指出。
一旦一个技能获得了关注(由技能所有者决定),他们可以提交PR将其移入市场。
一个警告,创建不良或冗余的技能可能非常容易,所以确保在发布前有一些策划方法很重要。
6、组合技能
你可能希望有相互依赖的技能。例如,你可能有一个上传文件的文件上传技能,和一个生成CSV并上传它的CSV生成技能。这种依赖管理尚未原生内置到市场或技能中,但你可以通过名称引用其他技能,如果安装了它们,模型将调用它们。
7、衡量技能
为了了解技能的表现如何,我们使用PreToolUse钩子,让我们在公司内部记录技能使用情况(示例代码在此)。这意味着我们可以找到受欢迎或触发频率低于我们预期的技能。
8、结束语
技能对于智能体来说是令人难以置信的强大、灵活的工具,但这仍然是早期阶段,我们都在弄清楚如何最好地使用它们。
把这更多地看作是一个我们有用的技巧的杂烩,而不是一个确定的指南。理解技能的最佳方式是开始、实验,看看什么对你有效。我们的大多数技能最初都是从几行代码和一个陷阱开始的,因为人们在Claude遇到新的边界情况时不断添加而变得更好。
原文链接: Lessons from Building Claude Code: How We Use Skills
汇智网翻译整理,转载请标明出处