はじめに:便利な設定、ほかの人にどうやって渡していますか?
Claude Code を使い込んでいくと、手元にだんだん「自分なりの工夫」がたまっていきます。決まった手順を覚えさせたスキル、危ない操作を止めるフック、GitHub や社内ツールとつなぐ MCP サーバー……。
困るのは、それをほかの人やほかのパソコンでも使いたくなったときです。フォルダを丸ごとコピーして、「このファイルはここに置いて、設定ファイルのここに追記して……」と説明する。しばらくすると、人によって中身が少しずつ違ってくる。そんな経験はないでしょうか。
この「まとめて・配って・そろえる」を1コマンドで済ませる仕組みが、今回のテーマである プラグイン(Plugins) です。

図1:プラグインを使う前と後。右側では、配布元の箱を入れるだけで全員の中身がそろいます。(静止画版)
この記事では、次の3つを実際に筆者のパソコンで操作した画面を使って説明します。
- 公式のプラグインを探して入れ、使ってみる(消し方まで)
- 自分用のプラグインを作って、その場で試す
- 作ったプラグインを「カタログ」に載せて、ほかの人が入れられるようにする
想定している読者は、Claude Code を一度は起動したことがあり、「プラグインという言葉は聞くけど、よく分からない」という方です。コマンドはすべてコピーして使えるように載せています。
検証環境:macOS / Claude Code v2.1.280 / Claude Max(2026年9月23日)。公式ドキュメントの記載も同日に確認しました。
プラグインとは:Claude Code の「拡張パック」
ひとことで言うと
プラグインは、Claude Code に機能を足すための部品を、1つのフォルダにまとめたものです。フォルダなので Git で管理でき、バージョン番号を付けて配れます。
ゲームの「拡張パック」をイメージすると分かりやすいかもしれません。本体(Claude Code)はそのままに、パックを入れると新しい道具が増えます。いらなくなれば外せます。

画面1:公式ドキュメント「プラグインを作成する」の冒頭(2026年9月23日に取得)。出典: code.claude.com/docs/ja/plugins
これまでの「.claude フォルダに置く」方法との違い
Claude Code では、プラグインを使わなくても、プロジェクトの .claude/ フォルダにスキルなどを直接置けます。公式ドキュメントはこれを「スタンドアロン設定」と呼び、プラグインと次のように使い分けるよう案内しています。
スタンドアロン(.claude/ に直接置く) | プラグイン | |
|---|---|---|
| スキルの呼び方 | /hello | /プラグイン名:hello |
| 向いている用途 | 自分だけの工夫、1つのプロジェクト専用、お試し | チームへの共有、コミュニティへの配布、版の管理 |
| 配り方 | ファイルを手でコピー | /plugin install で入れる |
おすすめの流れは、まず .claude/ で気軽に試し、形になって「人にも渡したい」と思ったらプラグインにすることです。後半のハンズオンでも、その流れで作っていきます。
中に入れられる部品
プラグインのフォルダには、次のような部品を入れられます。すべて入れる必要はなく、必須なのは名札にあたる plugin.json だけです(公式ドキュメントでは、部品が決まった場所にあれば plugin.json 自体も省略可能とされています)。

図2:プラグインを構成する部品。いちばん多い失敗は、部品のフォルダを .claude-plugin/ の中に入れてしまうことです。(静止画版)
それぞれの部品を、初めての方向けに言い換えると次のとおりです。
| 部品 | 置き場所 | ひとことで言うと |
|---|---|---|
| マニフェスト(名札) | .claude-plugin/plugin.json | 名前・版・説明。name がスキル名の頭に付く |
| スキル | skills/<名前>/SKILL.md | 決まった仕事の手順書。呼び出すか、Claude が状況に応じて使う |
| エージェント | agents/<名前>.md | 専門の助手(サブエージェント)の設定 |
| フック | hooks/hooks.json | 「ファイル編集の直前」などに必ず動くスクリプト |
| MCPサーバー | .mcp.json | GitHub や Slack など外部サービスとの接続設定 |
| LSPサーバー | .lsp.json | 型エラーの検出や定義ジャンプ(言語サーバー本体は別に入れる) |
| モニター | monitors/monitors.json | ログなどを裏で見張り、変化を Claude に知らせる |
| 設定 | settings.json | 有効にしたときの既定値。今は agent など一部の項目だけ |

