Codex Cookbook: PLANS.mdで長時間タスクを安定して進めるExecPlan運用
OpenAI 公式 Cookbook の Codex Exec Plans 例をもとに、`PLANS.md` を使って数十分〜数時間の複雑タスクを Codex に進めさせる運用を 2026 年 5 月時点の仕様で整理。AGENTS.md との使い分け、ExecPlan に書く項目、生きた計画として更新する考え方、レビュー性を上げるテクニックをまとめます。
要点
- 数十分〜数時間の長時間タスクは、会話だけでなく
PLANS.mdファイルとして計画を残す AGENTS.md(恒久ルール)とPLANS.md(実行計画)を使い分ける- ExecPlan に書く要素:目的 / 背景 / マイルストーン / 検証方法 / 未決事項 / 作業ログ
- 計画は固定文書ではなく「生きた計画」として作業中に更新する
- 人間が 途中レビューしやすくなるのが最大のメリット
このレシピの一次ソースは OpenAI Cookbook の Codex Exec Plans 記事 です。
なぜ ExecPlan が必要か
Codex に長い作業を任せると次の問題が起きやすくなります。
- 文脈が膨らむ: ターンが増えるとモデルの context が圧迫され、compaction で重要情報が落ちる
- 判断が見えなくなる: なぜこの実装になったのかが、会話履歴を遡らないと追えない
- 再開できない: 作業を中断してから戻ると、Codex も人間も前提を忘れている
- レビューしにくい: 全体像が把握できず、ピンポイントで気になる箇所を確認しづらい
ファイルとして計画を残しておくと、Codex も人間も同じ前提に戻れるため、これらが大幅に改善します。
AGENTS.md と PLANS.md の役割分担
| ファイル | 役割 | 寿命 |
|---|---|---|
AGENTS.md | プロジェクトで常に守るべきルール(テストコマンド、コードスタイル、禁止事項、レビュー方針) | 恒久 |
PLANS.md | 特定タスクの進め方(目的、変更対象、マイルストーン、進捗、判断ログ) | タスク完了まで |
このように分けると、恒久的なルールと一時的な計画が混ざらずに済みます。タスクが完了したら PLANS.md は削除またはアーカイブ。AGENTS.md は残す。
ExecPlan に書くとよい内容
長時間タスクで効果的なテンプレ:
# PLANS.md - <タスク名>
## 目的
何を達成したいのかを 1〜2 文で。
## 背景
なぜこの変更が必要なのか、どの制約があるのか。
(業務要件、技術的負債、外部要因)
## スコープ
- やる: ...
- やらない: ...
## マイルストーン
1. **M1: 〇〇の調査**
- スコープ: ...
- 検証: ...
2. **M2: △△の実装**
- スコープ: ...
- 検証: ...
3. **M3: ××のリリース**
- ...
## 検証方法
- 単体テスト: `npm test ...`
- 統合テスト: `...`
- 手動確認: `...`
- ロールバック手順: `...`
## 未決事項
- [ ] DB スキーマ変更を伴うか(要 PM 確認)
- [ ] 既存 API バージョンを維持するか
## 作業ログ
### 2026-05-09 M1 開始
- インベントリ作成完了。対象ファイル数 47
- 想定外: legacy-api/ にも依存箇所あり
- 判断: M1 のスコープに legacy-api/ の調査も含める
生きた計画として更新する
ExecPlan は最初に作って終わりではありません。作業中の発見を書き戻すのが本質です。
更新のタイミング:
- 調査で新しい事実が出た
- 方針を変更した(理由も書く)
- マイルストーンを完了した
- 未決事項に答えが出た
- 想定外のリスクが見つかった
これにより、あとからレビューする人が **「なぜこの実装になったのか」**を追いやすくなります。コミットメッセージや PR 本文にも転記すると、レビュアー体験がさらに上がります。
Codex への依頼パターン
計画を立てさせる
$plan
以下の作業を進めるための実行計画を PLANS.md として作ってください。
タスク: ユーザー認証を OAuth2 から OIDC へ移行する
含めてほしい内容:
- 目的、背景、スコープ
- マイルストーン(各 1〜2 日で終わる粒度)
- 検証方法(テスト、手動確認、ロールバック)
- 未決事項
ファイル変更はせず、PLANS.md だけ作成してください。
マイルストーンを実装させる
PLANS.md の Milestone 2 を実装してください。
完了条件:
- M2 のスコープに書かれた変更がすべて完了
- M2 の検証コマンドがすべて通る
- 作業ログを PLANS.md の「作業ログ」セクションに追記
- 想定外の発見があれば「未決事項」に追記
中断後に再開する
PLANS.md を読み、作業を再開してください。
確認してほしい点:
- 完了済みのマイルストーン
- 進行中のマイルストーンと現状
- 未決事項
- 次にやるべきこと
再開前に「現状把握」のサマリを返し、人間の確認を待ってください。
Goals 機能との関係
Codex App / CLI には Goals という長期タスク管理機能があります(workflows-goals 参照)。
両者の違い:
| 観点 | Goals | PLANS.md |
|---|---|---|
| 形式 | Codex 内部の構造化データ | リポジトリ内の Markdown ファイル |
| 共有 | 個人のセッション内 | チーム全員が git 経由で見える |
| バージョン管理 | なし | git で履歴管理 |
| Codex 以外からの参照 | 困難 | エディタで普通に開ける |
**Goals は「Codex のセッション継続用」、PLANS.md は「人間 × Codex の共通文書」**と覚えるとよいです。両方併用して、Codex の Goals が進行中の作業状態を持ち、PLANS.md がチーム共有のドキュメントになる構成も自然です。
レビュー性を上げるテクニック
マイルストーンごとに PR を分ける
PLANS.md のマイルストーンと PR を 1:1 対応させると、レビュアーが粒度を予測しやすくなります。
コミットメッセージに M番号を含める
feat(auth): M2 - OIDC discovery endpoint 統合
PLANS.md の M2 を完了。OAuth2 callback ルートを OIDC 標準に置換。
PLANS.md 自体も PR の差分に含める
PLANS.md の更新も同じ PR に入れると、レビュアーが「実装と意図」を一画面で見られます。
アンチパターン
- PLANS.md を作らずに長時間タスクを始める: 途中で context が膨らんで失敗する
- マイルストーンが大きすぎる: 1 マイルストーン = 1 PR の粒度に切れていない
- 作業ログを書かない: 後から再開できない
AGENTS.mdに一時情報を入れる: タスクが終わってもルールに残ってしまう
まとめ
PLANS.md は、Codex に長時間タスクを任せるための 作業地図です。
複雑なタスクほど、計画 / 進捗 / 判断理由をファイルに残すことで、Codex との協働が安定します。最初は手間に感じても、中断・再開・レビューの場面で必ず効いてきます。