Session-logs

v1.0.0

Search and analyze your own session logs (older/parent conversations) using jq.

22· 27k·1.2k current·1.3k all-time
MIT-0
Download zip
LicenseMIT-0 · Free to use, modify, and redistribute. No attribution required.
Security Scan
VirusTotalVirusTotal
Benign
View report →
OpenClawOpenClaw
Benign
high confidence
Purpose & Capability
Name/description match the runtime instructions: the skill only needs to read session JSONL files and uses jq and rg to search and summarize them. Requiring jq and rg is proportionate to the stated functionality.
Instruction Scope
SKILL.md explicitly instructs reading files under ~/.clawdbot/agents/<agentId>/sessions/ and running jq/rg commands to extract messages, costs, and metadata. It does not instruct contacting external endpoints or accessing unrelated system data. The one minor note is the guidance to use the agent=<id> value from the system prompt's Runtime line — ensure the agent uses the correct agentId and only accesses directories the user intends.
Install Mechanism
No install spec or code is provided; the skill is instruction-only and relies on existing jq and rg binaries. This has low installation risk.
Credentials
No environment variables, credentials, or config paths are requested. The filesystem path referenced is consistent with the skill's purpose (reading session logs).
Persistence & Privilege
always is false and the skill does not request persistent/system-wide changes or elevated privileges. Autonomous invocation is allowed (platform default) but not accompanied by other concerning privileges.
Assessment
This skill is coherent: it only reads local session log files and uses jq/rg to search/analyze them. Before installing, confirm you are comfortable letting the agent access files under ~/.clawdbot/agents/<agentId>/sessions/ (these contain your conversation history and may include sensitive content). Ensure jq and ripgrep (rg) are installed and available on PATH. If you want to limit access, only invoke the skill when you explicitly request it rather than allowing autonomous use.

Like a lobster shell, security has layers — review code before you run it.

latestvk97e3m848wwcqg61tymxhpe4r980exv7

License

MIT-0
Free to use, modify, and redistribute. No attribution required.

Runtime requirements

📜 Clawdis
Binsjq, rg

SKILL.md

session-logs

Search your complete conversation history stored in session JSONL files. Use this when a user references older/parent conversations or asks what was said before.

Trigger

Use this skill when the user asks about prior chats, parent conversations, or historical context that isn’t in memory files.

Location

Session logs live at: ~/.clawdbot/agents/<agentId>/sessions/ (use the agent=<id> value from the system prompt Runtime line).

  • 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 (filter type=="text" for human-readable content)
  • message.usage.cost.total: Cost per response

Common Queries

List all sessions by date and size

for f in ~/.clawdbot/agents/<agentId>/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

for f in ~/.clawdbot/agents/<agentId>/sessions/*.jsonl; do
  head -1 "$f" | jq -r '.timestamp' | grep -q "2026-01-06" && echo "$f"
done

Extract user messages from a session

jq -r 'select(.message.role == "user") | .message.content[]? | select(.type == "text") | .text' <session>.jsonl

Search for keyword in assistant responses

jq -r 'select(.message.role == "assistant") | .message.content[]? | select(.type == "text") | .text' <session>.jsonl | rg -i "keyword"

Get total cost for a session

jq -s '[.[] | .message.usage.cost.total // 0] | add' <session>.jsonl

Daily cost summary

for f in ~/.clawdbot/agents/<agentId>/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

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

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

Search across ALL sessions for a phrase

rg -l "phrase" ~/.clawdbot/agents/<agentId>/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

Fast text-only hint (low noise)

jq -r 'select(.type=="message") | .message.content[]? | select(.type=="text") | .text' ~/.clawdbot/agents/<agentId>/sessions/<id>.jsonl | rg 'keyword'

Files

1 total
Select a file
Select a file to preview.

Comments

Loading comments…