画面2:公式ドキュメントの「プラグイン構造の概要」。注意書きのとおり、.claude-plugin/ に入れるのは plugin.json だけです。出典: code.claude.com/docs/ja/plugins
「マーケットプレイス」はプラグインのカタログ
もう1つ覚えておきたい言葉が マーケットプレイス(Marketplace) です。名前から「お店」を想像しがちですが、中身はプラグインの一覧表(カタログ)です。お金のやり取りはありません。GitHub のリポジトリや手元のフォルダに marketplace.json というファイルを置くと、それがカタログになります。
プラグインを使うまでの流れは、次の2段階です。

図3:カタログを登録してから、その中のプラグインを選んで入れます。公式カタログは最初から登録済みなので、公式のものなら②だけで済みます。(静止画版)
Anthropic 公式のカタログ claude-plugins-official は、Claude Code を初めて対話モードで起動したときに自動で登録されます。筆者の環境では、2026年9月23日時点で310個のプラグインが並んでいました。ブラウザで一覧を見たい場合は claude.com/plugins も使えます。

画面3:ブラウザで見られるプラグインのカタログ(claude.com/plugins、2026年9月23日に取得)
準備:Claude Code の版を確認する
プラグインの機能は更新が続いているため、まずは Claude Code を最新にしておきましょう。ターミナルで次を実行します。
# 版を確認する(この記事は v2.1.280 で確認)
claude --version
/plugin と打っても何も出てこない場合は、版が古い可能性があります。公式ドキュメントでは、Homebrew なら brew upgrade claude-code、npm なら npm install -g @anthropic-ai/claude-code@latest で更新し、ターミナルを開き直すよう案内されています。
練習用のフォルダも用意しておくと安心です。この記事では、~/plugin-lab/sample-app に「支出を記録して合計を出すだけ」の小さな Python スクリプト(Git 管理済み)を置いて試しました。お手元の練習用リポジトリでも構いません。
ハンズオン1:公式プラグインを入れて使ってみる
最初は、公式カタログにある commit-commands を入れてみます。変更内容を読んで、コミットメッセージ(変更の記録に付ける説明文)を考え、コミットまでしてくれるプラグインです。効果が目に見えやすいので、最初の1つにおすすめです。
先に、操作全体の流れを録画で見ておきましょう。

録画1:公式プラグインを探してから入れるまでの実際の画面(7場面)。以下で1場面ずつ説明します。(最後の場面の静止画)
ステップ1:/plugin でプラグイン管理画面を開く
練習用フォルダで Claude Code を起動し、入力欄に /plugin と打って Enter を押します。
cd ~/plugin-lab/sample-app # 練習用のフォルダ(お手元のものに読み替えてください)
claude
/plugin
プラグイン管理画面が開きます。上部に5つのタブがあり、Tab キーで切り替えられます(Shift+Tab で逆向き)。
| タブ | できること |
|---|---|
| Discover | 登録済みカタログからプラグインを探す |
| Installed | 入れたプラグインの確認・有効化・無効化・削除 |
| Marketplaces | カタログの追加・更新・削除 |
| Errors | 読み込みに失敗したプラグインの理由を見る |
| Stats | スキルごとの使用回数や、会話の容量(コンテキスト)をどれだけ使うかを見る |

画面4:Discover タブ。インストール数の多い順に並んでいます。
ステップ2:検索して選ぶ
Discover タブで文字を打つと、そのまま検索になります。commit と打つと候補が絞られるので、矢印キーで commit-commands に合わせて Enter を押します。

画面5:commit で検索した結果。矢印キーで commit-commands を選びます。
ステップ3:中身を確認して、入れる範囲(スコープ)を選ぶ
詳細画面が開きます。ここで必ず見てほしいのが 「Will install:」の欄です。このプラグインが何を追加するのか(ここでは commit、clean_gone、commit-push-pr の3つのコマンド)が、入れる前に分かります。
その下には、「プラグインを入れる前に信頼できるか確認してください。Anthropic はプラグインの中身を管理しておらず、意図どおり動くことを保証できません」という趣旨の注意が英語で表示されます。

