From distillery
Synthesize multiple knowledge entries into a cohesive narrative with citations
npx claudepluginhub norrietaylor/distillery --plugin distilleryThis skill is limited to using the following tools:
<!-- Trigger phrases: pour, synthesize, what's the full picture on, deep dive into, /pour <topic> -->
Compile deep context on a topic by combining semantic search with relationship traversal across 4 retrieval phases
Synthesizes multi-source search results (chat, email, docs, trackers) into coherent, deduplicated answers with citations, prioritizing authoritative recent info and confidence scoring.
Generates cited documentary reports by searching memory systems (Claude-Mem, Forgetful, Serena, DeepWiki), .agents/ artifacts, and GitHub issues for patterns, historical decisions, and themes.
Share bugs, ideas, or general feedback.
Pour performs multi-pass retrieval across the Distillery knowledge base and synthesizes findings into a structured narrative with inline citations, contradiction flags, and knowledge gap analysis.
/pour <topic or question> optionally with --project <name>See CONVENTIONS.md — skip if already confirmed this conversation.
If no arguments provided, ask:
What topic would you like to synthesize? (e.g., "authentication architecture", "decisions made about caching")
Extract from arguments:
Pass 1a -- Curated Content Search:
Search for high-value curated entries first to ensure they aren't drowned out by feed volume:
distillery_search(query="<topic>", limit=10, entry_type=["session", "bookmark", "minutes", "reference", "idea", "digest"], project="<project if specified>")
Pass 1b -- Broad Search:
distillery_search(query="<topic>", limit=20, project="<project if specified>")
Deduplicate Pass 1a and 1b results by entry ID, keeping the higher similarity score. Record all entries and scores.
Pass 2 -- Follow-up Searches (up to 3) + Tag Expansion (up to 3):
Analyze Pass 1 for related concepts, people, sub-topics, or terms not directly covered by the original query. For each significant one:
distillery_search(query="<related concept>", limit=10, project="<project if specified>")
Tag-based expansion: Extract tags from Pass 1 results and identify their namespace prefixes (e.g., tags like domain/authentication, domain/oauth → namespace prefix domain). Call distillery_list(group_by="tags", project="<project if specified>", limit=200) to get tag frequencies across the knowledge base. From the returned tag groups, filter to those matching the namespace prefixes and rank by count. Convert the top-ranked tag segments to search queries by taking the leaf segment and replacing hyphens with spaces (e.g., domain/oauth → "oauth", domain/session-management → "session management"). Run up to 3 distillery_search calls from these ranked tag-derived queries, skipping any that duplicate an existing Pass 2 concept query.
Report: Tag expansion: discovered <N> related topics from tag vocabulary. (Omit this line entirely if no tags are found in Pass 1 results — Pass 2 proceeds with concept-based queries only.)
Pass 3 -- Gap-filling (up to 2):
If earlier passes reveal references to specific projects, decisions, or events not yet returned:
distillery_search(query="<targeted gap query>", limit=10, project="<project if specified>")
Deduplication: By entry ID across all passes. Each entry counted once; track which pass discovered it.
Report: Retrieved X unique entries across Y search passes.
Fewer than 2 entries: Fall back to recall-style display showing full provenance (ID, type badge, author, date, similarity, content) per entry, then:
Only <N> entry found for this topic. Showing results directly instead of synthesizing.
Tip: Use /distill to capture more knowledge about this topic.
Stop here -- do not synthesize with fewer than 2 entries.
Single author: Append a note that all entries are from one author and the synthesis may reflect a single perspective.
Produce these sections, omitting any with no relevant content:
a. Summary (always include) -- 2-3 paragraph narrative weaving findings together with inline [Entry <short-id>] citations (short-id = first 8 chars of UUID).
Example: The team adopted DuckDB after evaluating SQLite and PostgreSQL [Entry 550e8400]. This was driven by the need for embedded analytical queries [Entry 7c9e6679].
b. Timeline (omit if all entries same day) -- Chronological evolution with dates, descriptions, and citations.
c. Key Decisions (omit if none) -- Bullet list: what was decided, by whom, when, rationale, citation.
d. Contradictions (omit if none) -- Conflicting information between entries, presenting both sides with dates. Note which may supersede.
e. Knowledge Gaps (omit if none) -- Thin areas and suggestions for what to capture next via /distill.
Table of all cited entries:
| # | Short ID | Type | Author | Date | Preview | Similarity |
|---|---|---|---|---|---|---|
| 1 | 550e8400 | [session] | Alice Smith | 2026-03-15 | We decided to use DuckDB for... | 92% |
Ask: Would you like to go deeper on any sub-topic, or is this sufficient?
If the user identifies a sub-topic: run a focused search (limit=10), deduplicate against cited entries, produce a ## Refinement: <Sub-topic> addendum with synthesis and an Additional Sources table, then ask again. Maximum 5 refinement rounds.
When satisfied: Synthesis complete. X entries cited across Y sections.
Heading # Pour: <Topic>, then sections Summary, Timeline, Key Decisions, Contradictions, Knowledge Gaps, Sources as described above. Refinement addendums appended if requested. Fewer than 2 entries triggers the fallback display instead.
[Entry <short-id>] citation format (short-id = first 8 chars of UUID)--project filter to every distillery_search call when provided