Work with Obsidian vaults (plain Markdown notes) and automate via obsidian-cli.
npx skills add TaylorHuston/local-life-manager --skill "synthesize"
Install specific skill from multi-skill repository
# Description
Synthesize information across multiple sources into a structured document. Processes sources in batches across sessions to handle more data than fits in context. Discovers and queues related sources automatically. Use for research synthesis, topic deep-dives, or consolidating scattered notes. Triggers on "synthesize", "synthesis", "research [topic]".
# SKILL.md
name: synthesize
description: Synthesize information across multiple sources into a structured document. Processes sources in batches across sessions to handle more data than fits in context. Discovers and queues related sources automatically. Use for research synthesis, topic deep-dives, or consolidating scattered notes. Triggers on "synthesize", "synthesis", "research [topic]".
allowed-tools: Bash, Read, Write, Edit, Glob, Grep, Task, WebFetch, WebSearch
Create and incrementally build synthesis documents from multiple sources.
Output Location
All synthesis documents go in: my-vault/06 Knowledge Base/Synthesis/[Topic]/
Structure:
my-vault/06 Knowledge Base/Synthesis/
βββ ADHD/
βββ ADHD Synthesis.md # Main synthesis
βββ ADHD Sources.md # Sources table + processing log
βββ ADHD Medications Synthesis.md # Sub-topic (if created)
Queue Files
Queues live in: .claude/skills/synthesize/references/queues/[topic].json
{
"name": "ADHD",
"topic_folder": "ADHD",
"batch_size": 3,
"max_discovered_per_source": 3,
"watch_patterns": [
"my-vault/06 Knowledge Base/Capture/Videos/**/*ADHD*.md",
"my-vault/01 Inbox/*adhd*.md",
"my-vault/04 Personal/Health/*ADHD*.md"
],
"sources": [
{"path": "my-vault/path/to/note.md", "status": "pending", "type": "local"},
{"path": "my-vault/path/to/video.md", "status": "processed", "type": "local"},
{"url": "https://example.com/study", "status": "pending", "type": "web",
"discovered_from": "src-2", "context": "Key study on medication timing"},
{"search": "Barkley 2023 executive function", "status": "pending", "type": "search",
"discovered_from": "src-2", "context": "Referenced as foundational research"}
],
"last_run": "2026-01-14T10:00:00Z"
}
Source types:
- local - Path to existing note in my-vault
- web - URL to fetch and process
- search - Search query to find the source (use WebSearch, then fetch best result)
Source status values: pending, processed, skipped
watch_patterns: Glob patterns for /synthesize update to scan. Paths matching these patterns get added to the queue automatically (if not already present).
Commands
/synthesize [topic]- Continue processing the named synthesis/synthesize list- Show all active synthesis queues and progress/synthesize new [topic]- Create a new synthesis queue/synthesize add [topic] [path-or-glob]- Add sources to a queue/synthesize update [topic]- Scan watch_patterns for new sources and add to queue
Architecture
This skill uses a coordinator + subagent pattern for efficient processing:
- Coordinator (Sonnet/Opus): Manages state, spawns extractors, merges findings into synthesis
- Extractors (Haiku subagents): Each reads one source, extracts structured findings in parallel
This allows processing 6-10 sources per batch instead of 2-3, with ~3x throughput improvement.
Workflow
Starting a Session
- Load queue file for the topic
- Read the main synthesis doc (or create from template if first run)
- Read the sources file
- Identify next N pending sources (N = 6-10 for parallel extraction)
Phase 1: Parallel Extraction (Haiku Subagents)
Spawn 6-10 Haiku extractors in parallel using the Task tool:
Task tool call:
- model: haiku
- subagent_type: general-purpose
- prompt: (see Extractor Prompt Template below)
Extractor Prompt Template:
Read this file and extract [TOPIC]-relevant findings in a structured format.
FILE: [full path to source]
Return your findings as a simple list in this format:
CATEGORY: [Category Name]
- Finding 1 (be specific, include numbers/names if mentioned)
- Finding 2
...
Only include substantive findings relevant to understanding [TOPIC].
Skip metadata, timestamps, and filler.
If the source has little new information, just return "MINIMAL_CONTENT".
For web sources, modify prompt to use WebFetch first:
1. Use WebFetch to retrieve: [URL]
2. Extract [TOPIC]-relevant findings from the content...
For search sources, modify prompt to search first:
1. Use WebSearch to find: [search query]
2. Use WebFetch on the best result
3. Extract [TOPIC]-relevant findings...
Phase 2: Merge Findings (Coordinator)
Once all extractors return:
- Collect all extraction results
- Review for:
- New findings to add to existing categories
- Findings that warrant new categories
- Contradictions with existing content β add to Open Questions
- Dense categories β add to Suggested Sub-Topics
- Update synthesis doc with citations (^[src-N])
- Add sources to Sources table
- Mark sources as
processedin queue
Phase 3: Discovery (Coordinator)
While reviewing extractions, watch for references worth following up:
- Studies or papers cited
- Articles or books mentioned
- Other videos or talks referenced
- Experts or researchers named
Limit: 3 discovered sources per source processed.
Discovery
While processing each source, watch for references worth following up:
- Studies or papers cited
- Articles or books mentioned
- Other videos or talks referenced
- Experts or researchers named (for potential lookup)
Limit: 3 discovered sources per source processed.
For each valuable reference:
1. Check if already in queue (deduplicate by URL, title, or path)
2. Add to queue with:
- type: web if URL available, search if just a name/title
- discovered_from: source ID where you found it
- context: why it's relevant (1 sentence)
- status: pending
Prioritize discoveries that:
- Are directly cited as evidence for claims
- Come from credible sources (peer-reviewed, recognized experts)
- Fill gaps in the current synthesis
Skip discovering:
- Tangential references not central to the topic
- Sources that would require paid access (note in processing log if significant)
- Generic resources (e.g., "see Wikipedia for more")
Ending a Session
- Write updated synthesis doc
- Write updated sources file
- Write updated queue file with new
last_runtimestamp - Add entry to Processing Log (include discovery count)
- Report:
Processed X items. Discovered Y new sources. Z items remaining. Run `/synthesize [topic]` to continue.
If all sources processed:
Synthesis complete. X total sources processed.
Review Suggested Sub-Topics for potential expansion.
Updating a Synthesis (/synthesize update [topic])
Use this to find new sources that match watch_patterns without reprocessing old ones.
- Load queue file for the topic
- Collect all paths from
watch_patternsusing Glob - Filter out any paths already in
sources(regardless of status) - Add new matches to
sourceswith: type:localstatus:pending- Update queue file
- Report:
Found X new sources matching watch_patterns. Queue now has Y pending items. Run `/synthesize [topic]` to process.
If no new sources found:
No new sources found. Synthesis is up to date with watch_patterns.
Tip: Run /synthesize update [topic] periodically after adding new notes or video summaries to keep the synthesis current.
Synthesis Document Template
Create at: my-vault/06 Knowledge Base/Synthesis/[Topic]/[Topic] Synthesis.md
---
class: Synthesis
topic: [Topic Name]
created: [Date]
lastUpdated: [Date]
status: in-progress
---
## Overview
[2-3 sentence summary of the topic - updated as understanding deepens]
## Key Findings
### [Category]
- Finding with specific details ^[src-1]
- Another finding that multiple sources support ^[src-1] ^[src-3]
<!-- Add categories as needed based on source content -->
## Open Questions
<!-- Contradictions, uncertainties, areas needing human judgment -->
- **[Topic]**: Source A says X ^[src-1], but Source B says Y ^[src-2].
## Suggested Sub-Topics
<!-- Categories that could warrant their own synthesis -->
- **[Sub-topic]** - X sources touched on this; may warrant dedicated synthesis
---
*Sources and processing log: [[Topic Sources]]*
Sources Document Template
Create at: my-vault/06 Knowledge Base/Synthesis/[Topic]/[Topic] Sources.md
---
class: Note
parent: "[[Topic Synthesis]]"
---
## Sources
| ID | Title | Date | Type | Discovered | Path/URL |
|----|-------|------|------|------------|----------|
| src-1 | Source Title | 2025-03 | Video | - | [[path/to/note]] |
| src-2 | Study Name | 2024-11 | Web | from src-1 | [link](url) |
## Processing Log
- **2026-01-14**: Initial synthesis. Processed 3 items. Created categories for X, Y, Z. Discovered 2 new sources.
- **2026-01-15**: Processed 3 items. Flagged contradiction on [topic]. Discovered 1 new source.
Length Discipline
Core content (Overview through Suggested Sub-Topics) must stay under 300 lines.
Guidelines:
- Overview: 5 lines max
- Categories: 8 max in main doc
- Points per category: 15 max
- Open Questions: 10 max
When a category exceeds ~40-50 lines or has 5+ sources going deep:
1. Summarize tightly in the main doc (5-10 key points)
2. Add to Suggested Sub-Topics
3. Sub-topic syntheses get their own doc in the same folder, linking back to parent
Handling Contradictions
When new information conflicts with existing content:
- Do not silently replace the existing information
- Move both claims to Open Questions with citations:
``` - Medication timing: Take with food for reduced side effects ^[src-2],
but empty stomach for faster absorption ^[src-5]. May depend on specific medication.
``` - If a clear resolution exists (newer research, more credible source, broader consensus), note it:
``` - Resolved: Earlier sources suggested X, but consensus now supports Y ^[src-8] ^[src-9] ^[src-10]
```
Citation Format
Use ^[source-id] inline, where source-id matches the ID column in the Sources table.
- Single source:
Finding here ^[src-1] - Multiple sources:
Well-supported finding ^[src-1] ^[src-3] ^[src-7] - Conflicting sources: Note in Open Questions section
Adding Sources to Queue
Manual Addition
/synthesize add adhd my-vault/path/to/specific/note.md
Glob Pattern
/synthesize add adhd "my-vault/06 Knowledge Base/Capture/Videos/**/*ADHD*.md"
By Tag (search and add)
When adding, search for relevant notes:
- Notes with topic in filename
- Notes with relevant tags
- Video summaries from relevant channels
Deduplicate against existing sources in queue before adding.
Creating Sub-Topic Syntheses
When a sub-topic warrants its own document:
- Create new queue:
/synthesize new "ADHD Medications" - Set
topic_folderto match parent:"ADHD"(keeps files together) - Add relevant sources (can include already-processed sources from parent for deeper dive)
- In parent synthesis, add link:
See also: [[ADHD Medications Synthesis]] - In sub-topic synthesis Overview, note parent:
Deep-dive from [[ADHD Synthesis]]
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.