| name | skill-master |
| description | 做 skill(Claude Code 技能)相关的工作时进入——从零写一个新 skill、调优已有 skill、把反复使用的流程沉淀成 skill、或者在 skill 不触发 / 乱触发时修 description。也能读自己的文件优化自己。用户说"帮我写个 skill / 做个技能 / 优化 skill / 调 description / 这个 skill 不触发 / skill-master 优化下自己 / 把这段流程做成 skill"时都进来。 |
skill-master
0. 读完这一节你要做什么
先搞清楚用户现在处于三种场景里的哪一种,然后跳到对应小节:
- 要做一个新的 skill → 读 §2 "创建新 skill"
- 已有 skill 要改(描述不触发、行为不对、该拆文件了) → 读 §3 "优化已有 skill"
- 用户让你优化 skill-master 自己 → 读 §4 "自我优化"
如果判断不出来,就问一句。不要靠猜。
§1 是 skill 的心智模型,任何分支都要熟,但不用每次都重新读——只在你对某个概念把不准时回来翻。
1. 心智模型:一个 skill 到底是什么
一个 skill 是 <skill-name>/SKILL.md,外加同目录下的可选辅助文件。Claude Code 启动时把所有 skill 的名字 + description 收进上下文,Claude 读到用户问题后自己决定要不要拉某个 skill 的正文进来。用户也可以 /skill-name 直接触发。
关键是"渐进加载"——description 始终在上下文(贵),SKILL.md 正文只在触发时进来(触发才花钱),辅助文件只在 SKILL.md 里提到、Claude 判断要看时才读(几乎免费,直到要用)。所以写 skill 最贵的是 description 的每个字,最便宜的是 reference/ 里面的长文。这决定了怎么分配内容:description 像广告语,正文像说明书首页,reference 像附录。
一次会话里一个 skill 只会被加载一次——它作为一条消息进来之后就一直留着,不会随着对话重读。所以里面要写的是"整段任务期间都成立的原则",不是"这一步做完就扔掉的步骤"。
SKILL.md 的构造
---
name: my-skill # 小写、连字符、<=64 字符;不写就用目录名
description: 一句话说清楚做什么 + 什么时候用 # 关键字段
---
正文(Markdown)
frontmatter 里实际会用到的字段(其他的用到再查 reference/anatomy.md):
| 字段 | 什么时候写 |
|---|
description | 永远写。Claude 靠这个决定要不要拉你进来 |
when_to_use | description 塞不下更多触发语时用,和 description 拼起来共享 1536 字符上限 |
argument-hint | skill 需要参数时,给用户看 autocomplete 提示 |
|