Local-life-manager 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]".
git clone https://github.com/TaylorHuston/local-life-manager
T=$(mktemp -d) && git clone --depth=1 https://github.com/TaylorHuston/local-life-manager "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.claude/skills/synthesize" ~/.claude/skills/taylorhuston-local-life-manager-synthesize && rm -rf "$T"
.claude/skills/synthesize/SKILL.mdCreate 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:
- Path to existing note in my-vaultlocal
- URL to fetch and processweb
- Search query to find the source (use WebSearch, then fetch best result)search
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
- Continue processing the named synthesis/synthesize [topic]
- Show all active synthesis queues and progress/synthesize list
- Create a new synthesis queue/synthesize new [topic]
- Add sources to a queue/synthesize add [topic] [path-or-glob]
- Scan watch_patterns for new sources and add to queue/synthesize update [topic]
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
sources, modify prompt to use WebFetch first:web
1. Use WebFetch to retrieve: [URL] 2. Extract [TOPIC]-relevant findings from the content...
For
sources, modify prompt to search first:search
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
in queueprocessed
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:
- Check if already in queue (deduplicate by URL, title, or path)
- Add to queue with:
:type
if URL available,web
if just a name/titlesearch
: source ID where you found itdiscovered_from
: why it's relevant (1 sentence)context
:statuspending
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
timestamplast_run - 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]
)
/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
using Globwatch_patterns - Filter out any paths already in
(regardless of status)sources - Add new matches to
with:sources
:typelocal
:statuspending
- 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:
- Summarize tightly in the main doc (5-10 key points)
- Add to Suggested Sub-Topics
- 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
to match parent:topic_folder
(keeps files together)"ADHD" - 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]]