# LLM Wiki Maintainer

> Use when the task involves a filesystem-based LLM Wiki or Obsidian vault, especially Ar9av/obsidian-wiki projects using .skills, .env, ~/.obsidian-wiki/config, AGENTS.md, .manifest.json, index.md/log.md/hot.md, ingest/query/lint workflows, or Russian prompts like "добавь в вики", "сделай ingest", "lint wiki", "обнови index/log", or "разложи по obsidian-wiki".

- Skill: `sergekostenchuk/llm-wiki-maintainer` (Agent Skill, multi-file: 3 files)
- Install (CLI): `npx skillmds@latest add sergekostenchuk/llm-wiki-maintainer`
- Raw SKILL.md: https://api.skillmd.com/api/skills/sergekostenchuk/llm-wiki-maintainer/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: sergekostenchuk (https://skillmd.com/u/sergekostenchuk)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/sergekostenchuk/llm-wiki-maintainer

---


# LLM Wiki Maintainer

## Overview

Use this skill for persistent markdown knowledge bases maintained as compiled
Obsidian-compatible wiki artifacts.

Priority order:

1. For new setup/deploy/init requests, deploy `Ar9av/obsidian-wiki` by default.
2. Prefer the `Ar9av/obsidian-wiki` framework when it is present.
3. If a legacy `raw/` + `wiki/` LLM Wiki is already present, work with it
   without breaking it, but propose migrating to `obsidian-wiki`.
4. Create or extend a legacy layout only when the user explicitly requests the
   old standard LLM Wiki format.

Treat the wiki as a maintained system, not as a pile of notes.

## Default Deployment Behavior

When the user invokes this skill for setup, deployment, initialization, or a new
wiki, and no existing wiki contract has to be preserved, deploy
`Ar9av/obsidian-wiki` as the default implementation.

Default deployment means:

1. Create or populate the target directory as an `obsidian-wiki` repo from
   `https://github.com/Ar9av/obsidian-wiki`.
2. Preserve any existing user files in the target directory.
3. Create `.env` with `OBSIDIAN_VAULT_PATH` set to the target vault.
4. Initialize the vault files and directories:
   - `index.md`
   - `log.md`
   - `hot.md`
   - `.manifest.json`
   - `.obsidian/`
   - `_meta/`
   - `_raw/`
   - `_archives/`
   - `concepts/`, `entities/`, `skills/`, `references/`, `synthesis/`,
     `journal/`, `projects/`
5. Ensure `~/.obsidian-wiki/config` points to the selected vault/repo when doing
   so is safe.
6. Install only the needed Codex skill symlinks into `~/.codex/skills` unless
   the user asks to run the full upstream `setup.sh`.
7. Keep upstream framework git state clean by excluding local vault artifacts
   from accidental upstream commits when the repo uses
   `Ar9av/obsidian-wiki` as `origin`.

Do not ask whether the user wants the legacy layout when the request is simply
"set up my wiki", "разверни wiki", "создай Obsidian wiki", or similar. Use
`obsidian-wiki` unless the user explicitly names the old layout.

## Legacy LLM Wiki Compatibility

Legacy mode is for already-existing standard LLM Wiki layouts such as:

- `WIKI-SCHEMA.md`
- `raw/`
- `wiki/index.md`
- `wiki/log.md`
- `wiki/sources/`
- `wiki/concepts/`, `wiki/entities/`, `wiki/analyses/`

When legacy mode is detected:

1. Work with the existing layout safely.
2. Do not move, rename, or rewrite the legacy wiki without explicit approval.
3. Tell the user that the current wiki is legacy/standard LLM Wiki.
4. Recommend migrating to `Ar9av/obsidian-wiki` for future work unless there is
   a clear reason to keep the old structure.
5. Offer a migration path:
   - preserve `raw/` as source material or map it to `_raw/`
   - map `wiki/sources/` to `references/`
   - map `wiki/concepts/` to `concepts/`
   - map `wiki/entities/` to `entities/`
   - map `wiki/analyses/` to `synthesis/`
   - convert `wiki/index.md` and `wiki/log.md` into root `index.md` and
     `log.md`
   - create `.manifest.json`, `hot.md`, `_meta/`, and `.obsidian/`

Only perform the migration after the user asks for it or clearly authorizes it.

## Obsidian-Wiki Priority

Assume `obsidian-wiki` mode when any of these are present:

- `.skills/llm-wiki/SKILL.md`
- `.skills/wiki-ingest/SKILL.md`, `.skills/wiki-query/SKILL.md`, or related
  wiki skills
- `AGENTS.md` beginning with Obsidian Wiki agent context
- `.env` containing `OBSIDIAN_VAULT_PATH`
- `~/.obsidian-wiki/config`
- vault files such as `.manifest.json`, `hot.md`, `_meta/taxonomy.md`, `_raw/`

In this mode, follow the framework contract before local habits:

