Use when you have a written implementation plan to execute in a separate session with review checkpoints
npx skills add backnotprop/rg_history --skill "rg_history"
Install specific skill from multi-skill repository
# Description
Search your conversation history using ripgrep. Use when you need to find previous messages, file edits, tool calls, or decisions from earlier in the session.
# SKILL.md
name: rg_history
description: Search your conversation history using ripgrep. Use when you need to find previous messages, file edits, tool calls, or decisions from earlier in the session.
rg_history
Search your session history with ripgrep.
CRITICAL: Search Strategy
Each event is one long JSON line. Full output will overwhelm you. Always start broad with limited output, then narrow in.
The Pattern
# 1. COUNT first - how many matches?
rg -c 'search_term' session.jsonl
# 2. SNIPPETS - get context around matches (not full lines)
rg -o '.{0,60}search_term.{0,60}' session.jsonl | head -20
# 3. NARROW - pipe to filter further
rg -o '.{0,60}search_term.{0,60}' session.jsonl | rg 'new_string'
# 4. FULL CONTEXT - only when you know what you want
rg '"name":"Edit".*search_term' session.jsonl -M 500
Never run raw rg 'pattern' file.jsonl - you'll get walls of JSON.
Always use one of:
- -c to count matches
- -o '.{0,60}pattern.{0,60}' for snippets
- -M 200 to truncate lines
- | head -20 to limit results
Find Your Session Files
Run the helper script:
scripts/list-sessions.sh /path/to/project # defaults to cwd
Or construct manually:
~/.claude/projects/{encoded_project_path}/{session_id}.jsonl
Where encoded_project_path = project path with / replaced by -.
File Structure
~/.claude/projects/-Users-ramos-my-project/
βββ abc123-def4-5678-....jsonl # Main session (UUID format)
βββ agent-a1b2c3d.jsonl # Sub-agent spawned by Task tool
βββ ...
- Main session: Full UUID, your conversation
- Agent files:
agent-{7-char-id}.jsonl, from Task tool - Agent IDs appear in results as
"agentId": "a1b2c3d"
JSONL Structure Reference
Each line is one JSON object. Key fields:
Message types:
- "type":"user" + "userType":"external" = actual human input
- "type":"assistant" = Claude's responses
- "type":"tool_result" = tool output
Tool calls (in assistant messages):
- "name":"Edit" β "input":{"file_path":"...", "old_string":"...", "new_string":"..."}
- "name":"Write" β "input":{"file_path":"...", "content":"..."}
- "name":"Bash" β "input":{"command":"..."}
- "name":"Task" β "input":{"prompt":"...", "subagent_type":"..."}
Content blocks:
- "type":"text" - message text
- "type":"thinking" - Claude's reasoning
- "type":"tool_use" - tool invocation
Other fields:
- "timestamp":"2025-12-20T..." - when it happened
- "agentId":"..." - links to agent file
- "isCompactSummary":true - compacted context
Example Search Patterns
Remember: always use snippets or limit output!
# Find human messages (not tool results)
rg -o '.{0,40}"userType":"external".{0,40}' session.jsonl | head -10
# Find file edits
rg -c '"name":"Edit"' session.jsonl # count first
rg -o '.{0,50}"name":"Edit".{0,50}' session.jsonl | head -10
# Find edits to specific file
rg -o '.{0,30}auth.{0,30}' session.jsonl | rg 'file_path'
# Find commands that were run
rg -o '.{0,80}"command":".{0,80}' session.jsonl | head -10
# Find code in file writes
rg -o '.{0,60}function.{0,60}' session.jsonl | rg 'new_string\|content'
Quick Reference
| Goal | Command |
|---|---|
| Count matches | rg -c 'pattern' file |
| Snippets | rg -o '.{0,60}pattern.{0,60}' file |
| Limit output | \| head -20 |
| Truncate lines | -M 200 |
| Case insensitive | -i |
| Chain filters | rg 'a' \| rg 'b' |
# README.md
rg_history - Agent Skill
Claude's entire memory exists in the file system. This is a skill to search it.
No vector databases. No indexing. No additional overhead. Agent discovery at its best and simplest.
Install (Claude Code)
ripgrep must be installed.
# Personal installation
git clone https://github.com/backnotprop/rg_history.git ~/.claude/skills/rg_history
# Project installation
git clone https://github.com/backnotprop/rg_history.git .claude/skills/rg_history
Restart Claude Code. The skill loads automatically.
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.