explore-vault
GitHub用于在用户知识库中搜索、读取和探索笔记。支持按标签、属性、文件夹或关键词查找,并提供查询失败时的重构与策略升级指南,确保精准检索。
Trigger Scenarios
Install
npx skills add s2b-dev/smart-second-brain --skill explore-vault -g -y
SKILL.md
Frontmatter
{
"name": "explore-vault",
"metadata": {
"author": "S2B",
"version": "1.1",
"category": "core"
},
"description": "Search, read, and explore the user's vault — find notes by tag, property, folder, or keyword, then read their content. Load this before answering any question that depends on what's in the vault; it holds the note-finding procedure (verify tags\/properties\/folders before querying, don't guess) and what to do when a search comes back weak (reformulate, escalate the algorithm once).",
"allowed-tools": "search_notes list_directory read_content grep_notes get_all_tags get_properties execute_javascript"
}
Finding Notes
-
Unknown Organization: If the user asks for a category of notes (e.g. "daily notes", "meetings", "books", "ideas") and you don't know how they are organized:
- Call
list_directoryfirst (starting at root or a likely folder) to understand folder layout before deciding search scope. - Call
get_all_tagsFIRST to check if a relevant tag exists (e.g. #daily, #meeting, #book). - ALSO call
get_propertiesand omit 'note_name' to check if there are relevant frontmatter properties (e.g. "type", "category", "status"). - If you find a matching tag or property, use it to filter your search or query.
- If no relevant tag or property is found, call
search_noteswith a broad term to find example files and see their paths/names/properties. - Do NOT guess tag names, property keys, or folder paths without verifying first.
- Call
-
Verification: Before constructing any query, ALWAYS verify which tags, properties, folders, or keywords actually exist using the steps above.
-
Reading Content:
search_noteswill give you a list of potential matches with metadata.- If the user query contains explicit Obsidian wiki links (e.g. [[Project Plan]]), you may call
read_contentdirectly with those links. - If you need to read the full content of a note and no explicit wiki link is provided, use
read_contentwith the specific file path from the search results.
-
When the first search disappoints: reformulate, don't repeat. Retrying the same words with a bigger limit finds the same notes. Change what you are matching on:
- Use the note's words, not the user's. People ask in their own framing; notes are written in another. "Why do I lose time to interruptions" won't match a note whose vocabulary is "switching", "reload", "batching". Guess the terms the author would have typed and search those.
- For questions about a relationship or direction, search the participants and artifacts instead of the relation. "Feedback I received" and "feedback I gave" are the same words in opposite directions, and retrieval cannot tell them apart — but the names, dates, projects, or meeting types involved are concrete and do match. Search those, then judge direction by reading.
- Escalate the algorithm once, not repeatedly. Start
lexical. If wording looks like the obstacle, retrysemantic(orhybridwhen the query mixes an exact term with a fuzzy concept). Ifsemanticalso fails, the problem is your terms, not the strategy — go back to reformulating. - Decompose a question that spans notes. If the answer needs two facts that likely live apart ("what's holding up X" = the blocker + the thing blocked), search for each separately rather than for the whole question.
- Two or three well-varied searches, then stop. Report what you found and what you could not, rather than continuing to guess. Say which phrasings you tried.
-
Read the
messagefield. When a result includes one, it is authoritative about what actually ran. If it reports that semantic search is unavailable because no embedding index is configured, do not retry withsemanticorhybrid— that cannot change during the conversation. Vary your terms instead. -
Compute, don't estimate. When the answer requires counting, aggregating, or date arithmetic over data you have gathered (e.g. "how many meetings in March", a total across notes), collect the raw values with the tools above, then run the calculation with
execute_javascriptinstead of doing it in your head.
Version History
- 2.0.5 Current 2026-09-08 21:10


