# LLM Wiki

> 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.

- Skill: `mduongvandinh/llm-wiki` (Agent Skill)
- Install (CLI): `npx skillmds@latest add mduongvandinh/llm-wiki`
- Raw SKILL.md: https://api.skillmd.com/api/skills/mduongvandinh/llm-wiki/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: AI & ML
- Author: mduongvandinh (https://skillmd.com/u/mduongvandinh)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/mduongvandinh/llm-wiki

---


# 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.md` và `config.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:**
```markdown
# 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:
      ```yaml
      ---
      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:**
```markdown
# 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.md` và `wiki/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:**
```markdown
# 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:**
```markdown
# [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:**
```markdown
# 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:**
```markdown
# 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:**
```markdown
---
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

