Initial commit
This commit is contained in:
140
commands/claude-plugin-validate-all.md
Normal file
140
commands/claude-plugin-validate-all.md
Normal 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
|
||||
Reference in New Issue
Block a user