Implements automatic memory extraction when Claude Code sessions end: - Add SessionEnd hook to hooks.json with 120s timeout - Create session-end.sh wrapper that parses hook input and runs summarizer - Create summarize-transcript.py that: - Loads transcript from Claude's storage - Skips trivial sessions (<3 user messages) - Extracts paths/facts via heuristics - Uses Claude CLI (subscription auth) for decisions/preferences - Saves to memory files with deduplication - Updates history index with summarized flag Uses `claude -p --model haiku` for LLM extraction, leveraging existing subscription credentials instead of requiring API key. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Hooks
Event handlers that run automatically during Claude Code sessions.
Active Hooks
| Event | Script | Purpose |
|---|---|---|
SessionStart |
scripts/session-start.sh |
Load context, check for pending items |
PreCompact |
scripts/pre-compact.sh |
Remind to preserve context before compaction |
Hook Events
| Event | When It Fires |
|---|---|
SessionStart |
When Claude Code session begins |
SessionEnd |
When session ends |
PreToolUse |
Before a tool is used |
PostToolUse |
After a tool is used |
UserPromptSubmit |
When user submits a prompt |
PreCompact |
Before context compaction |
Notification |
When notification is sent |
Configuration
Hooks are defined in hooks.json:
{
"hooks": {
"SessionStart": [
{
"hooks": [
{
"type": "command",
"command": "~/.claude/hooks/scripts/session-start.sh"
}
]
}
]
}
}
Adding Hooks
- Create script in
scripts/ - Make executable:
chmod +x scripts/your-hook.sh - Add to
hooks.json - Restart Claude Code
Script Output
- Stdout is injected into session as context
- Use format:
HookName:Callback hook success: Success - Additional context:
HookName hook additional context: <message>
Matchers (for Tool Hooks)
{
"matcher": "Write|Edit",
"hooks": [...]
}
Matches tool names with regex pattern.
Tips
- Keep hooks fast (<1s) to avoid delays
- Use
set -euo pipefailfor safety - Output useful context, not noise
- Test hooks manually before adding