.claude/ フォルダ完全解剖ガイド -- CLAUDE.md・コマンド・スキル・権限設定
Claude Codeの.claude/フォルダを徹底解説。CLAUDE.md、カスタムコマンド、スキル、エージェント、権限設定まで、初心者でも実践できるように体系的に解説します。
はじめに -- .claude/ フォルダとは?
Claude Code(ターミナルから使えるAIアシスタント)を使い始めると、プロジェクトのフォルダの中に .claude/ という隠しフォルダが自動的に作られます。
「何だこのフォルダは?」と思って、そのまま放置している方も多いのではないでしょうか。
実はこのフォルダこそが、Claude Codeの「コントロールセンター」です。ここに設定を書くことで、Claudeの動き方を細かくコントロールできます。
具体的には、以下のようなことが可能になります。
- 「このプロジェクトではTypeScriptを使ってね」とルールを伝える
- 「コードレビューして」と一言で複雑な作業を実行させる
- 「この操作は禁止」とセキュリティ上のガードレールを設ける
- 前回のセッションで学んだことを次回に引き継ぐ
この記事を読み終えたら、.claude/ フォルダの中身を理解し、自分のプロジェクトに合わせて設定を作れるようになります。プログラミングの経験が浅くても大丈夫です。一つずつ、実際にファイルを作りながら進めていきましょう。
.claude/ フォルダは「2つ」ある
意外と知られていないのですが、.claude/ フォルダは実は2つの場所に存在します。
1つ目: プロジェクトの .claude/ フォルダ
あなたが作業しているプロジェクトのルート(一番上のフォルダ)に作られます。ここに置いた設定は、そのプロジェクトでClaude Codeを使うとき全員に適用されます。チームで共有するルールを書く場所です。
my-project/
├── .claude/ ← これ。チーム共有の設定
├── src/
├── package.json
└── ...
2つ目: ホームディレクトリの ~/.claude/ フォルダ
あなたのパソコンのホームディレクトリ(Macなら /Users/あなたの名前/)に作られます。ここに置いた設定は、どのプロジェクトで作業しても常に適用される「個人設定」です。
~/.claude/ ← これ。個人の設定(全プロジェクト共通)
├── CLAUDE.md
├── commands/
└── ...
「チームメンバー全員に守ってほしいルール」はプロジェクトの .claude/ に書きます。「自分だけの好み(日本語で回答してほしい、など)」はホームの ~/.claude/ に書きます。
それぞれのフォルダに入るファイルの全体像を表にまとめます。
| 項目 | プロジェクト .claude/ | グローバル ~/.claude/ |
|---|---|---|
| 場所 | プロジェクトのルートフォルダ | ホームディレクトリ(~) |
| 用途 | チーム共有の設定 | 個人の環境設定 |
| Gitで管理する? | する(チームと共有) | しない(個人のみ) |
| 含まれるもの | CLAUDE.md, settings.json, commands/, rules/, skills/, agents/ | CLAUDE.md, settings.json, commands/, skills/, agents/, projects/ |
CLAUDE.md -- 最も重要なファイル
.claude/ フォルダの中で、最初に理解すべきファイルがこの CLAUDE.md です。
Claude Codeを起動するたびに、Claudeはまずこのファイルを読みます。そして、セッション(会話)が終わるまで、ここに書かれた内容を常に意識しながら作業します。
言い換えれば、CLAUDE.mdは「Claudeへの取扱説明書」です。 ここに「こうしてね」と書いておけば、Claudeはそれに従います。
CLAUDE.md に何を書くか
では、具体的に何を書けばいいのでしょうか。以下の5つが基本です。
1. よく使うコマンド
プロジェクトで使う開発コマンドを書いておきます。Claudeはこれを見て、正しいコマンドを実行してくれます。
## コマンド
npm run dev # 開発サーバーを起動
npm run build # 本番用にビルド
npm run test # テストを実行
npm run lint # コードの品質チェック
2. プロジェクトの構造
どのフォルダに何が入っているかを書いておくと、Claudeがファイルを探すときに迷いません。
## ディレクトリ構成
src/
├── app/ # Next.js のページ
├── components/ # 再利用するUIパーツ
├── lib/ # ユーティリティ関数
└── types/ # TypeScriptの型定義
3. 技術的な決定事項
「このプロジェクトではこういう方針で開発する」という決まりごとです。
## 技術スタック
- Next.js 15 (App Router)
- TypeScript strict mode
- Tailwind CSS
- PostgreSQL + Prisma ORM
4. コーディング規約(コードの書き方ルール)
## コーディング規約
- 変数名は camelCase(例: userName)
- コンポーネント名は PascalCase(例: UserProfile)
- 型定義は interface を優先して使う
- any は禁止。代わりに unknown を使う
5. やってはいけないこと
Claudeに「これだけは絶対にしないで」と伝えておきたいことです。
## 禁止事項
- .env ファイルの中身をコードに直接書かない
- rm -rf コマンドを使わない
- main ブランチに直接 push しない
新しいメンバーがプロジェクトに参加したとき、「このプロジェクトのルールはこうだよ」と伝えるドキュメントを想像してください。CLAUDE.mdはまさにそれです。ただし、読む相手がAIなので、箇条書きで簡潔に書くのがコツです。
書くべきでないもの
CLAUDE.mdは「何でも書けばいい」というわけではありません。以下は避けましょう。
- 設定ファイルに書くべき内容: ESLint(コード品質チェックツール)やPrettier(コード整形ツール)の設定は、それぞれの設定ファイルに書きます
- 長い説明文: Claudeは長文より箇条書きの方が正確に理解します
- 他のドキュメントのコピー: リンクを貼るだけで十分です
目安は200行以内です。 それを超えると、Claudeの「コンテキストウィンドウ」(一度に処理できる情報量の上限)を圧迫し、指示に従う精度が下がります。
CLAUDE.md の完成例
実際のプロジェクトでの記述例を示します。
# Project: Acme API
## Commands
npm run dev # Start dev server
npm run test # Run tests (Jest)
npm run lint # ESLint + Prettier check
## Architecture
- Express REST API, Node 20
- PostgreSQL via Prisma ORM
## Conventions
- Use zod for request validation
- Return shape: { data, error }
- Never expose stack traces
わずか約20行ですが、Claudeがこのプロジェクトで正しく作業するために必要な情報はすべて含まれています。
CLAUDE.local.md -- 自分だけの設定
チーム全体のルールとは別に、「自分だけの好み」を設定したいことがあります。例えば、「回答は常に日本語で」「コミットメッセージは英語で」といった個人的な設定です。
その場合は、プロジェクトのルートに CLAUDE.local.md を作成します。
touch CLAUDE.local.md
このファイルは自動的に .gitignore(Gitで管理しないファイルのリスト)に含まれるため、チームのリポジトリには入りません。安心して個人的な設定を書けます。
rules/ フォルダ -- ルールを分割して管理する
プロジェクトが大きくなると、CLAUDE.mdに書くルールも増えていきます。200行を超えそうになったら、rules/ フォルダを使ってルールを分割しましょう。
.claude/rules/ の中にマークダウンファイルを作ると、Claude Codeの起動時にCLAUDE.mdと一緒に自動で読み込まれます。
やってみよう: ルールファイルを作成する
mkdir -p .claude/rules
例えば、コーディングスタイルに関するルールを分離するなら、以下のようにファイルを作ります。
touch .claude/rules/code-style.md
中身はこんな感じです。
# コーディングスタイル
- TypeScript strict mode を使用する
- any は禁止。unknown + 型ガードを使う
- 関数名は camelCase
- コンポーネント名は PascalCase
- ファイル名は kebab-case(例: user-profile.tsx)
フォルダ構成の全体像はこうなります。
.claude/rules/
├── code-style.md # コードの書き方ルール
├── testing.md # テストに関するルール
├── api-conventions.md # API設計のルール
└── security.md # セキュリティに関するルール
ルールをファイルごとに分けることで、「テストのルールだけ変更したい」というとき、該当ファイルだけを編集すれば済みます。CLAUDE.mdが肥大化して見通しが悪くなることも防げます。
特定のファイルにだけ適用するルール(パススコープ)
さらに便利な機能として、「このルールは、特定のフォルダのファイルを編集しているときだけ適用する」という設定ができます。
ファイルの先頭に paths を書きます。
---
paths:
- "src/api/**/*.ts"
---
# API 設計ルール
- すべてのハンドラーは { data, error } 形式で返す
- リクエストのバリデーションには zod を使う
- エラーメッセージはユーザー向けの日本語にする
この設定をすると、Claudeが src/api/ フォルダ内のTypeScriptファイルを編集しているときだけ、このルールが読み込まれます。関係ないファイルを編集しているときは無視されるので、コンテキストウィンドウを節約できます。
「パス」はファイルの場所(パス)のこと、「スコープ」は「範囲」のことです。つまり「特定のファイルパスの範囲内でだけ有効なルール」という意味です。paths を書かないルールファイルは、常にすべてのセッションで読み込まれます。
commands/ フォルダ -- 自分だけのスラッシュコマンドを作る
Claude Codeでは、/help や /clear のようにスラッシュ(/)から始まるコマンドが使えます。実は、この「スラッシュコマンド」を自分で作ることができます。
.claude/commands/ フォルダにマークダウンファイルを置くだけで、それがそのままコマンドになります。
やってみよう: コードレビューコマンドを作る
mkdir -p .claude/commands
review.md というファイルを作り、以下の内容を書きます。
現在のブランチと main ブランチの差分を確認し、
以下の観点でコードレビューをしてください。
1. バグの可能性がある箇所
2. セキュリティ上の懸念
3. パフォーマンスの問題
4. コーディング規約に違反している箇所
差分の取得:
`git diff main...HEAD`
これで、Claude Codeのセッション中に /project:review と入力するだけで、上記のプロンプト(指示文)が自動的に実行されます。
コマンドファイルの中で、バッククォート()で囲まれたシェルコマンドは、実際にターミナルで実行され、その出力結果がプロンプトに埋め込まれます。つまり git diff main...HEAD` と書いておけば、Claudeは実際の差分を見ながらレビューしてくれます。
もう一つの例: Issue修正コマンド
touch .claude/commands/fix-issue.md
GitHub Issue #$ARGUMENTS の内容を確認し、以下の手順で修正してください。
1. Issue の内容を読んで、問題を理解する
2. 関連するコードを特定する
3. 修正方針を提案し、確認を求める
4. 承認されたら修正を実装する
5. テストが通ることを確認する
Issue の取得:
`gh issue view $ARGUMENTS`
$ARGUMENTS は、コマンド実行時に渡す引数(追加情報)です。/project:fix-issue 42 と入力すると、$ARGUMENTS が 42 に置き換わり、Issue #42 の修正に取りかかります。
コマンドの種類
コマンドは2つの場所に作ることができ、呼び出し方が異なります。
| 場所 | 呼び出し方 | 共有範囲 |
|---|---|---|
.claude/commands/review.md | /project:review | チーム全員 |
~/.claude/commands/review.md | /user:review | 自分だけ |
チームで共有したいコマンドはプロジェクトの .claude/commands/ に、個人的に使いたいコマンドはホームの ~/.claude/commands/ に置きます。
skills/ フォルダ -- Claudeが自動で起動するワークフロー
コマンド(commands/)は、自分でスラッシュを打って呼び出す必要がありました。一方、スキル(skills/)は Claudeが会話の内容を判断して自動的に起動 します。
例えば、「デプロイして」と言ったとき、デプロイ用のスキルが定義されていれば、Claudeが自動でそのスキルを使って作業を始めます。
スキルの作り方
スキルはコマンドと違い、1つのフォルダに複数のファイルを格納できます。
mkdir -p .claude/skills/deploy
touch .claude/skills/deploy/SKILL.md
SKILL.md の中身はこうなります。
---
name: deploy
description: 本番環境へのデプロイを実行する
---
# デプロイ手順
1. テストがすべて通ることを確認
2. ビルドを実行
3. Vercel にデプロイ
4. デプロイ後の動作確認URL を報告
description(説明)に書いた内容と会話がマッチしたとき、Claudeがこのスキルを自動的に呼び出します。
コマンドとスキルの違い
この2つは混同しやすいので、整理しておきます。
| 比較項目 | commands/(コマンド) | skills/(スキル) |
|---|---|---|
| 起動方法 | 自分で /project:xxx と入力する | Claudeが自動的に判断して起動する |
| ファイル構成 | マークダウンファイル1つ | フォルダ(複数ファイルOK) |
| 補足資料 | 含められない | @で関連ファイルを参照できる |
| 向いている作業 | 「レビューして」「Issue直して」など定型作業 | 複雑な手順を一連のワークフローとしてまとめたいとき |
スキルは上級者向けの機能です。最初はコマンドだけで十分です。「毎回同じプロンプトを手打ちしている」と気づいたら、それをコマンドにしましょう。スキルは、コマンドでは対応しきれない複雑なワークフローが出てきたときに検討すれば大丈夫です。
agents/ フォルダ -- 専門家のAIを定義する
Claude Codeには「サブエージェント」という機能があります。メインのClaudeが作業中に、別の専門的なAIを呼び出して、特定のタスクを任せることができます。
.claude/agents/ にファイルを作ることで、このサブエージェントの「人格」を定義できます。
やってみよう: コードレビュー専門のエージェントを作る
mkdir -p .claude/agents
touch .claude/agents/code-reviewer.md
---
name: code-reviewer
description: コードの品質をレビューする専門エージェント
model: sonnet
tools:
- Read
- Grep
- Glob
---
あなたはシニアソフトウェアエンジニアです。
コードレビューを専門に行います。
レビュー時は以下の観点で確認してください:
- セキュリティ上の問題
- パフォーマンスのボトルネック
- エッジケース(想定外の入力)の処理漏れ
- 既存コードとの一貫性
エージェントの設定で指定できること
| 設定項目 | 説明 | 例 |
|---|---|---|
| name | エージェントの名前 | code-reviewer |
| description | いつ起動するかの説明 | コードの品質をレビューする |
| model | 使用するAIモデル | sonnet(バランス型)、haiku(高速・軽量)、opus(高性能) |
| tools | このエージェントが使えるツール | Read(ファイル読み取り)、Grep(テキスト検索)、Glob(ファイル検索) |
AIモデルには処理速度と精度のトレードオフがあります。「ファイルの中からエラーを探す」のような単純な作業にはhaiku(高速・低コスト)を、「設計の妥当性を判断する」のような高度な作業にはopus(高精度・高コスト)を割り当てると効率的です。
settings.json -- Claudeの権限を管理する
settings.json は、Claudeに「何をしていいか」「何をしてはいけないか」を設定するファイルです。セキュリティの要となるファイルです。
3段階の権限設定
Claude Codeのすべての操作は、以下の3段階で制御されます。
1. allow(許可): 確認なしで即実行される
{
"permissions": {
"allow": [
"Bash(npm run *)",
"Bash(git status)",
"Bash(git diff *)",
"Read",
"Write",
"Edit"
]
}
}
ここに書いた操作は、Claudeが確認を求めずに実行します。npm run test や git status のように、安全な操作を登録しておきます。
2. deny(拒否): 完全にブロックされる
{
"permissions": {
"deny": [
"Bash(rm -rf *)",
"Bash(curl *)",
"Read(./.env)"
]
}
}
ここに書いた操作は、Claudeが絶対に実行しません。ファイルの一括削除(rm -rf)や、環境変数ファイル(.env)の読み取りなど、危険な操作を登録します。
3. どちらにも書かない操作: 毎回確認を求められる
allow にも deny にも書かなかった操作は、実行前に「これを実行していいですか?」と確認されます。想定外のコマンドはすべてこの状態になるので、安全です。
settings.json を一切作らなくても Claude Code は動きます。ただし、以下の2つだけは最初に設定することを強くおすすめします。(1) .env ファイルの読み取りを deny に追加する(APIキーなどの機密情報を守るため)。(2) よく使うビルドコマンドを allow に追加する(毎回の確認を省略して作業効率を上げるため)。
settings.local.json -- 個人の権限設定
CLAUDE.local.md と同じ考え方で、個人的な権限変更用に .claude/settings.local.json を作成できます。このファイルは自動的に .gitignore されるので、チームの設定を上書きしたい場合に使います。
グローバル ~/.claude/ フォルダの中身
ホームディレクトリの ~/.claude/ は、すべてのプロジェクトに適用される個人設定を管理する場所です。中身を詳しく見てみましょう。
~/.claude/CLAUDE.md
すべてのClaude Codeセッションで読み込まれる個人的な方針です。プロジェクトに関係なく常に適用したいルールを書きます。
# 個人設定
## コミュニケーション
- 会話・説明は日本語で行う
- コード・コミットメッセージは英語で書く
## コーディングの好み
- 常に型定義を先に書く
- テストを書いてから実装する
~/.claude/projects/
プロジェクトごとのセッション履歴と自動メモリが保存されます。Claude Codeが「前回のセッションで何をしたか」を覚えておく場所です。この中身は自動的に管理されるので、手動で編集する必要はありません。
~/.claude/commands/
プロジェクトを横断して使いたい個人コマンドを置く場所です。ここに置いたコマンドは、どのプロジェクトでも /user:xxx で呼び出せます。
実践セットアップ -- 5つのステップ
ここまでの知識を使って、実際にセットアップしてみましょう。ステップ1から順番に進めてください。
ステップ 1: CLAUDE.md を自動生成する
最も簡単な始め方は、Claude Code に自動生成してもらうことです。
claude
Claude Codeが起動したら、セッション内で以下を入力します。
/init
Claude がプロジェクトのコードを分析して、CLAUDE.md の雛形を自動生成します。生成されたファイルを確認し、不要な部分を削除、足りない部分を追加しましょう。
ステップ 2: settings.json で権限を設定する
.claude/settings.json を作成し、最低限の権限設定を行います。
mkdir -p .claude
touch .claude/settings.json
以下をコピーして貼り付けてください。プロジェクトに合わせて allow の中身を変更します。
{
"permissions": {
"allow": [
"Bash(npm run *)",
"Bash(git status)",
"Bash(git diff *)",
"Bash(git log *)",
"Read",
"Write",
"Edit"
],
"deny": [
"Bash(rm -rf *)",
"Read(./.env)"
]
}
}
ステップ 3: よく使うコマンドを1〜2個作る
mkdir -p .claude/commands
まずはコードレビューコマンドを作ってみましょう。
touch .claude/commands/review.md
中身を書きます。
現在のブランチと main ブランチの差分を確認し、
バグ・セキュリティ・パフォーマンスの観点でレビューしてください。
`git diff main...HEAD`
これで /project:review が使えるようになります。
ステップ 4: ルールが増えたら分割する
CLAUDE.md が長くなってきたと感じたら、ルールを .claude/rules/ に分割します。
mkdir -p .claude/rules
CLAUDE.md からコーディング規約の部分を切り出して、別ファイルにします。
touch .claude/rules/code-style.md
切り出した内容を code-style.md に移動し、CLAUDE.md からはその部分を削除します。.claude/rules/ 内のファイルは自動で読み込まれるので、特別な設定は不要です。
ステップ 5: 個人設定を追加する
touch ~/.claude/CLAUDE.md
プロジェクトに関係なく、常に適用したい個人的な好みを書きます。
# 個人設定
- 会話・説明は日本語で行う
- コミットメッセージは英語で書く
- コードにコメントを書くときは日本語にする
ステップ1〜3を設定するだけで、Claude Codeの生産性は大幅に向上します。ステップ4(ルール分割)と5(個人設定)は、使い込んで必要性を感じたときに追加すれば十分です。skills/ や agents/ はさらに上級者向けなので、まずはここまでのステップを確実に押さえましょう。
まとめ
.claude/ フォルダは、「あなたが誰で、プロジェクトが何をし、どのルールに従うべきか」をClaudeに伝えるための仕組みです。
この記事で解説した内容を振り返ります。
| ファイル・フォルダ | 役割 | 最初に必要? |
|---|---|---|
| CLAUDE.md | Claudeへの取扱説明書。最も重要 | はい |
| settings.json | 権限の許可・拒否を設定 | はい |
| commands/ | スラッシュコマンドを自作 | おすすめ |
| rules/ | ルールを分割管理 | CLAUDE.mdが長くなったら |
| skills/ | 自動起動ワークフロー | 上級者向け |
| agents/ | 専門サブエージェント | 上級者向け |
CLAUDE.md が最もレバレッジの高いファイルです。 まずそこを正しく設定しましょう。他のすべてはその最適化です。
明確に定義すればするほど、Claudeの修正に費やす時間が減り、有益な作業に充てる時間が増えます。