Automatic session summarization, archival, and context injection for Claude Code. No more lossy
/compact. Sessions are summarized before compaction, archived permanently, and injected into the next session automatically.
Created by: Jonohobs + Claude Code (Anthropic) Date: 2026-03-18 License: MIT
Session in progress
↓ (context getting full)
PreCompact hook fires
↓
Summarizer runs (Gemini CLI → Ollama → fallback)
↓
Summary saved to session-buffer.md + archive/
↓
User does /clear
↓
SessionStart hook injects previous session summary
↓
Fresh context with full continuity
| Component | What it does |
|---|---|
pre-compact-summary.py |
Reads observation logs, generates rich session summary via LLM (Gemini/Ollama) or structured fallback |
pre-compact-summary.sh |
Bash wrapper for the hook system |
activity-timeline.sh |
SessionStart hook — injects previous session summary + recent activity |
observation-logger.sh |
PostToolUse hook — logs tool usage to daily JSONL |
session-digest.sh |
Stop hook — generates compact session digest |
obs-log.py |
Python core for observation logging |
digest-gen.py |
Python core for digest generation |
settings-hooks.json |
Hook configuration to merge into your settings.json |
- Run the install script:
Or manually copy hook scripts to
./install.sh
~/.claude/hooks/:cp pre-compact-summary.py ~/.claude/hooks/ cp pre-compact-summary.sh ~/.claude/hooks/ cp activity-timeline.sh ~/.claude/hooks/ cp observation-logger.sh ~/.claude/hooks/ cp session-digest.sh ~/.claude/hooks/ cp obs-log.py ~/.claude/hooks/ cp digest-gen.py ~/.claude/hooks/ chmod +x ~/.claude/hooks/*.sh
- Merge
settings-hooks.jsoninto your~/.claude/settings.json - Ensure either
geminiCLI orollamais installed (both are free) - Create the log directory:
mkdir -p ~/.claude/memory-log/archive
- Claude Code
- Python 3 (standard library only)
- One of: Gemini CLI (free), Ollama with llama3 (free), or neither (uses structured fallback)
The system uses Claude Code's hook events:
- PreCompact — fires before context compaction, generates and archives session summary
- SessionStart — fires on new session or /clear, injects previous session's summary
- PostToolUse — logs observations to daily JSONL file
- Stop — generates compact session digest appended to session-log.md
- Gemini CLI (best free option) — semantic understanding of what was accomplished
- Ollama llama3 (local, free) — good quality, zero network
- Structured fallback (no LLM) — tool counts, files touched, key actions from JSONL
Each session is archived permanently:
~/.claude/memory-log/archive/
├── 2026-03-18-14-30-session.md
├── 2026-03-18-16-45-session.md
└── ...
Sessions include tags (#project-name, #feature, #bugfix) for searchability.
Claude Code's /compact is lossy — it compresses the conversation but loses nuance, decisions, and context. This system:
- Captures a high-quality summary BEFORE compaction
- Archives it permanently (never lose session history)
- Injects it into the next session (seamless continuity)
- Uses free LLMs (zero API cost)
- Tags sessions for searchability
This system emerged from a session on context engineering for Claude Code, exploring how to maintain continuity across sessions without relying on lossy compaction.
- Jonathan Hobman (@Jonohobs) — architecture, requirements, testing
- Claude Code (Anthropic, Claude Sonnet 4.6) — implementation, hook system design
MIT — use it, fork it, improve it.