ModsCode日本語ブログ Claude から Mod のコード例を探す

ModsCode / 日本語ブログ / Claude Code の Mods とは?できることと始め方

Claude Code の Mods とは?できることと始め方

Claude Code の Mods(モッド)とは何か、何ができて何ができないか、必要なバージョン、動く場所、安全面の注意、止め方までを公式ドキュメントと照合して日本語でまとめました。

Claude Code の Mod(モッド)は、Claude Code そのものの見た目と動きを JavaScript / TypeScript で変えるための拡張です。仕組みの上ではプラグインの一種で、Claude Code の中で動く関数(イベントハンドラ)を持っています。ツールの呼び出し、送信したプロンプト、画面の描画といった出来事が起きると、Claude Code がその関数を呼び、関数は出来事を見るだけでも、書き換えても、代わりに答えても構いません。

この記事では、Mod の全体像を 10 分ほどで掴めるように整理します。細かい手順は、各節から別の記事へ案内します。内容は Anthropic の公式ドキュメント(Mods の概要ページ)と照合してあります。

先に結論

  • Mod は「イベントで呼ばれる JavaScript / TypeScript の関数」を持つプラグインです。専用の言語やビルド作業は要りません。
  • Claude Code の中で動くので、画面にペインや帯を描く、ツール呼び出しを止める、/コマンド を足す、といった「外からは届かないこと」ができます。
  • Mod はあなたの権限で動き、サンドボックスもありません。ファイルの読み書き、プログラムの起動、通信ができます。入れる相手は選んでください。
  • 必要なバージョンは、ターミナルの Claude Code が v2.1.287 以降、デスクトップアプリは同梱版が v2.1.286 以降です。
  • 止めたいときは、/plugin で個別に無効にするか、--safe-mode で起動します。

Mod は何でできているか

小さな Mod は 3 つのファイルでできています。Mod は専用のものではなく、普通のプラグインの形をしているので、入れ方も配り方もプラグインと同じです。

first-mod の構成
first-mod/
├── .claude-plugin/
│   └── plugin.json
└── hooks/
    ├── hooks.json
    └── register.js
  • plugin.json:プラグインの名前やバージョンを書く説明ファイルです。
  • hooks.json:コードのファイルがどこにあるかを modules で指します。この modules があることが、そのプラグインを Mod にします。
  • register.js:本体のコードです。register という関数を書き出し(export)、その中で「どのイベントでどの関数を呼ぶか」を登録します。

登録した関数は「フック」と呼ばれます。Claude Code は、イベントが起きるたびに、そのフックを先に呼びます。フックは受け取ったイベントを見るだけで通すこともできますし、内容を書き換えて通すことも、自分で答えて通さないこともできます。実際に動く最小の例は 初めての Mod の作り方 にあります。

できること

公式ドキュメントは、Mod にしかできないこととして次の 5 つを挙げています。

  1. 使える画面を描く:トランスクリプトの横のペイン、プロンプトの上の帯に、タブ、ボタン、入力欄を置けます。
  2. Claude Code が描く画面を作り替える:ツール呼び出しの行、スピナー、Claude が質問するときのダイアログなどを、置き換えたり装飾したりできます。
  3. ツール呼び出しやリクエストに割り込む:ユーザーに確認するまで呼び出しを止める、実行せずに答える、別のモデルにリクエストを送る、といったことができます。
  4. 独自のコマンドを足す:/コマンド を入力すると、Claude を介さずにすぐ関数が動きます。登録のときに immediate: true を付ければ、Claude が作業している最中でも動かせます。
  5. フック同士で情報を共有する:同じファイルの変数を共有するので、片方で数えた値を、もう片方で画面に出せます。

たとえば「ツールを何回使ったかをスピナーの横に出す」「危険な Bash コマンドを止めて理由を Claude に返す」「現在の Git ブランチをプロンプトの下に出す」といったものが、数十行で書けます。

できないこと・注意点

  • 権限確認のプロンプトは変えられません。Mod は画面の多くを作り替えられますが、許可を求めるダイアログの表示内容までは書き換えられません。
  • 描画できる場所は限られます。ペインや帯が出るのは、ターミナルとデスクトップアプリだけです。
  • イベントやメソッドはバージョンで変わります。Mod を書くときは、Claude Code が Mod のフォルダに書き出す型定義ファイルを、ドキュメントより優先して見てください(作り方の記事で触れます)。

