技能类型

在Anthropic内部整理所有技能后,我们发现它们大致可以归为九大类。最好的技能通常明确归属于某一类;而那些试图涵盖过多内容的技能往往跨越多个类别,反而让代理感到困惑。虽然这不是一个绝对的分类,但它为识别自己技能库中的空白提供了有用的框架。

Claude Code团队将内部技能分类,发现它们可分为九个不同类别。

1. 库和API参考

这类技能解释如何正确使用库、命令行工具(CLI)或SDK,既包括内部库,也包括Claude Code有时难以处理的常用库。通常包含代码片段文件夹和Claude在编写脚本时应避免的陷阱列表。

示例:

  • billing-lib — 内部计费库的边缘案例和潜在风险
  • internal-platform-cli — 内部CLI包装器的所有子命令及使用示例
  • sandbox-proxy — 配置组织的出口网关,说明可访问的主机、连接拒绝错误调试及白名单添加方法

2. 产品验证

描述如何测试或验证代码是否正常工作的技能,通常结合playwright、tmux等外部工具使用。

验证技能对Claude输出质量提升最为显著,值得工程师花一周时间专注打造高质量验证技能。

可采用让Claude录制输出视频、在每一步强制程序状态断言等技术,通常通过包含多种脚本实现。

示例:

  • signup-flow-driver — 在无头浏览器中执行注册、邮箱验证、入职流程,并在每步断言状态
  • checkout-verifier — 使用Stripe测试卡驱动结账UI,验证发票状态
  • tmux-cli-driver — 交互式CLI测试,适合需要TTY的验证场景

3. 数据获取与分析

连接数据和监控系统的技能,包含带凭证的数据获取库、特定仪表盘ID及常用工作流程说明。

示例:

  • funnel-query — 查询注册→激活→付费事件及用户ID表
  • cohort-compare — 比较两个用户群的留存或转化,标记显著差异并链接定义
  • grafana — 数据源UID、集群名称及问题到仪表盘的映射
  • datadog — 字段参考、服务列表及指标前缀规范

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

将重复工作流自动化为单一命令的技能,通常指令简单但可能依赖其他技能或多组件流程。保存日志文件有助于模型保持一致性并回顾历史执行。

示例:

  • standup-post — 汇总工单、GitHub活动和Slack消息,生成格式化的日报,仅显示变更
  • create--ticket — 强制执行工单格式及后续流程(通知审核人、Slack链接)
  • weekly-recap — 合并PR、关闭工单和部署记录,生成周报

5. 代码脚手架与模板

生成特定功能框架模板的技能,可与可组合脚本结合使用,尤其适合包含自然语言需求的脚手架。

示例:

  • new--workflow — 带注释的新服务/工作流/处理器脚手架
  • new-migration — 迁移文件模板及常见陷阱
  • create-app — 新内部应用,预配置认证、日志和部署

6. 代码质量与审查

帮助维护组织内代码质量和审查的技能,包含确定性脚本或工具,适合集成到钩子或GitHub Action中自动运行。

示例:

  • adversarial-review — 生成新视角子代理进行批评、修复并迭代,直到仅剩细节问题
  • code-style — 强制代码风格,尤其是Claude默认不擅长的风格
  • testing-practices — 测试编写和测试内容指导

7. CI/CD与部署

帮助获取、推送和部署代码的技能,可能引用其他技能收集数据。

示例:

  • babysit-pr — 监控PR,重试不稳定CI,解决合并冲突,启用自动合并
  • deploy- — 构建、冒烟测试、渐进流量发布及错误率比较,回归自动回滚
  • cherry-pick-prod — 独立工作树,挑选提交,解决冲突,生成PR模板

8. 运行手册

根据症状(如Slack线程、告警或错误签名)引导多工具调查并生成结构化报告的技能。

示例:

  • -debugging — 症状到工具及查询模式映射,针对高流量服务
  • oncall-runner — 获取告警,排查常见问题,格式化结果
  • log-correlator — 根据请求ID拉取所有相关系统日志

9. 基础设施运维

执行常规维护和操作流程的技能,部分涉及破坏性操作,需设防护措施,帮助工程师遵循最佳实践。

示例:

  • -orphans — 查找孤立Pod/卷,Slack通知,等待确认后级联清理
  • dependency-management — 组织依赖审批流程
  • cost-investigation — 解析存储/出口账单激增原因,定位具体桶和查询模式

制作技能的建议

确定技能后,如何编写?以下是Claude Code团队的最佳实践和技巧。

