Discover and validate all Claude Code plugin and marketplace manifests in the repository
Recursively scans your repository for all `.claude-plugin` directories and validates their `plugin.json` or `marketplace.json` manifests. Use this before commits or in CI/CD to ensure all plugins meet quality standards.
/plugin marketplace add tmc/it2/plugin install claude-plugin-development@it2Find all .claude-plugin directories in the repository and validate their manifests.
Discovery Logic:
.claude-plugin directoriesplugin.json or marketplace.jsonUsage:
/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:
Notes:
.claude-plugin directories without manifests