ankuro.dev
← ブログ一覧に戻る
【Claude Code】.claudeフォルダの中身を全部解説する
2026-03-22#Claude Code#AI#CLAUDE.md#Hooks#設定

【Claude Code】.claudeフォルダの中身を全部解説する

Claude Codeを使っていると、プロジェクトのルートに .claude/ というフォルダができていることに気づく。

「勝手に作られたけど何が入ってるの?」「消して大丈夫?」——そういう疑問を持ったことがあるはず。

この記事では .claude/ フォルダの中身を全部解説する。


.claudeフォルダの全体像

.claude/ はClaude Code専用の設定フォルダ。中身はこの3種類:

.claude/
├── settings.json        ← 権限・Hooks・追加ディレクトリの設定
├── commands/            ← カスタムスラッシュコマンド
│   ├── blog-post.md
│   └── review.md
└── hooks/               ← Hook用シェルスクリプト
    ├── guard.sh
    └── log-write.sh

それぞれ役割が全く違う。順番に見ていく。


settings.json——Claude Codeの動作設定

.claude/settings.json はClaude Codeの動作を制御するファイル。主に3つのことを設定できる。

① 権限(permissions)

Claude Codeが実行を許可するコマンドやアクセス先を指定する。

{
  "permissions": {
    "allow": [
      "Bash(git add:*)",
      "Bash(git commit:*)",
      "Bash(npm run:*)",
      "WebFetch(domain:github.com)"
    ]
  }
}

allow に書いたコマンドは確認なしで実行される。書いていないコマンドはClaude Codeが実行前に許可を求めてくる。

よく使うコマンドは最初にまとめて許可しておくと、作業のテンポが上がる。

② 追加ディレクトリ(additionalDirectories)

ディレクトリ構成の記事で解説したように、Claude Codeは起動したディレクトリ以下しか見えない。additionalDirectories を使うと、別の場所にあるファイルも参照できるようになる。

{
  "permissions": {
    "additionalDirectories": [
      "/Users/yourname/shared-utils",
      "/Users/yourname/another-project/src"
    ]
  }
}

複数プロジェクトをまたいで作業するときや、共有ライブラリを参照させたいときに使う。

③ Hooks

Claude Codeのツール実行タイミングにシェルコマンドを差し込む設定。Hooksの仕組みの記事Hooksで自動化する記事で詳しく解説している。

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write",
        "hooks": [
          {
            "type": "command",
            "command": "/path/to/project/.claude/hooks/log-write.sh"
          }
        ]
      }
    ]
  }
}

settings.jsonはどこに置く?

settings.jsonは2か所に置ける。

場所 パス 適用範囲
プロジェクト限定 .claude/settings.json そのプロジェクトのみ
全プロジェクト共通 ~/.claude/settings.json すべてのプロジェクト

「このプロジェクトだけgit pushを許可したい」ならプロジェクト側に書く。「どのプロジェクトでもnpm runは許可したい」ならホーム側に書く。

両方ある場合はマージされる。プロジェクト側がホーム側を上書きするのではなく、両方の設定が合わさって適用される。


commands/——カスタムスラッシュコマンド

.claude/commands/ フォルダにMarkdownファイルを置くと、そのファイル名がスラッシュコマンドになる。

.claude/commands/blog-post.md  →  /blog-post
.claude/commands/review.md     →  /review

チャットで /blog-post と入力すると、blog-post.md の内容がプロンプトとして展開される。

使い方

Markdownファイルの中に、Claudeへの指示を書くだけ:

# 役割

あなたはブログ執筆エージェントです。
以下の手順で記事を作成してください。

1. series-plan.mdを読んで次の回を確認する
2. 構成案をユーザーに提示する
3. 承認を得たら執筆する

複雑な作業手順を毎回入力する手間が省けるので、定型作業が多いプロジェクトで特に便利。

プロジェクト限定 vs 全体共通

場所 パス 使える範囲
プロジェクト限定 .claude/commands/ そのプロジェクト内のみ
全体共通 ~/.claude/commands/ すべてのプロジェクト

「このプロジェクトでだけ使うコマンド」はプロジェクト側に、「どこでも使う汎用コマンド」はホーム側に置く。


hooks/——Hookスクリプトの置き場所

.claude/hooks/ はHookで使うシェルスクリプトを置くディレクトリ。Claude Codeが自動で読む場所ではなく、settings.jsonから参照するための置き場所として使う。

.claude/hooks/
├── guard.sh      ← 危険なコマンドをブロック
├── prettier.sh   ← ファイル保存時にフォーマット
└── log-write.sh  ← 変更ファイルをログに記録

settings.jsonからは絶対パスで参照する:

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "/Users/yourname/my-project/.claude/hooks/guard.sh"
          }
        ]
      }
    ]
  }
}

スクリプトは chmod +x で実行権限を付けておく必要がある。

Hookの実装例はHooksで自動化する記事にまとめている。


.claudeフォルダはGitに入れる?

結論:settings.jsonとcommands/は入れる。hooks/も入れる。ただし内容に注意。

入れるべきもの

  • settings.json — チームで共有すれば全員が同じ権限設定・Hooksで動ける
  • commands/ — プロジェクト固有のカスタムコマンドはチームで共有できる
  • hooks/ — lint・ガードなどはチームで統一したほうがいい

注意点

  • settings.jsonにAPIキーや個人トークンを書いていないか確認する
  • Hooksのスクリプトにローカルの絶対パスがハードコードされている場合、他の人の環境で動かない。スクリプト内で $CLAUDE_PROJECT_DIR などの変数を使うか、パスを動的に取得する工夫が必要

個人設定(名前・文体など)は ~/.claude/ 側に置き、リポジトリには入れないのが原則。これはCLAUDE.mdの記事で解説した「個人設定とプロジェクト設定の分離」と同じ考え方。


まとめ

ファイル/フォルダ 役割
settings.json 権限・Hooks・追加ディレクトリの設定
commands/ カスタムスラッシュコマンドの定義
hooks/ Hookスクリプトの置き場所
  • .claude/ はプロジェクトとホーム(~/.claude/)の2か所に存在できる
  • プロジェクト側はGitで管理してチームと共有、個人設定はホーム側に分離
  • Hooksの詳細はHooksとは何かHooksで自動化する

関連記事