Help us improve
Share bugs, ideas, or general feedback.
From obsidian-vault-agent
Searches an Obsidian vault exhaustively on a topic, surfaces non-obvious patterns and contradictions, and challenges the user to generate original synthesis.
npx claudepluginhub tuan3w/obsidian-vault-agent --plugin obsidian-vault-agentHow this skill is triggered — by the user, by Claude, or both
Slash command
/obsidian-vault-agent:synthesize <topic><topic>This skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
<Purpose>
Synthesizes research notes and documents to surface cross-cutting themes, unexpected connections, and high-level insights not visible in individual pieces.
Iterative multi-source research that explores complex topics from multiple perspectives, detects contradictions, and produces a vault note with fact-level citations and a confidence map.
Enters deep thinking mode for exploring ideas, finding patterns, reflecting on vault content. Supports /think angles: digest agent-output, challenge beliefs, emerge ideas, trace evolution, connect domains, brainstorm.
Share bugs, ideas, or general feedback.
Science grounding: far transfer (Tempel & Frings 2024), generation effect (McCurdy et al. 2020), elaborative interrogation, desirable difficulty (Bjork & Bjork 2020).
<Use_When>
<Do_Not_Use_When>
Extract the core concept(s) from the user's input. Identify:
If the topic is ambiguous, briefly clarify before searching (one question max).
MCP search (preferred):
search_notes(query="PRIMARY TERM", limit=30)
search_notes(query="SYNONYM 1", limit=15)
search_notes(query="SYNONYM 2", limit=15)
Grep fallback (if MCP unavailable):
Grep(pattern="PRIMARY TERM", path="notes/", glob="*.md", output_mode="files_with_matches")
Grep(pattern="#TAG-NAME", path="notes/", glob="*.md", output_mode="files_with_matches")
Grep(pattern="\[\[.*PRIMARY TERM.*\]\]", path="notes/", glob="*.md", output_mode="files_with_matches")
Also search:
Grep(pattern="PRIMARY TERM", path="notes/thoughts/", glob="*.md")Grep(pattern="type: term", path="notes/", glob="*.md") then filterCollect all matching file paths. Deduplicate. Aim for 15–25 notes across diverse domains.
Read up to 20 most relevant notes using read_multiple_notes or individual read_note calls.
Prioritize:
While reading, track:
Output this structure (adapt headings as needed, cut any section with nothing real to say):
[3–6 bullets. Each = one non-obvious claim distilled from multiple notes. Lead with the sharpest insight. No filler.]
[Table or bullet list: Domain → how the concept appears there. Include only non-obvious mappings — skip domains where the concept is trivially expected.]
| Domain | How [topic] appears |
|---|---|
| [domain] | [specific claim from that note] |
[What multiple notes converge on — the vault's "consensus". 2–4 bullets max.]
[Where notes disagree — including tensions the user may not have noticed. THIS IS THE MOST VALUABLE SECTION. If two notes from different domains make opposing claims, surface it explicitly. Quote the note titles.]
[What's missing: questions the vault raises but doesn't answer, adjacent concepts not yet captured, domains that probably have something to say but no notes exist]
Ask 3–4 questions. Make them uncomfortable. Reference the user's OWN notes by name.
Rules for good challenge questions:
Wait for user responses before proceeding to Stage 6.
The vault should not just confirm what you know. If the synthesis has no tension and no surprises, say so explicitly: "I found strong consensus but no real tension — either the topic is genuinely settled, or the vault has a blind spot here."
Help the user create a Thought note. Do NOT write it for them — Thoughts are where human understanding lives. Instead:
Thought note template:
---
id: YYYYMMDDHHMMSS
created_date: YYYY-MM-DD
updated_date: YYYY-MM-DD
type: thought
processing_status: processed
---
# (Thought) [Title]
- **🏷️Tags** : #thought #[topic-tag] #MM-YYYY
[ ](#anki-card)
## Notes
[User fills this]
## Links
- [[(Type) Source Note 1]]
- [[(Type) Source Note 2]]
Only propose this if the concept appeared across multiple notes but has no dedicated Term note. Create the Term note with:
---
id: YYYYMMDDHHMMSS
created_date: YYYY-MM-DD
updated_date: YYYY-MM-DD
type: term
processing_status: processed
---
# (Term) [Concept Name]
- **🏷️Tags** : #term #all-anki #[topic-tag] #MM-YYYY
[ ](#anki-card)
## Notes
[Distilled definition — Feynman-style: intuition first, formalism second]
- [Key insight 1]
- [Key insight 2]
- **Example**: [concrete example]
- **Cross-domain**: [where else this appears]
## Links
- [[(Type) Source 1]]
Every internal reference must use the full filename stem including (Type) prefix:
[[(Thought) My insight note]][[My insight note]]If unsure of the exact filename, search before linking.
User: "synthesize everything about attention mechanisms" → Search returns: 3 ML papers on attention, 1 psychology note on selective attention, 1 design note on visual hierarchy, 1 thought note on "attention as resource allocation" → Cross-domain: ML attention ≠ psychological attention — but both involve a scoring function that weights inputs. Surface this non-obvious parallel. → Tension: vault's ML notes say "attention is O(n²)" (a problem), but the thought note says "the bottleneck IS the feature" — unresolved. → Challenge: "Your [[(Thought) Attention as resource allocation]] treats attention as scarce. But transformers have unlimited heads. Does scarcity still apply? What breaks?" User: "what do I know about loss aversion" → Search finds notes in: psychology, behavioral economics, startup, design (dark patterns) → Agreements: loss aversion is asymmetric (losses hurt ~2x more than gains) → Gap: no notes on whether loss aversion weakens with experience/expertise — ask if worth capturing → Challenge: "You have [[(Paper) Prospect Theory]] and [[(Post) Pricing psychology]]. Your startup notes apply this to pricing, but never to hiring. Where else in the vault could loss aversion explain something you attributed to something else?" User: "synthesize ML" → Too broad — ask: "ML is too wide to synthesize well. What angle? Scaling, optimization, architectures, learning theory, RL...?" Synthesis that produces no tension: → "Everything agrees that attention is useful." — This is not synthesis. Push harder: find the domains that don't agree, find the edge cases, find what the vault hasn't said.<Escalation_And_Stop_Conditions>
$ARGUMENTS