どこで動くか

フックが動く場所と、描いたものが表示される場所は一致しません。公式ドキュメントの整理は次のとおりです。

使う場所フックは動く描いたものは出る
ターミナルの claude(エディタ内蔵ターミナル、JetBrains のプラグインを含む)動く出る
デスクトップアプリの Code タブ(WSL のセッションを除く)動く出る(ターミナル専用の要素を除く)
デスクトップアプリの WSL セッション動かない(プラグインが使えないため)出ない
VS Code 拡張のチャットパネル動く出ない
claude -p と Agent SDK動く出ない
claude.ai やモバイルからの Remote Control手元のマシンのセッションで動く手元のマシンのターミナルに出る
クラウドセッションプラグインがクラウドに引き継がれる場合は動く出ない

表示が出ない場所でも、コマンドの文字による返事やトランスクリプトへの 1 行は使えます。画面に描く Mod は、自分がどこで動いているかを調べて、描けない場所では文字に切り替えるように書けます。詳しくは デスクトップとターミナルの違い で整理します。

最初の一歩

Mod を手に入れる方法は 3 つあります。

  1. Claude に頼んで作ってもらう:Claude Code に「現在の Git ブランチをプロンプトの上に出す Mod を作って」のように頼みます。Claude は plugin-authoring というスキルを使って書きます。保存した最初のファイルのところで、ホットリロードを有効にするかどうかを聞かれます。
  2. 自分で書く:JavaScript か TypeScript のファイルを置くだけで、Node.js もバンドラーも不要です。手順は 初めての Mod の作り方 にまとめました。
  3. 人が作った Mod を入れる:/plugin install 名前@マーケットプレイス名 で入れます。入れ方は Mod の入れ方 で説明します。

試すだけなら、Anthropic が公開しているサンプルが手軽です。claude-code-playground リポジトリの claude-code/mods に、コンテキストウィンドウの予報を出す token-weather、危険なシェルコマンドを止める blast-radius、直前の編集を順に再生する replay-theater があります。どれもサポートなしの参考実装なので、自分の責任で試してください。

入れる前に知っておくこと

Mod は、入れた瞬間からあなたの権限で動くコードです。公式ドキュメントは、Mod にできることを次のように整理しています。

  • あなたとしてマシン上で動く(ファイルの読み書き、プログラムの起動、通信)
  • 環境変数や設定ファイル、API キーを読める
  • 送ったプロンプトと Claude のツール呼び出しをすべて見られる
  • プロンプトやツール呼び出しを書き換えられ、確認前に許可することもできる
  • あなたのプランや API キーでモデルを呼べる(使用量を消費する)

サンドボックスを有効にしていても、守られるのは Claude が実行する Bash コマンドだけです。Mod が起動したプロセスはその外で動きます。入れる前に、Mod が何をするコードなのかを実行せずに確かめる方法があります。具体的な手順は 他人の Mod を入れる前の安全チェック にまとめました。

動いているか確認する

セッションの中で /plugin を実行すると、タブの下に 1 mod active · first-mod のような暗い 1 行が出ます。入れたはずの Mod の名前がそこになければ、Mod は読み込まれていません。原因の探し方は Mod が動かないときの確認手順 をご覧ください。

なお、Claude Code 自身の機能にも Mod として作られているものがあります。/plugin の Installed タブの Built-in に並びます。たとえば /diff のペインや、AGENTS.md を読み込む機能がそうです。これらは更新も削除もできません。

止めたいとき

  • 1 つだけ止める:/plugin の Installed タブから、そのプラグインを無効にするか削除します。
  • このセッションだけ全部止める:claude --safe-mode で起動します。ほかのカスタマイズも一緒に無効になります。
  • いつでも全部止める:~/.claude/settings.json に "disableAllHooks": true を書きます。設定ファイルのフックと独自のステータスラインも止まります。組織が管理しているものは動き続けます。

組織の管理者は、ユーザーが入れた Mod を読み込ませない設定もできます。その設定は 組織で Mods を管理する で扱います。

まとめ

Mod は、Claude Code の画面と動作に踏み込める代わりに、権限の大きい拡張です。便利さと引き換えに、入れる前の確認が欠かせません。仕組みを知るには 用語集、使い分けを知るには Mod・フック・スキル・MCP の違い が次の一歩になります。公式の原文は 日本語版の概要ページ にあります。