为什么使用 Skills(下)
上一课我们学会了创建 Skill 并在 Claude 中使用。这一课深入探讨 Skills 的底层机制——开放标准、渐进式披露,以及它们在 Agent 生态中的定位。
Skills 是开放标准
与 MCP(Model Context Protocol)类似,Skills 本身也是一个开放标准——拥有明确的规范格式,可以跨平台使用。
虽然 Skills 最初由 Anthropic 创建,但现在已被多个 AI 产品采用:
- Claude Code
- Claude.ai / Claude Desktop
- Claude Agent SDK / Claude API
- Codex、Gemini CLI、Open Code 等
构建一次,部署到任何支持 Skills 的 Agent 产品。
Skills 不只是文本文件
在上一课中,我们的 Skill 引用了额外的 Markdown 文档。但 Skills 的能力远不止于此——它们还可以包含可执行脚本。
以 PDF 处理 Skill 为例,它需要:
- 将 PDF 转换为图片
- 提取表单字段信息
- 用注释填充 PDF 表单
这些操作都需要执行代码,而这些脚本可以直接从 SKILL.md 中引用。
Skills 还可以包含图标、图片和其他资产,用于创建自定义样式和品牌。
Agent 范式的演进
过去:单一用途 Agent
传统方式是为每个领域构建专用 Agent——编码 Agent、研究 Agent、金融 Agent、营销 Agent。每个都有自己的工具集和上下文。
现在:通用 Agent + Skills
随着实践深入,人们发现这些 Agent 底层需要的只是简单的脚手架——Bash 和文件系统,用于查找、编辑、修改和执行任务。
这种更简单的 Agent 更容易评估、理解和扩展。但它们缺少的是领域专业知识和上下文。
Skills 正是为此而生——它们为通用 Agent 提供:
- 程序性知识(Procedural Knowledge)——具体的操作步骤
- 用户/团队/公司特定的上下文——按需加载
Skills 解决的三大问题
1. 领域专业知识
Claude 知道如何做数据分析、法律审查,但不知道你的团队具体怎么做。
| 类别 | 示例 |
|---|---|
| 品牌规范 | 品牌指南与模板、字体/颜色/Logo |
| 流程规范 | 法律审查流程、数据分析方法论 |
| 公司标准 | 内部编码规范、报告格式要求 |
2. 可重复工作流
在非确定性系统中,确保输出一致性是个挑战。Skills 通过明确的步骤和指令,让 Agent 的行为更可预测:
| 类别 | 示例 |
|---|---|
| 定期任务 | 每周营销活动复盘 |
| 客户准备 | 客户拜访前的资料整理 |
| 商务分析 | 季度业务回顾报告 |
3. 新能力扩展
Skills 可以赋予 Agent 它原本不具备的能力:
| 类别 | 示例 |
|---|---|
| 文档生成 | 创建 PowerPoint 演示文稿 |
| 数据导出 | 生成 Excel 表格、PDF 报告 |
| 代码执行 | 构建 MCP Server、运行分析脚本 |
没有 Skills vs 有 Skills
| 对比维度 | 没有 Skills | 有 Skills |
|---|---|---|
| 指令输入 | 每次手动描述 | 一次打包,反复使用 |
| 参考文件 | 每次全部附上 | 按需渐进加载 |
| 输出一致性 | 手动维护 | 由 Skill 指令保证 |
| 跨平台 | 不可移植 | 开放标准,一处构建多处使用 |
可移植性(Portable)
同一个 Skill 可以在不同环境中使用,无需修改:
- Claude.ai / Claude Desktop
- Claude Code
- Claude Agent SDK
- Claude API
- Codex、Gemini CLI 等第三方平台
可组合性(Composable)
Skills 可以互相组合,构建复杂工作流。例如:
- 品牌指南 Skill —— 提供字体、颜色、Logo 规范
- PowerPoint Skill —— 创建幻灯片
- BigQuery Skill —— 提供营销相关数据库 Schema
- 营销分析 Skill —— 分析营销活动数据
这四个 Skill 组合使用,就能自动完成从数据查询到品牌化报告生成的完整工作流。
核心机制:渐进式披露(Progressive Disclosure)
你的系统中可能有上百个 Skills。如果全部加载到上下文窗口,会迅速耗尽 Token 并降低响应质量。
上下文窗口是一种公共资源。越多数据被加入,Token 消耗越快,上下文退化和错误响应的概率就越高。
Skills 通过三层渐进式加载解决这个问题:
| 层级 | 内容 | 何时加载 |
|---|---|---|
| 第一层:元数据 | YAML 中的 name 和 description | 始终加载 |
| 第二层:指令 | SKILL.md 的主体内容 | 当 Skill 被触发时 |
| 第三层:资源 | 引用的文件、脚本、资产 | 按需加载 |
工作原理
- Skills 从文件系统加载时,仅 name 和 description 进入上下文窗口
- Claude 根据描述判断何时触发某个 Skill
- 触发后加载
SKILL.md完整内容 - 如果指令中引用了额外文件或脚本,按需逐步加载
- 脚本在上下文窗口外执行,避免无用 Token 污染
通过 Bash 和文件系统工具,Claude 只加载必要的信息,只执行必要的脚本,有意识地只把必要内容添加到上下文窗口。
Skill 文件夹结构示例
根据 Agent Skills 开放标准规范:
SKILL.md是必需的- 可选目录:
references、scripts、assets
analyzing-marketing-campaign/
├── SKILL.md
└── references/
└── budget_reallocation_rules.md
pdf/
├── SKILL.md
├── forms.md
├── reference.md
└── scripts/
├── check_fillable_fields.py
├── convert_pdf_to_images.py
├── extract_form_field_info.py
└── fill_pdf_form_with_annotations.py
designing-newsletters/
├── SKILL.md
├── references/
│ └── style-guide.md
└── assets/
├── header.png
├── icons/
└── templates/
├── newsletter.html
└── layout.docx
注意:部分早期 Skills(如 PDF Skill)在开放标准发布之前就已创建,可能不完全遵循标准格式。