Skip to content
Back to skills

Rg History

ASecurity

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.

  • 57 stars
  • 0 votes
  • 0 copies
  • 5 views
  • Added February 6, 2026
toolsgobash

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned February 12, 2026

npx -y skills add backnotprop/rg_history --skill rg_history --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Rg History?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Rg History
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/backnotprop-rg-history/badge)](https://www.skillsdirectory.com/skills/backnotprop-rg-history)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
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

```bash
# 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:
```bash
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!

```bash
# 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'` |

Files in this skill

  • SKILL.md3.4 KB
  • scripts/list-sessions.sh1.7 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.