Claude Skills:让AI Agent获得专业技能的工程化方案
背景
随着大语言模型能力的不断提升,我们已经能够构建通用的AI Agent,它们可以与完整的计算环境交互。Claude Code就是典型例子,它能够通过本地代码执行和文件系统完成跨领域的复杂任务。
然而,当这些Agent变得更强大时,我们需要一种更可组合、可扩展、可移植的方式,来为它们提供特定领域的专业知识。这促使Anthropic创造了Agent Skills——一种组织化的指令、脚本和资源文件夹,Agent可以动态发现和加载它们,以在特定任务上表现更好。
什么是Claude Skills
Skills是包含SKILL.md文本文件(带有YAML前置元数据)以及任何相关脚本、文档或资源的文件夹。每个Skill”打包”一个特定的工作流程或组织指南。
简单来说,Skills就是:
1 | my-skill/ |
与一次性提示不同,Skill明确告诉Claude如何处理一类任务,这样用户就不必每次都重新解释。
技术原理:渐进式披露
Skills的核心设计原则是渐进式披露(Progressive Disclosure)。这是使Agent Skills灵活且可扩展的关键。
三级上下文加载
第一级:元数据预加载
- 在会话启动时,Agent仅预加载每个已安装Skill的name和description
- 这只消耗每个Skill几十个token
- Claude可以识别哪些Skill可能与用户请求相关,而不会用所有细节淹没提示
第二级:完整SKILL.md加载
- 当Claude检测到某个Skill相关时(基于其description或嵌入的示例)
- 它会将完整的指令和任何链接的文件加载到上下文中
第三级及以上:链接文件按需加载
- 对于复杂的Skill,可以将内容拆分到多个文件
- Claude只在需要时才读取这些额外文件
上下文窗口变化示例
1 | ┌─────────────────────────────────────────────────────────┐ |
这种设计意味着Skill可以捆绑的上下文量实际上是无界的。
Skills与代码执行
Skills不仅仅是静态文本,它们还可以包含可执行脚本。这解锁了强大的用例:
为什么需要代码执行
- 效率考虑:通过token生成来排序列表比简单运行排序算法要昂贵得多
- 确定性可靠性:许多应用需要只有代码才能提供的确定性保证
- 本地数据处理:保持数据在本地执行环境中
示例:PDF表单提取
1 | # extract_form_fields.py |
Claude可以直接运行这个脚本,而无需将脚本或PDF加载到上下文中。
Skills与MCP:技术对比
| 维度 | Claude Skills | Model Context Protocol |
|---|---|---|
| 核心目的 | 嵌入专业知识,精简提示 | 连接外部工具和数据源 |
| 架构 | 文件夹 + SKILL.md | 客户端-服务器协议 |
| 触发方式 | 基于description自动匹配 | 通过tool调用显式触发 |
| 上下文管理 | 渐进式披露,按需加载 | 每次调用返回完整结果 |
| 可移植性 | 跨Claude平台(Claude.ai、Claude Code、API) | 跨AI平台(Claude、ChatGPT等) |
| 创建复杂度 | 简单,只需Markdown | 需要实现JSON-RPC服务器 |
| 适用场景 | 内部工作流、文档处理、品牌规范 | 外部API集成、数据库访问 |
互补使用
在实际应用中,两者可以互补:
- MCP:从GitHub、数据库、CI系统获取外部数据
- Skills:解释数据、应用合规逻辑、生成标准化输出
1 | 用户请求 → MCP获取数据 → Skill处理数据 → 输出结果 |
官方Skills仓库
Anthropic在GitHub上维护了官方Skills仓库:https://github.com/anthropics/skills
仓库结构
1 | skills/ |
核心文档Skills
仓库中包含了Claude文档能力的底层实现:
- docx:Word文档创建与编辑
- pdf:PDF处理与表单填写
- pptx:PowerPoint演示文稿生成
- xlsx:Excel电子表格处理
这些是生产级参考实现,展示了复杂Skill的设计模式。
安装方式
Claude Code
1 | # 注册为插件市场 |
Claude.ai
付费计划的用户可以直接使用仓库中的示例Skills,也可以上传自定义Skills。
Claude API
通过/v1/skills端点上传和管理Skills,每个请求最多支持8个Skills。
创建自定义Skill
基本结构
1 | --- |
前置元数据要求
只需要两个字段:
- name:Skill的唯一标识符(小写,用连字符代替空格)
- description:完整描述Skill做什么以及何时使用
安全限制
- 不能使用
<>符号(防止注入攻击) - 名字不能包含”claude”或”anthropic”(保留词)
最佳实践
从评估开始
- 在代表性任务上运行Agent,观察它们在哪里挣扎
- 然后增量构建Skills来解决这些不足
为规模而结构化
- 当SKILL.md变得难以管理时,将内容拆分到单独文件
- 如果某些上下文互斥或很少一起使用,保持路径分离
从Claude的视角思考
- 监控Claude在实际场景中如何使用你的Skill
- 特别注意name和description,Claude用它们决定是否触发Skill
与Claude迭代
- 完成任务后,让Claude捕获成功方法和常见错误到Skill中
- 如果偏离轨道,让Claude自我反思哪里出了问题
官方推荐的五种Skill类型
根据大量案例,Anthropic总结了最常见的Skill类型:
1. 文档处理型
处理特定格式的文档,如PDF表单填写、Word文档格式化。
2. 数据分析型
按照组织特定工作流程分析数据。
3. 品牌规范型
确保输出符合公司品牌指南。
4. 工作流自动化型
自动化重复性业务流程。
5. 代码助手型
提供特定技术栈或框架的专业指导。
实际效果
官方数据显示,使用Skills后:
- 工具调用次数减少 50%
- Token消耗降低 一半
- API错误率归零
团队协作
Skills支持团队共享:
- 将Skills存储在项目的
.claude/skills/目录中 - 提交到git仓库
- 克隆仓库的团队成员自动获得访问权限
1 | project/ |
参考资料
- Anthropic Skills GitHub仓库
- What are skills?
- Using skills in Claude
- Creating custom skills
- Equipping agents for the real world with Agent Skills
- Agent Skills Specification
总结
Claude Skills代表了AI Agent专业化的一条重要路径。通过将领域知识工程化为可组合的资源,我们可以:
- 降低成本:通过渐进式披露减少token消耗
- 提高可靠性:通过确定性代码执行保证一致结果
- 促进协作:通过文件系统实现团队知识共享
- 保持灵活:通过模块化设计支持快速迭代
随着Agent Skills成为开放标准,我们有望建立一个丰富的Skill生态系统,让每个组织都能轻松为其AI Agent配备专业技能。