カスタムPostToolUseフックによるプロジェクトツリー外でのオンデマンドCLAUDE.md読み込み

Claude CodeにおけるCLAUDE.mdの読み込み動作
ソースでは、Claude Codeが異なる条件下でCLAUDE.mdファイルをどのように処理するか詳細に説明されています:
- 階層的な読み込み: サブディレクトリでセッションを開始すると、ローカルのCLAUDE.mdと親ディレクトリのCLAUDE.mdファイルの両方が読み込まれます。例:
root/a/でのセッションはroot/a/CLAUDE.mdとroot/CLAUDE.mdの両方を読み込みます。 - オンデマンドの子ディレクトリ読み込み: 現在のセッションのルートディレクトリの子ディレクトリは、Claudeがそれらのディレクトリ内のファイルにアクセスする際に、それぞれのCLAUDE.mdファイルを読み込みます。例:
root/でのセッションは最初にroot/CLAUDE.mdを読み込み、その後root/a/内のファイルをClaudeが読み取る際にroot/a/CLAUDE.mdを読み込みます。 - フラグによる追加ディレクトリアクセス:
--add-dirをCLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1と共に使用すると、プロジェクトツリー外のディレクトリ内のCLAUDE.mdファイルにアクセスできますが、これらはオンデマンドではなくセッション開始時に読み込まれます。
問題点:外部ディレクトリのCLAUDE.mdファイルがオンデマンドで読み込まれない
著者は、あるプロジェクトで作業中に、Claudeにセッションのディレクトリツリー外のディレクトリからファイルを読み取るよう指示した場合、それらの外部ディレクトリ内のCLAUDE.mdファイルは自動的に読み込まれないと指摘しています。これにより、コンテキストの段階的な開示に問題が生じ、毎回手動での介入が必要になります。
解決策:カスタムPostToolUseフック
この解決策は、以下の機能を持つPostToolUseフックを作成することを含みます:
- 各ツール呼び出し時に、Claudeがプロジェクトツリー外で動作しているかどうかをチェック
- そのディレクトリから上方向に探索し、CLAUDE.mdファイルを探す
- 見つかった場合、Claudeにそれらを読み取るよう指示するためにコード2で終了
- 既に表示されたファイルをセッションスコープの一時ファイルで追跡し、重複した指示を避ける
SessionStopフックは、追跡に使用された一時ファイルをクリーンアップします。著者は、このPostToolUseフック機能を実装するcheck_claude_md.pyというスクリプトを提供しています(元の投稿にソースリンクあり)。
実用的な実装
このアプローチは、--add-dirフラグをCLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1と共に使用した場合に、外部ディレクトリのCLAUDE.mdファイルがセッション開始時のみ読み込まれるという特定の制限に対処します。ツール呼び出しを傍受し、プロジェクトツリー外での操作をチェックすることで、このフックはプロジェクトツリー内の子ディレクトリが動作するのと同様に、オンデマンド読み込みを可能にします。
この種のカスタムフックは、複数のプロジェクトを頻繁にまたがって作業する開発者や、外部ディレクトリから共有コンテキストファイルを参照する必要があり、毎回手動でClaudeにCLAUDE.mdファイルを読み取るよう指示したくない開発者にとって有用です。
📖 Read the full source: r/ClaudeAI
👀 See Also

ほとんどのClaudeパイプラインの失敗はモデルではなくプロンプトに原因がある理由とスキルで修正する方法
Redditの投稿によると、Claudeワークフローにおけるパイプライン障害の根本原因は、プロンプトをスキルとして扱っていることにある。解決策は、入力契約、出力スキーマ、学習ファイルを定義し、スキルをv1に昇格させることである。

OpenClaw インストールのヒント:オンボーディングをスキップして診断コマンドを使用する
Redditユーザーが実用的なOpenClawインストールのアドバイスを共有:一般的な問題を避けるため、特にVPSセットアップではオンボーディングプロセスをスキップし、openclaw doctorとopenclaw statusコマンドを使用して設定の問題を診断する。

否定プロンプトは弱い:代わりに、望ましい行動を明確に説明せよ
Redditの分析によると、Claudeに「言葉を濁すな」や「道徳的に語るな」と指示してもほとんど効果がありません。代わりに「1〜2文で答えて」や「直接的な答えを、但し書きは任意として扱って」といった肯定的な指示を使いましょう。また、「ありがとう!」で締めくくるとトーンが和らぎます。

构建基于Claude Code的流程层以处理上下文与协调
あるチームが、Claude Codeの上にエンジニアリングステップごとの入出力を宣言するプロセスレイヤーを構築し、ハンドオフ時のコンテキスト損失を減らし、個人の規律に頼らずに生産性の複利的な向上を実現した方法を共有しています。