Files
gh-tmc-it2-integrations-cla…/commands/claude-plugin-validate-all.md
2025-11-30 09:02:11 +08:00

3.7 KiB
Raw Blame History

name, description
name description
claude-plugin-validate-all Discover and validate all Claude Code plugin and marketplace manifests in the repository

Find all .claude-plugin directories in the repository and validate their manifests.

Discovery Logic:

  1. Find git repository root
  2. Search for all .claude-plugin directories
  3. For each directory found:
    • Check for plugin.json or marketplace.json
    • Validate the manifest
    • Report results
  4. Provide summary of validation results

Usage:

/claude-plugin-validate-all

Implementation:

# Function to validate all discovered manifests
validate_all_discovered() {
    local repo_root
    local total=0
    local passed=0
    local failed=0

    # Find git root
    repo_root=$(git rev-parse --show-toplevel 2>/dev/null || pwd)

    echo "Searching for manifests in: $repo_root"
    echo ""

    # Find all .claude-plugin directories
    while IFS= read -r plugin_dir; do
        local parent_dir=$(dirname "$plugin_dir")
        local manifest=""

        # Determine which manifest exists
        if [ -f "$plugin_dir/plugin.json" ]; then
            manifest="plugin"
            echo "=== Plugin: $parent_dir ==="
        elif [ -f "$plugin_dir/marketplace.json" ]; then
            manifest="marketplace"
            echo "=== Marketplace: $parent_dir ==="
        else
            echo "=== Skipping $plugin_dir (no manifest found) ==="
            continue
        fi

        total=$((total + 1))

        # Validate
        if claude plugin validate "$parent_dir" 2>&1; then
            passed=$((passed + 1))
        else
            failed=$((failed + 1))
        fi
        echo ""
    done < <(find "$repo_root" -type d -name ".claude-plugin" 2>/dev/null)

    # Summary
    echo "========================================"
    echo "Validation Summary:"
    echo "  Total manifests: $total"
    echo "  Passed: $passed ✔"
    echo "  Failed: $failed ✘"
    echo "========================================"

    # Return non-zero if any failed
    [ "$failed" -eq 0 ]
}

validate_all_discovered

Example Output:

Searching for manifests in: /path/to/repo

=== Plugin: integrations/claude-code/plugins/it2-core ===
Validating plugin manifest: /path/to/repo/integrations/claude-code/plugins/it2-core/.claude-plugin/plugin.json
✔ Validation passed

=== Plugin: integrations/claude-code/plugins/it2-claude-automation ===
Validating plugin manifest: /path/to/repo/integrations/claude-code/plugins/it2-claude-automation/.claude-plugin/plugin.json
✔ Validation passed

=== Marketplace: .claude-plugin ===
Validating marketplace manifest: /path/to/repo/.claude-plugin/marketplace.json
✔ Validation passed

========================================
Validation Summary:
  Total manifests: 3
  Passed: 3 ✔
  Failed: 0 ✘
========================================

With Failures:

Searching for manifests in: /path/to/repo

=== Plugin: plugins/broken-plugin ===
Validating plugin manifest: /path/to/repo/plugins/broken-plugin/.claude-plugin/plugin.json
✘ Found 1 error:
   agents: Invalid input
✘ Validation failed

========================================
Validation Summary:
  Total manifests: 1
  Passed: 0 ✔
  Failed: 1 ✘
========================================

Use Cases:

  • Pre-commit validation: Ensure all plugins are valid before committing
  • CI/CD checks: Validate entire marketplace in pipeline
  • Bulk updates: After structural changes, validate everything
  • Quality assurance: Regular checks during development

Notes:

  • Searches entire repository tree
  • Skips .claude-plugin directories without manifests
  • Provides detailed per-plugin validation output
  • Returns non-zero exit code if any validation fails
  • Can be used in scripts and automation