画面6:インストール先の選択肢。今回はお試しなので、いちばん影響範囲の小さい「local scope」を選びました。
選択肢の3つは、どこに記録して、誰に効かせるかの違いです。詳しくは次の章で説明します。お試しなら、下の「Install for you, in this repo only (local scope)」を選んでおけば、ほかのプロジェクトや他の人には影響しません。
ステップ4:入ったことを確認する
Enter を押すと、画面が元に戻り「✓ Installed commit-commands. Plugin is now active.」と表示されました。再起動しなくても、すぐに使える状態です。
入力欄に /commit-commands: と打つと、追加されたコマンドが候補に出ます。プラグインのコマンドは必ず「プラグイン名:コマンド名」の形になります。別々のプラグインが同じ名前のコマンドを持っていてもぶつからないようにするためです。

画面7:インストール直後。/commit-commands: で3つのコマンドが候補に出ました。
メモ:公式ドキュメントによると、状況によっては「Run /reload-plugins to activate.」と表示されることがあります。その場合は
/reload-pluginsを実行すると、再起動せずに読み込み直せます(v2.1.221 より前は、再読み込みか再起動が必要でした)。
ステップ5:使ってみる
練習用フォルダの app.py を少し書き換えてから(合計金額を「1,000円」のようにカンマ区切りで出す1行の変更)、次のコマンドを実行しました。
/commit-commands:commit

画面8:8秒ほどでコミットまで完了しました。
実際に作られたコミットを git log で見てみると、変更内容に合った日本語のメッセージが付いていました(日本語で書くよう、起動時に指示しています)。

画面9:いちばん上が、プラグインが作ったコミットです。
スコープの違い:どこに記録され、誰に効くのか
インストール時に選んだ「スコープ」は、プラグインを使うかどうかの設定(enabledPlugins)をどの設定ファイルに書くかの違いです。

図4:3つのスコープの違い。迷ったら「まず local で試す → チームでそろえるなら project」です。(静止画版)
今回 local で入れたので、練習用フォルダの .claude/settings.local.json を開いてみると、確かに1行追加されていました。

画面10:local スコープで入れたときに記録された内容(この画面は、後で作る自作プラグインも入れたあとの状態です)。
注意したいのは、/plugin 画面で何も考えずに Enter を押すと、先頭の「user scope」が選ばれることです。user スコープは自分のすべてのプロジェクトに効くので、お試しのつもりが全部のプロジェクトで読み込まれていた、ということが起こります。実は筆者も、手順を確認している最中にこれをやってしまい、あとから削除しました。選択肢は矢印キーで選んでから Enter を押しましょう。
なお、ターミナルから直接入れる claude plugin install も、--scope を付けなければ user スコープになります。
# ターミナルから、このリポジトリで自分だけに入れる場合
claude plugin install commit-commands@claude-plugins-official --scope local
入れたプラグインの管理:止める・戻す・消す
入れたプラグインは、/plugin の Installed タブから選んで、無効化・有効化・削除ができます。コマンドで操作する場合は次のとおりです。
| やりたいこと | Claude Code の中で | ターミナルで |
|---|---|---|
| 一覧を見る | /plugin list | claude plugin list |
| 一時的に止める | /plugin disable 名前@カタログ名 | claude plugin disable 名前@カタログ名 --scope local |
| もう一度使う | /plugin enable 名前@カタログ名 | claude plugin enable 名前@カタログ名 --scope local |
| 完全に消す | /plugin uninstall 名前@カタログ名 | claude plugin uninstall 名前@カタログ名 --scope local |
| 変更を今のセッションに反映 | /reload-plugins | (次回起動時に反映) |
ターミナル側のコマンドは --scope で対象の設定ファイルを選べます。入れたときと同じスコープを指定しましょう。実際に無効化・有効化・削除をした画面がこちらです。

画面11:無効化してから、また有効化したところ。

