技术学习 · DoggyDad 原创

Claude Skills 深度解析:比 MCP 更强大的 AI 能力扩展方案

全面解析 Anthropic 推出的 Claude Skills 功能,了解如何通过技能系统让 Claude 变得更专业、更高效,以及它与 MCP、Subagents 的区别和协同使用方式。

ANSWER-FIRST SUMMARY

本文回答什么问题

全面解析 Anthropic 推出的 Claude Skills 功能,了解如何通过技能系统让 Claude 变得更专业、更高效,以及它与 MCP、Subagents 的区别和协同使用方式。

  • 主题分类:技术学习
  • 关键词:Claude、AI、Skills、Anthropic、Agent、MCP、Claude Code

Claude Skills 深度解析:比 MCP 更强大的 AI 能力扩展方案

什么是 Claude Skills?

Claude Skills(技能) 是 Anthropic 推出的一种全新的 AI 能力扩展机制。简单来说,Skills 是一组 Markdown 文件和脚本的集合,Claude 可以根据用户请求动态加载这些”技能”,从而在特定任务上表现得更加专业和一致。

Skills are folders of instructions, scripts, and resources that Claude loads dynamically to improve performance on specialized tasks.

与传统的一次性提示词不同,Skills 是可复用、可定制、可共享的指令集。无论是使用公司的品牌指南创建文档、按照特定工作流分析数据,还是自动化个人任务,Skills 都能让 Claude “学会”如何以可重复的方式完成这些任务。

为什么 Skills 可能比 MCP 更重要?

著名开发者 Simon Willison 在博客中直言:“Claude Skills are awesome, maybe a bigger deal than MCP”(Claude Skills 很棒,可能比 MCP 更重要)。

这个观点在 Hacker News 上引发了热烈讨论。让我们来看看 Skills 与 MCP 的核心区别:

Skills vs MCP 对比

特性Claude SkillsMCP (Model Context Protocol)
本质指令文档 + 脚本API 协议规范
复杂度简单的 Markdown 文件需要运行服务器
上下文消耗按需加载,节省 tokens工具定义始终占用上下文
安装难度放入文件夹即可需要配置 JSON、安装依赖
功能定位教 Claude “怎么做”给 Claude “工具用”

一位 HN 评论者精辟地总结:

Skills tell Claude how to use tools; MCP provides the tools. (Skills 告诉 Claude 如何使用工具;MCP 提供工具本身。)

Skills 的工作原理

1. 发现阶段(Discovery)

当 Claude 启动时,它只会加载每个 Skill 的名称和描述。这保持了启动速度,同时让 Claude 知道每个 Skill 什么时候可能有用。

2. 激活阶段(Activation)

当你的请求匹配某个 Skill 的描述时,Claude 会询问是否使用该 Skill。只有在你确认后,完整的 SKILL.md 才会被加载到上下文中。

3. 执行阶段(Execution)

Claude 遵循 Skill 的指令执行任务,根据需要加载引用的文件或运行打包的脚本。

这种渐进式披露(Progressive Disclosure) 机制是 Skills 的精髓——只在需要时才加载详细信息,避免了上下文窗口的浪费。

如何创建你的第一个 Skill

步骤 1:创建 Skill 目录

# 个人 Skill(跨所有项目可用)
mkdir -p ~/.claude/skills/my-skill-name

# 项目 Skill(团队共享)
mkdir -p .claude/skills/my-skill-name

步骤 2:编写 SKILL.md

每个 Skill 必须包含一个 SKILL.md 文件,格式如下:

---
name: code-reviewer
description: 使用团队标准审查代码。当用户要求代码审查、PR review 或检查代码质量时使用。
allowed-tools: Read, Grep, Glob
---

# 代码审查 Skill

## 审查流程

1. 首先阅读变更的文件列表
2. 检查代码风格是否符合项目规范
3. 识别潜在的 bug 和性能问题
4. 提供具体的改进建议

## 审查标准

- 代码是否清晰易读?
- 是否有适当的错误处理?
- 是否有单元测试覆盖?
- 命名是否有意义?

## 输出格式

使用以下格式输出审查结果:

### ✅ 优点
- [列出代码的优点]

### ⚠️ 建议
- [列出改进建议]

### ❌ 问题
- [列出必须修复的问题]

步骤 3:测试 Skill

重启 Claude Code,然后询问:

What Skills are available?

你应该能看到新创建的 Skill。然后尝试触发它:

帮我审查一下这个 PR 的代码

Skill 存放位置决定可用范围

位置路径可用范围
Enterprise管理员配置组织内所有用户
Personal~/.claude/skills/个人跨所有项目
Project.claude/skills/项目团队成员
Plugin插件内置安装插件的用户

如果多个 Skill 同名,优先级从上到下递减。

进阶技巧:多文件 Skill 结构

对于复杂的 Skill,可以使用多文件结构:

pdf-processing/
├── SKILL.md              # 概述和快速入门
├── FORMS.md              # 表单字段映射说明
├── REFERENCE.md          # API 详细参考
└── scripts/
    ├── fill_form.py      # 表单填充工具
    └── validate.py       # PDF 验证脚本

SKILL.md 中引用这些文件:

---
name: pdf-processing
description: 提取文本、填写表单、合并 PDF。处理 PDF 文件时使用。
allowed-tools: Read, Bash(python:*)
---

# PDF 处理

## 快速开始

