marketplace.json はプラグインマーケットプレイスを定義するファイルです。マーケットプレイスの名前、所有者、およびプラグインごとに 1 つのエントリが含まれます。各エントリのプラグインソースは、Claude Code がそのプラグインをどこから取得するかを指定します。
マーケットプレイスソースは、Claude Code が marketplace.json ファイル自体をどこから取得するかを指定する別のオブジェクトです。設定で記述するか、claude plugin marketplace add を実行するときに Claude Code が構築します。
このリファレンスは、正確なフィールド名または値が必要なマーケットプレイス管理者、および extraKnownMarketplaces、strictKnownMarketplaces、および blockedMarketplaces で有効な source 値を知る必要がある管理者向けです。
これらのケースは他のページで説明されています:
- マーケットプレイスの構築またはホスト: マーケットプレイスの作成 および マーケットプレイスのホストと保守 を参照してください
- 許可リストと拒否リストのレシピ: 組織のプラグインを管理する を参照してください
- マーケットプレイスファイル: トップレベルフィールド および プラグインエントリ
- エントリの
source: プラグインソース - 設定の
sourceオブジェクト: マーケットプレイスソース claude plugin validate <path>からの出力: 検証メッセージ。各メッセージをそれが名前を付けるフィールドにマップします
マーケットプレイスファイル
マーケットプレイスファイルをマーケットプレイスのディレクトリの.claude-plugin/marketplace.json に保存します。ファイルをリポジトリ内の別の場所に保持する場合、ユーザーは extraKnownMarketplaces でマーケットプレイスを宣言する必要があり、その source に path を設定する必要があります。claude plugin marketplace add にはそのオプションがないためです。
.claude-plugin/ を含むディレクトリはマーケットプレイスルートと呼ばれ、すべての相対プラグインソースは .claude-plugin/ からではなく、そこから解決されます。
各ユーザーは name ごとに 1 つのマーケットプレイスを登録するため、ユーザーは同じ名前の 2 つのマーケットプレイスを同時に登録することはできません。
Claude Code は不明なトップレベルキーまたはプラグインエントリキーを無視し、拒否しないため、タイプミスは静かに読み込まれます。claude plugin validate は各不明なキーを警告として報告します。
予約名
マーケットプレイスに次の名前を付けることはできません:- 公式マーケットプレイス名:
claude-code-marketplace、claude-code-plugins、claude-plugins-official、anthropic-marketplace、anthropic-plugins、agent-skills、anthropic-agent-skills、life-sciences、knowledge-work-plugins、claude-for-legal、claude-for-financial-services、financial-services-plugins、first-party-plugins、およびclaude-tag-plugins。マーケットプレイスがgithub.com/anthropics/の下のgithubまたはgitマーケットプレイスソース から来ない限り予約されています。 - コミュニティマーケットプレイス名:
claude-community、claude-plugins-community、およびhealthcare。公式名と同じルールの下で予約されています。 - プラグインディレクトリ名:
anthropic-plugin-directoryおよびclaude-plugin-directory。公式名と同じルールの下で予約されています。 - 公式マーケットプレイスになりすまし名:
official-claude-pluginsまたはclaude-plugins-v2などの名前、および非 ASCII 文字を含む任意の名前。エラーはMarketplace name impersonates an official Anthropic/Claude marketplaceです。名前内の制御文字または双方向フォーマット文字もMarketplace name cannot contain control or bidirectional-formatting charactersを報告します。 - 予約名の別のスペル: 予約名と末尾のドット、またはハイフンの代わりにハイフン以外の記号によってのみ異なる名前。
claude.code.pluginsはclaude-code-pluginsとしてカウントされます。claude plugin validateはそのような名前を受け入れます。マーケットプレイスの追加はis another spelling of "<reserved>", a reserved marketplace nameで失敗し、1 つの下で登録されたマーケットプレイスは読み込みを停止します。このチェックには Claude Code v2.1.280 以降が必要です。 - Claude Code がマーケットプレイスから来ないプラグインに使用する名前:
--plugin-dirで読み込まれたプラグインのinline、組み込みプラグインのbuiltin、.claude/skills/から自動読み込みされたプラグインのskills-dir、および claude.ai アカウントから同期されたプラグインのsynced。claude-plugin-testも予約されています。skills-dirはstrictKnownMarketplacesおよびblockedMarketplacesで{"source": "skills-dir"}としても表示されます。ポリシーリストでのみ有効なソース値 で説明されています。 npm、pip、uv、cargo、github、およびgh: 任意の大文字小文字で予約されています。このチェックには Claude Code v2.1.275 以降が必要です。claudeai-で始まる名前: claude.ai でホストされているマーケットプレイス用に予約されています。claude plugin marketplace addはCannot add marketplace "<name>": names starting with "claudeai-" are reserved for marketplaces hosted on claude.aiで他のマーケットプレイスを拒否します。
トップレベルフィールド
テーブルは Claude Code がmarketplace.json から読み取るすべてのキーをリストします。name、owner、および plugins は必須です。
プラグインエントリ
marketplace.json のトップレベル plugins 配列内の各オブジェクトはプラグインに名前を付け、そこからフェッチする場所を指定します。name および source は必須です。
エントリは、description、version、author、commands、および hooks などのすべての plugin.json フィールド も受け入れます。これらのフィールドが適用される場合については、エントリが plugin.json とどのように組み合わされるか を参照してください。
テーブルはエントリ自身のフィールドと、エントリ内での意味が変わるマニフェストフィールドをリストします。
エントリが plugin.json とどのように組み合わされるか
エントリのフィールドは、フェッチされたプラグインが独自の.claude-plugin/plugin.json を持つ場合と持たない場合で異なる方法で適用されます:
plugin.jsonなし: エントリはstrictに関係なくマニフェストです。mcpServers、lspServers、userConfig、およびchannelsを含むすべてのマニフェストフィールドがエントリに適用されます。plugin.json存在:plugin.jsonはマニフェストです。厳密モード は、エントリの 6 つのコンポーネントフィールドcommands、agents、skills、hooks、outputStyles、およびthemesが組み合わされるか、競合として拒否されるかを決定します。エントリmcpServers、lspServers、userConfig、およびchannelsは適用されません。plugin.jsonで宣言してください。
エントリ内のフック
エントリhooks をフックイベント名をマッチャー配列にマップするインラインオブジェクトとして記述します。ファイルパスまたは配列を記述する場合、claude plugin validate はそれを渡します。これらのフックは実行されず、Claude Code はプラグインの not yet supported in a marketplace entry エラーを報告します。ファイルベースのフックをプラグイン自身の hooks/hooks.json または plugin.json に入れてください。
表示フィールド
エントリとプラグイン自身のplugin.json の両方が、表示フィールド displayName、description、author、homepage、repository、license、および keywords を設定できます。ユーザーはインストール前後のプラグインリストと詳細でこれらの値を見ます:
- エントリで設定したフィールドの場合、ユーザーはエントリの値を見ます。
plugin.jsonが異なる値を設定している場合でも。 - エントリが設定しないフィールドの場合、ユーザーは
plugin.json値を見ます。
plugin.json のみを読み取ることができます。そのプラグインファイルはマーケットプレイス内にあります。他のソースタイプを持つエントリの場合、ユーザーはプラグインをインストールするまでエントリ自身のフィールドのみを見ます。
厳密モード
strict は、フェッチされたプラグインが独自の plugin.json を持ち、エントリが コンポーネントフィールド のいずれかも宣言する場合に何が起こるかを決定します:commands、agents、skills、hooks、outputStyles、または themes。デフォルトの strict: true では、Claude Code はエントリのコンポーネントフィールドを plugin.json に追加します。ただし hooks は例外で、そのマッチャーはマニフェストのイベントごとのマッチャーを置き換えます。strict: false では、コンポーネントフィールドを宣言するエントリは競合であり、プラグインは読み込みに失敗します。テーブルは strict、plugin.json、およびエントリのコンポーネントフィールドの各組み合わせを示します。
プラグインソース
プラグインエントリのsource は、Claude Code がそのプラグインをどこから取得するかを指定します。相対パス文字列か、独自の source キーでタイプを指定するオブジェクトのいずれかです。エントリは "source": { "source": "github", "repo": "your-org/formatter" } のようになります。
以下の表は、各プラグインソースタイプとそのフィールドを示しています。
url と github という名前はマーケットプレイスソースタイプでもあります。ここで url は git リポジトリではなく marketplace.json ファイルへの直接リンクを意味します。git はマーケットプレイスソースとしてのみ存在し、npm は両方として存在します。git-subdir、archive、command はプラグインソースとしてのみ存在します。
マーケットプレイスリポジトリ自体のサブディレクトリにあるプラグインには相対パスを使用します。他のリポジトリのサブディレクトリには git-subdir を使用します。
github、url、git-subdir ソースは ref と sha フィールドを共有します。
ref: ブランチまたはタグ。リポジトリのデフォルトブランチにデフォルト設定されます。sha: 40 文字の小文字のコミット SHA。refとshaの両方を設定すると、Claude Code はshaをチェックアウトします。GitHub、GitLab、Bitbucket を含むほとんどの git ホストでは、refで指定されたブランチまたはタグが上流で削除されていても、コミットがリポジトリから到達可能である限り、インストールは成功します。AWS CodeCommit などの一部のサーバーは SHA によるコミット取得をサポートしていません。これらのサーバーでは、refが存在し、ピン留めされたコミットがそこから到達可能である必要があります。
相対パスプラグインソース
パスはマーケットプレイスルートから解決されます。./plugins/formatter は <root>/plugins/formatter です。マーケットプレイスファイルが <root>/.claude-plugin/ にあっても同じです。
.. を含むパスは検証に失敗します。macOS と Linux では、Claude Code は先頭の ./ の後に任意の場所にバックスラッシュを含むエントリパスを拒否するため、パスはフォワードスラッシュで記述してください。
github、git、file、directory: Claude Code はマーケットプレイスのファイルを持っています。url: Claude Code はmarketplace.jsonのみを取得するため、相対パスは解決できません。各プラグインにgithubやgit-subdirなどのオブジェクトソースを指定してください。settings: 相対パスは完全に拒否されます。
pluginRoot の下の裸の名前
裸の名前は/ を含まない単一のディレクトリ名です。例えば "formatter" です。./ パスの代わりに裸の名前を記述するには、metadata.pluginRootをそれらが解決するディレクトリに設定します。"pluginRoot": "./plugins" の場合、"source": "formatter" は ./plugins/formatter に解決されます。Claude Code v2.1.239 以降が必要です。
metadata.pluginRoot には以下の制限があります。
- それ自体がマーケットプレイス内の相対パスである必要があります。
- 既に
./で始まるソースには影響を与えません。 team-a/formatterのように/を含むソースは裸の名前ではなく、metadata.pluginRootが設定されていても./プレフィックスが必要です。
github プラグインソース
repo は owner/repo を取ります。ref と sha はオプションです。
url プラグインソース
url は完全な git URL です。https://、http://、file://、または git@ です。.git サフィックスは必須ではないため、Azure DevOps と AWS CodeCommit の URL はそのまま機能します。このタイプは owner/repo ショートハンドを取りません。
git-subdir プラグインソース
url は完全な git URL または GitHub owner/repo ショートハンドを受け入れます。path はプラグインを保持するサブディレクトリで、Claude Code はそのサブディレクトリのみをダウンロードします。
npm プラグインソース
npm ソースは以下のフィールドを取ります。
package: パッケージ名、または@your-org/formatterのようなスコープ付き名前version: バージョンまたは範囲registry: デフォルトレジストリにないパッケージのレジストリ URL
preinstall や postinstall など)は実行されず、その依存関係は取得中にインストールされません。パッケージが package.json の隣にサポートされているロックファイルを持っている場合、Claude Code はそれらのNode.js パッケージ依存関係を別のステップでインストールします。この場合もスクリプトは無効です。
archive プラグインソース
url は https:// を使用する必要があり、ループバック、リンクローカル、またはクラウドメタデータホストを指すことはできません。
プラグインルートは zip の最上部または 1 つ下のディレクトリにある場合があります。
sha256 はアーカイブのダイジェストで、64 文字の 16 進数です。大文字でも小文字でも構いません。これを設定すると、Claude Code は一致しないダウンロードを拒否します。
command プラグインソース
ユーザーのマシンにインストールされたツールがプラグインディレクトリを生成する場合(例えば、ユーザーが選択したツールチェーンのプラグインをレンダリングする IDE など)にcommand ソースを使用します。Claude Code はユーザーがプラグインをインストールまたは更新するときにコマンドを実行し、セッションごとに 1 回再度実行するため、ユーザーは再インストールなしでツールの変更された出力を取得します。
command ソースは以下のフィールドを取ります。
command: プラグインディレクトリの絶対パスを 1 行として出力し、終了コード 0 で終了するシェルコマンド。Claude Code はユーザーに実行前にレビュー用の文字列全体を表示します。印字可能な ASCII で記述し、最大 500 文字で、4 文字以上の連続スペースはありません。timeout: 1 から 600 までの秒数。デフォルトは 60 です。mode:copy(デフォルト)またはlink。コピーモードとリンクモードを参照してください。
disableCommandPluginSources でコマンドソースをオフにします。
コマンドが実行する必要があること
以下の要件を満たすようにコマンドを記述してください。- シェルと作業ディレクトリ: Claude Code はコマンドを
shを通じて実行するか、Windows ではcmd.exeを通じて実行し、ユーザーのホームディレクトリから実行します。絶対パスまたはPATH上のコマンドを指定してください。 - 出力: stdout に正確に 1 行、プラグインディレクトリの絶対パスを出力し、
timeout秒以内に終了コード 0 で終了します。 - ディレクトリの内容: コマンドが終了するまでに、ディレクトリはプラグイン全体を保持します。パスは実行ごとに異なる場合があります。
インストールまたは更新に失敗する出力
コマンドが 0 以外で終了する、timeout より長く実行される、または 1 つの絶対パス以外を出力する場合、インストールまたは更新は失敗します。また、出力されたディレクトリが以下のいずれかの場合も失敗します。
- プラグインコンテンツなし: 出力されたディレクトリの最上部にプラグインコンテンツがありません。例えば
.claude-plugin/ディレクトリやskills/、commands/、agents/、hooks/ディレクトリなどです。 - セッション自体のディレクトリ: 出力されたディレクトリは Claude Code が開始されたディレクトリ、またはその親の 1 つです。
- ネットワークパス: Windows では、出力されたパスは UNC パスです。
- コピーするには大きすぎます: コピーモードでは、ディレクトリが 256 MiB より大きいか、20,000 を超えるエントリを持っています。
コピーモードとリンクモード
mode は Claude Code が出力されたディレクトリをコピーするか、それを所定の位置で使用するかを決定します。
copy: Claude Code はディレクトリをプラグインキャッシュにコピーし、コピーされたファイルのハッシュからプラグインバージョンを導出します。ツールはコマンド終了後にディレクトリを削除または上書きできます。同じファイルを生成する再実行は最新と見なされます。link: Claude Code はプラグインのキャッシュエントリを出力されたディレクトリの各最上位エントリへのリンクで満たし、ファイルを所定の位置で読み込みます。何もコピーされず、ファイルの内容はハッシュされず、サイズ制限は適用されません。コピーするには大きすぎるディレクトリ(レンダリングされた SDK エクスポートなど)に使用します。
- ディレクトリを所定の位置に保つ: Claude Code はすべての起動時にリンクを通じてプラグインを読み込むため、出力されたディレクトリはプラグインがインストールされている限り、その場所に留まる必要があります。
- 新しいコンテンツを通知するために異なるパスを出力: バージョンはファイル内の内容ではなく、出力されたディレクトリの実際のパスとその最上位エントリから取得されます。
- ディレクトリ内に最上位シンボリックリンクを保つ: 最上位エントリが出力されたディレクトリの外を指すシンボリックリンクの場合、インストールは失敗します。
node_modulesを含める: Claude Code はリンクモードプラグインのNode.js パッケージ依存関係インストールをスキップするため、プラグインが必要とするパッケージを既に含むディレクトリを出力してください。- ディレクトリ内で開始されたセッション: 出力されたディレクトリまたはその下の任意の場所で開始されたセッションはプラグインを読み込みません。
- Windows ではない: Claude Code は Windows でリンクモードプラグインのインストールを拒否します。そこで
"mode": "copy"を宣言してください。
マーケットプレイスソース
マーケットプレイスソースは Claude Code がmarketplace.json をどこからフェッチするかを指定します。CLI はマーケットプレイスを追加するときにあなたのために 1 つを構築し、設定で自分で 1 つを記述します:
claude plugin marketplace add: Claude Code は渡した文字列からソースを構築します。extraKnownMarketplaces:sourceオブジェクトとして自分でソースを記述します。strictKnownMarketplacesおよびblockedMarketplaces: 管理者はこれら 2 つのポリシーリストでソースを記述します。strictKnownMarketplacesは許可リストで、blockedMarketplacesは拒否リストです。
url、git、および github は、プラグインソース とは異なるマーケットプレイスソースで異なる意味を持ちます:
テーブルはすべてのマーケットプレイスソースタイプをそのフィールド、それを生成する
claude plugin marketplace add 入力、および 3 つの設定キーのそれぞれでの動作とともにリストします。
タイプ別フィールド
テーブルはデフォルト、制約、またはそのタイプに固有の意味を持つ各マーケットプレイスソースフィールドをリストします。ポリシーリストでのみ有効なソース値
hostPattern、pathPattern、skills-dir、および repo の owner/* フォームは、2 つのポリシーリスト strictKnownMarketplaces および blockedMarketplaces でのみ有効です:
hostPatternおよびpathPattern: Claude Code がソースをフェッチする前にテストする正規表現。skills-dir: ソースではありません。strictKnownMarketplacesをすべて設定する場合、スキルディレクトリプラグイン は{"source": "skills-dir"}をそのリストに追加するまで読み込みを停止します。owner/*:githubrepo値として、正確にその GitHub 所有者の下のすべてのリポジトリに一致します。Claude Code v2.1.223 以降が必要です。
ref セマンティクス、およびレシピについては、組織のプラグインを管理する を参照してください。
設定のソースオブジェクト
extraKnownMarketplaces 値はマーケットプレイス名から source を持つオブジェクトへのマップです。このエントリは main ブランチの git リポジトリからマーケットプレイスを登録します:
strictKnownMarketplaces および blockedMarketplaces はソースオブジェクトの配列です。この許可リストは 1 つの GitHub 所有者と 1 つの内部ホストを許可します:
検証メッセージ
claude plugin validate <path> はマーケットプレイスのルートまたはマーケットプレイスファイル自体を受け取ります。エラーと警告を出力します。終了コードと --strict については、plugin validate を参照してください。
メッセージはプラグインエントリをそのインデックスで名前付けします。plugins.1.source または plugins[1].source として記述されます。
plugins[2] plugin.json → などのエントリインデックスと plugin.json → で始まるメッセージは、そのプラグイン自体のファイルに関するものです。claude plugin validate がエラーを報告する にはそれらのメッセージと修正方法が記載されています。
Claude Desktop フラグ名に言及する警告は、Claude Code が受け入れるが Claude Desktop が拒否するものです。Claude Desktop の名前ルールがより厳密であるためです。
表はマーケットプレイスレベルのメッセージを各メッセージが関連するフィールドにマップしています。
source の無効な入力
source の Invalid input は、オブジェクトがどのソースタイプにも一致しなかったことを意味します。これらの原因を確認してください:
./で始まらない相対パス。ただし"."または metadata.pluginRoot の下のベアネーム を除く..を含むnpmpackage- プラグインソース の 1 つではない
sourceタイプ githubなしのrepoなど、必須フィールドが欠落しているか間違った型の既知のタイプ
検証が検出しない失敗
claude plugin validate はすべての失敗を報告するわけではありません。ファイルパスまたは配列として記述されたエントリ hooks は検証に合格し、エラーはプラグインが読み込まれるときにのみ表示されます。エントリ内の Hooks で説明されているとおりです。source をフェッチするエラーも、検証時ではなくインストール後にのみ表示されます。
claude plugin list は読み込みに失敗したプラグインをそのエラーとともに表示し、プラグインのトラブルシューティング は読み込み時の文字列をカバーしています。
次のステップ
- マーケットプレイスの作成: これらのフィールドからマーケットプレイスを構築し、ローカルからインストール
- マーケットプレイスのホストと保守: ファイルを配置する場所とユーザーが変更を受け取る方法
- プラグインマニフェストリファレンス: エントリがオーバーライドできる
plugin.jsonフィールド - 組織のプラグインを管理する: これらのソース値を使用する許可リストと拒否リストのレシピ