name: wiki license: MIT description: >- Markdown-first knowledge base where the LLM acts as librarian. Ingests raw sources, compiles and interlinks topic files, self-maintains an index. No vector DB or embeddings required -- uses LLM-native navigation over structured markdown up to ~400K words. user-invocable: true auto-trigger: false trigger_keywords: - wiki - knowledge base - llm wiki - project wiki - build a wiki - maintain knowledge - knowledge management - llm-wiki - karpathy wiki last-updated: 2026-04-06
/wiki -- LLM-Native Knowledge Base
Orientation
Use when: building and querying a markdown-first knowledge base -- ingests raw notes, deduplicates, surfaces answers. Don't use when: capturing session learnings into the evolve pipeline (use /learn); generating structured code documentation (use /doc-gen).
Directory Structure
wiki/
index.md # Master index
raw/ # Unprocessed sources (timestamped files)
topics/ # Compiled topic files (one per topic, interlinked)
.wiki-meta.json # Stats: topic count, source count, last compaction
Commands
| Command | Behavior |
|---|---|
/wiki |
Status overview: topic count, last update, pending raw sources |
/wiki --add [source] |
Ingest a new source into the wiki |
/wiki --query [question] |
Answer a question using wiki knowledge |
/wiki --status |
Detailed wiki health: topic count, staleness, orphan detection |
/wiki --compact |
Merge, deduplicate, and reorganize topics |
/wiki --rebuild-index |
Regenerate index.md from current topic files |
/wiki init [path] |
Initialize a new wiki at the specified path |
Protocol
Command: /wiki init [path]
Create wiki/, wiki/raw/, wiki/topics/, an empty wiki/index.md, and wiki/.wiki-meta.json with fields: created, lastUpdated, topicCount: 0, sourceCount: 0, totalWords: 0, lastCompaction: null. Default path: wiki/ at project root.
Command: /wiki --add [source]
Ingest a new source into the wiki.
Step 1: Determine source type — URL (fetch with WebFetch), file path (read), raw text (use directly), no argument (ask user).
Step 2: Write raw content to wiki/raw/source-{timestamp}.md with header: title/URL, ingested date, type, original reference.
Step 3: Identify 1-5 topics. For each: check if a topic file already exists — append to existing or create wiki/topics/{slug}.md.
Step 4: Each topic file has: title, > Last updated, > Sources, compiled content, and ## Related Topics with [[slug]] cross-links. Scan existing topics for cross-links when writing.
Step 5: Regenerate wiki/index.md with stats header, Topics table ([[slug]] | summary | last updated), and Recent Sources table.
Step 6: Update wiki/.wiki-meta.json with new counts.
Step 7: Output: source description, topics created, topics updated, index counts.
Command: /wiki --query [question]
- Read
wiki/index.md, identify 1-5 relevant topic files, explain reasoning briefly - Read those topics; follow
[[cross-links]]up to 2 hops if relevant - Produce a clear answer citing specific topic files used
- If the wiki lacks enough information: state what it knows, list gaps, suggest
/wiki --addfor missing areas
Command: /wiki --status
Read meta, count topic files and raw sources, check for orphaned topics, broken cross-links, and stale topics (30+ days). Output: topic/source/word counts, last updated/compaction dates, and health issues with counts and lists.
Command: /wiki --compact
- Read
wiki/index.mdand all topic files - Identify: merge candidates (overlapping subjects), split candidates (multiple distinct subjects), stale/outdated content, duplicates
- For each change: describe what and why, make the change, update all affected cross-links
- Rebuild
wiki/index.mdand updatewiki/.wiki-meta.jsonwithlastCompactionand new counts - Output: topics merged/split/removed/resolved, final count, estimated words
Command: /wiki --rebuild-index
Read all topic files, extract title/summary/date, write a fresh wiki/index.md. Output: "Index rebuilt with {count} topics."
Fringe Cases
.planning/does not exist: Run/do setupfirst to initialize the harness state directory.- No wiki directory: Prompt to run
/wiki init. Do not auto-create on query or status. - Source >50K words: Split into sections, warn the user.
- Topic name collision: Merge into existing topic, do not overwrite.
- Empty wiki queried: "The wiki is empty. Add sources with
/wiki --add." - Broken cross-link: During compaction/rebuild — flag. During --add — create stub
[[missing-topic]] (stub -- needs content)if no context. - URL fetch fails: Report failure, suggest pasting content directly.
- Wiki >~400K words: Warn during --status, suggest archiving or
/wiki --compact.
Contextual Gates
Disclosure: "Updating wiki at .planning/wiki/. Files will be created or modified."
Reversibility: amber — creates and modifies .planning/wiki/ files; undo by deleting or reverting changed files.
Trust gates:
- Any: all wiki commands (init, add, query, status, compact, rebuild-index).
Quality Gates
- Every topic file must have a title, last-updated date, and sources list
- Every topic file must have at least one cross-link to another topic (unless it is the only topic)
- The index must accurately reflect all topic files (no orphans after --add or --compact)
- No duplicate topic files (same slug = same file)
- Raw sources are preserved in wiki/raw/ and never deleted
- The --query command must cite specific topic files, not fabricate information
Exit Protocol
Output a summary appropriate to the command executed, then:
---HANDOFF---
- Wiki: {command executed} at {wiki path}
- Topics: {count} total, {new/updated/merged count} changed
- Status: {healthy | needs compaction | has orphans/broken links}
---