---
name: llm-wiki
description: Use when building or maintaining a persistent personal knowledge base (second brain) in Obsidian where an LLM incrementally ingests sources, updates entity/concept pages, maintains cross-references, and keeps a synthesis current. Triggers include "second brain", "Obsidian wiki", "personal knowledge management", "ingest this paper/article/book", "build a research wiki", "compound knowledge", "Memex", or whenever the user wants knowledge to accumulate across sessions instead of being re-derived by RAG on every query.
context: fork
version: 1.0.0
author: ai-ops-skills
license: MIT
tags: [knowledge-management, obsidian, second-brain, pkm, rag-alternative, wiki, karpathy, memex]
compatible_tools: [claude-code, codex-cli, cursor, antigravity, opencode, gemini-cli]
Internal Safety Override
- Status: disabled by default.
- Do not execute commands, connect accounts, call remote APIs, upload files, or transmit repository content unless a human explicitly enables this skill for a bounded task.
- Never read
.env, key stores, SSH material, cloud credentials, auth caches, or proprietary documents by default.
- Audit categories: command, network, secrets.
LLM Wiki — Second Brain for an agent runtime + Obsidian
Inspired by Andrej Karpathy's LLM Wiki pattern (gist). This skill turns an agent runtime (or any agent CLI) into a disciplined wiki maintainer that incrementally builds and maintains a persistent, interlinked Obsidian vault as you feed it sources. The knowledge compounds — cross-references, contradictions, and synthesis are already there when you query.
Core principle
Most LLM+docs workflows are RAG: retrieve fragments at query time, synthesize from scratch, forget. The wiki is compounding: sources are read once, integrated into a persistent markdown knowledge base, and kept current. You curate and ask; the LLM reads, files, cross-references, and maintains.
Obsidian is the IDE. The LLM is the programmer. The wiki is the codebase.
When to use
- Personal: track goals, health, psychology, journaling, self-improvement
- Research: deep dives over weeks on a topic — papers, articles, reports, evolving thesis
- Book companion: file chapters as you read; build a fan-wiki-style companion for characters, themes, plot threads
- Business/team: internal wiki fed by Slack, meeting notes, calls — LLM does maintenance nobody else wants to do
- Competitive analysis, due diligence, trip planning, course notes, hobby deep-dives
Do NOT use when: you need one-shot Q&A over a fixed document (use RAG), you don't plan to add sources over time, or you don't want Obsidian in the loop.
Architecture (three layers)
vault/
├── raw/ # Layer 1 — IMMUTABLE source of truth
│ ├── <source files> # Articles, papers, PDFs, images, data
│ └── assets/ # Downloaded images from clipped articles
├── wiki/ # Layer 2 — LLM-owned knowledge base
│ ├── index.md # Content catalog (LLM updates every ingest)
│ ├── log.md # Append-only timeline (## [YYYY-MM-DD] <op> | <title>)
│ ├── entities/ # Person/Org/Place pages
│ ├── concepts/ # Ideas, theories, frameworks
│ ├── sources/ # One summary page per ingested source
│ ├── comparisons/ # Cross-source analysis pages
│ └── synthesis/ # High-level syntheses, theses, overviews
├── AI_RUNTIME_GUIDE.md # Schema + conventions (an agent runtime)
└── AGENTS.md # Same content, for Codex/Cursor/Antigravity
- Layer 1 (raw/) — you own. LLM only reads; never writes.
- Layer 2 (wiki/) — LLM owns. It creates, updates, and cross-references pages. You read it.
- Layer 3 (AI_RUNTIME_GUIDE.md / AGENTS.md) — the schema. Conventions, workflows, frontmatter rules. Co-evolved by you and the LLM.
Three core operations
- Ingest — LLM reads a source, discusses takeaways with you, writes a source summary, updates 10-15 relevant pages, updates index, appends to log. See
references/ingest-workflow.md.
- Query — LLM reads
index.md first, drills into relevant pages, synthesizes with citations. Good answers get filed back into the wiki so explorations compound. See references/query-workflow.md.
- Lint — Health check: contradictions, stale claims, orphan pages, missing cross-refs, concepts mentioned but lacking their own page, data gaps to fill with web search. See
references/lint-workflow.md.
Quick start
# 1. Initialize a vault (in Obsidian's vault directory)
python scripts/init_vault.py --path ~/vaults/research --topic "LLM interpretability"
# 2. Drop a source into raw/, then ingest
/wiki-ingest ~/vaults/research/raw/anthropic-monosemanticity.pdf
# 3. Ask questions (answers can be re-filed into the wiki)
/wiki-query "how does monosemanticity compare to mechanistic interpretability?"
# 4. Periodic health check
/wiki-lint
# 5. See the timeline
/wiki-log --last 10
Slash commands (this plugin ships)
| Command |
Purpose |
/wiki-init |
Bootstrap a fresh vault with schema files + starter structure |
/wiki-ingest <path> |
Read a source, discuss, update wiki, log it |
/wiki-query <question> |
Search wiki, synthesize answer, offer to file back |
/wiki-lint |
Run health check — contradictions, orphans, stale claims, gaps |
/wiki-log |
Show recent log entries (uses unix tools on log.md) |
Sub-agents (this plugin ships)
| Agent |
When dispatched |
wiki-ingestor |
Delegated ingest flow — reads source, proposes updates, applies after your approval |
wiki-linter |
Runs the health-check workflow independently, reports findings |
wiki-librarian |
Answers queries using index-first search, synthesizes with citations |
Python tools (scripts/)
All tools are standard library only (no pip installs). Run with python scripts/<tool>.py --help.
| Script |
Purpose |
init_vault.py |
Create folder structure + seed AI_RUNTIME_GUIDE.md, AGENTS.md, index.md, log.md |
ingest_source.py |
Helper: extract text/frontmatter from a source file, ready for LLM review |
update_index.py |
Regenerate index.md from wiki page frontmatter (category, date, source count) |
append_log.py |
Append a standardized log entry ## [YYYY-MM-DD] <op> | <title> |
wiki_search.py |
BM25 search over wiki pages (standalone fallback when index.md isn't enough) |
lint_wiki.py |
Find orphans (no inbound links), stale pages, missing cross-refs, broken links |
graph_analyzer.py |
Compute link graph stats — hubs, orphans, clusters, disconnected components |
export_marp.py |
Render a wiki page (or subtree) to a Marp slide deck |
Cross-tool compatibility
The vault's schema lives in AI_RUNTIME_GUIDE.md (an agent runtime) or AGENTS.md (Codex/Cursor/Antigravity/OpenCode). The same content works in both. This plugin ships both templates. For per-tool setup instructions see references/cross-tool-setup.md.
AI_RUNTIME_GUIDE.md → an agent runtime
AGENTS.md → an agent runtime, Cursor, Antigravity, OpenCode, an agent runtime
.cursorrules → legacy Cursor (pre-AGENTS.md)
The scripts are pure Python stdlib → run identically everywhere. Only the loader file changes per tool.
Obsidian setup (recommended)
- Obsidian Web Clipper — browser extension; converts web articles to markdown and drops them in
raw/
- Download images locally — Settings → Files and links → Attachment folder path =
raw/assets/. Settings → Hotkeys → bind "Download attachments for current file" to Ctrl+Shift+D
- Graph view — see hubs/orphans; essential for spotting structural problems
- Marp plugin — Markdown-based slide decks directly from wiki pages
- Dataview plugin — dynamic tables/lists over page frontmatter (tags, dates, source counts)
- Git — the vault is a plain markdown repo; version it
Full setup walkthrough: references/obsidian-setup.md
Why this works (vs plain RAG)
| Plain RAG |
LLM Wiki |
| Rediscover knowledge each query |
Knowledge accumulates |
| Cross-references re-computed every time |
Cross-references pre-written and maintained |
| Contradictions surface only if you ask |
Contradictions flagged during ingest |
| Exploration disappears into chat history |
Good answers re-filed as new pages |
| Scales by embeddings infrastructure |
Scales by markdown + index.md + optional local search |
At ~100 sources / hundreds of pages, index.md + filesystem search is enough. Past that, layer in a local search tool like qmd or use scripts/wiki_search.py.
Related skills (chains via context: fork)
This skill is marked context: fork so other skills can chain into it:
para-memory-files — PARA-method memory; complementary as long-term personal memory that feeds sources into the wiki
obsidian-vault (mattpocock) — lightweight Obsidian note helper; this skill is the maintained-wiki layer on top
rag-design — when wiki outgrows ~500 pages, use rag-design to bolt on a retrieval layer
mcp-design — expose the wiki as an MCP tool
agent-communication — for multi-agent wiki maintenance (ingestor + linter + librarian)
Reference docs
references/wiki-schema.md — full vault layout, page frontmatter, naming conventions
references/page-formats.md — entity, concept, source, comparison, synthesis templates
references/ingest-workflow.md — the detailed ingest flow the wiki-ingestor agent follows
references/query-workflow.md — query patterns, citation format, re-filing answers
references/lint-workflow.md — health-check heuristics
references/obsidian-setup.md — Obsidian plugins, hotkeys, vault config
references/cross-tool-setup.md — per-tool setup (Codex, Cursor, Antigravity, etc.)
references/memex-principles.md — Bush's Memex, why the LLM changes the maintenance math
Templates (assets/)
AI_RUNTIME_GUIDE.md.template, AGENTS.md.template, .integrations/platforms/cursor/templates/llm-wiki-cursor-rules.template — schema loaders per tool
index.md.template, log.md.template — starter index and log
page-templates/ — entity, concept, source-summary, comparison, synthesis
example-vault/ — small worked example you can study or copy
Iron rule
The LLM never edits files in raw/. Ever. Sources are immutable. All LLM writes go to wiki/. If you need to correct a source, do it in raw/ yourself — then re-ingest.
1---2name: llm-wiki3description: ---4---5---6name: llm-wiki7description: Use when building or maintaining a persistent personal knowledge base (second brain) in Obsidian where an LLM incrementally ingests sources, updates entity/concept pages, maintains cross-references, and keeps a synthesis current. Triggers include "second brain", "Obsidian wiki", "personal knowledge management", "ingest this paper/article/book", "build a research wiki", "compound knowledge", "Memex", or whenever the user wants knowledge to accumulate across sessions instead of being re-derived by RAG on every query.8context: fork9version: 1.0.010author: ai-ops-skills11license: MIT12tags: [knowledge-management, obsidian, second-brain, pkm, rag-alternative, wiki, karpathy, memex]13compatible_tools: [claude-code, codex-cli, cursor, antigravity, opencode, gemini-cli]14---1516## Internal Safety Override1718- Status: disabled by default.19- Do not execute commands, connect accounts, call remote APIs, upload files, or transmit repository content unless a human explicitly enables this skill for a bounded task.20- Never read `.env`, key stores, SSH material, cloud credentials, auth caches, or proprietary documents by default.21- Audit categories: command, network, secrets.2223# LLM Wiki — Second Brain for an agent runtime + Obsidian2425Inspired by Andrej Karpathy's LLM Wiki pattern ([gist](https://gist.github.com/karpathy/442a6bf555914893e9891c11519de94f)). This skill turns an agent runtime (or any agent CLI) into a disciplined wiki maintainer that **incrementally builds and maintains** a persistent, interlinked Obsidian vault as you feed it sources. The knowledge compounds — cross-references, contradictions, and synthesis are already there when you query.2627## Core principle2829Most LLM+docs workflows are **RAG**: retrieve fragments at query time, synthesize from scratch, forget. The wiki is **compounding**: sources are read once, integrated into a persistent markdown knowledge base, and kept current. You curate and ask; the LLM reads, files, cross-references, and maintains.3031> Obsidian is the IDE. The LLM is the programmer. The wiki is the codebase.3233## When to use3435- **Personal**: track goals, health, psychology, journaling, self-improvement36- **Research**: deep dives over weeks on a topic — papers, articles, reports, evolving thesis37- **Book companion**: file chapters as you read; build a fan-wiki-style companion for characters, themes, plot threads38- **Business/team**: internal wiki fed by Slack, meeting notes, calls — LLM does maintenance nobody else wants to do39- **Competitive analysis, due diligence, trip planning, course notes, hobby deep-dives**4041**Do NOT use when:** you need one-shot Q&A over a fixed document (use RAG), you don't plan to add sources over time, or you don't want Obsidian in the loop.4243## Architecture (three layers)4445```46vault/47├── raw/ # Layer 1 — IMMUTABLE source of truth48│ ├── <source files> # Articles, papers, PDFs, images, data49│ └── assets/ # Downloaded images from clipped articles50├── wiki/ # Layer 2 — LLM-owned knowledge base51│ ├── index.md # Content catalog (LLM updates every ingest)52│ ├── log.md # Append-only timeline (## [YYYY-MM-DD] <op> | <title>)53│ ├── entities/ # Person/Org/Place pages54│ ├── concepts/ # Ideas, theories, frameworks55│ ├── sources/ # One summary page per ingested source56│ ├── comparisons/ # Cross-source analysis pages57│ └── synthesis/ # High-level syntheses, theses, overviews58├── AI_RUNTIME_GUIDE.md # Schema + conventions (an agent runtime)59└── AGENTS.md # Same content, for Codex/Cursor/Antigravity60```6162- **Layer 1 (raw/)** — you own. LLM only reads; never writes.63- **Layer 2 (wiki/)** — LLM owns. It creates, updates, and cross-references pages. You read it.64- **Layer 3 (AI_RUNTIME_GUIDE.md / AGENTS.md)** — the *schema*. Conventions, workflows, frontmatter rules. Co-evolved by you and the LLM.6566## Three core operations67681. **Ingest** — LLM reads a source, discusses takeaways with you, writes a source summary, updates 10-15 relevant pages, updates index, appends to log. See `references/ingest-workflow.md`.692. **Query** — LLM reads `index.md` first, drills into relevant pages, synthesizes with citations. Good answers get **filed back into the wiki** so explorations compound. See `references/query-workflow.md`.703. **Lint** — Health check: contradictions, stale claims, orphan pages, missing cross-refs, concepts mentioned but lacking their own page, data gaps to fill with web search. See `references/lint-workflow.md`.7172## Quick start7374```bash75# 1. Initialize a vault (in Obsidian's vault directory)76python scripts/init_vault.py --path ~/vaults/research --topic "LLM interpretability"7778# 2. Drop a source into raw/, then ingest79/wiki-ingest ~/vaults/research/raw/anthropic-monosemanticity.pdf8081# 3. Ask questions (answers can be re-filed into the wiki)82/wiki-query "how does monosemanticity compare to mechanistic interpretability?"8384# 4. Periodic health check85/wiki-lint8687# 5. See the timeline88/wiki-log --last 1089```9091## Slash commands (this plugin ships)9293| Command | Purpose |94|---|---|95| `/wiki-init` | Bootstrap a fresh vault with schema files + starter structure |96| `/wiki-ingest <path>` | Read a source, discuss, update wiki, log it |97| `/wiki-query <question>` | Search wiki, synthesize answer, offer to file back |98| `/wiki-lint` | Run health check — contradictions, orphans, stale claims, gaps |99| `/wiki-log` | Show recent log entries (uses unix tools on `log.md`) |100101## Sub-agents (this plugin ships)102103| Agent | When dispatched |104|---|---|105| `wiki-ingestor` | Delegated ingest flow — reads source, proposes updates, applies after your approval |106| `wiki-linter` | Runs the health-check workflow independently, reports findings |107| `wiki-librarian` | Answers queries using index-first search, synthesizes with citations |108109## Python tools (`scripts/`)110111All tools are **standard library only** (no pip installs). Run with `python scripts/<tool>.py --help`.112113| Script | Purpose |114|---|---|115| `init_vault.py` | Create folder structure + seed AI_RUNTIME_GUIDE.md, AGENTS.md, index.md, log.md |116| `ingest_source.py` | Helper: extract text/frontmatter from a source file, ready for LLM review |117| `update_index.py` | Regenerate `index.md` from wiki page frontmatter (category, date, source count) |118| `append_log.py` | Append a standardized log entry `## [YYYY-MM-DD] <op> \| <title>` |119| `wiki_search.py` | BM25 search over wiki pages (standalone fallback when index.md isn't enough) |120| `lint_wiki.py` | Find orphans (no inbound links), stale pages, missing cross-refs, broken links |121| `graph_analyzer.py` | Compute link graph stats — hubs, orphans, clusters, disconnected components |122| `export_marp.py` | Render a wiki page (or subtree) to a Marp slide deck |123124## Cross-tool compatibility125126The vault's **schema** lives in AI_RUNTIME_GUIDE.md (an agent runtime) or AGENTS.md (Codex/Cursor/Antigravity/OpenCode). The same content works in both. This plugin ships both templates. For per-tool setup instructions see `references/cross-tool-setup.md`.127128```129AI_RUNTIME_GUIDE.md → an agent runtime130AGENTS.md → an agent runtime, Cursor, Antigravity, OpenCode, an agent runtime131.cursorrules → legacy Cursor (pre-AGENTS.md)132```133134The scripts are pure Python stdlib → run identically everywhere. Only the loader file changes per tool.135136## Obsidian setup (recommended)137138- **Obsidian Web Clipper** — browser extension; converts web articles to markdown and drops them in `raw/`139- **Download images locally** — Settings → Files and links → Attachment folder path = `raw/assets/`. Settings → Hotkeys → bind "Download attachments for current file" to `Ctrl+Shift+D`140- **Graph view** — see hubs/orphans; essential for spotting structural problems141- **Marp plugin** — Markdown-based slide decks directly from wiki pages142- **Dataview plugin** — dynamic tables/lists over page frontmatter (tags, dates, source counts)143- **Git** — the vault is a plain markdown repo; version it144145Full setup walkthrough: `references/obsidian-setup.md`146147## Why this works (vs plain RAG)148149| Plain RAG | LLM Wiki |150|---|---|151| Rediscover knowledge each query | Knowledge accumulates |152| Cross-references re-computed every time | Cross-references pre-written and maintained |153| Contradictions surface only if you ask | Contradictions flagged during ingest |154| Exploration disappears into chat history | Good answers re-filed as new pages |155| Scales by embeddings infrastructure | Scales by markdown + `index.md` + optional local search |156157At ~100 sources / hundreds of pages, `index.md` + filesystem search is enough. Past that, layer in a local search tool like [qmd](https://github.com/tobi/qmd) or use `scripts/wiki_search.py`.158159## Related skills (chains via `context: fork`)160161This skill is marked `context: fork` so other skills can chain into it:162163- **`para-memory-files`** — PARA-method memory; complementary as long-term personal memory that feeds sources into the wiki164- **`obsidian-vault`** (mattpocock) — lightweight Obsidian note helper; this skill is the maintained-wiki layer on top165- **`rag-design`** — when wiki outgrows ~500 pages, use rag-design to bolt on a retrieval layer166- **`mcp-design`** — expose the wiki as an MCP tool167- **`agent-communication`** — for multi-agent wiki maintenance (ingestor + linter + librarian)168169## Reference docs170171- `references/wiki-schema.md` — full vault layout, page frontmatter, naming conventions172- `references/page-formats.md` — entity, concept, source, comparison, synthesis templates173- `references/ingest-workflow.md` — the detailed ingest flow the wiki-ingestor agent follows174- `references/query-workflow.md` — query patterns, citation format, re-filing answers175- `references/lint-workflow.md` — health-check heuristics176- `references/obsidian-setup.md` — Obsidian plugins, hotkeys, vault config177- `references/cross-tool-setup.md` — per-tool setup (Codex, Cursor, Antigravity, etc.)178- `references/memex-principles.md` — Bush's Memex, why the LLM changes the maintenance math179180## Templates (`assets/`)181182- `AI_RUNTIME_GUIDE.md.template`, `AGENTS.md.template`, `.integrations/platforms/cursor/templates/llm-wiki-cursor-rules.template` — schema loaders per tool183- `index.md.template`, `log.md.template` — starter index and log184- `page-templates/` — entity, concept, source-summary, comparison, synthesis185- `example-vault/` — small worked example you can study or copy186187## Iron rule188189**The LLM never edits files in `raw/`.** Ever. Sources are immutable. All LLM writes go to `wiki/`. If you need to correct a source, do it in `raw/` yourself — then re-ingest.