Codex: Codex ルールとフック

最終更新:2026-08-31

AGENTS.md とフックメカニズムにより、プロジェクトでの Codex の動作を正確に制御できます — 何ができ、何ができず、どのルールに従うべきか。

📋 前提条件: Codex の基本設定を理解していること

1. 学ぶ内容


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 は操作中のファイルに基づいて対応するルールを適用します。

📖 まとめ


📝 練習問題

  1. 基本 (⭐):プロジェクトに AGENTS.md を作成し、コードスタイルと禁止操作を定義する。
  2. 中級 (⭐⭐):タスク完了後に自動テストとフォーマットを実行する post-task フックを設定する。
  3. 上級 (⭐⭐⭐):マルチレベル AGENTS.md スキームを設計する — ルートにグローバルルール + 各ディレクトリにモジュール固有のルール。
Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%