Mods の概要
mod を使用して Claude Code にペイン、コマンド、ツール呼び出しルールを追加します。mod でできることや、mod の作成方法、インストール方法、mod が実行される場所を確認してください。
mod は Claude Code の外観と動作を変更する プラグイン です。JavaScript または TypeScript のイベントハンドラで構成されています。Claude Code はイベント(ツール呼び出し、送信されたプロンプト、インターフェイスの一部が描画されるなど)が発生したときにハンドラを呼び出し、ハンドラはイベントを監視したり、変更したり、引き継いだりできます。mod を使用して、各リクエスト後のコンテキストの満杯度をチャートするペインなど、Claude Code に独自の機能を追加します。mod のファイルと完全な例については、mod の仕組み を参照してください。
Claude Code の既存の hooks もイベントで実行されます。設定ファイルで構成するシェルコマンド、HTTP リクエスト、またはプロンプトとして実行されます。mod のハンドラは Claude Code 内で実行される関数です。Claude Code は両方の種類の hooks を呼び出します。このページでは、「hook」は mod のハンドラを意味し、設定ファイルの種類は「settings hook」です。
mod でできること
Settings hooks、skills、status lines、MCP サーバーは Claude Code の外で動作します。各々はスクリプトを実行するか、Claude にテキストまたはツールを提供します。mod は Claude Code 内で実行されるため、それらができないことができます。
- 使用できるインターフェイスを描画する: トランスクリプトの横のペイン、またはプロンプトの上のバンド。タブ、ボタン、テキストフィールドを含みます。インターフェイスに描画する を参照してください。
- Claude Code 独自のインターフェイスを再描画する: ツール呼び出しの行、スピナー、Claude が質問をするダイアログなど、Claude Code が自身で描画する部分を置き換えたり、スタイルを変更したりします。Claude Code が既に描画しているものを変更する を参照してください。
- ツール呼び出しまたはリクエストに介入する: たとえば、ツール呼び出しを保持しながらユーザーに質問したり、ツールを実行せずに回答したり、1 つのリクエストを別のモデルに送信したりします。ツール呼び出しをガードまたは変更する と ターンをフォローする を参照してください。
- コマンドで独自のコードを実行する: Claude ターンなしで、Claude が作業中でも、すぐに関数を実行する
/command。コマンドまたはツールを追加する を参照してください。 - hooks 間でデータを共有する: mod の hooks はそのファイル内の変数を共有するため、1 つの hook が記録したものを別の hook が表示できます。たとえば、1 つの hook がツール呼び出しをカウントしながら別の hook がスピナーの横にカウントを表示したり、1 つが各リクエストのトークン使用量を読み取りながら別がペインでチャートしたりできます。イベントに反応する を参照してください。
Mod は Claude Code CLI と Claude Desktop アプリの Code タブで動作します。VS Code 拡張機能、claude -p、クラウドセッションなど、他の場所での動作を理解するには、mod が実行される場所 を参照してください。settings hook、skill、または MCP サーバーが既に必要なことを実行している場合は、mod を作成する前に それらを比較してください。組織の mod を管理するには、組織の mod を管理する を参照してください。
mod を取得する
次の 3 つの方法のいずれかで mod を開始できます。
- 既に持っているものを使用する: Claude Code 独自の機能の一部は mod です。たとえば
/diff。Claude Code に組み込まれた Mod を参照してください。 - 作成する: Claude Code セッションで必要なものを説明すると、Claude が mod を作成します。Claude に mod を依頼する を参照してください。mod のコードの仕組みを学ぶには、自分で作成してください。
- インストールする: mod をインストールまたは更新する を参照してください。
mod をインストールまたは更新する
Mod はあなたの権限で実行されるコードです。ファイルの読み取りと書き込み、プロセスの開始、ネットワークリクエストの実行ができます。信頼できる著者とマーケットプレイスからのみ mod をインストールしてください。mod を信頼するかどうかを決定する を参照してください。
Mod はマーケットプレイスからプラグインとしてインストールされます。プラグインの名前、@、マーケットプレイスの名前を指定します。これらの例は、your-org という名前のマーケットプレイスから token-chart という名前のプラグインをインストールします。
- Claude Code セッションで
/plugin install token-chart@your-orgを実行します。 - シェルで
claude plugin install token-chart@your-orgを実行します。
プラグインをインストールする はマーケットプレイス、スコープ、VS Code 拡張機能と Desktop アプリ、および プラグインを更新し続ける をカバーしており、すべてが mod を含むプラグインに変更なしで適用されます。
セッションが開いている間にシェルから mod をインストールまたは更新する場合は、そのセッションで /reload-plugins を実行してロードします。それ以外の場合は、Claude Code を次回起動するときにロードされます。
mod を信頼するかどうかを判断する
mod は Claude Code 内であなたの権限で実行されるコードです。mod は信頼できる作成者とマーケットプレイスからのみインストールしてください。
mod が到達できる範囲
mod はあなたの権限で実行されるため、インストールする前に、それが何にアクセスできるかを知っておいてください。読み込まれると、mod は以下のことができます。
- あなたのマシンであなたとして動作する: ユーザーアカウントがアクセスできる場所ならどこでもファイルを読み書きし、プログラムを起動し、ネットワークリクエストを行う
- あなたのシークレットを読む: 環境変数と設定ファイル(どちらかに保存している API キーを含む)
- あなたのセッションを見る: 送信するすべてのプロンプトと Claude が行うすべてのツール呼び出し
- あなたのセッションを変更する: プロンプトまたはツール呼び出しを書き直し、あなたが入力したかのようにプロンプトを送信し、別のセッションにメッセージを送信する
- あなたに尋ねずに動作する: あなたが尋ねられる前にツール呼び出しを承認する
- あなたの使用量を消費する: あなたのプランまたは API キーでモデルを呼び出す
ツール呼び出しを承認する mod は、ask ルールがプロンプトを表示するもの、または独自の PreToolUse フックがブロックしたものを承認できます。フックで権限を拡張するには、そのような mod が承認できるもの(deny ルールが拒否する呼び出しを承認できる場合を含む)が記載されています。
mod は Claude Code のインターフェイスの大部分を再スタイル化できますが、権限プロンプトはできません。プロンプトが表示する内容を変更することはできません。
mod をインストールする前に、mod が何をするかをリストアップする
mod をインストールする前に、どのイベントをフックし、ファイルを読むやネットワークリクエストを行うなど Claude Code に何をするよう要求するかをリストアップできます。実行することなく確認できます。まず、プラグインのファイルを取得します。たとえば、リポジトリをクローンします。次に、シェルで、プラグインのディレクトリに対して claude plugin validate を実行します。
claude plugin validate ./some-mod
出力の hooks: と calls: の行は、mod が処理するイベントと Claude Code に要求する内容をリストアップします。mod が何をできるかを確認するには、出力と確認すべき呼び出しが表示されます。
mod をオンまたはオフにする
Mod には Claude Code v2.1.287 以降が必要で、デフォルトではオンです。シェルで claude --version を実行して確認し、古い場合は Claude Code を更新してください。
Mod をオフにするには、停止する数と期間を選択します。それらをオンに戻すには、同じ変更を元に戻します。
- 1 つの mod: Installed タブの
/pluginからそのプラグインを無効化またはアンインストールする - すべてのインストール済み mod、1 つのセッション:
--safe-modeで Claude Code を開始します。これは他のカスタマイズも除外します。 - インストールしたすべての mod、すべてのセッション:
~/.claude/settings.jsonで"disableAllHooks": trueを設定します。Settings hooks とカスタムステータスラインも停止します。組織が管理するものは実行し続けます。
組織を通じて Claude Code を使用する場合、管理者は、どの mod がロードされるかを制限することもできます。管理者は ユーザーがインストールした mod がロードされるのを停止する から開始します。
Mod があなたのためにロードできるかどうかを確認するには、mod がロードできるかどうかを確認する を参照してください。
早期アクセス中に CLAUDE_CODE_ENABLE_FUNCTION_HOOKS を設定した場合は、削除してください。Claude Code v2.1.287 以降はそれを無視するため、0 に設定しても mod をオフに保ちません。
セッションがロードした mod を確認する
ターミナルセッションがロードした mod を確認するには、Claude Code プロンプトで /plugin を実行します。タブの下の薄い行はカウントと名前を示します。たとえば 1 mod active · first-mod。インストールした mod がそこに名前が付いていない場合は、mod が何もしない理由を確認する を参照してください。
mod の仕組み
Mod は プラグイン であり、hooks と呼ばれるイベントハンドラを登録するコードを持っています。Claude Code はイベント(Claude がツールを呼び出すときやスピナーが描画されるときなど)が発生したときに hook を実行します。小さな mod には 3 つのファイルがあります。
first-mod/
├── .claude-plugin/
│ └── plugin.json
└── hooks/
├── hooks.json
└── register.js
plugin.json: プラグインの マニフェストhooks.json: コードファイルを指すregister.js: コード。hooks モジュールと呼ばれます。Claude Code にどのイベントで関数を実行するかを指示します。
これは完全な register.js です。Claude が実行するツール呼び出しをカウントし、Claude が作業中にスピナーの横にカウントを表示します。Thinking · tool calls: 3… のように。
// 以下の 2 つの hooks で共有されるカウント
let calls = 0
// Claude Code は mod がロードされるときにこれを 1 回呼び出す
export function register(on) {
// Claude がツールを使用しようとするたびに実行される
on('tool.call', async ($, e, next) => {
calls += 1
// Claude Code にインターフェイスを再度描画するよう要求し、新しいカウントが表示されるようにする
$.ui.invalidate('ui.render')
// ツールを通常通り実行させる
return next(e)
})
// Claude Code がスピナーを描画するたびに実行される
on('ui.render', { component: 'Spinner' }, async ($, e, next) => {
// Claude Code のスピナーを保持し、単語の後にカウントを追加する
return next({ ...e, props: { ...e.props, suffix: ' · tool calls: ' + calls + '…' } })
})
}
ファイルは 2 つの hooks を登録し、両方とも上部の calls 変数を使用します。
tool.callhook は Claude がツールを使用しようとするたびに実行されます。callsに 1 を追加し、Claude Code にインターフェイスを再度描画するよう要求し、ツールを通常通り実行させます。ui.renderhook は Claude Code がスピナーを描画するたびに実行されます。Claude Code 独自のスピナーを保持し、単語の後にカウントを追加します。
この記録は mod が動作しているところを示しています。プロンプトボックスの上のスピナー行を見てください。Claude がディレクトリをリストし、2 つのファイルを読む間、Thinking · tool calls: 1… を読み、次に 2…、次に 3… を読みます。
hook がイベントで何ができるか
Claude Code は hook を実行してからイベントに作用するため、hook は次に何が起こるかを決定します。3 つの選択肢があります。
- 観察: 何が起こっているかに注意し、例の
tool.callhook のように変更されずに続行させる - 書き直す: イベントを変更してから続行する。
ui.renderhook がスピナーにカウントを追加するとき - 回答: イベント自体を処理し、通常の動作が実行されないようにする。たとえば、コマンドを拒否する
独自のコード外で何かを実行するには、描画、コマンド追加、モデル呼び出し、ファイル読み取り、プロセス開始、ネットワークリクエスト実行など、hook は mods API を呼び出します。Hook にはこれらのことを行う他の方法がないため、Claude Code は mod をインストールする前にそれが何をするかをリストできます。
各選択肢の背後にあるコードについては、イベントに反応する を参照してください。Hook が呼び出せるものについては、mods API を使用する を参照してください。
mod が実行される場所
Mod の hooks はプラグインをロードするあらゆる種類のセッションで実行されます。描画はより狭いです。ターミナルと Desktop アプリのみが mod のペイン、バンド、置き換えられた行を表示します。このテーブルは Claude Code を実行する可能性のある各場所をリストしています。
| Claude Code を実行する場所 | Hooks が実行される | Mod が描画するもの |
|---|---|---|
ターミナルの claude。エディタの統合ターミナルと JetBrains プラグインを含む |
はい | はい |
| Desktop アプリの Code タブ。WSL セッションを除く | はい | はい。elements テーブル がターミナルのみとしてマークするもの以外 |
| Desktop アプリの WSL セッション | いいえ。WSL セッションではプラグインが利用できないため | いいえ |
| VS Code 拡張機能のチャットパネル | はい | いいえ |
claude -p と Agent SDK |
はい | いいえ |
| claude.ai またはモバイルアプリからの Remote Control | はい。マシン上のセッション | マシン上のターミナル |
| クラウドセッション | はい。クラウドセッションに到達する プラグイン | いいえ |
描画できる mod は、実行しているアプリを確認し、何も描画されない場所でトランスクリプトの行またはコマンドのテキスト返信にフォールバックできます。
組織の mod を制御する
管理者は 管理設定 を通じて mod が実行されるかどうかと、どの mod が実行されるかを決定します。組織の mod を管理する はデフォルトで何が起こるか、mod をレビューする方法、独自の mod でポリシーを実施する方法をカバーしています。
Mod、settings hooks、skills、MCP サーバーを比較する
Mod、settings hooks、skills、MCP サーバーは重複しています。このテーブルは各々が何であり、いつそれを選ぶかを示しています。
| Mod | Settings hook | Skill | MCP サーバー | |
|---|---|---|---|---|
| それが何であるか | Claude Code が独自のプロセスで呼び出す関数を含むプラグイン | Claude Code がライフサイクルイベントで実行するシェルコマンド、HTTP リクエスト、またはプロンプト | Claude が読む SKILL.md ファイルの指示 |
Claude にツールを提供する外部プロセスまたはサービス |
| 何を変更できるか | ツール呼び出し、プロンプト、コマンド、ターン、インターフェイスが描画するもの | ツール呼び出しまたはプロンプトが進むかどうか、ツール呼び出しの引数と結果、Claude 用に追加されたコンテキスト | Claude が知ることと実行すること | Claude が持つツール |
| インターフェイスに描画できるか | はい | いいえ | いいえ | いいえ |
| 何を書くか | JavaScript または TypeScript | スクリプトと settings.json エントリ |
Markdown | 任意の言語のサーバー |
| 次の場合に選ぶ | ペイン、プロンプトの上のバンド、カスタムコマンド、またはイベントを書き直したい | スクリプトでイベントをブロック、許可、またはログしたい。既に持っている | 同じ指示をチャットに何度も貼り付けている | Claude が外部システムに到達する必要がある |
他のそれぞれには独自のページがあります。Hooks、Skills、MCP。プラグインはすべて 4 つを保持できるため、mod は skill と MCP サーバーと同じプラグインで出荷できます。
Claude Code に組み込まれた Mod
Claude Code 独自の機能の一部は mod です。セッションが持つものを確認するには、Claude Code プロンプトで /plugin を実行し、Installed タブに移動します。これは Built-in の下にリストしています。組み込み mod を更新またはアンインストールすることはできず、テーブルの最後の列は各々をオフにする方法を示しています。mods active 行 は組み込み mod を除外しています。
このテーブルは /plugin が表示する名前で各エントリをリストしています。
/plugin の名前 |
何をするか | どこでオンか | オフにする方法 |
|---|---|---|---|
cc-plugin-agents-md |
AGENTS.md をプロジェクト指示としてロードする |
すべてのセッション。AGENTS.md を読めないもの を除く |
/plugin で無効化するか、どの指示ファイルがロードされるかを選択する |
cc-plugin-diff |
/diff を引き継ぎ、そのペインを描画する |
インタラクティブターミナルセッション | /plugin で無効化します。/diff は残り、Claude Code の組み込みバージョンのコマンドが回答します。 |
cc-plugin-plugin-authoring |
Claude に mod を書くための plugin-authoring skill を提供する。Skill を保持し、mod コードはない。 |
Anthropic がインストール済み mod をリモートでオフにしていない限り | /plugin で無効化 |
cc-plugin-sec-default |
ユーザーがインストールした mod から組織が管理するものを保護する | ガードがロードされる場所 | できません。管理者が 管理設定で順序を設定します |
cc-plugin-telemetry |
Claude Code とその組み込み mod がログするアナリティクスレコードを送信する | Claude Code 独自のアナリティクスがオンの場所 | /plugin で無効化するか、アナリティクスをオフにします。たとえば DISABLE_TELEMETRY で |
cc-plugin-you-should-know |
Claude がより長いタスクに取り組んでいる間、あなたの背中を見守るサイドエージェントを実行します。見落とす可能性のある価値のある情報を見つけると、プロンプトの上にメモを表示します。 | デフォルトで無効化。組織で利用可能な場合、/plugin -> Installed -> Show disabled にリストされています。/plugin enable cc-plugin-you-should-know@builtin で有効化します。 |
/plugin で無効化 |
インストール済み mod を停止する settings と flags。disableAllHooks、--bare、--safe-mode は組み込み mod を停止しません。
組み込み mod のソースを読む
これらの mod のソースは Claude Code リポジトリの mods ディレクトリ で公開されています。各々は hooks モジュールとテストを含む完全なプラグインです。
diff:/diffペイン。キーボードアクションにバインドされたボタンとスクロール。mod が自身で処理agents-md:AGENTS.mdをプロジェクト指示としてロード。userConfigオプション付きsec-default: デフォルトで何が起こるかを知る で説明されているガード。ポリシーを実施する mod のモデルtelemetry: 他の mod が呼び出せるメソッドを追加し、それらの型を出荷
次のステップ
- Mod を作成する: ツール呼び出しをカウントし、スピナーの横にカウントを表示し、コマンドを追加するものを構築し、編集とリロードループを学ぶ
- インターフェイスに描画する: ペイン、プロンプトの上のバンド、ボタン、テキストフィールド、状態
- イベントに反応する: ツール呼び出し、プロンプト、ターン、mod が実行される順序
- mods API を使用する: コマンド、ツール、モデル呼び出し、タイマー、ファイル
- Mod をテストする: セッションなしで実行される自動テスト
- Mod をトラブルシューティングする: mod が何もしない理由とデバッグログ
- 組織の mod を管理する: デフォルト、管理設定、mod のレビュー、ポリシー mod
- Mods リファレンス: すべてのイベント、メソッド、要素、制限