PR

【完全ガイド】Claude Code設定を極める – CLAUDE.md, rules, skills, slash commands, subagents, hooks, pluginsの使い分け

Claude Codeは、ターミナル上で動作する強力なAIコーディングアシスタントです。しかし、その真価を発揮するには適切な設定が不可欠。本記事では、Claude Codeで設定できる7つの主要コンポーネントの使い分けと最適化について、実践的な観点から解説します。

Claude Code設定の全体像

Claude Codeでは、以下の7種類の設定を組み合わせることで、AIの振る舞いを細かくカスタマイズできます。

設定種別 配置場所 読み込みタイミング 主な用途
CLAUDE.md ~/.claude/CLAUDE.md 起動時に全文読み込み 全プロジェクト共通ルール
rules ~/.claude/rules/ 起動時に全文読み込み パス限定ルール・階層化設定
skills ~/.claude/skills/ 概要のみ→必要時に全文 自動発動の専門知識
slash commands ~/.claude/commands/ 呼び出し時のみ 明示的に実行する定型処理
subagents ~/.claude/agents/ 概要のみ→必要時に全文 独立コンテキストの専門タスク
hooks settings.json イベント発火時 ライフサイクル制御・自動化
plugins マーケットプレース インストール後 拡張機能の配布・共有

1. CLAUDE.md – 基盤となるグローバル設定

CLAUDE.mdは、Claude Codeが起動時に必ず読み込む基本設定ファイルです。すべてのプロジェクトで共通して適用したいルールを記述します。

配置場所と構成

# ユーザーレベル(全プロジェクト共通)
~/.claude/CLAUDE.md

# プロジェクトレベル(特定プロジェクト専用)
./CLAUDE.md
./.claude/CLAUDE.md

記述すべき内容

  • 言語設定(例:「日本語で返答すること」)
  • コーディングスタイル規約
  • セキュリティポリシー
  • 禁止事項・注意事項

実践例

# CLAUDE.md

## 基本ルール
- 日本語で回答する
- コードには必ずコメントを付ける
- セキュリティに関わる情報は環境変数から取得する

## コーディング規約
- TypeScriptを使用する際は厳格なnullチェックを行う
- 関数は単一責任の原則に従う
- 変数名・関数名はキャメルケースで記述する

注意点:CLAUDE.mdは起動時に全文を読み込むため、記述量が増えるとコンテキストウィンドウを圧迫します。常に必要な情報のみに絞りましょう。

2. rules – 構造化されたルール管理

rulesはCLAUDE.mdの発展形で、ディレクトリ構造を使った階層的なルール管理が可能です。

ディレクトリ構成例

~/.claude/rules/
├── frontend/
│   ├── react.md      # React固有のルール
│   └── styles.md     # CSS/スタイリングルール
├── backend/
│   ├── api.md        # API設計ルール
│   └── database.md   # DB操作ルール
├── security.md       # セキュリティ共通ルール
└── general.md        # 全般的なルール

パス限定ルールの活用

特定のファイルパスにのみ適用するルールを設定できます:

---
paths: src/api/**/*.ts
---

# API開発ルール
- エンドポイントは RESTful 設計に従う
- 入力バリデーションを必ず実装する
- エラーレスポンスは統一フォーマットで返す

3. skills – 自動発動する専門知識パッケージ

skillsは、Claude Codeが会話内容に基づいて自動的に読み込む専門知識のパッケージです。コンテキスト効率を最大化できる強力な機能です。

skillsの構造

~/.claude/skills/
└── tdd/
    ├── SKILL.md          # スキル定義(必須)
    ├── examples/         # サンプルコード
    └── templates/        # テンプレートファイル

SKILL.mdの書き方

---
name: test-driven-development
description: テスト駆動開発(TDD)の専門知識。RED-GREEN-REFACTORサイクルに基づいた開発を支援。
---

# テスト駆動開発スキル

## 基本原則
1. RED: 失敗するテストを先に書く
2. GREEN: テストを通す最小限の実装
3. REFACTOR: コードを改善

## 適用条件
- 「TDDで」「テスト駆動で」などの指示があった場合
- テストファイルの作成を依頼された場合

