TaylorHuston

synthesize

23
2
# Install this skill:
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

  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:
  3. New findings to add to existing categories
  4. Findings that warrant new categories
  5. Contradictions with existing content β†’ add to Open Questions
  6. Dense categories β†’ add to Suggested Sub-Topics
  7. Update synthesis doc with citations (^[src-N])
  8. Add sources to Sources table
  9. 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:
  5. type: local
  6. status: pending
  7. Update queue file
  8. 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:

  1. Do not silently replace the existing information
  2. Move both claims to Open Questions with citations:
    ```
  3. Medication timing: Take with food for reduced side effects ^[src-2],
    but empty stomach for faster absorption ^[src-5]. May depend on specific medication.
    ```
  4. If a clear resolution exists (newer research, more credible source, broader consensus), note it:
    ```
  5. 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]]

# 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.