claude.dev 解读
SkillsThariq Shihipar2026-06-03约 11 分钟阅读原文 ↗

Lessons from building Claude Code: How we use skills

好技能是只做一类事的文件夹,价值在真实踩坑的 Gotchas 与现成脚本

主张
6
审视
6
遗漏
2
  1. 01Anthropic 内部把自己的技能编目后归成九类。作者认为好技能只落在其中一类,而且是一个文件夹(含脚本、资产、数据、按需 hooks),不只是一份 markdown。
  2. 02写技能的要点有五个:不写 Claude 本来就会的东西;Gotchas 段要靠真实失败一条条积累;用文件系统做渐进披露;description 写成「什么时候触发」而不是功能摘要;给 Claude 现成的脚本,让它把轮次花在组合上。
  3. 03作者说验证类技能对输出质量的提升最可测。分发上,团队小时把技能放进仓库,规模变大后改用插件 marketplace。度量方面,他们用 PreToolUse hook 记录技能用量,找出触发不足的技能。
怎么读这篇
作者主张 · Thariq Shihipar我们的审视
01

技能是文件夹,不是文档

技能本质上是一个文件夹,整个文件系统都可以当作上下文工程和渐进披露的工具。

机制拆解

SKILL.md 当枢纽,只告诉 Claude 有哪些文件、什么症状读哪个文件。详细的 API 签名放 references/,输出模板放 assets/,可执行逻辑放脚本。这样常驻上下文只有一张路由表,细节等需要时才读进来,避免一上来就把所有知识塞进窗口。

“think of the entire file system as a form of context engineering” ¶64

遗漏

上下文成本只用一句「增加一点」带过,没有量化清单的 token 占用,也没说技能数量的上限、description 会不会被截断。另外,技能依赖靠按名引用,被依赖的技能没装时会怎样失败,文章也没写。

自己验证在装了全部技能的会话里查看上下文用量的分项(推断 Claude Code 提供了这类查看功能,需要核实),比较卸载某个技能族前后技能清单占的 token;再故意引用一个没装的技能,观察模型是报错还是静默跳过。
02

一个技能只管一类事

好技能只做一类事。横跨多类的技能会让 agent 困惑。

机制拆解

作者把内部技能编目后归为九类:库/API 参考、产品验证、数据获取与分析、业务流程自动化、脚手架、代码质量、CI/CD、Runbook、基础设施运维。推断:技能是凭 description 被选中的,一个技能职责混杂,触发边界就模糊,模型很难判断该不该调用它,也很难判断调用后该走哪条分支。作者自己说这个分类不是定论,只是帮你找技能库缺口的框架。

“The best skills fit cleanly into one” ¶8

数字口径

九类分类来自 Anthropic 内部编目,编目方法、样本量和归类标准都没有说明。「横跨多类的技能会让 agent 困惑」是定性观察,没有给证据。

自己验证把 ~/.claude/skills 里的技能按九类打标,标出跨类的技能,再用 hook 日志看这些技能误触发或不触发的比例是否高于单类技能。
03

验证技能最值得重投入

验证类技能对输出质量的影响最可测,值得专门投入一名工程师花一周打磨。

机制拆解

验证技能通常配合 playwright、tmux 这类外部工具驱动真实界面或 TTY。它在每一步对状态做程序化断言,或者录下视频让人看到 Claude 到底测了什么。这样 Claude「自称完成」就变成了可以检查的证据,靠的是技能里附带的脚本,不是靠文字指令。

“Verification skills have had the most measurable impact on Claude’s output quality internally.” ¶15

数字口径

「验证技能对质量的影响最可测」既没有给指标定义,也没有基线和提升幅度,没法判断「最」是相对什么说的。

自己验证在 harness-eval 的判分框架里挑几个端到端用例,做有/无验证技能的同模型对照,用 graders.py 的三向自测口径比较通过率,并记录 token 成本。
04

Gotchas 靠踩坑积累

技能里信号最高的部分是 Gotchas 段。它应该从 Claude 实际踩过的坑里一条条长出来,不写 Claude 本来就知道的东西。

