1
1

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のプラグイン入門 ― 入れ方・消し方から自作・チーム配布まで、実機の画面で解説(2026年9月版)

1
Posted at

表紙:Claude Codeのプラグイン入門。箱(プラグイン)に手順書・見張り役・つなぎ方が入るイラスト

はじめに:便利な設定、ほかの人にどうやって渡していますか?

Claude Code を使い込んでいくと、手元にだんだん「自分なりの工夫」がたまっていきます。決まった手順を覚えさせたスキル、危ない操作を止めるフック、GitHub や社内ツールとつなぐ MCP サーバー……。

困るのは、それをほかの人やほかのパソコンでも使いたくなったときです。フォルダを丸ごとコピーして、「このファイルはここに置いて、設定ファイルのここに追記して……」と説明する。しばらくすると、人によって中身が少しずつ違ってくる。そんな経験はないでしょうか。

この「まとめて・配って・そろえる」を1コマンドで済ませる仕組みが、今回のテーマである プラグイン(Plugins) です。

プラグインを使う前と後の比較図。左側はプラグインなしで、Aさんの .claude フォルダを B・C・D さんが手でコピーし、古い版のまま、フックの入れ忘れ、パスの違いで失敗といった問題が起きる。右側はプラグインありで、my-team-kit v1.0.0 という1つの箱を /plugin install で配り、全員が同じ v1.0.0 になる様子が順に強調されるアニメーション図

図1:プラグインを使う前と後。右側では、配布元の箱を入れるだけで全員の中身がそろいます。(静止画版)

この記事では、次の3つを実際に筆者のパソコンで操作した画面を使って説明します。

  1. 公式のプラグインを探して入れ、使ってみる(消し方まで)
  2. 自分用のプラグインを作って、その場で試す
  3. 作ったプラグインを「カタログ」に載せて、ほかの人が入れられるようにする

想定している読者は、Claude Code を一度は起動したことがあり、「プラグインという言葉は聞くけど、よく分からない」という方です。コマンドはすべてコピーして使えるように載せています。

検証環境:macOS / Claude Code v2.1.280 / Claude Max(2026年9月23日)。公式ドキュメントの記載も同日に確認しました。

プラグインとは:Claude Code の「拡張パック」

ひとことで言うと

プラグインは、Claude Code に機能を足すための部品を、1つのフォルダにまとめたものです。フォルダなので Git で管理でき、バージョン番号を付けて配れます。

ゲームの「拡張パック」をイメージすると分かりやすいかもしれません。本体(Claude Code)はそのままに、パックを入れると新しい道具が増えます。いらなくなれば外せます。

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 自体も省略可能とされています)。

プラグインの構成部品の図。my-team-kit というフォルダの中に、名札の .claude-plugin/plugin.json、スキル skills、エージェント agents、フック hooks/hooks.json、MCPサーバー .mcp.json、LSPサーバー .lsp.json、モニター monitors、設定 settings.json、その他のスクリプトが並び、名札から順に1つずつ強調される。下に、skills や hooks を .claude-plugin の中に入れないという注意がある

図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 など一部の項目だけ

公式ドキュメントのプラグイン構造の概要。よくある間違いとして、commands、agents、skills、hooks を .claude-plugin ディレクトリ内に配置しないでくださいという注意書きと、ディレクトリ・場所・目的の表が表示されている

画面2:公式ドキュメントの「プラグイン構造の概要」。注意書きのとおり、.claude-plugin/ に入れるのは plugin.json だけです。出典: code.claude.com/docs/ja/plugins

「マーケットプレイス」はプラグインのカタログ

もう1つ覚えておきたい言葉が マーケットプレイス(Marketplace) です。名前から「お店」を想像しがちですが、中身は**プラグインの一覧表(カタログ)**です。お金のやり取りはありません。GitHub のリポジトリや手元のフォルダに marketplace.json というファイルを置くと、それがカタログになります。

プラグインを使うまでの流れは、次の2段階です。

マーケットプレイスからプラグインを使うまでの図。左にマーケットプレイス(marketplace.json のカタログ)、中央に 1 カタログを登録する /plugin marketplace add と 2 プラグインを入れる /plugin install、右に使える状態が並び、順に強調される。下に、入れる前に Will install を確認することと、信頼できる配布元からだけ入れる注意がある

