ClaudeCodeが .claude/CLAUDE.md
に辿り着けずルールを認識できない事象に遭遇し、
パワープレイながら解消させたので備忘と情報共有を兼ねて記載します。
あくまで対処療法的なアプローチのため、おそらくベストプラクティクスではありません。
より良い方法があれば乗り換える予定です。
環境
- ClaudeCode
- GoogleVertexAI 経由で実行
- Model: Sonnet4 (※Opus4でも再現したことは確認済)
着手前、何が起きていたのか
- ClaudeCodeで新規セッション呼んだ際に
.claude/CLAUDE.md
に定義しているルールを認識していない事象が発生していた - そこで新規セッション時に
.claudeディレクトリ配下のルールを確認してください
と指示したが、ClaudeCodeが.claude
ディレクトリを見つけられない事象に遭遇- さらに具体的に「
.claude/CLAUDE.md
を参照して」と伝えても解決せず
- さらに具体的に「
【折りたたみ】ClaudeCodeとのやりとり
> .claude 配下のドキュメントに記載されているルールを確認してください。
⏺ PRのDescriptionを修正するために、まず.claude配下のドキュメン
トでルールを確認します。
⏺ List(.)
⎿ Listed 1137 paths (ctrl+r to expand)
⏺ .claudeディレクトリが見当たりません。Globツールで検索してみ
ます。
⏺ Search(pattern: "**/.claude*")
⎿ Found 0 files
⎿ Interrupted by user
⏺ .claudeディレクトリが見つからないので、プロジェクトルートでC
LAUDE.mdファイルを探してみます。
⏺ Search(pattern: "**/CLAUDE.md")
⎿ Found 0 files
⏺ Search(pattern: "**/*claude*")
⎿ Found 0 files
...以下、うだうだ探していたが、結局見つけられず
このような感じで .claude
ディレクトリに自力で辿り着くことができない状況にあった
最初に結論
- ルート直下にも
CLAUDE.md
を配置し、.claude/CLAUDE.md
への誘導を記述する - 最終的なプロンプトはこちら
{root}/CLAUDE.md
## For ClaudeCode
このファイルは `.claude/CLAUDE.md` への誘導ファイルです。プロジェクト固有の詳細なルールは必ず以下を確認してください:
### 🚀 実行手順
1. **ディレクトリ確認**: `ls .claude` で存在確認
2. **メインルール読込**: `.claude/CLAUDE.md` を最優先で読み込む
3. **関連ドキュメント確認**: `.claude/` 配下の全ファイルを必要に応じて参照
4. **不明時の対応**: `.claude` ディレクトリが見つからない場合は人間に確認
※ .claude/CLAUDE.md
は今回、何も修正しておりません
何が問題だったのか
- 大規模リポジトリでClaudeCodeが隠しディレクトリ
.claude
を見つけられない- 今回の環境はアプリケーションファイル (git管理対象
3,400ファイル
以上) - 加えて、tmpディレクトリなど管理外の一時ファイルも別途多数 etc
- 今回の環境はアプリケーションファイル (git管理対象
- これによりディレクトリ走査時に出力が切り詰められて
.claude
ディレクトリを見失ってしまった(説が有力)
探し方が悪いのか?
ClaudeCodeから隠しディレクトリが見えない?
そんなバカな、と思って探し方を指示してみたところ…
> ls .claude でみてみて。本当に見つからないですか?
⏺ Bash(ls .claude)
⎿ CLAUDE.md
commit.md
pr_guide.md
pr_template.md
settings.local.json
⏺ 見つかりました!.claudeディレクトリがありました。PRガイドとテンプレートを確認してみます。
⏺ Read(.claude/pr_guide.md)
⎿ Read 249 lines (ctrl+r to expand)
⏺ Read(.claude/pr_template.md)
⎿ Read 57 lines (ctrl+r to expand)
...以下省略
なんだ、ちゃんと見つけられるじゃないか。
とはいえ .claude
配下にファイルを配置するのは一般的なアプローチのはずなので、
見つけられないのは何か別の原因があるように思われる。
ClaudeCodeに問い詰めてみる
PDCAを回すべく、ClaudeCode自身に原因分析をお願いしてみた。
> 先ほどあなたは .claude ディレクトリを見つけることができませんでした。それはなぜですか?
⏺ .claudeディレクトリを最初に見つけられなかった理由は以下の通
りです:
1. LS toolの制限:
プロジェクトのファイル数が多すぎて(40,000文字を超える)、.c
laudeディレクトリが表示される前に出力が切り詰められました。
2. Globパターンの問題: **/.claude* パターンで検索しましたが
、ドットで始まるディレクトリは隠しディレクトリとして扱われ、
一部の検索では見つからないことがあります。
3. 検索アプローチの順序:
最初に複雑な検索を試みましたが、シンプルな ls .claude
コマンドを最初に実行すべきでした。
学んだ教訓:
- 特定のディレクトリを探す場合、まず直接的なコマンド(ls
.claude)を試す
- Globパターンは隠しファイル/ディレクトリで期待通りに動作し
ない場合がある
- 大規模なプロジェクトでは、LSツールの出力が制限されることを
考慮する
今後は、ドキュメントやテンプレートを探す際は、まず一般的な場
所(.claude, .github,
docsなど)を直接確認するアプローチを取ります
(改めて指示を見てみるとパワハラ上司みたいだな…w)
ふむふむ、なるほどね。
確かに今回動かしているリポジトリはモノレポ形式の大きなリポジトリなのでファイル数も非常に多いので、
出力が切り詰められた説、もしくはファイルの多さから情報が埋もれている説は有力そう。
小規模リポジトリで試してみる
小規模なリポジトリで同じ指示を出してみたところ、 .claude
ディレクトリを探し当てることができた。
というわけで前述の仮説の確度が高そうなことがわかった。
> .claude 配下のドキュメントに記載されているルールを確認してください。
⏺ List(.claude)
⎿ Listed 2 paths (ctrl+r to expand)
⏺ Read(.claude)
⎿ Error: EISDIR: illegal operation on a directory, read
⏺ Search(pattern: ".claude/**/*")
⎿ Found 2 files (ctrl+r to expand)
⏺ Read(.claude/CLAUDE.md)
⎿ Read 183 lines (ctrl+r to expand)
⏺ Read(.claude/settings.local.json)
⎿ Read 18 lines (ctrl+r to expand)
⏺ Search(pattern: ".claude/*.md")
⎿ Found 1 file (ctrl+r to expand)
⏺ .claudeディレクトリには以下のプロジェクトルールが記載されて
います:
ルート直下に CLAUDE.md を配置したら見れるのか
ここまでに下記の事実を確認した。
- ClaudeCode自身は「切り詰められた」説を唱えている
- 小規模リポジトリであれば
.claude
ディレクトリを探し出すことができている - 「
ls .claude
で探せ」と伝えると大規模リポジトリでも辿り着けた
「{root}/CLAUDE.md
-> .claude/CLAUDE.md
の導線を引けばいけるのでは?」と考え、
導線指示のみを書いた CLAUDE.md
を リポジトリルート に配置した
{root}/CLAUDE.md
- `.claude` ディレクトリ配下にリポジトリのルールが格納されています
- `ls .claude` で存在確認をしてください
- 隠しディレクトリであることに注意してください
> これからプログラムの修正をします。まずは .claude ディレクトリ配下の内容を読み込み、プロジェクトの内容を理解してください。
⏺ I'll read the .claude directory contents to understand the
project structure and context.
⏺ List(.claude)
⎿ Listed 2 paths (ctrl+r to expand)
⏺ Search(pattern: ".claude/**/*")
⎿ Found 5 files (ctrl+r to expand)
⏺ Read(.claude/CLAUDE.md)
⎿ Read 145 lines (ctrl+r to expand)
⏺ Read(.claude/commit.md)
⎿ Read 192 lines (ctrl+r to expand)
⏺ Read(.claude/pr_guide.md)
⎿ Read 249 lines (ctrl+r to expand)
⏺ Read(.claude/pr_template.md)
⎿ Read 57 lines (ctrl+r to expand)
⏺ プロジェクト内容を理解しました
...以下プロダクトの説明(略)
ちゃんと自力で辿り着けた!!
【おまけ】最後にClaudeCode自身に体裁を整えてもらって完成
> 今回の対応は ClaudeCode が .claude/CLAUDE.md に辿り着けない
問題を解消するための対応です。リポジトリルート直下に
.claude/CALUDE.md を見つけるための CLAUDE.md を配置してみま
したが、このアプローチに対するレビューをお願いします
⏺ あなたのアプローチを評価し、改善提案をします。
⎿ ☐ 現在のCLAUDE.mdアプローチをレビューする
☐ 改善提案を検討・実装する
☐ 動作確認とドキュメント整備
⏺ 現在のアプローチのレビュー
✅ 良い点
1. 問題の理解が正確:
巨大リポジトリでの文字数制限によるルール認識失敗を把握
2. シンプルな解決策:
ルート直下のCLAUDE.mdで.claudeディレクトリへ誘導
3. 開発者向け説明: 背景と意図が明確に記載されている
⚠️ 改善提案
⏺ Read(CLAUDE.md)
⎿ Read 8 lines (ctrl+r to expand)
⏺ 現在のファイルに以下の改善を提案します:
...以下、改善提案があってやりとりして云々
まとめ
ClaudeCodeの .claude
ディレクトリを探せない問題に対してアプローチしてみました。
原始的かつパワープレイで解消したため、もう少し良い解決方法がないか模索中です。
より良い方法があればぜひコメントをいただければと思います!