所有文章

Skill 最佳实践笔记 - 自用

好的Skill是怎样的

Skill 最佳实践笔记 - 自用

读了三篇如何写Skill的文章
Github文章-如何写出好的 Skill
Claude文章-Skill 编写最佳实践
Trae文章-如何写好一个 Skill:从创建到迭代的最佳实践

这里做一个学习笔记

首先

一个SKILL最少需要一个SKILL.md
SKILL.md中包含frontmatter以及body

frontmatter格式

name: 
description: 

name则是唯一标识符
description描述的是Skill在什么情况下应该被触发

name规范

  1. 词与词之间应用-连接。
  2. 推荐动名词。
  3. 长度不超过64字符。

description规范

  1. 使用第三人称,从AI视角描述。
  2. 包含核心功能与触发时机的关键词。
  3. 长度不超过 1024 个字符。

body格式

body的内容是Skill被激活之后才加载的操作指令。
如果技能没被触发,AI 永远不会读到这里。

到这里我们已经完成了一个简单的Skill
Skill可以很简单也可以很复杂

AI执行的自由度分级

比如我们让AI做读取本地文件。

高自由度——给方向

具体怎么做让 AI 自己决定。
在这个自由度,AI可以自己选择技术栈C#,Rust,Python等。

中自由度——给框架

AI可以在框架内选择怎么做。
在这个自由度,我们指定了技术栈,但不管代码实现。

低自由度——给代码

让AI直接调用。
在这个自由度,我们直接把能读取本地文件的Rust代码给AI。

自由度越低意味着犯错的可能越低,而我们对不同的命令犯错的接受度不同,所以要合理选择不同自由度的命令。

简洁

三篇文章同时提到了,给AI的文字要简洁 为什么呢?因为上下文是非常珍贵的有限资源,Skill越简洁,占用的上下文就越少。

这里我看看Claude官方给出的例子

渐进式披露

从单一文件 → 多个参考文件和脚本组成的结构。通过渐进式披露,AI能快速抓住核心信息,再深入了解细节。 这里引出了Skill的其他部分如reference,scripts,assets。

skill-name/
├── SKILL.md               # [必需] 入口文件:frontmatter + body
├── agents/
│   └── openai.yaml        # [推荐] 技能的"名片"
├── scripts/               # [可选] 可执行脚本
├── references/            # [可选] 参考文档
└── assets/                # [可选] 产出物模板

模式1-引用指南

**Form filling**: See [FORMS.md](reference/FORMS.md) for complete guide

这里我们将这样可能被用到的外部资料引用,既保持了body的整洁,又让AI在需要时能快速找到。

模式2-按领域组织

## Available datasets

**Finance**: Revenue, ARR, billing → See [reference/finance.md](reference/finance.md)
**Sales**: Opportunities, pipeline, accounts → See [reference/sales.md](reference/sales.md)
**Product**: API usage, features, adoption → See [reference/product.md](reference/product.md)
**Marketing**: Campaigns, attribution, email → See [reference/marketing.md](reference/marketing.md)

模式3-条件性细节

## Editing documents

For simple edits, modify the XML directly.

**For tracked changes**: See [REDLINING.md](REDLINING.md)
**For OOXML details**: See [OOXML.md](OOXML.md)

仅在用户需要这些功能时才读取 REDLINING.md 或 OOXML.md。

这里解释一下与模式1的区别
模式1指 按知识类型划分
模式3指 按任务场景划分
用户说:「帮我修改 Word 文档中的一段文字。」
Agent 读取 SKILL.md 后,发现只需直接修改 XML,就没有必要读取 REDLINING.md。
但如果用户说:「帮我修改 Word 文档,并保留修订记录。」
这时满足了 Tracked Changes 条件,Agent 才需要进一步读取 REDLINING.md。

避免 Windows 风格的路径

这里你可能注意到了上面出现的路径统一使用“正斜杠”,这是因为Unix 风格的路径在所有平台上都有效,而 Windows 风格的路径在 Unix 系统上会导致错误。

避免深层嵌套引用

保持引用距离 SKILL.md 只有一层深度。

为较长的参考文件添加目录

对于超过 100 行的参考文件,请在顶部包含目录。这可以确保 Claude 即使在通过部分读取进行预览时也能看到可用信息的完整范围。

不要把AI当傻X

