Codex: Codex ルールとフック
最終更新:2026-08-31
AGENTS.md とフックメカニズムにより、プロジェクトでの Codex の動作を正確に制御できます — 何ができ、何ができず、どのルールに従うべきか。
📋 前提条件: Codex の基本設定を理解していること
1. 学ぶ内容
- AGENTS.md ルールファイルの詳細
- フックメカニズム
- ルールの優先順位
- 実践的な設定
2. AGENTS.md の詳細
AGENTS.md はプロジェクトルートに配置されるルールファイルで、Codex が起動時に自動的に読み取り、永続コンテキストとして使用します。
(1) 基本構造
MARKDOWN
# AGENTS.md
## プロジェクト概要
プロジェクト名:E-Commerce API
技術スタック:FastAPI + PostgreSQL + Redis
コード規格:PEP 8 + Black フォーマッター
## コードルール
- すべての関数に型アノテーションを含める
- すべての API エンドポイントに入力バリデーションを含める
- 依存性注入を使用
- エラー処理にはカスタム例外クラスを使用
## ファイル構造
- src/api/ - API ルート
- src/models/ - データモデル
- src/services/ - ビジネスロジック
- src/tests/ - テストファイル
## 禁止操作
- .env ファイルを変更しない
- 既存のテストを削除しない
- 新しい依存関係をインストールしない(手動確認が必要)
- database/migrations/ の既存の移行を変更しない
(2) ルールタイプ
| タイプ | 説明 | 例 |
|---|---|---|
| コードスタイル | コーディング規約 | "TypeScript の strict モードを使用" |
| アーキテクチャ制約 | 設計の制限 | "すべての API はサービスレイヤーを経由する必要がある" |
| 禁止操作 | やってはいけないこと | ".env ファイルを変更しない" |
| 検証要件 | 完了基準 | "pytest が通過することを確認" |
| プロジェクトコンテキスト | 背景知識 | "プロジェクトはマイクロサービスアーキテクチャを使用" |
▶ 例1:Alice の AGENTS.md
MARKDOWN
# AGENTS.md
## プロジェクト概要
Next.js 14 eコマースサイト、App Router + TypeScript + Prisma を使用
## コードルール
- コンポーネントは関数コンポーネント + TypeScript
- API ルートの代わりに server actions を使用
- データ取得には RSC(React Server Components)を使用
- スタイリングには Tailwind CSS
- フォームには React Hook Form + Zod バリデーション
## ディレクトリ規約
- app/ - ページとルート
- components/ - 再利用可能なコンポーネント
- lib/ - ユーティリティ関数と設定
- types/ - TypeScript 型定義
## 禁止操作
- 必要がない限り 'use client' を使用しない
- 新しい UI ライブラリをインストールしない(既存の shadcn/ui を使用)
- prisma/schema.prisma の既存モデルを変更しない(追加のみ)
- middleware.ts を変更しない
3. フックメカニズム
フックは特定のイベントがトリガーされたときに自動的に実行されるスクリプトです。
(1) フックタイプ
| フック | トリガー | 目的 |
|---|---|---|
| pre-task | タスク実行前 | 環境の準備、コンテキストの読み込み |
| post-task | タスク完了後 | テストの実行、コードのフォーマット |
| pre-commit | コミット前 | lint チェック、コードレビュー |
| on-error | エラー時 | エラーレポート、ロールバック |
(2) フックの設定
TOML
# .codex/config.toml
[hooks]
# タスク完了後に自動的にテストを実行
post-task = "npm test"
# コミット前に自動フォーマット
pre-commit = "npm run format && npm run lint"
# エラー時に通知を送信
on-error = "curl -X POST https://hooks.slack.com/xxx -d 'Codex error'"
(3) フックスクリプト
BASH
# .codex/hooks/post-task.sh
#!/bin/bash
# テストを実行
npm test
if [ $? -ne 0 ]; then
echo "Tests failed! Fixing..."
codex --full-auto "Fix all failing tests"
fi
# コードをフォーマット
npm run format
# lint をチェック
npm run lint
▶ 例2:Bob の自動化フック
TOML
# Bob のフック設定
[hooks]
post-task = "bash .codex/hooks/post-task.sh"
# .codex/hooks/post-task.sh
#!/bin/bash
npm test # テストを実行
npm run lint -- --fix # lint を修正
npm run format # フォーマット
echo "Hook: post-task completed"
4. マルチレベル AGENTS.md
Codex はマルチレベルの AGENTS.md をサポートし、ルートからサブディレクトリまで有効です:
TEXT
📖 参照専用
project/
├── AGENTS.md # グローバルルール
├── src/
│ ├── AGENTS.md # src ディレクトリのルール
│ ├── api/
│ │ └── AGENTS.md # API モジュールのルール
│ └── auth/
│ └── AGENTS.md # Auth モジュールのルール
(1) 優先順位
TEXT
📖 参照専用
サブディレクトリ AGENTS.md > 親ディレクトリ AGENTS.md > ルート AGENTS.md
(2) 実践的な使用
MARKDOWN
<!-- src/api/AGENTS.md -->
# API モジュールルール
- すべてのエンドポイントに Swagger ドキュメントを含める
- リクエスト/レスポンスのバリデーションに Pydantic を使用
- 標準レスポンスフォーマットを返す:{ data: ..., error: ... }
5. ルールの優先順位
TEXT
📖 参照専用
AGENTS.md サブディレクトリ > AGENTS.md ルート > スキル > 設定ファイル > デフォルト動作
❓ よくある質問
Q AGENTS.md はプロジェクトルートになければなりませんか?
A ルートの AGENTS.md は必須です。サブディレクトリの AGENTS.md はオプションです。Codex は現在の作業ディレクトリとその親からすべての AGENTS.md を自動的に読み取ります。
Q フックをスキップできますか?
A はい。
--no-hooks で Codex を起動するとすべてのフックがスキップされます。Q AGENTS.md はコンテキストウィンドウを消費しますか?
A はい、しかし非常に少ないです。Codex は AGENTS.md の内容を圧縮してトークン消費を削減します。
Q フックスクリプトがエラーになった場合はどうなりますか?
A フックのエラーは Codex のメインタスクに影響しません。Codex はエラーをログに記録し、実行を継続します。
Q ファイルタイプごとに異なるルールを設定できますか?
A はい。AGENTS.md でファイルタイプやディレクトリ別にルールを定義できます。Codex は操作中のファイルに基づいて対応するルールを適用します。
📖 まとめ
- AGENTS.md はプロジェクトレベルのルールファイル、Codex が自動的に読み取り
- ルールタイプ:コードスタイル、アーキテクチャ制約、禁止操作、検証要件
- フック:pre-task / post-task / pre-commit / on-error
- マルチレベル AGENTS.md:サブディレクトリ > 親 > ルート
- ルール優先順位:AGENTS.md > スキル > 設定 > デフォルト
📝 練習問題
- 基本 (⭐):プロジェクトに AGENTS.md を作成し、コードスタイルと禁止操作を定義する。
- 中級 (⭐⭐):タスク完了後に自動テストとフォーマットを実行する post-task フックを設定する。
- 上級 (⭐⭐⭐):マルチレベル AGENTS.md スキームを設計する — ルートにグローバルルール + 各ディレクトリにモジュール固有のルール。