106 自定义指令与扩展
创建可复用的指令模板,封装团队工作流为 Codex 指令,构建团队共用的指令库。
学习目标
完成本课程后,你将能够:
一、Codex 自定义指令系统
指令的层次结构
Codex 的自定义指令分为三个层次,从简单到复杂:
Level 1: 内联指令 — 在 Prompt 中直接写的临时指令
Level 2: codex.yaml — 项目级持久化指令(之前学过)
Level 3: 指令模板 — 可命名、可复用、可共享的指令包Level 1:内联指令
最简单的形式,在每次提问时携带规则:
请用以下规范生成代码:
- 所有函数必须有 try-catch
- API 返回 {code, data, message} 格式
- 变量命名用 camelCase
现在请帮我写一个...缺点:每次都要重复写,容易遗漏。
Level 2:codex.yaml 持久化
instructions: |
你是全栈工程师...
项目使用 Next.js 14...
所有 API 返回 {code, data, message}...优点:一次配置,永久生效。每节课都在用。
Level 3:指令模板(本课重点)
指令模板可以**命名**、**参数化**和**共享**。将它放在 `.codex/instructions/` 目录下,Codex 可以按名称调用。
二、创建指令模板
模板文件结构
项目根目录/
├── codex.yaml
└── .codex/
└── instructions/
├── new-api-route.md # 指令模板 1
├── code-review.md # 指令模板 2
├── generate-test.md # 指令模板 3
└── refactor-component.md # 指令模板 4模板 1:创建新 API 路由
<!-- .codex/instructions/new-api-route.md -->
# 指令:创建新 API 路由
## 描述
按照项目规范创建一个完整的 RESTful API 路由。
## 参数
- ROUTE_PATH:路由路径,如 /api/users
- RESOURCE_NAME:资源名称,如 User
- FIELDS:需要的字段列表
## 执行规范
请你完成以下步骤:
1. 在 src/types/ 中创建 ${RESOURCE_NAME} 类型定义
2. 在 src/app/api/${ROUTE_PATH}/ 创建路由文件,实现:
- GET /api/${ROUTE_PATH} — 列表查询(分页)
- GET /api/${ROUTE_PATH}/[id] — 单条查询
- POST /api/${ROUTE_PATH} — 创建
- PATCH /api/${ROUTE_PATH}/[id] — 更新
- DELETE /api/${ROUTE_PATH}/[id] — 删除
3. 在 src/services/ 中创建业务逻辑层
4. 使用 Prisma 做数据库操作
5. 所有接口返回 { code, data, message } 格式
6. 包含输入验证(Zod schema)
7. 处理常见错误:404、409、500
## 需要的字段
${FIELDS}使用方式
在 Codex 中执行:
/instruction new-api-route ROUTE_PATH=users RESOURCE_NAME=User FIELDS="name, email, role"Codex 读取模板,替换参数,按步骤执行。
模板 2:代码审查检查清单
<!-- .codex/instructions/code-review.md -->
# 指令:全面代码审查
## 描述
对指定范围进行深度代码审查,输出结构化的审查报告。
## 参数
- SCOPE:审查范围(文件路径 或 "staged" 或 "branch")
## 审查清单
请按以下维度逐项审查 ${SCOPE} 中的代码:
### 1. 正确性
- [ ] 逻辑是否有错误
- [ ] 边界条件是否处理
- [ ] 空值/undefined 是否安全处理
- [ ] 异步操作是否正确 await
### 2. 安全性
- [ ] 是否有 SQL/NoSQL 注入风险
- [ ] 是否有 XSS 风险
- [ ] 敏感信息是否硬编码
- [ ] 输入验证是否充分
### 3. 性能
- [ ] 是否有 N+1 查询
- [ ] 不必要的重渲染
- [ ] 大循环中的重复计算
- [ ] 缺失的数据库索引
### 4. 可维护性
- [ ] 函数是否过长(>80 行)
- [ ] 命名是否清晰
- [ ] 是否有重复代码
- [ ] 注释是否充分
### 5. 测试
- [ ] 核心逻辑是否有测试覆盖
- [ ] 边界情况是否有测试
### 输出格式
| 维度 | 严重程度 | 文件:行号 | 问题描述 | 修复建议 |
|------|----------|-----------|----------|----------|三、封装工作流为指令
工作流封装示例:发布新功能
将以下多步骤操作封装为一条指令 `ship-feature`:
<!-- .codex/instructions/ship-feature.md -->
# 指令:发布新功能
## 描述
执行功能发布前的所有检查和准备工作。
## 参数
- FEATURE_BRANCH:功能分支名称
## 执行步骤
请严格按照以下顺序执行:
1. **代码审查**
/review 审查 ${FEATURE_BRANCH} 分支的所有变更
2. **运行测试**
运行 pnpm test,如果失败则修复
3. **类型检查**
运行 pnpm typecheck,确保无类型错误
4. **Lint 检查**
运行 pnpm lint,自动修复可修复的问题
5. **生成 CHANGELOG**
根据 ${FEATURE_BRANCH} 的 commit 历史,更新 CHANGELOG.md
6. **生成 PR 描述**
生成包含以下内容的 PR 描述:
- 变更概述
- 测试说明
- 截图(如有 UI 变更)
- 迁移步骤(如有)
7. **创建 PR**
使用 gh CLI 创建 Pull Request
所有步骤通过后,报告"功能 ${FEATURE_BRANCH} 已准备好发布"。使用
/instruction ship-feature FEATURE_BRANCH=feat/user-management一行指令,Codex 自动完成 7 个步骤的检查和准备工作。
四、团队指令共享
Git 仓库共享
# 将指令纳入版本控制
git add .codex/instructions/
git commit -m "chore: add team codex instruction templates"
git push
# 团队成员 pull 后即可使用相同的指令团队指令库建议
| 指令模板 | 用途 | 适用角色 |
|---|---|---|
| `new-api-route` | 创建标准 API 路由 | 后端 |
| `new-component` | 创建前端组件骨架 | 前端 |
| `code-review` | 全面代码审查 | 所有人 |
| `ship-feature` | 功能发布检查 | Tech Lead |
| `fix-bug` | Bug 修复标准流程 | 所有人 |
| `add-test` | 为模块补充测试 | 所有人 |
| `db-migration` | 创建数据库迁移 | 后端 |
| `add-seed-data` | 生成种子数据脚本 | 后端 |
团队指令编写规范
<!-- 指令编写规范建议 -->
1. 文件名使用 kebab-case,清晰描述功能
2. 必须包含「描述」和「参数」部分
3. 复杂指令列出执行步骤编号
4. 每条指令必须可独立执行,不依赖上下文
5. 在指令末尾注明作者和更新日期
6. 指令变更通过 PR review,如同代码变更五、社区指令生态
从哪里获取指令
Codex 社区正在成长。指令模板可以:
- 在 GitHub 上搜索 `codex-instructions` topic
- 参考 Cursor 社区的 `.cursorrules` 仓库(很多内容可复用)
- 从 Claude Code 的 CLAUDE.md 社区中获取灵感
- 自己团队的代码审查记录中提取常见模式
贡献指令
将你的指令模板开源:
# 示例项目结构
codex-instructions/
├── README.md
├── web/
│ ├── new-nextjs-page.md
│ ├── add-tailwind-component.md
│ └── fix-react-hydration-error.md
├── backend/
│ ├── new-api-route.md
│ ├── optimise-db-query.md
│ └── setup-docker.md
└── devops/
├── setup-ci.md
└── deploy-to-vercel.md六、持续优化指令
指令迭代循环
使用指令 → 发现问题 → 改进指令 → 提交更新 → 团队同步改进日志
<!-- .codex/instructions/CHANGELOG.md -->
## 2025-07-16
- `code-review`: 增加"安全性"检查维度
- `new-api-route`: 添加输入验证步骤
- `ship-feature`: 修复 step 5 在 monorepo 中的路径问题指令效果度量
收集反馈,持续优化:
- 这条指令每次都正确执行吗?
- 哪些步骤需要人工介入?
- 参数够用吗?不够就增加
- 有没有可以自动化的手动步骤?
七、本课总结
**核心要点:**
- 指令模板是"可命名的、参数化的、可共享的"工作流封装
- 模板放在 `.codex/instructions/` 目录,通过 `/instruction <name>` 调用
- 将重复性工作流(发布、审查、创建模块)封装为指令,大幅提升效率
- 团队指令库纳入 Git 版本控制,所有人共享统一的开发规范
- 持续迭代指令:使用中发现不足就改进,如同对待代码一样
模块 2 完成清单
| 课程 | 核心技能 | 状态 |
|---|---|---|
| 101 Cursor IDE | Cursor Composer Agent + .cursorrules | [ ] |
| 102 Copilot | Copilot Agent Mode + 三工具协作 | [ ] |
| 103 大模型辅助 | ChatGPT + DeepSeek + Kimi 联合策略 | [ ] |
| 104 Hooks 自动化 | PreToolUse / PostToolUse 钩子配置 | [ ] |
| 105 MCP 扩展 | 数据库 MCP + 自定义 MCP Server | [ ] |
| 106 自定义指令 | 指令模板创建 + 团队共享 | [ ] |
**下一步:** 你已经完成了模块 1(Codex 深度掌握)和模块 2(多工具协同)。接下来可以将这些技能应用到实际项目中,从每天的一个小任务开始,逐步建立自己的 AI 辅助开发工作流。