Skill 入门指南:让 AI 学会你的工作流

摘要

在 AI 助手日益普及的今天,如何让 AI 获得可复用、可共享、标准化的能力?Claude Code 的 Skill 系统提供了一种优雅的解决方案——通过简单的 SKILL.md 文件,让 AI 助手能够理解并执行特定任务。本文将系统介绍 Skill 的核心概念、使用方法,并深入分析与 Function Call、MCP 的区别。


一、为什么需要 Skill?

1.1 一个典型场景

想象一下这个场景:

你正在使用 Claude Code,需要执行一些重复性的任务,比如:

  • 运行特定的测试命令

  • 按照特定格式提交代码

  • 执行项目特定的代码审查流程

如果没有 Skill,你需要每次都详细说明执行步骤。有了 Skill,只需要一个简单的指令。

1.2 传统方式的问题

问题 描述
重复说明 每次都要在提示词里重复说明如何执行任务
无法复用 项目特定的工作流程无法在不同会话间复用
知识丢失 有价值的实践经验难以沉淀和传承
团队分散 团队成员各自摸索相同的工作流程

1.3 Skill 的解法

在项目目录中创建一个 skills/ 文件夹,放入 SKILL.md 文件,AI 就学会了这项新技能。

1
2
3
skills/
└── commit-review/
└── SKILL.md

核心价值:

  • 📦 可复用:一次定义,多次使用

  • 🔗 可共享:通过 Git 仓库团队共享

  • 📝 标准化:统一的 SKILL.md 格式

  • 🎯 智能化:AI 自动匹配和执行


二、Skill 详解

2.1 Skill 是什么?

Skill 是 Claude Code 中能力扩展的基本单位。每个 Skill 是一个目录,包含技能定义文件和可选的辅助资源。

基本构成:

文件/目录 必需性 说明
SKILL.md 必需 技能核心定义文件
scripts/ 可选 辅助脚本目录
templates/ 可选 模板文件目录
examples/ 可选 示例文件目录

2.2 完整目录结构

一个完整的 Skill 目录结构如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
skills/
└── code-review/
├── SKILL.md # 必需:技能定义
├── references/ # 可选:参考目录
│ └── references.md # 参考模板
├── scripts/ # 可选:脚本目录
│ ├── lint.sh # Shell 脚本
│ └── analyze.py # Python 脚本
├── templates/ # 可选:模板目录
│ └── report.md # 报告模板
├── examples/ # 可选:示例目录
│ └── sample.md # 使用示例
└── README.md # 可选:说明文档

2.3 SKILL.md 文件格式

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
---
name: code-review
description: Comprehensive code review with linting and security checks
version: 1.0.0
---

# Code Review Skill

This skill performs a comprehensive code review including:
- Code style and linting checks
- Security vulnerability scanning
- Best practices verification

## Usage

When the user asks to review code:

1. Run linting checks
2. Run security analysis
3. Generate report

## Commands

```bash
# Linting
./scripts/lint.sh

# Security check
python3 scripts/check-security.py
```

元数据字段说明:

字段 说明 示例
name 技能标识名称 code-review
description 技能描述 Review code changes
version 版本号 1.0.0

2.4 如何使用 Skill

方式一:自然语言触发

直接用自然语言描述需求,Claude Code 会自动匹配相关 Skill:

1
2
3
4
# 用户输入
claude "帮我检查一下代码变更"

# Claude 自动匹配 code-review Skill 并执行

方式二:显式调用

在请求中明确指定 Skill 名称:

1
claude "使用 git-status skill 查看当前状态"

方式三:交互式会话

进入交互模式后,Claude 会自动加载可用的 Skill:

1
2
3
4
claude

# 进入交互模式后直接描述需求
> 帮我运行测试并报告结果

2.5 Skill 加载位置

Claude Code 从以下位置加载 Skill:

位置 说明 优先级
<project>/skills/ 项目级 Skill 最高
~/.claude/skills/ 用户级 Skill(全局可用) 默认

2.6 获取 Skill

从社区仓库获取:

1
2
3
4
5
# 克隆社区 Skill 仓库
git clone https://github.com/example/claude-skills.git

