Claude Codeのスキル、サブエージェント、フック、MCP設定をまとめて配布する単位がプラグインです。その名前と取得元を一覧にしたカタログがマーケットプレイス。手順を自分の別プロジェクトで再利用したり、チームで共通の拡張を使ったりするための仕組みです。

この記事では既存プラグインの導入から、挨拶スキルを一つ作り、カタログで配布するまでを扱います。先に押さえる点は三つ。①プラグイン本体と配布カタログは別の階層です。②カタログの登録と個別インストールは別の操作です。③検証コマンドが成功しても、機能の動作や安全性まで保証されたわけではありません。手順の根拠は公式の作成ガイドです。

CLAUDE CODE · PLUGINS

機能を1つに束ねて、配る

— スキル・エージェント・フック・MCPを、カタログから選んで導入

my-plugin/
.claude-plugin/plugin.json
skills/
agents/
hooks/
.mcp.json
commands/ …
/plugin marketplace add owner/repo
/plugin install name@market
✓ 導入結果・スコープ・有効化を確認

プラグインは 機能の“まとまり”、マーケットプレイスは その配布カタログ(git リポジトリ等)。
カタログを登録 → 個別に導入 → 必要な機能が使えるか確認。
自作ではプラグイン本体とカタログの両方を検証してから配布する。

1. Claude Code プラグインとは

プラグインは、Claude Codeの拡張を共有・再利用できるディレクトリにまとめたものです。すべての構成要素を入れる必要はなく、スキル一つだけでも作れます。

