llm-wiki

star 212

Xây dựng và duy trì knowledge base cá nhân theo pattern LLM Wiki (Karpathy). Hỗ trợ init, ingest, query, lint, discover, run, digest, pain-rank, setup, book-summary, competitive-brief, interview-prep.

mduongvandinh By mduongvandinh schedule Updated 4/14/2026

name: llm-wiki description: Xây dựng và duy trì knowledge base cá nhân theo pattern LLM Wiki (Karpathy). Hỗ trợ init, ingest, query, lint, discover, run, digest, pain-rank, setup, book-summary, competitive-brief, interview-prep.

LLM Wiki — Claude Code Skill

Hệ thống knowledge base cá nhân. LLM xây dựng và duy trì wiki từ nguồn thô. Dựa trên pattern của Andrej Karpathy, mở rộng với auto-discovery.

Sub-commands

Skill này hỗ trợ các sub-commands sau. Parse argument đầu tiên để xác định command:

Command Mô tả Ví dụ
init Tạo wiki mới cho một chủ đề /llm-wiki init "AI Agents"
ingest Xử lý nguồn mới trong raw/ /llm-wiki ingest
query Hỏi đáp dựa trên wiki /llm-wiki query "So sánh RAG vs Wiki"
lint Kiểm tra sức khỏe wiki /llm-wiki lint
discover Tự tìm nguồn mới /llm-wiki discover
run Chạy full cycle: discover → ingest → lint /llm-wiki run
status Xem trạng thái wiki /llm-wiki status
digest Daily brief — tóm tắt thay đổi wiki 24h /llm-wiki digest
pain-rank Xếp hạng pain points theo cơ hội kinh doanh /llm-wiki pain-rank
setup Khởi tạo wiki theo variant template có sẵn /llm-wiki setup book-companion
book-summary Tóm tắt có cấu trúc toàn bộ wiki sách /llm-wiki book-summary
competitive-brief Battlecard 1-pager cho một competitor /llm-wiki competitive-brief "Linear"
interview-prep 1-pager chuẩn bị interview cho một công ty /llm-wiki interview-prep "Stripe"

Nếu không có sub-command → hiển thị trạng thái và hỏi user muốn làm gì.

Thư mục gốc

WIKI_ROOT = <current working directory>

Xác định WIKI_ROOT bằng cách tìm folder chứa CLAUDE.md + config.yaml + wiki/ + raw/. Thường là thư mục project hiện tại.

Luôn đọc WIKI_ROOT/CLAUDE.md trước khi thực hiện bất kỳ command nào — đó là schema quy định mọi quy tắc.

Command: init

Mục đích: Khởi tạo wiki mới hoặc thêm topic mới vào wiki hiện tại.

Quy trình:

  1. Đọc CLAUDE.mdconfig.yaml
  2. Nếu argument là topic mới → thêm vào config.yaml → topics
  3. Nếu wiki chưa có folder structure → tạo theo CLAUDE.md
  4. Ghi LOG.md

Ví dụ:

/llm-wiki init "Rust Programming"
→ Thêm topic "Rust Programming" vào config.yaml
→ Keywords tự sinh: ["Rust language", "Rust programming", "cargo", "rustc"]

Command: ingest

Mục đích: Xử lý mọi file mới/chưa xử lý trong raw/.

Quy trình:

  1. Đọc CLAUDE.md (schema & quy tắc)
  2. Đọc .discoveries/history.json → lấy danh sách đã xử lý
  3. Scan raw/ → tìm file chưa có trong history
  4. Với mỗi file mới: a. Đọc nội dung (dùng Read cho text, WebFetch cho URL, PDF reader cho PDF) b. Tạo source summary → wiki/sources/ c. Trích xuất entities → tạo/cập nhật wiki/entities/ d. Trích xuất concepts → tạo/cập nhật wiki/concepts/ e. Thêm cross-references [[links]] vào các trang liên quan f. Phát hiện contradictions → ghi chú vào trang liên quan
  5. Cập nhật wiki/INDEX.md
  6. Ghi wiki/LOG.md
  7. Cập nhật .discoveries/history.json

