Skip to content

原文(日本語に翻訳)

claude plugin validate が source が "." であるローカルプラグインをスキップしてしまう問題と、最初のエラークラスが見つかった時点で検証を停止してしまう問題を修正

原文(英語)

Fixed claude plugin validate skipping local plugins whose source is "." and stopping after the first error class

概要

claude plugin validate コマンドには2つのバグがありました。1つは、マーケットプレイスのエントリで source"."(カレントディレクトリ)に設定されたローカルプラグインが検証時にスキップされてしまう問題、もう1つは複数の異なる種類のエラーが存在する場合に最初のエラークラスが見つかった段階で検証処理が停止し、それ以降のエラーが報告されない問題です。v2.1.196でこれらが修正され、ローカルプラグインも確実に検証され、存在するすべてのエラーが一度にまとめて報告されるようになりました。

基本的な使い方

bash
# カレントディレクトリのプラグインを検証
claude plugin validate .

# 指定したプラグインディレクトリを検証
claude plugin validate ./my-plugin

# マーケットプレイス全体を検証
claude plugin validate --marketplace ./marketplace

実践例

source が "." のローカルプラグインを検証する

マーケットプレイス定義でカレントディレクトリをそのままプラグインソースとして指定しているケースです。

json
// .claude-plugin/marketplace.json
{
  "plugins": [
    {
      "name": "my-local-plugin",
      "source": ".",
      "displayName": "My Local Plugin"
    }
  ]
}
bash
# 修正前: このプラグインは検証対象から漏れていた(スキップされていた)
claude plugin validate .

# 修正後: 正しく検証される
claude plugin validate .
 Plugin 'my-local-plugin' validated successfully

複数エラーがある場合の検証結果比較

bash
# 修正前の出力(最初のエラークラスのみ報告され、そこで停止)
 plugin.json: Required field missing: "name"
# → ここで検証が終了し、他の問題は報告されない

# 修正後の出力(すべてのエラーがまとめて報告される)
 Found 3 errors:
  - plugin.json: Required field missing: "name"
  - plugin.json: Invalid version format "1.0"
  - skills/my-skill/SKILL.md: Missing required frontmatter field "description"

CI/CDでのプラグイン公開前チェック

bash
#!/bin/bash
# プラグイン公開前にローカルですべて検証する
for plugin_dir in plugins/*/; do
  echo "Validating $plugin_dir..."
  claude plugin validate "$plugin_dir" || {
    echo "Validation failed for $plugin_dir"
    exit 1
  }
done

注意点

  • source"." にするのは、マーケットプレイスのリポジトリ自体がプラグイン本体を兼ねている場合によく使われる構成です。今回の修正でこの構成も正しく検証対象になります
  • 修正後はエラーが一度にまとめて表示されるため、これまで気づいていなかった追加のエラーが新たに表示されることがあります。アップグレード後に再検証することを推奨します
  • 1つ目のエラーを修正しただけでは検証が通らない場合があるため、出力されたエラー一覧をすべて確認してください

関連情報