1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

validate を通っても install で落ちる理由から設計する:品質レビュースキルをプラグインマーケットプレイスで配布・運用する

1
Posted at

チーム共通のレビュー観点を SKILL.md にまとめても、配布が「フォルダをコピーしてください」のままだと、更新のたびに全員へ配り直すことになります。Claude Code のプラグインマーケットプレイスを使うと、この配布と更新を 1 つのリポジトリで管理できます。本稿では、公式ドキュメント(2026-11-04 検証)の記述のうち逐語で確認できた範囲だけを使い、マーケットプレイスの構成、validate が検査する範囲と検査しない範囲、名前の扱い、source の種別、共有と撤去の挙動を整理します。

マーケットプレイスの構成と必須フィールド

プラグインマーケットプレイスとは、プラグインの一覧と各プラグインの取得元を書いた .claude-plugin/marketplace.json を持つディレクトリまたはリポジトリのことです [1]。リポジトリは private でもよく、掲載できるプラグインの数に制限はありません [1]。

配布経路は規模によって分かれます。少人数に単一プラグインを渡すだけなら、マーケットプレイスを作らずにプラグインのディレクトリか .zip を送る方法が案内されています [1]。全員向けに公開する場合は、Anthropic のディレクトリへ申請する別の経路になります [1]。

marketplace.json のトップレベルで必須なのは name・owner・plugins 配列で [1]、plugins の各エントリには name と source が必須です [1]。マーケットプレイスのルートは .claude-plugin/ を含むディレクトリで、相対 source はこのルートからのパスで書きます [1]。

validate が検査する範囲と、install まで表面化しない誤り

claude plugin validate が読むのは、マーケットプレイスディレクトリ内のファイルだけです [1]。報告対象には、トップレベルやエントリ内の未知フィールド(警告として)[1]と、相対パスで参照したプラグインそれぞれの plugin.json の問題が含まれます [1]。

逆に、validate では見つからない誤りがあります。存在しないディレクトリを指す相対 source について、docs には次のように書かれています。

claude plugin validate passes. claude plugin install fails with Source path does not exist

github などのリモート source の誤りも、validate ではなく install の時点で初めて表面化します [1]。docs は、新しいマーケットプレイスからの install 失敗の原因として、まず「誤ったディレクトリを起点に書いた相対パス」を挙げています [1]。

2 つの名前の役割

プラグインには、marketplace.json のエントリ名と、plugin.json の name(マニフェスト名)という 2 つの名前があります。エントリ名は、Claude Code が設定ファイルの enabledPlugins 配下に書き込むキーになります [1]。マニフェスト名は、そのプラグインのスキル名のプレフィックスで、claude plugin details に渡す名前でもあります [1]。プラグインのスキルは /<plugin>:<skill> の形で呼び出します [1]。

When the two names differ and someone installs by the manifest name, Claude Code reports

2 つの名前が異なる状態で、マニフェスト名を指定して install すると、Claude Code が問題を報告します。本稿では 2 つの名前を一致させる運用を推奨します(これは筆者の設計判断です)。

source の種別と git submodule

相対パスのほかに、次のような取得元の種別が docs に記載されています。git-subdir は、プラグインが monorepo などの別リポジトリのサブディレクトリにある場合に使います [1]。archive は HTTPS でダウンロードする zip ファイル [1]、command はプラグインをインストールするマシン上でコマンドを実行して生成したディレクトリを取得元にします [1]。git ベースの source を ref や sha に固定する方法は、Marketplace reference の Plugin sources に載っています [1]。

git submodule については、プラグインのファイルを含む submodule だけを取得する挙動が入っており、Claude Code v2.1.295 以降が必要です(2026-11-04 時点)[1]。ただし、マーケットプレイスのルートに置いたプラグインのファイルが、いずれかの submodule 内のパスを参照した時点で、リポジトリ内のすべての submodule が取得されます [1]。

It can't see a path that a script builds while it runs.

スクリプトが実行時に組み立てるパスは Claude Code から見えません。submodule 内のファイルを実行するなら、hook や server の設定にパスを書いておく必要があります。

共有・更新・撤去

ローカルディレクトリを相対パス source で追加した場合、編集内容は次のセッション開始時、またはセッション内で /reload-plugins を実行した時点で反映されます [1]。一方、ホストされたマーケットプレイスからインストールしたユーザーは、プラグインキャッシュ内のコピーを使います [1]。

ユーザーは同じ名前のマーケットプレイスを 2 つ持てないため、名前は push する前に決めておく必要があります [1]。公式の Anthropic マーケットプレイス用に予約された名前もあります [1]。チームメンバーは、GitHub のリポジトリなら claude plugin marketplace add <owner>/<repo> で、それ以外ならリポジトリ URL を渡して同じコマンドで登録します [1]。成功すると、docs の例では次のメッセージが出ます。

Successfully added marketplace: my-marketplace (declared in user settings)

共有する前に、自分のマシンでマーケットプレイスからインストールして確認するよう docs は求めています [1]。claude plugin marketplace remove はマーケットプレイスを削除し、そこから入れたプラグインもアンインストールします [1]。

References

[1] https://code.claude.com/docs/en/plugins/create-marketplace

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?