跳至正文
来两杯美式
返回

Agent Skills 最佳实践:从评测、结构拆分到安全审查

By 来两杯美式
发布于

Agent Skills 的格式很简单,但要做出真正好用的 Skill,并不是把一段 Prompt 放进 SKILL.md 就结束了。

Anthropic 在工程文章里给了几条很实用的建议:从评测开始,为规模做结构拆分,从 Claude 的视角思考,和 Claude 一起迭代,并认真处理安全问题。

这篇文章就按这些建议,整理一套可以落地的 Skill 构建方法。

一、从评测开始,而不是从写说明开始

Anthropic 的第一条建议是:Start with evaluation。

也就是说,不要一上来就凭想象写一个很大的 Skill。更好的方式是先拿真实任务测试 Agent,观察它在哪里失败、哪里需要额外上下文、哪里需要更稳定的工具。

例如你想做一个代码审查 Skill,不要先写“你是资深工程师,请认真审查代码”。你应该先收集几类真实变更:

然后观察 Claude 的表现:它有没有抓住关键风险?是不是在无关风格问题上花太多篇幅?是否知道项目里哪些文件不能手改?是否按照团队想要的格式输出 review?

这些失败点,才是 Skill 应该补上的内容。

好 Skill 不是“把所有规则都写进去”,而是“针对 Agent 实际会犯的错补充最小有效上下文”。

二、把 Skill 当成可迭代产品

Skill 不是一次写完就永远正确的文档。它更像一个小产品,需要持续评估和迭代。

一个实用流程可以是:

  1. 选 5 到 10 个代表性任务;
  2. 不使用 Skill 跑一遍,记录失败点;
  3. 写最小版本 SKILL.md
  4. 使用 Skill 再跑一遍;
  5. 对比输出质量、步骤遗漏、误触发和安全风险;
  6. 只把确实有帮助的规则沉淀进 Skill。

这样做可以避免两个常见问题。

第一个问题是 Skill 太空。它写了很多正确但无用的原则,实际任务中并不能改善结果。

第二个问题是 Skill 太满。它把所有可能情况都塞进去,导致 Claude 每次触发后负担过重,反而抓不住重点。

三、为规模做结构拆分

Anthropic 的第二条建议是:Structure for scale。

SKILL.md 变得臃肿时,应该把内容拆到单独文件里,并在 SKILL.md 中说明什么时候读取它们。

一个常见结构是:

my-skill/
├── SKILL.md
├── reference.md
├── examples.md
├── checklist.md
└── scripts/
    └── helper.py

SKILL.md 不应该变成所有资料的堆放场。它更适合承担“导航页”的角色:说明这个 Skill 做什么、什么时候用、基本流程是什么、有哪些附加资源。

例如:

## Additional resources

- For complete API fields, read `reference.md`.
- For output examples, read `examples.md`.
- For release risk checks, read `checklist.md`.
- For deterministic validation, run `scripts/validate.py`.

这样 Claude 可以根据任务需要继续读取对应资料,而不是每次都加载全部内容。

四、互斥场景要拆开

Anthropic 特别提到,如果某些上下文是互斥的,或者很少一起使用,就应该分开存放,减少 token 使用。

这一点很容易被忽略。

比如一个“文档生成” Skill 里,可能同时有:

这些模板都属于“文档生成”,但在单次任务里通常只会用到一种。如果全部放进 SKILL.md,Claude 每次写周报时也会看到 PRD 和复盘模板,既浪费上下文,也可能混淆输出结构。

更好的方式是把它们拆成独立文件,甚至拆成独立 Skills。

判断是否拆分,可以看三个问题:

如果答案是否定的,就应该拆开。

五、从 Claude 的视角写 description

Anthropic 的第三条建议是:Think from Claude’s perspective。

这句话非常重要,尤其体现在 namedescription 上。

Claude 会用 Skill 的名称和描述来判断当前任务是否应该触发这个 Skill。所以 description 不是营销文案,而是匹配规则。

一个太泛的 description 可能是:

description: Helps with documents.

它的问题是边界太模糊。什么叫 documents?写文档、改文档、读文档、生成 PDF、处理 Word 都算吗?Claude 很可能误触发,也可能该触发时不触发。

更好的 description 应该包含任务、场景和触发信号:

description: Create and revise product requirement documents. Use when the user asks for PRD drafts, feature requirements, user stories, acceptance criteria, or product risk analysis.

它告诉 Claude:

写 description 时,可以多问一句:如果 Claude 只看到这一行,它能不能正确决定“该不该用”?

六、让 Claude 帮你沉淀 Skill

Anthropic 的第四条建议是:Iterate with Claude。

这听起来有点递归,但很实用。你可以在和 Claude 完成任务后,让它把成功做法和常见错误沉淀进 Skill。

例如一次代码审查结束后,你可以让 Claude 总结:

把这次审查中有效的检查路径,整理成可复用的 Skill 规则。
只保留对未来任务有帮助、非显而易见、可执行的内容。

如果 Claude 使用某个 Skill 走偏了,也可以让它反思:

刚才使用这个 Skill 时哪里判断错了?
是 description 误导、流程不清楚、参考资料缺失,还是脚本输出没有被正确解释?
请给出应该修改的 Skill 内容。

这样做的好处是,你不必一开始就猜中 Claude 需要什么上下文。你可以从真实交互中发现它实际缺什么,再把经验沉淀进去。

七、脚本既是工具,也是文档

Anthropic 提醒,代码可以同时作为可执行工具和文档,但要写清楚 Claude 应该运行它,还是阅读它。

这点很关键。

如果 Skill 里有一个脚本,SKILL.md 应该明确说明:

例如:

## Validation

Run `python3 ${CLAUDE_SKILL_DIR}/scripts/validate.py <file>` before finalizing.
The script prints JSON with `ok`, `errors`, and `warnings` fields.
Do not modify the target file from this script; it is read-only validation.

这样的说明能减少 Agent 的误用。

八、控制副作用:该自动的自动,该手动的手动

Claude Code 文档提到,有些 Skill 可以自动触发,有些应该只允许用户显式调用。

这背后的原则很简单:没有副作用、低风险、强相关的能力适合自动触发;有副作用、高成本、会改变外部状态的能力应该由用户控制。

适合自动触发的例子:

更适合手动触发的例子:

如果一个 Skill 可能产生外部影响,就不要让 Agent 因为“看起来相关”而自动执行它。

九、安全审查:Skill 不是普通文本

Anthropic 在安全部分提醒:Skills 通过指令和代码给 Claude 新能力,也意味着恶意 Skill 可能引入漏洞,或者诱导 Claude 泄露数据、执行非预期操作。

审查 Skill 时,至少要看这些内容:

对团队来说,Skill 最好像代码一样管理:走版本控制、走 review、走发布流程。

十、一个实用的 Skill 编写清单

写 Skill 前,可以用这份清单快速过一遍。

目标:这个 Skill 解决哪一类重复任务?
触发:用户说什么时应该使用它?什么时候不该用?
输入:它需要读取哪些文件、参数或上下文?
流程:Claude 应该按什么步骤执行?
资料:哪些长文档应该拆到独立文件?
脚本:哪些确定性操作应该交给代码?
输出:最终结果应该是什么格式?
验证:如何判断 Skill 真的改善了任务表现?
安全:它是否有副作用、网络访问或敏感数据风险?
维护:谁负责更新,如何做版本管理?

如果这十个问题都能回答清楚,这个 Skill 大概率就不是一段随手写的 Prompt,而是一个可维护的能力模块。

小结

Anthropic 对 Agent Skills 的最佳实践,可以压缩成四句话。

第一,从真实任务和评测开始,不要凭空写大而全的说明。

第二,用渐进式披露组织材料,让 SKILL.md 做导航,把细节拆到独立文件。

第三,从 Claude 的视角写名称、描述和流程,让它知道何时触发、读什么、做什么。

第四,把安全当成设计的一部分,尤其是涉及脚本执行、外部网络和副作用的 Skill。

Agent Skills 的长期价值,不是让我们多写一种配置文件,而是让团队可以把反复验证过的工作方法沉淀下来,让 Agent 在真实任务中稳定复用。

参考资料


分享这篇文章:
通过邮件分享这篇文章✓ 链接已复制
查看系列全部文章
  1. 01.MCP Server 选型决策树:从语言到审计,六个维度一次说清
  2. 02.当 MCP Server 只是"翻译"现成能力:FastMCP + Mem0 + Redis 的选型逻辑
  3. 03.当 MCP Server 要"嵌进"对外平台:Node.js + 官方 SDK + API Key 的选型逻辑
  4. 04.SSE 已被 MCP 判为 legacy:存量服务怎么迁、新服务怎么选
  5. 05.MCP 权限怎么分级?只读、可操作和高风险动作(附完整源码)
  6. 06.MCP 工具权限码怎么设计?read、write、dangerous 三层模型(附完整源码)
  7. 07.自建 SearXNG + MCP:给 AI 工具接入可控的网页搜索
  8. 08.Agent Skill 是快照,快照会腐烂:我把业务流程全部搬到了服务端
  9. 09.能力目录与协议下发:把接口设计和控制流一起交给 Agent
  10. 10.四套版本号:把 Agent Skill 的版本管理挪回服务端之后
  11. 11.让用户自定义 Agent 能力,而不打开注入的后门
  12. 12.MCP 2026-07-28 改了什么:从有状态会话到无状态核心
  13. 13.Anthropic 发布 Agent Skills:AI Agent 的能力该如何被打包
  14. 14.Agent Skills 设计模式:用文件夹给 Agent 装上专业能力
  15. 15.Agent Skills 最佳实践:从评测、结构拆分到安全审查
  16. 16.MCP Server 升级 2026-07-28:不是换依赖,而是重画协议边界
  17. 17.MCP Client 升级 2026-07-28:服务端能留兼容窗口,我们偏不兼容旧协议
  18. 18.MCP 爆炸之后,Agent 怎么从一堆工具里选对那一个

上一篇
Agent 评测工程化(八):不用消息队列,也能跑长任务
下一篇
Agent 评测工程化(七):从评分报表到 PM 决策工作台