⌂ Home ☷ Board

Hook Audit — 2026-05-12

Summary

Sources scanned

File Hooks registered
~/.claude/settings.json 7
~/PKA/.claude/settings.json 2
~/PKA/.claude/settings.local.json 0 (no hooks block)
~/.claude/settings-worker.json 7 (Luci-style, gated)
Plugin: context-mode (hooks/hooks.json) 11
Plugin: caveman (.claude-plugin/plugin.json) 2
Plugin: warp (hooks/hooks.json) 6
Plugin: hookify not enabled — not loaded

Duplicates

Event Matcher Command Files Recommendation
SessionStart "" bash ~/.claude/hooks/session-start.sh ~/.claude/settings.json line 28 AND ~/.claude/settings-worker.json line 38 Worker-settings duplicate is intentional (workers don't inherit). Keep both.
SessionEnd "" bash ~/.claude/hooks/session-end.sh ~/.claude/settings.json line 47 AND ~/.claude/settings-worker.json line 49 Same — intentional worker-inheritance gap. Keep.

True duplicate count: 0. Both pairs are by design (user-settings vs worker-settings isolation).

Redundant pairs

Hook A Hook B Why redundant Keep which
PreToolUse: Glob\|Grep in ~/.claude/settings.json line 67 ("graphify graph exists in cwd. Read graphify-out/GRAPH_REPORT.md before searching raw files; consider graphify query…") PreToolUse: Glob\|Grep in ~/PKA/.claude/settings.json line 39 ("graphify: Knowledge graph exists. Read graphify-out/GRAPH_REPORT.md for god nodes…") Both inject near-identical additionalContext about reading GRAPH_REPORT.md. Both fire in PKA cwd → context shown twice on every Glob/Grep. Keep PKA-level one (more specific wording). Delete global.

Unused scripts

Path Referenced anywhere? Recommendation
~/.claude/hooks/auto-skill-evolver.sh No (only self-references in own log line) Delete or re-wire. Comment says "Tier-A Hermes Reflective-Phase backport" — orphan.
~/.claude/hooks/graph-sync.sh No Delete.
~/.claude/hooks/luci_autopush.sh No (Luci runs its own copy in workspace) Delete from Mac ~/.claude/hooks/ — Luci-only script.
~/PKA/hooks/agent_event.py No Delete or wire into PreToolUse if needed.
~/PKA/hooks/hook.sh No Delete. 305-byte stub.

session-memory-extractor.py (PKA/hooks) — NOT unused. Called by session-start.sh.

Dead hooks

Event Command Issue
(none) All referenced binaries exist: rtk at /opt/homebrew/bin/rtk, context-mode at /opt/homebrew/bin/context-mode, jq, python3. Worker-only hooks pointing at /home/lucienne/workspace/scripts/* are file-gated ([ -f … ] && …) so they no-op silently on Mac — by design, not dead.

Recommended actions

  1. Delete redundant graphify hook~/.claude/settings.json lines 67-74 (the PreToolUse Glob\|Grep block). PKA project-level hook covers the same case with better wording.
  2. Delete unused scriptrm ~/.claude/hooks/auto-skill-evolver.sh
  3. Delete unused scriptrm ~/.claude/hooks/graph-sync.sh
  4. Delete unused scriptrm ~/.claude/hooks/luci_autopush.sh (Luci has its own copy at ~/workspace/)
  5. Delete unused scriptrm ~/PKA/hooks/agent_event.py
  6. Delete unused scriptrm ~/PKA/hooks/hook.sh

After deletions: 6 fewer hook scripts on disk, one redundant PreToolUse hook removed, zero functional change.