1. Resolve config.
   - Walk up from CWD looking for `.env` with `OBSIDIAN_VAULT_PATH`.
   - If not found, read `~/.obsidian-wiki/config`.
   - The resolved `OBSIDIAN_VAULT_PATH` is the vault root.
   - The resolved `OBSIDIAN_WIKI_REPO`, when present, is the framework repo.
2. Read control files.
   - Read repo `AGENTS.md` when present.
   - Then read `$OBSIDIAN_VAULT_PATH/AGENTS.md` when present; it overrides
     framework defaults for owner-specific conventions.
   - For operation-specific work, read the matching
     `.skills/<skill-name>/SKILL.md` from the repo before acting.
3. Use the `obsidian-wiki` vault shape.
   - Root special files: `index.md`, `log.md`, `hot.md`, `.manifest.json`.
   - Metadata: `_meta/`, `_raw/`, `_archives/`, `.obsidian/`.
   - Categories: `concepts/`, `entities/`, `skills/`, `references/`,
     `synthesis/`, `journal/`, and `projects/`.
4. Keep the compiled layer in the vault root categories, not in `wiki/`, unless
   the detected contract explicitly uses legacy paths.

Local default in this environment:

- `$HOME/TG-NEWS-151` is an `obsidian-wiki` repo and vault.
- `$HOME/.obsidian-wiki/config` points to that vault.

## Quick Start

1. Find the contract.
   - First detect `obsidian-wiki` mode using the rules above.
   - In `obsidian-wiki` mode, resolve `.env` or `~/.obsidian-wiki/config`,
     read `AGENTS.md`, then read vault `index.md`, `log.md`, and `hot.md`.
   - In legacy mode, if the vault has `WIKI-SCHEMA.md`, read it first.
   - Then read local `AGENTS.md` if present.
   - Then read legacy `wiki/index.md` and `wiki/log.md`.
   - If no contract exists and the task is setup/init/deploy, create an
     `obsidian-wiki` setup by default.
   - For whole-workspace vaults, read the corpus-policy page before ingesting
     when one exists.
2. Respect source boundaries.
   - Treat `_raw/`, `raw/`, and external corpus files as read-only unless
     explicitly told to edit them.
   - In `obsidian-wiki` mode, write compiled knowledge only into vault category
     directories such as `references/`, `concepts/`, `entities/`, `synthesis/`,
     `journal/`, and `projects/`.
   - In legacy mode, write compiled knowledge only into `wiki/`.
3. Pick the operation.
   - `ingest`
   - `query`
   - `lint`

## When To Use

- The user mentions `LLM Wiki`, `Obsidian`, `vault`, `raw/`, `wiki/`,
  `wiki/index.md`, `wiki/log.md`, `WIKI-SCHEMA.md`, or `AGENTS.md`.
- The user mentions `obsidian-wiki`, `Ar9av/obsidian-wiki`, `.manifest.json`,
  `.skills/wiki-*`, `_raw/`, `hot.md`, `wiki-status`, `wiki-ingest`, or
  `wiki-query`.
- The task involves converting source files into Markdown before ingest, or the
  user mentions `MarkItDown`, `markitdown`, document-to-markdown conversion,
  PDF/DOCX/PPTX/HTML import, or asks to prepare raw source material for a wiki.
- The user wants to ingest sources, answer from the wiki, reconcile
  contradictions, or maintain a persistent knowledge base.
- The user uses Russian prompts such as:
  - `добавь в вики`
  - `сделай ingest`
  - `обнови index/log`
  - `lint wiki`
  - `разложи по вики`

## Workflow

### Obsidian-Wiki Operation Routing

When in `obsidian-wiki` mode, prefer the matching framework skill instructions:

- Setup or repair: read `.skills/wiki-setup/SKILL.md`.
- Ingest: read `.skills/wiki-ingest/SKILL.md` or
  `.skills/data-ingest/SKILL.md` for raw text/export data.
- Query: read `.skills/wiki-query/SKILL.md`.
- Status/delta: read `.skills/wiki-status/SKILL.md`.
- Lint: read `.skills/wiki-lint/SKILL.md`.
- Rebuild/archive: read `.skills/wiki-rebuild/SKILL.md`.
- Cross-linking: read `.skills/cross-linker/SKILL.md`.
- Tags: read `.skills/tag-taxonomy/SKILL.md`.
- Project sync: read `.skills/wiki-update/SKILL.md`.

If a requested workflow is already covered by an installed `obsidian-wiki`
skill, follow that skill's contract rather than reinterpreting the task from
this generic skill.

### Ingest

Use when a new source, folder, note, or workspace slice should become durable
knowledge.

In `obsidian-wiki` mode:

1. Resolve config and read control files.
2. Read the source carefully without mutating it.
3. Create or update a source/reference page in `references/` unless the
   operation-specific skill says a different category is correct.
4. Update durable pages in `concepts/`, `entities/`, `skills/`, `synthesis/`,
   `journal/`, or `projects/` as appropriate.
