--- name: extract-transcripts description: Extract readable transcripts from Claude Code and Codex CLI session JSONL files --- # Extract Transcripts Extracts readable markdown transcripts from Claude Code and Codex CLI session JSONL files. ## Scripts ### Claude Code Sessions ```bash # Extract a single session python3 ~/.claude/skills/extract-transcripts/extract_transcript.py # With tool calls and thinking blocks python3 ~/.claude/skills/extract-transcripts/extract_transcript.py --include-tools --include-thinking # Extract all sessions from a directory python3 ~/.claude/skills/extract-transcripts/extract_transcript.py --all # Output to file python3 ~/.claude/skills/extract-transcripts/extract_transcript.py -o output.md # Summary only (quick overview) python3 ~/.claude/skills/extract-transcripts/extract_transcript.py --summary # Skip empty/warmup-only sessions python3 ~/.claude/skills/extract-transcripts/extract_transcript.py --all --skip-empty ``` **Options:** - `--include-tools`: Include tool calls and results - `--include-thinking`: Include Claude's thinking blocks - `--all`: Process all .jsonl files in directory - `-o, --output`: Output file path (default: stdout) - `--summary`: Only output brief summary - `--skip-empty`: Skip empty and warmup-only sessions - `--min-messages N`: Minimum messages for --skip-empty (default: 2) ### Codex CLI Sessions ```bash # Extract a Codex session python3 ~/.claude/skills/extract-transcripts/extract_codex_transcript.py # Extract from Codex history file python3 ~/.claude/skills/extract-transcripts/extract_codex_transcript.py ~/.codex/history.jsonl --history ``` ## Session File Locations ### Claude Code - Sessions: `~/.claude/projects//.jsonl` ### Codex CLI - Sessions: `~/.codex/sessions//rollout.jsonl` - History: `~/.codex/history.jsonl` ## DuckDB-Based Transcript Index For querying across many sessions, use the DuckDB-based indexer: ```bash # Index all sessions (incremental - only new/changed files) python3 ~/.claude/skills/extract-transcripts/transcript_index.py index # Force full reindex python3 ~/.claude/skills/extract-transcripts/transcript_index.py index --full # Limit number of files to process python3 ~/.claude/skills/extract-transcripts/transcript_index.py index --limit 10 # List recent sessions python3 ~/.claude/skills/extract-transcripts/transcript_index.py recent python3 ~/.claude/skills/extract-transcripts/transcript_index.py recent --limit 20 python3 ~/.claude/skills/extract-transcripts/transcript_index.py recent --project myapp python3 ~/.claude/skills/extract-transcripts/transcript_index.py recent --since 7d # Search across sessions python3 ~/.claude/skills/extract-transcripts/transcript_index.py search "error handling" python3 ~/.claude/skills/extract-transcripts/transcript_index.py search "query" --cwd ~/myproject # Show a session transcript python3 ~/.claude/skills/extract-transcripts/transcript_index.py show python3 ~/.claude/skills/extract-transcripts/transcript_index.py show --summary ``` **Requirements:** DuckDB (`pip install duckdb`) **Database location:** `~/.claude/transcript-index/sessions.duckdb` ## Output Format Transcripts are formatted as markdown with: - Session metadata (date, duration, model, working directory, git branch) - User messages prefixed with `## User` - Assistant responses prefixed with `## Assistant` - Tool calls in code blocks (if --include-tools) - Thinking in blockquotes (if --include-thinking) - Tool usage summary for Codex sessions