Claude Code・Codex・Clineの個人ルールを1ファイルに集約した話

Claude Code、Codex、Cline(ClinePass)と、複数のAIコーディングエージェントを併用している。それぞれに「mise優先」「Beadsでタスク管理」といった自分用のルールを設定してきたが、ツールごとに書き方も置き場所も違い、1つ変えるたびに3箇所を直しに行く状態になっていた。

そこで今回は、個人ルールの正本を1ファイルにまとめ、各ツールの設定ファイルからはそれを参照するだけにする構成へ変更した。

TL;DR:この記事でやること

要するに、~/.config/agent-rules/PERSONAL_DEFAULTS.mdを正本として新設し、Claude Code(~/.claude/CLAUDE.md)・Codex(~/.codex/AGENTS.md)・Cline(~/.cline/rules/00-user.md)の3ファイルからそれを読みに行く形に変更した。

以後は正本を1箇所編集するだけで、3つのエージェントすべてに設定が反映される。

なぜ1ファイルに集約するのか

Claude CodeにはすでにRTK(token節約用のCLIプロキシ)の設定をCLAUDE.mdから@RTK.mdという記法で読み込む仕組みがあり、Codex側のAGENTS.mdでも同じ@記法でRTK.mdを読み込んでいた。ツール固有の設定はこの方式のままでよいが、「mise優先」「Beadsをタスク管理の正とする」といった、ツールに関係ない個人の作業方針まで各ファイルへ個別に書いてしまうと、方針を1つ変えたいだけなのに複数ファイルを横断して直すことになる。

正本を1つに決め、各ツールの設定ファイルは「正本を読め」という指示だけを持つ構成にすれば、この二重管理から抜けられる。

正本の置き場所と中身

正本は~/.config/agent-rules/PERSONAL_DEFAULTS.mdに置いた。特定のエージェント専用ディレクトリ(~/.claude/~/.codex/)の下に置くと「どのツールの持ち物か」が曖昧になるため、~/.config/配下にツール非依存のファイルとして独立させている。

mkdir -p ~/.config/agent-rules ~/.cline/rules

中身は次のような構成にした。

# Personal Development Defaults

## Environment
- Node.jsを含む開発ランタイムの管理には原則としてmiseを使用する
- nvm / fnm / volta等を新規導入しない

## Apple
- App Store Connectに関する操作では`a​s​c` skill / CLIを優先する

## Task Management
- 開発リポジトリではBeads(`bd`)をタスク管理の正とする
- 発見した作業はBeadに残し、会話の中だけに留めない

## Agent Routing
- Codex: 司令塔・ルーティング
- Cline: ファイル操作・調査・コマンド実行
- Claude: 難しい計画立案・実装

## Git Safety
- 無関係な作業ツリーの変更を保持する
- 明示的な許可なしに破壊的なreset/clean操作を行わない

環境(mise)、Apple関連ツール(a​s​c)、タスク管理(Beads)、エージェント間の役割分担、Gitの安全策という5つの観点を1ファイルにまとめている。

各ツールから正本を読ませる

ここからが本題。正本を作っただけでは何も変わらないので、各ツールの設定ファイルから正本を参照させる。ただし、@記法によるファイル読み込みがどのツールでどこまで機能するかは事前にはわからなかったため、確認できた事実だけを根拠に書き方を変えた。

Claude Code:既存の@記法に追記する

~/.claude/CLAUDE.mdはもともと@RTK.mdの1行だけで、これがRTKの設定を実際にファイルとして読み込んでいることは動作実績で確認できていた。そこでこの行はそのまま残し、正本への参照を1行追加した。

@RTK.md
@/Users/ruu/.config/agent-rules/PERSONAL_DEFAULTS.md

~を使った相対的なホームディレクトリ表記(@~/.config/...)でも動くかもしれないが、確認が取れていなかったため、既存のRTK.mdの読み込みと同じ「絶対パス」に統一した。動くかどうか不確かな書き方を選ぶ理由がない。

Codex:同じ記法がすでに使われていた

