LLM Wiki
Build and maintain a persistent, compounding knowledge wiki from raw sources.
Based on Karpathy's LLM Wiki pattern: the LLM incrementally integrates each new source into a structured wiki of markdown files — updating entity pages, flagging contradictions, strengthening cross-references. Synthesis is compiled once and kept current, not re-derived on every query.
Usage
/llm-wiki <ACTION> [ARGUMENTS]
Actions
- init [DIRECTORY] - Initialize a new wiki (default:
wiki/) - ingest - Process a source file and integrate it into the wiki
- query - Answer a question using the wiki as the knowledge base
- lint - Health-check the wiki for contradictions, orphan pages, and stale content
- status - Show a summary of the wiki's current state
Architecture
your-wiki/
├── raw/ # Immutable source documents — you add, LLM never modifies
│ └── assets/ # Downloaded images referenced by sources
├── wiki/ # LLM-generated and maintained pages
│ ├── index.md # Catalog of all pages with one-line summaries
│ ├── log.md # Append-only record of all operations
│ ├── overview.md
│ ├── entities/ # People, places, organizations
│ ├── concepts/ # Ideas, topics, themes
│ └── sources/ # One summary page per source
└── CLAUDE.md # Schema: wiki conventions and per-operation workflows
Templates for all three layers are in $SKILL_PATH/templates/.
For "init [DIRECTORY]":
- Create the directory structure:
raw/,wiki/,wiki/entities/,wiki/concepts/,wiki/sources/ - Copy
$SKILL_PATH/templates/schema.mdtoCLAUDE.md(orAGENTS.md) - Create
wiki/index.mdfrom$SKILL_PATH/templates/index.md - Create
wiki/log.mdfrom$SKILL_PATH/templates/log.md - Create a starter
wiki/overview.mdstating the wiki's domain and purpose - Tell the user to add sources to
raw/and run/llm-wiki ingest <file>next
Done when: all five files and directories exist and the user has been told the next step.
For "ingest ":
- Read the source file; share key takeaways and ask the user what to emphasize
- Create
wiki/sources/<slug>.mdwith a structured summary - Update
wiki/overview.mdif the source shifts the big picture - Create or update entity pages in
wiki/entities/for key people, places, organizations - Create or update concept pages in
wiki/concepts/for key ideas and themes - Add a contradiction note on any existing page where this source conflicts with current content
- Update
wiki/index.md— every new or modified page must appear with a one-line summary - Append to
wiki/log.md:## [YYYY-MM-DD] ingest | <Source Title>
Done when: every affected page is updated, every new or changed page appears in index.md, and the log entry is appended. A single ingest typically touches 5–15 pages.
For "query ":
- Read
wiki/index.mdto identify the most relevant pages - Read those pages in full
- Synthesize an answer with citations to specific wiki pages
- If the answer is a valuable synthesis (comparison, analysis, discovered connection), offer to file it as a new wiki page; if filed, update
wiki/index.mdand append towiki/log.md
Done when: the question is answered with citations, and any filing decision (page created or skipped) is resolved.
For "lint":
Scan the entire wiki and report on each of the following:
- Contradictions — conflicting claims across pages
- Stale content — pages superseded by newer ingested material
- Orphan pages — pages with no inbound links
- Missing pages — concepts mentioned on multiple pages but lacking their own page
- Broken links —
[[Page Name]]links pointing to non-existent pages - Data gaps — areas a targeted source or web search could fill
Suggest new questions and sources. Ask before making any fixes.
Append to wiki/log.md: ## [YYYY-MM-DD] lint | health check
Done when: all six issue types are checked and reported, suggestions are given, and the log entry is appended.
For "status":
Report: source count in raw/, wiki page count, last 10 entries in wiki/log.md, and any obvious health issues (orphan pages, missing index entries).
Done when: all four items are reported.
Index and log
wiki/index.md — content catalog, updated on every ingest. Every page with a link and one-line summary, organized by category. The LLM reads this first when answering queries.
wiki/log.md — append-only operation log. Entry format: ## [YYYY-MM-DD] <operation> | <title>. Grep-parseable:
grep "^## \[" wiki/log.md | tail -5 # last 5 operations
grep "^## \[.*\] ingest" wiki/log.md # all ingests
grep "^## \[.*\] query" wiki/log.md # all queries
Optional: qmd search
For larger wikis, add qmd — local hybrid BM25/vector search with an MCP server:
bun install -g @tobilu/qmd
qmd collection add ./wiki --name my-wiki
qmd embed
qmd query "how does X relate to Y" -c my-wiki
Tips
- Obsidian Web Clipper converts web articles to markdown — fast source collection for
raw/. - File good answers: valuable query results (comparisons, analyses, new connections) should become wiki pages — explorations compound the knowledge base just like ingested sources do.
- Ingest one source at a time — read the summaries, check the updates, guide emphasis. You get more value staying in the loop than batch-ingesting unattended.
- The wiki is a git repo of markdown files — version history and collaboration come free.