feat: add PostToolUse hook to auto-validate marketplace.json on edit

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>
This commit is contained in:
daymade
2026-04-06 08:59:45 +08:00
parent 1ff1499633
commit c120cd415e
2 changed files with 46 additions and 1 deletions

View File

@@ -0,0 +1,32 @@
#!/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