0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Claude CodeのHooks & Pluginsとは?高度なカスタマイズ機能を徹底解説

0
Last updated at Posted at 2026-01-26

はじめに

Claude Codeには、動作をカスタマイズするための「Hooks」と「Plugins」という機能があります。

  • Hooks: Claude Codeのライフサイクルに介入してシェルコマンドを実行
  • Plugins: Hooks、スラッシュコマンド、MCPサーバーをパッケージ化して共有

本記事では、これらの機能の仕組み、設定方法、活用例について解説します。

対象読者:

  • Claude Codeを深くカスタマイズしたい方
  • チームで設定を共有したい方
  • 品質チェックやワークフローを自動化したい方

Hooksとは

Hooksは、Claude Codeの特定のタイミングで自動実行されるシェルコマンドです。

「if this, then that」のルールをClaude Codeに設定できると考えてください。

Hook Types(フックの種類)

Hook タイミング 用途例
PreToolUse ツール実行前 実行をブロック、バリデーション
PostToolUse ツール実行後 ログ記録、後処理
Notification 通知発生時 外部サービス連携
Stop 応答完了時 最終チェック、レポート生成
PermissionRequest 権限確認時 自動許可/拒否

動作フロー例

ユーザー: 「このファイルを編集して」
     ↓
[PreToolUse Hook] → 編集前チェック(lint等)
     ↓
Claude: Editツール実行
     ↓
[PostToolUse Hook] → 編集後処理(テスト実行等)
     ↓
完了

Hooksの設定方法

設定ファイルの場所

Hooksは以下の設定ファイルに記述します。

ファイル 用途
~/.claude/settings.json ユーザー設定(全プロジェクト共通)
.claude/settings.json プロジェクト設定(Git管理可能)
.claude/settings.local.json ローカル設定(Git除外推奨)

基本構文

~/.claude/settings.json
{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Edit",
        "command": "echo 'Editing file: $FILE_PATH'"
      }
    ],
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "command": "npm run lint --fix"
      }
    ]
  }
}

matcherの書き方

パターン 説明
"Edit" Editツールに完全一致
"Edit|Write" EditまたはWrite
"Notebook.*" Notebookで始まるツール全て
".*" 全ツール

matcherは正規表現をサポートしています。

実践的なHooks活用例

1. TDD Guard(テスト駆動開発の強制)

ファイル変更時にテストが通らなければブロックします。

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "Edit|Write",
        "command": "npm test || exit 1"
      }
    ]
  }
}

exit 1 を返すとツール実行がブロックされます。

2. 自動フォーマット

編集後に自動でコードフォーマットを実行します。

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "command": "prettier --write $FILE_PATH"
      }
    ]
  }
}

3. Slack通知

長時間タスク完了時にSlackに通知します。

{
  "hooks": {
    "Stop": [
      {
        "matcher": ".*",
        "command": "curl -X POST -H 'Content-type: application/json' --data '{\"text\":\"Claude Code task completed\"}' $SLACK_WEBHOOK_URL"
      }
    ]
  }
}

4. TypeScript型チェック

TypeScriptファイル編集時に型チェックを実行します。

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "command": "if [[ $FILE_PATH == *.ts ]]; then npx tsc --noEmit; fi"
      }
    ]
  }
}

Pluginsとは

Pluginsは、Hooks、スラッシュコマンド、MCPサーバーをパッケージ化して配布・共有できる機能です。2026年1月現在、Public Betaとして提供されています。

Pluginに含められるもの

Plugin
├── Hooks(自動実行コマンド)
├── Slash Commands(/で始まるコマンド)
├── MCP Servers(外部ツール連携)
└── Subagents(サブエージェント定義)

Pluginのインストール

Claude Code内で /plugin コマンドを使用します。

/plugin install <plugin-name-or-url>

公開されているPlugin例

Plugin 機能
GitButler Hooks GitButler連携のHooks集
TDD Guard テスト駆動開発支援
TypeScript Quality TypeScript品質チェック
claude-hooks TypeScriptベースのHooks管理

カスタムスラッシュコマンドの作成

スラッシュコマンドは、.claude/commands/ フォルダにMarkdownファイルを配置することで作成できます。

ディレクトリ構造

.claude/
└── commands/
    ├── test.md      → /test コマンド
    ├── deploy.md    → /deploy コマンド
    └── review.md    → /review コマンド

コマンドファイルの書き方

.claude/commands/test.md
このプロジェクトのテストを実行してください。

1. `npm test` を実行
2. 失敗したテストがあれば原因を分析
3. 修正案を提示

引数: $ARGUMENTS

$ARGUMENTS で、コマンド実行時の引数を受け取れます。
例: /test --coverage$ARGUMENTS = --coverage

注意点・落とし穴

1. Hook実行タイムアウト

Hookのデフォルトタイムアウトは60秒から10分に変更されました。長時間のビルドやテストにも対応可能です。

2. 無限ループに注意

PostToolUseでファイルを変更すると、再度Hookがトリガーされる可能性があります。

// NG: 無限ループの可能性
{
  "PostToolUse": [{
    "matcher": "Edit",
    "command": "prettier --write $FILE_PATH"  // これがEditをトリガー
  }]
}

対策: 外部コマンド(prettier等)での変更はHookをトリガーしないため、通常は問題ありません。ただし、スクリプト内でClaude Codeを呼び出す場合は注意が必要です。

3. セキュリティ

Hooksは任意のシェルコマンドを実行できるため、以下に注意してください。

  • プロジェクトの .claude/settings.json は内容を確認してからプルする
  • 環境変数で機密情報を渡す場合は settings.local.json を使用
  • 外部Pluginはソースコードを確認してからインストール

4. 環境依存

Hooksで使用するコマンドがチームメンバー全員の環境に存在するか確認してください。

// 環境依存の例
{
  "command": "brew install something"  // macOS限定
}

まとめ

  • Hooksは、Claude Codeのライフサイクルに介入するカスタマイズ機能
  • PreToolUseでブロック、PostToolUseで後処理、Stopで完了時処理
  • PluginsでHooks、コマンド、MCPサーバーをパッケージ化して共有
  • カスタムスラッシュコマンドで頻繁な操作を簡略化
  • セキュリティと環境依存に注意

Hooks & Pluginsを活用することで、チームの開発ワークフローを標準化し、品質を自動で担保できます。まずは簡単なHookから試してみてください。

参考リンク


Claude Codeをさらに活用したい方へ

Hooks & Pluginsをさらに活用するClaude Code Skillsを公開しています。

  • Starter Pack(無料): TDD・デバッグ・コードレビューの基本ワークフロー → 無料ダウンロード
  • Pro Pack(¥4,980): 21エージェント + CI/CD自動設計 + 3スキル統合パック → 詳細を見る
0
0
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?