Wiki
by @nkhoit
LLM-maintained personal knowledge base. Compile raw sources into a structured markdown wiki, auto-lint for consistency, serve as a browsable website. Inspire...
clawhub install llm-wikiπ About This Skill
name: wiki description: "LLM-maintained personal knowledge base. Compile raw sources into a structured markdown wiki, auto-lint for consistency, serve as a browsable website. Inspired by Karpathy's 'LLM Knowledge Bases' workflow. Use when: user asks to create/manage a wiki, 'wiki this', 'add to wiki', 'compile raw/', 'lint the wiki', or wants a personal knowledge base. NOT for: general note-taking (use memory system), one-off Q&A, or tasks better suited to a database."
Wiki β LLM-Maintained Knowledge Base
You maintain a personal wiki for the user. The wiki is a collection of markdown articles organized by topic. You are the compiler, editor, and librarian.
Setup
If the wiki doesn't exist yet, run scripts/bootstrap.sh to create the structure, install dependencies, and configure git + static serving.
The wiki lives at ~/wiki/ with this structure:
~/wiki/
βββ mkdocs.yml
βββ docs/
β βββ index.md β master index (you maintain)
β βββ log.md β chronological ingest/lint/query log (append-only)
β βββ raw/ β inbox for unprocessed sources
β β βββ processed/ β archived after compilation
β βββ topics/
β βββ /
β β βββ _index.md β topic overview + article list
β β βββ .md β individual articles
β βββ ...
βββ site/ β built static site (gitignored)
Core Operations
1. Filing Knowledge (most common)
When conversations produce durable knowledge, file it directly:
1. Determine the right topic directory (create new one if needed)
2. Write or update the article in docs/topics/
3. Update related pages β scan existing articles for references to the same concepts, entities, or data. Add cross-links, update numbers, note where new info supersedes old claims. A single ingest should touch every relevant page, not just the target article.
4. Update docs/topics/ with the new article link
5. Update docs/index.md stats if a new topic/article was added
6. Update mkdocs.yml nav section
7. Append an entry to docs/log.md
8. Rebuild: scripts/build.sh
Articles should be self-contained, factual, and cross-linked where relevant. Use See also: Title for connections.
2. Compiling from raw/
When the user drops sources in docs/raw/ or gives you a URL:
1. Read/fetch the source material
2. Extract durable knowledge (skip ephemeral details, opinions without evidence)
3. File into appropriate topic articles (new or existing)
4. Update related pages β same as Filing: scan existing articles and update cross-links, numbers, or claims affected by the new source
5. Move the raw source to docs/raw/processed/
6. Append an entry to docs/log.md
7. Rebuild: scripts/build.sh
3. Linting (daily via heartbeat)
Scan ~/wiki/docs/ for:
See also linksFix within ~/wiki/docs/: broken links, typos, missing cross-links, orphan pages (add links from related articles).
Flag to user: contradictions (with quotes from both sides), stale data, suggested new articles, weak pages.
Append a lint entry to docs/log.md.
4. Filing Good Answers
When a conversation produces a solid synthesized answer (comparison, analysis, deep-dive), proactively offer to file it as a wiki page. Good candidates:
These shouldn't disappear into chat history β they compound in the wiki.
5. Browsing
The wiki is served as a static MkDocs site. After any content change, run scripts/build.sh to regenerate.
Article Style Guide
*Tested: 2026-04-02 on Mac mini M4 16GB*)See also: Article at bottomAdding New Topics
1. Create docs/topics/ directory
2. Create docs/topics/ with overview + article list
3. Add to docs/index.md topic list
4. Add to mkdocs.yml nav section
Dependencies & System Changes
This skill requires or will install the following:
| Dependency | Purpose | Installed by |
|---|---|---|
| Python 3 | MkDocs runtime | Must be pre-installed |
| mkdocs + mkdocs-material | Static site generator | bootstrap.sh via pipx or pip3 |
| git | Version control | Must be pre-installed |
What bootstrap.sh does
~/wiki/ directory structuremkdocs + mkdocs-material via pipx/pip3 if not already installed~/wiki/site/ on 127.0.0.1 only (not publicly accessible)What build.sh does
--push to also push to a configured git remote (requires SSH keys or stored HTTP credentials)Optional: heartbeat integration
You can integrate wiki linting into your agent's heartbeat cycle. This is opt-in and requires adding config to your HEARTBEAT.md. The heartbeat integration reads heartbeat-state.json (for timing) and optionally memory/ daily notes (to detect wiki gaps). See references/heartbeat-integration.md for setup.
Log (docs/log.md)
Append-only chronological record of wiki activity. Every ingest, lint, and filed answer gets an entry. Format:
## [YYYY-MM-DD] ingest | Article Title
Source:
Pages touched: page1.md, page2.md, ...
Summary: one-line description of what was added/changed [YYYY-MM-DD] lint
Fixed:
Flagged:
[YYYY-MM-DD] filed | Article Title
Origin: conversation / Q&A synthesis
Summary: one-line description
The log is parseable with grep: grep "^## \[" docs/log.md | tail -10 gives the last 10 entries.
Build & Deploy
Always run scripts/build.sh after content changes. This:
1. Rebuilds MkDocs static site
2. Commits all changes to git
3. Pushes to remote
βοΈ Configuration
If the wiki doesn't exist yet, run scripts/bootstrap.sh to create the structure, install dependencies, and configure git + static serving.
The wiki lives at ~/wiki/ with this structure:
~/wiki/
βββ mkdocs.yml
βββ docs/
β βββ index.md β master index (you maintain)
β βββ log.md β chronological ingest/lint/query log (append-only)
β βββ raw/ β inbox for unprocessed sources
β β βββ processed/ β archived after compilation
β βββ topics/
β βββ /
β β βββ _index.md β topic overview + article list
β β βββ .md β individual articles
β βββ ...
βββ site/ β built static site (gitignored)