In .claude/settings.json you can trigger shell commands on events like SessionStart, Stop, PreCompact, and PostToolUse [1].

I have all of them run `jj status`, because jj snapshots the working copy every time it's invoked.

You can have Claude write the hooks, but mine is:

`[[ -d .jj ]] && jj status >/dev/null 2>&1; exit 0`

[1] https://code.claude.com/docs/en/agent-sdk/hooks