画面12:検証の最後に、入れたプラグインと自作カタログをすべて削除して元に戻しました。
ちなみに公式ドキュメントによると、2週間以上かつ10セッション以上使っていないプラグインは、Installed タブの「Not used recently」にまとめて表示されます。プラグインは入れているだけで会話の容量を少し使うことがあるので、使っていないものは時々整理するとよいでしょう。
ハンズオン2:自分のプラグインを作る
次は、自分でプラグインを作ります。ここでは練習用に my-team-kit という名前で、2つの部品を持つプラグインを作ってみました。
- スキル
changelog-ja:直近のコミットを読んで、エンジニア以外にも分かる日本語の変更履歴にまとめる - フック:Claude が
.env(パスワードやAPIキーなどの秘密情報を書くファイル)を編集しようとしたら止める
「便利な手順」と「うっかりを防ぐ仕組み」の組み合わせは、チームで配るプラグインの典型的な形です。全体の流れは次の図のとおりです。

図5:作る→その場で試す→検査→配る、の順に進めます。③と④をくり返して育てるのがコツです。(静止画版)
ステップ1:フォルダと名札(plugin.json)を作る
プラグインのフォルダはどこに作っても構いません。ここでは ~/plugin-lab の下に作ります。
cd ~/plugin-lab
mkdir -p my-team-kit/.claude-plugin
my-team-kit/.claude-plugin/plugin.json を、次の内容で作ります。
{
"name": "my-team-kit",
"version": "1.0.0",
"description": "変更履歴の日本語まとめと、.envファイルの保護をセットにしたチーム用プラグイン",
"author": {
"name": "Your Name"
}
}
大事なのは name です。これがスキル名の頭に付くので(/my-team-kit:〜)、半角英小文字とハイフンで、短く分かりやすい名前にしましょう。version は省略もできますが、公式ドキュメントによると、書いておくとこの番号を上げたときだけ利用者に更新が届く仕組みになります。
ステップ2:スキルを置く
スキルは skills/<スキル名>/SKILL.md に置きます。フォルダ名がスキル名になります。
mkdir -p my-team-kit/skills/changelog-ja
my-team-kit/skills/changelog-ja/SKILL.md の中身です。
---
description: 直近のgitコミットを読み、エンジニア以外にも伝わる日本語の変更履歴にまとめる。「変更履歴」「リリースノート」「何が変わった?」と聞かれたときに使う。
argument-hint: "[対象のコミット数(省略時は5)]"
---
# 日本語の変更履歴をつくる
1. `git log --oneline -n <件数>` で直近のコミットを確認する。件数は $ARGUMENTS があればそれを使い、なければ5件にする。
2. 必要に応じて `git show --stat <コミット>` で変更されたファイルを確認する。
3. 次の形式で出力する。専門用語は使わず、利用者から見て何が変わったかを書く。
## 変更履歴(YYYY-MM-DD)
- ✨ 新機能: …
- 🐛 修正: …
- 📝 その他: …
コミットに書かれていない推測は書かない。
上の --- で囲まれた部分(フロントマター)の description は、Claude が「このスキルをいつ使うか」を判断する材料になります。何をするかだけでなく、どんなときに使うかまで書くのがポイントです。本文の $ARGUMENTS には、呼び出すときにスキル名の後ろに書いた文字(ここでは件数)が入ります。
ステップ3:フックを置く
フックは2つのファイルで作ります。まず「いつ・何を動かすか」を書く hooks/hooks.json です。
mkdir -p my-team-kit/hooks my-team-kit/scripts
my-team-kit/hooks/hooks.json:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": "${CLAUDE_PLUGIN_ROOT}/scripts/protect-env.sh"
}
]
}
]
}
}
PreToolUse は「Claude が道具(ツール)を使う直前」、matcher の Edit|Write は「ファイルの編集か新規作成のとき」という意味です。${CLAUDE_PLUGIN_ROOT} は、プラグインが実際に置かれている場所に自動で置き換わる変数です。プラグインはインストール時に別の場所へコピーされることがあるので、スクリプトの場所は必ずこの変数を使って書きます。
次に、実際に判定するスクリプト my-team-kit/scripts/protect-env.sh です。
#!/bin/bash
# Edit/Write の直前に呼ばれ、書き込み先が .env 系ファイルなら止める
input=$(cat)
file=$(printf '%s' "$input" | python3 -c 'import json,sys; print(json.load(sys.stdin).get("tool_input",{}).get("file_path",""))')
case "$(basename "$file")" in
.env|.env.*)
echo "🔒 my-team-kit: $(basename "$file") は秘密情報のファイルなので、Claudeからは編集できません。必要なら人が手で編集してください。" >&2
exit 2 # 終了コード2 = ツールの実行をブロックし、理由をClaudeに伝える
;;
esac
exit 0
最後に、スクリプトに実行権限を付けます。これを忘れるとフックが動きません。
chmod +x my-team-kit/scripts/protect-env.sh
このスクリプトは、標準入力(cat で受け取る部分)に渡される JSON から編集先のファイル名を取り出し、.env か .env.〜 なら 終了コード 2 で終わります。終了コード 2 は「この操作を止めて、標準エラーに書いた文章を理由として Claude に伝える」という合図です。流れを図にすると次のようになります。

