diff --git a/plugins/git-flow/hooks/branch-check.sh b/plugins/git-flow/hooks/branch-check.sh index 72527db..ded10ba 100755 --- a/plugins/git-flow/hooks/branch-check.sh +++ b/plugins/git-flow/hooks/branch-check.sh @@ -6,6 +6,11 @@ # Read tool input from stdin (JSON format) INPUT=$(cat) +# Quick check - exit immediately if not a git command +if ! echo "$INPUT" | grep -q '"command".*git'; then + exit 0 +fi + # Extract command from JSON input # The Bash tool sends {"command": "..."} format COMMAND=$(echo "$INPUT" | grep -o '"command"[[:space:]]*:[[:space:]]*"[^"]*"' | head -1 | sed 's/.*"command"[[:space:]]*:[[:space:]]*"\([^"]*\)".*/\1/') diff --git a/plugins/git-flow/hooks/commit-msg-check.sh b/plugins/git-flow/hooks/commit-msg-check.sh index 89eef46..78ee4ee 100755 --- a/plugins/git-flow/hooks/commit-msg-check.sh +++ b/plugins/git-flow/hooks/commit-msg-check.sh @@ -6,6 +6,12 @@ # Read tool input from stdin INPUT=$(cat) +# Quick check - exit immediately if not a git commit command +# This avoids spawning Python for 99% of Bash commands +if ! echo "$INPUT" | grep -q '"command".*git.*commit'; then + exit 0 +fi + # Use Python to properly parse JSON and extract the command COMMAND=$(echo "$INPUT" | python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('command',''))" 2>/dev/null) diff --git a/plugins/project-hygiene/hooks/cleanup.sh b/plugins/project-hygiene/hooks/cleanup.sh index 2aa5763..c75abac 100755 --- a/plugins/project-hygiene/hooks/cleanup.sh +++ b/plugins/project-hygiene/hooks/cleanup.sh @@ -10,6 +10,17 @@ PREFIX="[project-hygiene]" # Read tool input from stdin (discard - we don't need it for cleanup) cat > /dev/null +# Cooldown - skip if ran in last 60 seconds +# Using $PPID ties cooldown to the Claude session +LAST_RUN_FILE="/tmp/project-hygiene-${PPID}-last-run" +if [[ -f "$LAST_RUN_FILE" ]]; then + LAST_RUN=$(cat "$LAST_RUN_FILE") + NOW=$(date +%s) + if (( NOW - LAST_RUN < 60 )); then + exit 0 + fi +fi + PROJECT_ROOT="${PROJECT_ROOT:-.}" DELETED_COUNT=0 @@ -25,4 +36,7 @@ if [[ $DELETED_COUNT -gt 0 ]]; then echo "$PREFIX Cleaned $DELETED_COUNT temp files" fi +# Record this run for cooldown +date +%s > "$LAST_RUN_FILE" + exit 0 diff --git a/plugins/viz-platform/hooks/hooks.json b/plugins/viz-platform/hooks/hooks.json index 6e590e3..b9820d5 100644 --- a/plugins/viz-platform/hooks/hooks.json +++ b/plugins/viz-platform/hooks/hooks.json @@ -1,10 +1,3 @@ { - "hooks": [ - { - "event": "SessionStart", - "type": "command", - "command": "echo 'viz-platform plugin loaded'", - "timeout": 5000 - } - ] + "hooks": [] }