0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude Code の CLAUDE.md 設計パターン完全ガイド

0
Last updated at Posted at 2026-04-16

Claude Code の CLAUDE.md 設計パターン完全ガイド

はじめに

Claude Code を使い始めてしばらくすると、2つの壁にぶつかる。

壁1:「CLAUDE.md に何を書けばいいのか分からない」

公式ドキュメントには「プロジェクトのコンテキストを書く場所」とあるが、実際のところ何をどのレイヤーに書き、どう構造化すれば AI が本当に「賢く動く」のかは試行錯誤なしには分からない。

壁2:「CLAUDE.md にルールを書いたのに、Claude が守ってくれない」

実はこれは仕様だ。Claude Code の公式ドキュメントには明記されている。

CLAUDE.md はアドバイザリー(約70%遵守)。Hooks は100%決定論的に実行される。

CLAUDE.md は LLM へのソフトな指示にすぎない。確率的にしか守られない。一方、Hooks(フック)はシェルコマンドとして実行されるため100%動作する。

この前提を踏まえた上で、「それでも CLAUDE.md を最大限に活かすにはどう設計すればよいか」を実践的なパターンで解説する。筆者は複数プロジェクト・数十本のスキルを横断管理する Vault 環境を運用してきた中で、以下のパターンを確立した。


CLAUDE.md の基本構造:3レイヤー設計

Claude Code は CLAUDE.md3つのスコープ で読み込む。

~/.claude/CLAUDE.md          # グローバル(全プロジェクト共通)
<プロジェクトルート>/CLAUDE.md  # プロジェクトスコープ
<サブディレクトリ>/CLAUDE.md   # ローカルスコープ
レイヤー 書くべき内容 書いてはいけないもの
グローバル 言語設定・出力形式・汎用ルール・セキュリティポリシー プロジェクト固有の仕様
プロジェクト フォルダ構造・ルール・検索規則 個人の認証情報・シークレット
ローカル サブシステムの詳細仕様 上位レイヤーと重複する内容

グローバルに書くべきこと(セキュリティルール・言語設定等)とプロジェクト固有に書くべきことを分離する設計が基本になる。


パターン1: 優先度階層を明示する

複数の CLAUDE.md が存在する場合、どのルールが優先されるかを ファイル冒頭に明示する

> 優先度: グローバル `~/.claude/CLAUDE.md` > このファイル > PJローカル `CLAUDE.md`

これだけで Claude が複数の CLAUDE.md を参照した際の判断精度が上がる。特にグローバルにセキュリティルールを書いておくと、プロジェクト側がどう書かれていてもセキュリティポリシーが優先される。


パターン2: Map パターン(フォルダ構造を宣言する)

最も効果の高いパターンの一つが 冒頭にフォルダマップを置く ことだ。

## Map

| フォルダ | 内容 |
|---------|------|
| `00_Inbox/` | 未整理メモの一時置き場 |
| `01_Projects/Products/` | サービス化・収益化PJ |
| `02_Knowledge/` | 永続参照ノート |
| `03_Archive/` | 完了PJ(**検索対象外**) |

Claude はプロジェクト全体のファイル構造を把握していない。マップを渡すことで「どこを見ればよいか」を一発で理解させられる。

重要: 03_Archive/ は検索対象外 のような 除外指示 を必ず書く。これがないと Claude が不要なファイルを参照して無駄なトークンを消費し、誤回答を生む。

詳細なツリーは別ファイルに切り出すと CLAUDE.md が肥大化しない。

詳細ツリー: → `.claude/docs/vault-structure.md`

パターン3: 検索戦略を明示する

Claude はデフォルトでは Grep や Glob を使って全ファイルを走査しようとする。これはトークンの無駄遣いになる。使い分けルールを明示しておく。

## 検索ルール

以下の優先順で使い分ける。Vault全走査しない。`03_Archive/` は除外。

1. **特定ファイル名・正確なキーワード** → Grep/Glob(高速・正確・コスト最小)
2. **概念・文脈検索 / 3PJ以上横断** → RAG検索ツールを優先(Grepをn回繰り返すより速い)
3. **特定ノートの関連ノート発見** → find_similar_notes ツール
4. **上記全て失敗** → Glob広範囲でフォールバック

ポイント: 「失敗したらどうするか」のフォールバックチェーンを定義すること。これがないと Claude がループする。

このような「検索フローチャート」を書くと、「〜に関するノートを探して」のような曖昧な指示に対して Claude が適切なツールを選択するようになる。


パターン4: イベントトリガーテーブル(Layer 2記録)

CLAUDE.md に最も価値を生む設計の一つが、イベント駆動の記録ルールだ。

## イベントトリガー定義

| イベント | 検知条件 | 書き込み先 | アクション |
|---------|---------|-----------|-----------|
| ツールエラー | Bash exit!=0 / MCP error | `memory/skill-traces.md` | エラー内容+解決策を追記 |
| ユーザー修正 | 「違う」「やめて」等で方向転換 | `memory/feedback_*.md` | ルール+Why+How to apply で記録 |
| 設計判断 | CLAUDE.md / agents/ への書き込み | `02_Knowledge/decisions/` | ADR形式で記録 |
| 外部API使用 | 課金API呼び出し | その場でメモ | session-end フラグに反映 |

セッション終了を待たずに即座に記録するルールにすることで、コンテキスト圧縮(compact)後もナレッジが残る。「判断に迷ったら書く」という哲学を Claude に植え付けるのが重要だ。


