Agent Skills · 可复用的能力扩展
用一个 SKILL.md 文件,把反复出现的指令、流程、检查清单变成 Claude 随时可调用的能力。
Contents · 目录
它是什么、何时该用、和 CLAUDE.md 的区别。
三步走 + 真实示例 + 存放位置与发现规则。
frontmatter 字段、命令名、渐进式披露、调用控制。
动态注入、子代理、评估迭代、分享分发。
Concept · 它是什么
写一份带指令的 SKILL.md,Claude 就把它加入工具箱——相关时自动用,或用 /skill-name 直接调用。
SKILL.md = YAML 头 + Markdown 指令。Claude 按它办事。
描述匹配时自动触发,也可 /name 手动调用。
遵循 Agent Skills 标准,跨多种 AI 工具通用。
When · 何时该做
信号:你总在反复粘贴同一段指令、检查清单或多步流程;或 CLAUDE.md 的某段从「事实」长成了「流程」。
Bundled · 开箱即用
每个会话都可用(除非用 disableBundledSkills 关闭)。大多是 prompt 驱动,让 Claude 编排工具完成工作。
| 命令 | 用途 |
|---|---|
/code-review | 代码审查 |
/batch | 批量处理任务 |
/debug | 系统化调试 |
/loop | 循环迭代优化 |
/run · /verify | 启动并验证你的应用(v2.1.145+) |
/run-skill-generator | 为 /run、/verify 记录构建启动配方 |
Section · 02
三步走,从空目录到一个能跑的 /skill-name。
How-to · 三步
mkdir -p ~/.claude/skills/summarize-changes
两个 --- 之间写 YAML 头,下面写 Markdown 指令。
直接 /summarize-changes 调用,或问个匹配描述的问题看是否自动触发。
改完即时生效——文件变动当轮就能用,无需重启。
循环Example · 真实示例
frontmatter 的 description 决定何时自动触发;!`git diff HEAD` 是动态注入。
--- description: Summarizes uncommitted changes and flags anything risky. Use when the user asks what changed, wants a commit message, or asks to review their diff. --- ## Current changes !`git diff HEAD` ## Instructions Summarize the changes above in two or three bullet points, then list any risks you notice such as missing error handling, hardcoded values, or tests that need updating. If the diff is empty, say there are no uncommitted changes.
Where · 放在哪
优先级:Enterprise > Personal > Project。任意层可覆盖同名的内置 Skill。
| 层级 | 路径 | 作用范围 |
|---|---|---|
| Enterprise | 见托管设置 | 组织内所有用户 |
| Personal | ~/.claude/skills/<name>/SKILL.md | 你的所有项目 |
| Project | .claude/skills/<name>/SKILL.md | 仅当前项目 |
| Plugin | <plugin>/skills/<name>/SKILL.md | 启用该插件处,带命名空间 |
Discovery · 发现机制
从工作目录的 .claude/skills/ 一路向上到仓库根,都会加载。
在子目录里读/写文件时,该子目录的 .claude/skills/ 才被发现。
嵌套 Skill 与上层同名时,显示为 apps/web:deploy,输入全名调用嵌套版。
增删改 Skill 当轮即生效;仅「新建一个会话启动时不存在的顶层 skills 目录」需重启。
Structure · 目录长啥样
my-skill/ ├── SKILL.md # 主指令(必需) ├── template.md # 模板 ├── examples/ │ └── sample.md # 示例输出 └── scripts/ └── validate.sh # 可执行脚本
Section · 03
字段、命令名、渐进式披露、调用控制。
Anatomy · 两部分
夹在两个 --- 之间。告诉 Claude 何时用这个 Skill。
description 决定自动触发Claude 运行该 Skill 时遵循的指令。
Content type · 写哪种
/name 直接调用disable-model-invocation: true 防误触Reference · 字段速查
全部可选,仅 description 推荐。description + when_to_use 合计上限 1536 字符。
| 字段 | 作用 |
|---|---|
description | 做什么 + 何时用;决定自动触发 |
when_to_use | 补充触发场景,拼接到 description |
allowed-tools | 该 Skill 激活时免确认可用的工具 |
disable-model-invocation | true 则 Claude 不会自动加载 |
context: fork | 在隔离子代理中运行 |
model / effort | 指定模型 / 思考强度 |
paths | glob 限定激活条件 |
Naming · /命令名哪来的
| 来源 | 命名规则 | 示例 |
|---|---|---|
| skills 目录下 | 取目录名 | .claude/skills/deploy-staging/ → /deploy-staging |
| 嵌套同名 | 子目录路径 + 名 | apps/web/.../deploy/ → /apps/web:deploy |
| commands 文件 | 文件名去扩展名 | .claude/commands/deploy.md → /deploy |
| 插件 | 目录名 + 插件命名空间 | my-plugin/skills/review/ → /my-plugin:review |
Substitution · 变量
| 变量 | 含义 |
|---|---|
$ARGUMENTS | 全部参数 |
$0 · $1 | 第 N 个参数 |
$name | arguments 声明的具名参数 |
${CLAUDE_SKILL_DIR} | SKILL.md 所在目录 |
# 在 frontmatter 声明具名参数 arguments: issue_number format # 正文里引用 查看 issue $issue_number, 按 $format 格式输出。 # 未出现 $ARGUMENTS 时,参数会追加在末尾
How it works · 核心机制
内容只在需要时加载——长参考资料几乎零成本,直到你真正用它。
description 总在上下文
触发时才加载全文
支持文件用时才读
加载后留在会话
Lifecycle · 留多久 / 谁能调
| 设置 | 你 | Claude |
|---|---|---|
| 默认 | ✓ | ✓ 自动 |
disable-model-invocation:true | ✓ | ✗ |
user-invocable:false | ✗ | ✓ |
Control · 限制 Claude 能用哪些
在 /permissions 拒绝 Skill 工具。
权限规则如 Skill(commit) 或 Skill(deploy *)。
frontmatter 加 disable-model-invocation: true。
另有 skillOverrides 设置:on / name-only / user-invocable-only / off 四态控制可见性。
Section · 04
动态注入 · 子代理 · 评估迭代 · 分享分发。
Advanced · 动态注入
!`命令` 在发给 Claude 之前执行,输出替换占位符——Claude 只看到结果。
! 才识别```! 代码块disableSkillShellExecution: trueultrathink 可请求更深推理## 当前改动 !`git diff HEAD` ## 多行命令 ```! git log --oneline -5 ```
Advanced · context: fork
context: forkagent 字段指定类型:Explore / Plan / general-purpose 或自定义⚠️ fork 只适合有明确任务的 Skill。若正文只是准则而无任务,子代理收到准则却无可执行指令。
--- description: 深度审查一个目录 context: fork agent: Explore ---
Advanced · 工具 / 参数
allowed-tools:激活时免确认可用(不限制可用集合)disallowed-tools:从可用池移除(下条消息后恢复)allowed-tools 在信任工作区后才生效# 声明具名参数 arguments: filename format # 调用 $ /convert report.md pdf # 正文引用 读 $filename,输出 $format。 未出现的 $ARGUMENTS 会追加末尾。
Eval · 怎么知道写得好
收集一批真实场景 prompt 与期望行为。
每个 prompt 在全新会话里分别开/关 Skill 跑一遍。
对比结果,定位 description 与指令的缺口。
用 skill-creator 插件跑评测、打分、做 A/B 版本对比。
/plugin install skill-creator@claude-plugins-official
Ship · 交付与心得
.claude/skills/ 到版本控制~/.claude/skills/ 自用disable-model-invocation 防误触发Takeaways · 带走这四点
事实进 CLAUDE.md,流程沉淀成 Skill,渐进式披露省钱。
建目录、写 SKILL.md、测试,热更新当轮生效。
写清「做什么 + 何时用」,决定自动触发是否准。
动态注入带数据、fork 隔离跑、基线对比迭代。
现在去写你的第一个 SKILL.md 吧。