Quy tắc QUAN TRỌNG:

  • KHÔNG BAO GIỜ sửa file trong raw/
  • Mỗi source có thể ảnh hưởng 5-15 wiki pages
  • Luôn trích dẫn nguồn: [Nguồn: filename](../raw/path)
  • Nếu thông tin mới mâu thuẫn với cũ → giữ cả hai, ghi rõ
  • Không bịa thông tin — chỉ viết những gì có trong raw sources
  • Batch size theo config.yaml → schedule.ingest.batch_size

Command: query

Mục đích: Hỏi đáp dựa trên nội dung wiki.

Quy trình:

  1. Đọc wiki/INDEX.md → tìm trang liên quan đến câu hỏi
  2. Đọc các trang wiki liên quan (đọc đủ context, không chỉ 1-2 trang)
  3. Tổng hợp câu trả lời với citations [[trang-wiki]]
  4. Nếu câu trả lời có giá trị phân tích → lưu vào wiki/syntheses/ hoặc outputs/
  5. Ghi LOG.md

Quy tắc:

  • Trả lời DỰA TRÊN WIKI, không dùng kiến thức bên ngoài
  • Nếu wiki thiếu thông tin → nói rõ và gợi ý topic cần discover
  • So sánh, phân tích → tự động lưu thành synthesis page
  • Format đầu ra linh hoạt: markdown, bảng so sánh, bullet points

Ví dụ:

/llm-wiki query "So sánh RAG truyền thống vs LLM Wiki pattern"
→ Đọc INDEX.md → tìm trang về RAG, LLM Wiki
→ Đọc các trang liên quan
→ Tạo bảng so sánh
→ Lưu vào wiki/syntheses/rag-vs-llm-wiki.md

Command: lint

Mục đích: Kiểm tra sức khỏe wiki, phát hiện vấn đề.

Quy trình:

  1. Đọc toàn bộ wiki/INDEX.md
  2. Scan mọi file trong wiki/
  3. Kiểm tra:
    • Contradictions: thông tin mâu thuẫn giữa các trang
    • Orphans: trang không ai link đến
    • Missing pages: [[link]] trỏ đến trang chưa tồn tại
    • Stale claims: thông tin cũ bị nguồn mới bác bỏ
    • Broken links: link đến raw source không còn tồn tại
    • Gaps: lĩnh vực quan trọng thiếu coverage
    • Quality: trang quá ngắn, thiếu sources, thiếu cross-refs
  4. Tạo báo cáo → outputs/lint-YYYY-MM-DD.md
  5. Cập nhật .discoveries/gaps.json (cho discover dùng)
  6. Ghi LOG.md
  7. Nếu config.yaml → schedule.lint.auto_fix = true → tự sửa lỗi đơn giản

Output format:

# Lint Report — YYYY-MM-DD

## Tóm tắt
- Tổng trang: N
- Contradictions: N
- Orphans: N
- Missing pages: N
- Gaps: N

## Chi tiết
### Contradictions
...
### Đề xuất
- Tạo trang mới: [danh sách]
- Tìm nguồn cho: [danh sách gaps]

Command: discover

Mục đích: Tự động tìm nguồn mới từ internet.

Quy trình:

  1. Đọc config.yaml → topics, feeds, discovery settings
  2. Đọc .discoveries/gaps.json → knowledge gaps cần lấp
  3. Đọc .discoveries/history.json → tránh trùng lặp
  4. Thực hiện theo strategies trong config: a. reddit_scan: WebSearch site:reddit.com theo subreddits + keywords trong config.yaml → tìm pain points, use cases, ý tưởng. Lưu vào raw/reddit/YYYY-MM-DD-slug.md. Trích xuất: vấn đề gốc, giải pháp được đề xuất, upvotes, sentiment. b. github_trending: WebSearch GitHub trending repos theo languages/topics filter c. github_watch: Kiểm tra repos/orgs/people trong config → new releases, new repos d. web_search: WebSearch theo keywords của mỗi topic e. feed_poll: Kiểm tra RSS feeds, Hacker News f. gap_fill: WebSearch theo gaps từ lint g. snowball: Đọc references trong wiki → follow links chưa có
  5. Với mỗi nguồn tìm được: a. Kiểm tra dedup (URL, title) b. WebFetch nội dung c. Lưu vào raw/articles/YYYY-MM-DD-slug.md với frontmatter:
    ---
    title: "Tiêu đề"
    url: "https://..."
    discovered: YYYY-MM-DD
    topic: "tên topic"
    ---
    
  6. Cập nhật .discoveries/history.json
  7. Ghi LOG.md
  8. Tự động trigger ingest cho nguồn mới

