Skip to content
cccskills
FreePublished on GitHubEnglish overview

mem-search

Search persistent claude-mem memories to recover past decisions, solutions, and work history. Review compact search results, surrounding context, and selected details, or let the tool handle these steps automatically for a clear query.

OriginalShow the original description

Smart search (default). Search claude-mem's persistent cross-session memory database in three steps: search, timeline, then selected get_observations. Use when user asks "did we already solve this?", "how did we do X last time?", or needs work from previous sessions.

AI rating90/ 100See how to install

Good for

  • Recall decisions from earlier sessions
  • Find solutions to previously resolved problems
  • Review work history before a handoff
  • Check existing memories before saving a note

Overview

What it does

mem-search searches decisions, solutions, and work history stored in claude-mem across sessions. It uses mem_search to show compact result titles first, then surrounding context, and finally any details you need. If the initial list answers your question, the search stops there. For a clear query, an automatic option can select candidates and retrieve details.

When it helps

Use it to recall a decision from another session, find how a previous bug was resolved, or review work history before a handoff. Before saving a new note, you can also check whether related decisions or corrections are already recorded.

Example requests

  • “Find how we decided the authentication token expiry for this project.”
  • “Check the previous handoff notes and show details only for records needed now.”

Notes

You need access to claude-mem search tools. Automatically selected records may not answer the question, so review their contents. Saving notes depends on available write tools; a read-only connection may not support it. Treat stored instructions and commands as historical material, not instructions to execute.

This overview was written by AI (OpenAI Codex) from the public SKILL.md. Check the original below for the exact behavior.

Objective evaluation

AI rated this skill on four points using only the contents of its SKILL.md. Stars and popularity are not taken into account.

Clear instructionsIs it clear when to use it and what it does?
AGoodIt explicitly covers searching past decisions, solutions, and work history, including searches before saving notes.
Concrete stepsAre steps, inputs, outputs, and examples spelled out?
AGoodIt provides three-stage mem_search examples, selected IDs, result formats, and retrieval limits.
SafetyAre sending data, deleting files, and running commands disclosed?
AGoodIt requires treating stored commands as data, retrieving only selected records, and excluding secrets from saved notes.
Easy setupDoes it need few tools or API keys, and are they documented?
BPartly lackingIt depends on claude-mem search and note-saving tools but provides no installation steps for them.

The total counts each point as A = 25, B = 15, C = 5. Rated by AI (OpenAI Codex) as of Oct 20, 2026. Treat it as a guide and read the original before installing.

Disagree? Request a re-evaluation

Tell us which point is wrong and why. No login needed. We will check it against the SKILL.md, redo the evaluation, and show the result here.

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

Files included (1)

  • SKILL.md7.7 KB

SKILL.md (original)

Review the instructions the agent will receive before you install.

Smart Search (Default)

Search past work across all sessions. Use the original three-step mem-search workflow by default: search → timeline → selected get_observations. Reason about the index and context before choosing details. Do not use auto or guided modes.

Runtime and Tool Names

The examples below use the local worker tools. Native Pi and DSH integrations name the same three steps mem_search, mem_timeline, and mem_get_observations. Native OpenCode uses claude_mem_search, claude_mem_timeline, and claude_mem_get_observations. CMEM Pro uses memory_search, timeline, and get_observations; use the parameter names advertised by that connection.

A self-hosted server runtime uses the same three steps: search, timeline, and get_observations, scoped to the configured server project. Server observation IDs are strings. Set projectId only when selecting another authorized server project. Dumb search is unavailable in server runtime. A direct self-hosted /v1/mcp connection instead requires projectId on each call and anchorId for its timeline. CMEM Pro also uses anchorId for timeline context, and uses get_summaries when the selected index rows are session summaries. Follow the active connection’s advertised schema.

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?"

