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 | skills/ |
核心价值:
📦 可复用:一次定义,多次使用
🔗 可共享:通过 Git 仓库团队共享
📝 标准化:统一的
SKILL.md格式🎯 智能化:AI 自动匹配和执行
二、Skill 详解
2.1 Skill 是什么?
Skill 是 Claude Code 中能力扩展的基本单位。每个 Skill 是一个目录,包含技能定义文件和可选的辅助资源。
基本构成:
| 文件/目录 | 必需性 | 说明 |
|---|---|---|
SKILL.md |
必需 | 技能核心定义文件 |
scripts/ |
可选 | 辅助脚本目录 |
templates/ |
可选 | 模板文件目录 |
examples/ |
可选 | 示例文件目录 |
2.2 完整目录结构
一个完整的 Skill 目录结构如下:
1 | skills/ |
2.3 SKILL.md 文件格式
1 | --- |
元数据字段说明:
| 字段 | 说明 | 示例 |
|---|---|---|
name |
技能标识名称 | code-review |
description |
技能描述 | Review code changes |
version |
版本号 | 1.0.0 |
2.4 如何使用 Skill
方式一:自然语言触发
直接用自然语言描述需求,Claude Code 会自动匹配相关 Skill:
1 | # 用户输入 |
方式二:显式调用
在请求中明确指定 Skill 名称:
1 | claude "使用 git-status skill 查看当前状态" |
方式三:交互式会话
进入交互模式后,Claude 会自动加载可用的 Skill:
1 | claude |
2.5 Skill 加载位置
Claude Code 从以下位置加载 Skill:
| 位置 | 说明 | 优先级 |
|---|---|---|
<project>/skills/ |
项目级 Skill | 最高 |
~/.claude/skills/ |
用户级 Skill(全局可用) | 默认 |
2.6 获取 Skill
从社区仓库获取:
1 | # 克隆社区 Skill 仓库 |
手动创建: 见第四章。
三、Skill、Function Call 与 MCP 深度对比分析
在 AI 工具调用标准化的演进过程中,出现了三种主要的技术方案:Function Call、MCP(Model Context Protocol)和 Skill。这三种方案分别解决不同层次的问题。
3.1 演进背景
AI 工具调用的标准化经历了三个发展阶段:
1 | 2022-2023 2023-2024 2024-2025 |
演进驱动力:
Function Call:解决”模型如何调用外部函数”的问题
MCP:解决”不同工具如何统一通信”的问题
Skill:解决”用户如何方便使用 AI 能力”的问题
3.2 三者的定位层次
1 | ┌─────────────────────────────────────────────────────────┐ |
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 | { |
工作流程:
1 | 用户请求 → AI 模型分析意图 → Function Call 定义 → 执行函数 → 返回结果 |
优势:
模型厂商原生支持,集成简单
灵活,可定义任意函数
参数验证自动化
局限:
格式不统一,不同厂商格式存在差异
缺乏权限管理,安全性依赖实现
每次对话需重新定义,难以复用
适用场景:
单一 API 快速集成
内部工具调用
需要严格参数验证的场景
3.6 MCP 深度解析
协议架构:
1 | ┌─────────────┐ MCP Protocol ┌─────────────┐ |
MCP Server 示例:
1 | { |
优势:
跨平台、跨模型兼容
支持动态工具注册
分离关注点,生态可扩展
统一认证和授权机制
局限:
需要额外的基础设施支持(MCP Server)
对终端用户透明度较低
配置相对复杂
适用场景:
多工具、多模型生态
企业级工具集成
需要动态服务发现的场景
3.7 Skill 深度解析
工作流程:
1 | 用户请求 → 匹配 Skill → 读取 SKILL.md → 理解指令 → 执行任务 → 返回结果 |
定义示例:
1 | --- |
优势:
用户体验简洁直观
操作可复用、可预期
开发者门槛低(只需写 Markdown)
降低误操作风险
支持复杂工作流封装
局限:
依赖于支持 Skill 的 AI 系统
需要社区生态支持
标准化程度相对较低
适用场景:
面向终端用户的复杂操作
项目特定工作流
团队协作规范
3.8 三者的协同关系
这三种方案并非相互替代,而是可以协同工作:
1 | ┌──────────────────────────────────────────────────────────┐ |
协作分工:
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 | --- |
第三步:测试 Skill
1 | claude "hello" |
4.2 进阶示例一:Git Status Skill
1 | --- |
进阶示例二:Run Tests Skill
1 | --- |
4.3 最佳实践
| 实践 | 说明 |
|---|---|
| 保持简洁 | SKILL.md 描述尽量精简,减少 Token 消耗 |
| 模块化设计 | 将大型 Skill 拆分为小型可复用模块 |
| 版本管理 | 使用 Git 管理 Skill 版本,便于回滚和协作 |
| 文档完善 | 添加 README.md 说明使用方法和依赖 |
| 测试验证 | 创建后充分测试确保按预期工作 |
4.4 常见问题
Q: Skill 不生效怎么办?
A: 检查以下几点:
目录结构是否正确(
skills/<name>/SKILL.md)SKILL.md 格式是否正确(包含 name 和 description)
是否重新启动了 Claude Code 会话
Q: 如何调试 Skill?
A: 可以在交互模式下询问:
1 | > 当前加载了哪些 skills? |
Q: Skill 的 Token 开销如何计算?
A:
1 | total_chars ≈ Σ(len(skill_content)) |
结语
Skill 系统通过文件化、标准化、生态化的设计,让 AI 能力扩展变得像搭积木一样简单。与底层的 Function Call 和协议层的 MCP 相比,Skill 更关注:
开发者体验:只需编写
SKILL.md即可扩展能力终端用户体验:自然语言触发,无需记忆命令
生态建设:社区共享实现全球协作
三层标准各司其职、相互补充:
| 层次 | 方案 | 解决的问题 |
|---|---|---|
| 接口层 | Function Call | “如何调用” |
| 协议层 | MCP | “如何通信” |
| 应用层 | Skill | “如何好用” |
这种分层标准化的思路,为 AI 工程化开辟了新的路径。随着社区生态的成熟,Skill 有望成为 AI 能力扩展的事实标准,正如 npm 之于 JavaScript 生态。