Quy tắc:

  • Tối đa sources theo config.yaml → schedule.discover.max_sources
  • Ưu tiên: gaps > reddit pain points > trending > feeds
  • Chỉ lấy nội dung chất lượng (bài viết sâu, papers, guides, high-upvote posts)
  • Skip: quảng cáo, listicles nông, nội dung trùng lặp
  • Reddit posts: trích xuất pain point + giải pháp, phân loại theo domain (business, dev, consumer)
  • Lưu reddit vào raw/reddit/ (tách riêng khỏi raw/articles/)

Command: run

Mục đích: Chạy full cycle tự động.

Quy trình:

discover → ingest → lint → (nếu có gaps mới → discover lại)
  1. Chạy discover → tìm nguồn mới (Reddit, GitHub trending, web search)
  2. Chạy ingest → xử lý mọi file mới trong raw/
  3. Chạy lint → kiểm tra sức khỏe
  4. Nếu lint phát hiện critical gaps → chạy thêm 1 vòng discover+ingest
  5. Tạo summary report → outputs/run-YYYY-MM-DD.md
  6. Ghi LOG.md

Giới hạn: Tối đa 2 vòng discover-ingest để tránh vòng lặp vô hạn.

Command: status

Mục đích: Hiển thị trạng thái wiki hiện tại.

Output:

LLM Wiki Status
═══════════════
Wiki: My LLM Wiki
Topics: 3 (LLM Agents, Claude Code, AI Engineering)
Raw sources: N files
Wiki pages: N pages (E entities, C concepts, S sources, Y syntheses)
Last ingest: YYYY-MM-DD
Last lint: YYYY-MM-DD
Last discover: YYYY-MM-DD
Knowledge gaps: N
Orphan pages: N
Health: Good | Warning | Needs Attention

Command: digest

Mục đích: Tạo daily brief — tóm tắt mọi thay đổi wiki trong 24h, highlights insights mới.

Quy trình:

  1. Đọc wiki/LOG.md → lọc entries trong 24h qua
  2. Đọc các trang wiki mới/cập nhật trong khoảng thời gian đó
  3. Tổng hợp thành báo cáo ngắn gọn

Output format:

# Daily Digest — YYYY-MM-DD

## Nguồn mới (N)
- [tên nguồn] — 1 dòng tóm tắt

## Wiki pages mới (N)
- [tên trang] — 1 dòng mô tả

## Top 3 Insights
1. [Insight quan trọng nhất — trích từ syntheses hoặc cross-references mới]
2. [Insight thứ hai]
3. [Insight thứ ba]

## Pain Points mới phát hiện (từ Reddit)
| Pain Point | Domain | Upvotes | Cơ hội |
|------------|--------|---------|--------|
| ... | ... | ... | ... |

## Knowledge Gaps cần lấp
- [gap 1]
- [gap 2]

## Thống kê
- Wiki: N pages (+X hôm nay)
- Sources: N (+Y hôm nay)
- Health: Good/Warning

Lưu vào: outputs/digest-YYYY-MM-DD.md

Command: pain-rank

Mục đích: Xếp hạng pain points từ Reddit và các nguồn khác theo tiềm năng kinh doanh.

Quy trình:

  1. Đọc tất cả files trong raw/reddit/
  2. Đọc wiki/concepts/ai-pain-points.mdwiki/concepts/micro-saas-pattern.md
  3. Trích xuất mọi pain point đã thu thập
  4. Scoring mỗi pain point theo 5 tiêu chí

Scoring Framework (mỗi tiêu chí 1-10, tổng max 50):

