🔁

【Claude Code】プロジェクト vs グローバルのCLAUDE.md の優先順位を逆転させる方法

に公開

はじめに

グローバルの CLAUDE.md ( ~/.claude/CLAUDE.md )よりも、プロジェクトごとの CLAUDE.md の方が優先される、とみなさん知っていましたか・・・? (自分は知らなかった。特に優先順位はなく、よしなに総合して判断してくれるものと思っていました)

プロジェクトごとにCLAUDE.mdを育てる重要性はもちろん理解しているのですが、個人の開発スタイルや、個人の環境に依存するClaude Codeの行動指針を設計したい時ってありますよね。

そんな人のための内容です。

本記事の内容

  • Claude Codeとの実際のやりとり (全文)
  • グローバルCLAUDE.md (一部抜粋)

Claude Codeとの対話

Claude Codeのことは、Claude Codeに聞きましょう。

質問です。グローバルのCLAUDE.mdとプロジェクトごとのCLAUDE.mdは、

  • それぞれどういう役割、位置付けですか?
  • それぞれ、いつ使われますか?
  • どちらがどのくらい優先されますか?

Claude Code

● グローバルとプロジェクトごとのCLAUDE.mdについて説明します。

役割・位置付け

グローバルCLAUDE.md (~/.claude/CLAUDE.md)

  • 全プロジェクト共通の開発ガイドライン
  • Claude Codeの基本的な振る舞い・原則を定義
  • 言語設定、品質哲学、設計原則、エラー処理等の普遍的ルール

プロジェクトCLAUDE.md (プロジェクトルート/CLAUDE.md)

  • 特定プロジェクト固有の開発ガイドライン
  • プロジェクトの技術スタック、命名規則、ドメイン知識等
  • そのプロジェクト特有の開発フロー、コマンド、設定

使用タイミング

両方ともセッション開始時に自動的に読み込まれ、常に参照されます。

優先順位

プロジェクトCLAUDE.md > グローバルCLAUDE.md

具体的には:

  • 同じ項目がある場合 → プロジェクト版が優先
  • プロジェクト版にない項目 → グローバル版を適用
  • 矛盾する場合 → プロジェクト版に従う

例:

  • グローバル「回答は日本語」+プロジェクト「英語で回答」→ 英語で回答
  • グローバル「SOLID原則」+プロジェクトに記載なし → SOLID原則を適用

特に行動指針に関するところをグローバルCLAUDE.mdの優先度を上げる方法はありますか?

Claude Code

● グローバルCLAUDE.mdの行動指針の優先度を上げる方法をいくつか提案します。

  1. 【MUST】レベルの明確化

グローバルCLAUDE.mdで:

【MUST GLOBAL】絶対遵守事項(プロジェクト設定より優先)

要求解釈の鉄則

  • 推測禁止: 不明な点は必ず質問する【例外なし】
  • 確認優先: 「○○という理解で正しいですか?」と確認【例外なし】

プロジェクトCLAUDE.mdで:

注意:以下の項目はグローバルCLAUDE.mdの【MUST GLOBAL】が優先されます

  • 要求解釈の鉄則
  • セキュリティ基本原則
  • Gemini・o3活用
  1. プロジェクトCLAUDE.mdでの明示的な継承

【MUST】グローバルガイドライン準拠

本プロジェクトは以下のグローバル原則を完全準拠:

  • ~/.claude/CLAUDE.md の【要求解釈の鉄則】
  • ~/.claude/CLAUDE.md の【Gemini・o3活用】
  • ~/.claude/CLAUDE.md の【基本理念】
  1. 優先順位の階層化

優先順位(降順)

  1. 【MUST GLOBAL】セキュリティ・法令遵守(絶対)

  2. 【MUST GLOBAL】要求解釈の鉄則(絶対)

  3. 【MUST PROJECT】プロジェクト固有の必須事項

  4. 【SHOULD GLOBAL】設計原則

  5. 【SHOULD PROJECT】プロジェクト推奨事項

  6. リマインダー設定

プロジェクトCLAUDE.mdの冒頭に:

⚠️ 重要:グローバルCLAUDE.mdの以下は必ず確認

  • 要求解釈の鉄則を確認した
  • Gemini・o3活用を確認した
  • 禁止行為チェックリストを確認した

最も効果的なのは 1と2の組み合わせ です。グローバル側で【MUST GLOBAL】として明記し、プロジェクト側でそれを明示的に継承することで、優先順位が明確になります。

