Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/tomevault-io/tomes --skill recall명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SKILL.md 표시 중
SOC 직업 분류 기준
| name | recall |
| description | > Use when this capability is needed. |
Search Wenlan's memory by natural-language query. Returns matching memories ranked by hybrid vector + FTS search, then re-ordered by the agent if it helps.
The /recall skill accepts 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 space_arg is non-empty, pass it to the resolver as --arg "$space_arg".
Call the bundled resolver:
resolved="$("$CLAUDE_PLUGIN_ROOT/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)"
Pass space="$space" to the recall MCP tool only when space is
non-empty. Print one line before the call:
Resolved space: <space> (from <source-layer>)
If space is empty, print Resolved space: none (unscoped) and omit the
space filter.
When a local model or API key is configured, the daemon can rerank and expand server-side. In local memory mode it cannot. The skill always does agent-side expansion and rerank itself — cheap, makes results good in both modes.
Before calling recall, rewrite the user's query into a more
search-friendly form:
Don't over-expand. If the query is already specific, leave it alone.
One recall call per /recall invocation — duplicate calls double
embedding load and the merge step is rarely worth it. The daemon's
own search_memory_expanded exists for the multi-query case; if it
matters, use that endpoint instead of issuing parallel calls here.
recall(query="<expanded query>", space=<resolved if non-empty>, memory_type=<inferred>)
Inferences (do not ask the user):
space: current working directory (e.g. ~/Repos/wenlan/... → "wenlan"),
the topic being discussed, or whatever space was mentioned in recent turns.
Pass only when scope is known; omit when uncertain or unscoped.memory_type: only when the query itself names a type ("decision on X",
"lesson about Y", "preference for Z"). Otherwise omit and let hybrid
search rank.limit: default 10. Use 3-5 for quick lookups, 10-20 for exploration.The daemon returns hits ranked by hybrid search. That ranking is good but not perfect — it doesn't know the user's exact intent.
Re-read the returned memories against the original query. Promote the ones that directly answer the question; demote ones that just share keywords.
Show the user the top 3-5 reranked hits. Surface the rest only if asked.
Each memory may carry revision fields: version, pending_revision,
merged_from, last_delta_summary. Most memories are fresh (v1, none
set) — render nothing extra for those. Only add a tag line when
something meaningful is present.
Condition: emit the tag line when any of these holds:
version > 1merged_from is non-emptypending_revision == trueFormat — one compact line above the memory body:
<id> v<N> (merged <K> memories) ← merged_from has K entries
<id> v<N>, pending revision against <id> ← pending_revision true
<id> v<N> — <last_delta_summary> ← version > 1, delta populated
<id> v<N> ← version > 1, no delta
Rules:
— <delta> when last_delta_summary is empty or null./brief instead./capture."Alice database preference" finds more than "database stuff". The semantic matcher rewards specificity. If too many results return, add filters rather than making the query longer.
Source: 7xuanlu/origin — distributed by TomeVault.