从构建 Claude Code 得到的经验:我们如何使用 Skills
这篇文章把 Anthropic 团队在 Claude Code 内部大规模使用 Skills 的经验,压缩成一套很实用的分类框架与写作原则。Skill 的价值与分类视角文章首先强调,Skills 是 Claude Code 里非常重要的扩展点,但“容易做”并不等于“容易做好”。作者给出的核心视角不是罗列功能,而是按用途…
转载说明:本文翻译自 Lessons from Building Claude Code: How We Use Skills,作者为 Thariq(源推文:2033949937936085378)。原文发布时间:2026-03-17。从构建 Claude Code 得到的经验:我们如何使用 Skills Skills 已经成为 Claude Code 最常用的扩展点之一。它们足够灵活、容易制作,也很容易分发。 但正因为足够灵活,人们也更难判断什么才是真正有效的做法。哪些类型的 Skill 值得做?写出一个好 Skill 的秘诀是什么?又该在什么时候把它分享给别人? 我们在 Anthropic 内部已经大规模使用 Skills,活跃中的 Skill 有数百个。下面这些内容,就是我们在用 Skills 加速开发过程中总结出来的经验。 如果你刚接触 Skills,原文建议先看入门材料和相关课程;这篇文章默认你已经对 Skills 有一定了解。 一个常见误解是,大家会觉得 Skill “不过就是一个 Markdown 文件”。但 Skill 最有意思的地方恰恰在于,它并不只是文本文件,而是一个文件夹。里面可以放脚本、资源文件、数据等各种内容,Agent 能自己去发现、探索、操作这些内容。 在 Claude Code 里,Skill 还带有配置能力,其中包括注册动态 hooks。 我们发现,Claude Code 里一些最有意思的 Skill,往往都在很有创造性地使用这些配置选项和文件夹结构。 当我们把所有 Skill 梳理一遍之后,会发现它们大致会落在几个反复出现的类别里。最好的 Skill 往往会很明确地属于其中一类;而那些让人困惑的 Skill,通常是同时跨了好几类。这不是一套绝对权威的分类法,但它很适合拿来检查:你的团队内部是不是还缺了某些类型的 Skill。值得做的 Skill 类型 Skills 分类图 第一类,是帮助 Claude 正确使用某个库、CLI 或 SDK 的 Skill。它既可以面向内部库,也可以面向 Claude Code 在实践中不太擅长的常见外部库。这类 Skill 往往会带上一整套参考代码片段,以及 Claude 在写脚本时需要避开的 gotchas 清单。 例如:billing-lib:记录你们内部计费库的边界条件、坑点和高风险用法。internal-platform-cli:整理内部 CLI wrapper 的每个子命令,并给出什么场景该用什么命令的例子。frontend-design:让 Claude 更贴近你的设计系统与审美标准。 第二类,是描述如何测试或验证代码是否真的工作的 Skill。这类 Skill 往往会配合 Playwright、tmux 等外部工具一起使用。 验证类 Skill 对确保 Claude 输出正确非常有价值。很多时候,专门让一位工程师花一周时间,把验证类 Skill 打磨到足够优秀,是非常值得的投入。 比如,你可以让 Claude 录制测试过程的视频,这样你就能清楚看到它究竟测试了什么;也可以让它在每一步都执行程序化断言,验证状态是否符合预期。这类能力通常都可以通过 Skill 目录下的脚本来完成。 例如:signup-flow-driver:在无头浏览器里跑完注册、邮件验证、引导流程,并在关键节点加状态断言。checkout-verifier:驱动结账 UI,使用 Stripe 测试卡完成支付,并验证发票最终是否进入正确状态。tmux-cli-driver:用于交互式 CLI 的验证场景,特别适合那些必须在 TTY 里运行的程序。 第三类,是连接数据和监控栈的 Skill。它们可能包含带认证的数据获取库、固定 dashboard ID,以及常见分析流程的说明。 例如:funnel-query:告诉 Claude 想看注册、激活到付费漏斗时,应该关联哪些事件,以及哪个表里才有规范的 user_id。cohort-compare:比较两个 cohort 的留存或转化,标出统计上显著的差异,并附上对应 segment 定义。grafana:提供 datasource UID、集群名,以及“问题 -> dashboard” 的映射关系。 第四类,是把重复工作封装成一个命令的 Skill。这类 Skill 通常说明本身不复杂,但可能依赖其他 Skill 或 MCP。对这类 Skill 来说,把过去执行结果记录在日志里,能帮助模型在多次运行中保持一致性,并结合历史做反思。 例如:standup-post:聚合工单系统、GitHub 活动和之前的 Slack 内容,生成只包含增量信息的 standup。create-<ticket-system>-ticket:强制工单字段满足…
正在初始化 WebAssembly 引擎…
首次编译原生模块可能需要数秒
就绪后,页面交互将以接近原生的速度运行