Skills vs 提示词 vs MCP 工具的定位三角
Claude 生态中有三种不同层次的"能力扩展"机制:普通提示词、Skills 和 MCP 工具。它们不是互相竞争的,而是在不同层次解决不同问题。搞清楚这个三角关系,是选择正确工具的前提。
三者的层次模型
- 提示词:对话层。用户直接输入自然语言,一次性使用,不持久。
- Skills:工作流层。封装提示词 + 工具调用序列,可复用、可参数化、可版本管理。
- MCP 工具:工具层。提供 Claude 无法直接访问的外部能力(数据库查询、浏览器控制、API 调用)。Skills 可以调用 MCP 工具,但两者在不同层次。
逐对对比
提示词 vs Skills
| 维度 | 提示词 | Skills |
|---|---|---|
| 存储 | 只在对话历史中 | .claude/skills/ 文件,持久化 |
| 触发 | 输入自然语言 | /skill-name [args] |
| 复用 | 手动复制粘贴 | 一次定义,随时调用 |
| 参数 | 手动修改文本 | 结构化参数 --key value |
| 团队 | 靠文档传播 | Git 分发,自动同步 |
| 版本 | 无法追踪 | commit / diff / PR |
何时用提示词:探索性任务,一次性问题,上下文高度特殊的情况。
何时用 Skills:重复性工作流,需要团队一致性,可参数化的操作。
Skills vs MCP 工具
这是最容易混淆的对比。两者都是"扩展 Claude 能力"的手段,但层次完全不同:
| 维度 | Skills | MCP 工具 |
|---|---|---|
| 定义什么 | 工作流逻辑(做什么、按什么顺序、输出什么格式) | 工具能力(能连接什么系统、执行什么操作) |
| 文件位置 | .claude/skills/*.md | MCP Server(独立进程) |
| 开发语言 | Markdown + 自然语言 | Python / Node.js(实现 MCP 协议) |
| 调用方式 | 用户 /skill-name | Claude 在推理中自动调用 |
| 主要用途 | 封装业务工作流 | 接入外部系统(DB、Browser、API) |
类比:MCP 工具是砖头(基础能力),Skills 是用砖头搭建的房间(工作流)。你可以在 Skill 中使用 MCP 工具,就像在房间里使用砖头一样。
具体例子:
场景:自动化代码审查并记录到 Notion
MCP 工具(工具层):
- mcp-github:读取 PR diff
- mcp-notion:把审查结果写入 Notion 数据库
Skill(工作流层):
/review-pr --pr 123
→ 调用 GitHub MCP 工具读取 PR diff
→ 调用内置 Bash 工具运行测试
→ 生成标准格式的审查报告
→ 调用 Notion MCP 工具记录结果
Skill 把这些工具调用编排成一个用户可以一键触发的工作流。
三角关系总结
你想要的效果 应该用什么
随手问一个问题 → 直接输入提示词
─────────────────────────────────────────────────
重复性工作流,需要一键触发 → Skill
重复性工作流,需要调用外部系统 → Skill + MCP 工具
─────────────────────────────────────────────────
接入新的外部系统(DB/Browser) → MCP 工具
封装外部系统的使用方式 → MCP 工具 + Skill 调用它
─────────────────────────────────────────────────
多个 Skill / Agent 互相协调 → Claude Agent SDK
本书的范围:专注 Skills 层的设计与开发。MCP 工具的构建见《MCP 实战指南》,多 Agent 编排见《AI Agent 实战指南》。
常见误解澄清
误解 1:"我用了 MCP 工具,就不需要 Skills 了"
不对。MCP 工具给了你能力,Skill 给你的是用这些能力的标准方式。没有 Skill 的封装,每次使用 MCP 工具你还是要手动描述工作流。
误解 2:"Skills 只是在聊天框里设置了 system prompt"
不对。Skills 比 system prompt 更强大:它们可以携带参数、触发工具调用链、以文件方式版本管理。System prompt 只是全局背景,Skills 是可调用的工作流单元。
误解 3:"Skills 需要写代码"
基础 Skill 只需要写 Markdown。更高级的 Skill 可以通过 Bash 工具调用脚本,但 Skill 文件本身是自然语言描述。
下一节:Skill 的文件结构与加载机制——Skills 的文件放在哪里?Claude Code 是如何找到并加载它们的?