From spec-first
Extracts conversation skeleton or error signals from a single Claude Code or Codex session JSONL file for agent deep analysis, avoiding full file context load.
npx claudepluginhub sunrain520/spec-firstThis skill uses the workspace's default tool permissions.
Agent-facing primitive. Extract filtered content from a single Claude Code or Codex session file — either a conversation skeleton or error signals.
Extracts markdown transcripts from Clawdbot, Claude Code, and Codex .jsonl session logs using a bash script with jq. Useful for exporting prompt history or AI coding session transcripts.
Extracts specific data points like tool timings, query counts, or error summaries from large agent transcripts, kaizen reports, or JSONL files using Grep and DuckDB SQL without loading raw data into context.
Searches and analyzes session logs from prior conversations using jq and rg. Queries messages, costs, tool usage, and generates summaries across JSONL files.
Share bugs, ideas, or general feedback.
Agent-facing primitive. Extract filtered content from a single Claude Code or Codex session file — either a conversation skeleton or error signals.
This skill exists so that agents do not read multi-megabyte session files into context. The scripts under scripts/ own the JSONL shape knowledge and emit a narrative-readable digest.
Space-separated positional args:
<file> — absolute path to a session JSONL file (typically a file value returned by session-inventory).<mode> — skeleton or errors.<limit> (optional) — head:N or tail:N to cap output at N lines (e.g., head:200). Omit to return full extraction.Skeleton mode — narrative of user messages, assistant text, and collapsed tool-call summaries:
cat <file> | python3 scripts/extract-skeleton.py
Errors mode — just error signals:
cat <file> | python3 scripts/extract-errors.py
If <limit> is head:N, pipe through head -n N. If tail:N, pipe through tail -n N. Apply the limit after the Python script, never before — the _meta line is emitted last and a head cap may drop it; that is acceptable when the caller asks for a head cap.
Return the raw stdout verbatim. Do not paraphrase, annotate, or synthesize — the caller does synthesis across multiple sessions.
Narrative output with one logical event per block, separated by ---:
[tools] 5x Read (file1, file2, +3 more) -> all ok)Ends with a _meta line: {"_meta": true, "lines": N, "parse_errors": N, "user": N, "assistant": N, "tool": N}.
One line per error, separated by ---:
is_error: trueexec_command_end events with non-zero exit or non-empty stderr
Ends with a _meta line: {"_meta": true, "lines": N, "parse_errors": N, "errors_found": N}.If the file cannot be read, let the error surface to the caller. If _meta reports parse_errors > 0, return the output as-is — partial extraction is still useful and the caller decides whether to widen the search or deep-dive further.