提取文本:
\`\`\`python
import pdfplumber
with pdfplumber.open("doc.pdf") as pdf:
    text = pdf.pages[0].extract_text()
\`\`\`

详细表单操作请参阅 [FORMS.md](FORMS.md)。
完整 API 参考请参阅 [REFERENCE.md](REFERENCE.md)。

Claude 会根据需要动态加载这些引用文件,而不是一次性全部加载。

Skills vs Subagents vs MCP:如何协同使用?

Simon Willison 提供了一个很好的思考框架:

MCPs can wrap APIs to make them usable by an LLM agent. Skills offer a context-efficient way to make extra instructions available to the agent only when it needs them. Some of those instructions might involve telling it how best to use the MCPs. Sub-agents are another context management pattern, this time allowing a parent agent to send a sub-agent off on a mission - optimally involving both skills and MCPs - while saving on tokens in that parent agent.

翻译过来就是:

  • MCP:封装 API,让 Claude 能调用外部工具
  • Skills:提供使用这些工具的最佳实践指南
  • Subagents:在独立上下文中执行子任务,节省主上下文的 tokens

三者是互补关系,而非替代关系:

┌─────────────────────────────────────────┐
│              用户请求                    │
└─────────────────┬───────────────────────┘

┌─────────────────────────────────────────┐
│           Claude 主 Agent               │
│  ┌─────────────────────────────────┐   │
│  │         Skills (技能)            │   │
│  │   • 告诉 Claude 如何做事         │   │
│  │   • 按需加载,节省上下文          │   │
│  └─────────────────────────────────┘   │
│                  │                      │
│                  ▼                      │
│  ┌─────────────────────────────────┐   │
│  │         MCP (工具)              │   │
│  │   • 连接数据库、API 等          │   │
│  │   • 提供实际执行能力            │   │
│  └─────────────────────────────────┘   │
│                  │                      │
│                  ▼                      │
│  ┌─────────────────────────────────┐   │
│  │       Subagents (子代理)         │   │
│  │   • 独立上下文执行复杂子任务      │   │
│  │   • 可以使用 Skills 和 MCP       │   │
│  └─────────────────────────────────┘   │
└─────────────────────────────────────────┘

社区的真实反馈

正面观点

  • 降低门槛:相比需要配置服务器的 MCP,Skills 只需要写 Markdown 文件
  • 上下文效率:按需加载机制大大节省了宝贵的上下文窗口
  • 易于共享:可以通过 Git 仓库、插件市场分享 Skills

争议与质疑

一些开发者持保留态度:

“Skills are cool, but to me it’s more of a design pattern / prompt engineering trick than something in need of a hard spec.”

(Skills 很酷,但对我来说这更像是一种设计模式/提示词工程技巧,而不是需要硬性规范的东西。)

另一位评论者则担心可靠性问题:

“The ‘everything is a prompt’ thing is interesting, but do we lose some deterministic behavior of MCP plumbing when the LLM simply doesn’t want to follow the ‘rules’?”

(“一切皆提示词”的理念很有趣,但当 LLM 不想遵循”规则”时,我们是否会失去 MCP 管道的确定性行为?)

开始使用 Anthropic 官方 Skills

Anthropic 在 GitHub 上开源了一系列官方 Skills:

仓库地址https://github.com/anthropics/skills

在 Claude Code 中安装

# 添加官方 Skills 市场
/plugin marketplace add anthropics/skills

# 安装文档处理 Skills
/plugin install document-skills@anthropic-agent-skills

# 安装示例 Skills
/plugin install example-skills@anthropic-agent-skills

安装后,你可以直接使用这些 Skill:

使用 PDF skill 提取 path/to/file.pdf 中的表单字段

官方 Skills 类别

  • Creative & Design:艺术、音乐、设计相关
  • Development & Technical:测试 Web 应用、生成 MCP 服务器等
  • Enterprise & Communication:企业通信、品牌规范等
  • Document Skills:处理 DOCX、PDF、PPTX、XLSX 等文档

最佳实践

1. 编写有效的描述

描述是 Claude 决定是否使用 Skill 的关键。好的描述应该回答两个问题:

  1. 这个 Skill 做什么? 列出具体能力
  2. 什么时候应该使用? 包含用户可能会说的触发词
# 不好的描述
description: 处理文档

# 好的描述
description: 从 PDF 文件中提取文本和表格,填写表单,合并文档。当处理 PDF 文件或用户提到 PDF、表单、文档提取时使用。

2. 保持 SKILL.md 简洁

建议 SKILL.md 不超过 500 行。超过的内容拆分到引用文件中。

3. 使用 allowed-tools 限制权限

对于只读 Skill,限制可用工具:

---
name: safe-reader
description: 安全读取文件内容
allowed-tools: Read, Grep, Glob
---

4. 打包可执行脚本

将复杂逻辑封装成脚本,Claude 执行脚本时只有输出会进入上下文:

运行验证脚本检查表单:
\`\`\`bash
python scripts/validate_form.py input.pdf
\`\`\`

展望未来

Skills 代表了 AI 工具使用的一种新范式——从”让 AI 拥有工具”转向”教 AI 如何专业地使用工具”。

虽然目前 Skills 主要在 Anthropic 的生态系统中使用,但这种”知识打包”的模式很可能被其他 AI 平台借鉴。正如一位评论者所说:

“Skills… or really just context insertion is simply a way to prioritize their output generation manually. LLM ‘thinking mode’ is the same, for what it’s worth - it really is just reprioritizing context.”

无论叫什么名字,这种让 AI 在需要时获取专业知识的模式,正在成为构建更强大、更可靠 AI 系统的关键技术。

参考资源


希望这篇文章能帮助你理解和使用 Claude Skills。如果你有任何问题或想法,欢迎在评论区讨论! 🚀

DISCUSSION

评论与补充