Search claude-mem's persistent cross-session memory database. Use when user asks "did we already solve this?", "how did we do X last time?", or needs work from previous sessions.
86
83%
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Passed
No known issues
Search past work across all sessions. Simple workflow: search -> filter -> fetch.
Use when users ask about PREVIOUS sessions (not current conversation):
NEVER fetch full details without filtering first. 10x token savings.
Use the search MCP tool:
search(query="authentication", limit=20, project="my-project")Returns: Table with IDs, timestamps, types, titles (~50-100 tokens/result)
| ID | Time | T | Title | Read |
|----|------|---|-------|------|
| #11131 | 3:48 PM | 🟣 | Added JWT authentication | ~75 |
| #10942 | 2:15 PM | 🔴 | Fixed auth token expiration | ~50 |Parameters:
query (string) - Search termlimit (number) - Max results, default 20, max 100project (string) - Project name filtertype (string, optional) - "observations", "sessions", or "prompts"obs_type (string, optional) - Comma-separated: bugfix, feature, decision, discovery, changedateStart (string, optional) - YYYY-MM-DD or epoch msdateEnd (string, optional) - YYYY-MM-DD or epoch msoffset (number, optional) - Skip N resultsorderBy (string, optional) - "date_desc" (default), "date_asc", "relevance"Use the timeline MCP tool:
timeline(anchor=11131, depth_before=3, depth_after=3, project="my-project")Or find anchor automatically from query:
timeline(query="authentication", depth_before=3, depth_after=3, project="my-project")Returns: depth_before + 1 + depth_after items in chronological order with observations, sessions, and prompts interleaved around the anchor.
Parameters:
anchor (number, optional) - Observation ID to center aroundquery (string, optional) - Find anchor automatically if anchor not provideddepth_before (number, optional) - Items before anchor, default 5, max 20depth_after (number, optional) - Items after anchor, default 5, max 20project (string) - Project name filterReview titles from Step 1 and context from Step 2. Pick relevant IDs. Discard the rest.
Use the get_observations MCP tool:
get_observations(ids=[11131, 10942])ALWAYS use get_observations for 2+ observations - single request vs N requests.
Parameters:
ids (array of numbers, required) - Observation IDs to fetchorderBy (string, optional) - "date_desc" (default), "date_asc"limit (number, optional) - Max observations to returnproject (string, optional) - Project name filterReturns: Complete observation objects with title, subtitle, narrative, facts, concepts, files (~500-1000 tokens each)
Find recent bug fixes:
search(query="bug", type="observations", obs_type="bugfix", limit=20, project="my-project")Find what happened last week:
search(type="observations", dateStart="2025-11-11", limit=20, project="my-project")Understand context around a discovery:
timeline(anchor=11131, depth_before=5, depth_after=5, project="my-project")Batch fetch details:
get_observations(ids=[11131, 10942, 10855], orderBy="date_desc")Smart-explore tools (smart_search, smart_outline, smart_unfold) use tree-sitter AST parsing. The following languages are supported out of the box.
JS, TS, Python, Go, Rust, Ruby, Java, C, C++, Kotlin, Swift, PHP, Elixir, Lua, Scala, Bash, Haskell, Zig, CSS, SCSS, TOML, YAML, SQL, Markdown
Markdown files get structure-aware parsing beyond generic tree-sitter:
#/##/### headings are extracted as nested symbols (sections contain subsections)code symbols with language annotationsmart_unfold on a heading returns the full section content (heading through all subsections until the next heading of equal or higher level).claude-mem.jsonAdd custom tree-sitter grammars for languages not in the bundled set. Place .claude-mem.json in the project root:
{
"grammars": {
"gleam": {
"package": "tree-sitter-gleam",
"extensions": [".gleam"]
},
"protobuf": {
"package": "tree-sitter-proto",
"extensions": [".proto"],
"query": ".claude-mem/queries/proto.scm"
}
}
}Fields:
package (string, required) -- npm package name for the tree-sitter grammarextensions (array of strings, required) -- file extensions to associate with this languagequery (string, optional) -- path to a custom .scm query file for symbol extraction. If omitted, a generic query is used.Rules:
npm install tree-sitter-gleam)..claude-mem.json take effect on next worker restart.Want synthesized answers instead of raw records? Use /knowledge-agent to build a queryable corpus from your observation history. The knowledge agent reads all matching observations and answers questions conversationally.
cde4faa
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.