図3:カタログを登録してから、その中のプラグインを選んで入れます。公式カタログは最初から登録済みなので、公式のものなら②だけで済みます。(静止画版)

Anthropic 公式のカタログ claude-plugins-official は、Claude Code を初めて対話モードで起動したときに自動で登録されます。筆者の環境では、2026年9月23日時点で310個のプラグインが並んでいました。ブラウザで一覧を見たい場合は claude.com/plugins も使えます。

claude.com/plugins のページ。Add new capabilities to Claude という見出しと Browse 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つにおすすめです。

先に、操作全体の流れを録画で見ておきましょう。

Claude Code で /plugin を開き、Discover タブで commit と検索して commit-commands を選び、詳細画面でローカルスコープを選んでインストールし、/commit-commands: と打つと3つのコマンド候補が出るまでの実際の画面を順につないだアニメーション

録画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 スキルごとの使用回数や、会話の容量(コンテキスト)をどれだけ使うかを見る

Claude Code の /plugin 画面の Discover タブ。Discover plugins 1/310 の表示の下に検索欄があり、frontend-design、superpowers、code-review、context7、skill-creator などのプラグインがインストール数とともに並んでいる

画面4:Discover タブ。インストール数の多い順に並んでいます。

ステップ2:検索して選ぶ

Discover タブで文字を打つと、そのまま検索になります。commit と打つと候補が絞られるので、矢印キーで commit-commands に合わせて Enter を押します。

Discover タブの検索欄に commit と入力し、候補が7件に絞られ、commit-commands が選択されている画面

画面5:commit で検索した結果。矢印キーで commit-commands を選びます。

ステップ3:中身を確認して、入れる範囲(スコープ)を選ぶ

詳細画面が開きます。ここで必ず見てほしいのが 「Will install:」の欄です。このプラグインが何を追加するのか(ここでは commit、clean_gone、commit-push-pr の3つのコマンド)が、入れる前に分かります。

その下には、「プラグインを入れる前に信頼できるか確認してください。Anthropic はプラグインの中身を管理しておらず、意図どおり動くことを保証できません」という趣旨の注意が英語で表示されます。

commit-commands の詳細画面。from claude-plugins-official、By Anthropic、Will install として Commands commit, clean_gone, commit-push-pr が表示され、信頼に関する警告文の下で、3つのインストール先のうち Install for you, in this repo only (local scope) が選択されている

画面6:インストール先の選択肢。今回はお試しなので、いちばん影響範囲の小さい「local scope」を選びました。

選択肢の3つは、どこに記録して、誰に効かせるかの違いです。詳しくは次の章で説明します。お試しなら、下の「Install for you, in this repo only (local scope)」を選んでおけば、ほかのプロジェクトや他の人には影響しません。

ステップ4:入ったことを確認する

Enter を押すと、画面が元に戻り「✓ Installed commit-commands. Plugin is now active.」と表示されました。再起動しなくても、すぐに使える状態です。

入力欄に /commit-commands: と打つと、追加されたコマンドが候補に出ます。プラグインのコマンドは必ず「プラグイン名:コマンド名」の形になります。別々のプラグインが同じ名前のコマンドを持っていてもぶつからないようにするためです。

インストール完了のメッセージ「Installed commit-commands. Plugin is now active.」の下で、入力欄に /commit-commands: と打つと、commit、clean_gone、commit-push-pr の3つの候補が説明つきで表示されている画面

画面7:インストール直後。/commit-commands: で3つのコマンドが候補に出ました。

メモ:公式ドキュメントによると、状況によっては「Run /reload-plugins to activate.」と表示されることがあります。その場合は /reload-plugins を実行すると、再起動せずに読み込み直せます(v2.1.221 より前は、再読み込みか再起動が必要でした)。

ステップ5:使ってみる

練習用フォルダの app.py を少し書き換えてから(合計金額を「1,000円」のようにカンマ区切りで出す1行の変更)、次のコマンドを実行しました。

/commit-commands:commit

