Skill 真正开始体现价值,往往不是它会不会说,而是它能不能把说明、脚本、模板和参考资料组织成一套稳定协作的工作包。很多自动化流程一开始失败,不是模型不理解业务,而是所有东西都混在一个文件里:流程写在正文里,模板也写在正文里,验证命令还是写在正文里。这样一来,说明越来越长,维护越来越难,模型还容易抓错重点。把不同材料拆层,是让 Skill 变可靠的重要一步。
核心结论:主说明负责路由,脚本负责确定性,模板负责统一输出,参考资料负责长上下文
OpenAI 当前 Build skills 文档明确把 Codex Skill 写成 SKILL.md 加可选的 scripts/、references/、assets/。这意味着最稳的做法不是把所有规则塞进主文件,而是让主说明只负责“什么时候触发、先做什么、最后交付什么”,再把确定性动作和长背景放到各自目录里。
适用人群与准备条件
这篇文章适合已经写过基础 Skill、现在想把它做得更稳的人,尤其适合内容发布、代码审查、数据整理这类既有固定步骤、又要保持输出格式的任务。准备条件是:你已经知道这个任务会反复发生,并且能区分哪些步骤属于确定性动作,哪些只是语言组织。下面示例以 Codex 的官方目录结构为准,不把 Claude Code 的目录或语法混进来。
先把 4 类材料的职责分开
SKILL.md:说明什么时候触发、先后顺序、限制和验收标准。scripts/:运行验证、生成、中间处理等确定性动作。assets/:放模板、样板文件、输出骨架。references/:放长规范、术语表、案例和补充说明。
这样拆分后,模型不必每次一开始就读完全部背景,而是先根据主说明找到正确路线,再按需要读取参考资料或运行脚本。
实际使用示例
content-audit-skill/
SKILL.md
scripts/validate.ps1
assets/report-template.md
references/editorial-rules.md一个可直接照做的 SKILL.md 路线可以写成:先读 references/editorial-rules.md,再运行 scripts/validate.ps1,最后按 assets/report-template.md 输出结果。对应的 PowerShell 校验脚本可以是:
param([string]$Target = ".")
Get-ChildItem -Path $Target -Recurse -Filter *.md |
Select-String -Pattern 'TODO|FIXME' -CaseSensitive这段示例适合 Windows PowerShell,重点不是脚本有多复杂,而是把“确定性检查”从提示文字里抽出来,让 Skill 只负责决定什么时候跑它。模板文件则只保留骨架,例如标题、问题列表、修复建议和结论四段,避免正文结构每次漂移。
怎么判断该放脚本、模板还是参考资料
凡是机器执行一定比语言描述更稳定的动作,就放脚本;凡是你希望每次输出长得都差不多的骨架,就放模板;凡是重要但不是每次都要读完的长说明,就放参考资料。这个判断标准越清楚,Skill 越容易维护。反过来,如果你把模板写成半篇正文、把脚本写成模糊业务判断、再把所有规范都塞进主文件,代理很快就会迷路。
常见错误、限制和避坑
- 把所有规范都塞进
SKILL.md,结果主文件失去可读性。 - 让脚本承担含糊的业务判断;脚本更适合确定性检查。
- 模板写得过满,最后变成半篇固定正文。
- 把别的平台的 Skill 语法直接搬进 Codex 目录使用。
最后建议:先小范围试运行,再放大
无论你现在看到的是概念解释、目录结构、安装方法还是排查思路,真正落地时都建议先选一个低风险、小范围、可回滚的任务试运行。先把输入样本、执行步骤、关键命令、最终结果和失败情况记录下来,再回头看哪些规则是稳定的、哪些描述还太宽、哪些动作应该交给脚本或工具。这样做的好处是,你不会因为第一次就追求完整而把流程做得过重,也不会在边界还没摸清时过早共享给团队。
如果试运行期间仍然需要频繁口头补充,说明这部分知识还没有真正沉淀进正文。等一次小范围试运行已经能稳定复现同样结果,再把它扩展到更多目录、更多同事或更多系统,并补上禁用、回滚、验收和来源更新规则。对 Skill、MCP 和自动化来说,最省时间的路线通常不是一开始就做大,而是先做小、做稳、保留证据,再逐步放权。
相关阅读
总结
Skill 能调用脚本、模板和参考资料,真正意义不是“功能更多”,而是把不同行为放到最合适的位置:让说明负责决策,脚本负责确定性动作,模板负责格式一致,参考资料负责长上下文。边界一清楚,自动化流程就会稳很多。

