AIコーディング 2026.05.09

Claude CodeとOpenAI Codexの設定を自動同期する3ステップ【CLAUDE.md・AGENTS.md対応】

タグ:Claude / 開発効率化 / 設定管理 / 自動化

問題:2つのAIコーディングツールで設定が二重管理になる

Claude Code → CLAUDE.md に規約を書く
OpenAI Codex CLI → AGENTS.md に同じ規約を書く

手動の場合:
  1. CLAUDE.mdを更新
  2. 同じ内容をAGENTS.mdにもコピー
  3. コピーを忘れてツール間で設定が乖離する
  4. バグや不一致が発生する

月37億7000万トークンを消費した開発者が語った教訓:設定管理が煩雑になると、大規模利用ほど生産性の足を引っ張る

Step 1:共通テンプレートから両ファイルを生成する

config/
├── shared_rules.md       # 共通のコーディング規約(ここだけ編集する)
├── claude_extra.md       # Claude Code 固有の設定
├── codex_extra.md        # OpenAI Codex CLI 固有の設定
└── generate_configs.py   # 2ファイルを自動生成するスクリプト
# generate_configs.py
# 共通テンプレートからCLAUDE.mdとAGENTS.mdを生成する

import pathlib

CONFIG_DIR = pathlib.Path("config")
PROJECT_ROOT = pathlib.Path(".")

def read_file(path: pathlib.Path) -> str:
    return path.read_text(encoding="utf-8")

def generate_claude_md() -> str:
    shared = read_file(CONFIG_DIR / "shared_rules.md")
    extra = read_file(CONFIG_DIR / "claude_extra.md")
    return f"{shared}\n\n## Claude Code 固有の設定\n\n{extra}"

def generate_agents_md() -> str:
    shared = read_file(CONFIG_DIR / "shared_rules.md")
    extra = read_file(CONFIG_DIR / "codex_extra.md")
    return f"{shared}\n\n## Codex CLI 固有の設定\n\n{extra}"

def main() -> None:
    claude_md = PROJECT_ROOT / "CLAUDE.md"
    agents_md = PROJECT_ROOT / "AGENTS.md"
    
    claude_md.write_text(generate_claude_md(), encoding="utf-8")
    print(f"✅ {claude_md} を更新しました")
    
    agents_md.write_text(generate_agents_md(), encoding="utf-8")
    print(f"✅ {agents_md} を更新しました")

if __name__ == "__main__":
    main()
# 実行(shared_rules.mdを変更したら必ず実行)
python3 config/generate_configs.py

Step 2:shared_rules.mdの書き方

# 共通コーディング規約(CLAUDE.mdとAGENTS.md共通)

## プロジェクト概要
Next.js + TypeScript + Prismaのウェブアプリ

## 技術スタック
- フロントエンド: Next.js 15 (App Router), TypeScript, Tailwind CSS
- バックエンド: Next.js Server Actions, Prisma ORM
- DB: PostgreSQL

## コーディング規約
- TypeScriptの`any`は禁止。不明な型は`unknown`を使う
- コンポーネントはServer Component優先(useStateが必要な場合のみClient)
- API/Server Actionsへの入力は必ずZodでバリデーション

## 禁止操作
- `rm -rf``git reset --hard` は実行前に確認
- `.env`ファイルをコミットしない
- `any`型を追加しない

## テスト
- テストはvitest + testing-libraryを使う
- 変更後は`npm test`を実行して確認
# claude_extra.md(Claude Code固有の追加設定)

## パーミッション設定
- ファイル編集: src/**のみ自動承認
- コマンド: npm test, npm run lint, git diff のみ承認
- それ以外は必ず確認を求める

## Hooks(.claude/settings.json で設定)
- PostToolUse: Bashコマンド後にgit statusを実行
# codex_extra.md(OpenAI Codex CLI固有の追加設定)

## モデル設定
- デフォルトモデル: gpt-4o
- approval_mode: suggest(変更前に確認)

Step 3:ファイル変更を監視して自動生成

# sync_configs.py
# shared_rules.mdの変更を検知して自動的にCLAUDE.mdとAGENTS.mdを再生成

# pip install watchdog
import time
import pathlib
from watchdog.observers import Observer
from watchdog.events import FileSystemEventHandler
from generate_configs import main as generate

class ConfigChangeHandler(FileSystemEventHandler):
    def on_modified(self, event) -> None:
        if "shared_rules.md" in str(event.src_path):
            print(f"変更検知: {event.src_path}")
            generate()

if __name__ == "__main__":
    observer = Observer()
    observer.schedule(
        ConfigChangeHandler(),
        path="config",
        recursive=False,
    )
    observer.start()
    print("設定ファイルの監視を開始しました。Ctrl+Cで停止。")
    
    try:
        while True:
            time.sleep(1)
    except KeyboardInterrupt:
        observer.stop()
    
    observer.join()
# バックグラウンドで監視を起動(開発中は常時起動)
python3 sync_configs.py &

# または launchd (Mac) で自動起動させることも可能

Gitでチーム全体に設定を共有する

# 設定管理リポジトリ(別リポジトリとして運用する方法)
git clone https://github.com/your-org/ai-configs ./ai-configs

# 各プロジェクトでシンボリックリンクを作成
ln -sf $(pwd)/ai-configs/shared_rules.md ./config/shared_rules.md

# チームメンバーが設定を変更したらPRを出してマージ
# マージ後に全プロジェクトで git pull && python3 config/generate_configs.py
# pre-commit フックで自動生成(.git/hooks/pre-commit)
#!/bin/bash
python3 config/generate_configs.py
git add CLAUDE.md AGENTS.md

あわせて読みたい

参考ソース