When marketplace-dev is installed, any Write/Edit to a marketplace.json automatically runs `claude plugin validate` and reports pass/fail. Users get instant feedback without remembering to validate manually. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
33 lines
1014 B
Bash
Executable File
33 lines
1014 B
Bash
Executable File
#!/usr/bin/env bash
|
|
# PostToolUse hook: auto-validate marketplace.json after Write/Edit
|
|
# Checks if the edited file is marketplace.json, runs validation if so.
|
|
|
|
set -euo pipefail
|
|
|
|
# Read tool use details from stdin
|
|
INPUT=$(cat)
|
|
|
|
# Check if the edited file is marketplace.json
|
|
FILE_PATH=$(echo "$INPUT" | python3 -c "
|
|
import json, sys
|
|
try:
|
|
data = json.load(sys.stdin)
|
|
path = data.get('tool_input', {}).get('file_path', '')
|
|
print(path)
|
|
except:
|
|
print('')
|
|
" 2>/dev/null)
|
|
|
|
if [[ "$FILE_PATH" == *"marketplace.json"* ]]; then
|
|
MARKETPLACE_DIR=$(dirname "$(dirname "$FILE_PATH")")
|
|
if [[ -f "$FILE_PATH" ]]; then
|
|
RESULT=$(cd "$MARKETPLACE_DIR" && claude plugin validate . 2>&1) || true
|
|
if echo "$RESULT" | grep -q "Validation passed"; then
|
|
echo '{"result": "marketplace.json validated ✔"}'
|
|
else
|
|
ERRORS=$(echo "$RESULT" | grep -v "^$" | head -5)
|
|
echo "{\"result\": \"marketplace.json validation FAILED:\\n$ERRORS\"}"
|
|
fi
|
|
fi
|
|
fi
|