对于skill,我们真的理解透彻了吗?

大家可以测测这道题:一个agent启动时,系统提示词里[立即]加载的是skill的哪一部分?
A. SKILL.md的完整正文
B. 所有已安装skill的name和description
C. 被触发的那个skill的frontmatter
D. 当前项目目录下的skill列表

很多人第一次接触skill,会把它理解成[一条保存下来的复杂提示词]。这个理解不完全错,但它会让我们写出糟糕的skill。

你是否认同这个观点:skill不是一个提示词,而是一个文件夹。

这句话不是我说的,Claude Code团队在内部跑了几百个skill之后总结的,原话是:You should think of the entire file system as a form of context engineering and progressive disclosure.

翻译过来就一句话:整个文件系统,本身就是上下文工程(context engineering)。

agent启动的时候,我们可能已经装了几十个skill,如果把每个skill的完整内容都塞进上下文,上下文窗口会立刻爆掉。skill的设计核心:把信息分了[三层],按需加载,也就是大家熟知的渐进式披露(progressive disclosure)。

第一层,元数据层:每个skill只有name和description进入系统提示词,启动就加载;

第二层,指令层。SKILL.md的正文,命中了才加载,建议控制在5000个token以内;

第三层,资源层。references、scripts、assets,正文里引用了才加载,这一层的容量实际上无上限。

大伙发现没有,[skill里写的每一个字,都不是平等的]:
1. description里的内容,永远在线;
2. 正文里的内容,触发才占地方;
3. references里的内容,按需出现。

所以,写好skill的第一性原理,不是写得全,而是内容放得对。

限于1000字限制,这里不再展开。

节后我准备了一场直播:《如何30分钟写出一个好skill》。分享自己写skill的一些心得,以及自己对AI的一些思考。

欢迎预约,直播间不见不散。