ORANGE BOOK · CODEX

附录 C Skills 模板集

用法:mkdir -p ~/.codex/skills/<skill-name> 然后把对应的 SKILL.md 内容粘进去即可。

C.1 weekly-report(周报生成)

---
name: 周报生成
description: 根据本周日志和 git commit,生成一份按"完成/进行中/风险/下周"四块结构化的周报草稿
keywords: [周报, 周记, 周总结, weekly, report]
version: 1.0.0
author: orange-book
---

## 何时使用

- 用户说"写周报"、"我要写周报"、"帮我整理本周工作"
- 不调用:日报(用 daily-report Skill)、月报(用 monthly-report Skill)

## 输入

- 本周日志路径(默认 ~/Documents/work-log/)
- Git 仓库路径(如有,默认 ~/code/)
- 周报受众(默认"直属经理")
- 是否包含数字(默认是)

如未提供,主动问。

## 步骤

1. 读取日志目录下日期为本周一到本周五的 .md 文件
2. 如有 Git 仓库,运行 `git log --since="last monday" --author="$(git config user.name)" --oneline` 获取本周 commit
3. 按四块整理:
   - 完成:3-5 件,按重要性降序,每件 1-2 行 + 数字依据
   - 进行中:列出 + 进度 + 预计完成日
   - 风险:列出 + 影响 + 应对方案
   - 下周计划:≤3 件 + 明确目标
4. 全文删除主观虚词:"我觉得"、"应该是"、"可能"、"差不多"
5. 输出到当前目录 weekly-report-YYYY-WW.md(WW 为周数)

## 输出

- 文件:weekly-report-YYYY-WW.md
- 长度:300-600 字
- 风格:动词开头、客观、有数字

## 验收

- 4 块都不为空(如某项无,写"无"而非省略)
- 完成项每件有数字或"已完成"标识
- 下周计划 ≤3 件
- 没有主观虚词

C.2 meeting-minutes(会议纪要)

---
name: 会议纪要整理
description: 把会议录音转写或随手记录,整理成"决议/待办/风险/参考"四块的标准纪要
keywords: [会议纪要, 会议记录, 会议总结, meeting, minutes]
version: 1.0.0
---

## 何时使用

- 用户提供会议录音、转写文本、或会中速记笔记
- 用户说"整理会议纪要"、"会议总结"

## 输入

- 原始材料:录音转写文件 / 速记笔记 / 视频转写
- 会议元数据:时间、参会人、主题(如未提供主动问)

## 步骤

1. 通读原始材料
2. 抽取"决议":会议达成的明确结论(不是讨论中的提议)
3. 抽取"待办":每条标注 owner(必须有人)+ deadline(必须有日期)+ 完成标准
4. 抽取"风险":会议中提到但未解决的问题
5. 抽取"参考":值得记下的数据、链接、引用
6. 输出到当前目录 meeting-YYYY-MM-DD-{主题}.md

## 输出格式

```markdown
# 会议纪要 - {主题}

**时间**:{时间}
**参会**:{参会人}
**记录**:{记录人}

## 决议
- ...

## 待办

| 待办 | Owner | Deadline | 完成标准 |
|------|-------|----------|----------|
| ...  | ...   | ...      | ...      |

## 风险
- ...

## 参考
- ...

验收

  • 决议是"明确达成"的,不是"提到过"的
  • 每个待办有 owner + deadline
  • 风险项可执行(不是"要小心"这种空话)
  • 没有"大家说"、"有人说"等模糊主语,必须具名

## C.3 email-draft(邮件起草)

```markdown
---
name: 邮件起草
description: 根据收件人、主题、要点起草邮件,自动调整语气和长度
keywords: [邮件, email, 写邮件, 起草邮件, draft email]
version: 1.0.0
---

## 何时使用

- 用户说"帮我写一封邮件"、"起草邮件"、"draft email"

## 输入

需要从用户处获得:
- 收件人(关系:客户 / 上级 / 平级 / 下级 / 外部合作方)
- 主题
- 要点(1-N 条)
- 期望语气(正式 / 友好 / 紧急 / 道歉 / 感谢)
- 期望长度(一段 / 三段 / 详细)

如未提供,主动问最关键的(收件人 + 要点)。

## 步骤

1. 根据收件人关系调整称呼和语气
2. 第一段:开门见山说明邮件目的(≤2 句)
3. 中间段:按要点展开(用 bullet 或编号)
4. 结尾段:明确"我希望对方做什么"或"何时回复"
5. 签名(默认用用户的名字)
6. 自检:
   - 没有"应该是"、"可能"等模糊词
   - 没有错别字
   - 关键日期 / 数字醒目(加粗)