skillsの発動メカニズム

Claude Codeは起動時にskillsのdescription(概要)のみを読み込みます。会話の中で関連性が高いと判断した場合にのみ、SKILL.md全文を読み込んで適用します。これにより、必要なときだけコンテキストを消費する効率的な設計となっています。

4. slash commands – 明示的に呼び出す定型処理

slash commandsは、ユーザーが/command形式で明示的に呼び出す定型プロンプトです。呼び出すまでコンテキストを消費しないため、複雑な手順や長い指示を格納するのに最適です。

配置場所

~/.claude/commands/
├── git/
│   ├── commit.md      # /git:commit で呼び出し
│   └── pr.md          # /git:pr で呼び出し
├── deploy.md          # /deploy で呼び出し
└── review.md          # /review で呼び出し

実践例:git commitコマンド

# ~/.claude/commands/git/commit.md

以下のルールに従ってgit commitを実行してください:

## コミットルール
1. 変更をすべて一度にコミットせず、意味のある単位で分割
2. Conventional Commits形式を使用
   - feat: 新機能
   - fix: バグ修正
   - docs: ドキュメント
   - refactor: リファクタリング
3. コミットメッセージには「なぜ」を含める
4. 日本語でコミットメッセージを記述

## 実行手順
1. `git status` で変更を確認
2. 関連する変更をステージング
3. 適切なメッセージでコミット

使い分けのポイント

slash commandsに向いている内容:

  • 特定タイミングでのみ必要な詳細手順
  • 長い定型プロンプト
  • 複数ステップの操作手順

CLAUDE.mdに残すべき内容:

  • 言語設定など常時適用するルール
  • セキュリティポリシー
  • 基本的なコーディング規約

5. subagents – 独立コンテキストの専門エージェント

subagentsは、独立したコンテキストウィンドウを持つ専門エージェントです。複雑なタスクを分離して処理し、結果のみを親に返すことができます。

subagentsの構造

~/.claude/agents/
└── security-auditor/
    ├── agent.md           # エージェント定義
    ├── system-prompt.md   # システムプロンプト
    └── tools.json         # 利用可能ツールの設定

agent.mdの例

---
name: security-auditor
description: セキュリティ監査専門のサブエージェント。脆弱性検出、依存関係チェック、セキュリティベストプラクティスの検証を担当。
tools:
  - bash
  - read_file
  - write_file
---

# Security Auditor Agent

## 役割
コードベースのセキュリティ監査を実行し、潜在的な脆弱性を特定する。

## 実行タスク
- 依存関係の脆弱性スキャン
- ハードコードされた認証情報の検出
- SQLインジェクション等の脆弱性パターン検出

skillsとsubagentsの使い分け

特性 skills subagents
コンテキスト 親と共有 独立(結果のみ返す)
適したタスク 開発の流れを維持したいタスク 試行錯誤が多い独立タスク
呼び出し方 自動判断または「〜スキルを使って」 自動委譲または「@agent名」
TDD、リファクタリング デバッグ、セキュリティ監査

使い分けの判断基準:

  • コンテキストを共有したい → skills:開発の経緯を引き継いで作業を継続する場合
  • コンテキストを独立させたい → subagents:試行錯誤が多く、結果だけ知りたい場合

6. hooks – ライフサイクル制御で自動化

hooksは、Claude Codeのライフサイクルにおける特定のタイミングでシェルコマンドを実行する機能です。決定論的な制御が可能で、LLMに依存しない確実な動作を実現します。

8種類のhookイベント

イベント名 発火タイミング 主な用途
SessionStart セッション開始時 開発コンテキストの読み込み
UserPromptSubmit プロンプト送信時 プロンプト検証、コンテキスト注入
PreToolUse ツール実行前 危険なコマンドのブロック
PostToolUse ツール実行後 フォーマッター実行、ログ記録
Notification 通知発生時 カスタム通知
Stop Claude応答完了時 完了通知、後処理
SubagentStop サブエージェント完了時 サブエージェント結果の処理
PreCompact コンパクション前 トランスクリプトのバックアップ

hooks設定例

