Skip to content
Development
Hook

Hooks

What ultan runs automatically, and when. A hook is a command Claude Code fires at a fixed moment, without you asking for it.

From plugin
ultan
42 skills2 commands6 hooks
Install
> /plugin marketplace add nickroci/ultan
> /plugin install ultan@ultan

Ships with ultan. 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.

  • "${CLAUDE_PLUGIN_ROOT}/scripts/ensure-ultan.sh"[ -x "${CLAUDE_PLUGIN_DATA}/bin/ultan" ] && "${CLAUDE_PLUGIN_DATA}/bin/ultan" hook session-start || true

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.

  • if [ -x "${CLAUDE_PLUGIN_DATA}/bin/ultan" ]; then "${CLAUDE_PLUGIN_DATA}/bin/ultan" hook user-prompt-submit; else "${CLAUDE_PLUGIN_ROOT}/scripts/ensure-ultan.sh"; fi || true

PreToolUse

  • MatchesBash|Write|Edit|MultiEdit|NotebookEdit[ -x "${CLAUDE_PLUGIN_DATA}/bin/ultan" ] && "${CLAUDE_PLUGIN_DATA}/bin/ultan" hook pre-tool-use || true

Stop

  • [ -x "${CLAUDE_PLUGIN_DATA}/bin/ultan" ] && "${CLAUDE_PLUGIN_DATA}/bin/ultan" hook stop || true

PreCompact

  • [ -x "${CLAUDE_PLUGIN_DATA}/bin/ultan" ] && "${CLAUDE_PLUGIN_DATA}/bin/ultan" hook pre-compact || true

SessionEnd

  • [ -x "${CLAUDE_PLUGIN_DATA}/bin/ultan" ] && "${CLAUDE_PLUGIN_DATA}/bin/ultan" hook session-end || true
Read hooks/hooks.json
Ships withultan

Ultan is a neuroscience-inspired, agentic memory system for Claude Code — a layered architecture that learns your preferences and coding conventions and recalls them across every session, project, and machine.

Get the whole plugin
Stats
4
Stars
1
Forks
Maintained
Maintenance
Python
Language
MIT
License
2mo ago
Last commit
4mo ago
Created

Repo: nickroci/ultan