Claude Codeのプラグインをどこから入れるかは、そのまま供給網(サプライチェーン)の問題になる。プラグインはgitリポジトリからcloneされてローカルに展開され、スキルやフックとしてエージェントの振る舞いに入り込むからだ。その配布経路として、Anthropicは anthropics/claude-plugins-community というリポジトリを公開している。
READMEは短く、「コミュニティ・プラグイン・マーケットプレイスの読み取り専用ミラー」とだけ書かれている。だが実体である marketplace.json とgit履歴、そして .github/ 以下の自動化を読むと、審査基準・固定方式・削除理由まで公開されていることが分かる。この記事ではリポジトリをcloneして、その中身を数字で確認する。数値はすべて2026年8月23日時点の実測値である。
- ・正体:Anthropic社内レビューを通ったプラグインの配布台帳。実体は
marketplace.json1ファイルで2,282件。 - ・入れ方:
claude plugin marketplace add anthropics/claude-plugins-communityの1行で追加できる。 - ・固定方式:2,274件(99.6%)がコミットSHA固定。upstreamのmainには追従せず、個別PRでピンを進める。
- ・審査:セキュリティ審査のプロンプト全文がリポジトリに公開されている。主眼はクロスサービスの資格情報流出。
- ・削除:42件が削除済みで、理由がコミットメッセージに残る(安全ポリシー16件・upstream消滅12件・ブランド名詐称8件ほか)。
- ・注意:直接PRは自動クローズ。登録は申請フォーム経由。収録数は6月以降ほぼ横ばいで、8月は微減した。
この記事ではClaude Codeのプラグイン配布経路を扱います。Claude Code本体の設定・運用全般は Claude Code|2026年版・インストールからCLAUDE.md・Hooks・本番運用までの実装手引き をご覧ください。
claude-plugins-communityとは——PRが自動クローズされる「読み取り専用ミラー」
このリポジトリはGitHub上で開発されているわけではない。READMEに明記されているのは次の3点だ。
・.claude-plugin/marketplace.json がインストール可能なコミュニティ・プラグインの一覧そのものであること
・Anthropic社内のレビューパイプラインから夜間同期されていること
・掲載されている各プラグインは claude.ai 経由で申請され、自動セキュリティスキャンを通過し、配布を承認されたものであること
そして「このリポジトリに直接開かれたプルリクエストは自動的にクローズされる」と書かれている。これは方針の表明にとどまらず、.github/workflows/close-external-prs.yml として実装されていた。pull_request_target の opened / reopened で発火し、投稿者を見てクローズする。自動化自身が開くPRだけが例外として除外されている。
使い方は1行で足りる
導入手順はREADMEに書かれている通り、マーケットプレイスを追加してからプラグイン名で入れる。
# マーケットプレイスを追加する
claude plugin marketplace add anthropics/claude-plugins-community
# プラグインを入れる(@claude-community が上で追加した市場を指す)
claude plugin install <plugin-name>@claude-community
入れる前に中身を確認したいなら、台帳を直接読むほうが早い。JSONなので jq で引ける。
# 台帳だけを取得する(リポジトリは軽い)
git clone --depth 1 https://github.com/anthropics/claude-plugins-community
cd claude-plugins-community
# 登録件数を数える
jq '.plugins | length' .claude-plugin/marketplace.json
# 特定のプラグインのソースURLと固定SHAを見る
jq -r '.plugins[] | select(.name=="<plugin-name>") | [.name, .source.url, .source.sha] | @tsv' \
.claude-plugin/marketplace.json
① 何ができる:審査を通った2,282件のプラグインを1行で追加でき、各件のソースURLと固定SHAを事前に確認できる。② 何を解決する:GitHubに散在するプラグインを、出所も固定もないまま入れてしまう問題。③ 何を代替できる:配布経路の信頼判断の一次情報にはなる。自組織のOSS導入審査は代替しない——後述の通り掲載後に削除された例が42件ある。
2,282件の中身を数える——提供元1,864アカウント、89%が1本だけ
marketplace.json をパースして構造を数えた結果はこうなった。
| 項目 | 実測値 |
|---|---|
| 登録プラグイン数 | 2,282 |
ソース種別 url(リポジトリ丸ごと) |
1,876 |
ソース種別 git-subdir(リポジトリ内の一部) |
401 |
| リポジトリ内に直接同梱 | 5 |
| コミットSHAで固定 | 2,274(99.6%) |
| タグ・ref で固定 | 3 |
| 提供元アカウント数 | 1,864 |
| うち1本だけの提供元 | 1,667(89.4%) |
| 最多の提供元 | MSApps-Mobile(24本) |
| 名前の重複 | 0 |
| 説明文の長さ | 中央値274字/最長6,581字 |
説明文の長さのばらつきも大きい。中央値は274字だが、最長は munin-memory の6,581字で、2,000字を超えるものが8件ある一方、100字未満が220件(9.6%)ある。台帳の説明欄をREADME代わりに使っている登録と、一行で済ませている登録が同居している。CLIやUIで一覧を眺めるときは、説明文の厚さが品質の指標にはならない点に注意したい。
git-subdir が401件あるのも実務的に重要だ。これは1つのリポジトリの中の特定ディレクトリだけをプラグインとして切り出す指定で、複数プラグインを1リポジトリで管理している提供元がそれなりにいることを示す。裏を返せば、そのリポジトリのどこかが侵害されたとき、影響範囲は登録された1件にとどまらないことになる。
リポジトリ内に直接置かれた5件
台帳の大半は外部リポジトリを指すが、5件だけソース指定が文字列で、実体がこのリポジトリ内に置かれている。eli5 / quickdesign / testdino / tres-finance-plugin と、cowork-plugin-management だ。ディレクトリを開くと skills/<name>/SKILL.md と .claude-plugin/plugin.json が入っている。SHA固定が「なし」に分類される5件はこれで、外部を指していない以上ピン留めの対象にならない。なお eli5 については ELI5スキル解説 で個別に扱っている。
台帳にはもう1つ renames というフィールドがあり、qodo-skills → qodo、wordpress-com → build-with-wordpress、auth0-sdks → auth0、twilio → twilio-developer-kit の4件が記録されている。改名しても旧名でのインストールが壊れないようにするリダイレクト表で、配布台帳として運用されている証拠のひとつだ。
ベンダー名がついていても公式とは限らない
削除理由に「無関係なブランド名の使用」が8件あった以上、現行の台帳にも同じ性質のものが残っていないかは確認したくなる。実在サービス名を冠する登録を抜き出して homepage を見ると、公式配布とサードパーティ製が混在していた。
| プラグイン名 | homepage | 読み取れること |
|---|---|---|
| cloudflare | github.com/cloudflare/skills | Cloudflare自身の組織 |
| datadog | github.com/datadog-labs/… | Datadogのラボ組織 |
| mongodb | mongodb.com/docs/claude/ | MongoDB公式ドキュメント配下 |
| railway | docs.railway.com/ai/… | Railway公式ドキュメント配下 |
| shopify-plugin | shopify.dev/docs/apps/… | Shopify公式開発者サイト |
| sentry-cli | cli.sentry.dev | Sentry公式CLIサイト |
| figma-suite | github.com/robukh/figma-suite | 個人アカウント。Figma社ではない |
| shopify-polaris | github.com/narutorabby/… | 個人アカウント |
| supabase-expert | github.com/asim266/… | 個人アカウント |
| notion-memory | github.com/MSApps-Mobile/… | 第三者の提供元(同アカウントは24本を登録) |
homepage と source.url のドメイン・組織名のほうだ。サードパーティ製が悪いという話ではない。公式が出していない領域を埋める良質なプラグインはあるし、審査自体は通っている。ただ、「Shopifyのプラグインを入れた」つもりで実際には個人開発のものを入れているという取り違えは起こりうる。入れる前に jq で1行確認しておけば防げる。
# 名前で引いて、提供元とhomepageを確かめる
jq -r '.plugins[] | select(.name|test("shopify"))
| [.name, .source.url, .homepage] | @tsv' .claude-plugin/marketplace.json | column -t -s$'\t'
homepage がGitHub以外の独自ドメインを指す登録は790件(34.6%)あった。自社サイトを持つ提供元がそれなりにいる一方、残る約65%はGitHubリポジトリがそのまま窓口になっている。Claude Code プラグインの供給元は、企業と個人がフラットに並んだ市場だと考えたほうが実態に近い。
成長は4月で止まっていた——git履歴で見る収録数の推移
marketplace.json を触ったコミットは2,245件ある。各時点のファイルを復元して登録件数を数えると、成長曲線が出る。
| 日付 | 登録件数 | 出来事 |
|---|---|---|
| 2026-03-20 | 0 | 初期スキャフォールド(README・LICENSE・空の台帳・PR自動クローズ) |
| 2026-03-23 | 214 | 初回同期 |
| 2026-04-07 | 1,095 | 急拡大期 |
| 2026-05-01 | 1,920 | |
| 2026-06-12 | 2,201 | ここで頭打ち |
| 2026-07-01 | 2,199 | 微減 |
| 2026-08-01 | 2,307 | ピーク |
| 2026-08-21 | 2,282 | 現在(8月中に25件純減) |
立ち上げから約3か月で2,200件に達したあと、6月以降は2,200〜2,300の帯で横ばいになっている。8月は削除が新規登録を上回って純減した。市場が飽和したのか、審査の通過率が下がったのかは公開情報からは判断できないが、「毎月増え続けている」わけではないことは履歴から確認できる。
コミットの大半はSHAの更新
2,288件のコミットのうち、2,166件が bump(<プラグイン名>): <旧SHA> → <新SHA> (#PR番号) という形式だった。対象となった個別プラグインは715件で、全2,282件の31.3%にあたる。
# SHA更新コミットの数と、対象プラグインの数を数える
git log --format="%s" | grep -c "^bump("
git log --format="%s" | grep -oP '^bump\(\K[^)]+' | sort -u | wc -l
つまりこの市場の日常運用は、新規追加ではなく既存プラグインのピンを1件ずつ進める作業でできている。upstreamが更新されても台帳は自動で追いかけず、1件1件がレビュー可能なPRとして現れる設計だ。
審査の中身——セキュリティ審査プロンプトが全文公開されている
最も価値がある発見はここだった。.github/actions/scan-plugins/policy/prompt.md に、プラグイン審査に使われているプロンプトの全文が置かれている。冒頭は “You are a security reviewer evaluating a Claude Code plugin.”(あなたはClaude Codeプラグインを評価するセキュリティレビュアーです)で始まる。審査そのものをClaudeが実行している。
宣言されていないファイルこそ読め、と指示している
このプロンプトで最も実務的な部分は、走査範囲の指定だ。plugin.json / .mcp.json / skills/ / agents/ / commands/ / hooks/ といった宣言されたサーフェスに加えて、.claude/ などのドットディレクトリ、scripts/、examples/、tests/、そしてツリー内のあらゆる .ts/.js/.mjs/.py/.sh/.go を読めと明示している。
理由も書かれている。gitソースから導入されたプラグインはリポジトリ全体がユーザーのディスクにcloneされるため、.claude/ 内のコードはClaude Codeに自動ロードされないとしても、同梱され、到達可能であり、エージェントが実行するよう誘導されうる——ロード可能な別のSKILL.mdがそれを実行するよう指示することさえある、という説明だ。プロンプトは「宣言されたサーフェスでないことはファイルを読み飛ばす理由にならない」と結んでいる。
主眼は「クロスサービスの資格情報流出」
もう1つの中心は資格情報の扱いで、ハードコードされた秘密とは明確に区別されている。探すべきは、資格情報ストアからユーザーの生きた秘密を読み、その資格情報が属するサービスとは別のサービスへ送るコードだ。
| 区分 | 内容 |
|---|---|
| 監視する取得元 | macOS security find-generic-password / find-internet-password、Linux secret-tool lookup、Windows cmdkey、keytar/keyring、~/.aws/credentials、SSH秘密鍵、~/.claude/.credentials、ブラウザのcookie・ログインストア、.env の環境トークン |
| 違反の判定 | 資格情報が属するサービスは名前と保存場所で決める。ANTHROPIC_* はAnthropic、~/.railway/config.json はRailway、~/.aws/credentials はAWS |
| 具体例 | ANTHROPIC_AUTH_TOKEN を非Anthropicのエンドポイント(第三者AIゲートウェイなど)へ送るのは違反。プラグイン側がそれを「そのゲートウェイの鍵」として扱っていても、ユーザーが本物のAnthropicアカウントトークンを入れている可能性があるため |
| 違反にしないもの | サービスXの鍵でサービスX自身のAPIを呼ぶこと(Railwayの鍵でRailway、AWSの鍵でAWS、gh トークンでGitHub)。ユーザーに自分の鍵を export させる指示 |
| 休眠コード | 同梱されていてクロスサービスに資格情報を送るなら、ロードされる経路になくても対象 |
「プラグインがその資格情報をどう扱っているつもりか」ではなく「その資格情報の名前が示すサービスと、送信先のサービスが一致しているか」で判定する、という基準の立て方は明快だ。開発者向けセキュリティの観点では、自分のCI設定やスキルを点検するときにもそのまま流用できる。
42件の削除理由——公開されたモデレーション記録
掲載後に降ろされたプラグインもある。git履歴のコミットメッセージには、削除の理由が明示的に書かれていた。2026年6月30日から8月12日までを集計すると計42件になる。
| 理由 | 件数 | 記録されている文言(抜粋) |
|---|---|---|
| ユーザー安全ポリシー審査 | 16 | “Remove 16 plugin(s) flagged for user-safety policy review” |
| upstreamの消滅・404 | 12 | “entries with unavailable upstream sources” / “upstream repo deleted (broken install)” |
| 無関係なブランド名の使用 | 8 | “8 unaffiliated brand-name” |
| フォークからのvendoring | 2 | “vendor from a fork rather than the upstream author’s repo” |
| データ取扱い開示の不備 | 1 | “Remove adapty pending a data-handling disclosure fix” |
| vendored時に動作しない | 1 | “non-functional as vendored (hook handlers unresolvable)” |
| カテゴリ撤回・upstream統合 | 2 | “category-withdrawn” / “consolidated upstream into auth0” |
注目したいのは「無関係なブランド名の使用」8件だ。実在企業の名前を冠しながらその企業とは無関係なプラグインが、8件まとめて降ろされている。パッケージレジストリで繰り返されてきたタイポスクワッティング・ブランド詐称と同じ問題が、プラグイン市場でも起きていることになる。
「フォークからのvendoring」2件も同種の警戒だ。原作者のリポジトリではなくフォークを参照している登録は、原作者が知らないところで内容を差し替えられる余地を残す。
掲載時点で自動セキュリティスキャンを通っていても、2026年8月6日に16件がユーザー安全ポリシー審査でまとめて削除されている。掲載後に問題が判明する経路が現に存在するということだ。すでにインストール済みのプラグインは削除されても手元から消えるわけではないので、業務環境で使うなら定期的に台帳と突き合わせて、自分が入れたプラグインがまだ載っているかを確認する運用が要る。
# 自分が入れているプラグインが、今も台帳に載っているか確認する
git -C claude-plugins-community pull --quiet
for p in $(claude plugin list --format=name 2>/dev/null); do
jq -e --arg n "$p" '.plugins[] | select(.name==$n)' \
claude-plugins-community/.claude-plugin/marketplace.json >/dev/null \
&& echo "OK $p" || echo "NOT-LISTED $p"
done
claude-plugins-communityの供給網防御——SHA固定・アカウント同一性の監視・9つの不変条件
.github/actions/ には4つの自作アクションが置かれていて、それぞれが供給網の別の穴を塞いでいる。
| アクション | 役割 |
|---|---|
validate-plugins |
台帳全体にI1〜I9の不変条件を適用する。並び順・重複・説明文の長さ制限・https限定・SHA固定必須・ファイル名一致・直接編集の禁止・vendoredパスの存在確認・シェルのメタ文字禁止。加えて @anthropic-ai/claude-code を毎回入れ直して claude plugin validate を正典として実行する |
scan-plugins |
前述のプラグイン審査。payload全体を読み、クロスサービスの資格情報流出を判定する |
bump-plugin-shas |
固定SHAを進める。特定プラグインを現在のSHAに留める freeze-shas 入力を持つ |
owner-liveness-sweep |
台帳全体の提供元アカウントを定期的に照合する。報告専用で、台帳を書き換えたり削除したりはしない |
アカウント名の再取得を検出する仕組み
owner-liveness-sweep が検出するもののうち、最も重要なのが identity_changed だ。
これは、記録されている提供元のログイン名が以前と違うGitHubアカウントIDに解決されるようになった状態を指す。GitHubのアカウントIDはアカウントの生涯を通じて安定しているため、IDが変わったということはそのログイン名がいったん解放され、別人に再登録されたことを意味する。READMEは「そのオーナー配下の全エントリは、以降のbumpの前にレビューが必要」としており、この検出だけは実行を失敗させる扱いになっている。
基準線は .github/owner-baseline.json に「ログイン名(小文字化)→ 初回記録時のアカウントID」として保存される。解決しないオーナーは基準線に入れず、報告に回す設計だ。ほかに owner_missing(削除・改名)、repo_moved(リポジトリの改名・移管)、repo_missing(削除・非公開化)も検出する。
Claudeによるポリシー審査"] B -- 違反あり --> X["掲載しない"] B -- 通過 --> C["社内レビュー"] C --> D["夜間同期で marketplace.json へ"] D --> E["validate-plugins
I1〜I9 + claude plugin validate"] E --> F["掲載"] F --> G["bump-plugin-shas
upstream更新を個別PRで反映"] F --> H["owner-liveness-sweep
提供元の同一性を定期照合"] H -- identity_changed --> I["そのオーナー配下を
bump前に要レビュー"] F --> J["ポリシー違反・upstream消滅を
理由付きで削除(42件)"]
入れる前の3分チェック
ここまでで見えた性質を、導入前の手順に落とすとこうなる。台帳が公開されているので、すべてローカルで完結する。
・提供元を見る:source.url の組織名が、そのサービスの公式組織かどうか。名前だけで公式と判断しない
・固定を見る:source.sha が入っているか。入っていれば、いま自分が入れるものは台帳に記録されたその1コミットで確定する
・同梱物を見る:審査プロンプトが警告している通り、gitソースからの導入はリポジトリ全体が手元に落ちる。.claude/ や scripts/ に何が入っているかは、インストール前にcloneして確認できる
・更新履歴を見る:そのプラグインが過去に何回ピンを進められたかは、台帳リポジトリの bump(<名前>) コミットで分かる。まったく更新されていないものは、upstreamが動いていない可能性がある
# 1) 台帳での登録内容を確認する
jq -r '.plugins[] | select(.name=="<plugin-name>")
| "url: \(.source.url)\nsha: \(.source.sha)\nhome: \(.homepage)"' \
.claude-plugin/marketplace.json
# 2) 固定SHAの中身を、入れる前に手元で見る
git clone --filter=blob:none <source.url> /tmp/inspect && cd /tmp/inspect
git checkout <source.sha>
find . -type f \( -name "*.sh" -o -name "*.py" -o -name "*.js" -o -name "*.ts" \) -not -path "./.git/*" | head -40 # 同梱スクリプトを列挙する
# 3) 過去にピンが動いた回数を数える(台帳リポジトリ側で実行)
git -C claude-plugins-community log --oneline --format="%ad %s" --date=short \
| grep -c "^.* bump(<plugin-name>):"
2番目が要点になる。インストールコマンドを叩く前に、同じSHAの中身を自分の目で確認できるのは固定方式の副産物だ。ブランチ追従の配布では「いま入るもの」が事前に確定しないため、この確認自体が成立しない。
第三者の検索ハブとの使い分け
同じ「Claudeの拡張を探す」でも、第三者の索引サイトとは役割が違う。buildwithclaudeとは|Claude Skills・Agents・Pluginsを横断検索できる発見ハブ のようなハブはGitHub上に散在する拡張を広く索引して見つけやすくするもので、収録数はこちらより桁違いに多い。一方この公式マーケットプレイスは、審査を通ったものだけを載せる代わりに固定SHA・審査基準・削除理由を公開している。
探すのは第三者ハブ、入れるのは公式台帳、という使い分けが実態に合う。なお、Xで話題になるスキルが必ずしもここに載っているわけではない点は アンチスロップ・スキル10本を全部cloneして実測比較 で確認した通りで、話題性と公式流通は連動していない。
まとめ
・正体:Anthropic社内レビューを通ったプラグインの配布台帳。
marketplace.json 1ファイルに2,282件・構造:提供元1,864アカウントのうち89%が1本だけ。`git-subdir` 参照が401件
・固定:99.6%がコミットSHA固定。日常運用の実体は2,166件のピン更新コミット(715プラグイン分)
・審査:プロンプト全文が公開。宣言サーフェス外まで走査し、クロスサービスの資格情報流出を主眼に置く
・削除:42件を理由付きで削除。安全ポリシー16件・upstream消滅12件・ブランド名詐称8件ほか
・防御:
identity_changed(ログイン名の再登録)検出、I1〜I9の静的不変条件、直接PRの自動クローズ・推移:3か月で2,200件に達したあと6月以降は横ばい、8月は25件の純減
このリポジトリの読みどころは、収録されているプラグインそのものよりも運用の設計が全部見えていることにある。何を固定し、何を検査し、何を理由に降ろしたかがgit履歴と .github/ に残っていて、審査プロンプトに至っては全文が読める。自分でプラグインやスキルを配布する側に回るとき、あるいは社内で拡張を審査する基準を作るときに、そのまま参考にできる水準の資料になっている。
一方で、審査を通っていることと安全であることは別だ。8月6日に16件がまとめて降ろされた事実は、掲載後に問題が見つかる経路が現に動いていることを示している。台帳は信頼の出発点としては優秀だが、終着点ではない。
参照ソース
・anthropics/claude-plugins-community — README・marketplace.json(2,282件)・git履歴。本記事の数値の大半の出所
・scan-plugins のポリシープロンプト全文 — 走査範囲・クロスサービス資格情報流出の判定基準・除外条件
・owner-liveness-sweep の README — identity_changed などの検出クラスと基準線の運用
・validate-plugins の README — I1〜I9の不変条件と claude plugin validate の位置づけ
・commit f4c9452(本記事が集計した時点のHEAD) — 2,282件・2,288コミットを数えたリビジョン