■ 1. 概要
- Claude Code には AI の動作を制御するカスタマイズ方法が7種類存在する
- 各方法はコンテキスト読み込みのタイミング、圧縮時の動作、コスト(トークン消費)の観点で異なる
■ 2. 7つのカスタマイズ方法
- CLAUDE.md ファイル:
- 設定場所: プロジェクトルートまたは任意のサブディレクトリに
CLAUDE.mdを配置- 読み込みタイミング: セッション開始時に常時読み込み
- 圧縮時の動作: メモ化・キャッシュされた後に再読み込み
- コスト: 高(関連性の有無に関わらず全行がトークンを消費)
- 用途: ビルドコマンド、ディレクトリ構造、モノレポレイアウト、コーディング規約、チームの慣例
- ルートの CLAUDE.md は全セッションで読み込まれ、サブディレクトリの CLAUDE.md はその領域がアクセスされたときのみコンテキストに入る
- チームごとのファイルは200行未満に保つことを推奨
- ルール:
- 設定場所:
.claude/rules/ディレクトリ以下にファイルを配置- 読み込みタイミング: セッション開始時(スコープなし)またはファイル照合時(パススコープ付き)
- 圧縮時の動作: 再注入される
- コスト: 中程度
- 用途: 特定の制約や規約(例: 「すべての API ハンドラは Zod で入力検証が必須」)
paths:フロントマターフィールドによるパススコープ指定で、関連時のみロード可能- スキル:
- 設定場所:
.claude/skills/以下にフォルダを作成し、各フォルダ内にSKILL.mdを配置- 読み込みタイミング: 名前と説明はセッション開始時、本文は実行時にロード
- 圧縮時の動作: 起動されたスキルは共有予算内で再注入(古いものから削除)
- コスト: 低(実行時のみロード)
- 用途: デプロイメント手順やリリースチェックリストなどの手続き的ワークフロー
- スラッシュコマンド(例:
/code-review)で起動- サブエージェント:
- 設定場所:
.claude/agents/ディレクトリ以下に YAML フロントマター付きマークダウンファイルを配置(name、description、model、tool access を指定)- 読み込みタイミング: メタデータはセッション開始時、本文は実行時にロード
- 圧縮時の動作: 最終メッセージのみを親セッションに返却
- コスト: 最小(呼び出すまでコスト0)
- 用途: 深い検索、ログ解析、依存関係監査など、並列実行または分離実行すべき補助タスク
- 独立したコンテキストウィンドウで実行され、最終結果のみが戻る
- 最大5レベルまでネスト可能
- フック:
- 設定場所:
settings.json、ポリシー設定、またはスキル・エージェントのフロントマター内に登録- 読み込みタイミング: ライフサイクルイベント時に起動
- 圧縮時の動作: 圧縮をバイパス
- コスト: 低(メインコンテキスト外で動作)
- 用途: 決定論的な自動化(リンター実行、Slack への送信、コマンドブロック)
- 「PreToolUse」フックはツール呼び出しを検査し、終了コード2で拒否可能
- 出力スタイル:
- 設定場所:
.claude/output-styles/ディレクトリ以下にファイルを配置- 読み込みタイミング: セッション開始時、システムプロンプトに注入
- 圧縮時の動作: 圧縮されない
- コスト: 高(コンテキスト占有、デフォルトプロンプトを上書き)
- 用途: 大幅な役割変更(例: 「コード補助から汎用補助へ」)
- ビルトインの Proactive、Explanatory、Learning スタイルで多くのニーズに対応可能
- システムプロンプト追加フラグ:
- 設定場所: CLI 起動時に
--append-system-promptフラグで指定- 読み込みタイミング: 呼び出し時のみ(そのセッション限定)
- 圧縮時の動作: 圧縮されない
- コスト: 中程度(プロンプトキャッシングで軽減)
- 用途: コーディング規約、出力形式設定、ドメイン知識
■ 3. 実装上のヒント
- 「毎回 X をしたら必ず Y する」という処理にはフックを使用(自動実行の方が確実)
- 絶対禁止事項の強制にはフック+権限管理を使用(プロンプトより確実)
- 30行程度の手続き内容はスキルに記述(CLAUDE.md より効率的)
- API 固有ルールには
paths:でスコープ指定を行う- 個人設定はプロジェクトレベルではなくユーザーレベルで管理
■ 4. よくある誤り
- 過度な CLAUDE.md の肥大化: チームごとのサブディレクトリ CLAUDE.md で分散させて対応
- パススコープなしのルール設定: 不要な場面でも常にロードされ、トークンを無駄に消費
- 手続き的内容を CLAUDE.md に記述: スキルに移行することで効率化
- 個人設定を共有リポジトリに保存: ローカル設定(ユーザーレベル)を使用