前置知识
阅读本文前,建议先了解:
- 大模型基本原理 - 了解LLM能力边界
- Function Call - 了解外部工具调用
一、什么是Skill?
Skill(技能) 是Claude Code的可扩展能力模块——像给AI助手安装”插件”,让它具备特定领域的专业能力。
[!比喻] Skill像什么? 就像手机App——手机本身有基础功能(打电话、发短信),但通过安装App可以获得导航、拍照、支付等扩展能力。Claude Code有基础能力,通过Skill可以获得更专业的技能。
没有Skill时:
┌─────────────┐
│ Claude Code │ → 基础能力:对话、写作、分析
└─────────────┘
安装Skill后:
┌─────────────┐
│ Claude Code │ → 基础能力 + Skill扩展
│ + pdf Skill │ → 处理PDF文件
│ + docx Skill│ → 处理Word文档
│ + xlsx Skill│ → 处理Excel数据
└─────────────┘

本质:Skill是由Anthropic在2025年10月正式推出的概念,它是一个可移植的文件夹,包含可重用的指令、脚本和资源。创建一次,就可以跨Claude.ai、Claude Code和API使用。
二、Skill的核心原理
2.1 渐进式披露(Progressive Disclosure)
Skill采用元数据驱动的渐进式信息披露机制,这是它最重要的设计理念。
┌─────────────────────────────────────────────────────────────┐
│ 渐进式披露机制 │
├─────────────────────────────────────────────────────────────┤
│ Level 1: SKILL.md frontmatter (元数据) │
│ ├── name: skill-name │
│ └── description: "做什么 + 何时使用" │
│ ↓ 当触发时加载 │
│ Level 2: SKILL.md 主体内容 (详细指令) │
│ ├── 使用场景 │
│ ├── 具体步骤 │
│ └── 示例说明 │
│ ↓ 当需要时加载 │
│ Level 3: REFERENCE.md / scripts/ (补充资源) │
└─────────────────────────────────────────────────────────────┘

优势:
- ✅ 避免上下文窗口溢出
- ✅ 按需加载,减少Token消耗
- ✅ AI根据任务动态决定加载哪些层级
2.2 代码执行环境
Skill在代码执行环境中运行,具备以下能力:
- 📝 创建和编辑文件
- ⚙️ 执行脚本和命令
- 📁 访问本地文件系统
- 🔗 与外部工具集成
2.3 版本管理
Skill支持版本控制,可以:
- 创建新版本
- 指定使用特定版本
- 回滚到历史版本
# 使用指定版本
{
"type": "anthropic",
"skill_id": "my-skill",
"version": "2.0.0"
}三、Skill解决什么问题?
3.1 AI能力有限
❌ 基础Claude只能:
- 纯文本对话
- 基本的分析和写作
- 无法直接处理文件(PDF、Word等)
3.2 每次都要重复解释
❌ 没有Skill时:
用户A:帮我读PDF
用户B:帮我读PDF
用户C:帮我读PDF
→ 每次都要告诉Claude怎么读PDF
✅ 有Skill后:
用户A:帮我读PDF(触发pdf Skill)
用户B:帮我读PDF(触发pdf Skill)
→ Skill已经学会了读PDF的方法
3.3 无法复用专业流程
❌ 没有Skill时:
- 每次要用某个复杂流程,都要重新描述
- 无法保存和复用
✅ 有Skill后:
- 复杂的处理流程封装成Skill
- 一次创建,多次使用
四、Skill的核心优势
4.1 标准化复用
✅ Skill = "可复用的能力包"
- 封装了特定任务的完整工作流程
- 任何用户都可以直接使用
- 不需要重复描述操作方法
4.2 专业深度
✅ Skill = "领域专家"
- 每个Skill专注一个领域
- 深入掌握该领域的最佳实践
- 提供更专业的处理能力
4.3 简单调用
✅ 使用Skill非常简单:
用户说:"帮我处理这个PDF"
→ Claude自动调用pdf Skill
→ 完成专业处理
→ 返回结果
五、Skill的技术架构
┌──────────────────────────────────────────────────────────────┐
│ Claude Code / API │
├──────────────────────────────────────────────────────────────┤
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────────┐ │
│ │ Skill发现 │ → │ Skill加载 │ → │ 代码执行环境 │ │
│ │ (语义匹配) │ │ (渐进式) │ │ (沙箱容器) │ │
│ └─────────────┘ └─────────────┘ └─────────────────┘ │
│ ↑ ↓ │
│ ┌─────────────┐ ┌─────────────┐ │
│ │ SKILL.md │ │ 文件/脚本 │ │
│ │ (元数据+指令)│ │ 执行结果 │ │
│ └─────────────┘ └─────────────┘ │
└──────────────────────────────────────────────────────────────┘
六、Skill与Tool的区别
| 对比维度 | Tool(工具) | Skill(技能) |
|---|---|---|
| 定位 | 外部附加能力 | 内在能力模块 |
| 使用方式 | 通过Function Call调用 | 自动触发或手动调用 |
| 复杂度 | 单个函数 | 完整工作流程 |
| 例子 | get_weather() | PDF处理完整流程 |
简单理解
Tool = 单个”工具”(像一把螺丝刀) Skill = 一套”技能”(像完整的维修技术)
Skill内部可能使用多个Tool来完成复杂任务
七、常见Skill类型
7.1 文档处理类
📄 pdf Skill → 读取、提取、合并PDF
📝 docx Skill → 创建、编辑Word文档
📊 xlsx Skill → 处理Excel电子表格
🖼️ pptx Skill → 制作PPT演示文稿
7.2 编程开发类
💻 code-review → 代码审查
🐛 debugging → 调试助手
📦 package → 包管理
7.3 知识管理类
📚 obsidian-markdown → Obsidian笔记
🗃️ obsidian-bases → Obsidian数据库
📋 obsidian-cli → Obsidian命令操作
🗺️ json-canvas → Canvas画布
7.4 工具类
🔍 defuddle → 网页内容提取
📖 literature-search → 文献检索
🎨 frontend-design → 前端界面设计
📊 claude-api → Claude API开发
八、谁可以使用Skill?
| 平台 | 支持情况 |
|---|---|
| Claude Code | ✅ 原生支持 |
| Claude Desktop | 需配置 |
| API | ✅ 支持(通过container参数) |
九、创建Skill的最佳实践
| 检查项 | 要求 | 示例 |
|---|---|---|
| 命名 | kebab-case,无空格无大写 | project-memory, financial-analysis |
| description | 包含WHAT和WHEN | ”创建品牌报告;当用户请求标准化报告时使用” |
| 示例 | 提供输入输出对 | 至少2个具体示例 |
| 错误处理 | 说明异常情况 | ”如果缺少X,提示用户提供” |
| 结构化 | 使用标题层级 | → → |
| 无XML标签 | 避免使用<> | 使用markdown格式 |
十、总结
- Skill = Claude Code的可扩展能力模块
- 解决的问题:能力有限、重复描述、无法复用
- 核心优势:标准化复用、专业深度、简单调用
- 核心原理:渐进式披露、代码执行环境、版本管理
- 与Tool的关系:Skill可以包含多个Tool
十一、延伸阅读
- 02-Skill 的工作原理 - 深入理解Skill如何工作
- 03-现有 Skill 介绍 - 了解已有哪些Skill可用
- 04-Skill 与 MCP 的关系 - Skill与MCP的区别与互补
- Function Call - 了解Tool基础