机制拆解

Claude 已经会写代码、能读代码库,重复它的默认行为只会占上下文、不增加价值。真正把它推离默认路径的,是组织特有的反直觉事实:只追加不更新的表要按 version 取最新行;同一个值在两个系统里叫不同字段名;staging 环境返回 200 但 webhook 实际没处理。作者说最好的技能大多是从几行字加一条 gotcha 起步,后来不断补充才变好的。

“The highest-signal content in any skill is the Gotchas section.” ¶59

这一点暂无对应的审视。

05

描述写给模型看

description 是写给模型看的触发条件,不是写给人看的功能摘要。

机制拆解

会话一启动,Claude Code 就把所有可用技能连同 description 列成一张清单,模型扫这张清单来判断「有没有技能适合这个请求」。所以 description 应该写触发场景和用户的原话,比如「babysit」「watch CI」,而不是「一个全面的 PR 监控工具」这种泛泛的概括。

“it's a description of when to trigger this skill” ¶73

可复现性

「description 写成触发条件更好」可以低成本自己复现。

自己验证挑两三个技能,固定一组中文请求,分别用摘要体和触发条件体的 description 跑新会话,记录是否触发了正确的技能。每种写法多跑几次,以抵消随机性。
06

给脚本,让它专心组合

把代码和函数库交给 Claude,让它把轮次花在决定下一步做什么上,而不是重写样板代码。

机制拆解

技能里预置一些带 docstring 的辅助函数,docstring 里顺带写明数据坑(例如注册前 user_id 为空)。遇到开放式问题时,Claude 现场生成脚本,import 这些函数组合出分析。确定性的部分由代码保证,判断和编排留给模型。

“lets Claude spend its turns on composition” ¶77

遗漏

全文没有讲安全。技能可以带可执行脚本和 hooks,从 marketplace 安装等于引入别人写的代码,但文章没有提签名、审核、权限边界和供应链风险。

自己验证读 Claude Code 官方的 plugins 文档,确认是否有完整性校验或来源校验机制;

作者没有直接谈到这一点。

厂商视角

作者是 Claude Code 团队成员。「最常用的扩展点之一」「内部有几百个在用」都是自述,没有给数据。文章还顺带推广了插件 marketplace 和 Skilljar 课程,整体立场是推广 skills 生态。

01

机制聚焦

技能文件夹的渐进披露

技能按层展开,Claude 只在需要时往下读,整个文件系统本身就是上下文工程。

  1. 01技能清单会话启动时列出全部 description,用来判断要不要触发
  2. 02SKILL.md枢纽文件,告诉 Claude 有哪些文件、什么症状读哪个
  3. 03references/拆出详细函数签名与用法示例,需要时再读
  4. 04assets/ 与脚本模板拿来复制,脚本和函数库供 Claude 组合调用
依据原文 ¶64 ↗
02

核心观点

01

技能是文件夹,不是文档

技能本质上是一个文件夹,整个文件系统都可以当作上下文工程和渐进披露的工具。

机制拆解

SKILL.md 当枢纽,只告诉 Claude 有哪些文件、什么症状读哪个文件。详细的 API 签名放 references/,输出模板放 assets/,可执行逻辑放脚本。这样常驻上下文只有一张路由表,细节等需要时才读进来,避免一上来就把所有知识塞进窗口。

think of the entire file system as a form of context engineering¶64 ↗

02

一个技能只管一类事

好技能只做一类事。横跨多类的技能会让 agent 困惑。

机制拆解

作者把内部技能编目后归为九类:库/API 参考、产品验证、数据获取与分析、业务流程自动化、脚手架、代码质量、CI/CD、Runbook、基础设施运维。推断:技能是凭 description 被选中的,一个技能职责混杂,触发边界就模糊,模型很难判断该不该调用它,也很难判断调用后该走哪条分支。作者自己说这个分类不是定论,只是帮你找技能库缺口的框架。

The best skills fit cleanly into one¶8 ↗

03

验证技能最值得重投入

验证类技能对输出质量的影响最可测,值得专门投入一名工程师花一周打磨。