図6:フックは「お願い」ではなく仕組みなので、Claude がうっかり編集しようとしても必ず止まります。(静止画版)
スクリプトの中で JSON を読むために
python3を使っています。macOS には標準で入っていますが、環境によってはjqなどに置き換えてください。Windows の場合、このシェルスクリプトはそのままでは動かない可能性があります(今回は macOS でのみ確認しています)。
ここまでで、フォルダの中身は次のようになりました。

画面13:my-team-kit の中身。ファイルは4つだけです。
ステップ4:インストールせずに試す(--plugin-dir)
作ったプラグインは、インストールしなくても --plugin-dir を付けて起動するだけで試せます。設定ファイルには何も書き込まれないので、気軽に何度でも試せます。
cd ~/plugin-lab/sample-app
claude --plugin-dir ../my-team-kit
起動したら、スキルを呼んでみます。入力欄に /my-team と打った時点で候補に出てきました。

画面14:自作スキルが「プラグイン名:スキル名」の形で候補に出ました。
続けて /my-team-kit:changelog-ja 3 と打って実行すると、直近3件のコミットが、利用者向けの言葉で整理されて返ってきました。

画面15:スキルの実行結果。コミットメッセージの「by_item を追加」が「項目ごとの合計金額を確認できる機能」に言い換えられています。
次はフックの確認です。わざと .env の API_KEY を test-123 に書き換えてください と頼んでみました。

画面16:Claude が編集しようとした瞬間にフックが止め、スクリプトの文章が Claude に伝わっています。
Claude は編集を試みましたが、フックが止め、その理由を読んだ Claude が「ご自身で書き換えてください」と案内してくれました。実際に .env の中身も変わっていないことを確認しています。この一連の流れを録画でも見ておきましょう。

録画2:自作プラグインのスキルとフックが動くまでの実際の画面(7場面)。(最後の場面の静止画)
プラグインのファイルを書き換えたときは、Claude Code を閉じなくても /reload-plugins で読み込み直せます。
ステップ5:配る前に検査する(claude plugin validate)
人に渡す前に、名札やファイルの書き方に問題がないかを検査しておきます。
cd ~/plugin-lab
claude plugin validate ./my-team-kit

