Hooks
What trigger-tree runs automatically, and when. A hook is a command Claude Code fires at a fixed moment, without you asking for it.
> /plugin marketplace add Hedde/trigger_tree > /plugin install trigger-tree@trigger-tree
Ships with trigger-tree. Installing the plugin gets these hooks.
What fires, and when
SessionStart
Fires once when a session begins, and again after a context compaction. It is where a plugin sets up its environment, or restores state the compaction dropped.
H="${CLAUDE_PLUGIN_ROOT}/scripts/tt-codex-hook.py"; [ -f "$H" ] || exit 0; if command -v python3 >/dev/null 2>&1; then exec python3 "$H" --client codex; else exec python "$H" --client codex; fi
UserPromptSubmit
Fires before Claude sees each prompt you send. A plugin can use it to inject context, so the same instruction reaches the model every turn instead of only at session start.
H="${CLAUDE_PLUGIN_ROOT}/scripts/tt-codex-hook.py"; [ -f "$H" ] || exit 0; if command -v python3 >/dev/null 2>&1; then exec python3 "$H" --client codex; else exec python "$H" --client codex; fi
PostToolUse
- Matches
Bash|Read|Glob|Grep|Skill|apply_patch|Edit|Write|mcp__.*H="${CLAUDE_PLUGIN_ROOT}/scripts/tt-codex-hook.py"; [ -f "$H" ] || exit 0; if command -v python3 >/dev/null 2>&1; then exec python3 "$H" --client codex; else exec python "$H" --client codex; fi
Stop
H="${CLAUDE_PLUGIN_ROOT}/scripts/tt-codex-hook.py"; [ -f "$H" ] || exit 0; if command -v python3 >/dev/null 2>&1; then exec python3 "$H" --client codex; else exec python "$H" --client codex; fi
In the plugin's words
How trigger-tree describes its own hook set.
Collect local documentation-discovery telemetry without affecting Codex commands.
Gate documentation discovery in CI. Measure whether your project instructions change what agents do. Two concrete offers: CI gate — immediate. A deterministic, telemetry-free structural check fails a PR with the affected file and a suggested fix.

