1password
Set up and use 1Password CLI (op). Use when installing the CLI, enabling desktop app…
Search and analyze your own session logs (older/parent conversations) using jq.
$ npx -y skills add bitterbot-ai/bitterbot-desktop --skill session-logs --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/session-logsContext preview
The summary Claude sees to decide when to auto-load this skill.
Search and analyze your own session logs (older/parent conversations) using jq.
name: session-logs
description: Search and analyze your own session logs (older/parent conversations) using jq.
metadata: { "bitterbot": { "emoji": "📜", "requires": { "bins": ["jq", "rg"] } } }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: `~/.bitterbot/agents/<agentId>/sessions/` (use the `agent=<id>` value from the system prompt Runtime line).
Each `.jsonl` file contains messages with:
for f in ~/.bitterbot/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 -rfor f in ~/.bitterbot/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 ~/.bitterbot/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 -rjq -s '{
messages: length,
user: [.[] | select(.message.role == "user")] | length,
assistant: [.[] | select(.message.role == "assistant")] | length,
first: .[0].timestamp,
last: .[-1].timestamp
}' <session>.jsonljq -r '.message.content[]? | select(.type == "toolCall") | .name' <session>.jsonl | sort | uniq -c | sort -rn
rg -l "phrase" ~/.bitterbot/agents/<agentId>/sessions/*.jsonl
jq -r 'select(.type=="message") | .message.content[]? | select(.type=="text") | .text' ~/.bitterbot/agents/<agentId>/sessions/<id>.jsonl | rg 'keyword'
Bitterbot - a mesh of agents that turns shared experience into collective capability.
Repo: bitterbot-ai/bitterbot-desktop
Set up and use 1Password CLI (op). Use when installing the CLI, enabling desktop app…
Manage Apple Notes via the `memo` CLI on macOS (create, view, edit, delete, search, move, and…
Manage Apple Reminders via the `remindctl` CLI on macOS (list, add, edit, complete, delete).…
Monitor blogs and RSS/Atom feeds for updates using the blogwatcher CLI.