Q

Hệ thống ưu tiên: mình dùng Claude Code với 25 file CLAUDE.md

Prompt hay chỉ là lớp vỏ. Bốn tầng CLAUDE.md → Skills → Hooks → Agents mới quyết định chất lượng đầu ra — kèm cách mình dựng chúng và chỗ mình làm sai.

Trong thư mục làm việc chính của mình đang có 25 file CLAUDE.md và 16 skill. Không phải vì mình thích sắp xếp. Mà vì mỗi file đó ra đời từ đúng một lần AI làm sai, và mình quyết định vá bằng môi trường thay vì vá bằng prompt.

Đó là toàn bộ khác biệt giữa cách mình dùng Claude Code bây giờ và cách mình dùng nó lúc mới bắt đầu.

Cách dùng sai mà mình theo suốt thời gian đầu

Mở terminal → gõ một prompt thật dài, thật kỹ → giao hết cho AI → sửa lại phần nó làm hỏng → lần sau gõ lại một prompt dài y hệt.

Vòng lặp đó có một lỗ hổng chết người: mọi thứ mình dạy nó đều bốc hơi khi đóng phiên. Mình không xây gì cả, mình chỉ đang trả tiền để giải thích lại cùng một bối cảnh mỗi ngày.

Thiết kế cách AI vận hành quan trọng hơn viết chỉ thị hay.

Câu đó nghe hiển nhiên, nhưng nó đảo ngược thứ tự việc phải làm. Prompt là lớp bề mặt. Cái nằm dưới mới quyết định.

Bốn tầng, xếp theo đúng thứ tự nên dựng

Tầng 1 — CLAUDE.md: bộ nhớ dài hạn của dự án

File này tự nạp mỗi phiên. Nó chứa những gì AI cần biết để không phải hỏi lại: kiến trúc, quy ước code, lệnh hay dùng, cấu trúc thư mục, thói quen làm việc.

Hai điều mình học được sau khi viết 25 file như vậy:

Đừng cố viết hoàn hảo ngay từ đầu. Cứ làm việc bình thường. Mỗi lần AI làm sai vì thiếu bối cảnh, thêm đúng một dòng. File CLAUDE.md của website này bây giờ dài, nhưng nó dài dần qua nhiều tháng, không phải trong một buổi ngồi nghĩ.

Tách cái cố định khỏi cái đang đổi. Đây là chỗ mình làm sai lâu nhất. Mình từng nhét cả trạng thái hiện tại của dự án (“kênh này đang tạm dừng”, “ngách kia vừa chốt”) vào chung file quy tắc. Kết quả: file vừa là luật vừa là nhật ký, và AI đọc xong không phân biệt được đâu là điều bất biến, đâu là tình hình tháng trước. Bây giờ trạng thái nằm ở file riêng — logs/status.md hoặc một sổ sách riêng — còn CLAUDE.md chỉ giữ luật.

Tầng 2 — Skills: kiến thức và quy trình tái dùng

Việc nào lặp lại thì đóng gói thành skill. Bài viết này là ví dụ sống: mình không tự tay tạo file markdown rồi deploy nữa, mà gọi một skill lo trọn luồng nháp riêng tư → duyệt qua điện thoại → publish công khai.

Điểm khác biệt so với prompt dài: skill nằm trong repo, commit được, chia lại cho người khác được. Mình từng đóng gói một skill tìm ngách YouTube rồi gửi cho team dùng chung. Ý tưởng gần với bộ skills của Matt Pocock mà mình viết trước đây: biến việc nhờ AI làm hộ thành một quy trình có kỷ luật.

Tầng 3 — Hooks: thứ AI không được phép bỏ qua

Skill là hướng dẫn — AI vẫn có thể quên. Hook là cơ chế bắt buộc thực thi, chạy ở tầng harness chứ không phải tầng model.

Đây là chỗ đặt những việc mà “quên một lần” là hỏng thật: kiểm tra không có secret lọt vào commit, chặn thao tác nguy hiểm, chạy lint trước khi build. Nguyên tắc phân biệt của mình khá đơn giản: nếu hậu quả của việc bỏ sót là khó chịu → skill; nếu là không thể sửa → hook.

Tầng 4 — Agents: phân công chuyên môn

Khi việc phức tạp, chia nhỏ và giao cho từng agent chuyên biệt — một agent chỉ soi bảo mật, một agent chỉ viết test, một agent chỉ đọc và tìm file. Mỗi agent có bối cảnh riêng, không kéo cả đống thông tin thừa của nhau.

Lợi ích thật mình cảm nhận được không phải là “thông minh hơn”, mà là sạch bối cảnh hơn. Một agent chỉ biết đúng phần việc của nó thì ít lạc đề hơn hẳn.

Cấu trúc thư mục mình dùng

your-project/
├── CLAUDE.md            # bộ nhớ chính — chỉ chứa LUẬT
├── .claude/
│   ├── settings.json    # hooks, permissions
│   └── settings.local.json
├── skills/              # quy trình tái dùng
├── commands/            # lệnh tuỳ chỉnh
├── agents/              # agent chuyên biệt
├── logs/
│   └── status.md        # trạng thái đang đổi — TÁCH khỏi CLAUDE.md
└── src/

Bắt đầu từ đâu nếu bạn chưa có gì

Đừng dựng cả bốn tầng cùng lúc. Thứ tự này mới đúng, vì mỗi tầng sau chỉ có nghĩa khi tầng trước đã đủ dùng:

  1. Tạo CLAUDE.md với những thông tin cơ bản nhất — kiến trúc, lệnh chạy, quy ước. Mười dòng là đủ để bắt đầu.
  2. Làm việc bình thường.
  3. Mỗi lần AI làm sai vì thiếu bối cảnh, thêm một dòng vào CLAUDE.md. Không viết lại cả file.
  4. Việc nào bạn gõ lại lần thứ ba → biến thành skill.
  5. Việc nào không được phép quên → đưa vào hook.
  6. Việc nào quá lớn cho một phiên → tách thành agent.
  7. Commit hết đám file cấu hình đó. Chúng là tài sản của dự án, không phải file rác cá nhân.

Cái mình mang về sau 25 file

Claude Code mạnh không phải vì nó thông minh hơn model khác. Mình không có số liệu benchmark nào để nói câu đó, và cũng không định nói. Cái mình đo được là thứ khác: thời gian mình mất để giải thích lại bối cảnh đã giảm gần như về không.

Khi mở một phiên mới trong thư mục kênh YouTube, mình không phải kể lại kênh đó đang ở giai đoạn nào, số liệu nằm ở đâu, cấm làm gì. Nó biết rồi. Cái biết đó không đến từ model — nó đến từ những dòng mình thêm vào sau mỗi lần vấp.

Nếu bạn chỉ làm được một việc sau khi đọc bài này: mở dự án đang làm, tạo file CLAUDE.md, viết mười dòng bạn phát chán vì phải giải thích lại. Phần còn lại sẽ tự lớn lên theo lỗi.

Đọc tiếp

Mạng lưới quanh bài này Xem toàn bản đồ →

Liên quan