边界辨析
围绕 Skill,常被一起讨论的还有四个机制:Rule / CLAUDE.md(项目记忆)、MCP(外部世界访问)、Subagent(独立执行体)。它们看起来都在"扩展 AI",但解决的问题完全不同——选错了机制,往往就是后续返工的开始。
下面这张表是社区共识的速查地图:
| 机制 | 性质 | 加载方式 | 解决的问题 |
|---|---|---|---|
| Skill | 按需能力包 | description 命中时加载 | "怎么做好这件事"——把 SOP / 模板 / 脚本封装成可复用的工作手册 |
| Rule / CLAUDE.md / AGENTS.md | 项目长期记忆 | 每次对话始终加载 | "不能做什么 / 项目长期上下文是什么"——红线、规范、架构约定 |
| MCP | 外部世界访问 | 工具被调用时 | "如何访问 X 服务"——给 AI 接通数据库 / 邮箱 / Jira / 内网 API 的能力 |
| Subagent | 独立任务执行体 | 主 agent 显式委派 | "把一段任务交给单独的 agent"——并行执行 / 隔离上下文 / 专精分工 |
一句话决策模型:
- 这件事该不该做?→ Rule
- 这件事怎么做好?→ Skill
- 这件事需要外部数据/接口?→ MCP
- 这件事需要单独的执行流?→ Subagent
它们之间不互斥,可以组合使用:例如一个"创建 NPC"的 Skill 内部可调用 MCP(拉取仓库列表)+ 遵守 Rule(不允许提交 .env)+ 委派 Subagent(并行生成多个文件)。
Skill 与 Rule 的细致对比
Rule 在不同平台名字不同,但核心都是"项目长期记忆":
| 平台 | 对应名称 | 约定位置 |
|---|---|---|
| Claude Code | CLAUDE.md | 项目根 / 用户目录 |
| OpenAI Codex / Cursor | AGENTS.md | 项目根 |
| CodeBuddy | RULE.mdc | .codebuddy/rules/<name>/ |
具体到 Skill 与 Rule 的差异:
| 维度 | Rule | Skill |
|---|---|---|
| 生效时机 | 所有对话都生效,始终占用上下文 | 命中 description 才加载 |
| Token 成本 | 始终占用上下文 Token | 懒加载,未触发零成本 |
| 内容性质 | 全局底线 — 红线 / 规范 / 长期上下文 | 按需能力 — SOP / 模板 / 脚本 |
| 典型场景 | "禁止提交 .env""本项目用 Vue 3 + TypeScript" "所有 PR 必须含测试" | "创建一个 CNB NPC Agent" "把 PDF 表单填好交差" "按公司模板生成发布稿" |
| 文件形式 | 单个 CLAUDE.md / AGENTS.md / RULE.mdc | <name>/SKILL.md + 可选资源目录 |
TIP
常见误用:把"项目长期上下文"硬塞进 Skill 的 description 触发——结果命中率极低;把"一次性的工作流"塞进 Rule——结果每次对话都消耗上下文 Token。两类信息性质不同,按上表对号入座。
Skill 与 MCP 的细致对比
二者经常被放在一起讨论,因为都是"扩展 AI 能力"。但:
- MCP 教 AI 如何"获取/操作"外部世界——是连接器
- Skill 教 AI 如何"用好"已有的工具完成一类任务——是手册
举例:要让 Agent 帮你在 Jira 上创建合规的 Bug——
- MCP 提供能力:连上 Jira、能调
create_issueAPI - Skill 提供方法:这家公司怎么写标题、必填哪些字段、bug 优先级怎么定、要 link 到哪个 epic
二者叠加使用最佳:Skill 内部直接引用 MCP 工具的全限定名,例如:
text
使用 Jira:create_issue 工具创建工单,标题必须遵循 [模块] 摘要 (priority) 格式...IMPORTANT
在 Skill 中引用 MCP 工具时,务必使用全限定名 ServerName:tool_name(如 Jira:create_issue),否则在多 MCP 服务器并存时会找不到工具。
Skill 与 Subagent 的细致对比
Subagent(也叫 Custom Agent / Sub-Agent)是把一段任务外包给一个独立运行的 agent 实例:
| 维度 | Skill | Subagent |
|---|---|---|
| 本质 | 主 agent 加载一份"工作手册" | 主 agent 启动一个新的 agent 实例去执行 |
| 上下文 | 与主对话共享上下文 | 独立上下文,不污染主对话 |
| 并发 | 串行 | 可并行执行多个 |
| 代价 | 低(只是注入文本) | 高(启动新会话 + 多轮 token) |
| 适用 | 有标准流程的可复用任务 | 长任务 / 隔离敏感操作 / 多任务并行 |
判别法:如果你想"让 AI 按某种方式做这件事"——用 Skill;如果你想"让 AI 派一个分身去专心干这件事,干完再回报"——用 Subagent。
下一步
了解了边界后:
- 想知道 Skill 该放在哪、谁能看到?→ 三级生态
- 想动手写第一个?→ 快速开始
- 想写出一个真的能被触发的 Skill?→ 写好 description