5. Update `index.md`, `log.md`, `hot.md`, and `.manifest.json`.
6. Preserve provenance in frontmatter fields such as `sources`, `summary`,
   `provenance`, `base_confidence`, `lifecycle`, `created`, and `updated` when
   following the framework templates.

Legacy mode:

Steps:

1. Read the source carefully.
2. Create or update one source page in `wiki/sources/`.
3. Update the affected durable pages in `wiki/entities/`,
   `wiki/concepts/`, or `wiki/analyses/`.
4. Update `wiki/index.md`.
5. Append an entry to `wiki/log.md`.

Rules:

- Prefer one source page per source item when practical.
- For tightly related documents, use one bundle source page and list every
  member in `sources`.
- Preserve provenance. Do not rewrite source material in place.

### MarkItDown-Assisted Ingest

Use when source material exists in non-markdown formats and should be prepared
for wiki ingest without inventing content.

Typical cases:

- PDF
- DOCX
- PPTX
- HTML
- copied exports or downloaded source bundles that are easier to ingest after
  markdown conversion

Rules:

- Treat original files as read-only unless explicitly told otherwise.
- In `obsidian-wiki` mode, prefer writing converted artifacts into `_raw/` or
  another explicitly chosen staging area, not into compiled category folders.
- In legacy mode, prefer writing converted artifacts into `raw/` or another
  explicitly chosen ingest staging area, not into `wiki/`.
- Do not overwrite the original source file with converted markdown.
- After conversion, ingest from the converted artifact as a source, preserving
  provenance back to the original path.
- If conversion quality is poor, say so explicitly instead of pretending the
  markdown is trustworthy.

Local tool note:

- A local `MarkItDown` environment exists at:
  `$HOME/LLM Wiki MarkItDown/MarkItDown/venv/bin/markitdown`
- Installed version observed locally: `markitdown 0.1.5`

Practical workflow:

1. Identify the original source file.
2. Convert it with local `markitdown` into a staging markdown file.
3. Keep the original file untouched.
4. Read the converted markdown critically.
5. In `obsidian-wiki` mode, create/update one `references/` page from that
   converted source, then update durable pages, `index.md`, `log.md`, `hot.md`,
   and `.manifest.json`.
6. In legacy mode, create/update one `wiki/sources/` page from that converted
   source, then update durable pages, `wiki/index.md`, and `wiki/log.md`.

### Query

Use when the user asks a question that the wiki should answer.

In `obsidian-wiki` mode:

1. Resolve config and read `index.md`, `hot.md`, and relevant frontmatter
   summaries first.
2. Read relevant durable pages only when needed.
3. Answer from the wiki first with `[[wikilink]]` citations.
4. If the wiki is insufficient, state the missing source or page explicitly.

Legacy mode:

Steps:

1. Read `wiki/index.md` first to orient.
2. Read the relevant durable pages.
3. Answer from the wiki first.
4. Cite relevant pages with `[[wikilinks]]`.
5. If the answer is durable, save or propose a new analysis page.

Rules:

- Do not silently mix source facts and inference.
- If the wiki is insufficient, say what is missing.

### Lint

Use when the user wants quality control on the wiki.

Check for:

- broken links
- orphan pages
- weakly connected pages
- duplicate or overlapping pages
- contradictions
- concepts or entities repeatedly mentioned without their own page
- stale claims or superseded pages

Fix directly when safe:

- broken links
- index drift
- missing backlinks that are clearly warranted
- obvious page placement or title cleanup
- stale `hot.md` or `.manifest.json` metadata in `obsidian-wiki` mode when the
  correction is mechanical and source-backed

Report instead of guessing when judgment is needed.

## Page Discipline

- Prefer updating durable pages over creating fragments.
- Keep source pages factual and durable pages synthetic.
- Keep YAML frontmatter valid.
- Maintain meaningful wikilinks.
- In `obsidian-wiki` mode, keep `index.md`, `log.md`, `hot.md`, and
  `.manifest.json` current.
- In legacy mode, keep `wiki/index.md` and `wiki/log.md` current.
- If a claim lacks trustworthy support, say so explicitly.

## Truthfulness Rules

- Do not invent facts.
- Distinguish source-backed facts from synthesis.
- Preserve uncertainty explicitly.
- Never fabricate provenance, citations, source counts, or page links.

## Architecture Notes

- If the wiki describes software, keep architecture pages separate from
  implementation pages.
- If comparing systems or products, ingest both sides first, then write a
  synthesis page.
- If the user supplies text directly in chat, treat it as a source note and
  record its provenance in the source page body.
- If imported source material first passes through `MarkItDown`, preserve both:
  the original file path and the converted markdown path in the resulting source
  page or provenance note when useful.

## Local Example

For a concrete working vault in this environment, read
`references/artigram-example.md`.

For a local conversion-oriented setup in this environment, note:

- wiki skeleton:
  `$HOME/LLM Wiki MarkItDown/LLM Wiki`
- MarkItDown venv:
  `$HOME/LLM Wiki MarkItDown/MarkItDown/venv`

