先週、社内の3人チームに Claude Code の設定を配ろうとして気づいたんです。CLAUDE.md も Hooks も Skills も MCP も、Wiki に「これコピペして」と書いた瞬間、誰かが必ず飛ばす。
そこで週末に自作プラグインマーケットプレイスを立て、/plugin install の一発配布に切り替えました。結果、新メンバーのセットアップは 5 分。この記事では、その手順を丸ごと共有します。
過去記事で Skills / Hooks / MCP / サブエージェントは単体でカバーしてきました。今回はそれらを一つのバンドルにまとめて配布する層の話です。
結論:マーケットプレイスは GitHub リポジトリ1つで完結する
先に結論だけ言うと、Claude Code のプラグインマーケットプレイスは npm も専用ホスティングも不要です。
必要なのは marketplace.json を置いた公開 GitHub リポジトリだけ。
Anthropic 公式ドキュメントによると、マーケットプレイスは「プラグインを配布するためのカタログ」で、GitHub リポジトリや URL、ローカルパスなど複数のソースタイプに対応します。中央のバージョン管理と自動更新も付いてくる。
つまり、あなたが今日やることは3つだけです。
.claude-plugin/marketplace.jsonを置いたリポジトリを作る- その中に
plugins/<名前>/ディレクトリで各プラグインを配置する - チームメンバーに
/plugin marketplace add <owner>/<repo>を実行してもらう
なぜ Skills や Hooks の個別配布では限界が来るのか
個人開発なら .claude/ を dotfiles で同期すれば十分でした。私も長らくそれでやっていました。
でも複数人・複数マシンになると崩れます。実際に踏んだ痛みはこの3つ。
- 配布のズレ: A さんは Hooks v2、B さんは v3。誰の環境で再現するか毎回聞き直す
- 削除忘れ: 廃止した MCP サーバーが誰かのローカルにだけ残る
- オンボード時間: 新メンバーに口頭で「これとこれとこれ」が発生
プラグインマーケットプレイスにすると、この3つが /plugin update 一発で解消します。Security Boulevard の 2026 年 6 月の記事によると、Claude Code プラグインは Skills、サブエージェント、Hooks、MCP サーバー、LSP サーバーを一つのインストール単位にまとめられます。トグルで丸ごと有効化・無効化できる点も大きい。
3ステップで動くマーケットプレイスを作る
最小構成から始めます。私が実際に作った handa-marketplace を例に、コマンドと JSON をそのまま貼ります。
ステップ1: ディレクトリ構造を切る
mkdir -p handa-marketplace/.claude-plugin
mkdir -p handa-marketplace/plugins/quality-review/.claude-plugin
mkdir -p handa-marketplace/plugins/quality-review/skills/review
cd handa-marketplace
git init
ポイントは .claude-plugin ディレクトリを2箇所に作ること。ルート側はマーケットプレイス自体のメタ、プラグイン側は各プラグインのメタです。ここを混同するとインストール時に「plugin-not-found」で弾かれます。私は最初これで30分溶かしました。
ステップ2: プラグイン本体を書く
plugins/quality-review/skills/review/SKILL.md に、まず一つ Skill を置きます。
---
description: コードの潜在バグ・セキュリティ・可読性を短くレビューする
---
変更されたコードを次の観点で30行以内で指摘してください:
- エッジケース漏れ
- 入力サニタイズの欠落
- 可読性を下げる命名
出力は箇条書き。冗長な前置きは書かない。
次に plugins/quality-review/.claude-plugin/plugin.json。
{
"name": "quality-review",
"version": "0.1.0",
"description": "軽量コードレビュー Skill",
"author": {"name": "handa"}
}
この name はインストール後の識別子として不変になります。公式ドキュメントによると、公開後にリネームすると既存ユーザーは plugin-not-found で壊れる。UI 表示名だけ変えたい場合は displayName を追加する運用が推奨です。
ステップ3: マーケットプレイス目次を書く
ルートに .claude-plugin/marketplace.json を置きます。
{
"name": "handa-marketplace",
"owner": {"name": "handa"},
"plugins": [
{
"name": "quality-review",
"source": "./plugins/quality-review",
"description": "軽量コードレビュー Skill"
}
]
}
相対パスで指定できるので、同じリポジトリ内の複数プラグインを一括管理できます。GitHub に push したら準備完了です。
インストールと運用のコマンド一覧
メンバー側の作業はこれだけ。
# マーケットプレイス登録
/plugin marketplace add handayasu/handa-marketplace
# プラグインを入れる
/plugin install quality-review@handa-marketplace
# 一覧確認
/plugin list
# 更新を取りに行く
/plugin marketplace update handa-marketplace
/plugin list に --enabled --disabled フィルタが追加されたのは Claude Code の 2026 年 7 月時点のリリースノートで確認できます。運用が進むとインストール数がすぐ二桁になるので、このフィルタが地味に効きます。
実際に3週間まわしてみると、マーケットプレイス側のバージョンを上げるだけでチーム全員の環境が揃う。この体感は、Wiki コピペ運用に戻れなくなるくらい気持ちいいです。
本番で踏んだ落とし穴3つ
綺麗に動く手順の裏で、私が実際に詰まった箇所を先出ししておきます。
相対パス参照を書くと壊れる
プラグインをインストールすると、Claude Code はプラグインディレクトリをキャッシュ場所にコピーします。公式ドキュメントに明記されている挙動です。
つまり ../shared-utils みたいな親ディレクトリ参照は、コピー先で解決できず落ちます。共有ファイルを使いたければシンボリックリンクで対処するのが公式の指示。私は最初、共通の Python スクリプトを ../lib から呼ぶ設計にして、コピー後にファイルが行方不明になりました。
組織向けマーケットプレイスはリポジトリの公開設定に注意
個人利用ならパブリック GitHub リポジトリで OK。ただしチーム/エンタープライズ プラン経由で組織全体に配布する場合、Anthropic のヘルプによると組織マーケットプレイスに接続できるリポジトリはプライベートまたはインターナル限定で、パブリックリポジトリは弾かれます。
個人検証用リポジトリを社内配布に転用しようとすると、この差でハマります。私は分けました。
バージョン固定は ref より sha が強い
marketplace.json のプラグインエントリでは ref(ブランチ/タグ)と sha(コミット)を両方指定できます。両方書いた場合、実効的なピンは sha。GitHub や GitLab で対応するブランチが消えていても、コミットが到達可能なら一応インストールが通ります。
本番配布では sha ピンにしておくと「タグ書き換え事故」が減ります。開発中は ref、リリース時は sha、と使い分けるのが実用的でした。
既存 Skills / Hooks / MCP をどう束ねるか
ここまで最小の Skill 1つで説明しましたが、実際の運用ではもっと詰め込むはずです。
プラグイン一つの中に置ける代表的な構成はこう。
plugins/team-standard/
├── .claude-plugin/plugin.json
├── .mcp.json # MCP サーバー設定
├── commands/ # スラッシュコマンド
├── agents/ # サブエージェント
├── skills/ # SKILL.md 群
└── hooks/ # PreToolUse などのスクリプト
過去に自作した Skill、Hooks、サブエージェントを丸ごとこの構造に移すだけで、チーム配布可能になります。名前空間は <plugin-name>:<skill-name> の形で自動で切られるので、他プラグインとの衝突も起きにくい。
ただし MCP サーバー名は接頭辞が付かないので、既存の MCP 設定と名前が被ると /plugin install が失敗します。ここは事前チェックしておくと安全です。
セキュリティで見るべき2つの視点
プラグインを他人に配る側と入れる側、両方の視点で最低限。
配る側は、Hooks がシェルコマンドを実行できることと、MCP サーバーが外部システムに触れることを意識してください。「依存関係を追加するのに近い行為」というのが実感に近い。README に「このプラグインが何をするか」を明記しておくと、レビュー側の心理的負担が減ります。
入れる側は、/plugin install の前に必ずソースを開いて中身を確認する。Anthropic 自身も公式マーケットプレイスの README で「インストール前に信頼できるか確認せよ」と繰り返し警告しています。過去記事の Hooks 実践編で書いた PreToolUse の deny rules は、こういう外部プラグインを入れる段階でこそ効いてきます。
まとめ:今日からやる4つのアクション
ここまでの手順を、今日の作業に落とすとこうなります。
- GitHub に空リポジトリを一つ作り、
.claude-plugin/marketplace.jsonを置く - 既存の
.claude/配下の Skill / Hook / MCP から一つだけプラグイン化してみる - 自分のマシンで
/plugin marketplace add→/plugin installを通す - 動いたらチームの Slack に「これ install してください」で共有する
特に2番目、いきなり全部を移そうとすると詰まります。私も一番使う Skill を一つだけ切り出すところから始めました。最小の成功体験を1回作ると、残りは半日で移せます。
過去に書いた Sub-agents や Hooks の記事と組み合わせると、チーム全員が同じ品質基準で Claude Code を回せる環境が組み上がります。Wiki のコピペ運用から抜けたい人には、これが今年一番効く投資だと思っています。
参考リンク
- Claude Code Docs — Create and distribute a plugin marketplace — marketplace.json の公式スキーマとサンプル手順
- Anthropic 公式プラグイン集 — claude-plugins-official — 公式マーケットプレイスの構造リファレンス
- Claude Help Center — Manage plugins for your organization — 組織向け配布のリポジトリ要件(private/internal 必須)
- Security Boulevard — 7 Claude Code Plugins Worth Your Time (2026-06) — 実運用でのプラグイン検証観点
- Claude Code Changelog (July 2026) —
/plugin list --enabled/--disabledなどの最新機能