CLAUDE.md vs rules vs settings.json — 何をどこに書くか
Claude Codeの設定は3つの場所に分散できます。何をどこに書くかを理解することで、設定の管理が格段に楽になります。
3層の使い分け
| 設定場所 | 書くもの | 形式 |
|---|---|---|
| CLAUDE.md | プロジェクト概要、技術スタック、コマンド、アーキテクチャ | Markdown |
| .claude/rules/ | コードスタイル、テスト規約、セキュリティルール(トピック別) | Markdown(frontmatter付き) |
| settings.json | ツール権限、MCP設定、環境変数 | JSON |
CLAUDE.md に書くもの
# プロジェクト名
React + TypeScript のタスク管理アプリ。
## 技術スタック
- Next.js 15 (App Router) + TypeScript
## コマンド
- \`npm run dev\` — 開発サーバー
- \`npm test\` — テスト実行
## ディレクトリ構造
(テーブル形式で記述)
.claude/rules/ に書くもの
<!-- .claude/rules/code-style.md -->
---
description: TypeScriptコードスタイル
globs: "**/*.ts,**/*.tsx"
---
- any禁止、unknown を使う
- Props型は interface で定義
settings.json に書くもの
{
"permissions": {
"allow": ["Bash(npm run:*)", "Bash(git:*)"],
"deny": ["Bash(rm -rf /*)"]
},
"env": {
"NODE_ENV": "development"
}
}
判断フロー
迷ったら以下の順序で判断します。
- ツールの権限・実行環境に関すること? → settings.json
- 特定のファイル種別でのみ必要なルール? → .claude/rules/(globsで絞る)
- プロジェクト全体で常に意識すべきこと? → CLAUDE.md
よくある間違いは、すべてをCLAUDE.mdに詰め込むことです。CLAUDE.mdが肥大化すると、重要なルールが埋もれ、コンテキストウィンドウを圧迫します。トピック別のルールはrulesに分離し、CLAUDE.mdはプロジェクトの「地図」として機能させましょう。