fix: replace prompt-type Stop hook with command-type to prevent infinite loop

The Stop hook used "type": "prompt" with an empty matcher, which caused an
infinite loop: Claude responds to evaluate the condition → that triggers Stop
again → hook fires again → repeat forever.

Changes:
- Stop hook: changed to "type": "command" that checks git diff for actual
  wiki/ file changes before outputting anything. Silent exit = no loop.
- SessionStart: added matcher "startup|resume" so it only fires on relevant
  events, plus a command hook to cat hot.md directly.
- Added PostCompact hook to re-inject hot cache after context compaction.
- Added PostToolUse hook to auto-commit wiki changes on Write/Edit.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Daniel
2026-04-09 18:56:39 +03:00
parent 942e01622b
commit e54b419997

View File

@@ -42,8 +42,8 @@
"matcher": "", "matcher": "",
"hooks": [ "hooks": [
{ {
"type": "prompt", "type": "command",
"prompt": "If you read or modified any wiki pages during this session, update wiki/hot.md with a brief summary of what changed (under 500 words). Use the hot cache format: Last Updated, Key Recent Facts, Recent Changes, Active Threads. Keep it factual. Overwrite the file completely. It is a cache, not a journal." "command": "cd \"$PWD\" && [ -d wiki ] && [ -d .git ] && git diff --name-only HEAD 2>/dev/null | grep -q '^wiki/' && echo 'WIKI_CHANGED: Wiki pages were modified this session. Please update wiki/hot.md with a brief summary of what changed (under 500 words). Use the hot cache format: Last Updated, Key Recent Facts, Recent Changes, Active Threads. Keep it factual. Overwrite the file completely. It is a cache, not a journal.' || true"
} }
] ]
} }