/recall
Use when the current request needs relevant memories from Mem9.
Claude Code
$ npx -y skills add mem9-ai/mem9 --skill recall --agent claude-code
Codex
$ npx skills add mem9-ai/mem9 --skill recall -a codex -y
Cursor
$ npx skills add mem9-ai/mem9 --skill recall -a cursor -y
Gemini CLI
$ npx skills add mem9-ai/mem9 --skill recall -a gemini-cli -y
GitHub Copilot
$ npx skills add mem9-ai/mem9 --skill recall -a github-copilot -y
OpenCode
$ npx skills add mem9-ai/mem9 --skill recall -a opencode -y
Windsurf
$ npx skills add mem9-ai/mem9 --skill recall -a windsurf -y
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.
Other skills on mem9.
More skills from other plugins.
paddleocr-doc-parsing
Use this skill to extract structured Markdown/JSON from PDFs and document images—tables with cell-level precision, formulas as…
13c-metabolic-flux
Estimates intracellular metabolic fluxes from steady-state carbon-13 isotope-tracing measurements using validated atom maps,…
Questions about recall.
- Which coding agents can use recall?
- recall installs in Claude Code, Codex, Cursor, Gemini CLI, GitHub Copilot, OpenCode and Windsurf with the skills CLI, using each agent's flag shown on this page. Flowy's auto-invocation, which fires a skill when your prompt matches, runs in Claude Code only.

