for f in ~/.clawdbot/agents//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 ~/.clawdbot/agents//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' .jsonl
jq -r 'select(.message.role == "assistant") | .message.content[]? | select(.type == "text") | .text' .jsonl | rg -i "keyword"
jq -s '[.[] | .message.usage.cost.total // 0] | add' .jsonl
for f in ~/.clawdbot/agents//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 }' .jsonl
jq -r '.message.content[]? | select(.type == "toolCall") | .name' .jsonl | sort | uniq -c | sort -rn
rg -l "phrase" ~/.clawdbot/agents//sessions/*.jsonl
jq -r 'select(.type=="message") | .message.content[]? | select(.type=="text") | .text' ~/.clawdbot/agents//sessions/.jsonl | rg 'keyword'
Session-logs Search and analyze your own session logs (older/parent conversations) using jq. MIT-0 · Free to use, modify, and redistribute. No attribution required. ⭐ 19 · 23.2k · 1.1k current installs · 1.1k all-time installs by @guogang1024 MIT-0 Security Scan VirusTotal VirusTotal Benign View report → OpenClaw OpenClaw Benign high confidence The skill's requirements and instructions are coherent with its stated purpose (searching local session JSONL logs with jq and ripgrep) and do not request unrelated credentials or installs. Details ▾ ✓ 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. Current version v 1.0.0 Download zip latest v k97e3m848wwcqg61tymxhpe4r980exv7 License MIT-0 Free to use, modify, and redistribute. No attribution required. Terms https://spdx.org/licenses/MIT-0.html Runtime requirements 📜 Clawdis Bins jq, rg Files Compare Versions 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 SKILL.md 3.3 KB Select a file Select a file to preview. Comments Loading comments…