بنقرة واحدة
session-logs
Search and analyze your own Lemon session logs (older/parent conversations) using jq.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Search and analyze your own Lemon session logs (older/parent conversations) using jq.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Interact with Discord via a bot: read channels, send messages, list guilds/channels, upload files, manage threads. Uses the Discord REST API with a bot token stored in ~/.zeebot/api_keys/discord.txt.
Debug and stress-test lemon gateway behavior by acting as both sides of Telegram conversations: run lemon-gateway with debug logs, then use Telethon with user credentials to send/reply messages in a dedicated topic while watching gateway logs and runtime state. Use for stuck runs, delivery failures, scheduler/lock contention, async delegation bugs, and context overflows.
Connect to a running Lemon or lemon-gateway BEAM node, run recompile() for hot code reload, and execute Elixir code in that live runtime via IEx remsh or rpc-eval.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Capture and automate macOS UI with the Peekaboo CLI.
Pin files and JSON to IPFS via Pinata (JWT auth + helper scripts).
| name | session-logs |
| description | Search and analyze your own Lemon session logs (older/parent conversations) using jq. |
| metadata | {"lemon":{"emoji":"📜","requires":{"bins":["jq","rg"]}}} |
Search your complete conversation history stored in Lemon 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 current memory files.
Session logs live under ~/.lemon/agent/sessions/ and are organized by encoded working directory name:
<encoded-cwd>/*.jsonl - Full conversation transcript per sessionFor example: ~/.lemon/agent/sessions/--home-user-project--/2026...jsonl
The first line in each .jsonl is a session header with metadata.
Each .jsonl file contains messages with:
type: "session" (metadata header) or "message" (conversation entries)timestamp: Epoch timestampmessage.role: "user", "assistant", etc.message.content[]: Text, thinking, or tool calls (filter type=="text" for human-readable content)message.usage.cost.total: Cost per responsefor f in ~/.lemon/agent/sessions/*/*.jsonl; do
ts=$(jq -r 'select(.type=="session") | .timestamp' "$f")
size=$(wc -c <"$f")
started="$(date -r "$((ts / 1000))" '+%F %T' 2>/dev/null || printf 'ts=%s' "$ts")"
echo "$started $size $(basename "$f")"
done | sort -r
for f in ~/.lemon/agent/sessions/*/*.jsonl; do
ts=$(jq -r 'select(.type=="session") | .timestamp' "$f")
day="$(date -r "$((ts / 1000))" '+%F' 2>/dev/null || true)"
[[ "$day" == "2026-01-06" ]] && echo "$f"
done
jq -r 'select(.type=="message" and .message.role == "user") | .message.content[]? | select(.type == "text") | .text' <session>.jsonl
jq -r 'select(.type=="message" and .message.role == "assistant") | .message.content[]? | select(.type == "text") | .text' <session>.jsonl | rg -i "keyword"
jq -s '[.[] | select(.type=="message") | .message.usage.cost.total // 0] | add' <session>.jsonl
for f in ~/.lemon/agent/sessions/*/*.jsonl; do
day="$(date -r "$(( $(jq -r 'select(.type=="session") | .timestamp' "$f") / 1000 ))" '+%F' 2>/dev/null || continue)"
cost=$(jq -s '[.[] | select(.type=="message") | .message.usage.cost.total // 0] | add' "$f")
echo "$day $cost"
done | awk '{a[$1]+=$2} END {for(d in a) print d, "$"a[d]}' | sort -r
jq -s '{
messages: length,
user: [.[] | select(.type=="message" and .message.role == "user")] | length,
assistant: [.[] | select(.type=="message" and .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" ~/.lemon/agent/sessions/*/*.jsonl
head/tail for sampling~/.lemon/agent/sessions is the session root in Lemonsessions.json index file exists for logsjq -r 'select(.type=="message") | .message.content[]? | select(.type=="text") | .text' ~/.lemon/agent/sessions/*/*.jsonl | rg 'keyword'