Page:
Change-V5.5.0:-Hook-Efficiency-Quick-Wins-(Sprint-8-Implementation)
Pages
Change V5.4.0: Multi-Model Agent Support Proposal
Change V5.4.0: Multi-Model Support (Sprint 7 Implementation)
Change V04.1.0: Proposal (Implementation 1)
Change V04.1.0: Proposal
Change-V5.2.0:-Plugin-Enhancements-(Sprint-4-Commands)
Change-V5.2.0:-Plugin-Enhancements-(Sprint-5-Documentation)
Change-V5.2.0:-Plugin-Enhancements-Proposal.-
Change-V5.5.0:-Hook-Efficiency-Quick-Wins-(Sprint-8-Implementation)
Change-V5.6.0:-Domain-Advisory-Pattern-(Sprint-9-Implementation).-
Change V5.6.0: Domain Advisory Pattern Proposal
Change-V5.7.0:-Data-Platform-Domain-Advisory-(Sprint-10-Implementation)
RFC-Hook-Efficiency-Improvements
RFC-Perf-Sentinel-Plugin
Sprint-1-viz-platform-Implementation-Plan
branding/header-templates
branding/plugin-registry
branding/progress-templates
branding/visual-spec
lessons/patterns/agent-model-field-not-supported-by-claude-code
lessons/patterns/command-frontmatter-missing-name-field-causes-silent-load-failure
lessons/patterns/hook-message-wording-affects-claude-continuation-behavior
lessons/patterns/mcp-venv-symlinks-lost-on-marketplace-update---5-hour-debug-loop
lessons/patterns/mcp_servers-field-in-pluginjson---another-failed-debug-theory
lessons/patterns/plugin-hooks-must-be-in-separate-file-not-inline
lessons/patterns/plugin-load-errors---missing-name-field-in-command-frontmatter
lessons/patterns/plugin-load-failure---check-command-frontmatter-first
lessons/patterns/plugin-manifest-validation---hooks-and-agents-format-requirements
lessons/patterns/plugin-version-mismatch-causes-silent-load-failure
lessons/patterns/reset-pandas-index-after-filtering-to-prevent-column-pollution
lessons/patterns/session-2026-02-02---mcp-server-venv-package-installation-failures
lessons/patterns/setup-wizard-url-format-mismatch
lessons/patterns/sprint-4---new-commands-not-discoverable-until-session-restart
lessons/patterns/startup-hooks-must-check-venv-cache-path-first
lessons/patterns/sync-entire-plugin-directory-not-individual-files
lessons/patterns/use-fixes-n-keyword-for-automatic-issue-closing-in-prs
lessons/sprints/cache-clearing-breaks-mcp-tools-mid-session
lessons/sprints/sprint-1---viz-platform-plugin-implementation
lessons/sprints/sprint-10---domain-advisory-pattern-replication-success
lessons/sprints/sprint-2---contract-validator-plugin-implementation
lessons/sprints/sprint-3---agent-runaway-detection-and-timeout-handling
lessons/sprints/sprint-3---background-agent-permissions-must-be-pre-granted
lessons/sprints/sprint-3---mcp-server-branch-detection-bug-runs-from-installed-dir
lessons/sprints/sprint-4---plugin-commands-implementation
lessons/sprints/sprint-6---visual-branding-and-documentation-maintenance
lessons/sprints/sprint-8---parallel-hook-optimization-success
lessons/sprints/v400-release---wiki-workflow-and-versioning-patterns
lessons/sprints/versioning-workflow---use-unreleased-and-release-script
lessons-learned/sprints/hook-efficiency-rfc
unnamed
Clone
1
Change-V5.5.0:-Hook-Efficiency-Quick-Wins-(Sprint-8-Implementation)
Leo Miranda edited this page 2026-01-30 18:21:50 +00:00
Change V5.5.0: Hook Efficiency Quick Wins
Sprint: 8
Status: ✅ Implemented
Date: 2026-01-30
Origin: 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
Before:
{
"hooks": [
{
"event": "SessionStart",
"type": "command",
"command": "echo 'viz-platform plugin loaded'",
"timeout": 5000
}
]
}
After:
{
"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:
# 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.shplugins/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):
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
✅ All implemented and tested:
- New session starts without viz-platform echo
- Non-git bash commands skip hook processing
- Git branch validation still works
- Git commit message validation still works
- Cleanup runs once per minute max, not every edit
Results
| Issue | Status | PR |
|---|---|---|
| #321 - Remove viz-platform hook | ✅ Closed | #334 |
| #322 - Early git check (branch) | ✅ Closed | #334 |
| #323 - Early git check (commit-msg) | ✅ Closed | #334 |
| #324 - Cooldown (cleanup) | ✅ Closed | #334 |
Lessons Learned
References
- RFC: Hook Efficiency Improvements
- Previous analysis identified 16 hooks across 12 plugins