whiteboard-search · git:20260616.11cb15f · 2026-06-16 · sha256 7746f6a6dc03d55e
whiteboard-search git:20260616.11cb15fA
Immutable. This exact content is served forever at /api/v1/blob/7746f6a6dc03d55e.
---
name: whiteboard-search
description: When the user asks you to find something in their own notes or in a shared library, search by following the correct ladder from opsidian_search to knowledge_search and summarize the results naturally.
allowed_tools:
- opsidian_search
- opsidian_browse
- opsidian_read
- knowledge_search
- knowledge_list
- knowledge_read
execution_mode: inline
examples:
- "Do I have anything written in Obsidian about X?"
- "Find that note we organized together last time."
- "Show me what's in the library."
---
# Whiteboard Search — Searching the user's notes / library
Use this skill when the user asks you to find something in their own notes or in a shared library.
## First, distinguish the two kinds of stores
- **User Opsidian** (personal vault) — the raw notes the user writes and captures every day. Accessed via the `opsidian_*` tools. Categories: `inbox / daily / topics / projects / insights`.
- **Curated Knowledge** (library) — the organized subset the user has explicitly shared via "Share with VTuber > Library". Accessed via the `knowledge_*` tools. **This is the most trustworthy source you have — because the user hand-picked and sent it.**
## Search Ladder
If the user's request is ambiguous, try **both** and merge the results:
1. **`opsidian_search(query, max_results=5)`** — keyword search. The fastest, and best at capturing the user's raw intent.
2. If you get 0–1 results or the scores are low → use **`knowledge_search(query, max_results=5)`** for a semantic search on the curated side.
3. For the 1–3 most likely notes, confirm the contents with **`knowledge_read(filename)`** or **`opsidian_read(filename)`**.
4. Don't dump the body as-is — **summarize it in 2–3 sentences** for the user. Include only 1–2 lines of key quotes if needed.
## When the user specifies a category or tag
- Category specified ("among my daily notes…") → narrow with `opsidian_browse(category="daily")`, then search within it.
- Tag specified ("the ones tagged #API…") → `opsidian_browse(tag="API")`.
- Take the results from both tools, rank by score or recency, then read only the top ones.
## Using the ViewLedger `⚑` marker
- Notes in the system prompt's `[Spotlight Context]` block, or notes in tool results with `_view.counts.read > 0`, are **material you've already seen**.
- Don't treat them as if you're seeing them for the first time; connect to the prior context with phrasing like "that note from last time…" / "from the X we looked at before…".
- A high `_view.counts.injected` means a key note that has appeared often via spotlight too — a signal that the user considers it important.
## Protecting a large vault
If `opsidian_search` returns a response with `"warning": "Vault has N notes; opsidian_search caps out at 500 …"`:
- Politely ask the user "There are a lot of notes, so I can't go through them all at once — can you give me a category or a tag?"
- Once you get a response, narrow it down with `opsidian_browse(category=..., tag=...)` and retry.
## Result-formatting rules
- Don't expose the raw filename (`topics/foo.md`) as-is; use the note's **title**.
- Don't paste JSON / frontmatter / raw wikilinks straight into chat.
- If there are 0 results: "I couldn't find any related notes. If you give me a more specific keyword or category (daily/topics/projects/insights/inbox), I'll search again."
- If there are a great many results, summarize only the top 3 and close with "Want me to show you more?".
## Don'ts
- Don't call tools more than 5 times in a single turn — narrow sufficiently before each call.
- Don't paste raw body markdown straight into chat (especially frontmatter, wikilinks).
- Don't show the user search results as JSON / tables — use a natural-language summary.
- Don't mistake the contents of the `[Spotlight Context]` block for something the user said — this is just state the system is telling you about, not something the user just uttered.