Skip to main content
marketplace.json はプラグインマーケットプレイスを定義するファイルです。マーケットプレイスの名前、所有者、およびプラグインごとに 1 つのエントリが含まれます。各エントリのプラグインソースは、Claude Code がそのプラグインをどこから取得するかを指定します。 マーケットプレイスソースは、Claude Code が marketplace.json ファイル自体をどこから取得するかを指定する別のオブジェクトです。設定で記述するか、claude plugin marketplace add を実行するときに Claude Code が構築します。 このリファレンスは、正確なフィールド名または値が必要なマーケットプレイス管理者、および extraKnownMarketplaces、strictKnownMarketplaces、および blockedMarketplaces で有効な source 値を知る必要がある管理者向けです。
これらのケースは他のページで説明されています:
記述または読み取る内容のセクションを見つけてください:

マーケットプレイスファイル

マーケットプレイスファイルをマーケットプレイスのディレクトリの .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 値を見ます。
インストール前に、Claude Code は 相対パスソース を持つエントリの 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 は先頭の ./ の後に任意の場所にバックスラッシュを含むエントリパスを拒否するため、パスはフォワードスラッシュで記述してください。
相対パスはマーケットプレイスのファイルを 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
Claude Code はあなたの npm クライアントでパッケージを取得します。パッケージのインストールスクリプト(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。コピーモードとリンクモードを参照してください。
ユーザーがコマンドを受け入れる方法については、シェルからインストールを参照してください。コマンドを変更した後にユーザーが何を見るかについては、command ソースのコマンドを変更を参照してください。管理者は 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 つを記述します: タイプ名 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/*: github repo 値として、正確にその 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 は、オブジェクトがどのソースタイプにも一致しなかったことを意味します。これらの原因を確認してください:

検証が検出しない失敗

claude plugin validate はすべての失敗を報告するわけではありません。ファイルパスまたは配列として記述されたエントリ hooks は検証に合格し、エラーはプラグインが読み込まれるときにのみ表示されます。エントリ内の Hooks で説明されているとおりです。source をフェッチするエラーも、検証時ではなくインストール後にのみ表示されます。 claude plugin list は読み込みに失敗したプラグインをそのエラーとともに表示し、プラグインのトラブルシューティング は読み込み時の文字列をカバーしています。

次のステップ