/recall
Use when the current request needs relevant memories from Mem9.
$ npx -y skills add mem9-ai/mem9 --skill recall --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/recall
Context preview
The summary Claude sees to decide when to auto-load this skill.
Use when the current request needs relevant memories from Mem9.
SKILL.md
recall.SKILL.mddescription: Use when the current request needs relevant memories from Mem9.
context: fork
allowed-tools:
- Bash
- Read
disable-model-invocation: true
Mem9 Recall
Use this skill when the current request could benefit from historical context stored in Mem9.
Steps
1. Check `${CLAUDE_PLUGIN_DATA}/auth.json`. If it is missing, tell the user to run `/mem9:setup` first. 2. Use `${CLAUDE_PLUGIN_DATA}/auth.json` only as request credentials. Do not print the file contents or the API key. 3. Search Mem9 with the current question across all agents in the account (no `agent_id` filter).
set -euo pipefail
auth_file="${CLAUDE_PLUGIN_DATA}/auth.json"
test -f "$auth_file"
read_api_key_and_base_url="$(node -e 'const fs=require("node:fs"); const data=JSON.parse(fs.readFileSync(process.argv[1],"utf8")); const values=[data.api_key || "", data.base_url || "https://api.mem9.ai"]; process.stdout.write(values.join("\t"));' "$auth_file")"
api_key="${read_api_key_and_base_url%% *}"
base_url="${read_api_key_and_base_url#* }"
test -n "$api_key"
test -n "$base_url"
plugin_version="unknown"
if [ -n "${CLAUDE_PLUGIN_ROOT:-}" ] && [ -f "${CLAUDE_PLUGIN_ROOT}/.claude-plugin/plugin.json" ]; then
plugin_version="$(node -e 'const fs=require("node:fs"); const data=JSON.parse(fs.readFileSync(process.argv[1],"utf8")); process.stdout.write(data.version || "unknown");' "${CLAUDE_PLUGIN_ROOT}/.claude-plugin/plugin.json")"
fi
query='REPLACE_WITH_SEARCH_QUERY'
encoded_query="$(printf '%s' "$query" | node -e 'const fs=require("node:fs"); const raw=fs.readFileSync(0,"utf8").trim(); process.stdout.write(encodeURIComponent(raw));')"
curl -sf --max-time 8 \
-H "Content-Type: application/json" \
-H "X-API-Key: ${api_key}" \
-H "X-Mnemo-Agent-Id: claude-code" \
-H "User-Agent: mem9-plugin/claude-code/${plugin_version}" \
"${base_url%/}/v1alpha2/mem9s/memories?q=${encoded_query}&limit=10"Return only the memories that help with the current question. Never reveal secret values.
Read more
description: Use when the current request needs relevant memories from Mem9. context: fork allowed-tools: - Bash - Read disable-model-invocation: true
Mem9 Recall
Use this skill when the current request could benefit from historical context stored in Mem9.
Steps
1. Check `${CLAUDE_PLUGIN_DATA}/auth.json`. If it is missing, tell the user to run `/mem9:setup` first. 2. Use `${CLAUDE_PLUGIN_DATA}/auth.json` only as request credentials. Do not print the file contents or the API key. 3. Search Mem9 with the current question across all agents in the account (no `agent_id` filter).
set -euo pipefail
auth_file="${CLAUDE_PLUGIN_DATA}/auth.json"
test -f "$auth_file"
read_api_key_and_base_url="$(node -e 'const fs=require("node:fs"); const data=JSON.parse(fs.readFileSync(process.argv[1],"utf8")); const values=[data.api_key || "", data.base_url || "https://api.mem9.ai"]; process.stdout.write(values.join("\t"));' "$auth_file")"
api_key="${read_api_key_and_base_url%% *}"
base_url="${read_api_key_and_base_url#* }"
test -n "$api_key"
test -n "$base_url"
plugin_version="unknown"
if [ -n "${CLAUDE_PLUGIN_ROOT:-}" ] && [ -f "${CLAUDE_PLUGIN_ROOT}/.claude-plugin/plugin.json" ]; then
plugin_version="$(node -e 'const fs=require("node:fs"); const data=JSON.parse(fs.readFileSync(process.argv[1],"utf8")); process.stdout.write(data.version || "unknown");' "${CLAUDE_PLUGIN_ROOT}/.claude-plugin/plugin.json")"
fi
query='REPLACE_WITH_SEARCH_QUERY'
encoded_query="$(printf '%s' "$query" | node -e 'const fs=require("node:fs"); const raw=fs.readFileSync(0,"utf8").trim(); process.stdout.write(encodeURIComponent(raw));')"
curl -sf --max-time 8 \
-H "Content-Type: application/json" \
-H "X-API-Key: ${api_key}" \
-H "X-Mnemo-Agent-Id: claude-code" \
-H "User-Agent: mem9-plugin/claude-code/${plugin_version}" \
"${base_url%/}/v1alpha2/mem9s/memories?q=${encoded_query}&limit=10"Return only the memories that help with the current question. Never reveal secret values.
Repo: mem9-ai/mem9
Other skills on mem9.
- /setup
Use when Mem9 needs to be initialized, repaired, or checked in this Claude Code environment.
Open skill - /store
Use when the user explicitly asks Claude to remember one fact, preference, or instruction in Mem9.
Open skill - /cleanup
Remove mem9-managed Codex files before reinstalling, resetting, or uninstalling mem9.
Open skill - /setup
Inspect and configure mem9 for Codex through the single setup entrypoint.
Open skill - /store
Store one user-approved fact, preference, or instruction in mem9.
Open skill - /mnemos-setup
Setup mnemos persistent memory with mnemo-server. Triggers: "set up mnemos", "install mnemo plugin", "configure memory plugin", "configure openclaw memory", "configure opencode memory", "configure claude code memory".
Open skill

