随着大语言模型能力的不断提升,我们已经能够构建通用的AI Agent,它们可以与完整的计算环境交互。Claude Code就是典型例子,它能够通过本地代码执行和文件系统完成跨领域的复杂任务。
然而,当这些Agent变得更强大时,我们需要一种更可组合、可扩展、可移植的方式,来为它们提供特定领域的专业知识。这促使Anthropic创造了Agent Skills——一种组织化的指令、脚本和资源文件夹,Agent可以动态发现和加载它们,以在特定任务上表现更好。
Skills是包含SKILL.md文本文件(带有YAML前置元数据)以及任何相关脚本、文档或资源的文件夹。每个Skill"打包"一个特定的工作流程或组织指南。
简单来说,Skills就是:
my-skill/ ├── SKILL.md # 核心指令文件 ├── reference.md # 可选:参考文档 ├── scripts/ # 可选:可执行脚本 │ └── analyze.py └── templates/ # 可选:模板文件 └── output.tmpl
与一次性提示不同,Skill明确告诉Claude如何处理一类任务,这样用户就不必每次都重新解释。
Skills的核心设计原则是渐进式披露(Progressive Disclosure)。这是使Agent Skills灵活且可扩展的关键。
第一级:元数据预加载
第二级:完整SKILL.md加载
第三级及以上:链接文件按需加载
┌─────────────────────────────────────────────────────────┐ │ 初始状态 │ │ ┌─────────────────────────────────────────────────┐ │ │ │ 系统提示 + 所有Skill元数据 + 用户消息 │ │ │ └─────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────┐ │ 触发PDF Skill │ │ ┌─────────────────────────────────────────────────┐ │ │ │ 系统提示 + Skill元数据 + pdf/SKILL.md内容 │ │ │ └─────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────┐ │ 按需加载forms.md │ │ ┌─────────────────────────────────────────────────┐ │ │ │ 系统提示 + Skill元数据 + SKILL.md + forms.md │ │ │ └─────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────┘
这种设计意味着Skill可以捆绑的上下文量实际上是无界的。
Skills不仅仅是静态文本,它们还可以包含可执行脚本。这解锁了强大的用例:
python# extract_form_fields.py
import fitz # PyMuPDF
def extract_form_fields(pdf_path: str) -> dict:
"""提取PDF中的所有表单字段"""
doc = fitz.open(pdf_path)
fields = {}
for page in doc:
for widget in page.widgets():
fields[widget.field_name] = {
'type': widget.field_type_string,
'value': widget.field_value,
'rect': widget.rect
}
return fields
Claude可以直接运行这个脚本,而无需将脚本或PDF加载到上下文中。
| 维度 | Claude Skills | Model Context Protocol |
|---|---|---|
| 核心目的 | 嵌入专业知识,精简提示 | 连接外部工具和数据源 |
| 架构 | 文件夹 + SKILL.md | 客户端-服务器协议 |
| 触发方式 | 基于description自动匹配 | 通过tool调用显式触发 |
| 上下文管理 | 渐进式披露,按需加载 | 每次调用返回完整结果 |
| 可移植性 | 跨Claude平台(Claude.ai、Claude Code、API) | 跨AI平台(Claude、ChatGPT等) |
| 创建复杂度 | 简单,只需Markdown | 需要实现JSON-RPC服务器 |
| 适用场景 | 内部工作流、文档处理、品牌规范 | 外部API集成、数据库访问 |
在实际应用中,两者可以互补:
用户请求 → MCP获取数据 → Skill处理数据 → 输出结果
Anthropic在GitHub上维护了官方Skills仓库:https://github.com/anthropics/skills
skills/ ├── skills/ # 示例Skills │ ├── creative/ # 创意与设计 │ ├── development/ # 开发与技术 │ ├── enterprise/ # 企业与通信 │ └── document-skills/ # 文档处理 ├── spec/ # Agent Skills规范 └── template/ # Skill模板
仓库中包含了Claude文档能力的底层实现:
这些是生产级参考实现,展示了复杂Skill的设计模式。
bash# 注册为插件市场
/plugin marketplace add anthropics/skills
# 直接安装特定Skill
/plugin install document-skills@anthropic-agent-skills
/plugin install example-skills@anthropic-agent-skills
付费计划的用户可以直接使用仓库中的示例Skills,也可以上传自定义Skills。
通过/v1/skills端点上传和管理Skills,每个请求最多支持8个Skills。
markdown---
name: my-skill-name
description: 清晰描述这个Skill做什么以及何时使用
---
# My Skill Name
[添加Claude在此Skill激活时将遵循的指令]
## 示例
- 示例用法1
- 示例用法2
## 指南
- 指南1
- 指南2
只需要两个字段:
<>符号(防止注入攻击)从评估开始
为规模而结构化
从Claude的视角思考
与Claude迭代
根据大量案例,Anthropic总结了最常见的Skill类型:
处理特定格式的文档,如PDF表单填写、Word文档格式化。
按照组织特定工作流程分析数据。
确保输出符合公司品牌指南。
自动化重复性业务流程。
提供特定技术栈或框架的专业指导。
官方数据显示,使用Skills后:
Skills支持团队共享:
.claude/skills/目录中project/ ├── .claude/ │ └── skills/ │ ├── brand-guidelines/ │ └── code-review-standards/ └── src/
Claude Skills代表了AI Agent专业化的一条重要路径。通过将领域知识工程化为可组合的资源,我们可以:
随着Agent Skills成为开放标准,我们有望建立一个丰富的Skill生态系统,让每个组织都能轻松为其AI Agent配备专业技能。
本文作者:yowayimono
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!