怎么写一个 Codex 技能:SKILL.md 必填字段与目录结构

Codex 技能的载体简单得很:一个目录,一个 SKILL.md。真正要花心思的,是那句触发条件。

机械手书写流程卡片示意插画

最小能跑的形态

一个技能目录,里面至少得有 SKILL.md。剩下的目录都是可选的。

scripts 放可执行脚本。references 放文档参考。assets 放模板和资源。agents/openai.yaml 放展示信息和依赖声明。

SKILL.md 头部有两个字段必须写:name 和 description。

description 别当成功能简介写。它要交代的是两件事:什么情况下该触发,什么情况下不该触发。隐式调用全靠它判断。

三条建法

第一条,录一遍。你已经会干这件事,演示比描述省劲,就用 Record & Replay。它把你的操作录下来,检查步骤,起草成一个可复用的技能。

第二条,让它问。内置创建器 $skill-creator,会依次问你三件事:这个技能做什么,什么时候该触发,是纯指令还是带脚本。纯指令是默认项。Codex 里用 $skill-creator 调用,ChatGPT Work 里用 @skill-creator。

第三条,手写。建目录,放 SKILL.md,写上 name 和 description,后面跟指令正文。Codex 会自动发现新增的技能。

两种触发方式

显式调用:在 CLI 或者应用里用 /skills 选,或者在提示词里写 $skill-name。

隐式调用:Codex 按 description 判断这次任务要不要用这个技能。靠描述匹配,所以描述得简洁,边界要清楚。关键用例和触发词放前面,描述被缩短的时候,前面那句话决定它还能不能匹配上。

现成的精选技能也能装

用 $skill-installer。比如装 linear,就写 $skill-installer linear。也可以让它从别的仓库下载技能。装完自动发现,没立刻出现就重启。

不想删,只想停

在 ~/.codex/config.toml 里加一条 [[skills.config]],写上 SKILL.md 的路径,配 enabled = false。改完重启 Codex 生效。技能还在硬盘上,只是不再被调用。

要给别人用,打包成插件

技能适合本地开发和仓库内部。想分发给别人,想把几个技能打包发布,想跟应用一起交付,就打包成插件。插件能装一个或多个技能,也能带应用映射、MCP server 配置和展示资源。

写的时候记住几条

一个技能只干一件事。职责越单一,触发越准。

除非确实要确定性行为或者外部工具,优先写指令,别急着上脚本。

步骤用祈使句,输入和输出写清楚。

拿真实提示词去测 description。该触发的时候触发,不该触发的时候保持沉默,两头都要测。