首页 › LLM大语言模型 › Codex专栏 › Codex Skills › Codex Skills 学习手册

Codex Skills 学习手册

​

从零开始掌握 Codex 技能系统——把重复工作转化为可复用的自动化工作流​

​

生成日期:2026‑07‑01​

​

​

阅读说明​

本书面向已经掌握 Codex 基础操作、希望进一步提升开发效率的读者。全书采用案例驱动方式,每章都包含学习目标、操作案例、练习、检查清单和常见坑。Skills(技能)是 Codex 最强大的功能之一——它让你可以把常用的开发流程、项目规范、测试脚本等内容封装成可重复调用的模块,从此告别重复输入相同指令的烦恼。简单理解:Prompt 只能解决一次问题,而 Skill 可以永久复用解决方案。​

​

​

总目录​

第一部分:认识 Skills​

第 1 章:什么是 Codex Skills ​

第 2 章:Skills 的工作原理——渐进式披露 ​

​

第二部分:Skills 的结构与存储​

第 3 章:Skill 的目录结构 ​

第 4 章:Skill 的存储位置与作用域 ​

​

第三部分:创建你的第一个 Skill​

第 5 章:使用 Skill Creator 创建 ​

第 6 章:手动创建 Skill(推荐方式) ​

第 7 章:实战:从零创建一个 XSS 漏洞检测 Skill ​

​

第四部分:Skills 的调用与使用​

第 8 章:显式调用与隐式调用 ​

第 9 章:Skills 的管理与维护 ​

​

第五部分:高级技巧与最佳实践​

第 10 章:编写高质量 SKILL.md 的核心原则 ​

第 11 章:Skill 与 Plugin 的关系 ​

第 12 章:团队协作与知识沉淀 ​

​

第六部分:常见问题与排障指南​

第 13 章:常见问题与排障指南 ​

​

​

第一部分:认识 Skills​

第 1 章:什么是 Codex Skills​

1.1 官方定义​

Codex Skill 是一个封装了可复用工作流的文件夹。一个 Skill 可以包含指令、参考资料、脚本、模板文件以及 MCP 工具依赖,然后统一打包给 Codex 使用。​

Skills 是模块化的、自包含的文件夹,通过提供专业知识、工作流和工具来扩展 Codex 的能力。可以把 Skills 理解为特定领域或任务的“入职指南”——它们将 Codex 从通用型 Agent 转变为配备程序性知识的专用 Agent。​

1.2 Skills 的核心价值​

•

扩展能力:为 AI 代理注入特定领域的专业知识​

•

提升效率:避免重复劳动,节省时间​

•

保持上下文干净:只在需要时加载相关内容,减少 token 消耗​

•

标准化输出:确保技能执行结果可复用、可预期​

•

团队共享:技能包可上传 Git,全员同步更新,统一开发标准​

1.3 Skill 能做什么?​

前端开发 Skill 可以包含 Vue 开发规范、Pinia 状态管理规范、Element Plus 组件规范、Git 提交规范。当你对 Codex 说“创建一个用户管理页面”时,它会自动按照团队规范输出代码。​

运维 Skill 可以包含 Docker 部署流程、Nginx 配置规范、PM2 启动命令、故障排查步骤。输入“部署 Node 项目”,Codex 即可自动执行对应流程。​

检查清单​

我理解了 Skill 的本质是“可复用的工作流封装”​

我能区分 Skill 与普通 Prompt 的区别(复用 vs 一次性)​

我知道 Skill 可以包含脚本、模板、参考文档等资源​

​

常见坑​

•

❌ 把 Skill 当成普通文档:Skill 必须放在正确的目录并遵循 YAML 格式,否则不会被识别。​

•

❌ 忽略团队共享:个人 Skill 放在用户级目录,团队 Skill 必须放在仓库级 .agents/skills/ 下。​

​

​

第 2 章:Skills 的工作原理——渐进式披露​

2.1 什么是渐进式披露​

Codex Skills 采用 渐进式披露(Progressive Disclosure) 机制来优化性能和资源使用:​

•

启动阶段:Codex 启动时,仅加载所有技能的名称和描述(即元数据),不加载完整内容。​

•

按需加载:当你的任务匹配某个技能时,Codex 才会完整加载其 SKILL.md 文件。​

•

高效运行:仅在实际使用时消耗 tokens,保持上下文简洁、响应迅速。​

​

2.2 为什么这种设计很重要​

