26.2.21openclaw-viking/skills/session-logs/SKILL.md
Search and analyze your own session logs (older/parent conversations) using jq.
npx skillsauth add adoresever/agi_ananans session-logsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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 sessionEach .jsonl file contains messages with:
type: "session" (metadata) or "message"timestamp: ISO timestampmessage.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 responsefor 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
head/tail for samplingsessions.json index maps chat providers (discord, whatsapp, etc.) to session IDs.deleted.<timestamp> suffixjq -r 'select(.type=="message") | .message.content[]? | select(.type=="text") | .text' ~/.openclaw/agents/<agentId>/sessions/<id>.jsonl | rg 'keyword'
testing
Simulate a strict academic reviewer and produce a manuscript risk report without editing the draft. Use when the user asks to act as a reviewer, find weaknesses before submission, inspect evidence gaps, check overclaims, evaluate manuscript readiness, combine advisor notes or meeting minutes into revision priorities, or generate a 审稿人模拟检查 report.
development
Build or reorganize an academic paper project workspace with clear folders and local instructions for literature, drafts, feedback, extracted text, and output reports. Use when the user wants to set up a论文工作台, organize mixed manuscript materials, create project rules, or prepare a stable workflow before citation checking, evidence matching, reviewer simulation, or manuscript revision.
testing
Match manuscript claims against user-provided literature and produce a traceable claim-evidence table. Use when the user asks to add references, check whether PDFs support manuscript statements, find supporting or opposing evidence from a literature folder, distinguish strong support from background support, or create a 论点-证据匹配 report for an academic draft.
development
Twitter/X data via the 6551 API. Supports user profiles, tweet search, user tweets, follower events, deleted tweets, and KOL followers.