# 复制需要的 Skill 到项目
cp -r claude-skills/skills/* your-project/skills/

手动创建: 见第四章。


三、Skill、Function Call 与 MCP 深度对比分析

在 AI 工具调用标准化的演进过程中,出现了三种主要的技术方案:Function CallMCP(Model Context Protocol)和 Skill。这三种方案分别解决不同层次的问题。

3.1 演进背景

AI 工具调用的标准化经历了三个发展阶段:

1
2
3
4
5
6
7
8
2022-2023          2023-2024          2024-2025
│ │ │
▼ ▼ ▼
┌──────────┐ ┌──────────┐ ┌──────────┐
│Function │ → │ MCP │ → │ Skill │
│ Call │ │ │ │ │
└──────────┘ └──────────┘ └──────────┘
接口层 协议层 应用层

演进驱动力:

  1. Function Call:解决”模型如何调用外部函数”的问题

  2. MCP:解决”不同工具如何统一通信”的问题

  3. Skill:解决”用户如何方便使用 AI 能力”的问题

3.2 三者的定位层次

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
┌─────────────────────────────────────────────────────────┐
│ 应用场景层 │
│ (Skill 系统) │
│ 面向用户的预定义能力单元,通过 SKILL.md 定义 │
│ • 用户可直接调用 │
│ • 预定义工作流程 │
│ • 封装复杂操作 │
├─────────────────────────────────────────────────────────┤
│ 协议规范层 │
│ (MCP - Model Context Protocol) │
│ 模型与外部资源交互的通用通信协议 │
│ • 统一传输格式 │
│ • 服务发现机制 │
│ • 解耦模型与工具 │
├─────────────────────────────────────────────────────────┤
│ 接口定义层 │
│ (Function Call) │
│ 模型调用外部函数的底层接口规范 │
│ • JSON Schema 定义 │
│ • 参数验证 │
│ • 返回值格式 │
└─────────────────────────────────────────────────────────┘

3.3 核心维度对比

维度 Function Call MCP Skill
提出者 OpenAI、Anthropic 等模型厂商 Anthropic(开放协议) AI 助手社区规范
出现时间 2023 年初 2024 年初 2024 年中
抽象层级 底层接口 通信协议 应用层能力
核心目标 让模型能够调用函数 统一模型与工具的通信 封装可复用的用户操作
标准化程度 各厂商格式不一 开放协议,统一规范 社区规范,逐渐统一
用户可见性 开发者配置,用户不可见 透明,用户无感知 用户直接调用/编写
典型用例 API 调用、数据库查询 连接外部数据源、工具 代码提交、PR 审查、测试运行
执行权限 由开发者控制 由服务器控制 用户授权
分发方式 代码内嵌 服务注册 文件共享
学习成本 需要编程知识 需要配置服务器 只需写 Markdown

3.4 技术特性对比

特性 Function Call MCP Skill
定义格式 JSON Schema MCP Manifest Markdown
参数验证 内置支持 服务器端验证 依赖实现
动态发现 不支持 支持 部分支持
版本管理 手动管理 服务版本 Git/文件版本
错误处理 标准错误码 协议级错误 依赖实现
认证授权 开发者实现 协议支持 用户控制
可组合性

3.5 Function Call 深度解析

定义示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
"name": "search_database",
"description": "搜索数据库记录",
"parameters": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "搜索关键词"
},
"limit": {
"type": "integer",
"description": "返回结果数量限制",
"default": 10
}
},
"required": ["query"]
}
}

工作流程:

1
用户请求 → AI 模型分析意图 → Function Call 定义 → 执行函数 → 返回结果

优势:

  • 模型厂商原生支持,集成简单

  • 灵活,可定义任意函数

  • 参数验证自动化

局限:

  • 格式不统一,不同厂商格式存在差异

  • 缺乏权限管理,安全性依赖实现

  • 每次对话需重新定义,难以复用

适用场景:

  • 单一 API 快速集成

  • 内部工具调用

  • 需要严格参数验证的场景

3.6 MCP 深度解析

协议架构:

1
2
3
4
5
6
7
8
┌─────────────┐    MCP Protocol    ┌─────────────┐
│ AI Model │ ◄────────────────► │ Tool │
│ (Client) │ │ (Server) │
└─────────────┘ └─────────────┘
│ │
│ ┌──────────────────────┐ │
└────►│ MCP Server Registry │◄─┘
└──────────────────────┘

MCP Server 示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{
"name": "weather-service",
"version": "1.0.0",
"description": "Weather data service",
"capabilities": {
"tools": [
{
"name": "get_current_weather",
"description": "Get current weather for a location",
"inputSchema": {
"type": "object",
"properties": {
"location": { "type": "string" }
}
}
}
]
}
}

优势:

  • 跨平台、跨模型兼容

  • 支持动态工具注册

  • 分离关注点,生态可扩展

  • 统一认证和授权机制

局限:

  • 需要额外的基础设施支持(MCP Server)

  • 对终端用户透明度较低

  • 配置相对复杂

适用场景:

  • 多工具、多模型生态

  • 企业级工具集成

  • 需要动态服务发现的场景

3.7 Skill 深度解析

工作流程:

1
用户请求 → 匹配 Skill → 读取 SKILL.md → 理解指令 → 执行任务 → 返回结果

定义示例:

1
2
3
4
5
6
7
8
9
10
11
12
---
name: code-review
description: Review code changes and provide feedback
---

# Code Review Skill

When the user asks to review code:

1. Check for code style consistency
2. Look for potential bugs
3. Suggest improvements

优势:

  • 用户体验简洁直观

  • 操作可复用、可预期

  • 开发者门槛低(只需写 Markdown)

  • 降低误操作风险

  • 支持复杂工作流封装

局限:

  • 依赖于支持 Skill 的 AI 系统

  • 需要社区生态支持

  • 标准化程度相对较低

适用场景:

  • 面向终端用户的复杂操作

  • 项目特定工作流

  • 团队协作规范

3.8 三者的协同关系

这三种方案并非相互替代,而是可以协同工作:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
┌──────────────────────────────────────────────────────────┐
│ 用户请求:"帮我查询北京天气并分析是否适合户外运动" │
│ ↓ │
│ Skill 层:匹配 weather Skill,理解用户意图 │
│ • 解析"查询天气"意图 │
│ • 解析"分析户外运动"需求 │
│ • 编排执行流程 │
│ ↓ │
│ MCP 层:通过标准协议连接天气服务(可选) │
│ • 发现天气服务 MCP Server │
│ • 建立标准连接 │
│ • 处理认证授权 │
│ ↓ │
│ Function Call:实际调用天气 API │
│ • 构造 API 请求 │
│ • 验证参数格式 │
│ • 处理返回结果 │
└──────────────────────────────────────────────────────────┘

协作分工:

  • Skill 负责用户交互、意图理解和流程编排

  • MCP 负责服务发现和通信(可选)

  • Function Call 负责底层的函数执行

3.9 选择建议

场景 推荐方案 理由 示例
快速集成单一 API Function Call 简单直接,无需额外设施 调用天气 API
内部工具调用 Function Call 可控环境,配置简单 数据库查询
多工具、多模型生态 MCP 协议统一,易于扩展 企业工具平台
动态服务发现 MCP 支持运行时注册 微服务架构
面向终端用户的复杂操作 Skill 体验好,可复用,安全 代码审查流程
项目特定工作流 Skill 灵活定义,易于维护 发布部署流程
企业级 AI 应用 三者结合 各取所长,分层解耦 智能客服系统

四、进阶:创建你的第一个 Skill

4.1 入门:Hello World Skill

第一步:创建目录

1
mkdir -p skills/hello-world

第二步:编写 SKILL.md

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
---
name: hello-world
description: A simple greeting skill
---

# Hello World Skill

When the user asks for a greeting or says hello:

1. Respond with a friendly greeting
2. Ask how you can help them today
3. Keep the response concise and warm

Example response:
"Hello! Great to see you. What would you like to work on today?"

第三步:测试 Skill

1
2
3
claude "hello"
# 或
claude "use hello-world skill"

4.2 进阶示例一:Git Status Skill

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
---
name: git-status
description: Check and summarize git repository status
---

# Git Status Skill

When the user asks about repository status:

1. Run git status to see current state
2. Run git log --oneline -5 for recent commits
3. Provide a clear summary of:
- Current branch
- Uncommitted changes
- Recent activity

Commands:
```bash
git status
git log --oneline -5
git branch --show-current
```

进阶示例二:Run Tests Skill

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
---
name: run-tests
description: Run project tests and report results
---

# Run Tests Skill

When asked to run tests:

1. Detect the test framework (jest, pytest, etc.)
2. Run tests with appropriate flags
3. Summarize results:
- Total tests
- Passed/Failed count
- Failed test details

Commands by framework:
```bash
# Jest
npm test -- --coverage

# Pytest
pytest --cov=.

# Go
go test -v ./...
```

4.3 最佳实践

实践 说明
保持简洁 SKILL.md 描述尽量精简,减少 Token 消耗
模块化设计 将大型 Skill 拆分为小型可复用模块
版本管理 使用 Git 管理 Skill 版本,便于回滚和协作
文档完善 添加 README.md 说明使用方法和依赖
测试验证 创建后充分测试确保按预期工作

4.4 常见问题

Q: Skill 不生效怎么办?

A: 检查以下几点:

  1. 目录结构是否正确(skills/<name>/SKILL.md

  2. SKILL.md 格式是否正确(包含 name 和 description)

  3. 是否重新启动了 Claude Code 会话

Q: 如何调试 Skill?

A: 可以在交互模式下询问:

1
2
> 当前加载了哪些 skills?
> 为什么没有匹配到 xx skill?

Q: Skill 的 Token 开销如何计算?

A:

1
2
total_chars ≈ Σ(len(skill_content))
按 4 字符/Token 估算:每个 Skill 约 50-125 Token

结语

Skill 系统通过文件化、标准化、生态化的设计,让 AI 能力扩展变得像搭积木一样简单。与底层的 Function Call 和协议层的 MCP 相比,Skill 更关注:

  • 开发者体验:只需编写 SKILL.md 即可扩展能力

  • 终端用户体验:自然语言触发,无需记忆命令

  • 生态建设:社区共享实现全球协作

三层标准各司其职、相互补充:

层次 方案 解决的问题
接口层 Function Call “如何调用”
协议层 MCP “如何通信”
应用层 Skill “如何好用”

这种分层标准化的思路,为 AI 工程化开辟了新的路径。随着社区生态的成熟,Skill 有望成为 AI 能力扩展的事实标准,正如 npm 之于 JavaScript 生态。


参考资料