这份说明聚焦在 Claude Code(终端/IDE 里的 Claude 编程 Agent)生态,而不是泛泛的"AI Agent 理论"。
1. 心智模型:Claude Code 本身就是一个 Agent
Claude Code 是一个 agentic coding assistant:你用自然语言给目标,它在终端里读文件、做针对性编辑、跑命令(Bash)、搜代码(Grep/Glob)、必要时还能走网络/调度子任务,在一个"思考→选工具→执行→评估结果→继续"的循环里推进到你定义的任务完成。
它要"懂你项目",主要靠一套 memory/规则层:
- CLAUDE.md(项目级):项目约定、架构速览、规范、常用命令(团队可提交到 git)
- ~/.claude/CLAUDE.md(个人级):你的个人偏好(跨项目生效)
在此之上,Claude Code 提供了两种最常见的"扩展/复用"机制:
Skill(Agent Skills / SKILL.md) — 把"专业知识/流程/模板"封装成可被发现、可复用的工作包。适用于固化工作流/规范/交付物标准。
MCP(Model Context Protocol) — 给 Claude Code 挂载"外部能力/数据源",例如连 Jira/GitHub/Drive/DB 等。需要调用外部系统 API 时使用。
Skill 不是函数式代码,更像"非常结构化、可复用的大段系统提示 + 参考资料 +(可选)脚本入口"。核心是 SKILL.md,可带脚本/模板/参考文档。
2. Skill(Agent Skills)是什么?怎么被触发?
每个 Skill 本质上是一个 目录 + 一个必有的 SKILL.md:
- SKILL.md 顶部用 YAML frontmatter 写元数据(最关键:name、description)
- 正文是 Markdown 指令/步骤/示例,Claude 在需要时读取并照着做
触发分两类:
- 模型驱动(model-invocation):Claude 根据你的请求 + Skill 的 description 自行判断
- 用户驱动(斜杠显式调用):你敲 /something 明确触发(更多团队偏好这种可控性)
官方文档提醒:description 极其重要——Claude 靠它来决定什么时候该用这个 Skill。
3. Skill 存放在哪:全局 vs 项目级
个人全局(跨项目可用)
~/.claude/skills/
my-skill/
SKILL.md
(可选) reference.md
(可选) scripts/helper.py
mkdir -p ~/.claude/skills/my-skill
用途:个人偏好、通用小工具、你在多项目都要用的流程模板。
项目级(团队共享,进 git)
your-project/
.claude/
skills/
code-review-acme/
SKILL.md
checklists/
security.md
mkdir -p .claude/skills/code-review-acme
提交到仓库后,队友打开项目就能继承同一套 Skill(不需要每人手工装一遍)。
旧形态 .claude/commands/*.md(自定义斜杠命令)在很多资料里也能见到;官方 Agent Skills 路线更倾向于 .claude/skills/<name>/SKILL.md 这种目录化、可携带资源的包结构。
4. 创建 Skill:最小可运行步骤
下面用一个实战例子:explain-code(用"类比 + ASCII 图示"解释代码)。
Step 1:建目录
# 个人全局示例
mkdir -p ~/.claude/skills/explain-code
Step 2:写 SKILL.md
---
name: explain-code
description: >
当需要把一段代码解释给人类(尤其非编译器思维)时用我:
用直观类比 + 控制流/数据流的 ASCII 图 + 逐段对应源码来讲解;
默认语言不限,若上下文明显则用项目语言。
---
## Explain Code — 标准做法
1) 先**不改动代码**:只复述结构
2) 画一个最小但够用的 **ASCII 数据流/调用链**
3) 对每段关键逻辑给:
- 它在做什么(意图)
- 为什么这么做(tradeoff / 约束)
- 常见误会在哪(边界条件 / 副作用 / async / error path)
4) 结尾给一句"如果你愿意,我可以再补一份 refactoring 建议(仍不改文件)"
Step 3:验证
在 Claude Code 交互里直接说:
用 explain-code 给我讲讲 src/auth.ts 的 login 分支
或确认 Skill 出现:
/skills
5. 进阶:给 Skill 加参考文件 / 脚本
Skill 目录里可以放 reference.md / 示例 / scripts / templates,需要时再从 SKILL.md 里引用路径让 Claude 去读或去执行。
.claude/skills/release-check/
SKILL.md
checklists/
backend.md
frontend.md
scripts/
changelog-from-git.sh
SKILL.md 里可以写类似指引:
1. 读 checklists/backend.md 作为检查口径
2. 运行:bash scripts/changelog-from-git.sh origin/main..HEAD
3. 对照输出逐项确认,给出放行/打回结论
6. Agent / Subagent 在这里指什么?
- Agentic loop:Claude Code 本身就是 agent
- Subagent:主对话可以把某类独立子任务交给一个"更聚焦的代理上下文"去做(例如专职做代码审查/写单测/审安全),它有自己更窄的工具权限与上下文,避免污染主线对话
这与 Skill 的定位不同:Skill 更像"知识包/流程包";Subagent 更像"角色隔离的执行者"。
如果要"写一个 Agent"(长期运行、带专属工具/记忆/目标的角色),通常走两条路:
- 用 CLAUDE.md + 规范 + 允许的工具集塑造行为(最简单、最稳)
- 用 Subagents / 任务编排(更复杂的并行/隔离)
7. 快速对照:Skill vs MCP vs CLAUDE.md
项目规范/代码风格/审查口径 → CLAUDE.md +(可选)SKILL.md(知识/流程,不需要外部 API)
可复用跨项目的工作流包 → ~/.claude/skills/ 的 Skill(便于携带、版本化、团队共享)
操作 Jira / GitHub / DB / 本地 App → MCP server(需要把外部系统能力映射成 tools)
角色化 + 上下文隔离 → Subagent 思路
8. 团队内部标准建议(避坑)
- description 写"何时用"比写"是什么"更重要 — Claude 靠它调度
- Skill 正文要写成 步骤 + 产出格式 + 不允许做的事(例如:只读、不要改文件)
- 把"需要人工审批的点"写清楚:Claude Code 本身就有 permission/审批模型,在 Skill 里再用文字强化双保险
- 别把整个知识库塞进一个 Skill:用引用文件拆分,SKILL.md 保持"调度 + 大纲 + 关键决策",细节放 reference.md