.claude/ フォルダ構造の分析
(blog.dailydoseofds.com).claude/フォルダは Claude Codeの中核制御ディレクトリ であり、プロジェクトごとのルール・コマンド・権限・メモリ状態を管理するCLAUDE.mdは Claude の 行動原則とプロジェクトルールを定義する中心ファイル で、複数階層の設定をマージして適用するcommands/、skills/、agents/フォルダはそれぞれ ユーザー定義コマンド、自動ワークフロー、専門サブエージェント を構成し、共同作業の効率を高めるsettings.jsonは コマンド実行権限とファイルアクセス範囲 を制御し、settings.local.jsonによって個人ごとのオーバーライドが可能- 全体構造は Claude に プロジェクトのアイデンティティとルールを伝えるプロトコル として機能し、明確な設定が生産性と協業効率を最大化する
.claude/ フォルダ構造と構成要素
.claude/フォルダは Claude Code の動作を制御する中核ディレクトリ であり、プロジェクトごとのルール・コマンド・権限・メモリ状態を管理する- プロジェクトルートのフォルダには チーム単位の設定 が含まれ、Git にコミットされる
- ホームディレクトリ(
~/.claude/)のフォルダには 個人設定とセッション記録 が保存され、自動メモリや個人コマンドも含まれる -
CLAUDE.md — Claude のガイド
- Claude Code セッション開始時に最初に読むファイルで、Claude の行動原則とプロジェクトルールを定義 する
- プロジェクトルートの
CLAUDE.mdはチーム共通ルール、~/.claude/CLAUDE.mdは グローバルな個人ルール、下位フォルダのCLAUDE.mdは フォルダごとのルール を担当する - Claude は複数の
CLAUDE.mdファイルを マージして適用 する - 推奨内容は、ビルド・テストコマンド、主要なアーキテクチャ判断、直感的ではない制約事項、命名・エラー処理ルールなど
- 200行以下を維持 することが推奨され、長すぎると Claude の指示順守率が低下する
-
CLAUDE.local.md — 個人別オーバーライド
- チーム共通ルールとは別に 個人の好みを反映 できるファイル
- プロジェクトルートに
CLAUDE.local.mdを作成すると Claude がこれもあわせて読む .gitignoreに自動的に含まれ、リポジトリにはコミットされない
-
rules/ フォルダ — モジュール型ルール管理
CLAUDE.mdが大きくなった場合は.claude/rules/フォルダへ分離して管理する- 各ルールファイルは テーマごとに分割 され、保守しやすい
- 例:
code-style.md、testing.md、api-conventions.md、security.md
- 例:
- YAML フロントマターの
pathsフィールドを使うと 特定パスのみに適用されるルール を指定できる- 例:
src/api/**/*.tsパスにのみ API ルールを適用
- 例:
- パス指定のないルールは、すべてのセッションで常にロードされる
-
commands/ フォルダ — ユーザー定義スラッシュコマンド
.claude/commands/フォルダ内の各 Markdown ファイルは スラッシュコマンド(/) として登録される- 例:
review.md→/project:review、fix-issue.md→/project:fix-issue
- 例:
!バックティック構文によって シェルコマンド実行結果を Claude のプロンプトに挿入 できる- 例:
!git diff main...HEAD
- 例:
$ARGUMENTS変数を使って、コマンド実行時に 引数を渡す ことができる- 例:
/project:fix-issue 234→ GitHub Issue 234 の内容を自動ロード
- 例:
- プロジェクトコマンドはチームと共有され、個人コマンドは
~/.claude/commands/に保存されて すべてのプロジェクトで利用可能
-
skills/ フォルダ — 自動実行ワークフロー
- コマンドに似ているが自動でトリガーされるワークフロー として機能する
- Claude が会話内容を分析し、適切な状況で自動実行 する
- 各スキルはサブフォルダ内の
SKILL.mdファイルで定義され、YAML フロントマターによって トリガー条件と許可ツール を指定する- 例:
security-reviewスキルはセキュリティ関連の会話時に自動実行
- 例:
- スキルフォルダには
DETAILED_GUIDE.mdなどの 補助ドキュメントやテンプレートファイル を含められる - 個人スキルは
~/.claude/skills/に保存され、グローバルに利用できる
-
agents/ フォルダ — 専門サブエージェント
.claude/agents/フォルダには 特定の役割を担うサブエージェント(ペルソナ) を定義する- 各エージェントは独立したシステムプロンプト、モデル、ツールアクセス権限を持つ
- 例:
code-reviewer.md、security-auditor.md
- 例:
toolsフィールドでアクセス可能なツールを制限し、セキュリティと役割分離 を実現するmodelフィールドで作業に適した Claude モデル(例: Haiku、Sonnet、Opus)を選択できる- Claude は必要に応じて該当エージェントを 別コンテキストで実行 し、結果だけを要約して報告する
-
settings.json — 権限とプロジェクト設定
.claude/settings.jsonは Claude の コマンド実行権限とファイルアクセス範囲 を定義する$schemaフィールドは VS Code などで 自動補完とバリデーション を支援するallowリストは 自動承認コマンド、denyリストは 完全遮断コマンド を指定する- 例: 許可 —
Bash(npm run *)、Read、Write、Edit - 遮断 —
Bash(rm -rf *)、Bash(curl *)、.envファイルの読み取り
- 例: 許可 —
- リストにないコマンドは実行前に ユーザー確認を要求 する
- 個人ごとの権限変更は
.claude/settings.local.jsonに保存され、Git には含まれない
-
~/.claude/ フォルダ — グローバル設定とメモリ
~/.claude/CLAUDE.mdは すべてのプロジェクトに共通適用される個人向け指針~/.claude/projects/には プロジェクトごとのセッション記録と自動メモリ が保存される- Claude が学習したコマンド、パターン、構造的な洞察を保持する
/memoryコマンドで参照および修正できる
~/.claude/commands/、~/.claude/skills/、~/.claude/agents/は グローバルな個人コマンド・スキル・エージェント の保存先
-
全体構造の例
your-project/ ├── CLAUDE.md ├── CLAUDE.local.md └── .claude/ ├── settings.json ├── settings.local.json ├── commands/ ├── rules/ ├── skills/ └── agents/ ~/.claude/ ├── CLAUDE.md ├── settings.json ├── commands/ ├── skills/ ├── agents/ └── projects/ -
初期設定の手順
- ステップ1:
/initコマンドで基本のCLAUDE.mdを生成し、重要な内容だけを残す - ステップ2:
.claude/settings.jsonを作成し、実行許可・遮断ルールを定義する -
3段階:よく使うワークフロー(例: コードレビュー、Issue 修正)に合わせたコマンドを追加
- 4段階:
CLAUDE.mdが大きくなったら.claude/rules/に分割する - 5段階:
~/.claude/CLAUDE.mdに個人の好みのルールを追加する
- 4段階:
- ステップ1:
核心インサイト
.claude/フォルダは Claude にプロジェクトのアイデンティティとルールを伝えるプロトコル であるCLAUDE.mdが最も重要なファイルであり、これを明確に定義するほど Claude の生産性が最大化 される- それ以外の構成要素はこれを補完する最適化レイヤーであり、段階的に拡張できる
- 明確な設定は Claude の修正依頼の減少と効率的な協業 につながる
追加議論
settings.jsonの deny リストは人間の利用では安全でも、エージェントモードでは Bash アクセスにより追加保護が必要- OneCLI はネットワークレベルで 認証情報トークンを置き換えるプロキシレイヤー を提供し、秘密情報の露出を防ぐ
- 将来的に エージェントモード専用の .claude 設定(ルール・権限・スキルの分離)が必要ではないかという指摘
- 最新ドキュメントによれば コマンド(commands) と スキル(skills) は統合され、
.claude/commands/deploy.mdと.claude/skills/deploy/SKILL.mdは同じく/deployコマンドを生成し、スキルは追加機能(補助ファイル、自動トリガーなど)をサポートする
1件のコメント
Hacker Newsのコメント
AIエージェントのツールキット構築は、まるで完璧な生産性セットアップを探すことのように感じる
ブログ記事やYouTubeを見ながらルーティンを作るけれど、結局はシンプルなToDoリストで着実に働く人のほうが先に進む
私の経験では、素のClaudeに計画を立てさせてレビューしたあと実行させる、という単純なやり方が今でもいちばんうまく機能する
エージェントがデータをパイプし、リクエストを作成し、システムを追跡しながらコードを更新する技術的スキルは、開発効率を飛躍的に高める
1,000万行規模のコードで生産性が大きく向上したが、そのうち実際のコード生成が占める割合は5%にも満たない
ほとんどは、テストと検証のためのツールチェーンを素早く作る能力のおかげだ
実際には、自分が何を望んでいるのかを明確に理解し、うまく伝えられるなら、AIでも十分多くのことができる
ほとんどの人はそれができない。だから、計画を立てさせるプロセスが理解を得るための近道になる
ただ、セッションごとにコンテキストを繰り返し、.mdファイルをコピーする非効率がある
今の目標はこの繰り返しの排除だ。
コンテキストを蓄積する「context bank」をどう管理しているのか気になる — たとえば「自分の役割、担当製品、最新ドキュメント」のような基本情報だ
ドキュメントは重複や古いものが多く、単純にDrive全体をつなぐこともできない
同じコンテキストの繰り返しが2回以上出てきたらSkillファイルを作るべきなのか、それとも文書を集約して1つのフォルダで管理すべきなのか悩んでいる
過剰設定(over-configuration) は品質低下とループ問題を引き起こす
モデルはどんどん良くなっているので、以前は必要だった指示文が、むしろ性能の妨げになることもある
Anthropicチームが30日ごとにclaude.mdを初期化しているという話も聞いた
そこでClaudeにMCPサーバーを作らせ、今では会計作業を自動処理している
月末締めのあと、Claudeに主要な作業を抽出してSkillにさせたところ、まるでジュニア会計士ができたように動いている
カスタムMCPとSkillは本当に便利だと感じる
多くの人は、エージェンティックコーディングを始める前に巨大な設定の壁を作ってしまうように感じる
でも最初は空の .claude と AGENTS.md から始めて、自分で操作方法を学ぶのが正しい
他人の作ったスキルをむやみに入れると非決定性(nondeterminism) が増え、コンテキストウィンドウも浪費される
例外的に playwright-cli くらいなら外部導入を勧める
たとえば、このルールのように事前条件を確認するよう設定すれば安定する
セキュリティチームもこうしたアプローチを好みそうだ
私もルールを定義して、ClaudeがGPG署名なしでコミットしないようにした
ただし、こうしたルールは固定ではなく、継続的に進化していくべきだ
むしろ小さく始めて短く保つよう繰り返し強調している
初心者でもAGENTS.mdに数行追加するだけで、AIがユーザーの意図をよりよく理解する
シンプルな設定がAIの誤動作を大きく減らしてくれる
各開発者がエージェンティックなツールを使うようになると、協業のやり方そのものが変わる
こうした複雑な設定の議論は、モデルの進化とともに1年以内に大半が消えていく気がする
~/.claude/projectsフォルダが本当に面白い部分だ私は不要な設定が少ないほど結果が良かった
人は文書を過剰に規定しがちだが、AIは有能だが緊張している大人のようなものだ
指示を与えすぎると、かえって愚かになる
この記事は実体験というより生成されたように感じる
Claude.mdは短く、リンクを数個入れるくらいがよい
コンテキストが積み上がると性能が悪化するので、計画と実装を分離し、毎回リセットすべきだ
Skillは常にコンテキスト内にあり、コマンドは手動呼び出しだけなのか、はっきりしない
すべてのモデル提供者が標準のファイルセットを共有してくれたらいいのにと思う
そうすればClaude、Codex、Cursor、Opencodeのあいだを切り替えやすくなるはずだ
同じプロンプトでもモデルごとに反応が違うので、プロンプトチューニングはモデル別に変える必要がある
完璧ではないが、かなりうまく動く
だから今の多様性はむしろ前向きに捉えている
Claude Fastの代替ドキュメントは非常に有用だ
私には .claude フォルダの定義を嫌う理由がわからない
メインエージェントにファイルを直接書かせ、反復的に更新させることで、自己改善型システムを作れる
今では .claude が自ら複製し、評価し、更新している — 私はコードを書くのではなく、.claudeをコーディングしているようなものだ
振る舞いを定義し、知識をスキルに委譲し、時間とともに自ら改善していくシステムを作るということだ
あまり知られていない壁として、Claudeにファイルを修正させても、再読込するよう明示しない限り反映されないという点がある
たとえばCLAUDE.mdを新しく書いたなら、Claudeがそれを新しい指示として認識するようリロードする必要がある
~/.claude/plansフォルダにはplanモード実行時に生成された計画ファイルが保存される私はこのディレクトリを開いて、バックアップや参照用によく使っている
私はグローバルMCPサーバーと複合エージェント(composite agent) を中心に構成している
各MCPサーバーがツールセットを定義し、エージェントはその中で自律的に作業する
.agent.md は単に利用可能なツールを説明する文書にすぎず、複雑な設定は不要だ
Skillや再利用プロンプトの価値は低いと感じる
モデルはすでに十分賢いので、必要なのは方向付け(orientation) だ