
今天, Anthropic 的 Claude Code 团队工程师 Thariq Shihipar 在 X 上发布了一篇Skills的深度经验分享,帖子在AI/科技圈迅速引发热议。
有人评价:“读过的最好的 Claude Code 技术文章之一。”
Thariq 在加入 Anthropic 之前,先于 MIT Media Lab 读研期间联合创建了开源学术发布平台 PubPub,后来参加了 Y Combinator。他在 X 上经常分享 Claude Code 的一手使用经验和新功能动态。
这篇文章是 Anthropic 公司内部使用数百个“Skills”加速开发的实践经验。
不妨看看 ClaudeCode 团队自身是如何在构建过程中,总结出的 Skills 秘诀!

Skills 已经成为 Claude Code 中使用最广泛的扩展点之一。它们灵活、容易制作,分发起来也很简单。
但也正因为太灵活,你很难知道怎样用才最好。什么类型的 Skills 值得做?写出好 Skill 的秘诀是什么?什么时候该把它们分享给别人?
我们在 Anthropic 内部大量使用 Claude Code 的 Skills ,目前活跃使用的已经有几百个。以下就是我们在用 Skills 加速开发过程中总结出的经验。
如果你还不了解 Skills,建议先看看我们的文档或最新的 Skilljar 上关于 Agent Skills 的课程,本文假设你已经对 Skills 有了基本的了解。
我们经常听到一个误解,认为 Skills“只不过是 markdown 文件”。但 Skills 最有意思的地方恰恰在于它们不只是文本文件——它们是文件夹,可以包含脚本、资源文件、数据等等,智能体可以发现、探索和使用这些内容。
在 Claude Code 中,Skills 还拥有丰富的配置选项,包括注册动态钩子(hooks)。
我们发现,Claude Code 中最有意思的那些 Skills,往往就是创造性地利用了这些配置选项和文件夹结构。
在梳理了我们所有的 Skills 之后,我们注意到它们大致可以归为几个反复出现的类别。最好的 Skills 清晰地落在某一个类别里;让人困惑的 Skills 往往横跨了好几个。这不是一份终极清单,但如果你想检查团队里是否还缺了什么类型的 Skills,这是一个很好的思路。

帮助你正确使用某个库、命令行工具或 SDK 的 Skills。它们既可以针对内部库,也可以针对 Claude Code 偶尔会犯错的常用库。这类 Skills 通常会包含一个参考代码片段的文件夹,以及一份 Claude 在写代码时需要避免的踩坑点(gotchas)列表。
示例:
描述如何测试或验证代码是否正常工作的 Skills。通常会搭配 Playwright、tmux 等外部工具来完成验证。
验证类 Skills 对于确保 Claude 输出的正确性非常有用。值得安排一个工程师花上一周时间专门打磨你的验证Skills。
可以考虑一些技巧,比如让 Claude 录制输出过程的视频,这样你就能看到它到底测试了什么;或者在每一步强制执行程序化的状态断言。这些通常通过在 Skill 中包含各种脚本来实现。
示例:
连接你的数据和监控体系的 Skills。这类 Skills 可能会包含带有凭证的数据获取库、特定的仪表盘 ID 等,以及常用工作流和数据获取方式的说明。
示例:
把重复性工作流自动化为一条命令的 Skills。这类 Skills 通常指令比较简单,但可能会依赖其他 Skills 或 MCP(Model Context Protocol,模型上下文协议)。对于这类 Skills,把之前的执行结果保存在日志文件中,有助于模型保持一致性并反思之前的执行情况。
示例:
为代码库中的特定功能生成框架样板代码(boilerplate)的 Skills。你可以把这些 Skills 和脚本组合使用。当你的脚手架(scaffolding)有自然语言需求、无法纯靠代码覆盖时,这类 Skills 特别有用。
示例:
在团队内部执行代码质量标准并辅助代码审查的 Skills。可以包含确定性的脚本或工具来保证最大的可靠性。你可能希望把这些 Skills 作为钩子的一部分自动运行,或者放在 GitHub Action 中执行。
(注:子智能体(subagent)是指 Claude Code 在执行任务时启动的另一个独立 Claude 实例。这里的做法是让一个“没见过这段代码”的新实例来做代码审查,避免原实例的思维惯性。)
帮你拉取、推送和部署代码的 Skills。这类 Skills 可能会引用其他 Skills 来收集数据。
示例:
接收一个现象(比如一条 Slack 消息、一条告警或者一个错误特征),引导你走完多工具排查流程,最后生成结构化报告的 Skills。
示例:
执行日常维护和运维操作的 Skills——其中一些涉及破坏性操作,需要安全护栏。这些 Skills 让工程师在执行关键操作时更容易遵循最佳实践。
示例:

确定了要做什么 Skill 之后,怎么写呢?以下是我们总结的一些最佳实践和技巧。
我们最近还发布了 Skill Creator,让在 Claude Code 中创建 Skills 变得更加简单。
Claude Code 对你的代码库已经非常了解,Claude 本身对编程也很在行,包括很多默认的观点。如果你发布的 Skill 主要是提供知识,那就把重点放在能打破 Claude 常规思维模式的信息上。
frontend design 这个 Skill就是一个很好的例子——它是 Anthropic 的一位工程师通过与用户反复迭代、改进 Claude 的设计品味而构建的,专门避免那些典型的套路,比如 Inter 字体和紫色渐变。

任何 Skill 中信息量最大的部分就是踩坑点章节。这些章节应该根据 Claude 在使用你的 Skill 时遇到的常见失败点逐步积累起来。理想情况下,你会持续更新 Skill 来记录这些踩坑点。

就像前面说的,Skill 是一个文件夹,不只是一个 markdown 文件。你应该把整个文件系统当作上下文工程(Context Engineering)和渐进式披露(progressive disclosure)的工具。告诉 Claude 你的 Skill 里有哪些文件,它会在合适的时候去读取它们。
最简单的渐进式披露形式是指向其他 markdown 文件让 Claude 使用。例如,你可以把详细的函数签名和用法示例拆分到 references/api.md 里。
另一个例子:如果你的最终输出是一个 markdown 文件,你可以在 assets/ 中放一个模板文件供复制使用。
你可以有参考资料、脚本、示例等文件夹,帮助 Claude 更高效地工作。
Claude 通常会努力遵循你的指令,而由于 Skills 的复用性很强,你需要注意不要把指令写得太具体。给 Claude 它需要的信息,但留给它适应具体情况的灵活性。例如:


有些 Skills 可能需要用户提供上下文来完成初始设置。例如,如果你做了一个把站会内容(standup)发到 Slack 的 Skill,你可能希望 Claude 先问用户要发到哪个 Slack 频道。
一个好的做法是把这些设置信息存在 Skill 目录下的 config.json 文件里,就像上面的例子那样。如果配置还没设置好,智能体就会向用户询问相关信息。
如果你希望智能体向用户展示结构化的多选题,可以让 Claude 使用 AskUserQuestion 工具。
当 Claude Code 启动一个会话时,它会构建一份所有可用 Skills 及其描述的清单。Claude 通过扫描这份清单来判断“这个请求有没有对应的 Skill?”所以 description 字段不是摘要——它描述的是何时该触发这个 Skill。


有些 Skills 可以通过在内部存储数据来实现某种形式的记忆。你可以用最简单的方式——一个只追加写入的文本日志文件或 JSON 文件,也可以用更复杂的方式——比如 SQLite 数据库。
例如,一个 standup-post Skill 可以保留一份 standups.log,记录它写过的每一条站会汇报。这样下次运行时,Claude 会读取自己的历史记录,就能知道从昨天到现在发生了什么变化。
存在 Skill 目录下的数据可能会在升级 Skill 时被删除,所以你应该把数据存在一个稳定的文件夹中。目前我们提供了 ${CLAUDE_PLUGIN_DATA} 作为每个插件的稳定数据存储目录。
你能给 Claude 的最强大的工具之一就是代码。给 Claude 提供脚本和库,让它把精力花在组合编排上——决定下一步做什么,而不是重新构造样板代码。
例如,在你的数据科学 Skill 中,你可以放一组从事件源获取数据的函数库。为了让 Claude 做更复杂的分析,你可以提供一组辅助函数,像这样:
Claude 就可以即时生成脚本来组合这些功能,完成更高级的分析——比如回答“周二发生了什么?”这样的问题。