一定要假设: AI 已经非常聪明

只添加 AI 没掌握的知识。对每条信息提出质疑:

"AI 真的需要这个解释吗?"
"我可以假设 AI 知道这一点吗?"
"这一段值得它的词元成本吗?"

工作流和反馈循环

对复杂任务使用工作流

将复杂操作分解为清晰、有序的步骤。对于特别复杂的工作流,提供一个清单,AI 可以将其复制到响应中并在推进过程中逐项勾选。

实现反馈循环

运行验证器 → 修复错误 → 重复
也就是不断的“修复+回归测试”

内容指南

时效性

正面示例

## Current method

Use the v2 API endpoint: `api.example.com/v2/messages`

## Old patterns

<details>
<summary>Legacy v1 API (deprecated 2025-08)</summary>

The v1 API used: `api.example.com/v1/messages`

This endpoint is no longer supported.
</details>

反面示例:有时效性

If you're doing this before August 2025, use the old API.
After August 2025, use the new API.

统一术语

比如:始终使用 "API endpoint",而不是混用 "API endpoint"、"URL"、"API route"、"path"

常见模式

模板模式

为输出格式提供模板。使严格程度与需求相匹配。 你可以让AI严格按照格式输出,也可以留给它一定的自由发挥空间。

示例模式

对于输出质量依赖于查看示例的 Skills,请像常规提示一样提供输入/输出对。

条件工作流模式

很像代码中的case()

## Document modification workflow

1. Determine the modification type:

   **Creating new content?** → Follow "Creation workflow" below
   **Editing existing content?** → Follow "Editing workflow" below

2. Creation workflow:
   - Use docx-js library
   - Build document from scratch
   - Export to .docx format

3. Editing workflow:
   - Unpack existing document
   - Modify XML directly
   - Validate after each change
   - Repack when complete

高级:包含可执行代码的 Skills

提供预制菜(代码)

实用脚本的好处:
比生成的代码更可靠
节省词元(无需在上下文中包含代码)
节省时间(无需生成代码)
确保各次使用之间的一致性

使用视觉分析

有时图片比文字来得更直观 当输入可以渲染为图像时

## Form layout analysis
1. Convert PDF to images:
   bash
   python scripts/pdf_to_images.py form.pdf
   
2. Analyze each page image to identify form fields
3. Claude can see field locations and types visually

创建可验证的中间输出

当 Claude 执行复杂、开放式的任务时,它可能会犯错。"计划-验证-执行"模式通过让 Claude 首先以结构化格式创建计划,然后在执行之前用脚本验证该计划,从而及早发现错误。

MCP 工具引用

如果 Skill 使用 MCP(Model Context Protocol)工具,始终使用完全限定的工具名称以避免"找不到工具"错误。

示例:

Use the BigQuery:bigquery_schema tool to retrieve table schemas.
Use the GitHub:create_issue tool to create issues.

避免假设工具已安装

**Bad example: Assumes installation**:
"Use the pdf library to process the file."

**Good example: Explicit about dependencies**:
"Install required package: `pip install pypdf`

Then use it:
python
from pypdf import PdfReader
reader = PdfReader("file.pdf")

高效 Skills 清单

核心质量
 描述具体并包含关键术语
 描述同时包含 Skill 的功能以及何时使用它
 SKILL.md 正文在 500 行以内
 其他详细信息放在单独的文件中(如果需要)
 没有时效性信息(或放在"旧模式"部分)
 全文术语一致
 示例具体,而非抽象
 文件引用只有一层深度
 适当使用渐进式披露
 工作流有清晰的步骤
代码和脚本
 脚本解决问题,而不是推给 Claude
 错误处理明确且有帮助
 没有"巫术常量"(所有值都有依据)
 所需的包已在指令中列出并验证可用
 脚本有清晰的文档
 没有 Windows 风格的路径(全部使用正斜杠)
 关键操作有验证/核实步骤
 对质量关键型任务包含反馈循环
测试
 至少创建了三个评估
 已使用 三种不同水平的模型 测试
 已使用真实使用场景测试
 已吸收团队反馈(如适用)

封面拍摄于日本-东京-秋叶原

感谢读到这里。最后更新于 10月21日

评论

使用 GitHub 账号登录后即可参与讨论。若评论区未能加载,可前往 GitHub Discussions。