M.

(更新:)

私の Claude Code 設定ツアー(settings.json・グローバル CLAUDE.md・hooks・statusline)

個人開発のほぼすべてを Claude Code と一緒に進めています。設定は、困ったことが起きるたびに少しずつ足してきたものです。

この記事では、今の設定を一通り紹介します。個別の設定は別の記事で詳しく書いているので、ここでは全体の地図として、何をどこに書いているか と なぜそうしたか を中心にまとめます。

環境:Windows 10 / Windows Terminal / Claude Code 2.1.296

全体像

ファイル書いていること
~/.claude/settings.json権限(allow / deny)、hooks、statusline、モデルと思考の量、自動 compact
~/CLAUDE.md(ホーム直下)応答の言語、モデルの使い分け、Windows の落とし穴、セキュリティのルール
~/.claude/keybindings.jsonEnter で改行・Ctrl+Enter で送信
~/.claude/hooks/危険な git 操作を止めるスクリプト
~/.claude/statusline.js利用上限とコンテキストの使用率を表示
各リポジトリの CLAUDE.mdそのプロジェクトの構成・コマンド・決まりごと

グローバルには どのプロジェクトでも同じこと だけを書き、プロジェクト固有の話は各リポジトリの CLAUDE.md に分けています。

settings.json

権限:よく使うコマンドは許可、秘密情報は拒否

permissions.defaultMode は auto にしています。許可リストにないコマンドは、自動の判定にかけられ、危なそうなものだけ止まります。

許可リスト(allow)には、毎日使う開発ツールを入れています。

"allow": [
  "Bash(git *)", "Bash(gh *)", "Bash(npm *)", "Bash(npx *)",
  "Bash(python *)", "Bash(python3 *)", "Bash(uv *)",
  "Bash(dotnet *)", "Bash(cmake *)", "Bash(pluginval *)",
  "Bash(gcloud builds list *)", "Bash(gcloud logging read *)",
  "WebFetch", "WebSearch"
]

(抜粋です)

ポイントは gcloud だけは読み取り系のサブコマンドに限っている ことです。list・describe・logging read は許可していますが、デプロイや削除は毎回確認が入ります。クラウドの変更は取り返しがつかないので、ここは細かく分けています。

拒否リスト(deny)には、.env と credentials フォルダを読む操作を並べています。ただ、Bash コマンドのパターン指定はすり抜けを防ぎきれません。詳しくは Claude Code に .env を読ませない deny 設定と、その限界 に書きました。

hooks:危険な git 操作を止める

PreToolUse フックで、Bash を実行する前にスクリプトを通しています。

"hooks": {
  "PreToolUse": [
    {
      "matcher": "Bash",
      "hooks": [
        { "type": "command", "command": "bash C:/Users/<ユーザー名>/.claude/hooks/block-dangerous.sh", "shell": "bash" }
      ]
    }
  ]
}

Claude Code が実行した git clean で .env が消えたのがきっかけです。git clean・force push・reset --hard などを止めています。スクリプトの中身は Claude Code の危険な git 操作を hooks で止める にあります。

statusline:利用上限とコンテキストを常に見る

"statusLine": { "type": "command", "command": "node C:/Users/<ユーザー名>/.claude/statusline.js" }

5時間・7日の利用上限の使用率、コンテキストの使用率、モデル名をバーで出しています。最初は PowerShell で書いていましたが、起動が遅くて表示が消えるので Node.js に書き直しました。

モデルと思考の量

"model": "opus",
"effortLevel": "high",
"alwaysThinkingEnabled": false

普段は Opus を使い、思考の量(effort)は high にしています。軽い作業では、会話の中でモデルを切り替えます。使い分けの基準は CLAUDE.md に表で書いています(後述)。

自動 compact を少し遅らせる

"env": { "CLAUDE_AUTOCOMPACT_PCT_OVERRIDE": "85" },
"autoCompactEnabled": true

コンテキストが埋まると、会話が自動で要約(compact)されます。要約のたびに細かい経緯は落ちるので、85% まで使ってから要約する ようにしています。何を残してほしいかは、CLAUDE.md の「Compact」の節に書いています。

見た目

"tui": "fullscreen",
"theme": "dark-daltonized"

画面全体を使う表示にしています。テーマは、色覚の違いに配慮した dark-daltonized です。差分の赤と緑が見分けやすくなります。

プラグイン

公式のプラグインのうち、有効にしているのは2つだけです。

  • pr-review-toolkit:コードレビュー用のエージェントがまとまっている。実装のあとに見てもらう
  • security-guidance:危なそうなコードを書いたときに注意を出す

ほかにも入れてはいますが、普段は切っています。有効にするほど、毎回の会話に読み込まれる説明が増えるからです。

グローバル CLAUDE.md