Skills 可以包含只在该 Skill 被调用时才激活的钩子(On Demand Hooks),并且在整个会话期间保持生效。这适合那些比较主观、你不想一直运行但有时候极其有用的钩子。
例如:
(注:PreToolUse 是 Claude Code 的钩子(hook)机制之一,会在 Claude 每次调用工具之前触发。你可以在这个钩子里检查 Claude 即将执行的命令,如果命中危险操作就阻止执行。这里 /careful 是一个按需激活的 Skill,只有用户主动调用时才会注册这个钩子。)
Skills 最大的好处之一就是你可以把它们分享给团队的其他人。
你可以通过两种方式分享 Skills:
对于在较少代码仓库上协作的小团队,把 Skills 提交到仓库中就够用了。但每个提交进去的 Skill 都会给模型的上下文增加一点负担。随着规模扩大,内部插件市场可以让你分发 Skills,同时让团队成员自己决定安装哪些。
怎么决定哪些 Skills 放进插件市场?大家怎么提交?
我们没有一个专门的中心团队来决定这些事;我们更倾向于让最有用的 Skills 自然涌现出来。如果你有一个想让大家试试的 Skill,你可以把它上传到 GitHub 的一个沙盒文件夹里,然后在 Slack 或其他论坛里推荐给大家。
当一个 Skill 获得了足够的关注(由 Skill 的作者自己判断),就可以提交 PR 把它移到插件市场中。
需要提醒的是,创建质量差或重复的 Skills 很容易,所以在正式发布之前确保有某种审核机制很重要。
你可能希望 Skills 之间互相依赖。例如,你可能有一个文件上传 Skill 用来上传文件,以及一个 CSV 生成 Skill 用来生成 CSV 并上传。这种依赖管理目前在插件市场或 Skills 中还不支持,但你可以直接按名字引用其他 Skills,只要对方已安装,模型就会调用它们。
为了了解一个 Skill 的表现,我们使用了一个 PreToolUse 钩子来在公司内部记录 Skill 的使用情况(示例代码在这里)。这样我们就能发现哪些 Skills 很受欢迎,或者哪些触发频率低于预期。
Skills 是 AI 智能体极其强大且灵活的工具,但这一切还处于早期阶段,我们都在摸索怎样用好它们。
与其把这篇文章当作权威指南,不如把它看作我们实践中验证过有效的一堆实用技巧合集。理解 Skills 最好的方式就是动手开始做、不断试验、看看什么对你管用。我们大多数 Skills 一开始就是几行文字加一个踩坑点,后来因为大家不断补充 Claude 遇到的新边界情况,才慢慢变好的。
参考链接:
https://x.com/trq212/status/2033949937936085378
文章来自于“51CTO技术栈”,作者 “玉澄”。
【开源免费】Browser-use 是一个用户AI代理直接可以控制浏览器的工具。它能够让AI 自动执行浏览器中的各种任务,如比较价格、添加购物车、回复各种社交媒体等。
项目地址:https://github.com/browser-use/browser-use
【开源免费】字节工作流产品扣子两大核心业务:Coze Studio(扣子开发平台)和 Coze Loop(扣子罗盘)全面开源,而且采用的是 Apache 2.0 许可证,支持商用!
项目地址:https://github.com/coze-dev/coze-studio
【开源免费】n8n是一个可以自定义工作流的AI项目,它提供了200个工作节点来帮助用户实现工作流的编排。
项目地址:https://github.com/n8n-io/n8n
在线使用:https://n8n.io/(付费)
【开源免费】DB-GPT是一个AI原生数据应用开发框架,它提供开发多模型管理(SMMF)、Text2SQL效果优化、RAG框架以及优化、Multi-Agents框架协作、AWEL(智能体工作流编排)等多种技术能力,让围绕数据库构建大模型应用更简单、更方便。
项目地址:https://github.com/eosphoros-ai/DB-GPT?tab=readme-ov-file
【开源免费】VectorVein是一个不需要任何编程基础,任何人都能用的AI工作流编辑工具。你可以将复杂的工作分解成多个步骤,并通过VectorVein固定并让AI依次完成。VectorVein是字节coze的平替产品。
项目地址:https://github.com/AndersonBY/vector-vein?tab=readme-ov-file
在线使用:https://vectorvein.ai/(付费)
【开源免费】AutoGPT是一个允许用户创建和运行智能体的(AI Agents)项目。用户创建的智能体能够自动执行各种任务,从而让AI有步骤的去解决实际问题。
项目地址:https://github.com/Significant-Gravitas/AutoGPT
【开源免费】MetaGPT是一个“软件开发公司”的智能体项目,只需要输入一句话的老板需求,MetaGPT即可输出用户故事 / 竞品分析 / 需求 / 数据结构 / APIs / 文件等软件开发的相关内容。MetaGPT内置了各种AI角色,包括产品经理 / 架构师 / 项目经理 / 工程师,MetaGPT提供了一个精心调配的软件公司研发全过程的SOP。
项目地址:https://github.com/geekan/MetaGPT/blob/main/docs/README_CN.md