第 5 课:Skill 技能系统
什么是 Skill?
Skill(技能)就是一份给 AI 看的操作手册。
打个比方:你招了一个很聪明的实习生,但他不知道你们公司用什么工具、什么格式。你需要给他一份文档,告诉他"要生成 Word 文件的时候,用这个库,按这个规范来"。
这份文档就是 Skill。
resume-generator 里的 Skill
这个项目只有一个技能:docx(Word 文档生成),放在这个位置:
.claude/skills/docx/
├── SKILL.md ← 技能入口:告诉 AI 该用什么工作流
└── docx-js.md ← 参考手册:docx 库的具体 API 用法
SKILL.md —— 技能入口
SKILL.md 是 AI 的"决策导航"。它先有一个头部信息:
---
name: docx
description: "Comprehensive document creation, editing, and analysis..."
---
然后是一棵"决策树",告诉 AI 遇到不同情况该走哪条路:
对于简历生成,AI 会走"创建新文档"这条路。SKILL.md 告诉它:先去读 docx-js.md,然后用 JavaScript 来生成文档。
docx-js.md —— API 参考手册
这是一份大约 350 行的参考文档,相当于给 AI 看的 docx 库速查手册。它包含:
基本结构:怎么创建一个文档
const doc = new Document({
sections: [{
children: [/* 内容放这里 */]
}]
});
Packer.toBuffer(doc).then(buffer =>
fs.writeFileSync("doc.docx", buffer)
);
文字格式:粗体、斜体、字号、颜色
new Paragraph({
children: [
new TextRun({ text: "粗体", bold: true }),
new TextRun({ text: "红色大字", color: "FF0000", size: 28 }),
]
})
样式系统:标题、正文、自定义样式
styles: {
default: { document: { run: { font: "Arial", size: 24 } } },
paragraphStyles: [
{ id: "Heading1", name: "Heading 1", run: { size: 32, bold: true } }
]
}
列表:项目符号、编号列表
表格:行列、边框、合并单元格
页面设置:页边距、页眉页脚、页码
还有一大堆"千万不要这样做"的警告:
❌ 永远不要用 \n 换行 → 用单独的 Paragraph
❌ 永远不要用 Unicode 符号做列表 → 用 LevelFormat.BULLET
❌ PageBreak 不能独立使用 → 必须放在 Paragraph 里
这些"坑"是前人踩过的,写进参考手册让 AI 也能避开。
Skill 是怎么被 AI 加载的?
整个加载链条是这样的:
用一句话概括:settingSources 告诉 SDK 去哪找技能 → Skill 工具让 AI 能读技能 → AI 读完就"学会"了。
为什么不把技能直接写进 systemPrompt?
你可能会想:"干嘛这么麻烦?把 docx-js.md 的内容直接塞到系统提示词里不就行了?"
不行,有三个原因:
1. 太长了
docx-js.md 有 350 行。系统提示词塞这么多内容,AI 的注意力会被稀释,重要指令可能被忽略。
2. 不灵活
如果你想生成 PDF 而不是 Word,就得把整个 systemPrompt 换掉。而用 Skill 的话,只需要在 .claude/skills/ 里加一个 pdf 技能就行。
3. 按需加载
AI 不一定每次都需要读完整个参考手册。Skill 系统让 AI 自己决定什么时候读、读多少。
systemPrompt 写法(❌ 笨重):
"你是简历写手。以下是 docx 库的完整 API 文档:
(350 行参考手册全塞进来)
现在开始工作。"
Skill 写法(✅ 灵活):
systemPrompt: "你是简历写手。用 docx 库生成 Word 文件。"
+ .claude/skills/docx/(AI 自己去读)
怎么自己写一个 Skill?
如果你想添加新的技能(比如 PDF 生成、Excel 处理),只需要三步:
第一步:创建目录
mkdir -p .claude/skills/你的技能名/
第二步:写 SKILL.md
---
name: 你的技能名
description: "一句话描述这个技能干嘛的"
---
# 技能说明
## 什么时候用
描述在什么场景下应该用这个技能
## 怎么用
具体的操作步骤和代码示例
## 注意事项
常见的坑和解决办法
第三步:添加参考文档(可选)
如果技能涉及某个库的详细 API,可以单独写一个参考文档(就像 docx-js.md)。
本课小结
- Skill 是给 AI 看的操作手册,放在
.claude/skills/目录 - resume-generator 用了一个 docx 技能,包含 SKILL.md(决策导航)和 docx-js.md(API 参考)
- 通过
settingSources: ['project']+Skill工具 让 AI 能访问技能 - Skill 比直接写进 systemPrompt 更灵活、更高效
课后练习
- 打开
.claude/skills/docx/SKILL.md,通读一遍决策树 - 打开
docx-js.md,注意那些"❌ WRONG"和"✅ CORRECT"的对比——这些就是 AI 踩坑后总结出来的 - 想一想:如果要做一个"自动生成 Excel 报表"的工具,Skill 文件里应该写什么?