~/CLAUDE.md はホーム直下に置いています。Claude Code は作業ディレクトリの親フォルダにある CLAUDE.md も読むので、ホームの下にあるプロジェクトならどれでも最初に読まれます(ユーザー共通の置き場所として公式に案内されているのは ~/.claude/CLAUDE.md です)。書いているのは次のような内容です。

節内容
絶対ルール応答はすべて日本語。途中の短い報告も含めて
Model Selection作業の種類と難しさで Haiku / Sonnet / Opus を選ぶ表
Conventions実行してほしいコマンドは1行で示す。git の commit・push は確認なしでよい。完了報告の前にビルドやテストで確かめる
Environment & Shell Gotchasヒアドキュメントを使わない、CRLF に注意、止めたはずの子プロセスを確認する
Security.env を読まない、機密データはディスクに保存しない、書き込みは一時ファイル+置き換え
Auto Mode 許可リスト運用止められたコマンドを、汎用的なパターンにして許可リストへ足すか確認する
Compact要約のときに残してほしいもの(今の目的・変更内容・未解決のエラー)

特に効いているのは次の3つです。

「完了報告の前に確かめる」:これを書く前は、ビルドを通さずに「できました」と言われることがありました。今はビルドやテストの結果まで付けて報告してくれます。

Windows の落とし穴:Claude Code の Bash ツールは Git Bash なので、Windows ならではの失敗が起きます。同じ失敗を繰り返さないよう、踏んだものを書き足しています。→ Windows で Claude Code を使うときのハマりどころ

モデルの使い分け:→ Claude Code でタスクの難しさによってモデルを使い分ける

ちなみに、応答の口調をキャラクターに寄せる指定も入れています。長時間の作業でも、報告を読むのが少し楽しくなります。

キー割り当て

~/.claude/keybindings.json で、Enter を改行、Ctrl+Enter を送信にしています。ほかのチャットツールと送信キーをそろえたかったからです。

{
  "bindings": [
    {
      "context": "Chat",
      "bindings": {
        "enter": "chat:newline",
        "ctrl+enter": "chat:submit"
      }
    }
  ]
}

経緯とハマりどころは Claude Code を「Ctrl+Enter / Cmd+Enter で送信」にする にまとめています。

スキルとメモリ

  • スキル:複数のリポジトリで使う手順は ~/.claude/skills/ にスキルとして置いています。たとえば YouTube API の認証情報の扱いは、スキルにまとめて「新しい OAuth クライアントは作らない」と書いています。アプリごとに認証情報が増えていくのを防ぐためです
  • メモリ:プロジェクトごとのメモリ(~/.claude/projects/<プロジェクト>/memory/)に、コードからは分からない状況を残してもらっています。「このリポジトリは非公開のまま」「AdSense の審査状況」などです。会話が変わっても前提を説明し直さずに済みます

設定を育てるときの考え方

  • 困ったら、その場で設定に足す:同じ注意を2回したら CLAUDE.md に書く。危ない操作が起きたら hooks か deny で止める
  • グローバルとプロジェクトを分ける:どこでも同じことだけをグローバルに書く
  • 言葉のルールと仕組みの制限を重ねる:CLAUDE.md の「.env を読まない」は守られないこともあります。deny や hooks の仕組みと組み合わせています

設定はこれからも変わっていくので、大きく変わったらまた書きます。

この記事をシェア

関連する記事

打鍵音づくりに AI を使ったら、品質は上がったが楽にはならなかった(TaktKey)

キーを打つたびにメカニカルキーボードの音を鳴らす Windows アプリ TaktKey の音づくりで、Claude Code に合成パラメータを大量に出させました。合成だけ・自分で録音・フリー素材の加工と試した順に、効いた処理と、最後まで人の耳に残った判断をまとめます。8音色の試聴つきです。

Claude Code の auto mode に止められた操作を1か月分集計した(64件の内訳と、許可リストの落とし穴)

Claude Code の auto mode が拒否した操作を、会話ログから1か月分集計しました。2.2万回のツール呼び出しのうち止められたのは64件。半分近くは本番デプロイで、読むだけの grep が止められた例もありました。公式ドキュメントと照らし合わせて分かった、許可リスト(permissions.allow)が効く・効かない条件もまとめます。

Claude Code に GCP の課金を棚卸しさせたら、月1万円が半分になった(失敗込みの記録)

個人開発で使っている GCP の全プロジェクトを、Claude Code と一緒に横断して見直しました。gcloud での調査、ストレージの掃除、通信料の削減、そして CUD の二重契約という失敗まで。AI に任せられたこと・人間がやる必要があったことを整理します。

Claude Code の会話は30日で消え、compact で要約される。何をどこに残すか

Claude Code の会話ログは既定で30日で削除され、長い会話は compact で要約されます。1か月分のログを数えると、3割のセッションで compact が起きていました。compact のあとに何が残り、何が落ちるのかを公式ドキュメントで確かめ、CLAUDE.md・auto memory・リポジトリのドキュメントの使い分けをまとめます。

テーマから探す