这种机制的核心优势在于——Codex 只注入技能的 name、description 和文件路径到运行时上下文,正文内容始终留在磁盘上。这意味着你可以在技能中写很长的指令,而不会占用宝贵的上下文窗口。​

​

检查清单​

我理解了 Skills 不会在启动时全部加载​

我知道技能描述(description)是路由的关键​

我明白长指令可以放在 SKILL.md 正文,不影响上下文占用​

​

常见坑​

•

❌ 认为技能加载越多越慢:实际上只加载元数据,不影响启动速度。​

•

❌ 忽略 description 的作用:描述不清晰会导致隐式调用不触发。​

​

​

​

第二部分:Skills 的结构与存储​

第 3 章:Skill 的目录结构​

3.1 标准目录布局​

一个标准的 Skill 目录如下:​

​

代码块​

Plain Text

my-skill/​

├── SKILL.md # 必需:主指令文件​

├── scripts/ # 可选:可执行脚本(Python、Shell等)​

├── references/ # 可选:参考文档、模板​

├── ../assets/ # 可选:图片、配置文件等资源​

└── agents/​

└── openai.yaml # 可选:UI元数据与依赖声明​

​

​

3.2 各目录用途说明​

​

​
文件/目录​
​
​
是否必须​
​
​
说明​
​
​
SKILL.md​
​
​
✅ 必需​
​
​
包含 YAML 元数据(name、description)和 Markdown 指令​
​
​
scripts/​
​
​
可选​
​
​
存放可执行代码(Python、Bash 等),供 Skill 调用​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​

​

3.3 命名规范​

Skill 目录名使用小写 kebab-case(如 xss-scanner、react-ts-init)。​

检查清单​

我的 Skill 目录包含 SKILL.md 文件​

目录名符合 kebab-case 规范​

如需要,我已创建 scripts/、references/ 等子目录​

​

常见坑​

•

❌ 将 SKILL.md 放在错误的位置:必须在 Skill 根目录,不能在子文件夹。​

•

❌ 目录名含大写或空格:会导致识别失败。​

​

​

​

​

第 4 章:Skill 的存储位置与作用域​

​

4.1 不同层级的存储路径​

​

Skills 可以存放在多个层级,适用于不同范围的使用场景:​

​

​

​
作用域​
​
​
路径​
​
​
说明​
​
​
系统级​
​
​
/etc/codex/skills/​
​
​
Codex 内置的默认技能,所有用户可用​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​
​

​

​

​

⚠️ 注意:在旧版 Codex 中,Skills 存放在 ~/.codex/skills/ 目录下。新版本遵循 Agent Skills 开放标准,使用 .agents/skills/ 路径。如果两个技能同名,Codex 不会合并它们,两者都会出现在技能选择器中。​

​

​

4.2 如何启用 Skills​

​

Skills 功能默认处于实验阶段。需要在配置文件中启用:​

​

在 ~/.codex/config.toml 中添加:​

​

代码块​

TOML

[features]​

skills = true​

​

​

然后重启 Codex。也可以单次运行时启用:​

​

代码块​

Bash

codex --enable skills​

​

​

检查清单​

​

我已确认 Skills 功能已启用(config.toml 或启动参数)​

我知道不同作用域路径的优先级​

我选择了适合当前使用场景的存储位置​

​

常见坑​

​

•

❌ 技能放错路径:例如将用户级技能放入仓库级,导致无法跨项目使用。​

•

❌ 忘记重启 Codex:配置更改或新增 Skill 后必须重启。​

​

​

​

​

第三部分:创建你的第一个 Skill​

​

第 5 章:使用 Skill Creator 创建​

​

5.1 Skill Creator 是什么​

​

Codex 提供了内置的 Skill Creator 工具,可以通过交互式问答快速创建技能。​

​

5.2 操作步骤​

​

启动 Codex​

输入 $,选择 Skill Creator​

输入技能名称​

输入主指令(instruction)​

Codex 会通过交互式问答帮你完善技能结构​

​

​

⚠️ 注意:如果生成的技能未保存在正确的 Skills 目录下,你需要手动将其移动到对应位置。​

​

​

检查清单​

​

我尝试使用 Skill Creator 生成了一个简单技能​

我知道生成后的文件默认位置​

我能手动移动 Skill 到目标目录​

​

常见坑​

​

•

❌ 依赖 Skill Creator 一步到位:生成的技能可能不完善,需要手动调整。​

