CLAUDE.md THẬT của Thanh 36 dòng · ~/.claude/CLAUDE.md · chụp 13:58 17/07/2026 ← Về slide
📖 Cách dùng khi đang dạy: bấm A+ cho chữ to lên · rê chuột qua dòng nào thì dòng đó sáng lên · gõ #L17 vào cuối link để nhảy thẳng tới dòng 17 và tô vàng nó.
⚠️ Đây là bản CHỤP để chiếu — không phải file sống. Sửa file thì bản này không tự đổi.
1# Eroca Thanh — CLAUDE.md TOÀN CỤC (user-global)
2 
3> Load MỌI session, mọi cwd (kể cả NGOÀI `~/`). Mỗi dòng = thuế token vĩnh viễn → tối giản tàn nhẫn.
4> Chỉ chứa: (1) bản đồ tầng · (2) sàn an toàn cho session ngoài `~/` · (3) chính sách tinh lọc. KHÔNG chép luật tầng dưới — chỉ trỏ.
5 
6## 1. Bản đồ hệ CLAUDE.md (cascade theo cwd — Read đúng tầng, đừng suy từ dòng mô tả)
7 
8| Tầng | Path | Load khi |
9|---|---|---|
10| Toàn cục (file này) | `~/.claude/CLAUDE.md` | MỌI session, mọi cwd |
11| Workspace (luật đầy đủ) | `~/CLAUDE.md` | cwd dưới `~/` (gần như mọi phiên) |
12| Build local | `~/Development/CLAUDE.md` (+ sub-folder) | cwd dưới `~/Development/` |
13| Web repos | `~/Projects/CLAUDE.md` (+ mỗi repo có CLAUDE.md/AGENTS.md) | cwd dưới `~/Projects/` |
14| Ops state | `~/Operations/CLAUDE.md` (+ sub-folder) | cwd dưới `~/Operations/` |
15| Vault | `~/Documents/EROCA_WIKI/CLAUDE.md` (sibling: EROCA_WIKI2/ · Obsidian/) | cwd trong vault |
16 
17**Cách nạp (verified tại nguồn 17/7/26 — KHÔNG suy đoán):** mọi tầng từ root → cwd đều nạp lúc mở phiên và **NỐI GỘP** (*"concatenated into context rather than overriding each other"*), tầng gần cwd đọc SAU CÙNG. ⛔ **KHÔNG có luật ưu tiên** — 2 tầng dặn ngược nhau → *"Claude may pick one arbitrarily"* ⇒ **thứ tự KHÔNG dọn hộ mâu thuẫn; phải tự giữ các tầng không đá nhau.** ⚠️ cwd NGOÀI `~/` → CHỈ file này load. CLAUDE.md ở thư mục CON của cwd = on-demand.
18Memory: `MEMORY.md` **TỰ NẠP mỗi phiên** (mặc định bật; 200 dòng/25KB đầu) — chỉ file chủ đề trong `memory/` mới on-demand. Path `~/.claude/projects/-Users-erocathanh/memory/`, fact granular 4-type. Fact 1-project/tool/nội-dung → memory, KHÔNG vào file này.
19📌 **Bằng chứng neo cứng** (URL có thể chết, bản chụp thì không): `~/.claude/docs-snapshots/claude-code-memory.md` — tải **17/7/2026 12:09 BST**, nguồn `https://code.claude.com/docs/en/memory.md`. Nghi 2 dòng trên → **đọc bản chụp, đừng đoán**. *(Sửa 17/7 sau khi bản cũ bị bắt sai 2 chỗ: "tầng sâu override tầng rộng" + "memory không tự nạp" — cả hai đều ngược tài liệu gốc.)*
20 
21## 2. Sàn an toàn — hiệu lực CẢ khi ngoài `~/`
22 
23> ⚠️ Bản rút gọn cố ý (ngoại lệ DUY NHẤT của luật "chỉ trỏ"). SoT đầy đủ ở `~/CLAUDE.md` — sửa thì sửa NGUỒN trước, rồi mới đồng bộ dòng dưới.
24 
25- **Header v2:** mọi response mở đầu `FROM: claude-<name> / TO: <recipient>` (ack ≤5 từ miễn).
26- **Bảo mật + phá huỷ (no override):** KHÔNG in/commit giá trị secret (full/partial/prefix/suffix) · KHÔNG `rm -rf` ngoài scope · `push --force` main · `reset --hard origin/main` · `db reset`.
27- Trước khi mutate/post/deploy/commit ở cwd ngoài `~/` → `Read ~/CLAUDE.md` lấy quy ước đầy đủ (pointer = lệnh đọc THỦ CÔNG, không auto-load).
28 
29## 3. Chính sách tinh lọc (trả lời: có nên đưa dần rule từ `~/CLAUDE.md` lên global?)
30 
31CÓ — nhưng là sự kiện **HIẾM**; mặc định rule ở lại `~/CLAUDE.md` (nơi ươm, đổi hằng ngày). Chỉ thăng cấp khi đủ **CẢ 3**: (a) cross-context — đúng cả ngoài `~/`; (b) tần suất cao — lặp nhiều phiên/agent; (c) ổn định — hết tiến hoá.
32 
33- **Chống trùng:** thăng cấp = để 1 POINTER ở global, chi tiết single-source ở tầng gốc. KHÔNG chép full 2 nơi → drift (vd có thật: header v2 đang nằm cả `~/CLAUDE.md` lẫn `~/Projects/CLAUDE.md`).
34- **Chống phình:** file này ≤ ~35 dòng nội dung; vượt = sai thiết kế, rà lại — KHÔNG nới trần. Rà chung nhịp `/consolidate-memory` hoặc `/kaizen-thang`, KHÔNG tạo nhịp bảo trì mới.
35- **Propose-not-autosave:** agent ĐỀ XUẤT, Owner duyệt diff — agent KHÔNG tự sửa file global.
36