适合谁读:经常让 Codex 做发布检查、代码评审、文档更新或固定格式报告,却仍在每次对话里复制长提示词的开发者。核心结论是:当一项工作不仅要说明“做什么”,还要稳定复用步骤、参考资料和校验方式时,应该把它整理成 Skill;但项目规范、外部系统连接和可分发能力分别有更合适的载体。
本文更新:2026 年 7 月 29 日。文中能力与路径依据当日 OpenAI 官方文档整理,不涉及套餐或价格。
为什么长提示词不等于可靠流程
一段提示词也能写出“先检查、再修改、最后测试”,但随着要求增加,它很快会混入命令、例外、模板和历史经验。每次复制都会产生新版本:有人漏掉回滚要求,有人忘记读取现有内容,还有人把只适用于某个项目的路径带到另一个仓库。
Skill 的价值不是让提示词更长,而是把“完成这类任务的方法”变成独立、可复用且可维护的工作单元。OpenAI 官方文档将 Skill 定义为由 SKILL.md 加可选脚本、参考资料和资源组成的目录。Codex 先看到名称和描述,只有决定使用时才加载完整说明,需要时再读取引用文件或运行脚本。这种渐进式加载能让复杂流程保持可发现,同时避免每轮都占用大量上下文。
先选对载体:Skill 不是万能配置
动手前,先判断信息应该放在哪里:
- 当前任务提示:只对这一次有效的目标、输入和限制。
AGENTS.md:某个仓库长期适用的编码规范、常用命令和验收要求。
- Skill:可被反复调用的任务流程,例如发布检查、故障诊断或周报生成。
- Plugin:需要让别人安装、组合多个 Skill,或与连接器一起分发的能力包。
- MCP:需要读取实时外部数据、认证或执行受控外部操作时使用。
一个实用判断是:如果内容回答“这个项目一直遵守什么”,放进 AGENTS.md;如果回答“遇到这类任务按什么步骤做”,更适合 Skill。不要把令牌、固定密码或个人机器路径写进任何 Skill;外部系统的认证和实时数据应交给受控工具或 MCP。
最小 Skill 只需要一个文件
最小目录如下:
release-check/
└── SKILL.md一个可用的起点可以写成:
---
name: release-check
description: 检查待发布版本的变更、测试、敏感信息和回滚条件。用于用户要求发布前验收或生成发布清单时。
---
1. 读取仓库规范、当前分支和未提交改动。
2. 汇总本次版本范围内的实际变更。
3. 运行与变更直接相关的测试和静态检查。
4. 检查凭据、个人路径和不可逆命令。
5. 输出通过项、失败证据、剩余风险和回滚方式。
6. 未满足验收条件时停止,不执行发布。name 要稳定、简短;description 不只是简介,更承担触发匹配的职责。应把典型用户意图、适用范围和不适用边界尽量写在前面。不要使用“帮助处理项目”这类宽泛描述,否则它可能在不相关任务中触发,也可能在真正需要时无法被识别。
把复杂内容按需拆开
流程成熟后,可以扩展目录:
release-check/
├── SKILL.md
├── scripts/
│ └── verify.sh
├── references/
│ └── release-policy.md
└── assets/
└── report-template.md主文件保留决策顺序、输入输出和停止条件;长篇制度放进 references/;固定报告骨架放进 assets/;只有需要确定性检查时才增加脚本。脚本应默认只读或在明确范围内写入,打印可审计结果,失败时返回非零状态,并避免把 git add .、递归删除、生产部署等高风险动作藏在内部。
官方最佳实践也强调优先使用说明,只有确定性行为或外部工具调用确有必要时再写脚本。这样更容易审查,也能防止流程被某个环境或依赖版本锁死。
让触发准确,而不是越多越好
Codex 可以显式调用 Skill,也能在任务与 description 匹配时隐式选择。CLI 或 IDE 中可通过 $skill-name 明确指定;显式调用适合发布、迁移等高风险流程,因为使用者能确认本轮采用哪套规则。
隐式触发适合边界清晰、风险较低的重复任务。验证时至少准备三组提示:
- **应该触发:**“请按发布门禁检查这个版本。”
- **不该触发:**“解释一下语义化版本是什么。”
- **边界情况:**“只总结变更,不运行测试也不发布。”
如果第三类提示总被误判,先修改描述中的范围和否定条件,而不是不断往正文追加规则。Skill 数量很多时,名称与描述还会共同影响初始发现效率,所以每个 Skill 应只服务一个可识别目标。
用一次真实任务完成验收
创建完成不代表工作流可靠。最好选一项已经成功做过的真实任务,用 Skill 重新执行,并检查:
- 是否读取了正确输入,而不是凭空补全;
- 是否在修改前识别现有文件和未提交变更;
- 命令是否安全、范围明确且可回滚;
- 遇到网络、权限或测试失败时是否停止;
- 输出是否包含执行证据与未验证部分;
- 换一个相似项目时,是否还残留个人路径和项目专属假设。
可以先做“影子运行”:只让 Skill生成计划和检查报告,不允许提交、发布或删除。确认步骤完整后,再逐步开放工作区写入;生产发布仍建议保留草稿回读、测试门槛或人工确认。
从个人工作流走向团队能力
官方文档建议,个人跨项目使用的 Skill 放在用户级目录,仓库专属 Skill 放在项目的 .agents/skills 中并随代码审查。团队采用时,应像维护代码一样维护它:说明负责人、输入输出、依赖版本和验证样例;流程变化通过 Diff 审核,不要让聊天中临时口头规则长期游离在 Skill 之外。
当一个流程需要被更多人安装、包含多个相关 Skill,或必须与外部连接器共同交付时,再把它打包成 Plugin。这样能保持职责清晰:Skill 描述“怎样完成”,Plugin 负责“怎样分发”,MCP 负责“怎样安全连接实时系统”。
一份可直接使用的收尾清单
发布或共享 Skill 前,逐项确认:
- 一个 Skill 只对应一个明确目标;
description写清触发场景和边界;- 主流程包含输入、步骤、输出、验证和停止条件;
- 参考资料、模板与脚本按需加载;
- 不包含令牌、个人路径和真实内部地址;
- 高风险动作有确认或草稿门禁;
- 用正例、反例和边界例测试触发;
- 用真实任务验证输出证据与失败路径。
真正好用的 Skill 不追求“覆盖所有事情”,而是把一个经常重复、容易漏步的流程做窄、做稳、做得可以审查。先从你最近复制过三次的提示词开始,通常就是最值得封装的第一个工作流。