•

❌ 未检查保存路径:可能默认保存在错误的位置。​

​

​

​

​

第 6 章:手动创建 Skill(推荐方式)​

​

6.1 为什么推荐手动创建​

​

手动创建能让你完全掌控技能结构,适合高级用户,也更容易调试。​

​

6.2 步骤一:创建 Skill 目录​

​

根据你的需求选择作用域,例如用户级技能:​

​

代码块​

Bash

mkdir -p ~/.agents/skills/my-first-skill​

​

​

6.3 步骤二:创建 SKILL.md 文件​

​

​

代码块​

Markdown

---​

name: my-first-skill​

description: 简短描述这个技能做什么,以及什么时候应该使用它(不超过500字符)​

---​

​

​

​

6.4 SKILL.md 的格式要求​

​

•

必须包含 YAML frontmatter(用 --- 包裹)​

•

name:非空,不超过100字符​

•

description:非空,不超过500字符​

•

正文可以是任意 Markdown 格式​

​

6.5 步骤三:重启 Codex​

​

Codex 会自动检测技能变化。如果更新没有生效,手动重启 Codex。​

​

检查清单​

​

我能够手动创建 Skill 目录和 SKILL.md​

我确保 YAML frontmatter 格式正确​

我重启 Codex 并验证技能已加载​

​

常见坑​

​

•

❌ YAML 格式错误:比如缺少 --- 或冒号后没有空格。​

•

❌ description 超过 500 字符:会被截断,影响路由。​

​

​

​

​

第 7 章:实战:从零创建一个 XSS 漏洞检测 Skill​

​

7.1 需求分析​

​

在日常开发中,你经常需要检查代码中是否存在 XSS(跨站脚本)漏洞。与其每次都手动描述检测规则,不如将其封装成一个 Skill。​

​

触发场景:当用户提到“安全检查”、“XSS”、“漏洞检测”、“代码审计”时,这个 Skill 应该被触发。​

​

7.2 创建 Skill 目录​

​

​

代码块​

Bash

mkdir -p ~/.agents/skills/xss-scanner​

cd ~/.agents/skills/xss-scanner​

​

​

7.3 编写 SKILL.md​

​

​

代码块​

Markdown

​

【XSS检测报告】​

文件:xxx.js​

风险等级:高/中/低​

问题描述:...​

建议修复方案:...​

​

代码块​

Plain Text

​

## 常见 XSS 模式​

- `element.innerHTML = userInput` → 高风险​

- `document.write(userInput)` → 高风险​

- `eval(userInput)` → 高风险​

- `element.textContent = userInput` → 安全​

- 使用框架(React/Vue)的自动转义 → 默认安全​

​

​

7.4 验证 Skill​

​

重启 Codex 后,输入 /skills 查看技能列表,确认 xss-scanner 已加载。然后测试:​

​

代码块​

Plain Text

请用 xss-scanner 检测当前项目的 XSS 漏洞​

​

​

检查清单​

​

我成功创建了 XSS 检测 Skill​

我验证了技能可以被显式调用​

我尝试用隐式触发(如“做安全检查”)测试了自动匹配​

​

常见坑​

​

•

❌ 检测规则过于宽泛:导致大量误报,应聚焦于典型危险模式。​

•

❌ 未提供报告格式:输出不结构化,难以后续处理。​

​

​

​

​

第四部分:Skills 的调用与使用​

​

第 8 章:显式调用与隐式调用​

​

8.1 显式调用(Explicit Invocation)​

​

在提示中直接引用技能名称。在 CLI/IDE 中,使用以下方式:​

​

•

输入 $,然后选择要使用的 Skill​

•

在消息中使用 $ 格式,例如 $xss-scanner​

•

在 TUI 中使用 /skills 命令浏览和插入技能​

​

8.2 隐式调用(Implicit Invocation)​

​

当你的任务与技能的 description 匹配时,Codex 可以自动选择并调用该技能。​

​

由于隐式匹配依赖于 description 字段,编写描述时要清晰界定技能的适用范围和边界。​

​

示例:如果技能描述是“对代码进行XSS跨站脚本漏洞检测。当用户提到安全检查、XSS、漏洞扫描、代码审计时使用此技能”,那么当你说“帮我做一下安全检查”时,Codex 可能会自动调用这个技能。​

​

检查清单​

​

我能够使用 $ 选择器显式调用技能​