画面17:プラグインは合格。次の章で作るカタログは、説明文がないという警告が出ました。
--strict を付けると警告もエラー扱いになるので、自動テスト(CI)に組み込むときに便利です。画面の警告は、カタログに description を1行足すと消えました。
もっと手軽に始めたい場合:
claude plugin init my-toolを使うと、名札とスキルのひな形を~/.claude/skills/my-tool/に自動で作ってくれます。そこに置いたプラグインは、次のセッションから自動で読み込まれます(公式ドキュメントの記載。筆者は今回このコマンドは試していません)。
ハンズオン3:カタログ(マーケットプレイス)を作って配る
最後に、作ったプラグインをほかの人が /plugin install で入れられる形にします。そのためにカタログ、つまりマーケットプレイスを作ります。
ステップ1:marketplace.json を書く
次のような構成のフォルダを作り、plugins/ の中にさきほどの my-team-kit を入れます。
my-marketplace/
├── .claude-plugin/
│ └── marketplace.json ← カタログ本体
└── plugins/
└── my-team-kit/ ← さきほど作ったプラグイン
cd ~/plugin-lab
mkdir -p my-marketplace/.claude-plugin my-marketplace/plugins
cp -R my-team-kit my-marketplace/plugins/
my-marketplace/.claude-plugin/marketplace.json:
{
"name": "my-team-plugins",
"description": "チームで使うClaude Codeプラグインの置き場",
"owner": {
"name": "Your Team"
},
"plugins": [
{
"name": "my-team-kit",
"source": "./plugins/my-team-kit",
"description": "変更履歴の日本語まとめと、.envファイルの保護をセットにしたチーム用プラグイン"
}
]
}
外側の name(ここでは my-team-plugins)がカタログ名で、インストール時の 名前@カタログ名 の後ろ側になります。source の ./plugins/my-team-kit は、カタログのフォルダ(my-marketplace/)から見た場所です(.claude-plugin/ から見た場所ではない点に注意)。なお claude-plugins-official など、Anthropic の公式用に予約されていてカタログ名に使えない名前があります。
ステップ2:カタログを登録して、入れてみる
本来はこのフォルダを GitHub などに置きますが、手元のフォルダのままでも登録できます。Claude Code の中で次を実行しました。
/plugin marketplace add ../my-marketplace

画面18:カタログ「my-team-plugins」を登録できました。
続けてプラグインを入れます。詳細画面が開くので、公式のときと同じく local scope を選びます。
/plugin install my-team-kit@my-team-plugins

画面19:自作カタログのプラグインの詳細画面。公式と同じ流れで入れられます。
公式プラグインと違って「Will install」が「Components will be discovered at installation(中身はインストール時に確認されます)」になっています。公式ドキュメントでも、手元や独自のカタログでは一部の情報が表示されない場合があると説明されています。
インストール後に Marketplaces タブを開くと、公式カタログと並んで自作カタログが表示されていました。入力欄に /my-team-kit: と打つと、スキルも候補に出ます。

画面20:公式カタログと自作カタログが並んで表示されています。

画面21:カタログ経由で入れた自作プラグインも、そのまま使えます。
入れたプラグインの中身と、会話の容量(トークン)をどれくらい使うかは、ターミナルの claude plugin details で確認できます。
claude plugin details my-team-kit@my-team-plugins

画面22:スキルは常時約95トークン、呼んだときに約220トークン。フックは会話の容量を使いません(表示は推定値です)。
ステップ3:チームに配る(GitHub に置く)
チームで使うときは、my-marketplace フォルダを GitHub のリポジトリにして公開(社内なら非公開リポジトリ)します。受け取る側は、次の2行で入れられます。
/plugin marketplace add <GitHubのユーザー名>/<リポジトリ名>
/plugin install my-team-kit@my-team-plugins
さらに、プロジェクトの .claude/settings.json にカタログの場所を書いて Git にコミットしておくと、メンバーがそのフォルダを信頼したときに、カタログが自動で登録されます。
{
"extraKnownMarketplaces": {
"my-team-plugins": {
"source": {
"source": "github",
"repo": "<GitHubのユーザー名>/<リポジトリ名>"
}
}
},
"enabledPlugins": {
"my-team-kit@my-team-plugins": true
}
}
ただし公式ドキュメントによると、v2.1.195 以降は、GitHub など外部から取得するプラグインはプロジェクトの設定で有効にしてあるだけでは読み込まれず、各メンバーがインストールするまで待つ仕組みになっています(その間、実行すべき claude plugin install コマンドが案内されます)。勝手に知らないコードが動かないようにするための安全策です。この GitHub 経由の配布とチーム設定は、今回は公式ドキュメントの記載の紹介にとどめ、筆者は実行していません。

