Initial commit

This commit is contained in:
Zhongwei Li
2025-11-30 09:02:11 +08:00
commit 29a1b840c8
7 changed files with 840 additions and 0 deletions

View File

@@ -0,0 +1,140 @@
---
name: claude-plugin-validate-all
description: 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:**
```bash
/claude-plugin-validate-all
```
**Implementation:**
```bash
# 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