避免陈述显而易见的内容

Claude已具备编程能力并能阅读代码库,重复默认行为的技能只会增加上下文却无实质价值。发布以知识为主的技能时,应聚焦于引导Claude跳出常规思维的信息。

例如,Anthropic工程师基于客户反馈迭代打造的前端设计技能,帮助Claude避免使用常见设计模式如Inter字体和紫色渐变。

建立陷阱(Gotchas)部分

技能中最有价值的内容是陷阱部分,应总结Claude使用技能时常见的失败点,并随着时间更新。

示例:

  • subscriptions表为追加式,需选最高版本行而非最新created_at。”
  • “API网关中字段名为@request_id,计费服务中为trace_id,实为同一值。”
  • “Staging环境即使Stripe webhook未处理也返回200,需检查payment_events确认状态。”

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

技能是一个文件夹,不仅仅是Markdown文件。应将整个文件系统视为上下文工程和渐进披露的手段,告诉Claude技能包含哪些文件,Claude会在合适时机读取。

最简单的渐进披露是指向其他Markdown文件,如将详细函数签名和用法拆分到references/api.md

如果最终输出是Markdown文件,可在assets/中包含模板文件供复制使用。

可包含参考资料、脚本、示例等文件夹,提升Claude工作效率。

避免限制Claude的灵活性

Claude通常会遵循指令,但技能可复用性强,过于具体的指令可能限制其适应性。应提供必要信息,同时允许其根据情况灵活调整。

设计合理的设置流程

某些技能需用户提供上下文信息,例如发布日报到Slack时需询问频道。

推荐将配置信息存储在技能目录下的config.json,若未设置,代理可向用户提问。

若需结构化多选问题,可指示Claude使用AskUserQuestion工具。

为模型编写描述,而非为人类

Claude Code启动会构建所有技能及其描述的列表,Claude通过扫描该列表判断是否有适合请求的技能。因此描述字段应说明何时触发该技能,而非简单摘要。

帮助Claude记忆

部分技能可通过存储数据实现记忆功能,存储介质可简单如追加文本日志或JSON文件,也可复杂如SQLite数据库。

例如,standup-post技能可保存所有发布的日报日志,下次运行时读取历史,识别变更。

可使用环境变量${CLAUDE_PLUGIN_DATA}获取稳定目录存储数据,详情见持久数据目录文档

存储脚本并生成代码

提供代码脚本和库是赋能Claude的强大工具,让其专注于组合和决策,而非重复构建模板。

例如,data-science技能中包含从事件源获取数据的函数库,Claude可即时生成脚本完成复杂分析,如回答“星期二发生了什么?”等问题。

示例代码库

生成分析脚本示例

使用按需钩子

技能可包含仅在调用时激活、且仅持续会话期间的钩子,适合偶尔使用的限制性操作。

示例:

  • /careful — 通过PreToolUse匹配器阻止rm -rfDROP TABLE、强制推送、kubectl delete等危险操作,仅在操作生产环境时启用
  • /freeze — 阻止非特定目录的编辑/写入,调试时防止误改无关代码

技能分发

技能的最大优势之一是可与团队共享。

分享方式有两种:

  • 将技能提交到代码库(如./.claude/skills目录)
  • 制作插件并通过Claude Code插件市场上传和安装插件(详见文档

对于小团队和少量代码库,提交到仓库效果良好。但每个技能都会增加模型上下文,规模扩大时,内部插件市场便于分发技能并让团队选择安装,同时支持设置流程。

管理技能市场

如何决定哪些技能进入市场?如何提交?

Anthropic没有集中团队管理,而是鼓励技能自然成长。技能拥有者可将技能上传至GitHub沙盒文件夹,并在Slack等渠道推广。

技能获得认可后,拥有者可提交PR将其纳入市场。

技能组合

技能间可能存在依赖关系,如文件上传技能和CSV生成上传技能。当前市场和技能尚未原生支持依赖管理,但可通过名称引用其他技能,模型会调用已安装的技能。

技能效果评估

通过PreToolUse钩子记录公司内部技能使用情况(示例代码),帮助发现受欢迎或触发不足的技能。

开始使用

技能最佳实践仍在发展,许多优秀技能起初仅几行代码和一个陷阱,随着Claude遇到新边缘案例不断完善。

理解技能的最好方式是动手尝试,探索适合自己的方法。

本文作者为Anthropic技术团队成员Thariq Shihipar,负责Claude Code项目。