recall
Recall
Query the session activity index for event history, file change logs, decisions, and errors. The session index is written continuously by the PostToolUse hook and persists across compaction events.
Skill type: Rigid -- follow exactly, no shortcuts.
Execution model: Direct execution by the orchestrator. No subagent dispatch. No Agent/Task tool needed.
Announce at start: Output [recall] Querying session activity index... before any processing.
Session Index Discovery
The session index lives at:
~/.claude/projects/<project-hash>/memory/session-index/<session-id>/
events.jsonl # append-only event log
summary.md # rolling narrative summary
Discover the index path:
- Compute project hash:
echo -n "<absolute project dir>" | sha256sum | cut -c1-16 - Glob for
~/.claude/projects/<hash>/memory/session-index/*/events.jsonl - Pick the most recently modified
events.jsonl— its parent directory is the active session index - If no session index exists, return:
No session index found. Enable session indexing by adding the PostToolUse hook — see
hooks/README.md.
Tool constraint: Use Read and Glob tools for session-index access. Do not use Bash to access ~/.claude/ paths (safety hooks block this).
Query Modes
No Arguments: /recall
Return the full contents of summary.md. If summary.md does not exist but events.jsonl does, read the last 20 entries from events.jsonl and format them as a table.
Keyword Search: /recall what files did I edit
- Read
events.jsonlusing the Read tool - Search all entries for lines containing any of the query keywords (case-insensitive match on the
summaryanddetailfields) - Return up to 20 most recent matching entries, formatted as a table
Type Filter: /recall errors, /recall decisions, /recall edits
Map common words to event types:
| Query Word | Event Type(s) |
|---|---|
| errors | error |
| decisions | decision |
| edits, files | file_edit, file_create |
| commits | git_commit |
| tests | test_run |
| phases | phase_change |
Filter events.jsonl to matching types. Return up to 20 most recent entries.
Time Range: /recall last 30 minutes, /recall last hour
Parse the time expression:
- "last N minutes" -> filter events with
tswithin the last N minutes - "last N hours" / "last hour" -> filter events within the last N hours
- "today" -> filter events from today (UTC)
Return up to 20 most recent matching entries.
Output Format
For summary mode (no arguments), return the raw summary.md content.
For filtered/search results, format as:
## Recall: [query description]
**Showing:** [N] events from [time range or filter description]
| Time | Type | Summary |
|------|------|---------|
| 14:30 | file_edit | Modified src/auth/middleware.ts: added rate limiting |
| 14:32 | file_create | Created docs/plans/auth-rate-limit.md |
| ... | ... | ... |
Cap output at 20 entries. If more entries match, note the total: *(showing 20 of 47 matching events)*.
Event Schema Reference
Each line in events.jsonl follows this schema (see skills/shared/session-index-convention.md for full details):
{
"ts": "2026-04-07T14:30:00Z",
"seq": 1,
"type": "file_edit | file_create | git_commit | git_checkout | test_run | error | decision | phase_change | skill_start | skill_end",
"summary": "One-line human-readable summary, max 120 chars",
"detail": { "type-specific payload" }
}
Integration with Pipeline Skills
Pipeline skills can invoke /recall internally after compaction to supplement CSB-based recovery:
- Existing recovery: Read CSB / pipeline-status.md / handoff manifest
- Supplementary: Read
summary.mdfrom the session index for narrative context - Targeted: Query specific events via
/recallfor focused context (e.g.,/recall errorsto recover error history)
This is additive -- it does not replace existing recovery mechanisms.
Red Flags
- Using Bash to access
~/.claude/paths (use Read/Glob tools instead) - Treating session index as authoritative over CSB state (session index is supplementary narrative, CSB is authoritative state)
- Returning more than 20 events in a single recall (wastes context budget)
- Failing silently when the session index is missing (must return a helpful message pointing to hook setup)
More from raddue/crucible
test-driven-development
Use when implementing any feature or bugfix, before writing implementation code
8adversarial-tester
Use after completing implementation to find unknown failure modes. Reads implementation diff and writes up to 5 tests designed to make it break. Triggers on 'break it', 'adversarial test', 'stress test implementation', 'find weaknesses', or any task seeking to expose unknown failure modes.
5quality-gate
Iterative red-teaming of any artifact (design docs, plans, code, hypotheses, mockups). Loops until clean or stagnation. Invoked by artifact-producing skills or their parent orchestrator.
5code-review
Use when completing tasks, implementing major features, or before merging to verify work meets requirements
5finish
Use when implementation is complete, all tests pass, and you need to decide how to integrate the work - guides completion of development work by presenting structured options for merge, PR, or cleanup
4verify
Use when about to claim work is complete, fixed, or passing, before committing or creating PRs - requires running verification commands and confirming output before making any success claims; evidence before assertions always
4