画面23:公式ドキュメントにも、手元のフォルダでカタログを作るチュートリアルがあります。出典: code.claude.com/docs/ja/plugin-marketplaces
どんなプラグインを作ると便利?アイデア集
「自分でも作ってみたいけれど、何を入れればいいか思いつかない」という方のために、作ると便利なプラグインの例をまとめました。以下は筆者の提案で、今回実際に作ったのは my-team-kit だけです。
| アイデア | 入れる部品 | こんな人・チームに |
|---|---|---|
| 秘密情報ガード | フック(.env や鍵ファイルの編集を止める、rm -rf などの危ないコマンドを止める) | 新しく Claude Code を使い始めるメンバーがいるチーム |
| チームの作法パック | スキル(コミットメッセージの書き方、レビューの観点)+フック(編集後に自動で整形ツールを実行) | コードの書き方をそろえたいチーム |
| 社内ツール接続パック | MCPサーバー(社内の課題管理やドキュメントとの接続)+使い方を書いたスキル | 毎回同じ接続設定を配っている情報システム担当 |
| ドキュメント係 | スキル(変更履歴、リリースノート、README の更新) | 開発者以外にも変更を説明する必要があるプロジェクト |
| レビュー係 | エージェント(セキュリティ担当、テスト担当)+呼び出し用のスキル | 1人で開発していて、別の目で見てほしい人 |
| 新メンバー案内 | スキル(このリポジトリの構成と決まりごとの説明)+起動時のフック(最初に読むべき資料を表示) | 入れ替わりの多いプロジェクト |
| 発信・執筆キット | スキル(記事の下書き、SNS向けの要約、画像の書き出し手順) | ブログや社内報を定期的に書く人 |
作るときのコツは3つです。
- 最初は1つの部品から:スキル1つだけのプラグインでも立派なプラグインです。
- すでに
.claude/にあるものを移す:公式ドキュメントにも、.claude/の skills・agents をコピーし、settings.jsonの hooks をhooks/hooks.jsonに移す手順が載っています。移したあとは、同じ名前の元ファイルを消しておくと混乱しません。 - 権限の設定はプラグインに入れない:どのコマンドを許可するかといった実行ルールは、プラグインではなくプロジェクトの
.claude/settings.jsonで管理します(プラグインのsettings.jsonが扱える項目は、今はagentなど一部だけです)。
公式カタログのおすすめプラグイン
公式カタログから、初心者の方でも効果を感じやすいものを選びました。説明は、公式カタログに書かれている内容をもとに要約しています(実際に試したのは commit-commands だけです)。
| プラグイン | 中身 | できること |
|---|---|---|
| commit-commands | コマンド3つ | コミット、プッシュからプルリクエスト作成まで、Git の定番作業をまとめて実行(今回使用) |
| code-review | コマンド | プルリクエストを複数の専門エージェントでレビューし、確信度の低い指摘をふるい落とす |
| pr-review-toolkit | エージェント6体+コマンド | コメント、テスト、エラー処理、型設計などの観点別にレビュー |
| feature-dev | エージェント3体+コマンド | 機能開発を「探索・設計・レビュー」の担当に分けて進める |
| security-guidance | フック | Claude が書いたコードの危ないパターンを編集時に警告し、変更をレビュー |
| skill-creator | スキル | スキルを対話しながら作成・改善・評価する |
| plugin-dev | スキル7つ+エージェント+コマンド | プラグインづくりそのものを手伝う |
| claude-md-management | スキル+コマンド | プロジェクトのメモ(CLAUDE.md)の点検と改善 |
| typescript-lsp / pyright-lsp など | LSPサーバー | 編集直後の型エラー検出や、定義へのジャンプ。言語サーバー本体は別途インストールが必要 |
| github / playwright / context7 など | MCPサーバー | GitHub 操作、ブラウザ操作、最新ドキュメントの参照などを、手動の接続設定なしで追加 |
これまで claude mcp add で1つずつ設定していた MCP サーバーの中には、このようにプラグインとして入れられるものも多くあります。
公式カタログのほかに、Anthropic の自動検証とセキュリティチェックに合格したサードパーティ製プラグインを集めたコミュニティカタログもあります。こちらは自分で追加します。
/plugin marketplace add anthropics/claude-plugins-community
/plugin install <プラグイン名>@claude-community
安全に使うための注意
プラグインは便利な反面、あなたのパソコン上で、あなたの権限でプログラムを動かせます。今回作ったフックのように、Claude の操作のたびにスクリプトを実行することもできます。公式ドキュメントでも、信頼できる配布元からだけ入れるよう強く注意されています。

