{ "hooks": { "SessionStart": [ { "matcher": "startup|resume", "hooks": [ { "type": "command", "command": "[ -f wiki/hot.md ] && cat wiki/hot.md || true" }, { "type": "command", "command": "[ -x scripts/wiki-lock.sh ] && bash scripts/wiki-lock.sh clear-stale --max-age 3600 >/dev/null 2>&1 || true" }, { "type": "prompt", "prompt": "If a vault is configured for this session (check CLAUDE.md for VAULT_PATH or a wiki/ folder in the current directory), silently read wiki/hot.md to restore recent context. If wiki/hot.md does not exist, do nothing. This is a non-vault session. Do not announce this. Do not report what you read. Just have the context available." } ] } ], "PostCompact": [ { "matcher": "", "hooks": [ { "type": "prompt", "prompt": "Hook-injected context does not survive context compaction. If wiki/hot.md exists in the current directory, silently re-read it now to restore the hot cache. Do not announce this." } ] } ], "PostToolUse": [ { "matcher": "Write|Edit", "hooks": [ { "type": "command", "command": "[ -d .git ] || exit 0; [ -f .vault-meta/auto-commit.disabled ] && exit 0; if [ -x scripts/wiki-lock.sh ]; then LOCK_LIST=$(bash scripts/wiki-lock.sh list 2>/dev/null); LOCK_RC=$?; if [ \"$LOCK_RC\" != \"0\" ]; then mkdir -p .vault-meta 2>/dev/null; printf '%s wiki-lock list failed rc=%s; deferred auto-commit\\n' \"$(date '+%Y-%m-%dT%H:%M:%SZ')\" \"$LOCK_RC\" >> .vault-meta/hook.log 2>/dev/null; exit 0; fi; if [ -n \"$LOCK_LIST\" ]; then exit 0; fi; fi; git add -- wiki/ .raw/ .vault-meta/ 2>/dev/null && (git diff --cached --quiet -- wiki/ .raw/ .vault-meta/ || git commit -m \"wiki: auto-commit $(date '+%Y-%m-%d %H:%M')\" -- wiki/ .raw/ .vault-meta/ 2>/dev/null) || true" } ] } ], "Stop": [ { "matcher": "", "hooks": [ { "type": "command", "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" } ] } ] } }