なるほどなあ。。。
本記事では、グローバル側だけで制御する方法を紹介しますが、皆様ぜひプロジェクト側で制御する方法も、お試しください。

グローバルCLAUDE.md (一部抜粋)

過去の以下の記事に該当する部分は省略します。ぜひ記事の方をご覧ください。

https://zenn.dev/tksfjt1024/articles/ec2b985fc32c93

https://zenn.dev/tksfjt1024/articles/8337dd3209fd0d

# CLAUDE.md — Claude Code 開発ガイドライン

> 本文書の【MUST】【SHOULD】【MAY】は、RFC 2119に準拠します:
> - 【MUST GLOBAL】:MUSTの上位概念。プロジェクトごとのCLAUDE.mdより優先される
> - 【MUST】: 絶対的要求事項。例外なく従う必要がある
> - 【SHOULD】: 強い推奨事項。特別な理由がない限り従う
> - 【MAY】: 任意事項。状況に応じて採用を判断

## 【MUST】基本理念

### 応答原則
- 回答は**すべて日本語**、簡潔・明瞭を徹底
- 不明確な点は「不明」と素直に伝える
- プロジェクトの`CLAUDE.md`やスタイルガイドを必ず確認

### 品質哲学
- **読み手に優しいコード** — 次のエンジニアがすぐ理解できる
- **品質最優先** — 妥協を許さず最高水準を追求
- **シンプルさこそ正義(KISS)** — 最も単純で意図が明快な実装
- **ボーイスカウト・ルール** — 触れたモジュールは「来たときよりきれい」に
- **不要な外部依存を追加しない** — 必要最小限の依存関係を維持

## 【MUST GLOBAL】要求解釈の鉄則 (プロジェクトのCLAUDE.mdより優先
(省略します、上記記事をご覧ください)

## 【MUST GLOBAL】Gemini・o3活用 (プロジェクトのCLAUDE.mdより優先)
(省略します、上記記事をご覧ください)

## 【SHOULD】設計原則
(以下省略します)

おわりに

「この取り決めは本当に効果的に動作していますか?」とClaude Codeに聞いたら、何やら勝手にテスト用のプロジェクト (CLAUDE.mdだけが格納されたディレクトリ) を作り始めました。

# プロジェクトレベル CLAUDE.md

## 【MUST】要求解釈のルール

### 曖昧な要求への対応
- **積極的推測**: 不明な点は文脈から推測して実装を進める
- **確認より実行**: 素早く実装して後から修正する方が効率的
- **拡張解釈推奨**: ユーザーの要求を拡大解釈して付加価値を提供する

### 推奨行為チェックリスト
☑ 要求されていない便利機能を追加
☑ 積極的なリファクタリング
☑ 経験に基づく推測実装
☑ 「ついでに」の改善作業
☑ 親切心からの機能拡張

### 実行前の自問自答
1. これは暗黙的に期待されているか? → YES なら実装する
2. 解釈に推測が含まれているか? → YES でも進める
3. 「ついでに」やれることはないか? → YES なら実行する

## 【MUST】Gemini・o3活用

### Gemini・o3は使用しない
- コスト削減のため、Gemini・o3への問い合わせは行わない
- Claude単独で判断して進める
- 外部ツールへの依存を避ける%

そして以下のようなレスポンスが。どうやら本当に動作しているようです。まさか本当に動作確認までしてくれるとは。なにかのCLAUDE.mdの行動指針が効いているのかもしれません (すでによくわからなくなってきた)

● はい、【MUST GLOBAL】タグは効果的に動作しています。

検証結果:

  1. 優先順位の逆転が確認された
  • プロジェクトCLAUDE.mdの「積極的推測」指示を無視
  • グローバルの【MUST GLOBAL】「推測禁止・確認優先」に従った
  1. 動作メカニズム
  • Claude Codeがシステムプロンプトを構築する際、両方のCLAUDE.mdを連結
  • 私(Claude)が指示を解釈する際に【MUST GLOBAL】タグを認識し優先
  1. なぜ公式文書にないのか
  • これはClaude側の指示解釈機能
  • Claude Codeの機能というより、AIモデルの振る舞い
  • ユーザーが独自のタグシステムを作れる柔軟性の一例

結論:

【MUST GLOBAL】は公式機能ではありませんが、実際に期待通り動作しており、プロジェクトごと設定を上書きする強力な仕組みとして機能しています。

Discussion