我理解隐式调用依赖 description 的匹配​

我会在描述中明确触发条件​

​

常见坑​

​

•

❌ 过度依赖隐式调用:有时描述不够精准,自动匹配失败,此时应显式调用。​

•

❌ 描述写得太泛:导致在不需要的场景也被触发。​

​

​

​

第 9 章:Skills 的管理与维护​

​

9.1 查看已安装的 Skills​

​

在 Codex 会话中输入 /skills,会列出所有可用的技能。​

​

9.2 更新 Skill​

​

直接修改 SKILL.md 文件即可。Codex 会自动检测变化。如果变化未生效,重启 Codex。​

​

9.3 删除 Skill​

​

删除对应的 Skill 目录,重启 Codex 即可。​

​

9.4 安装社区 Skill​

​

Codex 社区有大量现成的 Skills 可供使用:​

​

启动 Codex​

输入 $,选择 Skill Installer​

输入技能名称,或粘贴 GitHub 仓库 URL​

Codex 将自动完成安装​

重启 Codex(安装完成后务必重启,否则新技能不会生效)​

​

也可以从 GitHub 上的 Skill 仓库(如 awesome-codex-skills)手动下载 Skill 目录,放入对应的 Skills 路径。​

​

检查清单​

​

我掌握了 /skills 查看技能列表​

我知道如何更新和删除技能​

我会使用 Skill Installer 安装社区技能​

​

常见坑​

​

•

❌ 更新后未重启:部分更新需要重启才能生效。​

•

❌ 社区技能未校验安全性:安装前应审查内容,避免恶意代码。​

​

​

​

​

第五部分:高级技巧与最佳实践​

​

第 10 章:编写高质量 SKILL.md 的核心原则​

​

10.1 描述即路由​

​

Skill 的 description 是路由的关键。它不是营销文案,而是决策边界。​

​

每个 SKILL.md 的 description 都应该回答:​

•

什么时候应该使用这个技能?​

•

什么时候不应该使用这个技能?​

​

好例子:​

​

代码块​

Plain Text

description: 对JavaScript/TypeScript代码进行XSS漏洞检测。当用户明确提到安全检查、XSS、漏洞扫描时使用。不适用于其他类型的安全审计。​

​

​

坏例子:​

​

代码块​

Plain Text

description: 一个很棒的安全工具​

​

​

10.2 保持简洁(Concise is Key)​

​

上下文窗口是公共资源。Skills 与系统提示、对话历史、其他技能的元数据以及用户请求共享上下文窗口。​

​

核心原则:​

•

默认假设:Codex 已经很聪明了​

•

只添加 Codex 尚未掌握的信息​

•

挑战每一条信息:“Codex 真的需要这个解释吗?”​

•

优先使用简洁的例子,而非冗长的解释​

​

10.3 设置适当的自由度​

​

根据任务的脆弱性和可变性匹配具体程度:​

​

​

​
自由度​
​
​
适用场景​
​
​
示例​
​
​
高自由度(文本指令)​
​
​
多种方法都有效,决策依赖上下文​
​
​
“按照团队规范重构这段代码”​
​
​
中自由度(伪代码或带参数的脚本)​
​
​
存在首选模式,允许一定变化​
​
​
“使用 ESLint 规则检查代码”​
​
​
低自由度(特定脚本,少量参数)​
​
​
操作脆弱易错,一致性至关重要​
​
​
“执行这个部署脚本”​
​

​

​

10.4 内容分层存放​

​

不要把所有内容都塞进 SKILL.md:​

​

•

SKILL.md:只保留核心的程序性指令和工作流指导​

•

references/:存放详细的参考资料、规范、示例​

•

../assets/:存放模板、配置文件等​

​

这样 Codex 只在需要时才加载 reference 文件,保持上下文高效。​

​

10.5 添加负面示例减少误触发​

​

在 description 或指令中明确说明“什么时候不应该使用这个技能”,可以有效减少误触发。​

​

检查清单​

​

我的技能描述清晰且明确触发边界​

我尽量精简 SKILL.md 正文,将参考资料移入 references/​

我根据任务脆弱性设置了合适的自由度​

​

常见坑​

​

•

❌ 描述过于简短或模糊:导致隐式调用失败。​

•

❌ 把大量示例写进 SKILL.md:占用上下文,应放到 references/ 按需引用。​

​

​

​

​

第 11 章:Skill 与 Plugin 的关系​

​

11.1 本质区别​