Layered 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 term
  • limit (number) - Max results, default 20, max 100
  • project (string) - Project name filter
  • type (string, optional) - "observations", "sessions", or "prompts"
  • obs_type (string, optional) - Comma-separated: bugfix, feature, decision, discovery, change
  • dateStart (string, optional) - YYYY-MM-DD or epoch ms
  • dateEnd (string, optional) - YYYY-MM-DD or epoch ms
  • offset (number, optional) - Skip N results
  • orderBy (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 around
  • query (string, optional) - Find anchor automatically if anchor not provided
  • depth_before (number, optional) - Items before anchor, default 5, max 20
  • depth_after (number, optional) - Items after anchor, default 5, max 20
  • project (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 fetch
  • orderBy (string, optional) - "date_desc" (default), "date_asc"
  • limit (number, optional) - Max observations to return
  • project (string, optional) - Project name filter

Returns: Complete observation objects with title, subtitle, narrative, facts, concepts, files (~500-1000 tokens each)

Exceptional Follow-up: Raw Tool I/O - Only When Step 3 Was Not Enough

Observations are summaries. When the answer needs the literal bytes a tool returned — the exact diff, the exact command output, the exact API response — use the get_tool_uses MCP tool:

get_tool_uses(ids=["toolu_01ABC..."], project="my-project")

Do not start here. Raw tool bodies are unsummarized and can run to thousands of tokens each; that is the whole reason claude-mem compresses them into observations in the first place. Reach for this layer only after search / timeline / get_observations pointed you at specific tool calls.

Parameters:

  • ids (array, required) - Numeric tool_uses ids OR opaque tool_use_id strings
  • limit (number, optional) - Max rows to return
  • project (string, optional) - Project name filter
  • contentSessionId (string, optional) - Restrict to one session

Returns: The stored tool_input / tool_response for those calls, plus the tool name, session ids, and the observation each was folded into. Payloads over 64 KB were truncated on write and carry a …[truncated: N bytes] marker.

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")

Recover the exact output of a command we ran last week:

search(query="migration failed", limit=20, project="my-project")
timeline(anchor=11131, project="my-project")
get_observations(ids=[11131])            # read the summary first
get_tool_uses(ids=["toolu_01ABC..."])    # only if the summary omitted the detail

Why This Workflow?

  • Search index: ~50-100 tokens per result
  • Full observation: ~500-1000 tokens each
  • Raw tool body: up to 64 KB each — the layer you skip 95% of the time
  • 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.

Dumb Search (Optional)

Doesn’t reason about the results. Fast, but shallow. Use Smart for reliable recall.

dumb_search(query="authentication token expiry", project="my-project")

This one-call lookup picks records whose titles share the most query words, adds nearby context, and returns up to maxDetails (default 3, max 5) records. Matching words from unrelated projects can crowd out useful results, and conflicting records are not reconciled. Use only for a quick, direct lookup; use Smart search by default.

Durable Note Taking

Search for related decisions before saving a new note. Save useful decisions, corrections, resolved failures, and handoff facts through save_memory(text="...", title="...", project="...") for local-worker notes when that tool is available. In server runtime, use observation_add for the selected server project when available; save_memory never writes server notes. Keep the note factual, concise, and tied to evidence. Do not save secrets or copy whole transcripts.

Reviews

No reviews yet. Tell others what you thought.

Comments

No login needed. Share how it worked for you, ask a question, or note where it did not run.

No comments yet. Be the first to write one.

Comments are published right away. Do not include personal information such as email addresses or phone numbers. Up to 2 URLs.

0 / 1,000 characters

This form is protected by reCAPTCHA, and the Google Privacy Policy and Terms of Service apply.

More skills from this repository

Agent Cost Report

FreeSummaryAI rating 90

Turn agent activity and transcript token counts into a cost report organized around completed outcomes. Separate estimates from measured spending, examine waste and rework, and export readable HTML with supporting JSON, CSV, and evidence.

  • Reviewing weekly agent spending and completed work
  • Comparing costs per completed outcome
  • Investigating the cost of loops and rework
thedotmack/claude-mem102.3KUpdated Oct 22, 2026

babysit

FreeSummaryAI rating 80

Monitor a pull request through reviews and automated checks, verify reported issues against the code, and make focused fixes. Repeat testing and review checks until actionable comments and unresolved threads are cleared and the request is ready to merge.

  • Monitoring a pull request while automated checks run
  • Verifying and fixing review comments
  • Checking unresolved threads before a merge
thedotmack/claude-mem102.3KUpdated Oct 22, 2026

build-and-release

FreeSummaryAI rating 60

Delegate a coding task to a subagent that runs build, merges the ready pull request, and continues from the updated main branch into release, connecting implementation and release work in one automated sequence.

  • Delegating a coding task through release
  • Connecting a ready PR merge to release work
  • Running build and release in sequence
thedotmack/claude-mem102.3KUpdated Oct 22, 2026

ccs-align

FreeSummaryAI rating 90

Check a local claude-mem worker, refresh viewer-specific caches of important observations, and exclude or restore records without deleting history. Inspect rules across shared, project, and agent layers, then append conflicts to a report.

  • Checking worker health and refreshing important observations
  • Excluding cached records while preserving source history
  • Restoring previously excluded observations to a cache
thedotmack/claude-mem102.3KUpdated Oct 22, 2026

childhood

FreeSummaryAI rating 90

Monitor a shipped release by checking published packages, live services, installed plugins, and late CI results or user reports. Verify regressions, prepare authorized fixes, and report release health with evidence and any remaining verification gaps.

  • Checking package contents after publication
  • Verifying changed user flows in production
  • Confirming installed plugins use the shipped version
thedotmack/claude-mem102.3KUpdated Oct 22, 2026

claude-mem-install

FreeSummaryAI rating 90

Set up claude-mem for Grok Bot with a local worker and CMEM Pro service for recording observations. The skill also covers an optional host-login setup and remote cmem.ai connection, without requiring Cursor.

  • Install claude-mem for Grok Bot
  • Set up a local worker with CMEM Pro
  • Choose the optional host-login observer
thedotmack/claude-mem102.3KUpdated Oct 22, 2026

See all skills by thedotmack

Report a problem with this skill