Extract readable transcripts from Claude Code and Codex CLI session JSONL files
76%
Does it follow best practices?
Impact
95%
11.87xAverage score across 3 eval scenarios
—
The risk profile of this skill
Fix and improve this skill with Tessl
tessl review fix ./data/skills-md/0xbigboss/claude-code/extract-transcripts/SKILL.mdExtracts readable markdown transcripts from Claude Code and Codex CLI session JSONL files.
# Extract a single session
uv run ~/.claude/skills/extract-transcripts/extract_transcript.py <session.jsonl>
# With tool calls and thinking blocks
uv run ~/.claude/skills/extract-transcripts/extract_transcript.py <session.jsonl> --include-tools --include-thinking
# Extract all sessions from a directory
uv run ~/.claude/skills/extract-transcripts/extract_transcript.py <directory> --all
# Output to file
uv run ~/.claude/skills/extract-transcripts/extract_transcript.py <session.jsonl> -o output.md
# Summary only (quick overview)
uv run ~/.claude/skills/extract-transcripts/extract_transcript.py <session.jsonl> --summary
# Skip empty/warmup-only sessions
uv run ~/.claude/skills/extract-transcripts/extract_transcript.py <directory> --all --skip-emptyOptions:
--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)# Extract a Codex session
uv run ~/.claude/skills/extract-transcripts/extract_codex_transcript.py <session.jsonl>
# Extract from Codex history file
uv run ~/.claude/skills/extract-transcripts/extract_codex_transcript.py ~/.codex/history.jsonl --history~/.claude/projects/<project-path>/<session-id>.jsonl~/.codex/sessions/<session_id>/rollout.jsonl~/.codex/history.jsonlFor querying across many sessions, use the DuckDB-based indexer:
# Index all sessions (incremental - only new/changed files)
uv run ~/.claude/skills/extract-transcripts/transcript_index.py index
# Force full reindex
uv run ~/.claude/skills/extract-transcripts/transcript_index.py index --full
# Limit number of files to process
uv run ~/.claude/skills/extract-transcripts/transcript_index.py index --limit 10
# List recent sessions
uv run ~/.claude/skills/extract-transcripts/transcript_index.py recent
uv run ~/.claude/skills/extract-transcripts/transcript_index.py recent --limit 20
uv run ~/.claude/skills/extract-transcripts/transcript_index.py recent --project myapp
uv run ~/.claude/skills/extract-transcripts/transcript_index.py recent --since 7d
# Search across sessions
uv run ~/.claude/skills/extract-transcripts/transcript_index.py search "error handling"
uv run ~/.claude/skills/extract-transcripts/transcript_index.py search "query" --cwd ~/myproject
# Show a session transcript
uv run ~/.claude/skills/extract-transcripts/transcript_index.py show <file_path>
uv run ~/.claude/skills/extract-transcripts/transcript_index.py show <file_path> --summaryRequirements: uv (dependencies auto-installed via inline script metadata)
Database location: ~/.claude/transcript-index/sessions.duckdb
Transcripts are formatted as markdown with:
## User## AssistantNeverSight/skills_feed
a62ed51
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.