Back to skills
SkillHub ClubShip Full StackFull Stack

session-logs

This skill provides jq-based shell commands to search and analyze Claude conversation history stored in JSONL files. It helps users find past discussions, calculate costs, and extract specific message types from session logs located in ~/.clawdbot directories.

Packaged view

This page reorganizes the original catalog entry around fit, installability, and workflow context first. The original raw source lives below.

Stars
323,449
Hot score
99
Updated
March 20, 2026
Overall rating
A7.8
Composite score
7.0
Best-practice grade
N/A

Install command

npx @skill-hub/cli install clawdbot-clawdbot-session-logs
session-analysisconversation-historycli-toolsdebugging

Repository

clawdbot/clawdbot

Skill path: skills/session-logs

This skill provides jq-based shell commands to search and analyze Claude conversation history stored in JSONL files. It helps users find past discussions, calculate costs, and extract specific message types from session logs located in ~/.clawdbot directories.

Open repository

Best for

Primary workflow: Ship Full Stack.

Technical facets: Full Stack.

Target audience: Claude power users who need to analyze their conversation history, developers debugging agent interactions, users tracking conversation costs.

License: Unknown.

Original source

Catalog source: SkillHub Club.

Repository owner: clawdbot.

This is still a mirrored public skill entry. Review the repository before installing into production workflows.

What it helps with

  • Install session-logs into Claude Code, Codex CLI, Gemini CLI, or OpenCode workflows
  • Review https://github.com/clawdbot/clawdbot before adding session-logs to shared team environments
  • Use session-logs for productivity workflows

Works across

Claude CodeCodex CLIGemini CLIOpenCode

Favorites: 0.

Sub-skills: 0.

Aggregator: No.

Original source / Raw SKILL.md

---
name: session-logs
description: Search and analyze your own conversation history from session log files using jq.
metadata: {"clawdbot":{"emoji":"📜","requires":{"bins":["jq"]}}}
---

# session-logs

Search your complete conversation history stored in session JSONL files. Use this when you need to recall something not in your memory files.

## Location

Session logs live at: `~/.clawdbot/agents/main/sessions/`

- **`sessions.json`** - Index mapping session keys to session IDs
- **`<session-id>.jsonl`** - Full conversation transcript per session

## Structure

Each `.jsonl` file contains messages with:
- `type`: "session" (metadata) or "message"
- `timestamp`: ISO timestamp
- `message.role`: "user", "assistant", or "toolResult"
- `message.content[]`: Text, thinking, or tool calls
- `message.usage.cost.total`: Cost per response

## Common Queries

### List all sessions by date and size
```bash
for f in ~/.clawdbot/agents/main/sessions/*.jsonl; do
  date=$(head -1 "$f" | jq -r '.timestamp' | cut -dT -f1)
  size=$(ls -lh "$f" | awk '{print $5}')
  echo "$date $size $(basename $f)"
done | sort -r
```

### Find sessions from a specific day
```bash
for f in ~/.clawdbot/agents/main/sessions/*.jsonl; do
  head -1 "$f" | jq -r '.timestamp' | grep -q "2026-01-06" && echo "$f"
done
```

### Extract user messages from a session
```bash
jq -r 'select(.message.role == "user") | .message.content[0].text' <session>.jsonl
```

### Search for keyword in assistant responses
```bash
jq -r 'select(.message.role == "assistant") | .message.content[]? | select(.type == "text") | .text' <session>.jsonl | grep -i "keyword"
```

### Get total cost for a session
```bash
jq -s '[.[] | .message.usage.cost.total // 0] | add' <session>.jsonl
```

### Daily cost summary
```bash
for f in ~/.clawdbot/agents/main/sessions/*.jsonl; do
  date=$(head -1 "$f" | jq -r '.timestamp' | cut -dT -f1)
  cost=$(jq -s '[.[] | .message.usage.cost.total // 0] | add' "$f")
  echo "$date $cost"
done | awk '{a[$1]+=$2} END {for(d in a) print d, "$"a[d]}' | sort -r
```

### Count messages and tokens in a session
```bash
jq -s '{
  messages: length,
  user: [.[] | select(.message.role == "user")] | length,
  assistant: [.[] | select(.message.role == "assistant")] | length,
  first: .[0].timestamp,
  last: .[-1].timestamp
}' <session>.jsonl
```

### Tool usage breakdown
```bash
jq -r '.message.content[]? | select(.type == "toolCall") | .name' <session>.jsonl | sort | uniq -c | sort -rn
```

### Search across ALL sessions for a phrase
```bash
grep -l "phrase" ~/.clawdbot/agents/main/sessions/*.jsonl
```

## Tips

- Sessions are append-only JSONL (one JSON object per line)
- Large sessions can be several MB - use `head`/`tail` for sampling
- The `sessions.json` index maps chat providers (discord, whatsapp, etc.) to session IDs
- Deleted sessions have `.deleted.<timestamp>` suffix
session-logs | SkillHub