画面24:公式ドキュメントのセキュリティの注意書き。出典: code.claude.com/docs/ja/discover-plugins
入れる前に確認したいことをまとめます。
- 配布元は誰か:公式カタログか、知っている人・会社のカタログか
- Will install の中身:特に、フックや MCP サーバーが含まれている場合は、何をするものか説明を読む
- スコープ:まず local で試し、問題なければ範囲を広げる
- 入れっぱなしにしない:使わなくなったら無効化・削除する
うまく動かないときは
最後に、つまずきやすい点を確認順にまとめます。

図7:上から順に確認していきます。(静止画版)
| 症状 | 確認すること・対処 |
|---|---|
/plugin と打っても何も出ない | claude --version で版を確認し、Claude Code を更新して再起動 |
| スキルが候補に出ない | /プラグイン名:スキル名 の形で打っているか。/reload-plugins を実行。/plugin の Errors タブを確認 |
| 自作プラグインが読み込まれない | skills/ などを .claude-plugin/ の中に入れていないか。claude plugin validate で検査 |
| フックが動かない | スクリプトに chmod +x をしたか。パスを ${CLAUDE_PLUGIN_ROOT} で書いたか。止めたいなら exit 2 |
LSP プラグインで Executable not found in $PATH | 言語サーバー本体(例:typescript-language-server)を別途インストール |
| 更新が反映されない | /plugin marketplace update カタログ名。それでもだめならキャッシュ(~/.claude/plugins/cache)を削除して再起動・再インストール |
| お試しのつもりが全プロジェクトで動いている | user スコープで入れていないか。claude plugin list でスコープを確認し、入れ直す |
まとめ
- プラグインは、スキル・エージェント・フック・MCPサーバーなどを1つのフォルダにまとめて、版を付けて配れる仕組みです。
- 使うまでは「カタログ(マーケットプレイス)を登録 → プラグインを入れる」の2段階。公式カタログは最初から登録済みです。
/pluginの詳細画面では、Will install で中身を確認し、スコープを選んでから Enter。お試しは local が安心です。- プラグインのコマンドは
/プラグイン名:コマンド名の形で呼びます。 - 自作は
plugin.json+ 部品 だけ。claude --plugin-dirで入れずに試し、/reload-pluginsで直しながら育て、claude plugin validateで検査します。 - 配るときは
marketplace.jsonを書いて GitHub などに置けば、/plugin marketplace addと/plugin installの2行で誰でも入れられます。
最初の一歩としては、練習用のリポジトリで commit-commands を local スコープで入れて、/commit-commands:commit を1回実行してみるのがおすすめです。「プラグインを入れると、こういうふうに道具が増えるのか」という感覚がつかめたら、次は手元の .claude/ にあるスキルを1つ、プラグインにしてみてください。
参考リソース
- Claude Code 公式ドキュメント「プラグインを作成する」 https://code.claude.com/docs/ja/plugins
- Claude Code 公式ドキュメント「マーケットプレイスから事前構築されたプラグインを発見してインストールする」 https://code.claude.com/docs/ja/discover-plugins
- Claude Code 公式ドキュメント「プラグインマーケットプレイスの作成と配布」 https://code.claude.com/docs/ja/plugin-marketplaces
- Claude Code 公式ドキュメント「プラグインリファレンス」 https://code.claude.com/docs/ja/plugins-reference
- プラグインのカタログ(ブラウザ版) https://claude.com/plugins
- 公式カタログのリポジトリ https://github.com/anthropics/claude-plugins-official
検証環境: macOS / Claude Code v2.1.280 / Claude Max / 2026年9月23日。検証セッションは Sonnet 5 で実行し、「作業フォルダの外を読まない・短く日本語で答える」ことを起動時に指示しています。ターミナル画面は、実際に端末へ出力された文字と色を再描画したものです(OSのスクリーンショットではありません)。利用状況の案内など本題と関係のない行、入力欄に自動で出る入力候補は省き、ホームフォルダのパスは ~ に置き換えています。録画1・2は、実際に撮った画面を順番につないだものです。公式ドキュメントの画面は2026年9月23日時点の表示です。