構成要素置き場所役割
スキル(Skills)skills/<名前>/SKILL.md説明や設定に応じた自動選択、または利用者の明示呼び出しで使う手順(Skills 解説
スラッシュコマンドcommands/Markdownを置く旧形式。現在はスキルとして扱い、新規作成は skills/ を推奨
サブエージェントagents/役割を分けるエージェント定義。読み込みは /context のCustom Agentsで確認
フック(Hooks)hooks/hooks.jsonPostToolUse など、設定したイベントと条件に応じて実行
MCP サーバ.mcp.json外部ツール/データ連携(MCP
マニフェスト.claude-plugin/plugin.json名前・説明・バージョン等。標準配置だけなら省略可能

自分だけで使う手順なら、プロジェクトの .claude/skills/ で足りる場合もあります。複数の場所へ同じまとまりを配り、更新を管理したくなったときにプラグインが役立ちます。LSPや監視などの拡張もありますが、使える環境や配布経路に条件があるため、まずは小さなスキルから始めると確認しやすくなります。

2. プラグインの構造

以下は個別プラグインの標準配置です。マニフェストを置く場合は .claude-plugin/plugin.jsonskills/agents/hooks/はプラグイン自身のルートに置きます。配布カタログの marketplace.json は別で、後の例ではマーケットプレイスの .claude-plugin/marketplace.json に置きます。

my-plugin/
├── .claude-plugin/
│   └── plugin.json          # 個別プラグインのメタ情報
├── skills/
│   └── code-review/SKILL.md
├── agents/
│   └── security-reviewer.md
├── hooks/hooks.json
├── .mcp.json
└── README.md

plugin.jsonを用意する例です。標準のディレクトリ配置だけを使うならマニフェスト自体を省略できます。用意する場合、必須キーは name で、説明やバージョンは任意です。

{
  "name": "my-first-plugin",
  "description": "基本を学ぶための挨拶プラグイン",
  "version": "1.0.0",
  "author": { "name": "Your Name" }
}

nameはスキルの名前空間にもなり、この例なら /my-first-plugin:hello と呼び出します。Git経由でキャッシュされる配布では、まずplugin.jsonのversion、次にカタログ内のそのプラグインのversionを使い、両方がなければ取得元の解決済みコミットSHAを使います。明示したversionを据え置くと、コードだけ変えても更新対象になりません。ローカルディレクトリからその場で読む場合やcommand sourceでは扱いが異なります。詳細はバージョン管理の原文を参照してください。

3. 使い方——/plugin と marketplace

導入は /plugin から。タブ式の管理画面(Discover/Installed/Marketplaces/Errors)が開く。基本コマンドはこうだ。

# マーケットプレイス(配布カタログ)を追加
/plugin marketplace add anthropics/claude-plugins-official
/plugin marketplace add ./my-marketplace              # ローカルパス
/plugin marketplace add https://example.com/marketplace.json

# 対話画面でスコープを選んで導入し、有効化状態を確認
/plugin install plugin-name@marketplace-name
/plugin enable  plugin-name@marketplace-name
/plugin disable plugin-name@marketplace-name
/plugin uninstall plugin-name@marketplace-name

# marketplace経由の導入済み一覧(--enabled / --disabledで絞り込み)
/plugin list
/plugin list --enabled

# 必要に応じて変更を再読み込みし、結果表示を確認
/reload-plugins

カタログの追加だけではプラグインは入りません。登録後に個別にインストールします。対話コマンドの /plugin install では詳細画面でスコープを選びます。シェルで実行する claude plugin install は省略時にuserスコープ、変更するなら --scope を指定します。

導入後はactive、reload待ち、読み込みエラーのどれかを結果表示で確認します。プロンプトキャッシュへの影響により再読み込みが保留される場合があり、端末なしのセッションではプラグインMCPの変更が次のセッションまで反映されないこともあります。/plugin list はmarketplace経由だけの一覧で、同期やスキルディレクトリ経由のすべてを列挙するものではありません。導入と再読み込みの条件を確認し、MCPが繋がらなければMCP接続エラーの対処へ進んでください。

4. マーケットプレイスとは

マーケットプレイスは、プラグインの一覧と取得元を書いた .claude-plugin/marketplace.json を持つカタログ(git リポジトリ・ローカルパス・ホストされたファイル)だ。公式が用意するものと、コミュニティ向けがある。

公式 / コミュニティのマーケット

・公式(claude-plugins-official:Anthropicがキュレーションします。初回の対話起動時に自動登録されますが、先に非対話実行していた場合や、通信・組織ポリシーの制約で登録されない場合もあります。見当たらなければ条件を確認し、許可された環境で /plugin marketplace add anthropics/claude-plugins-official を使います。閲覧先は /plugin のDiscoverや公式ディレクトリです。

・コミュニティ(claude-community:投稿が自動検証と安全性の審査を通ったカタログです。リポジトリは anthropics/claude-plugins-community なので、/plugin marketplace add anthropics/claude-plugins-community で追加します。導入時の識別名は /plugin install 名前@claude-communityリポジトリ名とカタログの登録名を混同しないでください。

カタログが見つからない場合は登録状態、個別プラグインが見つからない場合は名前と取得元を確認します。自社カタログを使うときも、利用者がリポジトリとプラグイン本体の両方へアクセスできるかが重要です。JSONファイルをURLで配る形式では、そのURLから相対パスのプラグイン本体までは取得されません。

5. 自作して公開する

挨拶スキルを一つ作る例です。まず次の構成に揃えます。外側の .claude-plugin はカタログ用、内側は個別プラグイン用です。コマンドはmy-marketplaceを含む親ディレクトリから実行します。

my-marketplace/
├── .claude-plugin/
│   └── marketplace.json
└── plugins/
    └── my-first-plugin/
        ├── .claude-plugin/
        │   └── plugin.json
        └── skills/
            └── hello/
                └── SKILL.md

①内側の my-marketplace/plugins/my-first-plugin/.claude-plugin/plugin.json に前節のJSONを保存します。② my-marketplace/plugins/my-first-plugin/skills/hello/SKILL.md に、次の内容を保存してください。明示的に呼んだときだけ使う例として disable-model-invocation: true を指定します。

---
name: hello
description: 名前を添えて短く挨拶する
disable-model-invocation: true
---
ユーザーに短く挨拶してください。
引数があれば、その名前を挨拶に含めてください。
引数: $ARGUMENTS

③外側の my-marketplace/.claude-plugin/marketplace.json にカタログを書きます。source の相対パスはmarketplace.jsonがあるフォルダーではなく、マーケットプレイスのルートが基準です。

{
  "name": "my-plugins",
  "owner": { "name": "Your Name" },
  "description": "挨拶スキルを配布する練習用カタログ",
  "plugins": [
    {
      "name": "my-first-plugin",
      "source": "./plugins/my-first-plugin",
      "description": "名前を添えて短く挨拶するスキル"
    }
  ]
}

カタログと本体を別々に検証します。前者はカタログのスキーマやローカル項目のplugin.jsonを調べますが、各スキルやフックのファイルまでは読みません。後者は個別プラグインの標準ディレクトリ内のファイルも対象にします。どちらも機能の実行結果や安全性を保証する検査ではありません。

claude plugin validate ./my-marketplace
claude plugin validate ./my-marketplace/plugins/my-first-plugin

# 個別プラグインを、このセッションに読み込んで試す
claude --plugin-dir ./my-marketplace/plugins/my-first-plugin

起動した対話画面で /my-first-plugin:hello Alex を実行し、Alexという名前を含む短い挨拶が返るか確認します。コマンドが見えるだけで終えず、出力と不要な副作用の有無を見るのが動作確認です。読み込まれなければ、二つのJSONの名前、sourceのパス、SKILL.mdの場所とfrontmatterを確認してください。

⑤カタログ経由も確認するなら、前のテスト用セッションを終了し、--plugin-dir を付けずにClaude Codeを起動します。以下は設定へ登録する操作なので、練習用プロジェクトで導入範囲を選んで試します。

/plugin marketplace add ./my-marketplace
/plugin install my-first-plugin@my-plugins
/my-first-plugin:hello Alex

⑥配布するときは、my-marketplaceの中身を、利用者が取得できるGitリポジトリのルートとして公開します。カタログだけでなくplugins配下もコミット対象です。利用者は実際の owner/repo で追加し、同じ my-first-plugin@my-plugins を導入します。この相対パス構成はGitまたはローカルディレクトリからの登録用で、marketplace.json単体のURL配布にはそのまま使えません。詳細はカタログの作成・配布・検証にあります。

自分のGitリポジトリで配るために、公式カタログへの掲載申請は必要ありません。communityへの掲載も希望する場合は、Consoleの投稿フォームを個人作者も利用できます。claude.ai側のフォームにはTeam/Enterprise組織と管理権限の条件があります。communityへの投稿と、Anthropicがキュレーションするofficialへの掲載は別です。

6. 配布スコープと安全性

導入範囲はuser(自分の全プロジェクト)、project(共有プロジェクト設定)、local(自分のこのプロジェクトだけ)です。対話画面で選ぶ範囲と、シェルCLIの省略時userを区別してください。managedは管理者による設定で、利用者の設定変更に制約があります。

チームでは .claude/settings.jsonextraKnownMarketplacesenabledPlugins で取得元や有効化を共有できます。ただし共有設定を書いたことと、全員の端末で導入が済んだことは別です。外部ソースのプラグインは各メンバー側でインストールが必要です。プロジェクトを信頼した後のカタログ登録と、取得権限、導入結果を各環境で確認します。

⚠️ 安全性:プラグインは任意コードを実行できる

公式の安全性に関する注意では、プラグインが利用者の権限で任意コードを実行しうると説明しています。community掲載品には自動検証と安全性の審査がありますが、意図した動作の保証ではありません。発行元、スキルやフック、同梱MCPサーバを確認してください。組織のmanaged settingsでは strictKnownMarketplaces でカタログの取得元を制限でき、空配列は公式を含むmarketplace sourceを拒否します。プラグインが実行するすべてのネットワーク・ファイル操作を監視する設定ではなく、claude.aiから同期する経路なども別の設定です。

まとめ

プラグインは拡張の配布単位、マーケットプレイスはそのカタログです。使う側は登録→個別導入→有効化と動作の確認、作る側は本体とカタログを揃える→両方を検証→実際に呼ぶ→取得可能なリポジトリで配布と進めます。スコープ、取得権限、更新に使われるversionまで確認すると、他の環境で再現しやすくなります。

公式カタログの自動登録にも条件があり、審査済みの掲載品も動作の無条件な保証はありません。最初は必要な機能を一つだけ入れ、結果を確認してから増やしてください。関連する仕組みはClaude CodeフックClaude Agent SkillsMCPClaude Code Artifactsで扱います。

FAQ

Q. プラグインとスキルは何が違いますか?
A. スキルは実行する手順で、プラグインはそれをフックやMCP設定などとまとめる配布単位です。プラグイン内のスキルは /プラグイン名:スキル名 で明示的に呼べます。自動選択の可否は説明や設定に依存します。

Q. 公式マーケットが見つかりません。
A. 公式の claude-plugins-official は初回の対話起動時に自動登録されますが、先に非対話実行していた場合や、通信・管理ポリシーの制約で登録されない場合があります。許可された環境で /plugin marketplace add anthropics/claude-plugins-official を試します。登録だけで個別プラグインが導入されるわけではありません。

Q. 自作プラグインは誰でも配れますか?
A. 自分の取得可能なGitリポジトリに本体とカタログを置く方法があります。communityへの掲載申請は別で、Consoleの投稿フォームは個人作者も利用できます。claude.ai側の申請経路には組織・権限の条件があります。カタログのsourceが実際のプラグインの場所を指すかも確認してください。

Q. コードを変更したのに更新されないのはなぜですか?
A. Git経由でキャッシュされる配布では、plugin.jsonのversionが最優先です。そこを固定したままカタログ側だけ変えても更新されません。両方にversionを置かなければ解決済みのGitコミットSHAを使いますが、更新操作や取得先refも関係します。ローカルからその場で読み込む場合、archive、command sourceなどには別の規則があります。

Q. validateが成功したら安全ですか?
A. いいえ。構造や設定の検証と、実際の動作・安全性は別です。カタログに対するvalidateだけではスキル本文なども検査しません。個別プラグインを検証し、機能と副作用を試してください。community掲載時の審査も、発行元と同梱コードを確かめる代わりにはなりません。