7. 输出邮件草稿(不发送)

## 输出

- 直接展示邮件正文
- 标注:收件人称呼、主题建议、附件提醒(如有)
- 提示用户检查后发送

## 验收

- 收件人关系适配(不要给客户发"哥们")
- 长度跟要求匹配
- 末尾有明确"action item"
- 不出现敏感信息

C.4 code-review(代码评审)

---
name: 代码评审
description: 对一份 PR 或一段代码做四维度 review:安全、性能、可读性、规范
keywords: [code review, 代码评审, pr review, 评审]
version: 1.0.0
---

## 何时使用

- 用户提供 PR 链接、diff、或一段代码
- 用户说"review 一下"、"看看这段代码"、"check this PR"

## 输入

- 要 review 的内容(PR / diff / 文件 / 代码片段)
- 项目背景(参考项目根的 AGENTS.md)
- 重点关注的维度(默认全四维)

## 步骤

1. 通读代码,理解意图
2. 按四维度检查,每个维度给出问题(如有):
   - **安全**:注入风险、敏感信息、权限漏洞、依赖漏洞
   - **性能**:明显的性能问题、N+1 查询、内存泄漏
   - **可读性**:命名、结构、复杂度、注释缺失
   - **规范**:是否符合项目 AGENTS.md 的规范、命名约定
3. 区分严重程度:
   - ❌ Blocker(必须改才能 merge)
   - ⚠️ Major(建议改)
   - 💡 Suggestion(可改可不改,只是建议)
4. 输出结构化 review 评论

## 输出

```markdown
## Review 结果

### 总评
{一段话总结}

### 必须修复(Blocker)
1. {问题} —— 文件 / 行号 —— 建议
...

### 建议修复(Major)
1. ...

### 优化建议(Suggestion)
1. ...

### 亮点
- {做得好的地方}

验收

  • 四维度都看了(即使没问题也说明"已检查")
  • 严重程度分级清晰
  • 每个问题都有具体位置 + 建议改法
  • 同时指出"做得好的",不只是挑毛病

## C.5 daily-news(每日行业新闻)

```markdown
---
name: 行业晨报
description: 抓取昨天的行业关键新闻,整理成 5 条要闻 + 简短点评
keywords: [晨报, 早报, brief, news, 行业新闻]
version: 1.0.0
---

## 何时使用

- 用户说"X 晨报"、"今日 X 新闻"、"morning brief"

## 输入

- 行业关键词(如 AI、新能源、消费、教育)
- 抓取范围:默认昨天(北京时间 0:00 - 23:59)
- 信息源:references/sources.md(按行业分类)
- 数量:默认 5 条

## 步骤

1. 用 In-App Browser 访问对应行业的信息源
2. 提取昨天发布的所有新闻标题
3. 按重要性打分(融资 > 产品发布 > 技术突破 > 观点 > 八卦)
4. 选 TOP 5
5. 每条生成:
   - 标题
   - 一句话要点(≤30 字)
   - 50 字点评("为什么重要",不是简单复述)
   - 出处链接
6. 输出整体简报到当前目录 brief-{行业}-YYYY-MM-DD.md

## 输出

```markdown
# {行业} 晨报 - {日期}

## 1. {标题}
**要点**:{一句话}
**点评**:{50 字}
**出处**:{链接}

...

验收

  • 5 条都有出处链接
  • 点评不是简单复述,要有"为什么重要"
  • 没有重复(同一事件不同来源算一条)
  • 标题准确,不夸张

## C.6 pdf-summary(PDF 总结)

```markdown
---
name: PDF 总结
description: 总结一份 PDF 文档,输出"核心论点 + 关键证据 + 推荐人群"
keywords: [PDF 总结, pdf summary, 文档摘要, 论文总结]
version: 1.0.0
---

## 何时使用

- 用户提供 PDF 文档
- 用户说"总结这个 PDF"、"summarize"、"摘要"

## 输入

- PDF 文件路径
- 期望长度(默认 500-800 字)
- 期望视角(默认"读者视角",可选"批判视角")

## 步骤

1. 读取 PDF 全文
2. 识别文档类型:论文 / 报告 / 书籍 / 文章 / 手册
3. 按类型抽取结构:
   - 论文:研究问题 / 方法 / 结论 / 局限
   - 报告:核心结论 / 关键数据 / 行动建议
   - 书籍:核心观点 / 论证脉络 / 适用读者
   - 文章:核心观点 / 主要论据 / 反对声音
4. 输出结构化总结
5. 末尾加"3 个延伸思考问题"

## 输出格式

