skills/vault-wiki/SKILL.md
Multi-domain LLM Wiki in vault — build and maintain a federation of interlinked markdown wiki knowledge bases inside your Obsidian vault. Each domain wiki has its own schema, index, and log, linked across boundaries via path-based wikilinks. Use when user wants to use a wiki (create, ingest into, query, lint).
npx skillsauth add olafgeibig/skills vault-wikiInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Build and maintain a persistent, compounding federation of knowledge bases as interlinked markdown files. Based on Andrej Karpathy's LLM Wiki pattern, extended for multiple domains.
Unlike traditional RAG (which rediscovers knowledge from scratch per query), each wiki compiles knowledge once and keeps it current. Cross-references are already there. Contradictions have already been flagged. Synthesis reflects everything ingested. Multiple focused wikis live under one root — each with its own schema, index, and log — linked across domain boundaries via path-based wikilinks.
Division of labor: The human curates sources and directs analysis. The agent summarizes, cross-references, files, and maintains consistency across domains.
Storage: All wiki content lives in the wiki/ directory within an Obsidian
vault managed by TurboVault. All operations use mcp_turbovault_* tools.
See the turbovault-use skill for tool-level mechanics (read/write/edit/search/batch).
Use this skill when the user:
wiki/ directoryThe wiki lives at wiki/ within the active TurboVault vault. Set the active
vault at the start of each session:
mcp_turbovault_set_active_vault(name="<vault-name>")
All paths in this skill are relative to the vault root with a wiki/ prefix.
Example paths:
wiki/index.mdwiki/llm-wiki/SCHEMA.mdwiki/llm-wiki/entities/transformer-architecture.mdvault-root/ # active TurboVault vault
├── wiki/ # wiki root — hub index.md lives here
│ ├── index.md # Hub: one section per domain wiki with abstract
│ ├── llm-wiki/ # Domain Wiki 1
│ │ ├── SCHEMA.md # Conventions, structure rules, domain config
│ │ ├── llm-wiki.md # Sectioned content catalog with one-line summaries
│ │ ├── log.md # Chronological action log (append-only, rotated yearly)
│ │ ├── raw/ # Layer 1: Immutable source material
│ │ │ ├── articles/ # Web articles, clippings
│ │ │ ├── papers/ # PDFs, arxiv papers
│ │ │ ├── transcripts/ # Meeting notes, interviews
│ │ │ └── assets/ # Images, diagrams referenced by sources
│ │ ├── entities/ # Entity pages (people, orgs, products, models)
│ │ ├── concepts/ # Concept/topic pages
│ │ ├── comparisons/ # Side-by-side analyses
│ │ └── queries/ # Filed query results worth keeping
│ ├── ai-research/ # Domain Wiki 2
│ └── ... # Additional domain wikis
├── area/
├── projects/
└── ...
Every level uses a different naming: the hub wiki/index.md catalogs all domain
wikis, while each domain wiki has its own <name>-wiki.md (e.g., wiki/llm-wiki/llm-wiki.md).
Each domain wiki's full structure:
SCHEMA.md, <name>-wiki.md, log.md, raw/, entities/, concepts/, comparisons/, and queries/.
Layer 1 — Raw Sources: Immutable by default. The agent reads but does not modify these during normal ingest/synthesis. If the user explicitly asks to correct or align a raw source itself, treat it as an intentional raw-source revision: make the narrow change and append a log.md entry documenting the exception.
Layer 2 — The Wiki: Agent-owned markdown files. Created, updated, and cross-referenced by the agent.
Layer 3 — The Schema: Each domain wiki's SCHEMA.md defines structure, conventions, and tag taxonomy for that domain.
Domain wikis are flat subdirectories directly under wiki/ — no wiki/wikis/ nesting.
The root wiki/index.md is the hub. It contains one section per domain wiki.
Format: Each section has a ## name heading matching the wiki's directory name, followed by an abstract paragraph describing the wiki's purpose and scope.
# Wiki Hub
## [[wiki/llm-wiki/llm-wiki|llm-wiki]]
LLM-Wiki methodology — persistent, compounding knowledge base for developing the multi-domain LLM Wiki skill itself.
## [[wiki/ai-research/ai-research-wiki|ai-research]]
AI/ML research, models, papers, benchmarks.
Rules:
<name>-wiki.md and log.mdHub detection: The root wiki/index.md is always a hub. If it doesn't exist, the wiki root is uninitialized.
→ Trigger: Load ./references/initialize-wiki.md when no wiki/index.md exists, or when the user asks to create a new domain wiki.
How the agent decides which wiki to use:
| Trigger | Behavior | |---------|----------| | User names the wiki explicitly | Use that wiki | | Source or query clearly matches one wiki's abstract | Use that wiki | | Ambiguous | Ask the user. Do not guess. |
The agent reads the abstracts in wiki/index.md and matches against them. No tag system, no keyword mapping — just the abstract text.
When the user has an existing wiki, always orient yourself before doing anything:
① Ensure the active vault is set:
mcp_turbovault_set_active_vault(name="<vault-name>")
② Read root wiki/index.md — it is always a hub.
mcp_turbovault_read_note(path="wiki/index.md")
③ Route to target wiki — explicit naming → abstract match → ask (see Routing above).
④ Read that wiki's SCHEMA.md, <wiki>-wiki.md, and recent log.md:
mcp_turbovault_read_note(path="wiki/<target-wiki>/SCHEMA.md")
mcp_turbovault_read_note(path="wiki/<target-wiki>/<target-wiki>-wiki.md")
mcp_turbovault_read_note(path="wiki/<target-wiki>/log.md")
Only after orientation should you ingest, query, or lint. This prevents:
For large wikis (100+ pages), also run mcp_turbovault_search(query="<topic>") and filter results to wiki/<target-wiki>/ before creating anything new.
ALL wikilinks must use the full vault path: [[wiki/<wiki-name>/<type>/<page-name>]]
This is a mandatory rule, not a convention — without the wiki/ prefix, wikilinks resolve relative to the current file's directory and TurboVault's broken-link detection will flag every link as broken. Even links within the same domain wiki must use the full path.
Examples:
[[wiki/ai-research/concepts/llm-infrastructure]] — same-wiki link[[wiki/llm-wiki/concepts/three-layer-architecture]] — cross-wiki link[[wiki/ai/entities/andrei-karpathy|Andrej Karpathy]] — with display textNever write [[ai-research/concepts/foo]] or [[concepts/bar]]. These look for pages at the vault root, which doesn't exist. This is the #1 cause of initial lint failures on new wikis.
Additional rules:
Load and follow references/initialize-wiki.md precisely, in order, every step. All steps are mandatory — especially hub registration. A wiki not registered in the hub is invisible to the routing system.
→ Trigger: Load ./references/ingest-workflow.md when the user provides a source (URL, paste, file) to integrate into a wiki, or when processing items from vault inbox.
Key rules that apply at every ingest:
<name>-wiki.md and log.md — skipping this degrades the wikiweb_extract returns a summary instead of full text, label the source status: incomplete and ask the user for the full version. Never create entity/concept pages from truncated sources.When the user asks a question about the wiki's domain:
① Read root wiki/index.md — identify which wiki(s) are relevant using the hub abstracts.
② Read the relevant wiki <name>-wiki.md files to identify relevant pages.
③ For wikis with 100+ pages, also run mcp_turbovault_search(query="<topic>") across the wiki prefix — the index alone may miss relevant content.
④ Read the relevant pages using mcp_turbovault_read_note(path="wiki/...").
⑤ Synthesize an answer from the compiled knowledge. Cite pages with their vault path: "Based on [[wiki/ai-research/concepts/transformer-architecture]] and [[wiki/llm-wiki/concepts/three-layer-architecture]]..."
⑥ File valuable answers back — if the answer is a substantial comparison, deep dive, or novel synthesis, create a page in the target wiki's queries/ or comparisons/. Don't file trivial lookups — only answers that would be painful to re-derive.
⑦ Update that wiki's log.md with the query and whether it was filed.
→ Trigger: Load ./references/lint-workflow.md when the user asks to lint, audit, or health-check the wiki. Covers 18 checks: broken links, outbound link count, frontmatter validation, index completeness, orphans, tag taxonomy, stale content, page size, log rotation, report, fix cascading, cross-wiki links, hub drift, and source drift (sha256).
Lint cascades — fixing one page often reveals the next. Re-run checks after each fix pass until clean.
See the turbovault-use skill for available search tools.
Scope warning: TurboVault search searches the entire vault, not just wiki/. Always scope results by wiki/<domain>/ path prefix or use exclude_paths.
→ Trigger: Load ./references/detect-unprocessed-sources.md when the user asks to process new articles in raw/articles/. The raw/articles/ directory is the signal — any file there not yet referenced by a wiki page is pending processing.
edit_note for Targeted EditsSee the turbovault-use skill for syntax and format requirements.
vault-wiki-specific DON'Ts:
edit_note for log.md — SEARCH replaces the previous entry's header, leaving detail lines orphaned. Always use read-full/write-full.edit_note for <name>-wiki.md — matching ## Entities deletes the header. Always use read-full/write-full.edit_note for SCHEMA.md — pipe characters |, brackets [], and backticks trigger parser errors. Always use read-full/write-full.edit_note for raw/ files — raw sources are immutable by default. Use full read + write for corrections.→ Trigger: Load ./references/archiving.md when the user asks to archive a wiki page or delete an entire domain wiki.
→ Trigger: Load ./references/source-freshness-check.md when the user asks to check if git-based sources (tools, repos) have been updated since ingest. Re-extracts the URL and compares sha256 against stored value. User decides on re-ingest.
→ Trigger: Load ./references/source-cascade-removal.md when the user asks to remove a raw source and all pages derived from it. Depends on sources: frontmatter for attribution — pages without it need user review.
This skill is the stable core. Do not edit it.
All optimizations, pitfalls, and discovered workflows belong in
vault-improvements — loaded via the /vault bundle alongside this skill.
When a lesson learned emerges:
vault-improvements skill as a new
reference entry or sectionraw/ files during normal ingest — sources are immutable. Corrections go in wiki pages. Exception: user explicitly asks for a raw-source revision.<name>-wiki + recent log before any operation in a new session.<name>-wiki.md and log.md — these are the navigational backbone. Skipping them degrades the wiki.feuchtigkeitsschaden.md + gasanlage.md + wohnwagen-marken.md, not one summary document.SCHEMA.md.[[wiki/other-wiki/concepts/topic]]. No duplication.SCHEMA.md first.log.md exceeds 500 entries, move it to log-YYYY.md and start fresh.status: incomplete and wait for the full text.tools
Safe and effective use of TurboVault MCP tools — vault selection, active vault management, read/write/edit_note patterns, SEARCH/REPLACE syntax, search tools, graph tools, batch operations, verification, and troubleshooting. Load this skill whenever a task uses mcp_turbovault_* tools.
testing
--- name: {{BUNDLE_NAME}}-improvements description: "Container for agent-discovered optimizations to the {{BUNDLE_NAME}} bundle — {{SKILL_NAMES}}" metadata: version: "0.3.0" source: https://github.com/olafgeibig/skills hermes: tags: [template, improvement, bundle, profile] related_skills: [{{SKILL_NAMES}}] --- # {{BUNDLE_NAME}} Improvements This skill collects all improvements discovered while working with {{SKILL_LIST}}. Core skills remain untouched. **Profile-specific:** This
testing
--- name: {{BUNDLE_NAME}}-improvements description: "Container for agent-discovered optimizations to the {{BUNDLE_NAME}} bundle — {{SKILL_NAMES}}" metadata: version: "0.3.0" source: https://github.com/olafgeibig/skills hermes: tags: [template, improvement, bundle, profile] related_skills: [{{SKILL_NAMES}}] --- # {{BUNDLE_NAME}} Improvements This skill collects all improvements discovered while working with {{SKILL_LIST}}. Core skills remain untouched. **Profile-specific:** This
tools
Obsidian Headless Sync — systemd timer monitoring, diagnostics, and recovery for the ob sync service on headless machines