diff --git a/Change-V5.5.0%3A-Hook-Efficiency-Quick-Wins-%28Sprint-8-Implementation%29.md b/Change-V5.5.0%3A-Hook-Efficiency-Quick-Wins-%28Sprint-8-Implementation%29.md new file mode 100644 index 0000000..6f7d4c2 --- /dev/null +++ b/Change-V5.5.0%3A-Hook-Efficiency-Quick-Wins-%28Sprint-8-Implementation%29.md @@ -0,0 +1,106 @@ +# Change V5.5.0: Hook Efficiency Quick Wins + +**Sprint:** 8 +**Status:** In Progress +**Date:** 2026-01-29 +**Origin:** [RFC-Hook-Efficiency-Improvements](../RFC-Hook-Efficiency-Improvements.-) + +--- + +## Scope + +This sprint implements **Phase 1: Quick Wins** from the RFC, focusing on low-effort, high-impact optimizations. + +### In Scope + +| Change | Plugin | Impact | +|--------|--------|--------| +| Remove SessionStart hook | viz-platform | Eliminates pointless echo | +| Add early git check | git-flow | Skips 90%+ of Bash invocations | +| Add cooldown | project-hygiene | Reduces find operations | + +### Explicitly Out of Scope + +- SessionStart dispatcher consolidation (rejected - fights plugin architecture) +- Shared hook library (rejected - creates coupling) +- clarity-assist opt-in (deferred - requires user discussion) +- Path filtering for PostToolUse hooks (deferred - case-by-case) + +--- + +## Implementation Details + +### 1. Remove viz-platform SessionStart Hook + +**File:** `plugins/viz-platform/hooks/hooks.json` + +**Current:** +```json +{ + "hooks": [ + { + "event": "SessionStart", + "type": "command", + "command": "echo 'viz-platform plugin loaded'", + "timeout": 5000 + } + ] +} +``` + +**After:** +```json +{ + "hooks": [] +} +``` + +### 2. Add Early Git Check to git-flow Hooks + +**Problem:** `commit-msg-check.sh` spawns Python to parse JSON even for non-git commands. + +**Solution:** Add early check before JSON parsing: +```bash +# Quick check - exit immediately if not a git command +if ! echo "$INPUT" | grep -q '"command".*git'; then + exit 0 +fi +``` + +**Files:** +- `plugins/git-flow/hooks/branch-check.sh` +- `plugins/git-flow/hooks/commit-msg-check.sh` + +### 3. Add Cooldown to project-hygiene + +**Problem:** Runs `find` across entire project on every file edit. + +**Solution:** Add session-based cooldown (skip if ran recently): +```bash +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 # Skip if ran in last 60 seconds + fi +fi +date +%s > "$LAST_RUN_FILE" +``` + +--- + +## Verification + +After implementation: +1. Start new session - should be faster +2. Run non-git bash commands - no hook overhead +3. Edit files rapidly - cleanup shouldn't run on every edit +4. Verify functionality still works when triggered + +--- + +## References + +- RFC: [Hook Efficiency Improvements](../RFC-Hook-Efficiency-Improvements.-) +- Previous analysis identified 16 hooks across 12 plugins