```markdown
# PDF 总结:{标题}

**作者**:{...}
**类型**:{论文 / 报告 / 书籍 / ...}
**长度**:{X 页}
**推荐人群**:{...}

## 一句话总结
{核心论点}

## 核心观点
1. ...
2. ...
3. ...

## 关键证据
- ...

## 局限 / 反对声音
- ...

## 适合 / 不适合谁读
- 适合:{...}
- 不适合:{...}

## 延伸思考
1. ...
2. ...
3. ...

验收

  • 总结忠于原文,不胡编
  • 有"局限性"或"反对声音"段(避免片面)
  • 推荐人群具体(不是"所有人")
  • 延伸思考问题开放、有深度

## C.7 commit-message(Git 提交信息)

```markdown
---
name: Git 提交信息
description: 根据 git diff 生成符合 Conventional Commits 的提交信息
keywords: [commit message, git commit, 提交信息]
version: 1.0.0
---

## 何时使用

- 用户即将 commit,需要提交信息
- 用户说"帮我写 commit message"、"commit msg"

## 输入

- 当前未提交的改动(运行 `git diff --staged` 获取)
- 项目类型(影响 type 选择)

## 步骤

1. 运行 `git diff --staged` 看本次改动
2. 判断改动类型(feat / fix / docs / refactor / test / chore / perf / style)
3. 判断 scope(如有清晰的模块边界)
4. 概括"做了什么"成 ≤50 字符的标题
5. 如果改动复杂,加 body(说明"为什么",不是"做了什么")
6. 如果是 breaking change,加 `BREAKING CHANGE:` footer

## 输出

{type}({scope}): {简短描述}

{可选的详细说明,解释为什么}

