Agent Skillsspinabot/brigade › session-logs

session-logs

GitHub

通过jq命令搜索和分析存储在JSONL文件中的历史会话日志。适用于用户询问过往对话、父级会话或内存中未包含的历史上下文场景,支持按日期查找、内容检索、成本统计及消息分析。

skills/session-logs/SKILL.md spinabot/brigade

Trigger Scenarios

查询之前的聊天记录 引用父级会话内容 获取不在当前记忆中的历史上下文

Install

npx skills add spinabot/brigade --skill session-logs -g -y
More Options

Use without installing

npx skills use spinabot/brigade@session-logs

指定 Agent (Claude Code)

npx skills add spinabot/brigade --skill session-logs -a claude-code -g -y

安装 repo 全部 skill

npx skills add spinabot/brigade --all -g -y

预览 repo 内 skill

npx skills add spinabot/brigade --list

SKILL.md

Frontmatter
{
    "name": "session-logs",
    "metadata": {
        "brigade": {
            "emoji": "📜",
            "install": [
                {
                    "id": "brew-jq",
                    "bins": [
                        "jq"
                    ],
                    "kind": "brew",
                    "label": "Install jq (brew)",
                    "formula": "jq"
                },
                {
                    "id": "brew-rg",
                    "bins": [
                        "rg"
                    ],
                    "kind": "brew",
                    "label": "Install ripgrep (brew)",
                    "formula": "ripgrep"
                }
            ],
            "requires": {
                "bins": [
                    "jq",
                    "rg"
                ]
            }
        }
    },
    "description": "Search and analyze your own session logs (older\/parent conversations) using jq."
}

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 under the active state directory: $BRIGADE_STATE_DIR/agents/<agentId>/sessions/ (default: ~/.brigade/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

AGENT_ID="<agentId>"
SESSION_DIR="${BRIGADE_STATE_DIR:-$HOME/.brigade}/agents/$AGENT_ID/sessions"
for f in "$SESSION_DIR"/*.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

AGENT_ID="<agentId>"
SESSION_DIR="${BRIGADE_STATE_DIR:-$HOME/.brigade}/agents/$AGENT_ID/sessions"
for f in "$SESSION_DIR"/*.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

AGENT_ID="<agentId>"
SESSION_DIR="${BRIGADE_STATE_DIR:-$HOME/.brigade}/agents/$AGENT_ID/sessions"
for f in "$SESSION_DIR"/*.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

AGENT_ID="<agentId>"
SESSION_DIR="${BRIGADE_STATE_DIR:-$HOME/.brigade}/agents/$AGENT_ID/sessions"
rg -l "phrase" "$SESSION_DIR"/*.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)

AGENT_ID="<agentId>"
SESSION_DIR="${BRIGADE_STATE_DIR:-$HOME/.brigade}/agents/$AGENT_ID/sessions"
jq -r 'select(.type=="message") | .message.content[]? | select(.type=="text") | .text' "$SESSION_DIR"/<id>.jsonl | rg 'keyword'

Version History

  • db99206 Current 2026-07-05 10:59

Same Skill Collection

skills/1password/SKILL.md
skills/apple-notes/SKILL.md
skills/apple-reminders/SKILL.md
skills/bear-notes/SKILL.md
skills/blogwatcher/SKILL.md
skills/blucli/SKILL.md
skills/bluebubbles/SKILL.md
skills/canvas/SKILL.md
skills/discord/SKILL.md
skills/docx/SKILL.md
skills/eightctl/SKILL.md
skills/gemini/SKILL.md
skills/gh-issues/SKILL.md
skills/gifgrep/SKILL.md
skills/git-commit/SKILL.md
skills/github/SKILL.md
skills/gog/SKILL.md
skills/goplaces/SKILL.md
skills/healthcheck/SKILL.md
skills/himalaya/SKILL.md
skills/hyperframes/SKILL.md
skills/imsg/SKILL.md
skills/lead-scout/SKILL.md
skills/mcporter/SKILL.md
skills/model-usage/SKILL.md
skills/nano-pdf/SKILL.md
skills/node-connect/SKILL.md
skills/notion/SKILL.md
skills/oauth-setup/SKILL.md
skills/obsidian/SKILL.md
skills/openai-whisper-api/SKILL.md
skills/openai-whisper/SKILL.md
skills/openhue/SKILL.md
skills/oracle/SKILL.md
skills/ordercli/SKILL.md
skills/pdf/SKILL.md
skills/peekaboo/SKILL.md
skills/share-skills/SKILL.md
skills/sherpa-onnx-tts/SKILL.md
skills/slack/SKILL.md
skills/songsee/SKILL.md
skills/sonoscli/SKILL.md
skills/spotify-player/SKILL.md
skills/summarize/SKILL.md
skills/taskflow-inbox-triage/SKILL.md
skills/taskflow/SKILL.md
skills/things-mac/SKILL.md
skills/tmux/SKILL.md
skills/trello/SKILL.md
skills/video-frames/SKILL.md
skills/voice-call/SKILL.md
skills/wacli/SKILL.md
skills/weather/SKILL.md
skills/xlsx/SKILL.md
skills/xurl/SKILL.md
skills/camsnap/SKILL.md
skills/coding-agent/SKILL.md
skills/sag/SKILL.md
skills/skill-creator/SKILL.md

Metadata

Files
0
Version
3a48cfb
Hash
53a29e8c
Indexed
2026-07-05 10:59

Home - Wiki
Copyright © 2011-2026 iteam. Current version is 2.155.2. UTC+08:00, 2026-07-16 05:37
浙ICP备14020137号-1 $Map of visitor$