// ~/.claude/settings.json
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "prettier --write \"$CLAUDE_FILE_PATHS\""
          }
        ]
      }
    ],
    "PreToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "echo \"$(date): $CLAUDE_TOOL_INPUT\" >> ~/.claude/bash-log.txt"
          }
        ]
      }
    ]
  }
}

実用的なhooks活用例

1. 自動フォーマット

{
  "matcher": "Edit|Write",
  "hooks": [{
    "type": "command",
    "command": "prettier --write \"$CLAUDE_FILE_PATHS\""
  }]
}

2. TypeScriptエラーチェック

{
  "matcher": "Edit",
  "hooks": [{
    "type": "command",
    "command": "if [[ \"$CLAUDE_FILE_PATHS\" =~ \\.(ts|tsx)$ ]]; then npx tsc --noEmit \"$CLAUDE_FILE_PATHS\"; fi"
  }]
}

3. 危険なコマンドのブロック

{
  "matcher": "Bash",
  "hooks": [{
    "type": "command",
    "command": "if echo \"$CLAUDE_TOOL_INPUT\" | grep -qE 'rm -rf|DROP TABLE'; then exit 2; fi"
  }]
}

7. plugins – 拡張機能の配布と共有

pluginsは、slash commands、subagents、MCPサーバー、hooksをパッケージ化して配布できる仕組みです。2025年10月のアップデートで導入され、Claude Codeのエコシステムを大きく拡張しました。

pluginsでできること

  • slash commandsの配布
  • subagentsの配布
  • MCPサーバーの接続設定
  • hooksの配布
  • 上記の組み合わせ

pluginのインストール方法

# マーケットプレースの追加
/plugin marketplace add anthropic/claude-code-demo-plugins

# プラグイン一覧の表示
/plugin

# プラグインのインストール
/plugin install plugin-name

plugin.jsonの構造

{
  "name": "my-dev-toolkit",
  "version": "1.0.0",
  "description": "開発効率化ツールキット",
  "components": {
    "commands": ["commands/"],
    "agents": ["agents/"],
    "hooks": {
      "PostToolUse": [{
        "matcher": "Edit",
        "hooks": [{
          "type": "command",
          "command": "prettier --write \"$CLAUDE_FILE_PATHS\""
        }]
      }]
    }
  }
}

主要なマーケットプレース

  • Anthropic公式デモanthropic/claude-code-demo-plugins
  • コミュニティマーケットプレースClaude Code Marketplace
  • GitHub上の各種マーケットプレース:「Claude Code plugin marketplace」で検索

コンテキスト最適化のベストプラクティス

設定のリファクタリング指針

肥大化した設定を整理する際は、以下の観点で振り分けましょう:

  1. 常に必要か? → Yes: CLAUDE.md / No: 次へ
  2. パス限定が必要か? → Yes: rules / No: 次へ
  3. 自動判断させたいか? → Yes: skills or subagents / No: 次へ
  4. コンテキスト共有が必要か? → Yes: skills / No: subagents
  5. 明示的に呼び出したいか? → Yes: slash commands
  6. ライフサイクル制御が必要か? → Yes: hooks
  7. チームで共有したいか? → Yes: plugins

重複の排除

  • slash commandsとskillsで重複 → skillsからslash commandsを呼び出す
  • 複数subagentsで共通ルール → CLAUDE.mdまたはskillsに切り出す

まとめ

Claude Codeの設定は一見複雑ですが、それぞれの役割を理解すれば効果的に使い分けられます。

  • CLAUDE.md:全プロジェクト共通の基本ルール
  • rules:構造化・パス限定のルール管理
  • skills:コンテキスト共有で自動発動する専門知識
  • slash commands:明示的に呼び出す定型処理
  • subagents:独立コンテキストの専門タスク
  • hooks:決定論的なライフサイクル制御
  • plugins:拡張機能の配布と共有

コンテキストウィンドウは有限リソースです。適切に設定を分離し、必要なときに必要な情報だけを読み込む設計を心がけましょう。

おすすめ書籍: Amazonで関連書籍を見る

]]>

タイトルとURLをコピーしました