{可选的 BREAKING CHANGE / Closes #xxx}


## 例子

简单:

feat(auth): add OAuth2 google login


复杂:

refactor(api): split user service into auth and profile

之前 UserService 同时负责认证和资料管理, 随着功能增加,类越来越大且测试困难。 拆成 AuthService + ProfileService 后, 每个服务职责单一,单测覆盖率从 60% 提到 90%。

Closes #234


## 验收

- type 准确(不要把 feat 写成 chore)
- 标题动词开头,现在时(add 不是 added)
- 标题 ≤50 字符
- body(如有)解释"为什么"
- 引用相关 issue / PR

C.8 readme-generator(README 生成)

---
name: README 生成
description: 给一个项目生成一份完整的 README.md,含介绍、安装、使用、配置、贡献指南
keywords: [README, readme generator, 项目文档]
version: 1.0.0
---

## 何时使用

- 用户提供项目目录
- 用户说"给我项目写个 README"、"generate README"

## 输入

- 项目根目录路径
- 项目类型(库 / 应用 / 工具 / 文档站)
- 目标读者(开发者 / 用户 / 两者)

## 步骤

1. 扫描项目结构(看 package.json / requirements.txt / Cargo.toml 推断技术栈)
2. 看现有的 README(如有)和 AGENTS.md
3. 看 src/ 主要文件理解项目做什么
4. 按下面结构生成 README

## 输出格式

```markdown
# {项目名}

> {一句话定位}

[![License]({...})] [![Version]({...})] [![Tests]({...})]

## 这是什么

{1-2 段,回答"做什么 / 解决什么问题 / 跟同类工具区别"}

## 截图 / Demo
(可选)

## 快速开始

```bash
# 安装
{install command}

# 跑起来
{run command}

详细文档

安装

...

配置

...

使用

...

例子

{2-3 个真实例子,从简到难}

API / CLI 参考

(如果是库 / CLI 工具)

开发

# clone
git clone ...

# 装开发依赖
...

# 跑测试
...

贡献

欢迎 PR!请遵守:

  • ...

License

{...}


## 验收

- 一段话能回答"这是啥"
- 快速开始能 5 分钟跑通
- 例子能直接复制运行
- 没有 "TODO" 占位(要么有内容,要么先不放该段)

C.9 translate-zh-en(中英互译)

---
name: 中英互译
description: 把文本在中英文之间翻译,自动适配技术 / 商务 / 文学等领域语气
keywords: [翻译, translate, 中译英, 英译中]
version: 1.0.0
---

## 何时使用

- 用户提供文本要求翻译
- 用户说"翻译"、"中译英"、"英译中"、"translate"

## 输入

- 待翻译文本
- 翻译方向(auto-detect / zh→en / en→zh)
- 领域(技术 / 商务 / 文学 / 日常,默认 auto-detect)
- 术语表:references/glossary.md(可选)

## 步骤

1. 检测原文语言和领域
2. 如有 references/glossary.md,加载对应领域的术语映射
3. 翻译时优先使用术语表
4. 适配语气:
   - 技术 → 准确、术语统一
   - 商务 → 正式、礼貌
   - 文学 → 流畅、有韵律
   - 日常 → 自然、口语
5. 翻译完做反向自检(中→英→中,看是否走样)
6. 输出译文 + 标注的术语 + 翻译说明

## 输出

译文

{翻译后的文本}

用到的术语

  • 原文术语 → 译文术语(来自 glossary)
  • ...

翻译说明

(如有取舍:意译了哪部分、为何选择 X 译法)


## 验收

- 术语跟 glossary 一致
- 没有漏译
- 没有错译(关键数字 / 名字保持原样)
- 中文译文符合中文表达习惯,不是"翻译腔"
- 英文译文符合英文表达习惯,不是 Chinglish

C.10 onboarding(新人入职辅导)

---
name: 新人入职辅导
description: 给新加入团队 / 项目的人提供"今天学什么 / 接下来一周做什么"的引导
keywords: [入职, onboarding, 新人, 入门, 上手]
version: 1.0.0
---

## 何时使用

- 新人加入团队 / 项目第一周
- 用户说"我刚加入"、"我是新来的"、"onboarding"

## 输入

- 新人角色(开发 / PM / 设计 / 运营 / ...)
- 加入的项目 / 团队
- 已有的相关经验(年限、之前用过的栈)

## 步骤

1. 读项目根的 AGENTS.md 和 README.md
2. 读 docs/onboarding/(如有)
3. 根据角色生成"第一天 / 第一周 / 第一个月"的清单
4. 每个清单项给:
   - 任务描述
   - 资源链接(项目内的文档 / 外部教程)
   - 完成标准
   - 找谁问

## 输出

```markdown
# {新人名} 的入职 Roadmap - {项目名}

欢迎加入!下面是你第一个月的引导。每天检查一下进度。

## 第 1 天:环境与认知
- [ ] 通读 README.md
- [ ] 通读 AGENTS.md,了解项目规则
- [ ] 装好开发环境(步骤见 docs/setup.md)
- [ ] 跑起来项目(验收:浏览器看到首页)
- [ ] 跟 mentor 1:1(30 分钟)

## 第 2-3 天:探索
- [ ] 跑通完整测试(pnpm test)
- [ ] 读 src/ 主要模块,画出依赖图(mermaid 格式)
- [ ] 找 3 个你看不懂的地方,列到 questions.md

## 第 4-5 天:第一个改动
- [ ] 找一个 "good first issue" 标签的 issue
- [ ] 在新分支实现
- [ ] 开 PR,请 mentor review

## 第 2 周:独立完成 1 个 ticket
- [ ] 选一个中等大小的 ticket
- [ ] 完整流程跑一遍:理解需求 → 设计 → 实现 → 测试 → PR

## 第 3-4 周:扩展贡献
- [ ] 完成 2-3 个 ticket
- [ ] 给项目文档提一个改进
- [ ] 一对一回顾 onboarding(这个 Roadmap 哪里需要改)

## 谁可以问
- 技术问题:@tech-lead
- 业务问题:@product-manager
- 流程问题:@mentor
- 用什么工具:本 AI 副驾驶

验收

  • 任务从"读 → 跑 → 改"逐步深入
  • 每天 1-3 个任务,不会过载
  • 每个任务有完成标准
  • 有"找谁问"清单
  • 末尾有"反馈循环"(让新人回头评价 onboarding)

---

## 安装这 10 个 Skills 的脚本

```bash
#!/bin/bash
# install-skills.sh
# 一键安装本附录的 10 个 Skills 到 ~/.codex/skills/

SKILLS_DIR="$HOME/.codex/skills"
mkdir -p "$SKILLS_DIR"

for skill in weekly-report meeting-minutes email-draft code-review \
             daily-news pdf-summary commit-message readme-generator \
             translate-zh-en onboarding; do
    mkdir -p "$SKILLS_DIR/$skill"
    echo "创建 $skill 目录"
    # 把对应 SKILL.md 内容写进去
done

echo "10 个 Skills 已就绪。重启 Codex 让它加载。"

怎么扩展自己的 Skills

下面这套"问 Codex"模板帮你快速建新 Skill:

我想做一个 Skill,做以下任务:
[描述任务]

请帮我:
1. 写一份 SKILL.md,按附录 C 的标准结构
2. 生成 keywords 和 description(让 Codex 能精准识别何时调用)
3. 列出验收标准
4. 建议是否需要 references / scripts / assets

放到 ~/.codex/skills/{你建议的名字}/ 下

Codex 会照办。你审一下,commit 进自己的 skills 仓库。