11.1 一段让我顿悟的对话
跟一个朋友聊 AI 工具,他说:"Codex 我也用,就是每次都要写一长串 prompt 才能得到想要的结果,烦。"
我问:"那你为什么不把这串 prompt 存起来?"
他说:"存哪儿?记事本?每次复制粘贴?"
我说:"不是。Skills。"
他愣了一下:"什么 Skills?"
那一刻我意识到:Skills 是 Codex 里被严重低估的功能。它不只是"存 prompt",而是把你某一类工作的"完整 SOP"——包括 prompt、模板、参考资料、脚本——打包成一个 AI 可以"按需调用"的技能。
学会 Skills,你才真正从"会用 Codex"升级到"用 Codex 改造工作流程"。
11.2 什么是 Skill
一个 Skill 就是一个自包含的"AI 岗位 SOP"。
具体来说:
- 它是一个文件夹
- 里面有一份 SKILL.md(核心指令)
- 可能还有 scripts/(脚本)、references/(资料)、assets/(模板)
- 当 Codex 检测到适合调用这个 Skill 的场景,会自动加载并执行
类比一下:
| 类比 | Skill |
|---|---|
| Word 模板 | 模板只有格式,Skill 有"做事流程" |
| Excel 公式 | 公式只算数字,Skill 能完成完整任务 |
| 工作 SOP 文档 | SOP 给人看,Skill 给 AI 看且自动执行 |
| 代码函数库 | Skill = 自然语言版的"函数库" |
11.3 Skill 跟 AGENTS.md 的关系
很多人困惑:AGENTS.md 和 Skills 有啥区别?
简单记:
- AGENTS.md 管"项目里的所有事"(怎么写代码、用什么工具、什么风格)
- Skill 管"某一类具体任务"(写周报、整理发票、做新闻雷达)
两者不冲突,互相补充:
项目级(AGENTS.md) 任务级(Skills)
┌──────────────┐ ┌──────────────┐
│ 这是什么项目 │ │ 周报 Skill │
│ 用什么技术栈 │ │ 发票 Skill │
│ 什么规范 │ ──→ │ 新闻 Skill │
│ 什么边界 │ │ 评审 Skill │
└──────────────┘ └──────────────┘
背景知识 可调用工具
11.4 Skill 跟 Prompt 模板的关系
很多人把 Skill 误解为"高级版 Prompt 模板"。其实差别不止一个数量级:
| 维度 | Prompt 模板 | Skill |
|---|---|---|
| 形式 | 一段文本 | 一个文件夹 |
| 包含 | 只有指令 | 指令 + 脚本 + 资料 + 模板 |
| 调用 | 复制粘贴 | AI 自动调用 |
| 复用 | 个人用 | 团队共享 |
| 加载 | 全部塞进 prompt | 按需加载(节省 token) |
| 演化 | 散落各处 | 版本化管理 |
最关键是按需加载。系统初期只让 AI 看到 Skill 的"名字 + 一句描述"。当用户提到相关任务时,AI 才"展开"完整内容。这个机制让你拥有上百个 Skills 也不会撑爆 Codex 的上下文。
11.5 一个 Skill 的物理结构
最简单的 Skill 只有一份 SKILL.md:
weekly-report/
└── SKILL.md
完整的 Skill 可能是:
weekly-report/
├── SKILL.md # 核心指令
├── scripts/ # 确定性脚本
│ ├── extract_data.py # 提取本周日志
│ └── format_report.py # 格式化输出
├── references/ # 参考资料
│ ├── 周报示例-good.md
│ └── 周报示例-bad.md
└── assets/ # 模板与素材
└── template.md # 周报模板
SKILL.md 是必须的,其他三个目录都是可选的。
11.6 SKILL.md 的标准结构
头部(YAML Front Matter)
---
name: 周报生成
description: 根据本周工作日志,生成一份结构化的周报草稿
keywords: [周报, 周记, 周总结, weekly, report]
version: 1.2.0
author: cassius
last_updated: 2026-04-19
---
字段说明:
- name:技能名(人话,越具体越好)
- description:一句话说明,Codex 通过这句话判断是否调用此 Skill
- keywords:触发关键词(中英都可)
- version / author / last_updated:元数据
正文(5 个核心部分)
## 何时使用
当用户提到以下场景时调用:
- 写周报 / 周记 / 周总结
- 月度复盘
- 阶段性工作回顾
不调用此 Skill 的场景:
- 写日报(用 daily-report Skill)
- 写月报(用 monthly-report Skill,季度的也用月报)
## 输入
需要从用户处获得:
- 本周日志路径(默认 ~/Documents/work-log/)
- 周报受众(默认"直属经理")
- 是否需要 KPI 数字(默认是)
如果用户没说,主动问。
## 步骤
1. 读取日志目录下本周(周一到周五)的所有 .md 文件
2. 按"完成 / 进行中 / 待办 / 风险"四类提取关键事件
3. 套用 assets/template.md 模板填充
4. 如果用户要 KPI,从 references/kpi-fields.md 找出本岗位常见 KPI 项,请用户填写
5. 生成 weekly-report-YYYY-MM-DD.md 到当前目录
6. 末尾附"下周计划"(基于本周遗留 + 周历)
## 输出
- 文件:weekly-report-YYYY-MM-DD.md
- 格式:Markdown
- 长度:500-800 字
- 风格:客观、简洁、用动词开头
## 验收标准
完成后让用户确认:
- 4 个分区都不为空(如某项确实没有,写"无")
- 无主观情绪化用词("忙死了"、"很累"等)
- 数字有依据(不要瞎编)
- 末尾有"下周计划"
如果用户提出修改,记录到 references/feedback.md 用于后续迭代。
几个写法要点
要点 1:description 写"什么时候调用",不写"做什么"
[差] description: 一个生成周报的工具
[好] description: 根据本周工作日志,生成一份结构化的周报草稿
第一种 Codex 不知道何时该用;第二种"本周日志 + 周报"两个关键词让它一眼看到匹配信号。
要点 2:步骤用"动词开头",AI 才好执行
[差] 周报应该结构化
[好] 1. 读取本周日志
2. 按四类提取
3. 填入模板
4. 生成文件
要点 3:明确"何时不调用"
防止 Skill 被"过度调用"。比如用户说"写月报",不应该调用周报 Skill。
11.7 实战:从零写一个 Skill
我们把"周报生成"从想法做成可用的 Skill。
第 1 步:找一个"重复 3 次以上"的任务
随便找你最近一个月做了 3 次以上的相似任务。比如:
- 每周一次的周报
- 每天一次的日报
- 每次客户咨询的回复模板
- 每次新文章的封面图
我们以"周报"为例。
第 2 步:把任务步骤口述出来
不要先写文档,先口述。打开录音,说一遍你怎么写周报:
我每周五下午写周报。先打开 Obsidian,找到本周的日记,把每天写的事看一遍,挑出主要的几件。然后打开飞书,新建周报文档。我会按"完成、进行中、风险、下周"四块写。完成那块要写 3-5 件,最重要的放第一。每件配上数字依据,不能空说。下周那块要 3 件以内,对应明确的目标。最后发给经理之前自己读一遍,删掉所有"我觉得"、"应该是"这种虚词。
第 3 步:把口述变成 SKILL.md
---
name: 周报生成
description: 根据本周日志,生成一份按"完成/进行中/风险/下周"四块结构化的周报草稿
keywords: [周报, 周记, 周总结, weekly]
version: 1.0.0
---
## 何时使用
用户说"写周报"、"我要写周报"、"帮我整理周报"时调用。
## 输入
- 本周日志路径(默认 ~/Documents/diary/)
- 时间范围(默认本周一到本周五)
如未提供,主动问。
## 步骤
1. 读取日志目录下日期为本周一到本周五的 .md 文件
2. 按"完成 / 进行中 / 风险 / 下周计划"四块提取
3. 完成块:3-5 件,最重要在前,每件附数字依据(无数字时写"已完成")
4. 进行中块:列出 + 当前进度 + 预计完成日期
5. 风险块:列出 + 影响 + 我打算怎么办
6. 下周计划块:≤3 件,对应明确目标
7. 全文删掉主观虚词:"我觉得"、"应该是"、"可能"、"大概"、"差不多"
8. 输出到当前目录 weekly-report-YYYY-WW.md(WW = 周数)
## 输出
- 文件:weekly-report-YYYY-WW.md
- 格式:Markdown
- 长度:300-600 字
- 风格:动词开头、客观、有数字
## 验收
完成后让用户确认:
1. 四块都有内容
2. 完成块每件都有"数字"或"已完成"
3. 没有主观虚词
4. 下周计划 ≤3 件
第 4 步:放到正确的位置
Skills 可以放在三个层级(跟 AGENTS.md 类似):
| 位置 | 范围 |
|---|---|
~/.codex/skills/<skill-name>/ |
全局,所有项目可用 |
<project>/.codex/skills/<skill-name>/ |
项目级 |
<dir>/.codex/skills/<skill-name>/ |
子目录级 |
周报这种通用任务,放全局:
mkdir -p ~/.codex/skills/weekly-report
# 把 SKILL.md 放进去
第 5 步:测试
新开 Codex 会话,说:
帮我写周报
如果 Skill 正确加载,Codex 会回应类似:
好的,我看到有"周报生成"Skill 可以用。
请问:
1. 你的本周日志在哪个目录?(默认 ~/Documents/diary/)
2. 时间范围是本周一到本周五吗?
成功!它已经"知道"用什么 Skill 了。
第 6 步:迭代
第一版 Skill 一般不完美。每次用完想想"这次哪里别扭",更新 SKILL.md。两三个版本就稳定了。
11.8 用辅助文件强化 Skill
只用 SKILL.md 已经能干很多事,但加上辅助文件,Skill 会"更聪明"。
scripts/:确定性的事让脚本做
AI 擅长"理解和创造",但不擅长"精确计算"。比如"算一下本周工作时长",与其让 AI 估算,不如写个脚本:
# scripts/calc_hours.py
import os
from datetime import datetime, timedelta
def calc_weekly_hours(diary_dir):
today = datetime.now()
monday = today - timedelta(days=today.weekday())
total = 0
for day in range(5):
date = (monday + timedelta(days=day)).strftime("%Y-%m-%d")
path = os.path.join(diary_dir, f"{date}.md")
if os.path.exists(path):
with open(path) as f:
content = f.read()
# 简单计算"投入时间"行
for line in content.split("\n"):
if "投入" in line and "小时" in line:
# 解析数字...
...
return total
在 SKILL.md 里调用:
## 步骤
...
3. 运行 scripts/calc_hours.py 算出本周总工时
4. 在周报开头加一行"本周投入:X 小时"
...
references/:领域知识
放一些"AI 不一定知道,但你工作中要的"知识:
references/kpi-fields.md:你公司各岗位的 KPI 字段定义references/team-glossary.md:团队黑话词典references/good-examples.md:好周报的范例references/bad-examples.md:差周报的反例(什么不能写)
SKILL.md 引用:
## 步骤
...
5. 写完后对照 references/good-examples.md 自检
...
assets/:可填充的模板
<!-- assets/template.md -->
# 周报 - {{ week_label }}
## 本周完成
{{ completed_items }}
## 进行中
{{ in_progress_items }}
## 风险
{{ risks }}
## 下周计划
{{ next_week_plans }}
---
本周投入:{{ total_hours }} 小时
SKILL.md 直接说"用 assets/template.md 填充"。
11.9 进阶:Skills 之间的组合
复杂场景,让多个 Skills 配合:
"做下周内容计划" 任务
│
├─→ 调用 weekly-report Skill 拿到本周回顾
├─→ 调用 trend-monitor Skill 拿到行业最新动向
├─→ 调用 content-calendar Skill 排下周日程
└─→ 输出 next-week-plan.md
你不用预先写"组合 Skill"。Codex 会自己根据任务需要,按顺序调用合适的 Skills。
11.10 团队 Skills 库
为什么团队需要
一个人写 10 个 Skills 是个人提效,团队 50 人都用同样的 Skills 是组织提效。后者收益是前者的 50 倍。
怎么搭建团队 Skills 库
方案 1:Git 仓库
建一个 team-skills 仓库,每个 Skill 一个文件夹:
team-skills/
├── README.md
├── prd-review/
│ └── SKILL.md
├── meeting-minutes/
│ └── SKILL.md
├── customer-faq/
│ ├── SKILL.md
│ └── references/
│ └── faq-history.md
└── ...
每个团队成员把这个仓库 clone 到 ~/.codex/skills/:
git clone https://github.com/yourteam/team-skills ~/.codex/skills/team
更新只需 git pull。
方案 2:共享网盘
不会用 git 的团队,可以用 OneDrive、坚果云、飞书云盘。每人把同步目录链接到 ~/.codex/skills/team/。
方案 3:内网 Skills 商店
大公司可以做一个内部 Skills 网站,团队提交 PR 上架。Codex Pro / Enterprise 支持自定义 Skills 源。
团队 Skill 的命名规范
[业务域]-[操作]
例:
- sales-quote-generator 销售-报价单生成
- support-ticket-classifier 客服-工单分类
- hr-resume-screener HR-简历筛选
避免冲突,避免歧义。
团队 Skill 的迭代
新人入职第一天就能用上 50 个团队 Skills,工作 3 个月后被建议补充新 Skills(基于他遇到的高频任务)。
这是组织级的"AI 反哺"——人用 AI 提效,反过来又用经验丰富 AI。
11.11 常见问题
Q1:Skill 会不会被"误调用"?
会。如果你写的 description 太宽泛,Codex 可能在不该用时用。解决:description 写具体、加"何时不使用"段。
Q2:Skill 太多了 Codex 会不会卡?
不会。按需加载机制保证只加载用到的。但一般个人 50 个、团队 200 个内是合理上限。
Q3:Skill 改了之后,已有会话会立即生效吗?
不会。需要新开会话或手动 /skills reload。
Q4:能不能让 Codex 帮我写 Skill?
完全可以,而且推荐。你可以说:
我每周要做"X 任务",步骤是 A、B、C。
帮我把这变成一个 Skill 放到 ~/.codex/skills/x-task/。
Codex 会起草,你审核调整。
Q5:Skill 可以跨工具吗?
部分可以。OpenAI 推出 Skills 格式后,社区开始让 Claude Code、Cursor 也支持。但成熟度不一,最稳妥的做法是 Skill 主要服务 Codex,AGENTS.md 跨工具通用。
11.12 一份"建议拥有"的 Skills 清单
下面 10 个 Skills,建议每个 Codex 用户都搞一份:
| Skill | 触发场景 | 收益 |
|---|---|---|
| weekly-report | 写周报 | 每周省 1 小时 |
| meeting-minutes | 整理会议纪要 | 每次省 20 分钟 |
| email-draft | 起草邮件 | 每天省 30 分钟 |
| code-review | 给同事 PR 写评审 | 每次省 30 分钟 |
| pr-description | 写自己 PR 的说明 | 每次省 10 分钟 |
| commit-message | 帮 git commit 写 message | 每天省 10 分钟 |
| daily-news | 每天行业新闻摘要 | 每天省 30 分钟 |
| pdf-summary | 总结一份 PDF | 每次省 1 小时 |
| translate-zh-en | 中英互译(带专业术语库) | 每次更准确 |
| readme-generator | 给项目生成 README | 每次省 1 小时 |
附录 C 提供这 10 个 Skills 的可直接复用模板。
11.13 本章小结
- Skill = 自包含的"AI 岗位 SOP",是 prompt 的工程化升级
- AGENTS.md 管项目,Skills 管任务,互补
- 一个 Skill = SKILL.md(必)+ scripts / references / assets(选)
- SKILL.md 五段:何时用 / 输入 / 步骤 / 输出 / 验收
- description 写"何时调用",不写"做什么"
- 重复 3 次以上的任务都该 Skill 化
- 团队级 Skills 库收益是个人的 50 倍
- 附录 C 有 10 个开箱即用的 Skills
下一章:第十二章 · 自动化与定时任务,让 Codex 自己起床干活。