Install the Karpathy LLM wiki pattern into a folder. One pass, three questions, a working vault a beginner can use immediately.
What gets created
<vault>/
├── CLAUDE.md # the map — routing table, schema, workflows, guardrails
├── AGENTS.md # minimal mirror for Codex and other non-Claude agents
├── .gitignore
├── raw/ # immutable source documents (LLM reads, never writes)
│ └── .gitkeep
└── wiki/ # LLM-owned markdown
├── index.md # catalog of every page, organized by category
└── log.md # chronological operation log with grep-friendly prefix
Optional additions the user may request at setup time:
wiki/hot.md— 500-char rolling buffer for fast recent-context lookup (executive-assistant use cases)- Nested wiki subfolders:
wiki/entities/,wiki/concepts/,wiki/sources/,wiki/analyses/
Setup flow
Ask these three questions in a single message:
- Vault path? Absolute path. Will be created if it doesn't exist.
- Flat or nested wiki? Flat is the default (Karpathy's preference — cleaner, grep-friendly). Nested adds subfolders for larger or mixed-topic vaults.
- Include hot cache? Optional
wiki/hot.mdrolling buffer. Default: no.
Build procedure
- Safety check. If
<vault>/CLAUDE.mdor<vault>/wiki/already exists, stop and ask the user — do not overwrite without explicit confirmation. - Create directories.
<vault>,<vault>/raw/,<vault>/wiki/. For nested layout, also createwiki/entities/,wiki/concepts/,wiki/sources/,wiki/analyses/. - Install the schema. Copy
templates/CLAUDE.md→<vault>/CLAUDE.md, replacing{{LAYOUT}}withflatornested. Copytemplates/AGENTS.md→<vault>/AGENTS.md. - Scaffold the wiki. Copy
templates/index.md→<vault>/wiki/index.md. Copytemplates/log.md→<vault>/wiki/log.md, replacing{{DATE}}with today's date (YYYY-MM-DD) and{{LAYOUT}}with the layout choice. - Optional extras. If hot cache was requested, create
<vault>/wiki/hot.mdwith a header comment only. Create<vault>/raw/.gitkeep. - Gitignore. If
<vault>/.gitignoredoes not exist, copytemplates/gitignore→<vault>/.gitignore. If it already exists, append any missing lines from the template — do not overwrite. - Git init. If
<vault>is not already a git repo:git init && git add . && git commit -m "chore: initialize LLM wiki". If it is already a git repo with a clean working tree, stage the new files and commit them separately aschore: add LLM wiki scaffold. If the repo has uncommitted changes, stop and ask the user how to proceed. - Verify. Read
<vault>/CLAUDE.mdback and confirm the{{LAYOUT}}placeholder was replaced. If it wasn't, fix it and amend (or create a follow-up commit).
Report to user
On completion, print exactly:
LLM wiki initialized at <vault>
Layout: <flat|nested>
Hot cache: <yes|no>
Next steps:
1. Drop a source into <vault>/raw/ (PDF, markdown, web clip, transcript)
2. Open Claude Code in the vault: cd <vault> && claude
3. Say: "Ingest the new source I just added to raw/"
Claude will read it, extract entities and concepts, write wiki pages,
update wiki/index.md, and append to wiki/log.md. A substantive source
typically touches 10–15 pages — that is normal and the whole point.
For periodic gap-filling research, install and run the wiki-self-heal skill.
Notes
- The
CLAUDE.mdtemplate is the hero file. It encodes the three-layer architecture, the routing table, naming conventions, workflows, and guardrails. Beginners read it to understand the system — it's also documentation, not just instructions for the LLM. Keep it intact during the copy; only{{LAYOUT}}is substituted. - The
AGENTS.mdtemplate is a minimal mirror for OpenAI Codex and other non-Claude agents that don't read CLAUDE.md. - Never overwrite existing files without explicit user confirmation (steps 1 and 6).
- The vault is just a git repo of markdown files. No database, no embeddings, no vector store. That is intentional — naming conventions and
wiki/index.mdreplace RAG infrastructure at this scale.