Đồng Use Claude — Phần 2: INTENT, viết file ý định để AI không đoán sai
File intent.md là bản hợp đồng đầu tiên: bài toán thật, kết quả quan sát được, và những gì tuyệt đối không làm. Kèm template và ví dụ INTENT-01.md hoàn chỉnh cho app sổ khách.
Khi bạn nói với AI “làm app quản lý khách hàng”, nó tự điền mọi khoảng trống bằng trí tưởng tượng của nó: dashboard, biểu đồ, đăng nhập, phân quyền — một con tàu sân bay khi bạn chỉ cần cái xuồng. File INTENT tồn tại để khoá khoảng trống đó lại: vì sao làm, làm cho ai, xong là trông như thế nào, và tuyệt đối không làm gì.
Đây là bài 2 trong series Đồng Use Claude. Xuyên suốt series ta build app sổ khách — mini-CRM cho chủ tiệm đang ghi khách vào Excel và sổ tay.
Cấu trúc file INTENT
Một file intent đủ dùng có 5 phần. Ngắn thôi — intent dài ba trang là dấu hiệu bạn chưa chốt được gì:
- Problem — bài toán thật, đang xảy ra, có ngữ cảnh. Mỗi vấn đề gán một ID
[PRB-n]. - Proposed Outcome — kết quả mong muốn, phải quan sát được. Mỗi outcome gán ID
[OUT-n]và trỏ về PRB nó giải quyết. - Users — ai dùng, dùng ở đâu, trình độ ra sao.
- Non-goals — những gì cố ý không làm. Phần quan trọng nhất của file.
- Constraints — ràng buộc cứng: ngân sách, thiết bị, thời hạn.
Hai quy tắc viết:
- Outcome phải observable. “Khách hàng hài lòng hơn” không kiểm được. “Nhập trùng hai dòng cùng số phone → trong danh sách chỉ còn một” kiểm được ngay bằng mắt.
- Non-goal quan trọng hơn goal. AI giỏi làm thêm, dở ở chỗ dừng. Mỗi dòng non-goal là một lần bạn đỡ phải xoá code thừa.
Ví dụ hoàn chỉnh: INTENT-01.md cho sổ khách
Đây là file ta sẽ dùng xuyên suốt series — copy y nguyên vào intent/INTENT-01.md trong dự án của bạn:
# Intent: sổ khách (mini-CRM)
## 1. Problem
- [PRB-1] Khách ghi ở 3 nơi: sổ tay, Excel, Zalo. Tìm một
khách phải mở cả ba.
- [PRB-2] Cùng một khách bị nhập nhiều lần vì số phone
ghi kiểu khác nhau: 0901..., +84901..., 090-1...
- [PRB-3] Không biết khách đã mua gì, ghi chú nằm rải rác.
## 2. Proposed Outcome
- [OUT-1] Nhân viên nhập khách qua một form web duy nhất,
trên điện thoại hoặc máy tính → giải PRB-1
- [OUT-2] Nhập 2 dòng cùng số phone (dù format khác nhau)
→ danh sách chỉ còn 1 khách, thông tin gộp lại
→ giải PRB-2 (kiểm được bằng mắt)
- [OUT-3] Mở một khách ra thấy đủ tên, phone, email,
ghi chú → giải PRB-3
## 3. Users
- Chủ tiệm + 2 nhân viên. Không biết code, dùng qua
trình duyệt điện thoại. Tổng dưới 5 người dùng.
## 4. Non-goals
- KHÔNG đăng nhập/phân quyền (dùng nội bộ, thêm sau)
- KHÔNG báo cáo, biểu đồ, dashboard
- KHÔNG gửi SMS/email/Zalo tự động
- KHÔNG app mobile — chỉ web chạy trên trình duyệt
## 5. Constraints
- Chi phí vận hành = 0đ (Cloudflare free tier)
- Dữ liệu nằm trên tài khoản của chủ tiệm
- Ship trong 1 tuần
Đọc lại file này như người đặt hàng đọc hợp đồng: mỗi [OUT-n] là một câu bạn sẽ bắt AI chứng minh ở bước TEST. Nếu một outcome không viết được thành câu quan sát được, nó chưa phải outcome — là khẩu hiệu.
Cách làm với Claude Code
Đừng tự viết một mình rồi đưa cho AI — để nó hỏi lại bạn:
> Đọc file intent/INTENT-01.md. Đóng vai business analyst,
hỏi tôi tối đa 5 câu để làm rõ các điểm mơ hồ — chỉ hỏi
thứ ảnh hưởng tới spec, không hỏi cho đủ. Sau đó liệt kê
các giả định mày sẽ mặc định dùng nếu tao không nói gì.
Câu cuối quan trọng: bắt nó khai các giả định. Những gì nó định “mặc định dùng” — ví dụ “phone là duy nhất”, “khách có thể không có email” — chính là các luật nghiệp vụ sẽ vào SPEC ở bài sau.
Sau khi trả lời, update file INTENT cho tới khi không còn giả định nào làm bạn bất ngờ. File này là hợp đồng: từ đây mọi tranh cãi “ý tôi là vậy” đều đối chiếu với nó.
Bài tập: viết INTENT cho ý tưởng của bạn
- Tạo
intent/INTENT-01.mdcho app bạn đang ấp ủ. - Viết tối đa 3
[PRB-n]— nếu có 10 vấn đề, bạn đang tả 3 dự án vào một app. - Mỗi
[OUT-n]phải trả lời được câu “kiểm bằng cách nào?”. Không trả lời được → viết lại. - Non-goals tối thiểu 4 dòng. Không viết nổi 4 thứ bạn không làm nghĩa là phạm vi chưa chốt.
- Đưa file cho Claude Code với prompt ở trên, trả lời câu hỏi, sửa file.
Dấu hiệu file INTENT đủ tốt: bạn có thể đưa nó cho một người lạ và họ mô tả lại đúng app bạn muốn — kể cả những thứ không có trong app.
Nguồn tham khảo
Bài tiếp theo: Phần 3 — SPEC: đặc tả nghiệp vụ.