Knowledge Distillation
Transforms raw captures from 01_Capture/ into integrated, linked knowledge notes.
Filesystem-first throughout — no CLI or embeddings store is required to run this
workflow; vault/CLAUDE.md's "Distilling captures" section states the two
non-negotiable rules (two-phase checkpoint, source preservation) that hold even without
this skill loaded. Read rules.md before starting.
Modes
| Mode | Use for | Reference |
|---|---|---|
| Distill (default) | Full pipeline: capture → search → PARA placement → enrichment → write | workflow.md |
| Triage | List and prioritize the inbox before distilling | workflow.md — Triage section |
| Insight | File a conversation synthesis as a new capture, then distill it | workflow.md — Insight section |
Hard requirements (non-negotiable, see rules.md for the full list)
- Two phases, one checkpoint. Analyze and propose, then stop for review before
writing anything. Skip only on an explicit
--auto/non-interactive instruction. - Search before writing. Run
scripts/search.pyagainst the capture's key terms — it degrades gracefully with no embeddings store present, but it must run; a distill pass with zero search is a name for "guessing at what already exists." When agaiafieldbinary is available,scripts/graph.py'sgraph_context()also adds graph-derived backlink/bridge candidates the text search alone missed (see workflow.md); its absence never blocks this step. When the binary supports gaiafield v2,graph.inferred_candidates()adds a separately-labeled, report-only block of statistical candidates (workflow.md's "Inferred candidates" section) — these are never auto-applied, ever; seecontract/KNOWLEDGE_API.md's v2 section, rule 1. - Every distilled note carries its source — a
*Source: ...*line in the body and asource:frontmatter field — and getsstatus: distilled. - The capture leaves
01_Capture/after distilling — archived (default, to05_Archive/<Origin>-Captures-<YYYY-MM>/) or deleted (duplicates/empty stubs only). - Ambiguity goes to the DLQ, not a guess. If placement, source, or search results
are genuinely unclear after one honest attempt, write a dead-letter note to
00_Memory/dlq/viascripts/vault_utils.write_dlq_note()and say so in the Phase 1 report, rather than silently picking an answer.
Quick start
uv run --project "$CLAUDE_PLUGIN_ROOT/scripts" python3 "$CLAUDE_PLUGIN_ROOT/scripts/search.py" "key terms from the capture" --top 10 --json
Then follow workflow.md's numbered steps.
References
- Workflow — the full distill/triage/insight procedure
- Rules — PARA placement logic, enrichment levels, the DLQ convention, cluster mode