/commit-commands:commit を実行すると、Committed 2ba2445, ran 1 shell command と表示され、コミット完了しました(2ba2445)と応答した画面

画面8:8秒ほどでコミットまで完了しました。

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

git log --oneline -4 の結果。最新のコミットが「feat: 合計金額をカンマ区切りで表示する」になっている

画面9:いちばん上が、プラグインが作ったコミットです。

スコープの違い:どこに記録され、誰に効くのか

インストール時に選んだ「スコープ」は、プラグインを使うかどうかの設定(enabledPlugins)をどの設定ファイルに書くかの違いです。

インストールスコープの違いの表。user は ~/.claude/settings.json に記録され自分のすべてのプロジェクトに効く。project は .claude/settings.json に記録され Git にコミットしてチーム全員に効く。local は .claude/settings.local.json に記録され Git に入れず自分だけに効く。上から順に強調される

図4:3つのスコープの違い。迷ったら「まず local で試す → チームでそろえるなら project」です。(静止画版)

今回 local で入れたので、練習用フォルダの .claude/settings.local.json を開いてみると、確かに1行追加されていました。

cat .claude/settings.local.json の結果。enabledPlugins の中に "commit-commands@claude-plugins-official": true が記録されている

画面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 で対象の設定ファイルを選べます。入れたときと同じスコープを指定しましょう。実際に無効化・有効化・削除をした画面がこちらです。

ターミナルで claude plugin disable と claude plugin enable を実行し、Successfully disabled plugin と Successfully enabled plugin と表示された画面

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

ターミナルで2つのプラグインを claude plugin uninstall で削除し、claude plugin marketplace remove で自作カタログの登録も削除した画面。それぞれ Successfully と表示されている

画面12:検証の最後に、入れたプラグインと自作カタログをすべて削除して元に戻しました。

ちなみに公式ドキュメントによると、2週間以上かつ10セッション以上使っていないプラグインは、Installed タブの「Not used recently」にまとめて表示されます。プラグインは入れているだけで会話の容量を少し使うことがあるので、使っていないものは時々整理するとよいでしょう。

ハンズオン2:自分のプラグインを作る

次は、自分でプラグインを作ります。ここでは練習用に my-team-kit という名前で、2つの部品を持つプラグインを作ってみました。

  • スキル changelog-ja:直近のコミットを読んで、エンジニア以外にも分かる日本語の変更履歴にまとめる
  • フック:Claude が .env(パスワードやAPIキーなどの秘密情報を書くファイル)を編集しようとしたら止める

「便利な手順」と「うっかりを防ぐ仕組み」の組み合わせは、チームで配るプラグインの典型的な形です。全体の流れは次の図のとおりです。

自作プラグインの開発サイクルの図。1 フォルダと名札を作る、2 部品を置く、3 claude --plugin-dir で入れずに試す、4 /reload-plugins で直したら再読み込み、5 claude plugin validate で検査する、6 marketplace.json に載せて配る、の6段階が順に強調される

図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 に伝える」という合図です。流れを図にすると次のようになります。

フックが .env の書き換えを止めるまでの図。1 Claude が Update(.env) で編集しようとする、2 PreToolUse が発火し protect-env.sh を実行、3 標準入力の JSON から tool_input.file_path を取り出す、ファイル名は .env か という分岐で、はいなら 4 exit 2 で編集を止めて理由が Claude に届き、5 Claude が手で書き換えてくださいと伝える。いいえなら exit 0 でいつもどおり編集が進む

図6:フックは「お願い」ではなく仕組みなので、Claude がうっかり編集しようとしても必ず止まります。(静止画版)

スクリプトの中で JSON を読むために python3 を使っています。macOS には標準で入っていますが、環境によっては jq などに置き換えてください。Windows の場合、このシェルスクリプトはそのままでは動かない可能性があります(今回は macOS でのみ確認しています)。

ここまでで、フォルダの中身は次のようになりました。

find my-team-kit -type f | sort の結果。.claude-plugin/plugin.json、hooks/hooks.json、scripts/protect-env.sh、skills/changelog-ja/SKILL.md の4ファイルが並んでいる

画面13:my-team-kit の中身。ファイルは4つだけです。

