Skip to main content

llm-wiki

Build and maintain LLM-powered personal knowledge bases using the @llm-wiki/sdk TypeScript SDK. Deterministic operations (document parsing, full-text search, validation, indexing) run through the SDK; LLM synthesis and cross-referencing are orchestrated by this Skill. Use when user wants to create a knowledge base, build a wiki, organize research, compile notes, ingest documents, or says 'llm-wiki'.

Source facts

Repository
stellarlinkco/llm-wiki
Last source activity
July 20, 2026 at 09:18
Detected SKILL.md language
English
Stars
22
Forks
1

Install options

The review-first prompt is selected by default. You can switch to a direct command or download a local copy.

Review the source files

Read SKILL.md and any companion files shown by SkillsMP before deciding whether to install.

Showing SKILL.md

SKILL.md
Source instructions · Read-only preview
name
llm-wiki
description
Build and maintain LLM-powered personal knowledge bases using the @llm-wiki/sdk TypeScript SDK. Deterministic operations (document parsing, full-text search, validation, indexing) run through the SDK; LLM synthesis and cross-referencing are orchestrated by this Skill. Use when user wants to create a knowledge base, build a wiki, organize research, compile notes, ingest documents, or says 'llm-wiki'.
# LLM Wiki — Personal Knowledge Base Builder The `@llm-wiki/sdk` TypeScript SDK handles document parsing, search, indexing, and validation. This Skill reads parsed content, synthesizes wiki pages, maintains cross-references, and answers questions on top of the deterministic SDK operations. The human curates sources and asks questions. ## Prerequisites ```bash # Install the SDK (one-time) cd ~/.agents/skills/llm-wiki/sdk && npm install && npm run build ``` ## Commands ``` /llm-wiki init [path] # Scaffold a new wiki project /llm-wiki ingest [source-path] # Parse source + LLM synthesis into wiki /llm-wiki query <question> # Research and answer from the wiki /llm-wiki lint # Health-check the wiki /llm-wiki status # Wiki statistics and overview ``` --- ## Architecture ``` User drops file ──▶ SDK (parse/index) ──▶ clean .md ──▶ Skill (LLM) ──▶ wiki pages deterministic in sources/ non-deterministic in concepts/ ``` Three wiki layers: - **`sources/`** — parsed source documents (SDK writes, LLM reads, never modifies) - **`concepts/`** — LLM-generated pages (entities, concepts, references, queries) - **`references/`** — external links and citations ### SDK Operations (deterministic — use the SDK via Node.js) ```js import { createKnowledgeBase, OpenAIProvider } from "@llm-wiki/sdk"; const kb = await createKnowledgeBase({ root: "<wiki-root>" }); await kb.ingest({ path: "<file>" }); await kb.search("<query>"); await kb.validate(); await kb.status(); ``` ### Skill Operations (LLM intelligence — this file defines these) All Skill operations use `mcp__node_repl_js` to execute SDK calls, then apply LLM intelligence on top. | Skill Operation | Uses SDK | Then LLM does | | --------------- | ------------------------------- | ---------------------------------------------- | | **init** | `createKnowledgeBase()` | Ask user about wiki domain, customize scope | | **ingest** | `kb.ingest()` + `kb.reindex()` | Synthesize wiki pages, update cross-references | | **query** | `kb.search()` | Read pages, synthesize answer with citations | | **lint** | `kb.validate()` + `kb.status()` | Find contradictions, suggest improvements | | **status** | `kb.status()` | Present human-friendly summary | --- ## Init (`/llm-wiki init`) ### Process 1. **Scaffold via SDK**: Run through `mcp__node_repl_js`: ```js const kb = await createKnowledgeBase({ root: "<path>" }); ``` 2. **Ask user**: What is this wiki about? What domain? Key topics? 3. **Customize scope**: Write a summary of domain context, key entities, and scope to the wiki root 4. Git init if not already a repo --- ## Ingest (`/llm-wiki ingest`) The primary operation. A single source may touch 10-15 wiki pages. ### Process 1. **Parse via SDK** (deterministic): ```js const result = await kb.ingest({ path: "<source-file>" }); ``` This converts PDF/DOCX/HTML/etc → markdown in `sources/` with YAML frontmatter. 2. **Read parsed content**: Read the `.md` file from `sources/` that the SDK created. 3. **Discuss with user** (interactive mode): - Present 3-5 key takeaways from the source - Ask: "Anything to emphasize? Connections to existing wiki content?" - Skip if user said "just process it" or batch mode 4. **LLM synthesis** (create/update wiki pages): a. **Source summary** → `concepts/{slug}.md` with frontmatter, summary, key claims b. **Entity pages** → create or update for each significant entity c. **Concept pages** → create or update for abstract ideas d. **Overview** → update overview if the source changes the big picture e. **Cross-references** → add links between related pages 5. **Rebuild index via SDK**: ```js await kb.reindex(); ``` 6. **Append to log**: ``` ## [YYYY-MM-DD] ingest | {Source Title} - Source: sources/{filename} - Created: {list of new pages} - Updated: {list of updated pages} - Key additions: {1-2 sentence summary} ``` 7. **Report**: pages created/updated, new entities/concepts, suggested follow-ups. ### Batch Ingest Process multiple files through steps 1-6. Skip interactive discussion. --- ## Query (`/llm-wiki query`) ### Process 1. **Search via SDK** to find relevant pages: ```js const results = await kb.search("<query>", { limit: 10 }); ``` 2. **Read relevant pages**: Follow the paths from search results, read full content. 3. **Synthesize answer**: Write answer with citations to wiki pages and original sources. 4. **Choose output format**: - Simple factual → text response - Comparison → markdown table - Deep analysis → offer to file in `concepts/queries/` 5. **File if valuable**: Save substantial answers, then: ```js await kb.reindex(); ``` 6. **Log** → append to `log.md` --- ## Lint (`/llm-wiki lint`) ### Process 1. **Structural check via SDK**: ```js const report = await kb.validate(); ``` Parse errors (dead links, missing frontmatter, missing dirs). 2. **Get wiki status via SDK**: ```js const status = await kb.status(); ``` 3. **LLM semantic checks** (read pages, apply judgment): - **Contradictions** — scan for conflicting claims across pages - **Stale content** — newer sources may supersede older claims - **Orphan pages** — pages with no inbound links - **Missing pages** — entities/concepts mentioned but lacking their own page - **Missing cross-references** — opportunities for links between related pages - **Data gaps** — topics with thin coverage 4. **Report** as prioritized list (Critical / Important / Suggestions / Stats) 5. **Offer fixes**: "Want me to fix any of these?" --- ## Status (`/llm-wiki status`) ```js const status = await kb.status(); ``` Present a human-friendly summary: ``` ## {Wiki Name} — Status Sources: {N} documents in sources/ Wiki pages: {N} total ({concepts} concepts, ...) Search: {available/not built} Recent activity (from log.md): - ... ``` --- ## Page Format Convention Every wiki page has YAML frontmatter: ```yaml --- title: Page Title type: entity|concept|source|comparison|query|overview created: YYYY-MM-DD updated: YYYY-MM-DD sources: - sources/paper1.md - sources/article2.md tags: - topic1 - topic2 --- ``` ### Linking - Standard markdown: `[Page Title](concepts/page-name.md)` - Cite sources: "claim [source-name]" - Cross-reference liberally --- ## Supported Source Formats Via the SDK's composite parser (jsdom, Readability, mammoth, pdf-parse, node-pptx-parser, turndown): - **Documents**: PDF, DOCX, PPTX - **Web**: HTML, HTM - **Text**: TXT, CSV, JSON, XML, MD - **Buffers**: in-memory content with metadata --- ## Principles 1. **SDK does grunt work; LLM does thinking.** Parsing, searching, indexing, validating are deterministic — SDK handles them. Synthesis, cross-referencing, answering are intelligent — Skill handles them. 2. **The wiki is a persistent, compounding artifact.** Every source and every query makes it richer. 3. **The LLM writes; the human curates.** Source, explore, ask. The LLM does the bookkeeping. 4. **File valuable outputs back into the wiki.** Good answers shouldn't disappear into chat history. 5. **Cross-references are as valuable as content.** Link liberally. 6. **The wiki is just a git repo.** Version history, branching, diffing for free.
View on GitHub