机制拆解

验证技能通常配合 playwright、tmux 这类外部工具驱动真实界面或 TTY。它在每一步对状态做程序化断言,或者录下视频让人看到 Claude 到底测了什么。这样 Claude「自称完成」就变成了可以检查的证据,靠的是技能里附带的脚本,不是靠文字指令。

Verification skills have had the most measurable impact on Claude’s output quality internally.¶15 ↗

04

Gotchas 靠踩坑积累

技能里信号最高的部分是 Gotchas 段。它应该从 Claude 实际踩过的坑里一条条长出来,不写 Claude 本来就知道的东西。

机制拆解

Claude 已经会写代码、能读代码库,重复它的默认行为只会占上下文、不增加价值。真正把它推离默认路径的,是组织特有的反直觉事实:只追加不更新的表要按 version 取最新行;同一个值在两个系统里叫不同字段名;staging 环境返回 200 但 webhook 实际没处理。作者说最好的技能大多是从几行字加一条 gotcha 起步,后来不断补充才变好的。

The highest-signal content in any skill is the Gotchas section.¶59 ↗

05

描述写给模型看

description 是写给模型看的触发条件,不是写给人看的功能摘要。

机制拆解

会话一启动,Claude Code 就把所有可用技能连同 description 列成一张清单,模型扫这张清单来判断「有没有技能适合这个请求」。所以 description 应该写触发场景和用户的原话,比如「babysit」「watch CI」,而不是「一个全面的 PR 监控工具」这种泛泛的概括。

it's a description of when to trigger this skill¶73 ↗

06

给脚本,让它专心组合

把代码和函数库交给 Claude,让它把轮次花在决定下一步做什么上,而不是重写样板代码。

机制拆解

技能里预置一些带 docstring 的辅助函数,docstring 里顺带写明数据坑(例如注册前 user_id 为空)。遇到开放式问题时,Claude 现场生成脚本,import 这些函数组合出分析。确定性的部分由代码保证,判断和编排留给模型。

lets Claude spend its turns on composition¶77 ↗

03

批判性审视

厂商视角

作者是 Claude Code 团队成员。「最常用的扩展点之一」「内部有几百个在用」都是自述,没有给数据。文章还顺带推广了插件 marketplace 和 Skilljar 课程,整体立场是推广 skills 生态。

数字口径

「验证技能对质量的影响最可测」既没有给指标定义,也没有基线和提升幅度,没法判断「最」是相对什么说的。

自己验证在 harness-eval 的判分框架里挑几个端到端用例,做有/无验证技能的同模型对照,用 graders.py 的三向自测口径比较通过率,并记录 token 成本。
数字口径

九类分类来自 Anthropic 内部编目,编目方法、样本量和归类标准都没有说明。「横跨多类的技能会让 agent 困惑」是定性观察,没有给证据。

自己验证把 ~/.claude/skills 里的技能按九类打标,标出跨类的技能,再用 hook 日志看这些技能误触发或不触发的比例是否高于单类技能。
可复现性

「description 写成触发条件更好」可以低成本自己复现。

自己验证挑两三个技能,固定一组中文请求,分别用摘要体和触发条件体的 description 跑新会话,记录是否触发了正确的技能。每种写法多跑几次,以抵消随机性。
遗漏

全文没有讲安全。技能可以带可执行脚本和 hooks,从 marketplace 安装等于引入别人写的代码,但文章没有提签名、审核、权限边界和供应链风险。

自己验证读 Claude Code 官方的 plugins 文档,确认是否有完整性校验或来源校验机制;
遗漏

上下文成本只用一句「增加一点」带过,没有量化清单的 token 占用,也没说技能数量的上限、description 会不会被截断。另外,技能依赖靠按名引用,被依赖的技能没装时会怎样失败,文章也没写。

自己验证在装了全部技能的会话里查看上下文用量的分项(推断 Claude Code 提供了这类查看功能,需要核实),比较卸载某个技能族前后技能清单占的 token;再故意引用一个没装的技能,观察模型是报错还是静默跳过。
本篇未覆盖(3)
风格