Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Search and analyze your own session logs (older/parent conversations) using jq.
Search and analyze your own session logs (older/parent conversations) using jq.
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
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.
Use this skill when the user asks about prior chats, parent conversations, or historical context that isn't in memory files.
Session logs live at: ~/.openclaw/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
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
for f in ~/.openclaw/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
for f in ~/.openclaw/agents/<agentId>/sessions/*.jsonl; do head -1 "$f" | jq -r '.timestamp' | grep -q "2026-01-06" && echo "$f" done
jq -r 'select(.message.role == "user") | .message.content[]? | select(.type == "text") | .text' <session>.jsonl
jq -r 'select(.message.role == "assistant") | .message.content[]? | select(.type == "text") | .text' <session>.jsonl | rg -i "keyword"
jq -s '[.[] | .message.usage.cost.total // 0] | add' <session>.jsonl
for f in ~/.openclaw/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
jq -s '{ messages: length, user: [.[] | select(.message.role == "user")] | length, assistant: [.[] | select(.message.role == "assistant")] | length, first: .[0].timestamp, last: .[-1].timestamp }' <session>.jsonl
jq -r '.message.content[]? | select(.type == "toolCall") | .name' <session>.jsonl | sort | uniq -c | sort -rn
rg -l "phrase" ~/.openclaw/agents/<agentId>/sessions/*.jsonl
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
jq -r 'select(.type=="message") | .message.content[]? | select(.type=="text") | .text' ~/.openclaw/agents/<agentId>/sessions/<id>.jsonl | rg 'keyword'
Code helpers, APIs, CLIs, browser automation, testing, and developer operations.
Largest current source with strong distribution and engagement signals.