ステップ4:インストールせずに試す(--plugin-dir)

作ったプラグインは、インストールしなくても --plugin-dir を付けて起動するだけで試せます。設定ファイルには何も書き込まれないので、気軽に何度でも試せます。

cd ~/plugin-lab/sample-app
claude --plugin-dir ../my-team-kit

起動したら、スキルを呼んでみます。入力欄に /my-team と打った時点で候補に出てきました。

入力欄に /my-team と打つと、/my-team-kit:changelog-ja が (my-team-kit) の表示と説明文つきで候補に出ている画面

画面14:自作スキルが「プラグイン名:スキル名」の形で候補に出ました。

続けて /my-team-kit:changelog-ja 3 と打って実行すると、直近3件のコミットが、利用者向けの言葉で整理されて返ってきました。

/my-team-kit:changelog-ja 3 を実行した結果。変更履歴(2026-09-23)として、新機能:項目ごとの合計金額を確認できる機能を追加、修正:マイナスの金額を登録できてしまう不具合を修正、その他:README に使い方のヒントを追記、の3行が表示されている

画面15:スキルの実行結果。コミットメッセージの「by_item を追加」が「項目ごとの合計金額を確認できる機能」に言い換えられています。

次はフックの確認です。わざと .env の API_KEY を test-123 に書き換えてください と頼んでみました。

.env の書き換えを頼むと、Update(.env) の直後に Error: PreToolUse:Edit hook error と protect-env.sh のメッセージ「.env は秘密情報のファイルなので、Claude からは編集できません」が赤字で表示され、Claude がフックによってブロックされましたので手で書き換えてくださいと応答している画面

画面16:Claude が編集しようとした瞬間にフックが止め、スクリプトの文章が Claude に伝わっています。

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

--plugin-dir で起動した Claude Code で、/my-team-kit: と打って候補を出し、changelog-ja を実行して変更履歴が表示され、続けて .env の書き換えを頼むとフックでブロックされるまでの実際の画面を順につないだアニメーション

録画2:自作プラグインのスキルとフックが動くまでの実際の画面(7場面)。(最後の場面の静止画)

プラグインのファイルを書き換えたときは、Claude Code を閉じなくても /reload-plugins で読み込み直せます。

ステップ5:配る前に検査する(claude plugin validate)

人に渡す前に、名札やファイルの書き方に問題がないかを検査しておきます。

cd ~/plugin-lab
claude plugin validate ./my-team-kit

claude plugin validate ./my-team-kit の結果が Validation passed、続けて claude plugin validate ./my-marketplace の結果が、マーケットプレイスの説明がないという警告1件つきで Validation passed with warnings になっている画面

画面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

/plugin marketplace add ../my-marketplace を実行すると Successfully added marketplace: my-team-plugins と表示され、続けて /reload-plugins が自動で実行された画面

画面18:カタログ「my-team-plugins」を登録できました。

続けてプラグインを入れます。詳細画面が開くので、公式のときと同じく local scope を選びます。

/plugin install my-team-kit@my-team-plugins

my-team-kit の Plugin Details 画面。説明文と By: Your Name、Will install の欄に Components will be discovered at installation と表示され、local scope が選択されている

画面19:自作カタログのプラグインの詳細画面。公式と同じ流れで入れられます。

公式プラグインと違って「Will install」が「Components will be discovered at installation(中身はインストール時に確認されます)」になっています。公式ドキュメントでも、手元や独自のカタログでは一部の情報が表示されない場合があると説明されています。

インストール後に Marketplaces タブを開くと、公式カタログと並んで自作カタログが表示されていました。入力欄に /my-team-kit: と打つと、スキルも候補に出ます。

/plugin の Marketplaces タブ。claude-plugins-official(310 available、1 installed)と、~/plugin-lab/my-marketplace を場所とする my-team-plugins(1 available、1 installed)が並んでいる

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

Installed my-team-kit. Plugin is now active. の表示の下で、/my-team-kit: と打つと /my-team-kit:changelog-ja が候補に出ている画面

画面21:カタログ経由で入れた自作プラグインも、そのまま使えます。