Tiêu chí Mô tả Trọng số
Urgency Người dùng cần giải pháp ngay? Hay "nice to have"? x2
Market Size Bao nhiêu người/doanh nghiệp có vấn đề này? x2
Willingness to Pay Sẵn sàng trả tiền? Đang trả cho alternatives? x3
AI Solvability AI/LLM có thể giải quyết tốt không? x2
Competition Ít cạnh tranh = điểm cao x1

Output format:

# Pain Point Ranking — YYYY-MM-DD

## Top 10 Cơ hội

| Rank | Pain Point | Domain | Score | Urgency | Market | WTP | AI-Fit | Comp |
|------|-----------|--------|-------|---------|--------|-----|--------|------|
| 1 | ... | B2B | 42/50 | 9 | 8 | 9 | 8 | 8 |
| 2 | ... | Consumer | 38/50 | 7 | 9 | 7 | 9 | 6 |

## Chi tiết Top 3

### #1: [Tên Pain Point] — Score: 42/50
- **Vấn đề:** [Mô tả cụ thể]
- **Target user:** [Ai có vấn đề này]
- **Giải pháp đề xuất:** [MVP concept]
- **Revenue model:** [Cách kiếm tiền]
- **Nguồn Reddit:** [Links/upvotes]
- **Next step:** [Hành động cụ thể tiếp theo]

### #2: ...
### #3: ...

## Idea-to-Spec Pipeline (cho #1)
- Problem Statement: ...
- Target User Persona: ...
- MVP Features (3-5): ...
- Tech Stack Suggestion: ...
- Estimated effort: ... (human) / ... (CC)

Lưu vào: outputs/pain-rank-YYYY-MM-DD.md

Quy tắc:

  • Chỉ rank pain points CÓ TRONG WIKI — không bịa thêm
  • Scoring phải giải thích lý do cho mỗi điểm số
  • Top 1 luôn kèm Idea-to-Spec pipeline
  • Cross-reference với [[micro-saas-pattern]], [[saas-unbundling]], [[ai-pain-points]]

Ngôn ngữ & Format

  • Wiki content: tiếng Việt có dấu (thuật ngữ kỹ thuật giữ tiếng Anh)
  • File names: tiếng Anh, kebab-case
  • Frontmatter: tiếng Anh
  • Wiki links: [[kebab-case-name]]
  • Cross-refs: mỗi trang ít nhất 2 links đến trang khác
  • Citations: [Nguồn: filename](../raw/path)

Command: setup

Mục đích: Khởi tạo wiki theo một variant template có sẵn trong variants/.

Syntax: /llm-wiki setup <variant-name>

Variants có sẵn: book-companion, competitive-intel, job-search

