Obsidian-vault-agent research

install
source · Clone the upstream repo
git clone https://github.com/tuan3w/obsidian-vault-agent
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/tuan3w/obsidian-vault-agent "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/research" ~/.claude/skills/tuan3w-obsidian-vault-agent-research && rm -rf "$T"
manifest: skills/research/SKILL.md
source content
<Purpose> Deep research on any topic — search the web and the vault, then synthesize findings into a high-quality vault note. Unlike a quick web search, this skill decomposes the question, searches multiple angles, checks what the vault already knows, and produces a note with source links, confidence levels, and vault connections. </Purpose>

<Use_When>

  • User asks to research a topic ("research quantum error correction")
  • User wants to understand something new ("what is RLHF and why does it matter?")
  • User wants a research note created in the vault
  • User uses /research with a topic </Use_When>

<Do_Not_Use_When>

  • User wants to find academic papers specifically (use /paper-discover)
  • User wants to process an existing vault note (use /process)
  • User wants to synthesize across existing vault notes (use /synthesize)
  • User has a YouTube video to process (use /youtube) </Do_Not_Use_When>
<Steps>

Stage 1: PLAN — Decompose the Question

Parse the topic from $ARGUMENTS. If vague, ask one clarifying question.

Break the research topic into 3-5 specific sub-questions that together cover the topic well. Think about:

  • What IS it? (definition, core mechanism)
  • Why does it matter? (motivation, impact, who cares)
  • How does it work? (process, architecture, method)
  • What are the tradeoffs? (limitations, alternatives, open problems)
  • Where is it going? (trends, recent developments, future)

Present the sub-questions to the user briefly:

Researching "topic". Sub-questions:
1. ...
2. ...
3. ...
Searching now.

Don't wait for confirmation unless the topic is ambiguous — just show and go.

Stage 2: SEARCH VAULT — What Do We Already Know?

Before hitting the web, check what the vault already contains:

Grep(pattern="KEYWORD", path="notes/", glob="*.md", head_limit=15)

Also try MCP search if available:

mcp__obsidian-vault__search_notes(query="KEYWORD", limit=10)

Note any existing vault notes that are relevant — these become [[wikilinks]] in the output and inform what the web search should FOCUS on (gaps, not repeats).

Stage 3: SEARCH WEB — Multi-Query, Parallel

For each sub-question, run a targeted WebSearch:

WebSearch(query="specific sub-question query", num_results=5)

Then WebFetch the 3-5 most promising URLs to get full content:

WebFetch(url="URL", prompt="Extract key facts, data, and insights about [sub-question]. Include specific numbers, dates, names, and technical details.")

Search strategy:

  • Use different query phrasings per sub-question (not just the topic repeated)
  • Prefer recent sources (add "2025" or "2026" to queries when freshness matters)
  • Mix source types: technical blogs, official docs, news, research summaries
  • If initial results are thin, reformulate and search again

Run searches in parallel where possible (multiple WebSearch calls in one turn).

Stage 4: DEEPEN — Find Gaps and Conflicts

After the first search round, review what you have:

  • Which sub-questions are well-answered? Which are thin?
  • Are there conflicting claims across sources?
  • Did any source mention something surprising worth following up?

Run 1-2 targeted follow-up searches to fill gaps. This second pass is what separates good research from a quick Google.

Stage 5: SYNTHESIZE — Build the Note

Read the agent definition:

Read("${CLAUDE_SKILL_DIR}/agents/research-noter.md")

Launch the research-noter agent:

Agent(
  subagent_type="general-purpose",
  model="sonnet",
  prompt="You are Research Noter. Follow these instructions exactly:

  [INSERT FULL CONTENT OF agents/research-noter.md HERE]

  RESEARCH TOPIC: [topic]
  SUB-QUESTIONS: [list]

  VAULT CONTEXT (existing notes on this topic):
  [vault search results]

  WEB FINDINGS:
  [organized by sub-question, with source URLs]

  Produce the note body following the Output Format. Do NOT include frontmatter."
)

Stage 6: INTEGRATE — Create the Vault Note

  1. Generate timestamp ID:

    date +%Y%m%d%H%M%S

  2. Determine subfolder — if the topic clearly fits an existing folder, use it. Otherwise default to

    notes/research/
    . Create the folder if needed.

  3. Create the note:

---
id: YYYYMMDDHHMMSS
type: note
processing_status: processed
created_date: YYYY-MM-DD
updated_date: YYYY-MM-DD
---

[AGENT OUTPUT — starts with # title]
  1. Report to user:
    • Note path
    • Number of sources used
    • Key vault connections found
    • Any gaps flagged as uncertain
</Steps>

<Tool_Usage>

  • WebSearch: Multi-query web search (one per sub-question)
  • WebFetch: Deep-read promising URLs for full content
  • Grep/Glob: Search vault for existing knowledge
  • MCP search_notes: Vault search via Obsidian MCP
  • Agent: Synthesis agent (sonnet)
  • Write: Create the research note
  • Bash: Generate timestamp ID </Tool_Usage>
<Examples> <Good> User: /research RLHF vs DPO for language model alignment 1. Plan → 4 sub-questions: what is each, how do they differ mechanically, what are the empirical results, what's the current trend 2. Vault search → found (Term) RLHF, (Paper) DPO paper, 3 related notes 3. Web search → 8 sources across sub-questions, including recent benchmarks 4. Deepen → gap on compute costs, found 2 more sources 5. Synthesize → 5-section note with 12 sources, 6 vault wikilinks 6. Create → notes/ml/(Research) RLHF vs DPO - Alignment Methods Compared.md </Good> <Bad> - Searches once and stops — no gap-finding, no deepening - Creates a note that's just a list of links with no synthesis - Ignores what the vault already knows about the topic - Produces a wall of text instead of structured, bullet-point insights - No source links — claims without evidence </Bad> </Examples>

<Escalation_And_Stop_Conditions>

  • Topic too broad ("research AI"): Ask user to narrow down
  • No web results: Inform user, offer to create note from vault knowledge only
  • Mostly paywalled sources: Note the limitation, use what's available
  • Topic already well-covered in vault: Show existing notes, ask if user wants a fresh perspective or an update </Escalation_And_Stop_Conditions>

$ARGUMENTS