Claude-code-minoan claude-tracker-suite
Manage Claude Code sessions — search by topic or ID, resume crashed sessions, spawn interactive or headless sessions, monitor live sessions, auto-summarize, and bootstrap new machine setups. Triggers on resume session, find session, list sessions, spawn session, session history, what was I working on.
git clone https://github.com/tdimino/claude-code-minoan
T=$(mktemp -d) && git clone --depth=1 https://github.com/tdimino/claude-code-minoan "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/planning-productivity/claude-tracker-suite" ~/.claude/skills/tdimino-claude-code-minoan-claude-tracker-suite && rm -rf "$T"
skills/planning-productivity/claude-tracker-suite/SKILL.mdClaude Session Management Suite
Search, browse, monitor, and manage Claude Code session history across all projects.
Tools Overview
| Tool | Purpose |
|---|---|
| Search sessions by keyword or ID prefix (standalone script) |
| List top N sessions, open selected in cmux tabs/splits |
| Find and resume crashed/inactive sessions |
| Check which sessions have running processes |
| Daemon: auto-summarize new sessions, update active-projects.md |
| List recent sessions with status badges (standalone script) |
| Start a new session in Ghostty/VSCode/Cursor, with optional prompt or headless mode |
| Open a session in a cmux tab (optionally open project in VS Code/Cursor) |
| Scan sessions to find all projects, check CLAUDE.md coverage |
| Generate complete ~/.claude/ config for new machine |
| Regenerate active-projects.md with enriched session data |
Standalone Scripts
Commands delegate to standalone Node.js scripts (avoids shell escaping issues with inline
node -e):
| Script | Called By | Purpose |
|---|---|---|
| | Keyword search or prefix lookup across all sessions |
| Direct invocation | List top N sessions, open in cmux tabs/splits with confirmation |
| | List recent sessions with status badges |
| | Start new interactive or prompt-driven session in Ghostty/VSCode/Cursor or headless |
| Direct invocation | Open session in cmux tab, optionally open project in VS Code/Cursor |
| Direct invocation | Project discovery and CLAUDE.md scaffolding |
| Direct invocation | New machine setup generator |
All scripts use
~/.claude/lib/tracker-utils.js for shared utilities (path decoding, session parsing, git remote detection).
Quick Start
# Search by topic claude-tracker-search "kothar mac mini" # Lookup by session ID prefix (exact directory from JSONL ground truth) node ~/.claude/skills/claude-tracker-suite/scripts/search-sessions.js --id d7b8f4dd # Search by session name/slug only (fast — no JSONL body scan) claude-tracker-search "thera" --name # List top 10 sessions, open selected in cmux tabs node ~/.claude/skills/claude-tracker-suite/scripts/open-sessions.js # Open top 5 as vertical splits node ~/.claude/skills/claude-tracker-suite/scripts/open-sessions.js --limit 5 --split right # Check what's alive claude-tracker-alive # Resume crashed sessions in tmux claude-tracker-resume --tmux # Start auto-summarize daemon claude-tracker-watch --daemon
Search
claude-tracker-search "$ARGUMENTS"
Search targets (weighted ranking): Summary (3x), First prompt (2x), Project name (1x), Git branch (1x).
| Flag | Description |
|---|---|
| Max results (default: 20) |
| Lookup by session ID prefix (8+ chars) |
| Filter by project name (substring) |
| Recent only: , , , |
| Machine-readable JSON output |
| Search only session names, slugs, summaries—skips JSONL body scan (fast) |
| Interactive selection via fzf (outputs resume command) |
Resume Crashed Sessions
claude-tracker-resume # List crashed sessions with resume commands claude-tracker-resume --tmux # Resume all in tmux windows claude-tracker-resume --zsh # Resume all in Terminal.app tabs (macOS) claude-tracker-resume --all # Include non-VS Code sessions claude-tracker-resume --dry-run # Preview without acting
Smart fallback: if
--resume fails on an expired session, automatically starts a fresh session in that project directory. Sessions older than 7 days show a STALE badge.
Alive Detection
Check which sessions have running Claude processes:
claude-tracker-alive # Running + stale sessions overview claude-tracker-alive --running # Only sessions with active processes claude-tracker-alive --stale # Only sessions with no process claude-tracker-alive --json # Machine-readable output
Cross-references running
claude PIDs (via pgrep + lsof) against recent session files. Sessions >3 days without a process show an OLD badge.
Auto-Summarize Daemon
Watch for new sessions and auto-populate summary cache:
claude-tracker-watch --status # Check if daemon is running claude-tracker-watch --daemon # Start in background claude-tracker-watch --stop # Stop running daemon claude-tracker-watch --verbose # Foreground with debug output
The daemon watches
~/.claude/projects/*/sessions-index.json for changes. When new sessions appear, it caches summaries from Claude Code metadata and regenerates active-projects.md. See references/daemon-setup.md for launchd plist and lifecycle details.
Session Listing
claude-tracker # All recent sessions claude-tracker vscode # VS Code sessions only
Detect Projects
node ~/.claude/skills/claude-tracker-suite/scripts/detect-projects.js # List all node ~/.claude/skills/claude-tracker-suite/scripts/detect-projects.js --suggest # Suggest additions node ~/.claude/skills/claude-tracker-suite/scripts/detect-projects.js --scaffold # Create CLAUDE.md stubs node ~/.claude/skills/claude-tracker-suite/scripts/detect-projects.js --since 30d # Recent only
Update Active Projects
python3 ~/.claude/scripts/update-active-projects.py # Regenerate active-projects.md python3 ~/.claude/scripts/update-active-projects.py --summarize # Show sessions needing summaries
The generated table includes Model, Turns, and Cost columns from enriched session data (extracted from JSONL transcripts). Git worktree sessions show a tree emoji badge. Sessions without summaries are auto-named via one-shot
claude --model haiku call.
Bootstrap New Setup
Generate a complete
~/.claude/ configuration for a new machine:
node ~/.claude/skills/claude-tracker-suite/scripts/bootstrap-claude-setup.js --user "Name" --dry-run node ~/.claude/skills/claude-tracker-suite/scripts/bootstrap-claude-setup.js --user "Name"
Creates directory structure, global CLAUDE.md, userModel template, agent_docs stubs, and project CLAUDE.md scaffolds. Follow up with
/claude-md-manager to enrich generated files.
Resume in New Terminal
Open a session in a new cmux tab, optionally opening the project in an editor:
# Resume in cmux tab (default — auto-detects project directory) ~/.claude/skills/claude-tracker-suite/scripts/resume-session.sh <session-id> # Resume in cmux + open project in VS Code ~/.claude/skills/claude-tracker-suite/scripts/resume-session.sh <session-id> --vscode # Resume in cmux + open project in Cursor ~/.claude/skills/claude-tracker-suite/scripts/resume-session.sh <session-id> --cursor # Explicit project directory ~/.claude/skills/claude-tracker-suite/scripts/resume-session.sh <session-id> --project ~/Desktop/Programming
cmux owns the terminal lifecycle. Editor flags (
--vscode, --cursor) only open the project in the editor — the session always resumes in cmux. Falls back to printing the resume command if cmux is not running.
New Session / Spawn
Start a new Claude Code session in a terminal tab or headless:
# Interactive session in Ghostty (default) ~/.claude/skills/claude-tracker-suite/scripts/new-session.sh ~/my-project # With a specific model ~/.claude/skills/claude-tracker-suite/scripts/new-session.sh ~/my-project --model opus # Prompt-driven session in Ghostty tab ~/.claude/skills/claude-tracker-suite/scripts/new-session.sh ~/my-project --prompt "fix the login bug" # Prompt-driven in VS Code terminal ~/.claude/skills/claude-tracker-suite/scripts/new-session.sh ~/my-project --vscode --prompt "fix the login bug" # Headless — runs in current terminal, returns JSON ~/.claude/skills/claude-tracker-suite/scripts/new-session.sh ~/my-project --headless --prompt "summarize the README" # Headless with specific model and output format ~/.claude/skills/claude-tracker-suite/scripts/new-session.sh ~/my-project --headless --prompt "fix tests" --model haiku --output-format text
Headless and prompt-driven modes use
claude -p (the Agent SDK CLI). Note: -p is now officially part of the Claude Agent SDK—it uses SDK billing, not interactive session billing. Terminal modes use the clipboard-paste AppleScript pattern for reliable command delivery (handles special characters in prompts).
Workflow: Find and Resume
— find matching sessionsclaude-tracker-search "topic"
— resume in current terminalclaude --resume <session-id>
— list top sessions, open selected in cmux tabsopen-sessions.js- Or
— auto-resume all crashed sessionsclaude-tracker-resume --tmux
Workflow: Open Sessions in cmux
List recent sessions and open them in cmux tabs or splits:
# List top 10, prompt for selection node ~/.claude/skills/claude-tracker-suite/scripts/open-sessions.js # Open as vertical splits node ~/.claude/skills/claude-tracker-suite/scripts/open-sessions.js --split right # Open all without confirmation node ~/.claude/skills/claude-tracker-suite/scripts/open-sessions.js --yes # JSON output for scripting node ~/.claude/skills/claude-tracker-suite/scripts/open-sessions.js --json
Session directories are resolved from JSONL ground truth (
decodeProjectPath), not from active-projects.md. Falls back to printing resume commands when cmux is unavailable.
For the full cmux CLI reference, see
references/cmux-commands.md.
Workflow: Monitor Active Work
— see what's running vs staleclaude-tracker-alive
— keep summaries auto-updatedclaude-tracker-watch --daemon- Read
— curated project overview~/.claude/agent_docs/active-projects.md
Related: Git Tracking
Git-aware session tracking via PreToolUse/PostToolUse hooks intercepts all git commands and tags sessions with repos they touch. Enables cross-directory session discovery.
| File | Purpose |
|---|---|
| PreToolUse hook — logs git commands to JSONL |
| PostToolUse hook — captures commit hashes |
| Builds bidirectional index at SessionEnd |
| Append-only event log (hot path) |
| Bidirectional session <-> repo index |
Query functions in
tracker-utils.js:
— load the indexloadGitTracking()
— find sessions that touched a repogetSessionsForRepo(path)
— find repos a session touchedgetReposForSession(sid)
— recent commits across sessionsgetRecentCommits({hours, repoPath})
— raw event timelinegetRecentGitEvents({hours})
The
/session-report command generates a Markdown dashboard combining session status with git activity.
Related: Soul Registry
The soul registry (
~/.claude/hooks/soul-registry.py) tracks live sessions with heartbeats, topics, and Slack channel bindings. It complements the tracker suite:
| Tracker Suite | Soul Registry | |
|---|---|---|
| Scope | All sessions, all time | Active sessions only |
| Data source | JSONL transcripts, sessions-index.json | |
| Updates | After session ends (summaries) | Real-time (heartbeat every turn) |
| Purpose | Search, resume, project detection | Cross-session awareness, Slack binding |
To view the live registry:
python3 ~/.claude/hooks/soul-registry.py list --md
To activate Claudicle identity in a session:
/ensoul (opt-in per session). To bind a session to Slack: /slack-sync #channel.
References
For detailed schemas and infrastructure:
— Session index, summary cache, and JSONL transcript schemas; data source locations; shared library APIreferences/data-schemas.md
— Watcher daemon lifecycle and launchd plist templatereferences/daemon-setup.md
— Complete cmux CLI reference: hierarchy, splits, tabs, input, browser, sidebar, notifications, keyboard shortcutsreferences/cmux-commands.md