入れたプラグインの中身と、会話の容量(トークン)をどれくらい使うかは、ターミナルの claude plugin details で確認できます。

claude plugin details my-team-kit@my-team-plugins

claude plugin details の結果。my-team-kit 1.0.0 の Component inventory として Skills 1 changelog-ja、Hooks 1 PreToolUse、Projected token cost として Always-on 約95トークンなどが表示されている

画面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 経由の配布とチーム設定は、今回は公式ドキュメントの記載の紹介にとどめ、筆者は実行していません。

公式ドキュメント「プラグインマーケットプレイスの作成と配布」のチュートリアル:ローカルマーケットプレイスの作成の部分。ディレクトリ構造の作成と skill の作成の手順が表示されている

画面23:公式ドキュメントにも、手元のフォルダでカタログを作るチュートリアルがあります。出典: code.claude.com/docs/ja/plugin-marketplaces

どんなプラグインを作ると便利?アイデア集

「自分でも作ってみたいけれど、何を入れればいいか思いつかない」という方のために、作ると便利なプラグインの例をまとめました。以下は筆者の提案で、今回実際に作ったのは my-team-kit だけです。

アイデア 入れる部品 こんな人・チームに
秘密情報ガード フック(.env や鍵ファイルの編集を止める、rm -rf などの危ないコマンドを止める) 新しく Claude Code を使い始めるメンバーがいるチーム
チームの作法パック スキル(コミットメッセージの書き方、レビューの観点)+フック(編集後に自動で整形ツールを実行) コードの書き方をそろえたいチーム
社内ツール接続パック MCPサーバー(社内の課題管理やドキュメントとの接続)+使い方を書いたスキル 毎回同じ接続設定を配っている情報システム担当
ドキュメント係 スキル(変更履歴、リリースノート、README の更新) 開発者以外にも変更を説明する必要があるプロジェクト
レビュー係 エージェント(セキュリティ担当、テスト担当)+呼び出し用のスキル 1人で開発していて、別の目で見てほしい人
新メンバー案内 スキル(このリポジトリの構成と決まりごとの説明)+起動時のフック(最初に読むべき資料を表示) 入れ替わりの多いプロジェクト
発信・執筆キット スキル(記事の下書き、SNS向けの要約、画像の書き出し手順) ブログや社内報を定期的に書く人

作るときのコツは3つです。

  1. 最初は1つの部品から:スキル1つだけのプラグインでも立派なプラグインです。
  2. すでに .claude/ にあるものを移す:公式ドキュメントにも、.claude/ の skills・agents をコピーし、settings.json の hooks を hooks/hooks.json に移す手順が載っています。移したあとは、同じ名前の元ファイルを消しておくと混乱しません。
  3. 権限の設定はプラグインに入れない:どのコマンドを許可するかといった実行ルールは、プラグインではなくプロジェクトの .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 で試し、問題なければ範囲を広げる
  • 入れっぱなしにしない:使わなくなったら無効化・削除する

うまく動かないときは

最後に、つまずきやすい点を確認順にまとめます。

プラグインが効かないときの確認順の図。1 /plugin が出てこないなら claude --version で確認して更新、2 スキルが候補に出ないならプラグイン名:スキル名で呼び /reload-plugins と Errors タブを確認、3 自作プラグインが読まれないなら .claude-plugin の中に部品を入れていないかと validate、4 フックが動かないなら実行権限と CLAUDE_PLUGIN_ROOT と exit 2、5 古い版のままならカタログの更新とキャッシュ削除、の順に強調される

図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つ、プラグインにしてみてください。

参考リソース

検証環境: macOS / Claude Code v2.1.280 / Claude Max / 2026年9月23日。検証セッションは Sonnet 5 で実行し、「作業フォルダの外を読まない・短く日本語で答える」ことを起動時に指示しています。ターミナル画面は、実際に端末へ出力された文字と色を再描画したものです(OSのスクリーンショットではありません)。利用状況の案内など本題と関係のない行、入力欄に自動で出る入力候補は省き、ホームフォルダのパスは ~ に置き換えています。録画1・2は、実際に撮った画面を順番につないだものです。公式ドキュメントの画面は2026年9月23日時点の表示です。

1
1
0

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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?