パターン5: コード変更トリガーテーブル

変更と参照すべきドキュメントを対応表として書いておくと、AI が変更後の整合性チェックを自律的に行う。

## コード変更トリガーテーブル

| 変更対象 | 参照すべき仕様 | 対応 |
|---------|--------------|------|
| `CLAUDE.md` | `memory/MEMORY.md`, `workflow-orchestration.md` | 3箇所の整合性を確認 |
| `.claude/agents/` のAgent定義 | `MEMORY.md`, `skill-index.md` | Agent数・名前の同期 |
| `.claude/skills/` のスキル追加・削除 | `skill-index.md`, `MEMORY.md` | INDEX更新必須 |
| API・MCP設定変更 | `MEMORY.md` の該当セクション | 接続情報の整合 |
| `.env*` / シークレット変更 | `.gitignore`, gitleaks設定 | フォールバック値禁止確認 |

これにより Claude が「CLAUDE.md を変更したので MEMORY.md も自動で更新する」という行動を学習する。「スキルを追加したらインデックスの更新を忘れた」という事故がほぼゼロになる。


パターン6: クエリキーワード辞書

繰り返し使う操作をショートカットとして定義する。

## クエリキーワード

| キーワード | 動作 |
|-----------|------|
| `pj-review` | 指定PJの全体レビュー |
| `risk-scan` | Vault内リスク情報を抽出・分類 |
| `daily-start` | デイリーノート雛形生成 |
| `知識整理` | 00_Inbox → 02_Knowledge 仕分け提案 |
| `朝刊` | `/morning-briefing` スキル実行 |

「朝刊」と入力するだけでニュースブリーフィングが走る、という UX が実現できる。Claude との会話を自然言語インターフェース化するパターンだ。ドキュメントとしても機能するため、チームで使う場合も有効だ。


パターン7: 哲学セクションで行動指針を与える

細かいルールを羅列するより、AI の行動原理(哲学) を先に定義するほうが柔軟に機能する。

## 哲学

- AIの知識を信頼し、ゴールと方向性だけ渡す。手順書は最小限に
- コンテキストに応じた最適解をAIが自律判断することを歓迎する
- ルールを追加したくなったら「人格で代替できないか」を先に考える

「ルールを追加したくなったら人格で代替できないか考える」は特に重要だ。ルールが増えると CLAUDE.md が肥大化し、遵守率がさらに下がる。哲学レベルで方向性を示し、細かいルールは最小限に留めるのが長期運用のコツだ。


パターン8: シークレット管理ルールの明文化

セキュリティミスは CLAUDE.md に明記することで防げる。Claude はコード生成時にこのルールを参照するため、うっかりキーをハードコードするリスクが激減する。

## シークレット管理(必須)

- コード内に `os.environ.get("KEY", "実値")` のフォールバック値でAPIキーを書くことは**禁止**
- フォールバックは空文字 `""` or 例外を raise
- 新規リポ作成時は `.gitignore``.env*``.env.example` 除く)+ `.mcp.json` が含まれていることを確認
- Public リポには `gitleaks` pre-commit hook を必ず導入
# NG: フォールバックに実値を書く
api_key = os.environ.get("OPENAI_API_KEY", "sk-xxxxx")

# OK: フォールバックは空文字 or 例外
api_key = os.environ.get("OPENAI_API_KEY", "")
if not api_key:
    raise ValueError("OPENAI_API_KEY is not set")

パターン9: 段階的参照(CLAUDE.md を肥大化させない)

CLAUDE.md に全情報を詰め込むと肥大化してトークンを浪費する。詳細は別ファイルに切り出し、必要なときだけ参照させるのが鉄則だ。

## 詳細ドキュメント(必要時に参照)

- **分析フレームワーク**`.claude/docs/analysis-frameworks.md`
- **ワークフロー設計**`.claude/docs/workflow-orchestration.md`
- **Vault構造詳細**`.claude/docs/vault-structure.md`
- **スキル管理**`.claude/docs/skill-management.md`

メイン CLAUDE.md には「地図」を置き、「詳細」は別ファイルに委譲する。Claude は必要に応じて参照先を読みに行くため、無駄な読み込みが発生しない。これはレイヤー構造と呼べる設計で、CLAUDE.md の肥大化を長期にわたって防ぐ。


まとめ

CLAUDE.md の設計で効果的だったパターンをまとめる。

パターン 効果
優先度階層の明示 グローバル・PJ・ローカルの役割を分離する
Mapパターン フォルダ構造と「検索除外ディレクトリ」を宣言する
検索フローチャート Grep/RAG/Glob の使い分け+フォールバックチェーンでループを防ぐ
イベントトリガーテーブル セッション中の記録タイミングを機械的に定義する
コード変更トリガー 変更時に連動すべきドキュメントをテーブルで対応付ける
クエリキーワード辞書 頻出操作をショートカット化してUXを高める
哲学セクション ルールではなく方向性を与え、細かい指示への依存を減らす
シークレット管理 コード生成時のセキュリティミスを未然に防ぐ
段階的参照 CLAUDE.md は「地図」として機能させ、詳細は別ファイルに委譲する

CLAUDE.md は「書いたら終わり」ではなく、使いながら育てるドキュメントだ。遵守率70%という制約を理解した上で、Hooks と組み合わせて「100%決定論的に動かすべきこと」と「LLMに任せるべきこと」を明確に分離することが、長期運用の鍵になる。まずは本記事のパターンを1〜2個試してみてほしい。

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?