Quy trình:

  1. Kiểm tra WIKI_ROOT/variants/<variant-name>/ tồn tại
  2. Nếu config.yaml chưa có → copy variants/<variant-name>/config.yaml vào WIKI_ROOT/
  3. Đọc variants/<variant-name>/CLAUDE.md → merge schema extensions vào WIKI_ROOT/CLAUDE.md
  4. Tạo folder structure đầy đủ nếu chưa có: raw/, wiki/entities/, wiki/concepts/, wiki/sources/, wiki/syntheses/, outputs/, .discoveries/
  5. Copy variants/<variant-name>/sample-data/*WIKI_ROOT/raw/articles/
  6. Chạy ingest tự động trên sample data vừa copy
  7. Báo cáo kết quả và gợi ý các câu query đầu tiên

Output ví dụ (book-companion):

Setting up book-companion variant...
✓ Config copied → config.yaml
✓ Schema extensions merged → CLAUDE.md
✓ Folder structure created
✓ Sample data: 3 files → raw/articles/
✓ Ingest complete: 12 wiki pages created
  - 5 characters (Paul, Jessica, Duncan, Gurney, Stilgar)
  - 3 locations (Caladan, Arrakis, Giedi Prime)
  - 2 factions (Atreides, Harkonnen)
  - 2 concepts (The Spice, Bene Gesserit)

Wiki ready! Try:
  /llm-wiki query "Who is Paul Atreides?"
  /llm-wiki query "What is the relationship between House Atreides and Arrakis?"
  /llm-wiki book-summary

Quy tắc:

  • Nếu config.yaml đã tồn tại → hỏi user có muốn overwrite không, mặc định là KHÔNG
  • Nếu variant không tồn tại → liệt kê danh sách variants có sẵn
  • Luôn chạy ingest sau khi copy sample data để wiki có nội dung ngay

Command: book-summary

Mục đích: Tạo tóm tắt có cấu trúc toàn bộ wiki sách — characters, timeline, themes, mysteries.

Yêu cầu: Wiki phải ở book_mode: true trong config.yaml

Quy trình:

  1. Đọc config.yaml → lấy tên sách, current_chapter
  2. Đọc wiki/INDEX.md → xác định tất cả pages
  3. Đọc toàn bộ wiki/entities/ (characters, locations, factions)
  4. Đọc toàn bộ wiki/concepts/ (themes, events, quotes)
  5. Tổng hợp thành structured summary

Output format:

# [Tên sách] — Book Summary (đến Chapter N)

## Cast of Characters
| Nhân vật | Vai trò | Faction | Trạng thái |
|----------|---------|---------|-----------|
| Paul Atreides | Protagonist | House Atreides | Alive |
| ... | | | |

## Timeline of Key Events
1. [Event 1] — Chapter N
2. [Event 2] — Chapter N
...

## Major Factions
- **House Atreides:** [mô tả ngắn, members, goals]
- **House Harkonnen:** [mô tả ngắn, members, goals]

## Key Locations
- **Arrakis:** [mô tả, significance]
- **Caladan:** [mô tả, significance]

## Major Themes
1. [Theme 1] — [giải thích ngắn]
2. [Theme 2] — [giải thích ngắn]

## Unresolved Mysteries / Open Questions
- [Question 1 chưa có câu trả lời đến chapter hiện tại]
- [Question 2]

## Notable Quotes
> "[Quote 1]" — [Nhân vật], Chapter N

> "[Quote 2]" — [Nhân vật], Chapter N

Lưu vào: outputs/book-summary-YYYY-MM-DD.md

Quy tắc:

  • Chỉ include thông tin đến current_chapter trong config (spoiler protection)
  • Không thêm thông tin từ kiến thức bên ngoài — chỉ từ wiki
  • Nếu wiki quá nhỏ (< 5 pages) → gợi ý user ingest thêm chương

Command: competitive-brief

Mục đích: Tạo battlecard 1-pager cho một competitor cụ thể.

Syntax: /llm-wiki competitive-brief "<Tên Competitor>"

Quy trình:

  1. Tìm entity page của competitor trong wiki/entities/
  2. Đọc toàn bộ pages liên quan (products, pricing, features)
  3. Đọc wiki/changes/ nếu có (recent changes detected)
  4. Tổng hợp thành battlecard format

Output format:

# Competitive Brief: [Competitor Name]
*Generated: YYYY-MM-DD | Sources: N wiki pages*

## One-Line Positioning
[Tagline hoặc how they describe themselves]

## Pricing
| Tier | Price | Key Limits |
|------|-------|-----------|
| Free | $0 | [limits] |
| Pro | $X/mo | [limits] |
| Enterprise | Custom | [limits] |

## Top Features
- [Feature 1]: [mô tả ngắn]
- [Feature 2]: [mô tả ngắn]
- [Feature 3]: [mô tả ngắn]

## Recent Moves (30 ngày qua)
- [Date]: [Change/announcement]

## Known Weaknesses (từ reviews & Reddit)
- [Weakness 1]
- [Weakness 2]

## Job Postings Signal
[Họ đang hire vị trí gì → signal về roadmap]

## How We Differ
[Điểm khác biệt của chúng ta so với họ]

Lưu vào: outputs/battlecard-<competitor>-YYYY-MM-DD.md

Quy tắc:

  • Chỉ dùng thông tin CÓ TRONG WIKI — không bịa
  • Nếu không tìm thấy competitor trong wiki → gợi ý: Drop competitor info into raw/ and run /llm-wiki ingest
  • Nếu có change detection data → highlight changes bằng ⚡ CHANGED

Command: interview-prep

Mục đích: Tổng hợp 1-pager chuẩn bị interview cho một công ty cụ thể.

Syntax: /llm-wiki interview-prep "<Tên Công ty>"

Quy trình:

  1. Tìm entity page của công ty trong wiki/entities/
  2. Đọc tất cả pages liên quan (roles, culture, tech stack, news)
  3. Đọc wiki/sources/ liên quan đến công ty đó
  4. Tổng hợp thành interview prep format

Output format:

# Interview Prep: [Company Name]
*Generated: YYYY-MM-DD | Sources: N wiki pages*

## Company Overview
[3-4 câu: business model, stage, size]

## Tech Stack
[Những gì đã biết về tech stack của họ]

## Engineering Culture
- [Culture signal 1 — từ reviews/blogs]
- [Culture signal 2]
- [Culture signal 3]

## Recent News (30 ngày qua)
- [Date]: [News item]

## The Role
[Tóm tắt JD đã collect được nếu có]

## Interview Process (từ Glassdoor/Reddit)
1. [Round 1]: [format, duration, focus]
2. [Round 2]: [format]
...

## Known Interview Questions
- [Question 1 — thường gặp]
- [Question 2]

## Green Flags
- [Positive signal 1]
- [Positive signal 2]

## Red Flags / Watch Out For
- [Warning 1 — từ reviews]

## Questions to Ask Them
- [Question 1 — meaningful, shows research]
- [Question 2]
- [Question 3]

Lưu vào: outputs/interview-prep-<company>-YYYY-MM-DD.md

Quy tắc:

  • Chỉ dùng thông tin CÓ TRONG WIKI
  • Nếu thiếu data → ghi rõ "No data — consider adding [source type]"
  • Questions to Ask phải cụ thể, không generic — dựa trên thông tin đã research

Ingest: Spoiler Protection (book_mode)

Khi book_mode: true trong config.yaml, áp dụng thêm logic sau trong command ingest:

Quy trình bổ sung sau bước đọc file:

  1. Đọc frontmatter của file raw → tìm field chapter: N
  2. Đọc config.yaml → current_chapter
  3. Nếu chapter > current_chapter → SKIP file này
  4. Ghi vào LOG.md: [SKIP] raw/articles/[filename] — chapter N > current_chapter M (spoiler protection)
  5. Tiếp tục với file tiếp theo

Nếu không có field chapter trong frontmatter → ingest bình thường (coi là safe)

Cập nhật current_chapter: User tự sửa config.yaml → current_chapter khi đọc đến chương mới. Gợi ý thêm vào setup: "Update current_chapter in config.yaml as you read each chapter."


Discover: Change Detection (competitive-intel)

Khi change_detection: true trong config.yaml, áp dụng thêm logic sau trong command discover:

Quy trình bổ sung khi fetch source đã có trong history:

  1. Đọc nội dung mới từ website/feed
  2. Đọc wiki entity page tương ứng (nếu có)
  3. So sánh các field quan trọng: pricing, features, positioning
  4. Nếu phát hiện thay đổi: a. Tạo file wiki/changes/YYYY-MM-DD-<entity-name>.md với diff b. Cập nhật entity page, ghi ⚡ CHANGED: [mô tả thay đổi] ở đầu c. Ghi LOG.md với tag [CHANGE DETECTED] d. Include trong digest report

Format file change:

---
type: change
entity: competitor-name
detected: YYYY-MM-DD
---

# Change Detected: [Competitor Name] — YYYY-MM-DD

## What Changed
[Mô tả thay đổi cụ thể]

## Old Value
[Giá trị cũ]

## New Value
[Giá trị mới]

## Significance
[Tại sao thay đổi này quan trọng]

Error Handling

  • Nếu WebFetch/WebSearch fail → ghi lỗi vào LOG.md, skip nguồn đó, tiếp tục
  • Nếu file raw không đọc được (binary, corrupted) → skip, ghi LOG
  • Nếu wiki quá lớn cho context → đọc INDEX.md trước, chỉ đọc trang liên quan
  • Nếu config.yaml thiếu field → dùng giá trị mặc định trong CLAUDE.md
Install via CLI
npx skills add https://github.com/mduongvandinh/llm-wiki --skill llm-wiki
Repository Details
star Stars 212
call_split Forks 93
navigation Branch main
article Path SKILL.md
More from Creator
mduongvandinh
mduongvandinh Explore all skills →