Appearance
Claude Code Skill与MCP详解:工作流与外部工具完整教程
每次让Claude做代码审查,都要重复说一遍"先看改动范围,再检查测试覆盖,最后按风险分级输出"?Skill要解决的就是这个问题:把工作方法写下来,让Claude记住,以后直接执行。而MCP解决的是另一个问题:让Claude能连上GitHub、Notion、Slack这些外部系统。两者配合,才能真正实现"一句话交代,AI自主完成"。
先分清四个概念
| 概念 | 解决什么问题 |
|---|---|
| Skill | 用自然语言写的工作流定义 |
| Agent Skills | Skill遵循的开放标准 |
| MCP | 连接外部工具的开放协议 |
| Plugin | 把skills、hooks、agents、MCP servers打包分发的机制 |
Skill:用自然语言写工作流
Skill是一份用自然语言写的操作说明。它告诉Claude:这类任务先做什么、中间查什么资料、哪些地方要小心、最终以什么格式交付。
最简单的Skill示例
文件结构:
.claude/
skills/
review-pr/
SKILL.mdSKILL.md内容:
markdown
---
name: review-pr
description: 审查当前改动,按风险、可读性和测试覆盖整理结论
disable-model-invocation: true
---
按下面顺序完成审查:
1. 先看当前分支的改动范围
2. 再看受影响的核心文件
3. 检查有没有明显的范围问题和回归风险
4. 检查测试是否覆盖到关键改动
5. 最后用"高风险/中风险/低风险/建议"四段格式输出输入/review-pr,Claude就会按这个流程执行。
Skill和脚本的区别
| 维度 | 脚本 | Skill |
|---|---|---|
| 执行方式 | 固定命令序列,死板执行 | 带判断的流程说明,根据上下文调整 |
| 适用场景 | 固定操作 | 有稳定步骤但不是固定脚本能写死的 |
| 举例 | 把git log拉出来 | 看改动涉及哪些模块,按"新增/修复/调整"分组 |
脚本是死的,Skill是活的——因为执行者是能理解的AI,不是机械的解析器。
最值得先记住的设置
disable-model-invocation: true
只要这份Skill会发消息、会部署、会提交、会改远端资源,就把它设成手动触发。
| Skill类型 | 触发方式 |
|---|---|
| /review-pr 审查类 | 自动调用问题不大 |
| /deploy、/send-slack 会产生结果的 | 最好手动调用 |
怎么写出好用的Skill
一份好用的Skill,通常有三个特点:
- 主文件短:只写目标、顺序、判断和交付
- 资料分散:大段内容放到examples.md、template.md,需要时再加载
- 关键操作手动触发:会改远端资源的动作,默认加上
disable-model-invocation: true
不好的写法:
- 把所有背景资料一次性塞进去
- 每条都像规定,但轻重缓急不分
- 没有交付格式
- 没有判断标准
更好的写法:
.claude/
skills/
release-note/
SKILL.md
examples.md
template.mdSKILL.md里只保留几件事:
- 这份Skill是拿来做什么的
- 先做哪一步,再做哪一步
- 哪些地方不要乱猜
- 最终以什么格式交付
实用Skill范例:发布说明
markdown
---
name: release-note
description: 根据本次改动整理发布说明
disable-model-invocation: true
---
目标:
- 根据最近一次发布后的改动,整理一份能直接发给团队或用户的更新说明
顺序:
1. 先确认本次整理的范围
2. 读取git log和git diff
3. 把改动分成新增、修复、调整、注意事项
4. 对用户可见的变化单独提出来
5. 不确定的地方直接标成待确认
交付:
- 先给一段短摘要
- 再给完整版本说明
- 最后给一版适合群里发的短消息MCP:连接外部工具
Skill管的是"怎么做",MCP管的是"能不能连上"。
MCP(Model Context Protocol)让Claude能访问外部系统:GitHub、Notion、Slack、数据库、浏览器等。
怎么接入MCP
HTTP方式(如Notion):
bash
claude mcp add --transport http notion https://mcp.notion.com/mcp本地程序方式(如Playwright):
bash
claude mcp add --transport stdio playwright -- npx -y @playwright/mcp@latest配置后用/mcp查看状态。
Skill和MCP怎么配合
举个例子:读GitHub issue,查Notion规范,整理成Slack消息。
分工:
- MCP提供GitHub、Notion、Slack的连接能力
- Skill定义"先读issue→再查规范→最后发消息"的流程
markdown
---
name: ship-issue
description: 读issue、查规范、整理成Slack消息
disable-model-invocation: true
---
1. 去GitHub读取指定issue的内容
2. 去Notion查询相关团队规范
3. 把需求和规范合并成实现说明
4. 整理成适合发Slack的消息草稿| 组合 | 效果 |
|---|---|
| 只配MCP,没有Skill | 能访问系统,但每次执行方式不同 |
| 只写Skill,没有MCP | 知道要做什么,但访问不了外部系统 |
| 两者配合 | 把事完整自动化 |
浏览器集成:两种方式
方式一:Playwright MCP(需要主动操作网页)
适合:打开本地页面、点按钮、看DOM、做交互、截图
bash
claude mcp add --transport stdio playwright -- npx -y @playwright/mcp@latest方式二:Chrome集成(需要利用浏览器登录状态)
适合:访问已登录的网站(Notion、Gmail、内部后台)
前提条件:
- Google Chrome
- Claude in Chrome扩展 ≥ 1.0.36
- Claude Code ≥ 2.0.73
- 直接Anthropic计划
bash
claude --chrome
# 或在会话中输入
/chrome注意:如果只是想让Claude看截图,直接把图片贴进对话就行,不必装工具。
什么时候用Skill,什么时候用MCP
| 场景 | 选择 |
|---|---|
| 任务在本地项目(代码审查、发布说明) | 先用Skill |
| 不需要访问外部系统 | 只用Skill |
| 重点是"按固定步骤执行" | 只用Skill |
| 要访问GitHub、数据库、浏览器等 | 需要MCP |
推荐顺序:先用Skill,等动作重复出现后再补MCP。
容易混的概念一览
| 概念 | 解决什么问题 |
|---|---|
| 脚本 | "这一步具体怎么跑" |
| Hook | "什么时候自动跑"(如改完文件就检查) |
| Plugin | "怎么把一整套能力打包分发" |
| Skill | "这类任务的顺序、判断和交付标准" |
动手试试:写第一个Skill
bash
mkdir -p ~/.claude/skills/my-first-skill创建~/.claude/skills/my-first-skill/SKILL.md:
markdown
---
name: my-first-skill
description: 我的第一个Skill,列出当前目录下的Python文件
---
1. 用Glob查找所有.py文件
2. 统计文件数量
3. 列出文件名
4. 输出:"找到X个Python文件:" + 文件列表然后在Claude Code里输入/my-first-skill,看看效果。
从小场景开始,把工作方法教给AI,比每次都亲自做更高效。
