From claude-mnemo
Search and read structured memory from past sessions in this project. Use when the user asks "did we already do this?", "how did we fix X last time?", "what happened last week?", or when you need context from a previous conversation before answering.
npx claudepluginhub kawaiillm/claude-mnemo --plugin claude-mnemoThis skill uses the workspace's default tool permissions.
`recall` is the structured read index over past sessions. It returns paginated, truncated summaries from SQLite: session headers, turn titles, observation summaries, and durable memories. For exact prompts, full tool output, or raw transcript reconstruction, switch to the `mnemo-replay` skill.
Guides Next.js Cache Components and Partial Prerendering (PPR): 'use cache' directives, cacheLife(), cacheTag(), revalidateTag() for caching, invalidation, static/dynamic optimization. Auto-activates on cacheComponents: true.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Share bugs, ideas, or general feedback.
recall is the structured read index over past sessions. It returns paginated, truncated summaries from SQLite: session headers, turn titles, observation summaries, and durable memories. For exact prompts, full tool output, or raw transcript reconstruction, switch to the mnemo-replay skill.
Three axes of read access:
recall — content index: what happened, where, and what to inspect nexttimeline — temporal narrative: how a single session unfoldedmnemo-replay skill — raw truth: direct JSONL and SQLite readsRule of thumb: start broad, then narrow. collapsed is the cheap browsing mode. Use expanded only once you have a target. If a recall result is good enough, stop there.
Use when the user asks about PREVIOUS sessions rather than the current turn:
Also use it proactively before answering questions that may already be covered by prior work.
Session [S12] one per Claude Code conversation
Turn [T3] one per user prompt (promptNumber-scoped to session)
Observation [O87] one per tool call
Memory [M4] durable cross-session knowledge
Output IDs map directly to selectors:
[S12] → recall(id="S12")[S12/T3] → recall(id="S12/T3")[O87] → recall(id="O87")[M4] → recall(id="M4")recall() # recent sessions
recall(query="auth race") # FTS across all layers
recall(query="type:bugfix file:src/auth.ts") # typed filters
recall(query="tag:feedback") # memory tag filter
recall(time="-7d") # last 7 days
recall(id="M*") # all active memories
These return paginated, collapsed results by default. Use page to move through large result sets.
recall(id="S12") # session summary + collapsed turn preview
recall(id="S12/T*") # all turns in a session
recall(id="S12/T3..7") # turn range
recall(id="S12", depth="expanded") # session content + raw transcript path
At expanded session depth, the output includes a raw: path pointing at the source JSONL. That is the handoff point to mnemo-replay when exact bytes matter.
recall(id="S12/T3", depth="expanded") # one turn with prompt + response + file lists
recall(id="S12/T3/O*") # observations for one turn
recall(id="S12/T*/O*") # observations across the session
recall(id="O87", depth="expanded") # one observation with full stored fields
If a field is truncated, raise truncate first:
recall(id="S12/T3", depth="expanded", truncate=2000)
If the result still is not enough, or you need exact wording / full tool output, switch to the mnemo-replay skill. There is no unlimited recall mode.
recall Parameter Reference| Parameter | Type | Description |
|---|---|---|
id | string | Selector. Supports wildcards (*), ranges (5..10), and nested paths (S12/T3/O*). |
query | string | Free text + optional prefixes type: / file: / project: / tag:. Tokens are ANDed. |
time | string | -7d / -2w (relative), YYYY-MM-DD (single UTC day), YYYY-MM-DD..YYYY-MM-DD (inclusive UTC range). |
depth | string | collapsed (default) or expanded. |
page | number | 1-indexed page number for the target level. Default 1. |
pageSize | number | Item count for the target level page. |
truncate | number | Character cap per rendered field. Default 200, max 2000. |
Omit both id and query to get recent sessions.
Child collections are always shown as a fixed preview with a +N more hint. To inspect more children, narrow the selector to that child level.
| Form | Meaning |
|---|---|
S* / S12 / S5..10 | Sessions |
S12/T* / S12/T3 / S12/T3..7 | Turns in a session |
S12/T3/O* | Observations for one turn |
S12/T*/O* | Observations for an entire session |
O87 | Single observation (global DB id) |
M* / M4 / M1..20 | Memories |
Turn IDs are session-scoped prompt numbers, not global DB ids.
| Prefix | Applies to | Notes |
|---|---|---|
type:bugfix | turns, observations, memories | Matches stored type tags. |
file:src/auth.ts | turns, observations | Substring match against files_read + files_modified. |
project:/abs/path | sessions, turns, observations | Exact match against session.project. |
tag:foo | memories only | Post-filter on memory tags. |
Free words become an FTS query over indexed text.
| Depth | Use when |
|---|---|
collapsed | Browsing and list navigation. |
expanded | You have a specific target and need stored fields inline. |
There is no full depth anymore.
"Did we already fix the auth race?"
recall(query="auth race")
# → sees [S12/T3] "Fixed auth mutex"
recall(id="S12/T3", depth="expanded")
"Show me the exact edit to login.ts last Thursday"
recall(query="file:src/login.ts", time="2026-04-03")
# → picks out [S8/T2]
recall(id="S8", depth="expanded")
# → session shows raw: /Users/...jsonl
# → switch to mnemo-replay for exact transcript bytes
"What feedback has the user given about testing?"
recall(query="tag:feedback testing")
recall(id="M4", depth="expanded")
recall for search, browsing, and structured answers.id, query, or time before raising depth, pageSize, or truncate.project:<path> when the question is project-local.recall shows a raw: path or a truncation hint, that is your signal to switch to mnemo-replay.