更新日: ・ 自動化ノートの管理人

CLAUDE.mdに「家のルール」を書いておくと、毎回言わなくて済む

Claude Codeに家の用事の自動化を頼んでいると、同じ注意を何度も口にしていることに気づきます。「仮想環境は有効化しないで」「日本語を含むファイルはこの形式で保存して」。新しい会話を始めるたびに言い直すのは面倒ですし、言い忘れた日に限って同じ失敗が起きます。

この「毎回言うこと」を書いておく場所が CLAUDE.md です。私が使っている書き方を、公式ドキュメントで確かめた仕様とあわせて紹介します。

CLAUDE.mdとは

公式ドキュメントによると、Claude Codeは会話(セッション)ごとに、まっさらな状態から始まります。その間をつなぐ仕組みの1つが、自分で書く CLAUDE.md です。普通のマークダウンで書いた指示ファイルで、Claudeはセッションの開始時にこれを読みます。公式は、これを「毎回説明し直すことを書き留める場所」と位置づけています。

注意点が1つあります。公式は、CLAUDE.mdを「強制される設定」ではなく「文脈」として扱うと説明しています。守らせることが絶対に必要な動作(特定の操作を禁止するなど)は、CLAUDE.mdではなくフック(hook)や権限の設定で止めるものです。CLAUDE.mdは、あくまで「こうしてほしい」という頼みごとです。

置き場所で、効く範囲が変わる

CLAUDE.mdは置く場所によって、効く範囲が変わります。公式の説明をもとに整理すると、次のとおりです。

置き場所効く範囲家の自動化での使い方
~/.claude/CLAUDE.md自分のすべてのプロジェクトどのプロジェクトでも守ってほしい好み
./CLAUDE.md または ./.claude/CLAUDE.mdそのプロジェクト家計用、書類用など、プロジェクト共通の注意
サブフォルダの CLAUDE.mdそのフォルダのファイルを扱うとき1つのスクリプトだけの特別な事情

起動したフォルダとその上のフォルダにあるCLAUDE.mdは、起動時にまとめて読み込まれます。上書きではなく、すべて連結されます。サブフォルダのものは起動時には読まれず、Claudeがそのフォルダのファイルを読んだり編集したりしたときに読み込まれます。また、自分専用でGitには入れたくないメモは、CLAUDE.local.md に書く決まりです。

私は、フォルダ全体の取り決めをいちばん上のCLAUDE.mdに、各プロジェクト固有の事情をそのフォルダのCLAUDE.mdに分けています。どれが読み込まれているかは、セッション中に /context を実行すると「Memory files」の一覧で確かめられます。

CLAUDE.mdが読まれる流れ

  1. 1. 起動するフォルダとその上のCLAUDE.mdを連結して読む
  2. 2. 作業する書いてある取り決めを踏まえて動く
  3. 3. サブフォルダのファイルを扱うそのフォルダのCLAUDE.mdが追加で読まれる
  4. 4. 確かめる/context で読み込み済みの一覧を見る
サブフォルダのCLAUDE.mdは、そのフォルダのファイルを扱うときに読まれます。

最初の1枚は /init に作らせる

白紙から書くのが大変なら、/init を実行します。Claudeがフォルダの中身を調べ、ビルドの方法や規約など、見つけたことを書いた下書きを作ってくれます。すでにCLAUDE.mdがある場合は、上書きせずに改善案を出す、と公式にあります。ただし、自動で見つかるのはコードから読み取れることだけです。「この環境ではこうしないと止まる」といった事情は、あとから自分で足します。

家のルールの例

私のCLAUDE.mdには、プロジェクトをまたいで守ってほしい注意を書いています。家の自動化向けに書き直すと、次のような形です。

# 家のルール

## Windowsでの注意
- Pythonの仮想環境は有効化(Activate.ps1)しない。
  venv内の python.exe をフルパスで呼ぶ。
  理由: 実行ポリシーで .ps1 の実行が止まるため。
  例: "C:\path\to\.venvs\myproject\Scripts\python.exe" main.py
- 日本語を含む .ps1 は、UTF-8 BOM付きで保存する。
  理由: BOMが無いと、PowerShell 5.1が構文エラーを出すため。

## 自動実行するスクリプト
- タスクスケジューラで無人実行するものは、venvをOneDriveの外
  ($env:USERPROFILE\.venvs\myproject)に作る。
  理由: 同期中にファイルが消えた実例があるため。

## 調べものの記録
- 調べて「できなかった」という結論も、メモに残す。
  理由: 残さないと、別の日に同じ調査を最初からやり直す。

この例のとおり、1行ごとに「何をするか」と「なぜか」をセットにしています。venvの置き場所の話は OneDriveの中にPythonの仮想環境(venv)を置くと、自動実行で壊れることがある に、自動実行の組み方は WindowsのタスクスケジューラでClaude Codeを毎日自動で動かす にまとめています。

書き方のコツ

具体的に書く

公式は、確かめられる形で書くよう勧めています。例は「コードを整えて」ではなく「インデントは2スペース」、「テストして」ではなく「コミット前に npm test を実行」です。「Pythonの環境に気をつけて」より、「venvの python.exe をフルパスで呼ぶ」と書くほうが、守られやすくなります。

理由と実例を添える

これは公式の推奨ではなく、私の経験です。理由を添えておくと、書いていない似た場面でも判断の手がかりになります。失敗した実例を1行足しておくと、あとで読み返したときに「まだ要るのか」を判断できます。

短く保ち、古くなったら整理する

公式は、1つのファイルを200行以内に保つ目安を示しています。長いほど文脈を消費し、守られにくくなるためです。矛盾した指示があると、Claudeがどちらかを適当に選ぶことがある、とも書かれています。加筆するだけだとすぐに膨らむので、読みにくくなったら重複や古い記述を削ります。/doctor prompt-audit を実行すると、古い指示や矛盾を洗い出してくれます(Claude Code v2.1.283以降)。別のファイルを取り込む @path の書き方もありますが、取り込んだファイルも起動時に読まれるので、文脈の節約にはなりません。

自動メモリとの使い分け

Claude Codeには、Claudeが自分で書き溜める「自動メモリ」もあります。公式の説明では、次のような違いです。

CLAUDE.md自動メモリ
書く人自分Claude
中身指示とルール学んだことやパターン
読み込み毎回(ファイル全体)毎回(MEMORY.mdの先頭200行か25KBまで)

自動メモリは、ローカルのセッションでは既定でオンです。保存先は ~/.claude/projects/<project>/memory/ で、MEMORY.md が目次の役目をし、詳しい内容は話題ごとのファイルに分かれます。/memory を実行すると、中身を開いて直したり、オン・オフを切り替えたりできます。「これをCLAUDE.mdに足して」と頼めば、Claudeが書き足してくれます。

私の使い分けは、守ってほしい決まりごとはCLAUDE.mdへ、会話の中で出た「この件はこういう経緯だった」という覚え書きは自動メモリへ、というものです。決まりごとは自分で読み返して直したいので、手元のファイルに置いておくほうが安心でした。

まとめ