mcpField
P
plugin-validator

plugin-validator

github.com/terrylicaテスト・品質2121 回インストール1 日前に更新
リポジトリ

plugin-validator について

plugin-validator は、Claude Code marketplace プラグインをリリース前に検証するスキルです。構造やマニフェスト、スキルファイルの形式を確認し、フックのサイレント障害も監査します。

主な機能

  1. 01プラグインディレクトリ構造の確認
  2. 02plugin.json の項目と構文の検証
  3. 03スキルファイル形式と frontmatter の確認
  4. 04フックのサイレント障害の監査
  5. 05修正案の提示

活用シーン

  1. 01リリース前の構造検証
  2. 02報告されないフックエラーの調査
  3. 03必須マニフェスト項目と JSON 構文の確認
  4. 04スキルファイル形式の点検

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/terrylica/cc-skills --skill plugin-validator

インストール後、Claude Code で/plugin-validatorを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
evolution-log.md
silent-failure-patterns.md
scripts/
audit_silent_failures.py

詳細

プラグインバリデーター

Claude Code マーケットプレイスプラグインの包括的な検証です。

自己進化するスキル:このスキルは使用を通じて改善されます。手順が誤っている場合、パラメーターにずれが生じた場合、または回避策が必要だった場合は、先延ばしにせず、すぐにこのファイルを修正してください。実際に再現可能な問題がある場合にのみ更新してください。

このスキルを使う場面

以下の場合に、このスキルを使用してください。

  • リリース前にプラグインの構造を検証する
  • フックでのサイレントな失敗を監査する
  • plugin.json の構文と必須フィールドを確認する
  • スキルファイルのフォーマットとフロントマターを検証する

クイックスタート

# Validate a specific plugin
uv run plugins/plugin-dev/skills/plugin-validator/scripts/audit_silent_failures.py plugins/my-plugin/

# Validate with fix suggestions
uv run plugins/plugin-dev/skills/plugin-validator/scripts/audit_silent_failures.py plugins/my-plugin/ --fix

検証フェーズ

フェーズ 1:構造の検証

プラグインのディレクトリ構造を確認します。

/usr/bin/env bash << 'VALIDATE_EOF'
PLUGIN_PATH="${1:-.}"

# Check plugin.json exists
if [[ ! -f "$PLUGIN_PATH/plugin.json" ]]; then
    echo "ERROR: Missing plugin.json" >&2
    exit 1
fi

# Validate JSON syntax
if ! jq empty "$PLUGIN_PATH/plugin.json" 2>/dev/null; then
    echo "ERROR: Invalid JSON in plugin.json" >&2
    exit 1
fi

# Check required fields
REQUIRED_FIELDS=("name" "version" "description")
for field in "${REQUIRED_FIELDS[@]}"; do
    if ! jq -e ".$field" "$PLUGIN_PATH/plugin.json" >/dev/null 2>&1; then
        echo "ERROR: Missing required field: $field" >&2
        exit 1
    fi
done

echo "Structure validation passed"
VALIDATE_EOF
フェーズ 2:サイレントな失敗の監査

重要なルール:すべてのフックのエントリーポイントは、失敗時に stderr に出力しなければなりません。

監査スクリプトを実行します。

uv run plugins/plugin-dev/skills/plugin-validator/scripts/audit_silent_failures.py plugins/my-plugin/
チェック内容
チェック対象ファイルパターン
Shellcheckhooks/*.shSC2155、SC2086 など
サイレントな bashhooks/*.shif ! を使わない mkdir|cp|mv|rm|jq
サイレントな Pythonhooks/*.pystderr 出力を伴わない except.*: pass
フックのエントリーポイントとユーティリティスクリプト
場所種類要件
plugins/*/hooks/*.shエントリーポイントstderr に出力しなければならない
plugins/*/hooks/*.pyエントリーポイントstderr に出力しなければならない
plugins/*/scripts/*.shユーティリティフォールバック動作で問題ありません
plugins/*/scripts/*.pyユーティリティフォールバック動作で問題ありません
フェーズ 3:修正パターン
Bash:サイレントな mkdir
# BAD - silent failure
mkdir -p "$DIR"

# GOOD - emits to stderr
if ! mkdir -p "$DIR" 2>&1; then
    echo "[plugin] Failed to create directory: $DIR" >&2
fi
Python:サイレントな except pass
# BAD - silent failure
except (json.JSONDecodeError, OSError):
    pass

# GOOD - emits to stderr
except (json.JSONDecodeError, OSError) as e:
    print(f"[plugin] Warning: {e}", file=sys.stderr)

/plugin-dev:create との連携

このスキルは、plugin-add ワークフローのフェーズ 3 で呼び出されます。

### 3.4 Plugin Validation

**MANDATORY**: Run plugin-validator before registration.

Task with subagent_type="plugin-dev:plugin-validator"
prompt: "Validate the plugin at plugins/$PLUGIN_NAME/"

終了コード

コード意味
0すべての検証に合格しました
1違反が見つかりました(出力を参照してください)
2エラー(無効なパス、ファイルの不足)

参考資料

トラブルシューティング

問題原因解決策
plugin.json が見つからないマニフェストファイルがない必須フィールドを含む plugin.json を作成します
JSON 構文が無効plugin.json の形式が正しくないjq empty plugin.json を実行して構文エラーを見つけます
必須フィールドがないマニフェストが不完全plugin.json に name、version、description を追加します
Shellcheck エラーBash スクリプトの問題shellcheck hooks/*.sh を実行して詳細を確認します
bash でのサイレントな失敗エラー処理がないmkdir/cp/mv/rm コマンドに if ! チェックを追加します
Python でのサイレントな except:passstderr 出力がないpass の前に print(..., file=sys.stderr) を追加します
終了コード 2無効なパスまたはファイルの不足プラグインのパスが存在し、正しい構造になっていることを確認します
--fix の後も違反がある修正の提案が適用されていない出力された修正案を手動で適用します

実行後の振り返り

このスキルが完了したら、タスクを終了する前に振り返ります。

  1. 現在地を確認します。 — 編集する前に、このスキルの正式なパスを特定します(スキル名で Glob を実行します)。修正対象はこのファイルと、その兄弟にあたる references/ のみです。他のドキュメントは修正しません。
  2. 何が失敗しましたか? — 原因となった指示を修正します。再発する可能性がある場合は、アンチパターンとして追加します。
  3. 予想以上にうまくいったことは何ですか? — 推奨プラクティスとして取り入れます。その理由も記録します。
  4. 何が現状とずれていましたか? — 現状と合わなくなったスクリプト、リファレンス、外部依存関係があれば、今すぐ修正します。
  5. 記録します。 — 変更のたびに、きっかけ、修正内容、根拠を含む進化ログのエントリーを残します。

先送りしないでください。次回の実行では、ここに残した内容が引き継がれます。



コメント