はじめに
CLAUDE.mdは、Claude Codeにおいて、プロジェクト全体の情報を補強し、セッションが新しくなってもコンテキストを保存することができる便利なファイルです。ところが、私のプロジェクトで、なぜか全然内容を踏まえてくれないことが多発したので、このCLAUDE.mdについて調査することとなりました。その中で発見した解決策(というより改善策?)をお伝えします。参考になれば幸いです。
注意点として、内容はClaude Codeの正式仕様として明記されているものではなく、筆者の経験と推測に基づく内容です。問題を必ず回避できると保証するものではありません。公式仕様はここに書いてあります(メモリ=CLAUDE.md機能)。
解決策
CLAUDE.mdのヘッダーを復元する
やり方
以下のどちらかの方法をとる。
-
/initコマンドを実行する。 - CLAUDE.mdの 先頭 に以下のようなパーツを追加する。他の言語に翻訳されている場合は、上書きする。
# CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
詳細
私のプロジェクトでは、当初、この先頭部分を不要だと思い削除していました。しかし、CLAUDE.mdを無視することが増えました。そこで、 /init コマンドを再度実行すると、問題が劇的に改善すると同時に、以上のヘッダー部分が復元されました。
興味深いのは、CLAUDE.mdの全文がもともと日本語で書かれていたので、アシスタントがその意図をくみ取って日本語を維持したまま修正をしたのですが、ヘッダー部分だけは本来の英語の文に変更したことです。
私の推測では、CLAUDE.mdをコンテキストに追加する機能は、AIモデルに組み込まれているのではなく、Claude Codeのアプリケーション層による機能で、その実装において、CLAUDE.mdであることをファイル名以外の情報をもとに判断している可能性があります。CLAUDE.mdというファイルが、正しい場所にあり、さらに内容として上記ヘッダーが存在しているときにだけ、Coaude CodeがCLAUDE.mdとして処理する仕様であると推測しています。
Claude Codeを再起動する
やり方
/exit コマンドか、他の方法で対話モードを終了する。その後、 $ claude コマンドを実行して対話モードを再開する。
さらに、ユーザーがCLUADE.mdを変更した場合には、以上の操作を再度行う。
詳細
Claude Codeは、対話モード起動時に一度だけCLAUDE.mdを読み込むという推測に基づいています。以下は推測です。アシスタントが自分で内容を変更した場合は、それ自体がコンテキストに含まれているので、正しく内容を認識できます。しかし、ユーザがエディターを通して変更した場合、それはコンテキストに含まれていないので、古い情報を認識したままアシスタントが行動してしまいます。私のプロジェクトでは、CLAUDE.mdに限らず、現在のコンテキストに関係ある何らかのファイルを手動で変更をした場合、必ずClaude Codeを再起動するようにしています。