/recall
Search Wenlan's local memory from Codex by query. Targeted lookup, not session orientation. Invoked as /recall <query>.
$ npx -y skills add 7xuanlu/wenlan --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.
- 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.
Search Wenlan's local memory from Codex by query. Targeted lookup, not session orientation. Invoked as /recall <query>.
SKILL.md
recall.SKILL.mdname: recall
description: >
Search Wenlan's local memory from Codex by query. Targeted lookup, not
session orientation. Invoked as /recall <query>.
argument-hint: "<query>"
allowed-tools: ["Bash", "mcp__wenlan__recall", "mcp__wenlan__get_memory_revisions"]
user-invocable: true
/recall
Search Wenlan memory by natural-language query. Use `/brief` for broad session orientation and `/recall` for a specific fact, decision, lesson, or preference.
Argument parsing
Accept one optional inline token of the form `space:<name>` anywhere in the argument string. Extract it before treating the rest as the query:
raw_args="<the full argument string passed to /recall>"
space_arg="$(printf '%s\n' "$raw_args" | grep -oE 'space:[A-Za-z0-9_-]+' | head -1 | cut -d: -f2)"
query="$(printf '%s\n' "$raw_args" | sed -E 's/[[:space:]]*space:[A-Za-z0-9_-]+[[:space:]]*/ /g' | sed -E 's/^[[:space:]]+|[[:space:]]+$//g')"
If `query` is empty, ask the user what they want to search for.
Resolve the active space
Call the Codex resolver:
resolved="$(plugin-codex/bin/resolve-space.sh --cwd "$PWD" ${space_arg:+--arg "$space_arg"} 2>/dev/null)"
space="$(printf '%s\n' "$resolved" | cut -f1)"
source_layer="$(printf '%s\n' "$resolved" | cut -f2)"If `space` is non-empty, print:
Resolved space: <space> (from <source-layer>)
If `space` is empty, print:
Resolved space: none (unscoped)
Pass `space="<resolved>"` to `mcp__wenlan__recall` only when `space` is non-empty. Do not substitute `personal` for an unscoped result.
Expand once, then call recall
Rewrite the query only enough to improve retrieval:
- Replace pronouns with the referent from the current thread.
- Expand an abbreviation when the embedder may miss it.
- Add one obvious synonym when the user's wording is too narrow.
Do not issue multiple recall calls. Use one call:
mcp__wenlan__recall(
query="<expanded query>",
space="<resolved if non-empty>",
memory_type="<only if the query names a type>"
)
Infer `memory_type` only when the user names a type, such as "decision on X", "lesson about Y", or "preference for Z". Otherwise omit it.
Rerank and render
Rerank the returned memories against the user's original query:
- Promote direct answers.
- Demote keyword overlaps that do not answer the question.
- Show the top 3-5 hits unless the user asked for a deeper audit.
Render revision context only when it matters:
<id> v<N> (merged <K> memories)
<id> v<N>, pending revision against <id>
<id> v<N> - <last_delta_summary>
<id> v<N>
Skip that tag line when the memory is a fresh v1 with no merge or pending revision fields.
Only when the user explicitly asks for one memory's history or evolution, or whether a correction was recorded, call:
mcp__wenlan__get_memory_revisions(memory_id="<source_id>")
Do not fetch revision chains for ordinary recall results.
When to use
- "What did I say about X?"
- "Do you remember the decision on Y?"
- "Look up my preference for Z."
When not to use
- Session start context: use `/brief`.
- Storing a new memory: use `/capture`.
Read more
name: recall description: > Search Wenlan's local memory from Codex by query. Targeted lookup, not session orientation. Invoked as /recall <query>. argument-hint: "<query>" allowed-tools: ["Bash", "mcp__wenlan__recall", "mcp__wenlan__get_memory_revisions"] user-invocable: true
/recall
Search Wenlan memory by natural-language query. Use `/brief` for broad session orientation and `/recall` for a specific fact, decision, lesson, or preference.
Argument parsing
Accept one optional inline token of the form `space:<name>` anywhere in the argument string. Extract it before treating the rest as the query:
raw_args="<the full argument string passed to /recall>" space_arg="$(printf '%s\n' "$raw_args" | grep -oE 'space:[A-Za-z0-9_-]+' | head -1 | cut -d: -f2)" query="$(printf '%s\n' "$raw_args" | sed -E 's/[[:space:]]*space:[A-Za-z0-9_-]+[[:space:]]*/ /g' | sed -E 's/^[[:space:]]+|[[:space:]]+$//g')"
If `query` is empty, ask the user what they want to search for.
Resolve the active space
Call the Codex resolver:
resolved="$(plugin-codex/bin/resolve-space.sh --cwd "$PWD" ${space_arg:+--arg "$space_arg"} 2>/dev/null)"
space="$(printf '%s\n' "$resolved" | cut -f1)"
source_layer="$(printf '%s\n' "$resolved" | cut -f2)"If `space` is non-empty, print:
Resolved space: <space> (from <source-layer>)
If `space` is empty, print:
Resolved space: none (unscoped)
Pass `space="<resolved>"` to `mcp__wenlan__recall` only when `space` is non-empty. Do not substitute `personal` for an unscoped result.
Expand once, then call recall
Rewrite the query only enough to improve retrieval:
- Replace pronouns with the referent from the current thread.
- Expand an abbreviation when the embedder may miss it.
- Add one obvious synonym when the user's wording is too narrow.
Do not issue multiple recall calls. Use one call:
mcp__wenlan__recall( query="<expanded query>", space="<resolved if non-empty>", memory_type="<only if the query names a type>" )
Infer `memory_type` only when the user names a type, such as "decision on X", "lesson about Y", or "preference for Z". Otherwise omit it.
Rerank and render
Rerank the returned memories against the user's original query:
- Promote direct answers.
- Demote keyword overlaps that do not answer the question.
- Show the top 3-5 hits unless the user asked for a deeper audit.
Render revision context only when it matters:
<id> v<N> (merged <K> memories) <id> v<N>, pending revision against <id> <id> v<N> - <last_delta_summary> <id> v<N>
Skip that tag line when the memory is a fresh v1 with no merge or pending revision fields.
Only when the user explicitly asks for one memory's history or evolution, or whether a correction was recorded, call:
mcp__wenlan__get_memory_revisions(memory_id="<source_id>")
Do not fetch revision chains for ordinary recall results.
When to use
- "What did I say about X?"
- "Do you remember the decision on Y?"
- "Look up my preference for Z."
When not to use
- Session start context: use `/brief`.
- Storing a new memory: use `/capture`.
Wenlan is a knowledge base for the AI-native age. Your AI agents capture what they learn, Wenlan keeps it current and distills it into source-cited wiki pages you can trust
Other skills on wenlan.
- /prove
Per-surface verification loops for wenlan — daemon, cli, mcp, plugin, suite strength (mutation), behavior trace, weekly sweep. Routes to scripts; every check records evidence via attest. Deeper than the built-in verify skill — use prove for mutation audits, behavior tracing, and
Open skill - /run-wenlan
Build, launch, and stop the wenlan daemon (wenlan-server) for local dev and verification. Use when asked to run or restart the daemon, or before driving any surface (HTTP, CLI, MCP) against a live instance.
Open skill - /verify
Drive/evidence recipe for verifying wenlan changes at their real surfaces (daemon HTTP, CLI, MCP stdio). The handle file the built-in verify protocol expects; launch primitives live in the run-wenlan skill, deeper machinery (mutation audit, behavior trace, weekly sweep) in the
Open skill - /brief
Read the current Space-owned project Brief from Wenlan for Codex. With an optional topic, appends separately labeled related context from the same Space. Invoked as /brief [topic] when resuming work or asking to catch up.
Open skill - /capture
Save a durable memory to Wenlan from Codex. Use proactively when the user states a preference, makes a decision, corrects you, or shares a durable fact. Invoked as /capture <content>.
Open skill - /curate
Review pending Wenlan captures, revisions, or daemon refinements from Codex. Use for explicit audit walks after /brief or /handoff surfaces pending work. Invoked as /curate captures, /curate revisions, or /curate refinements.
Open skill

