自作プラグインをマーケットプレイス経由で配布する際、設定ファイル marketplace.json のパス記述を誤ると、検証は通っても利用者のインストール時に初めて失敗が露呈することがあります。本稿は、公式ドキュメント(2026-10-24 時点)で検証済みの事実のみを用い、claude plugin validate が検出する範囲と、検証をすり抜ける誤りを整理します。
claude plugin validate の検出範囲
claude plugin validate は、マーケットプレイスディレクトリ内のファイルだけを読み込みます [1]。検出対象は、JSON 構文エラー、必須フィールド(例: owner)の欠落、命名規則違反、相対パスにおける .. の使用、未知フィールドです [1]。
相対パスで参照される各プラグインの plugin.json に問題がある場合、plugins[N] plugin.json → <field>: <message> の形式で報告されます [1]。
一方、トップレベルまたはプラグインエントリ内の未知フィールドは、エラーではなく警告として報告されます [1]。
マーケットプレイスルートと相対パスの基点
マーケットプレイスルートは .claude-plugin/ ディレクトリを含むディレクトリです [1]。source に書く相対パスは、このルートを基点として記述します。パスは .claude-plugin/ の内側から始まるわけではないため、.. でルートの外に出てはいけません [1]。
.. を含むパス
source に .. を含む相対パスを書くと、claude plugin validate はそのエントリを invalid と報告します。メッセージは Path contains "..": で始まります [1]。
存在しないディレクトリへのパス
存在しないディレクトリを指す相対パスは、claude plugin validate を通過します。しかし claude plugin install 実行時に Source path does not exist: <path> というエラーで失敗します [1]。検証成功がインストール成功を保証しないのは、この点に起因します。
エントリ名と manifest 名の不一致
marketplace.json の plugins 配列内の entry name と、plugin.json に記載された manifest name が異なる場合でも検証は通ります。しかし利用者が manifest name を指定して claude plugin install を実行すると、Plugin "<manifest-name>" not found in marketplace "<marketplace>" が報告されます [1]。
予約されたマーケットプレイス名
Anthropic の公式マーケットプレイス名(例: claude-plugins-official)はバリデーションを通過します。しかし claude plugin marketplace add 実行時に Claude Code が拒否し、The name '<name>' is reserved for official Anthropic marketplaces で始まるメッセージが表示されます [1]。
リモートソースはインストール時にフェッチされる
github・git-subdir・その他リモートソースのプラグインは、インストール時に初めてフェッチされます。したがって、リポジトリやパスの誤りはインストール時に発覚します [1]。
ローカル編集の反映
ローカルディレクトリの相対パスソースを用いた場合、プラグインファイルへの編集は、セッション再起動または /reload-plugins の実行後に反映されます。このときプラグインのバージョン番号は変化しません [1]。
検証成功時の出力
マーケットプレイスディレクトリに対して claude plugin validate ./my-marketplace を実行し、正しく記述されていれば、出力の最終行は ✔ Validation passed となります [1]。