Obsidian rlm distiller
Skill richfrem/agent-plugins-skills/plugins/obsidian-wiki-engine/skills/obsidian-rlm-distiller
Distills wiki source files into the RLM summary layer (summary.md, bullets.md, deep.md) using the cheapest available LLM CLI. Routes to Copilot gpt-5-mini first, then Claude Haiku, then Gemini Flash. Never uses Ollama. Use when wiki nodes need RLM summaries generated or refreshed.From its SKILL.md
npx -y skills add richfrem/agent-plugins-skills --skill obsidian-rlm-distillerAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 5 stars5 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.
SKILL.md
3.7 KB, 907 tokens by cl100k_base, as published. Nobody here has run it
Dependencies
Requires Python 3.8+ and at least one CLI installed: copilot, claude, or gemini.
pip install -r requirements.txt
Obsidian RLM Distiller
Status: Active
Author: Richard Fremmerlid
Domain: Obsidian Wiki Engine
Replaces: rlm-distill-ollama (fully deprecated)
Purpose
Distills registered wiki source files into the three-layer RLM summary structure
inside {wiki_root}/rlm/{concept}/. Delegates work to the cheapest available
LLM CLI — never a local Ollama server.
Cheap-Model Fallback Chain (Strict)
1. copilot CLI available? → use gpt-5-mini (fastest, Paid - AI Credits)
2. claude CLI available? → use claude-haiku-4-5 (fallback, Paid)
3. gemini CLI available? → use gemini-3-flash-preview (final fallback, Paid)
4. none found → exit with instructions
rlm-distill-ollamais fully deprecated. Onlyrlm-distill-agentpointing at cheap cloud models is supported.
Output: Three-Layer RLM Structure
{wiki_root}/rlm/{concept}/
summary.md ← 1-5 sentence distilled summary
bullets.md ← key idea bullets (6-10 points)
deep.md ← full multi-pass distillation
Usage
Distill all stale wiki nodes
python ./scripts/distill_wiki.py --wiki-root /path/to/wiki-root
Distill one named source
python ./scripts/distill_wiki.py --wiki-root /path/to/wiki-root --source arch-docs
Force engine override
python ./scripts/distill_wiki.py --wiki-root /path/to/wiki-root --engine claude
python ./scripts/distill_wiki.py --wiki-root /path/to/wiki-root --engine gemini
python ./scripts/distill_wiki.py --wiki-root /path/to/wiki-root --engine copilot
Use shared .agent/learning/ cache (colocates with rlm-factory)
python ./scripts/distill_wiki.py --wiki-root /path/to/wiki-root \
--rlm-cache-dir /path/to/project/.agent/learning/rlm_wiki_cache
Dry run
python ./scripts/distill_wiki.py --wiki-root /path/to/wiki-root --dry-run
Engine Detection Logic
distill_wiki.py calls shutil.which() for each CLI in priority order.
The first one found and authenticated is used for the entire batch:
ENGINE_PRIORITY = [
("copilot", "gpt-5-mini"),
("claude", "claude-haiku-4-5"),
("gemini", "gemini-3-flash-preview"),
]
RLM Cache Storage
distill_wiki.py writes summaries directly into its own RLM cache directory.
No cross-plugin script calls are made (ADR-001 compliant).
Default cache: {wiki-root}/rlm/{concept}/
To colocate with rlm-factory under .agent/learning/, pass --rlm-cache-dir:
python ./scripts/distill_wiki.py --wiki-root /path/to/wiki-root \
--rlm-cache-dir /path/to/project/.agent/learning/rlm_wiki_cache
The cache location is determined by configuration in .agent/learning/rlm_profiles.json
(the cache key of the wiki profile) — not by hard-coded cross-plugin paths.
When to Use
- After
/wiki-ingestpopulates new wiki nodes - When RLM summaries are missing or stale
- Before running
/wiki-queryfor optimal recall - As part of the
/wiki-rebuildfull pipeline
Related Scripts
distill_wiki.py— cheap-model fallback orchestratorraw_manifest.py—WikiSourceConfigloaderaudit.py— identifies stale/missing RLM summaries
What ships with it: 5 files
786 B alongside SKILL.md, 3 of them executable
evals/
- evals.json685 B
scripts/
- audit.pyruns25 B
- distill_wiki.pyruns32 B
- raw_manifest.pyruns32 B
- requirements.txt12 B