Claude Code CLAUDE.md EC-CUBE Laravel settings.json スラッシュコマンド 権限設定 環境変数

Claude Codeの設定ファイル(settings.json)でできるカスタマイズの全体像

Claude Codeの挙動はsettings.jsonで細かく制御できます。ツールの実行許可、環境変数、フックをJSONで宣言的に書くだけで、チーム全員を同じルールで動かせるのが利点です。

とりわけ効くのが権限設定です。危険なコマンドを事前にブロックしておけば、AIが意図せず本番データに触れる事故を防げます。まずは設定の階層と置き場所から押さえましょう。

ユーザー設定・プロジェクト設定・ローカル設定の優先順位と使い分け

設定は3層で、優先度は「ローカル > プロジェクト > ユーザー」の順に上書きされます。個人の好みはユーザー設定、チーム共通のルールはプロジェクト設定、と役割を分けるのが基本です。

  • ~/.claude/settings.json:全プロジェクト共通のユーザー設定
  • .claude/settings.json:Git管理してチームで共有するプロジェクト設定
  • .claude/settings.local.json:個人環境専用(gitignore推奨)

設定ファイルの配置場所とJSONの基本構造

プロジェクト設定はリポジトリ直下の.claude/に置きます。構造は素直なJSONで、トップレベルにpermissionsenvといったキーを並べるだけです。

{
  "permissions": {
    "allow": ["Bash(npm run test)"],
    "deny": ["Bash(rm -rf *)"]
  },
  "env": { "NODE_ENV": "development" }
}

コメントは書けないので、設定の意図はCLAUDE.md側に残すと管理しやすくなります。

権限・ツール・環境変数を制御する主要な設定項目の書き方

カスタマイズの中心はpermissionsenv、そしてフックの3つです。組み合わせれば、承認の手間を減らしつつ危険操作は封じる、バランスの取れた環境を作れます。

permissionsでallow/denyを指定してコマンド実行を制御する

allowに列挙したコマンドは確認なしで実行され、denyのものは常に拒否されます。テストやビルドなど頻繁に使う安全なコマンドをallowに入れれば、確認ダイアログの往復が消えて作業が一気に速くなります。

逆にBash(git push:*)や本番デプロイ系はdenyに入れておくと安心です。ツール名はEditReadのように指定し、パターンで対象を絞り込めます。

envとフックで開発環境に合わせた挙動を設定する

envでは、Claude Codeが起動するプロセスに渡す環境変数を定義できます。DBの接続先やAPIのモード切り替えに便利です。

フックはさらに強力で、ツール実行の前後に任意のスクリプトを差し込めます。ファイル編集後にPostToolUseで自動フォーマッタを走らせれば、AIが書いたコードも規約に沿った状態で残せます。

CLAUDE.mdとスラッシュコマンドでプロジェクト固有の振る舞いを定義する

settings.jsonが「何を許すか」を決めるのに対し、CLAUDE.mdは「どう振る舞ってほしいか」を伝える文書です。両者を併用してはじめて、プロジェクトに馴染んだアシスタントになります。

CLAUDE.mdにコーディング規約やプロジェクト情報を記述する

CLAUDE.mdはセッション開始時に自動で読み込まれる文脈ファイルです。使用フレームワークのバージョン、命名規則、テストの実行方法を書いておけば、毎回同じ指示を繰り返さずに済みます。

コツは網羅より要点。「PHPは8.1、PSR-12準拠」「コミットメッセージは日本語」など、判断がぶれやすい点を短く明記するほど効果が出ます。

独自スラッシュコマンドで定型作業を自動化する

.claude/commands/にMarkdownファイルを置くと、ファイル名がそのままスラッシュコマンドになります。review.mdを作れば/reviewで呼び出せる、という具合です。

「変更差分をレビューし、セキュリティ観点で指摘して」といったプロンプトをコマンド化しておけば、依頼文を毎回書かずに済み、チーム内の品質基準もそろいます。

EC-CUBEやLaravel開発でClaude Codeのカスタマイズを活かす実践例

EC-CUBE 4系はSymfonyベースでディレクトリ構造が独特です。CLAUDE.mdに「Customizeディレクトリで上書きし、本体は改変しない」と明記すれば、AIが適切な場所にコードを提案してくれます。

Laravelなら、Bash(php artisan test)を許可しつつphp artisan migrate:freshをdenyにし、DBの誤消去を防ぐ構成が実用的です。プロジェクトの事故リスクに合わせて設定を積み上げていくのが、カスタマイズを活かす近道です。