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:
@@ -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"
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user