Claude Code的Skills功能。这玩意儿说白了就像是给AI配了一套万能工具箱,你想让它干啥,提前把说明书和工具塞进去,它就能干得更漂亮。Anthropic这家公司,就是造Claude的那个,他们自己内部已经搞了几百个这种Skills在用,今天咱们就来扒一扒他们到底学到了啥经验教训。
很多人一听Skills就觉得,这不就是几个Markdown文件嘛,有啥了不起的。这种想法就像是看到冰山露出水面那一小块,就觉得整座山就这么大一样天真。实际上Skills最骚的地方在于它根本不是一个文件,而是一个完整的文件夹,里面可以塞脚本、塞资源、塞数据,Claude这个agent(智能体)可以在里面逛来逛去,发现东西,摆弄东西,就像你进了一个装备齐全的实验室一样自在。
在Claude Code里面,Skills还有一个专门的配置文件叫claude-plugin.toml,这个文件厉害到什么程度呢?它甚至可以注册动态钩子,让AI在特定的时候自动触发特定操作。Anthropic的人用了一段时间后发现,那些最牛的Skills往往都是把文件夹结构和配置选项玩出花来的,而不是简简单单写几行说明文字就完事的。
Skills的九大江湖门派
Anthropic的人把自家几百个Skills翻出来盘点了一下,发现这些家伙自然而然地聚成了几个帮派。最厉害的Skills通常只混一个帮派,而那些让人摸不着头脑的Skills往往是脚踩好几条船的墙头草。这个分类不是啥金科玉律,但用来检查自己公司是不是漏掉了哪种类型的Skills,简直不要太好用。
第一类帮派叫做库解释派,专门教Claude怎么正确使用各种库、命令行工具或者SDK。这些可能是你们公司内部开发的库,也可能是Claude Code有时候搞不定的常见库。这类Skills通常会有一个文件夹专门放参考代码片段,还会列出一堆坑让Claude绕着走。比如有个叫billing-lib的Skill,专门讲内部计费库的各种边界情况和坑;还有个internal-platform-cli,把内部CLI工具的每个子命令都讲清楚,配上啥时候该用啥的例子;再比如frontend-design,让Claude更懂你们公司的设计系统。
第二类是验证派,专门描述怎么测试和验证代码是不是在正常工作。这类Skills经常和外部工具搭档,比如playwright、tmux之类的。验证类的Skills超级有用,能确保Claude产出的东西是对的。Anthropic甚至觉得值得让一个工程师花一整周时间把这类Skills打磨到极致。你可以让Claude录个视频展示它测试了啥,或者在每一步都用程序断言检查状态。这类Skills通常会包含各种脚本。比如signup-flow-driver,用无头浏览器跑完注册、邮箱验证、 onboarding全套流程,每一步都能检查状态;checkout-verifier,用Stripe的测试卡驱动结账界面,验证发票是不是真的到了正确的状态;tmux-cli-driver,专门用来测试需要TTY的交互式CLI。
第三类是数据连接派,负责连上你们的数据和监控体系。这类Skills可能包含用凭证拉取数据的库、特定的仪表盘ID,还有常见工作流程的说明。比如funnel-query,告诉你"要看注册到激活到付费该join哪些事件",还有真正存着canonical user_id的表在哪;cohort-compare,比较两群人的留存或转化率,标出统计上显著的差异,还能链接到人群定义;grafana,存着数据源UID、集群名、问题到仪表盘的查找表。
第四类是工作流自动化派,把重复性的工作流程压缩成一个命令。这类Skills通常指令比较简单,但可能依赖其他Skills或MCP。对于这类Skills,把之前的结果存到日志文件里能帮模型保持一致性,还能回顾之前的执行情况。比如standup-post,聚合你的工单系统、GitHub活动和之前的Slack消息,格式化成日报,只显示变化;create-
第五类是脚手架生成派,为代码库里的特定功能生成框架模板。你可以把这类Skills和可组合的脚本搭配使用。当脚手架有自然语言需求没法纯靠代码覆盖时,这类Skills特别有用。比如new-
第六类是代码质量派,在组织内部强制执行代码质量规范,帮忙审查代码。这类可以包含确定性脚本或工具来保证最大健壮性。你可能想把这些Skills作为钩子自动运行,或者放到GitHub Action里。比如adversarial-review, spawn一个 fresh-eyes 子agent来挑刺,实现修复,迭代到发现的问题只剩吹毛求疵;code-style,强制执行代码风格,特别是Claude默认做不好的那些风格;testing-practices,说明怎么写测试、测什么。
第七类是代码操作派,帮你在代码库里获取、推送和部署代码。这类Skills可能会引用其他Skills来收集数据。比如babysit-pr,监控一个PR,重跑 flaky CI,解决合并冲突,开启自动合并;deploy-
第八类是调试派,拿到一个症状(比如Slack线程、告警或错误签名),走一遍多工具调查流程,产出结构化报告。比如
第九类是运维派,执行例行维护和运维操作——其中一些涉及破坏性操作,有防护措施会更安全。这些让工程师在关键操作中更容易遵循最佳实践。比如
写好Skills的十八般武艺
决定好要做啥Skill之后,怎么写才能写好呢?这里有一些Anthropic总结的最佳实践、技巧和窍门。他们最近还发布了Claude Code Skills Creator,让在Claude Code里创建Skills变得更容易。
Claude Code对你的代码库了解很多,Claude本身对编程也懂很多,包括很多默认观点。如果你发布的Skill主要是关于知识的,试着聚焦于能把Claude推出常规思维模式的信息。Design Skill就是个好例子——它是Anthropic的一个工程师通过和客户迭代,提升Claude的设计品味而建的,避免Inter字体和紫色渐变这种经典套路。
任何Skill里信号最强的内容就是Gotchas(坑)部分。这些部分应该从Claude使用你的Skill时遇到的常见失败点积累而来。理想情况下,你会随着时间更新Skill,把这些坑都 capture 进去。
就像之前说的,Skill是一个文件夹,不只是个Markdown文件。你应该把整个文件系统当作一种上下文工程和渐进式披露。告诉Claude你的Skill里有哪些文件,它会在合适的时候读取它们。
最简单的渐进式披露形式是指向其他Markdown文件让Claude用。比如,你可以把详细的函数签名和用法示例拆到references/api.md里。另一个例子:如果你的最终输出是Markdown文件,你可以在assets/里放个模板文件让它复制使用。你可以有references、scripts、examples等文件夹,帮Claude更有效地工作。
Claude通常会尽量遵守你的指令,因为Skills非常可复用,你在指令里太具体的时候要小心。给Claude它需要的信息,但给它适应情况的灵活性。比如:
Some skills may need to be set up with context from the user. For example, if you are making a skill that posts your standup to Slack, you may want Claude to ask which Slack channel to post it in. |
当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 can then generate scripts on the fly to compose this functionality to do more advanced analysis for prompts like "What happened on Tuesday?" |
Skills可以包含只在Skill被调用时激活、持续整个会话的钩子。用这个来放那些你不想一直运行、但有时极其有用的更有观点的钩子。比如:
/careful — blocks rm -rf, DROP TABLE, force-push, kubectl delete via PreToolUse matcher on Bash. You only want this when you know you're touching prod — having it always on would drive you insane |
团队协作:Skills的社交牛逼症
Skills最大的好处之一就是你可以和团队其他人分享。有两种主要方式可以分享Skills:一种是把Skills签入你的仓库(放在./.claude/skills下面);另一种是做个插件,搞个Claude Code Plugin市场,让用户上传和安装插件。
对于在相对少量仓库工作的小团队,把Skills签入仓库就挺好。但每个签入的Skill都会给模型的上下文增加一点点负担。随着规模扩大,内部插件市场让你能分发Skills,让团队决定装哪些。
怎么决定哪些Skills进市场?人们怎么提交?Anthropic没有 centralized 团队来决定;相反他们尝试有机地找到最有用的Skills。如果你有个Skill想让人试用,可以上传到GitHub的sandbox文件夹,然后在Slack或其他论坛指给人们看。
一旦Skill有了 traction(由Skill owner决定),他们可以提PR把它移进市场。需要注意的是,创建糟糕或冗余的Skill相当容易,所以确保发布前有一些策展方法很重要。
你可能想要相互依赖的Skills。比如,你可能有个文件上传Skill负责上传文件,还有个CSV生成Skill负责生成CSV并上传。这种依赖管理还没原生内置到市场或Skills里,但你可以直接通过名字引用其他Skills,模型会在它们已安装时调用它们。
为了理解Skill表现如何,Anthropic用PreToolUse钩子在公司内部记录Skill使用情况。这意味着他们能发现哪些Skill受欢迎,或者哪些触发频率低于预期。
结尾:Skills的未来在你手中
Skills是极其强大、灵活的工具,但现在还处于早期,大家都在摸索怎么最好地使用它们。把这当作一袋有用的小技巧,而不是 definitive 指南。理解Skills最好的方式就是开始动手,实验,看看啥对你有用。Anthropic的大部分Skills一开始都只有几行和一个坑,因为人们不断添加Claude遇到的新边界情况而变得越来越好。