
Memory Search
FreeEfficiently retrieve past session data with ease.
Free Β· Opens the source repo
What Memory Search does
Memory Search is a specialized tool designed for users who need to access and analyze previous work across multiple sessions. This skill is particularly useful when users inquire about past solutions or decisions, such as asking, 'Did we already fix this?' or 'How did we solve X last time?'. By leveraging a persistent cross-session memory database, Memory Search allows users to quickly locate relevant information, making it easier to build on past efforts without redundancy.
The workflow consists of three key steps: search, timeline, and fetch. First, users initiate a search using the search MCP tool to retrieve a list of relevant entries identified by their IDs. This step is crucial as it provides an indexed view of past activities, allowing users to filter results based on specific queries, project names, and other parameters. This initial search is designed to be efficient, returning only essential information like timestamps and titles to minimize token usage.
Once users have identified interesting results, they can use the timeline MCP tool to gain context around those entries. This step interleaves observations, sessions, and prompts related to a specific observation, providing a comprehensive view of the surrounding events. Finally, the get_observations MCP tool allows users to fetch detailed information about selected observations, ensuring that they only retrieve the data they need, which saves both time and resources.
Memory Search is ideal for teams or individuals who frequently revisit past projects or discussions. It streamlines the process of recalling previous work, thus enhancing productivity and collaboration. However, it is important to note that this skill is not intended for real-time conversation contexts; it is specifically designed for referencing past interactions.
When to use it
Use Memory Search when you need to reference or retrieve information from past sessions, especially when users ask about previous solutions or events.
When not to use it
This tool is not suitable for real-time queries or current session discussions, as it focuses solely on historical data retrieval.
What you can build with it
Retrieve past bug fixes
Use Memory Search to quickly find details about bug fixes from previous sessions, ensuring you don't repeat past mistakes.
Understand previous project decisions
Access past discussions and decisions made during project sessions to inform current strategies and approaches.
Analyze trends over time
Examine how solutions and outcomes have evolved by reviewing past observations and sessions related to your projects.
How to install Memory Search
View source1. Install with the skills CLI
npx skills add thedotmack/claude-mem/mem-search --agent claude-code2. Or install it manually
Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.
Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs
Inside SKILL.md
Written by thedotmackMemory Search
Search past work across all sessions. Simple workflow: search -> filter -> fetch.
When to Use
Use when users ask about PREVIOUS sessions (not current conversation):
- "Did we already fix this?"
- "How did we solve X last time?"
- "What happened last week?"
3-Layer Workflow (ALWAYS Follow)
NEVER fetch full details without filtering first. 10x token savings.
Step 1: Search - Get Index with IDs
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"
Step 2: Timeline - Get Context Around Interesting Results
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 filter
Step 3: Fetch - Get Full Details ONLY for Filtered IDs
Review 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 filter
Returns: Complete observation objects with title, subtitle, narrative, facts, concepts, files (~500-1000 tokens each)
Examples
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")
Why This Workflow?
- Search index: ~50-100 tokens per result
- Full observation: ~500-1000 tokens each
- Batch fetch: 1 HTTP request vs N individual requests
- 10x token savings by filtering before fetching
Knowledge Agents
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.
Frequently asked questions about Memory Search
Similar skills
Canva Creator
Streamline your content campaign from brief to HubSpot.
Cowork Plugin Customization
Tailor your Claude Code plugin to fit your organization.
Impediment Prioritization
Rank and prioritize impediments effectively.
Chronicle
Streamline your Copilot session analysis and reporting.
Idea Refine
Transform vague ideas into actionable concepts.
App Store Optimization
Optimize your mobile app's visibility and performance.
