Synthesize
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]".
MCP get_skill({ skillId: "synthesize-20d163eb" })Use this skill with your agent
Create a free account and connect via MCP
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`
```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
1. Load queue file for the topic
2. Read the main synthesis doc (or create from template if first run)
3. Read the sources file
4. 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:
1. Collect all extraction results
2. 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
3. Update synthesis doc with citations (^[src-N])
4. Add sources to Sources table
5. Mark sources as `processed` in 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
1. Write updated synthesis doc
2. Write updated sources file
3. Write updated queue file with new `last_run` timestamp
4. Add entry to Processing Log (include discovery count)
5. 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.
1. Load queue file for the topic
2. Collect all paths from `watch_patterns` using Glob
3. Filter out any paths already in `sources` (regardless of status)
4. Add new matches to `sources` with:
- `type`: `local`
- `status`: `pending`
5. Update queue file
6. 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`
```markdown
---
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`
```markdown
---
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:
1. **Do not silently replace** the existing information
2. 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.
```
3. 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:
1. Create new queue: `/synthesize new "ADHD Medications"`
2. Set `topic_folder` to match parent: `"ADHD"` (keeps files together)
3. Add relevant sources (can include already-processed sources from parent for deeper dive)
4. In parent synthesis, add link: `See also: [[ADHD Medications Synthesis]]`
5. In sub-topic synthesis Overview, note parent: `Deep-dive from [[ADHD Synthesis]]`Related Skills
More skills in Data, AI & Research
Ablation Planner
Use when main results pass result-to-claim (`claim_supported = yes` or `partial`) and ablation studies are needed for paper submission. A secondary Codex agent designs ablations from a reviewer's perspective; the local executor reviews feasibility and implements.
Ablation Planner
Use when main results pass result-to-claim (claim_supported=yes or partial) and ablation studies are needed for paper submission.
About
Provides information about the bitwize-music plugin, its version, and its creator. Use when the user asks about the plugin, its purpose, version, or capabilities.
Ab Test Analysis
Analyze A/B test results with statistical significance, sample size validation, confidence intervals, and ship/extend/stop recommendations. Use when evaluating experiment results, checking if a test reached significance, interpreting split test data, or deciding whether to ship a variant.
Academic Search
Search and analyze academic literature. Find papers, understand research methodologies, and synthesize academic findings for research projects.
Adaptyv
How to use the Adaptyv Bio Foundry API and Python SDK for protein experiment design, submission, and results retrieval. Use this skill whenever the user mentions Adaptyv, Foundry API, protein binding assays, protein screening experiments, BLI/SPR assays, thermostability assays, or wants to submit protein sequences for experimental characterization. Also trigger when code imports `adaptyv`, `adaptyv_sdk`, or `FoundryClient`, or references `foundry-api-public.adaptyvbio.com`.
Explore Other Categories
Skills from other categories with shared topics
Brief
Create or update project brief through interactive discovery. Use when starting any new idea, revisiting an idea after time away, or when vision feels unclear.
Commit
Create git commits in spaces/[project]/ with conventional message format. Use for saving progress with quality checks and proper commit messages.
Complete
Complete task: validate, document, review, commit, and merge to develop. Use when all implementation is done and ready to finalize.