Distill
Skill marsmike/agentic-toolkit/plugins/obsidian/skills/distill
Vault-first toolkit for Claude Code — curated plugins over an Obsidian-compatible knowledge vault, governed by an explicit contract, gated by evals, continuously delivered.
npx -y skills add marsmike/agentic-toolkit --skill distillAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 10 days oldThe repository was created 10 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Process captures into vault knowledge — triage the inbox, distill one file, or file a conversation insight. Use when working with 01_Capture/.
SKILL.md
3.2 KB, as published. Nobody here has run it
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.