​

很多人容易混淆 Skill 和 Plugin:​

​

​

​
​
​
​
本质​
​
​
解决的问题​
​
​
Skill​
​
​
工作流​
​
​
“怎么做”​
​
​
Plugin​
​
​
安装包​
​
​
“如何分发”​
​

​

​

11.2 推荐流程​

​

​

代码块​

Plain Text

​

​

Skills 是工作流的创作格式,Plugins 是可复用技能和应用的安装分发单元。先用 Skill 设计工作流本身,然后当你想让其他开发者安装时,再将其打包为 Plugin。​

​

检查清单​

​

我能区分 Skill 和 Plugin 的职责​

我知道先写 Skill 再打包为 Plugin 的流程​

​

常见坑​

​

•

❌ 直接开发 Plugin 而忽略 Skill 设计:导致工作流未经充分验证。​

•

❌ 混淆两者概念:在交流或文档中错误混用术语。​

​

​

​

​

第 12 章:团队协作与知识沉淀​

​

12.1 共享 Skills​

​

Skills 让团队能够沉淀组织内部知识,并将其转化为可复用、可共享的工作流。​

​

仓库级 Skills:将 Skills 提交到 Git 仓库的 .agents/skills/ 目录下,团队成员拉取代码后即可使用。​

​

团队级 Skills 库:建立统一的团队 Skills 仓库,通过 Skill Installer 或 npm 包分发。​

​

12.2 典型团队用例​

​

Skills 帮助 Codex 在用户、仓库和会话之间保持一致的行为——这在你想自动应用标准约定和检查时特别有用。​

​

典型场景:​

•

代码审查规范 Skill​

•

项目初始化 Skill(统一技术栈和配置)​

•

Git 提交规范 Skill​

•

部署流程 Skill​

​

检查清单​

​

我了解如何将 Skill 分享给团队成员​

我考虑过为团队建立公共 Skill 仓库​

我明白统一 Skill 能提高团队一致性​

​

常见坑​

​

•

❌ 未将 Skill 纳入版本控制:导致团队成员各自为政。​

•

❌ Skill 缺乏文档:团队成员不知道如何使用或修改。​

​

​

​

​

第六部分:常见问题与排障指南​

​

第 13 章:常见问题与排障指南​

​

13.1 Skills 没有加载​

​

可能原因:​

•

未启用 Skills 功能:检查 config.toml 中 skills = true​

•

存放路径不正确:确认 Skill 在正确的 .agents/skills/ 或 ~/.codex/skills/ 目录下​

•

未重启 Codex​

​

解决方案:检查配置,移动 Skill 到正确位置,重启。​

​

13.2 SKILL.md 格式错误​

​

可能原因:​

•

YAML frontmatter 缺失或格式错误​

•

name 或 description 字段为空或超长​

•

文件编码问题(如 UTF-8 with BOM)​

​

解决方案:检查 SKILL.md 格式,确保以 --- 开头和结尾,修复后重启 Codex。​

​

13.3 隐式调用不生效​

​

可能原因:​

•

description 不够清晰,未能匹配用户意图​

•

Skill 的 agents/openai.yaml 中 allow_implicit_invocation 设置为 false​

​

解决方案:优化 description,明确触发条件和使用边界。​

​

13.4 Symlink 不被识别​

​

Codex 会跳过符号链接(symlink)。如果 Skills 是符号链接,可能不会被加载。​

​

解决方案:使用实际目录而非符号链接。​

​

13.5 技能加载失败排查清单​

​

技能是否有明确的触发条件和预期结果?​

必需的文件是否存在,路径是否有效?​

引用的脚本/资源/参考文件是否实际存在于包中?​

操作是否默认安全(超时、限制、约束)?​

输出格式是否足够明确以供下游使用?​

​

检查清单​

​

我熟悉常见排障步骤​

我知道如何查看日志或启用调试模式(如 --debug)​

我能够自行诊断大部分加载问题​

​

常见坑​

​

•

❌ 排障时忘记重启:很多问题在重启后自动解决。​

•

❌ 未检查配置文件语法:toml 格式错误会导致功能不生效。​

​

​

​

​

本书各章既可顺序学习,也可按需跳读。建议初学者从第 1 章到第 7 章顺序学习,掌握基础后再根据实际需求阅读高级章节。每章末尾的“检查清单”和“常见坑”可以帮助你快速验证学习成果、规避典型错误。​