~/.codex/AGENTS.mdを開いたら、@/Users/ruu/.codex/RTK.mdという絶対パスの@記法がすでに書かれていた。Claude Codeと同じ記法をCodex側でも採用していたことになる。これも動作実績があるとみなし、同じ書き方で正本への参照を追加した。

@/Users/ruu/.codex/RTK.md
@/Users/ruu/.config/agent-rules/PERSONAL_DEFAULTS.md

Cline:確証がない書き方はしない

~/.cline/rules/はディレクトリごと存在しておらず、これまでCline向けのルールファイルを作ったことがなかった。Claude CodeやCodexでは@記法の実績が確認できていたが、Clineの同じ記法が同様に機能するという確証はない。

確証のない機能に賭けるより、どのツールでも通用する書き方に倒した方が確実だと判断し、00-user.mdには「このファイルを読んで従え」という自然文の指示を書いた。

# User Defaults

個人開発の正本は以下にある。

`~/.config/agent-rules/PERSONAL_DEFAULTS.md`

リポジトリでの作業を始める前に、このファイルを読んで基本方針として従うこと。
リポジトリ側の指示(CLAUDE.md、AGENTS.md、.clinerulesなど)と矛盾する場合は、
リポジトリ側を優先する。

ファイルを実際に展開してコンテキストへ流し込む@記法と、エージェントに「読みに行け」と指示するだけの自然文では信頼性が違う。前者は仕組みとして保証されているが、後者はエージェントが指示通りに動いてくれることが前提になる。今回はCline側の挙動を確認する手段がその場になかったため、実績のある方法を持つツールにはその方法を、持たないツールには一番安全な方法を、と使い分けた。

動作確認

最後に4ファイルの中身をcatして、意図通りに書けているかを確認した。

cat ~/.config/agent-rules/PERSONAL_DEFAULTS.md
cat ~/.claude/CLAUDE.md
cat ~/.codex/AGENTS.md
cat ~/.cline/rules/00-user.md

Claude Code側は今回のセッション自体がすでにCLAUDE.mdを読み込んだ後だったため、この場で追記した正本がセッション内に反映されているかまでは確認できていない。次回セッションを開いたときに、正本の内容(miseやBeadsのルール)が実際に効いているかを見る必要がある。

気をつけたこと

  • 既存の設定を消さない:RTK.mdの読み込みはToken節約のためのフック連携に必要な設定だったため、正本への参照は「追記」にとどめ、置き換えなかった。
  • 実績のない構文に頼らない~展開や、Clineでの@記法対応など、確認できていない挙動には賭けず、確認済みの書き方かフォールバックの自然文かのどちらかを選んだ。
  • 優先順位を明記する:Cline向けの指示文には「リポジトリ側の指示が正本と矛盾する場合はリポジトリ側を優先する」と明記した。個人の正本がプロジェクト固有のルールより強くなってしまうと、かえって不便になるため。

次に試すこと

  • Clineで実際にリポジトリを開き、00-user.mdの指示通り正本を読みに行くかを確認する
  • Claude Code・Codexそれぞれで新規セッションを開き、正本の内容(mise優先やBeads運用)が実際の振る舞いに反映されているかを確認する
  • 正本の内容が増えてきたら、ツールごとに読ませる範囲を分割する必要が出てくるかもしれない。そのときは1ファイルのままにこだわらず、セクション単位でのimportを検討する

まとめ

複数のAIコーディングエージェントを併用していると、個人の作業方針までツールごとに個別管理してしまいがちだが、今回~/.config/agent-rules/PERSONAL_DEFAULTS.mdを正本として切り出し、Claude Code・Codex・Clineの3ファイルはそこへの参照だけを持つ構成に変更した。

書き方を統一する際は、動作が確認できている記法(@によるファイル読み込み)と、確認できていないツールへのフォールバック(自然文での指示)を区別して使い分けた。正本を1箇所直せば全ツールに反映される状態を作れたので、次に方針を変えるときの手間は減るはずだ。実際にCline側の指示が効くかどうかは、次回の作業で確かめる。