marketplace.json カタログを他のユーザーが /plugin marketplace add で追加でき、そのプラグインをインストールでき、プッシュ後も変更を受け取り続けられる場所に配置することを意味します。
このページはマーケットプレイスを運営する人向けです。
これらのケースは他のページで説明されています。
- カタログファイルをまだ作成していない場合: マーケットプレイスを作成するから始めてください
- 組織のマシン全体でマーケットプレイスを要求、制限、または事前インストールする必要がある管理者の場合: 組織のプラグインを管理するをお読みください
name を変更する前にプラグインの名前変更または削除をお読みください。
マーケットプレイスをホストする
マーケットプレイスは GitHub、別の git ホスト、ホストされたmarketplace.json URL、または共有ファイルシステム上のディレクトリでホストできます。ユーザーにホストの追加コマンドを送信し、マシンで必要なものを伝えてください:
GitHub または git URL マーケットプレイスのブランチまたはタグをピンするには、ユーザーに
#<ref> を追加するよう指示してください。例えば your-org/your-marketplace#stable のように。プラグインコマンドリファレンスは、コマンドが受け入れるすべての形式をリストしています。
追加に成功すると Successfully added marketplace: your-marketplace が出力されます。Claude Code はリポジトリ名ではなく、marketplace.json の name フィールドからその名前を取得します。
その後、ユーザーはプラグインをマーケットプレイスの name とエントリの name でインストールします。例えば /plugin install code-formatter@your-marketplace のように。
リポジトリ内のすべてのユーザーのためにマーケットプレイスを登録する
1 つのリポジトリで作業するすべてのユーザーとマーケットプレイスを共有するには、シェルからそこでclaude plugin marketplace add your-org/your-marketplace --scope project を 1 回実行し、書き込まれた .claude/settings.json をコミットしてください。Claude Code は、フォルダを信頼する各チームメイトのマーケットプレイスを登録します。
URL ホストマーケットプレイスで相対パスエントリを避ける
ユーザーがマーケットプレイスをベアなmarketplace.json URL として追加する場合、Claude Code はそのファイルのみをダウンロードします。plugins 配列内のエントリで、source が ./plugins/formatter のような相対パスの場合、インストール時にits marketplace entry path does not stay inside the marketplace directoryで失敗します。すべてのエントリに、github リポジトリや archive URL のような単独でフェッチできるソースを指定するか、マーケットプレイスを git リポジトリでホストして Claude Code がツリー全体をクローンするようにしてください。
ホストされたファイルのダウンロード制限内に留まる
ユーザーがマーケットプレイスをmarketplace.json URL として追加するか、archive ソースを持つエントリをインストールする場合、Claude Code はサーバーからファイルをダウンロードします。ダウンロードはこのテーブルの制限を超えると失敗するため、ファイルのサイズを調整し、サーバーを設定して制限内に留まるようにしてください。
リダイレクトが別のオリジンに送信するリクエストは、マーケットプレイスソースまたはプラグインエントリで設定したヘッダーを一切含みません。
アーカイブがダウンロードされた後、zip が以下の抽出制限を超える場合、インストールは失敗します:
- エントリ:100,000 ファイルおよびディレクトリ
- ファイルサイズ:圧縮されていない場合、任意の 1 つのファイルに対して 512 MiB
- 合計サイズ:圧縮されていない場合 1 GiB
- 圧縮率:圧縮されていないコンテンツが zip のサイズの 50 倍
共有ディレクトリでプラグインをその場で編集する
ユーザーが共有ディレクトリからマーケットプレイスを追加する場合、Claude Code は相対パスソースを持つプラグインをそのディレクトリから直接読み取り、コピーしません。ユーザーは次のセッション開始時または/reload-plugins 実行時に編集内容を確認します。更新ステップやバージョンバンプは不要です。
プラグインファイルを Git LFS から除外する
プラグインが必要とするファイルを Git LFS から除外してください。ユーザーが git リポジトリでホストされたマーケットプレイスを追加するか、それがリストする git ベースのプラグインをインストールする場合、Claude Code はそのマーケットプレイスまたはプラグインリポジトリをマシンにクローンします。クローンは LFS コンテンツをダウンロードしないため、LFS 追跡ファイルはポインタファイルとして到着します。シンボリックリンクでマーケットプレイス内のファイルを共有する
プラグインと同じマーケットプレイスの他の部分の間でファイルを共有するには、プラグインディレクトリ内にシンボリックリンクを作成してください。Claude Code がプラグインをキャッシュにコピーする場合、各シンボリックリンクをターゲットが解決される場所で処理します:- プラグイン自体のディレクトリ内:シンボリックリンクはキャッシュ内で相対シンボリックリンクとして保持されるため、実行時にコピーされたターゲットへの解決を続けます。
- 同じマーケットプレイス内の他の場所:シンボリックリンクは逆参照されます。ターゲットのコンテンツはキャッシュにコピーされます。これにより、メタプラグインの
skills/ディレクトリがマーケットプレイス内の他のプラグインで定義されたスキルにリンクできます。 - マーケットプレイス外:セキュリティ上の理由からシンボリックリンクはスキップされます。
mode が copy である command ソースからインストールされたプラグインの場合、Claude Code はプラグイン自体のディレクトリ内で解決するシンボリックリンクのみを保持し、他はすべてスキップします。
次のコマンドは、マーケットプレイスプラグイン内から兄弟プラグインで定義された共有スキルへのリンクを作成します。Windows では、昇格されたコマンドプロンプトから mklink /D を使用するか、開発者モードを有効にしてください:
組織設定を通じて配布する
Team または Enterprise プランでは、ユーザーが自分で追加するホストの代わりに、claude.ai のOrganization settings > Plugins & skillsを通じてマーケットプレイスを配布することもできます。Organization sync は、claude.ai 上の組織の GitHub または GitLab 接続を通じてリポジトリを読み取るため、ユーザーの git 認証情報は関係ありません。 Organization sync は、/plugin marketplace add よりもリポジトリについてより厳密です:
- マーケットプレイスリポジトリ:github.com と gitlab.com では、プライベートまたは内部である必要があります
- プラグインソース:organization sync は一部のソースタイプのみを受け入れます
- トップレベルの
bin/ディレクトリ:claude.ai はこれを持つプラグインを拒否し、マーケットプレイスの残りを同期します。エラーメッセージはPlugin contains a top-level bin/ directoryで始まります。実行可能ファイルをscripts/などの別のディレクトリに保持し、フック または MCP サーバー設定から${CLAUDE_PLUGIN_ROOT}/scripts/<name>として参照してください
bin/ エラーを一覧表示し、組織のプラグインを管理するは管理者ワークフローをカバーしています。
プライベートマーケットプレイスへのアクセスを許可する
ユーザーがマーケットプレイスを追加、インストール、または更新する場合、Claude Code はマシンでgit を実行し、対話的なプロンプトをオフにして、そのマシンが既に保持している認証情報に依存します。Claude Code は独自の git トークンを持たず、marketplace.json にはそのためのフィールドがありません。
追加コマンドの形式によって、クローンが SSH または HTTPS で実行されるかを選択します:
- GitHub
owner/repo:Claude Code はssh -T git@github.comをプローブし、プローブが成功する場合は SSH でクローンします。プローブが失敗するか、SSH クローン自体が失敗する場合は、HTTPS でクローンします。GitHub SSH キーを持たないマシンのユーザーは、CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1を設定してプローブをスキップし、HTTPS でクローンできます。 git@host:path.git:SSH。https://example.com/repo.git:HTTPS。
- SSH:キーはパスフレーズプロンプトなしで機能する必要があります。例えば
ssh-agentに読み込まれているため。ホストは既にknown_hostsにある必要があります。 - HTTPS:Claude Code はユーザーの git 認証情報ヘルパーを有効にしたままにしますが、プロンプトを禁止し、
GIT_ASKPASSで設定されたものなどの askpass プログラムも実行しません。ヘルパーが既に保存している認証情報は機能します。要求する必要があるものは失敗します。GitHub では、gh auth loginの後にgh auth setup-gitを実行すると、認証情報が保存されます。
git ホストアカウントを持たないユーザーにサービスを提供する
git ホストアカウントを持たないユーザーは、marketplace.json URL として、または共有ディレクトリからマーケットプレイスを追加できますが、エントリソースにもアクセスできるプラグインのみをインストールできます。プライベート github リポジトリを指すエントリは、Claude Code がマーケットプレイスをホストする git に使用するのと同じ非対話的な git でフェッチするため、インストール時に失敗します。
これらのエントリソースは git アカウントを必要としません:
archive:HTTPS でダウンロードされた zip。ユーザーはgitまたはアカウントを必要とせず、URL へのネットワークアクセスのみが必要です。Claude Code v2.1.224 以降が必要です。各アーカイブをsha256でピンして、Claude Code が変更されたダウンロードを拒否するようにしてください。ダウンロードで認証情報を送信するには、アーカイブダウンロードを認証するを参照してください。- パブリック git リポジトリ:Claude Code は、エントリが
https://URL を指定する場合、認証情報なしで HTTPS 経由でパブリックurlまたはgit-subdirソースをクローンします。githubソース、またはowner/repoとして記述されたgit-subdirソースの場合、GitHub SSH キーを持たないユーザーはCLAUDE_CODE_PLUGIN_PREFER_HTTPS=1を設定します。
claude plugin install がこの変数なしで成功する場合でも、手順には CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1 を含めたままにしてください。github ソースの場合、このコマンドは自動的に HTTPS にフォールバックし、SSH not configured, cloning via HTTPS を出力することがあります。セッション内の /plugin からのインストールとプラグインの更新はフォールバックしないため、この変数がないと、GitHub SSH キーを持たないユーザーでは失敗します。
1 つのネットワーク上のチームの場合、共有ファイルシステム上の directory マーケットプレイスも git アカウントなしで機能します。ユーザーはパスへの読み取りアクセスのみが必要です。
バックグラウンド自動更新が認証情報で行うこと
バックグラウンド自動更新は、セッション開始後のマーケットプレイスとインストール済みプラグインの Claude Code の無人更新です。ユーザーを最新の状態に保つで説明されているように、ユーザーまたは管理者がオンにするまで、マーケットプレイスではオフです。 プライベートマーケットプレイスでオンの場合、新しいコミットのバックグラウンドチェックはユーザーの設定された git 認証情報ヘルパーを使用し、プロンプトを表示しません。各種類のリモートとヘルパーは異なる結果を与えます:- SSH リモート:
ssh-agentに読み込まれたキーがチェックを認証します。 - 保存された認証情報を持つ HTTPS リモート:プロンプトなしで保存された認証情報を提供できるヘルパーがチェックを認証します。Git Credential Manager、macOS Keychain ヘルパー、および
git-credential-storeは、ホストの認証情報を保持すると、このように機能します。 - プロンプトが必要なヘルパーを持つ HTTPS リモート:ヘルパーはバックグラウンドで応答できません。更新は静かに失敗し、既存のチェックアウトが所定の位置に留まるため、ユーザーのプラグインは最後に同期された状態から機能し続けます。
- チェックアウトは最新です:Claude Code はそのままにします。
- チェックが新しいコミットを見つけるか、リモートに到達または認証できないため失敗する:Claude Code はマーケットプレイスを再度クローンし、既存のチェックアウトを新しいクローンに置き換えます。そのクローンが失敗する場合、既存のチェックアウトが所定の位置に留まります。再クローンは大規模なリポジトリでタイムアウトする可能性があります。
- 認証情報を保存する:最初に認証情報ヘルパーにサインインして、ホストの認証情報を保持するようにします。GitHub の場合、
gh auth loginを実行してからgh auth setup-gitを実行します。 - 失敗時にチェックアウトを保持する:ユーザーが
CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1を設定する場合、バックグラウンドチェックがリモートに到達または認証できない場合、Claude Code は再クローンを試みずに既存のチェックアウトを保持します。プラグインは最後に同期された状態から機能し続けます。
GITHUB_TOKEN または別のプロバイダートークンを設定する場合、それだけではバックグラウンドチェックを認証しません。トークンは gh CLI のヘルパーなどの認証情報ヘルパーを通じて有効になり、GH_TOKEN と GITHUB_TOKEN を読み取ります。
会社全体にロールアウトする
プラグインを会社全体にロールアウトするには、マーケットプレイスの所有者、管理設定を制御する管理者、および Claude Code を使用する各ユーザーが関係します。管理者なしでロールアウトを実行できます。その場合、各ユーザーはマーケットプレイスを追加してプラグインをインストールします。
git ホストアカウントを持たないユーザーの場合、これらのセクションはそれぞれ 1 つの方法をカバーしています:
- git アカウントを必要としないエントリソース:git ホストアカウントを持たないユーザーにサービスを提供する
- 事前入力されたプラグインディレクトリ:コンテナと CI をシードする。これは git ホストアカウントを持たないユーザーにもサービスを提供します
- claude.ai 組織設定:組織設定を通じて配布する。ユーザーの git 認証情報は関係ありません
ユーザーを最新の状態に保つ
ユーザーへの変更は、マーケットプレイスでバックグラウンド自動更新がオンになると、またはユーザーがプラグイン自体を更新するときに到達します。どちらの場合も、ユーザーは計算されたバージョンが変更されたときにのみプラグインの新しいコピーを取得します。バージョンをリリースするで説明されています。自動更新をオンにする
バックグラウンド自動更新はデフォルトではマーケットプレイスではオフで、marketplace.json にはそれをオンにするフィールドがありません。ユーザーまたは管理者がオンにします:
- ユーザーにオンにするよう指示する:各ユーザーは
/pluginのMarketplacesに移動し、マーケットプレイスを選択して、Enable auto-updateを選択します。 - 管理者に設定するよう依頼する:管理者が管理設定でマーケットプレイスの
extraKnownMarketplacesエントリで"autoUpdate": trueを設定する場合、それらの設定を受け取るすべてのユーザーに対してオンです。更新ポリシーを設定するを参照してください。
/plugin marketplace update <name> を実行するか、シェルで claude plugin update <plugin>@<name> を実行して変更を受け取ります。
更新がユーザーに到達するときに何が表示されるかについては、自動更新が実行されるときを参照してください。
新しいバージョンをリリースする
ユーザーに新しいバージョンをリリースするには、プラグインのversion を変更してください。ユーザーは、プラグインの計算されたバージョンが持っているものと異なる場合にのみ新しいコピーを取得します。そのバージョンは plugin.json から最初に来て、次にマーケットプレイスエントリから来ます。バージョンと更新を参照してください。
ユーザーがローカルパスから追加したマーケットプレイスからその場で読み込むプラグインは version で制御されません。セッション開始時に現在のファイルを読み込みます。バージョン文字列が何を言おうとも。
その場での読み込みまたは command ソースからのインストール以外のすべてのインストールについて、各リリースで version を増やすか、省略してください:
- 各リリースで
versionをバンプする:ユーザーはキャッシュされたコピーに留まります。文字列が変更されるまで。"version": "1.0.0"を設定してコミットをプッシュしても変更しない場合、ユーザーはそれらを受け取りません。 versionを省略する:ユーザーはコミットを追跡します。plugin.jsonとマーケットプレイスエントリの両方からversionを除外してください。
plugin.json とマーケットプレイスエントリの両方で version を設定しないでください。そうする場合、Claude Code は警告なしに plugin.json 値を使用し、claude plugin validate は不一致を Entry declares version "<a>" but <path>/plugin.json says "<b>" として報告します。
ユーザーを 1 つのバージョンに保持する
1 つのマーケットプレイスは一度に各プラグインの 1 つのバージョンを提供するため、各エントリが指すものを選択することでユーザーをバージョンに保持します:- プラグインエントリの
refとsha:refはブランチまたはタグに名前を付け、shaはgithub、url、またはgit-subdirソースのコミットに名前を付けます。プラグインソースを参照してください。 - 追加コマンドの
#<ref>:your-org/your-marketplace#stableを追加するユーザーはカタログのそのブランチまたはタグを取得します。一度に 2 つのリリースラインの場合は、リリースチャネルを実行するを参照してください。 <plugin>--v<version>タグ:依存関係のバージョン範囲はこれらのタグに対して解決されます。他のプラグインが依存するプラグインをリリースするを参照してください。
コマンドソースのコマンドを変更する
command ソースの command を変更するか、その mode を切り替える場合、各ユーザーは Claude Code がそれを実行する前に新しいコマンドを受け入れる必要があります。Claude Code は、ユーザーがプラグインをインストールまたは最後に更新したときに受け入れた正確なコマンドのみを実行します。
ユーザーのマーケットプレイスのコピーが変更を取得した後、そのユーザーは以下を見ます:
- バックグラウンド実行なし:コマンドのセッションごとの実行はそのユーザーに対して停止するため、ツールの新しい出力はそれらに到達しません。
/pluginエラータブのエントリ:エントリは新しいコマンドと実行するclaude plugin updateコマンドを表示します。
claude plugin update コマンドをターミナルで実行するよう指示してください。Claude Code は新しいコマンドを表示し、それを受け入れるよう求めます。
リリースチャネルを実行する
安定版と早期アクセストラックを提供するには、エントリが同じプラグインの異なる ref を指す 2 つのマーケットプレイスをホストし、各ユーザーが必要なものを追加できるようにしてください。Claude Code にはリリースチャネルの概念がなく、1 つのマーケットプレイスは一度に各プラグインの 1 つのバージョンを提供します。 2 つのmarketplace.json ファイルに異なる name 値を指定してください。Claude Code はマーケットプレイスを name で識別するため、ユーザーは一度に同じ名前の 2 つのマーケットプレイスを登録できません。
これら 2 つのカタログでは、stable-tools を追加するユーザーは stable ブランチから code-formatter をインストールし、latest-tools を追加するユーザーは latest からインストールします:
plugin.json バージョンを指定するか、version を省略してコミット SHA がそれらを区別するようにしてください。更新はバージョンを比較することで検出されるため、バージョン変更なしで移動する ref はユーザーをキャッシュされたコピーに残します。
チャネルをユーザーが選択させるのではなくユーザーグループに割り当てるには、管理者が各グループに一致する extraKnownMarketplaces エントリを指定します。更新ポリシーを設定するで説明されています。
プラグインの名前変更または削除
プラグインのname はその識別子です。ユーザーは enabledPlugins と pluginConfigs 設定キーおよび /plugin install でそれを参照するため、変更するとすべての既存インストールが破損します。
ユーザーが /plugin で見るラベルを何も破損させずに変更するには、plugin.json で displayName を設定し、name を変更しないままにしてください。
名前変更マップでユーザーを移行する
name を変更する必要がある場合、marketplace.json にトップレベルの renames マップを追加して、Claude Code がPlugin "<name>" not found in marketplaceを報告する代わりに既存ユーザーを移行するようにしてください。plugins からエントリを削除する場合も同じことをしてください。
各前の名前を現在の名前にマップするか、プラグインが削除されたときは null にマップしてください。このマーケットプレイスは formatter を code-formatter に名前変更し、legacy-linter が削除されたことを記録します:
- 名前変更されたエントリ:プラグインは新しい名前で読み込まれます。
claude plugin listとプラグインの詳細は/pluginの下にRenamed to "code-formatter" in the "your-marketplace" marketplaceを 1 回表示し、Claude Code はユーザー、プロジェクト、ローカル設定スコープのenabledPluginsとpluginConfigsの古いキーを新しいキーに書き直します。 nullエントリ:古いキーはそれらのスコープから削除され、ユーザーはRemoved from the "your-marketplace" marketplaceを見ます。- 管理設定で有効:プラグインは新しい名前で読み込まれ続けますが、Claude Code は管理設定を書き直すことができないため、管理者がそこで
enabledPluginsを更新するまで通知が繰り返されます。
/plugin install code-formatter@your-marketplace を 1 回実行するまでPlugin "<name>" not cached at <path>を報告します。
renames を追加のみの履歴として扱ってください。すべてのユーザーが移行した後も古いエントリを保持してください。再度名前変更する場合、最初のエントリを編集するのではなく、2 番目のエントリを追加してください。Claude Code は最も古い名前からチェーンをたどるため。
シェルで、マップを編集した後に claude plugin validate . を実行してください。サイクルするか、null またはプラグイン内の名前以外の場所で終わるチェーンを拒否します。renames.<name>: chain does not resolve で。
削除されたプラグインをユーザーのマシンからアンインストールする
削除されたプラグインをユーザーのマシンから残すのではなくアンインストールするには、marketplace.json のトップレベルで "forceRemoveDeletedPlugins": true を設定してください。フィールドがない場合、削除されたプラグインはインストールされたままで、セッションが読み込むときに Plugin "<name>" not found in marketplace を報告します。それがある場合、Claude Code は各セッション開始時に以下を実行します:
- ユーザーがマーケットプレイスからインストールしたものをエントリと
renamesマップと比較し、リストされていないか名前変更されていないプラグインを削除されたものとして扱います。 - ユーザー、プロジェクト、ローカルスコープから各削除されたプラグインをアンインストールします。管理設定のみがインストールしたプラグインは所定の位置に留まります。
/pluginのFlagged見出しの下に各削除されたプラグインをリストします。ステータスはRemoved from marketplaceです。
アーカイブダウンロードを認証する
プライベートレジストリからのダウンロードなど、archive のダウンロードを認証するには、Claude Code がダウンロード時に送信する HTTP ヘッダーを設定します。headers は次のいずれかの場所で設定できます。
- マーケットプレイスの
urlソース:マーケットプレイスの登録元であるurlソースです。extraKnownMarketplacesのエントリなどが該当します。 - プラグインのエントリ:Claude Code v2.1.238 以降では、代わりにプラグインの
marketplace.jsonエントリ内で、sourceと並べて設定できます。
headers の代わりに headersHelper コマンドを設定します。Claude Code はこのコマンドを実行し、コマンドが出力した JSON オブジェクトをその場所のヘッダーとして送信します。Claude Code v2.1.238 以降が必要です。
マーケットプレイスリファレンスに、エントリのフィールドである headers と headersHelper の説明があります。
どちらの場所を選ぶかによって、どのダウンロードにヘッダーが付与されるか、また Claude Code がいつコマンドを実行するかが決まります。
両方の場所で同じ名前のヘッダーが設定されている場合、Claude Code はエントリ側の値を送信します。同じ場所の中では、コマンドが出力したヘッダーが、
headers に記載された同じ名前のヘッダーを上書きします。
プラグインのエントリに headersHelper を追加する
次のエントリでは、source と並べて headersHelper を設定しています。また "strict": false も設定しています。Claude Code では、headersHelper を設定する marketplace.json エントリにこの設定が必須です。
claude plugin install my-plugin@your-marketplace を実行します。Claude Code がコマンドとアーカイブ URL を表示し、受け入れると zip をダウンロードします。
headersHelper コマンドを作成する
headersHelper をマーケットプレイスの url ソースに設定する場合もプラグインのエントリに設定する場合も、コマンドは次の要件を満たすように作成します。
- コマンドのテキスト:印字可能な ASCII で 500 文字以内とし、4 つ以上連続するスペースを含めないでください。
- 出力:ヘッダー名と文字列値からなる JSON オブジェクトを 1 つ stdout に出力し、10 秒以内に終了コード 0 で終了してください。
- シェルと作業ディレクトリ:Claude Code はコマンドを
shで実行します(Windows ではcmd.exe)。作業ディレクトリは設定ディレクトリで、~/.claudeまたはCLAUDE_CONFIG_DIRです。相対パスはユーザーのプロジェクトではなくこのディレクトリを基準に解決されるため、絶対パスかPATH上のコマンドを指定してください。 - Claude Code が削除する変数:コマンドが
marketplace.jsonエントリ、またはプロジェクトの.claude/settings.jsonや.claude/settings.local.jsonで設定されている場合、Claude Code は、MCP のheadersHelperに適用するのと同じルールに従い、名前が認証情報らしく見えるすべての変数を環境から削除します。ANTHROPIC_API_KEYとMY_REGISTRY_TOKENはどちらも削除されるため、コマンドは認証情報をファイルや認証情報ストアから読み取るようにしてください。この削除は、ユーザー設定、--settingsファイル、または管理設定で設定されたコマンドには適用されません。 - Claude Code が設定する変数:
urlソースのコマンドにはCLAUDE_CODE_MARKETPLACE_URLとCLAUDE_CODE_MARKETPLACE_NAME、エントリのコマンドにはCLAUDE_CODE_PLUGIN_NAMEとCLAUDE_CODE_PLUGIN_ARCHIVE_URLが設定されます。ユーザーが URL でマーケットプレイスを追加した後の最初の取得では、その取得によって名前が得られるため、CLAUDE_CODE_MARKETPLACE_NAMEは設定されません。
Claude Code が headersHelper コマンドをスキップする場合や出力を破棄する場合
次のいずれかに該当する場合、headersHelper コマンドは実行されないか、headers またはコマンドの出力から得たヘッダーが破棄されます。
- コマンドが失敗した:コマンドが 0 以外の終了コードで終了した場合、10 秒を超えて実行された場合、または文字列値からなる JSON オブジェクト以外のものを出力した場合、そのコマンドを実行する目的だった取得やダウンロードは行われません。
- マーケットプレイスの URL が
https://で始まらない:そのurlソースのコマンドは実行されず、リクエストにはheadersフィールドに記載されたヘッダーのみが付与されます。 - リダイレクトでオリジンを離れた:ダウンロードがアーカイブ URL のオリジン外にリダイレクトされた場合、リダイレクト後のリクエストには、マーケットプレイスの
urlソースとプラグインのエントリのどちらのheadersの値もコマンドの出力も付与されません。 - エントリがルーティング用または識別用のヘッダーを設定している:Claude Code は、
Host、Cookie、X-Forwarded-*などのリクエストルーティング用やクライアント識別用の名前をエントリのheadersとコマンドの出力から破棄し、Authorizationなどの認証用の名前は保持します。すべてのmarketplace.jsonエントリがこの方法でフィルタリングされます。設定内のインラインプラグインエントリについては、extraKnownMarketplacesを参照してください。 - コマンドが
--add-dirディレクトリの設定で設定されている:urlソースでもインラインプラグインエントリでも、コマンドは無視され、そのファイルのheadersのみが送信されます。 - 管理設定がコマンドをブロックしている:
disableCommandPluginSourcesをtrueに設定するとheadersHelperコマンドがブロックされます。また、allowManagedHooksOnlyも、disableCommandPluginSourcesが明示的にfalseでない限りこれらをブロックします。どちらのブロック下でも、管理設定自体が宣言しているマーケットプレイスについては、Claude Code は引き続きコマンドを実行します。
ユーザーが headersHelper コマンドを受け入れる方法
ユーザーは、プラグイン 1 つだけを単独でインストールまたは更新するたびに、そのプラグインのエントリのコマンドを受け入れます。Claude Code はコマンドとアーカイブ URL を表示し、ユーザーが受け入れた後にのみコマンドを実行します。 ユーザーは、ターミナルの Claude Code セッション内、セッションを実行していないシェル、または VS Code 拡張機能でプラグインをインストールまたは更新できます。- ターミナルのセッション:
/plugin内のそのプラグイン自身のビューから行います。 - シェル:
claude plugin installまたはclaude plugin updateで行います。 - VS Code 拡張機能:拡張機能のバージョン 2.1.290 以降で、Manage plugins ダイアログから行います。
--yes を渡してコマンドを受け入れます。以前の --json 実行で表示されたコマンドだけを受け入れるには、その実行で報告された sha256 を指定して --accept-command を渡します。
Claude Code は、表示したコマンドを、表示したアーカイブ URL に対してのみ実行します。その間にエントリのコマンドまたはアーカイブ URL が変更された場合、Claude Code はインストールまたは更新を拒否します。クエリ文字列のみの変更は、VS Code 拡張機能の場合または --accept-command を使用した場合を除き、変更とはみなされません。
確認せずにコマンドを拒否するインストールと更新
単一プラグインのインストールまたは更新以外の操作では、Claude Code はエントリのコマンドを実行せず、そのアーカイブもダウンロードしません。プラグインはインストール済みのバージョンのまま、または未インストールのままとなり、ユーザーには次のいずれかの結果が表示されます。- 複数のプラグインを一度にインストールする場合、プラグインの提案からインストールする場合、または別のプラグインの依存関係としてインストールする場合:Claude Code はコマンドを持つプラグインを拒否し、ユーザーを
/plugin内のそのプラグイン自身のビューに誘導します。一括インストールの他のプラグインは引き続きインストールされます。拒否されたプラグインに依存するプラグインは、ユーザーが拒否されたプラグインを単独でインストールするまでインストールに失敗します。 - バックグラウンドでの自動更新、またはアーカイブが一度もダウンロードされていないプラグインのセッション開始時:Claude Code はそのプラグインを
/pluginの Errors タブに表示し、ユーザーが自分でインストールまたは更新する必要があることを知らせます。
マーケットプレイスの url ソースのコマンドが実行されるタイミング
マーケットプレイスの url ソースの headersHelper は、マーケットプレイスが公開するカタログではなく、extraKnownMarketplaces エントリなどの設定ファイルで宣言します。そのため、Claude Code はインストールや更新のたびにユーザーに受け入れを求めることはありません。代わりに、それを宣言している設定ファイルによって、Claude Code がいつ実行するかが決まります。
これらのファイル内のインラインプラグインエントリについては、Claude Code はそのファイル内のマーケットプレイスレベルのコマンドと同じフォルダの信頼または設定の承認を必要とし、さらにユーザーはインストールまたは更新のたびにエントリのコマンドを受け入れます。
他のプラグインに依存し、推奨する
エントリは他のプラグインへの依存関係を宣言できます。- バージョン範囲: 依存関係は semver 範囲を含むことができます。
- クロスマーケットプレイス依存関係: 別のマーケットプレイスからの依存関係は、お客様のマーケットプレイスが
allowCrossMarketplaceDependenciesOnにそのマーケットプレイスをリストしている場合にのみインストールされます。
<plugin>--v<version> git タグ規約がそれらに対して解決される方法、およびクロスマーケットプレイス信頼については、Plugin dependencies を参照してください。
Claude Code がプロジェクトに一致するときにプラグインを提案するようにするには、プロジェクトを識別するシグナルを含む relevance ブロックをエントリに追加します。ユーザーにこれらの提案が表示されるのは、管理者がお客様のマーケットプレイスを pluginSuggestionMarketplaces にリストしている場合のみです。シグナルと有効化ステップについては、Plugin relevance を参照してください。
マーケットプレイスができないことへの対応
マーケットプレイスの所有者が要求する一部の機能には、marketplace.json にフィールドがありません。以下は各機能に対する最も近いオプションです。
- ユーザーがインストールできるその他のプラグインを制限する: マーケットプレイスの許可リストは管理設定
strictKnownMarketplacesです。ユーザーがインストールできるものを制限する を参照してください。 - ユーザーが要求せずにプラグインをインストールまたは有効にする: エントリフィールドはプラグインをインストールしません。管理設定の
enabledPluginsはフリート全体に対してそれを実行します。プラグインを事前インストールして必須にする を参照してください。 - 異なるユーザーに異なるエントリを表示する: エントリには対象ユーザーフィールドがなく、マーケットプレイスを追加するすべてのユーザーがカタログ全体を表示します。異なる対象ユーザー向けに別々のマーケットプレイスをホストしてください。
- プラグインを非推奨としてマークする: 非推奨状態はありません。オプションはエントリを削除し、その名前を
renamesでnullにマップし、オプションでforceRemoveDeletedPluginsを設定することです。 - ユーザーの自動更新をオンにする: 各ユーザーは
/pluginの Marketplaces でオンにするか、管理者が管理設定でautoUpdateを設定します。自動更新をオンにする を参照してください。 - Git 認証情報を保持する: マーケットプレイスフィールドは Git トークンを保持しません。Git でホストされるマーケットプレイスまたはプラグインへのアクセスは、プライベートマーケットプレイスへのアクセスを許可する に従い、ユーザーの Git セットアップに従います。
archiveソースの場合、エントリは代わりにheadersまたはheadersHelperを設定できます。
次のステップ
- マーケットプレイスリファレンス:
marketplace.jsonフィールド、ソースタイプ、および検証メッセージ - 組織のプラグインを管理する:組織のマシン全体でマーケットプレイスを要求、制限、またはシードする
- プラグイン依存関係:プラグインが依存するプラグインがバージョンを解決できるようにリリースをタグ付けする
- プラグインのトラブルシューティング:ユーザーがマーケットプレイスから追加または更新するときに見るエラー