원클릭으로
distill
Capture decisions, insights, and action items from the current session into the knowledge base
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Capture decisions, insights, and action items from the current session into the knowledge base
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Onboarding wizard — verify MCP connectivity, detect transport, and configure scheduled tasks via Claude Code routines
Synthesize multiple knowledge entries into a cohesive narrative with citations
Contrast internal implementation knowledge against ambient intelligence, find where they meet, and emit a directional assessment (ahead / exposed / decide / confirm)
Generate an ambient intelligence digest from recent feed activity with source suggestions
Produce a knowledge dashboard with recent entries, corrections, expiring soon, stale knowledge, and unresolved items. In team mode, also shows team activity, related entries from teammates, and the review queue.
Compile deep context on a topic by combining semantic search with relationship traversal across 4 retrieval phases
| name | distill |
| description | Capture decisions, insights, and action items from the current session into the knowledge base |
| allowed-tools | ["mcp__*__distillery_status","mcp__*__distillery_store","mcp__*__distillery_find_similar","mcp__*__distillery_update","Bash(git config *)"] |
| disable-model-invocation | true |
| effort | medium |
Distill captures decisions, architectural insights, and action items from a working session and stores them as knowledge entries in Distillery.
/distill is invoked, optionally with content: /distill "We decided to use DuckDB for local storage"/distill --project <name> targets a specific projectSee CONVENTIONS.md — skip if already confirmed this conversation.
See CONVENTIONS.md for resolution order. Cache for the session.
If explicit content was provided (e.g., /distill "We decided to use DuckDB"), use it directly.
Otherwise, gather from the current session context:
If session context is thin, ask what to capture. Do not proceed without at least one concrete decision, insight, or action item.
Synthesize gathered content into a focused summary:
Show the draft to the user before storing:
## Distilled Summary (preview)
[summary content]
Ready to store? (yes / edit / skip)
Accept revisions if the user wants to edit.
Call distillery_find_similar(content="<distilled summary>", dedup_action=true). Handle by action field:
"create": No similar entries. Proceed to Step 6.
"skip": Near-exact duplicate. Show similarity table and offer: (1) Store anyway, (2) Skip. Display table format:
| Entry ID | Similarity | Preview |
|----------|-----------|---------|
| <id> | <score%> | <content_preview> |
"merge": Very similar entry exists. Show similarity table and offer: (1) Store anyway, (2) Merge with existing, (3) Skip.
For merge: combine new summary with the most similar entry's content, call distillery_update with the entry ID and merged content, confirm and stop.
"link": Related but distinct. Show similarity table, note new entry will be linked. Ask to proceed or skip. If proceeding, include "related_entries": ["<id1>", ...] in metadata at Step 7.
For skip in any case: confirm "Skipped. No new entry was stored." and stop.
Auto-extract 2-5 keywords from the summary. Prefer hierarchical tags:
project/{repo-name}/sessions as base tag for the current projectproject/{repo-name}/decisions for decision entriesproject/{repo-name}/architecture for architectural insightsdomain/{topic} for domain-specific tags (e.g., domain/storage, domain/api-design)Distillery recognises six top-level namespaces in total — project/,
entity/, domain/, tech/, source/, and kind/ (the content-type
axis assigned by the classifier; see CONVENTIONS.md).
Do not set kind/* tags by hand — the namespace is reserved and the
store will reject user-supplied kind/* from non-internal sources.
Repo name sanitization: lowercase, replace non-[a-z0-9-] chars with hyphens, collapse consecutive hyphens, trim leading/trailing hyphens, prefix with repo- if result doesn't start with [a-z0-9]. Final segment must match [a-z0-9][a-z0-9\-]*.
Merge with any explicit #tag arguments (strip leading #). Tags are lowercase, hyphen-separated within segments.
Call distillery_store with:
distillery_store(
content="<distilled summary>",
entry_type="session",
author="<from Step 2>",
project="<from Step 2>",
tags=["<tag1>", "<tag2>", ...],
metadata={"session_id": "sess-<YYYY-MM-DD>-<short-random-id>"}
)
The session_id must be unique per invocation (timestamp + short random suffix).
[session] Stored: <entry-id>
Project: <project> | Author: <author>
Summary: <first 200 chars>...
Tags: tag1, tag2, tag3
Preview (before storing):
## Distilled Summary (preview)
<summary text>
Ready to store? (yes / edit / skip)
Confirmation (after storing):
[session] Stored: <entry-id>
Project: <project> | Author: <author>
Summary: <first 200 chars>...
Tags: tag1, tag2, tag3
Duplicate comparison table:
| Entry ID | Similarity | Preview |
|----------|-----------|---------|
| abc-123 | 92% | We decided to use DuckDB... |
distillery_find_similar(dedup_action=true)# from user-provided tagssession_id metadata field must be unique per invocation