Claude Skills 实战:用 SKILL.md 让 Agent 学会部署 Nuxt 项目
Anthropic Skills 推出后,Agent 能力复用从写代码降维到写 Markdown。我们写了 5 个实战 Skill,总结出 SKILL.md 怎么写才有效,以及它和 .cursorrules、MCP 的分工。
发布 2026-06-21更新 2026-09-27核实 2026-09-27TL;DR
Skills 把 Agent 能力从"写代码注册 tool"降维到"写 Markdown 描述步骤"。我们写了 5 个生产级 Skill,总结出什么样的 SKILL.md 才能让 Claude 真正按预期执行——核心结论:触发条件、前置检查、具体命令、错误处理、禁止事项,五件套缺一不可。
Skills 到底是什么
一句话:Skill 是一个目录,里面放一个 Markdown 文件(SKILL.md)描述"什么时候做、怎么做、别做什么",外加可选的脚本和模板。 Agent 在需要时按需读取这个目录,按里面的步骤执行。
它和"训练模型""写插件"都不一样——你不需要写代码、不需要懂 API,会写步骤清单就能教会 Agent 一套操作。这是它最大的意义:把"团队里只有老员工知道的操作规范"变成 Agent 可执行的文本。
我们写了哪 5 个 Skill
| Skill | 场景 | 效果 |
|---|---|---|
| deploy-to-vercel | 部署 Nuxt 项目到 Vercel | 从 15 分钟手动操作 → 一行指令 |
| audit-deps | 审计 package.json 依赖安全 | 每周自动跑,输出安全报告 |
| gen-sitemap | 生成 sitemap.xml | 改路由后自动更新,不用手动跑脚本 |
| db-migration | 数据库 schema 迁移 | 生成迁移文件 + 回滚脚本 |
| gen-api-docs | 从代码生成 API 文档 | 提交 PR 时自动更新文档 |
这 5 个的共同点:高频、易出错、步骤固定。这正是最该写成 Skill 的那类活——一次写好,长期省心。
SKILL.md 怎么写才有效
反面教材(无效)
---
name: deploy-to-vercel
description: Deploy to Vercel
---
Deploy the project to Vercel.
Claude 看到这个会反问一堆:用什么命令?要不要 --prod?环境变量怎么配?——等于没教。
正面教材(有效)
---
name: deploy-to-vercel
description: Deploy a Nuxt/Vite/Next project to Vercel
---
## When to use
User says "部署" / "deploy" / "上线" or asks to deploy to Vercel.
## Prerequisites
1. Check `vercel.json` exists. If not, create one:
```json
{ "framework": "nuxt", "buildCommand": "pnpm run build" }
- Check
VERCEL_TOKENenv var is set. If not, ask user to provide it.
Steps
- Run
vercel buildto verify build passes locally - Run
vercel --prod --yesto deploy - Wait for deployment URL in output
- Return the deployment URL to user
Error handling
- If build fails: show error, do NOT retry automatically
- If
VERCEL_TOKENmissing: ask user to set it, do NOT guess - If
vercelCLI not installed: runnpm i -g vercelfirst
Do NOT
- Do not deploy to preview without asking
- Do not modify nuxt.config during deploy
### 五件套(缺一不可)
1. **When to use** — 明确触发条件,避免 Claude 在不该用时瞎调,也避免该用时没认出来。
2. **Prerequisites** — 前置检查,缺什么先补,别带着错误的环境往下跑。
3. **Steps** — 具体到能直接执行的命令,不要写"部署项目"这种含糊指令。
4. **Error handling** — 出错了怎么办,尤其是"不要自动重试""不要瞎猜"这类边界。
5. **Do NOT** — 禁止事项,防止 Claude 自作主张(这是踩坑最多的一项)。
实测最容易被忽略、又最关键的是 **Do NOT 和 Error handling**。没有它们,Skill 在顺利路径上能跑,一遇异常就放飞——自动重试烧钱、瞎猜配置改坏环境,都是这么来的。
## 附带脚本和模板
Skill 目录可以放脚本和模板,Claude 按需读取:
deploy-to-vercel/ SKILL.md scripts/ check-env.sh # 检查环境变量 templates/ vercel.json # 默认配置模板 nuxt.vercel.json # Nuxt 专用配置
SKILL.md 里这样引用:
```markdown
## Steps
1. Run `bash scripts/check-env.sh` to verify prerequisites
2. If `vercel.json` missing, copy from `templates/nuxt.vercel.json`
3. Run `vercel --prod --yes`
好处:把"易变的逻辑"放进脚本,SKILL.md 只描述流程。脚本改了,Skill 不用动;模板更新了,所有用到的地方一起生效。
Skills vs .cursorrules vs MCP
三者经常被混淆,其实分工清晰:
| 维度 | Skills | .cursorrules | MCP |
|---|---|---|---|
| 本质 | 能力描述(按需加载) | 全局 prompt(每次带) | 工具接入协议 |
| 格式 | Markdown + 脚本 | 纯文本 | JSON + 代码 |
| Context 占用 | 低(用到才加载) | 高(每次对话都带) | 低 |
| 适合 | 固化操作流程 | 项目通用规范 | 接外部 API |
| 典型内容 | "怎么部署""怎么迁移" | "用 pnpm""中文注释" | GitHub / Slack / DB 工具 |
记忆口诀:.cursorrules 定规矩(always-on 的约定),Skills 定流程(按需触发的操作手册),MCP 接工具(连外部系统)。 三者互补,不是替代关系。MCP 详见 什么是 MCP。
效果数据
部署 Skill 上线两周后:
- 部署操作时间:约 15 分钟手动 → 一行指令触发
- 部署出错率:之前偶有失误 → 接近 0(Skill 里有前置检查兜底)
- 新人上手:不用读部署文档,直接说"部署"就行
更重要的是隐性收益:操作规范从"老员工脑子里"变成"团队共享的文本",人员流动不再带走关键知识。
写 Skill 的实战建议
- 从高频易错流程开始——部署、迁移、审计这类做得多、错不起的活,回报最高。
- 先把"成功路径"跑通,再补异常分支——别一开始就想覆盖所有情况,先能用再加固。
- Do NOT 列表持续补——每次 Agent 自作主张干了不该干的事,就回头加一条禁止项。
- 逻辑放脚本,流程放 Markdown——易变部分隔离到 scripts/,SKILL.md 保持稳定。
- 触发词写全——中英文、近义词都列上("部署/deploy/上线"),避免该触发时没认出。
2026-09-27 更新:Skills 已经进了 MCP 协议层
本文初稿写于 2026-06,当时 Skills 还是各家客户端自己的私有约定(Claude 的 SKILL.md、Cursor 的 .cursorrules,各自格式、各自加载)。三个月后这件事变了,值得单独记一笔。
MCP 当前正式规范(2026-07-28)把「Skills over MCP」列为官方扩展之一——与 Tasks(长耗时异步操作)、MCP Apps(对话内联 UI)并列(依据 modelcontextprotocol.io 官方规范页)。三个扩展都是 opt-in,需客户端与服务端同时支持并在初始化时协商。
对本文的实践含义有三条:
- Skills 从「客户端特性」变成「协议能力」。 过去「写一个 Skill」意味着你锁定了某个客户端;现在它可以通过 MCP Server 暴露与分发,跨客户端复用第一次有了标准路径。
- 「按需加载」这件事被协议化了。 本文强调的「Skills 占 context 低(用到才加载)」是 Claude 侧的实现,而 MCP 的 Skills 扩展把「发现 → 取回 → 校验」做成了协议动作,不再依赖各家自己发明目录扫描。
- 但别急着迁移。 该扩展是 opt-in 且需双方协商支持,主流客户端与支持到哪个规范日期版本的实际覆盖情况,本站未做一手核实,属待确认项。现有
SKILL.md继续可用,本文下面「写 Skill 的实战建议」五条一条都不需要改。
另一条同期相关的协议变化:MCP 的远程传输已换成 Streamable HTTP,旧 HTTP+SSE 被弃用。Skill 里若内嵌了「调某个远程 MCP Server」的步骤,请确认该 Server 是否已迁移。
五个常见误区
误区一:「Skill 写得越详细越好」。
反了。Skill 的核心机制是按需加载,写得太长会在触发时一次性吃掉大量 context,等于把 .cursorrules 的缺点搬了回来。正确做法是流程放 Markdown、逻辑放 scripts/(见建议第 4 条),SKILL.md 只保留决策路径与禁止项。
误区二:「有了 Skill 就不用写文档了」。 本文「效果数据」里写的是新人不用读部署文档就能操作,前提是那个文档的内容已经被正确固化进 Skill。Skill 不是文档的替代品,是文档的一种可执行形态——文档不更新,Skill 一样会过时,而且过时得更隐蔽(因为它跑起来「看起来是对的」)。
误区三:「Do NOT 列表写一次就够」。 本文建议第 3 条说的是持续补——每次 Agent 自作主张干了不该干的事,就回头加一条。这是 Skills 里唯一必须长期维护的部分,也是最容易在半年后失效的部分。
误区四:「触发词列一两个就行」。 漏掉近义词的代价是「该触发时没触发」,而这类失败是静默的——用户不会知道有个 Skill 本该生效。中英文与常见说法都要列("部署 / deploy / 上线 / 发布")。
误区五:「Skills、.cursorrules、MCP 三选一」。
不是替代关系。记忆口诀仍然成立:.cursorrules 定规矩(always-on)、Skills 定流程(按需触发)、MCP 接工具(连外部系统)。三者同时存在是常态。
FAQ
Skill 和 MCP 现在是什么关系?
分层不同:MCP 解决「Agent 怎么调外部工具」,Skills 解决「拿到工具之后按什么流程组合」。2026-07-28 版 MCP 规范新增 Skills over MCP 扩展后,Skills 有了通过 MCP 暴露与发现的标准路径,但原来的 SKILL.md 形态依然有效。
必须迁移到 Skills over MCP 吗? 不需要。扩展是 opt-in,现有 Skill 继续可用。迁移的收益是跨客户端复用,代价是要依赖 Server 端与客户端双方支持。建议先观望支持覆盖度(待确认项)。
Skill 里能直接调脚本吗?
能,而且应该。本文的建议就是把易变逻辑隔离到 scripts/,SKILL.md 保持稳定。反过来把 shell 命令全写进 Markdown,是最常见的坏味道。
一个项目该写几个 Skill? 按高频 + 错不起筛,不按数量。本文的建议是从部署、迁移、审计这类流程起步——做得多、错了代价大,回报最高。
结论
Skills 的核心价值不是"教 AI 新知识",而是**"固化团队最佳实践"**。写好一个 Skill = 新人不用看文档也能按规范操作。建议从高频、易出错的流程开始——部署、迁移、审计这类,投入产出比最高。
放到 2026-09 再看,这句话还多了一层含义:当 Skills 被写进 MCP 协议层之后,「固化最佳实践」第一次有了跨客户端、可分发的载体。所以现在写 Skill 的回报不只是「本项目省时间」,还在于这份流程知识将来能被搬走——前提是你已经把规则写成了文本,而不是留在某个人的操作习惯里。
延伸阅读
- Claude Skills 工具卡
- Claude Code 深度评测 — Skills 的主要运行环境
- MCP 生态实测 — Skill 接外部工具时配合 MCP 用
不适合还没沉淀出固定流程的团队——流程本身还在变的时候,固化成 Skill 只会反复返工
- Skill 写得越笼统越没用,必须把命令、路径、验收条件写死,否则 Agent 会按自己的理解自由发挥
- Skill 与 .cursorrules、MCP 的职责边界没有官方分工,三者混用时会重复注入规则,甚至互相冲突
- SKILL.md 里如果写了 shell 命令,等于给了 Agent 一段可执行脚本,权限白名单没配好就是风险面
- Skill 只在该模型生态内生效,换到 Cursor 或其他 Agent 就得重写一份,跨工具复用不了
相关工具
Aider vs Claude Code:终端 AI 编程双雄怎么选
Aider vs Claude Code 2026 选型对比:开源 BYOK 多模型 vs Anthropic 订阅长任务 Agent,从编程能力、多模型支持、价格、Git 集成、国内可用性和适合人群判断,帮你选对终端 AI 编程工具。
Claude Code vs Cline:CLI AI Agent 怎么选?2026 对比
Claude Code vs Cline 2026 选型对比:Anthropic 官方闭源 CLI Agent vs Apache-2.0 开源 VS Code 插件。从模型绑定、工作流、MCP 支持、价格、隐私和适合人群 6 个维度帮你选对 CLI AI 编程工具。
Claude Code vs Codex CLI:终端 AI Agent 双雄对比
Claude Code vs Codex CLI 2026 选型对比:Anthropic 与 OpenAI 两大官方终端 Agent 的模型、长任务、MCP 生态、Windows 支持、订阅打包价格和国内可用性全方位对比,帮你判断该用哪个终端 AI Agent,以及能不能两个一起用。
Claude Code vs Crush:Anthropic 官方 vs 多模型 TUI(2026 实测选型)
Claude Code vs Crush 2026 选型对比:Anthropic 官方 CLI Agent(Claude only + 长任务最稳 + MCP 一等公民)vs Charmbracelet 开源 TUI Agent(多模型 mid-session 切换 + LSP + FSL-1.1-MIT)。从模型、长任务、生态、价格、国内可用性帮你选对终端 AI 编程工具。
Cursor vs Claude Code:什么时候用哪个?(2026 实测选型)
Cursor 和 Claude Code 到底怎么选?一句话结论 + 决策树 + 价格实测 + 国内可用性对比。GUI 派选 Cursor,终端长任务派选 Claude Code,最优解其实是共存。
Devin vs Claude Code:AI 编程 Agent 怎么选?异步自主 vs 终端同步对比
Devin vs Claude Code 2026 选型对比:Cognition 异步自主 Cloud Agent vs Anthropic 终端同步 CLI Agent,从形态、工作模式、长任务能力、并发、价格、中文支持和适合人群 8 个维度判断,帮你选对 AI 编程 Agent。