This commit is contained in:
Leonard-ThindPad-P50
2026-09-08 10:26:21 +07:00
commit c81f249920
169 changed files with 38726 additions and 0 deletions

View File

@@ -0,0 +1,146 @@
# Hướng dẫn sử dụng — `ba-1-discovery` (Giai đoạn 1)
## Giai đoạn này giải quyết gì
Đầu vào là một câu mơ hồ kiểu *"khách muốn làm màn hình quản lý đối soát"*. Đầu ra là một
bài toán phát biểu được, có chủ, có cách đo thành công, có danh sách yêu cầu mức nghiệp vụ
đã xếp ưu tiên.
**Không làm ở giai đoạn này:** vẽ màn hình, chọn công nghệ, viết user story chi tiết, ước
lượng công sức. Thấy mình đang làm mấy thứ đó ⇒ đã trượt sang GĐ2/GĐ3.
## Khi nào gọi
| Tình huống | Có nên gọi |
|---|---|
| Nhận module hoàn toàn mới | ✅ Chạy đầy đủ |
| Enhancement trên module đã có | ✅ Chạy rút gọn — chỉ `RQ` + rủi ro, bỏ `BRIEF` đầy đủ |
| Sửa lỗi nghiệp vụ nhỏ | ❌ Sang thẳng `ba-3-specification` |
| Sắp họp với khách, cần bộ câu hỏi | ✅ Gọi và nói rõ "chỉ cần bộ câu hỏi cho buổi họp" |
| Đã có SRS rồi, chỉ muốn bổ sung KPI | ✅ Gọi rút gọn, nói rõ chỉ cần mục 4 của BRIEF |
## Cú pháp
```
/ba-1-discovery <PROJECT|US-id> [--mode new|enhancement] [--out <đường-dẫn>] [go]
```
| Tham số | Ý nghĩa |
|---|---|
| `--mode new` | Module mới — chạy đủ 6 bước (mặc định khi không đoán được) |
| `--mode enhancement` | Chỉ chạy Bước 1 (rà stakeholder bị ảnh hưởng), Bước 4 (`RQ`), Bước 6 (rủi ro) |
| `go` | Bỏ bước dừng xác nhận input |
Kèm file input bằng cách đính kèm trong hội thoại hoặc ghi đường dẫn:
```
/ba-1-discovery Settlement — input: d:/Kakao/Docs/yeu-cau-khach.docx, biên bản họp 2026-08-22
```
## Chuẩn bị gì trước khi gọi
**Tối thiểu** (không có thì skill vẫn chạy nhưng sẽ sinh nhiều `OQ`):
- Câu mô tả yêu cầu ban đầu, dù mơ hồ
- Tên người có thể trả lời câu hỏi nghiệp vụ
**Nên có** (chất lượng output tăng rõ rệt):
- Biên bản/email trao đổi với khách
- Ảnh chụp màn hình hoặc file Excel người dùng đang dùng thủ công
- Số liệu hiện trạng: bao nhiêu giao dịch/ngày, bao nhiêu người thao tác
## Quy trình 6 bước — bạn tham gia ở đâu
| Bước | Skill làm | Bạn làm |
|---|---|---|
| 1. Stakeholder | Sinh khung, gợi ý nhóm hay bị sót | Điền **tên thật**, xác nhận ai ký được |
| 2. Chuẩn bị khai thác | Sinh bộ câu hỏi theo vai trò | Duyệt, cắt bớt, gửi trước cho khách |
| 3. Khai thác | Sinh mẫu biên bản | **Đi họp và ghi** — skill không họp thay bạn |
| 4. Chưng cất `RQ` | Chuyển phát ngôn → RQ, gắn MoSCoW | Xác nhận MoSCoW với PO |
| 5. Mục tiêu & phạm vi | Viết `BRIEF`, đòi baseline | Cung cấp/đi hỏi baseline |
| 6. Rủi ro & giả định | Rà 4 chỗ giả định, 6 loại rủi ro | Chỉ định người chịu trách nhiệm |
🔴 **Bước 3 là bước skill không làm thay được.** Nó chuẩn bị câu hỏi và mẫu biên bản; việc
ngồi nghe khách nói là của bạn. Đưa biên bản thô vào, skill sẽ chưng cất thành `RQ`.
## Bạn sẽ nhận được gì
Bốn file trong `ba-output/<PROJECT>/01-discovery/`:
```
BRIEF_<PROJECT>_v1.0.md ← tài liệu chính, PO ký cái này
STAKEHOLDER_<PROJECT>_v1.0.md
ELICITATION_<chủ đề>_<ngày>.md ← mỗi buổi một file
RISK_<PROJECT>_v1.0.md
```
Cộng với ba bảng tự chấm in ra màn hình: Gate G1 · quy tắc viết W1–W13 · danh sách `OQ` mở.
## Ví dụ hội thoại
```
Bạn: /ba-1-discovery Settlement
Khách bảo cần màn hình đối soát doanh thu POS với hệ thống.
Đính kèm: bien-ban-hop-2026-08-22.md
Claude: [Bước 0]
Input dùng được:
| bien-ban-hop-2026-08-22.md | Biên bản họp khởi động | Cao |
| ba-output/Settlement/ | Chưa tồn tại | — |
Phân loại: module MỚI (chưa thấy artifact nào của Settlement).
Người cần tiếp cận — tôi suy ra từ biên bản, xác nhận giúp:
- Người quyết định: chị Lan (Trưởng phòng Tài chính)?
- Người sử dụng: nhân viên đối soát — chưa biết tên
- Bị ảnh hưởng: cửa hàng/POS operator — chưa xác nhận
- Cung cấp thông tin: ai quản trị hệ thống POS?
Cách hiểu: bài toán gốc là phát hiện chênh lệch muộn (cuối tháng), không phải
"thiếu một màn hình". Tôi sẽ viết BRIEF theo hướng đó.
Ghi vào ba-output/Settlement/01-discovery/. Xác nhận giúp tôi 4 điểm trên.
Bạn: Đúng rồi. Người dùng là anh Sơn + 2 bạn. POS do bên NCC X vận hành, đầu mối anh Huy.
Claude: [sinh STAKEHOLDER + bộ câu hỏi cho từng người + khung BRIEF với các OQ]
```
## Lỗi thường gặp
**"Skill viết BRIEF toàn `OQ`, gần như trống."**
Đúng như thiết kế. Chưa đi hỏi khách thì chưa có thông tin, và quy tắc số 1 là không bịa.
Danh sách `OQ` chính là danh sách việc bạn cần đi hỏi. Hỏi xong đưa biên bản vào, chạy lại.
**"Khách đã nói rõ muốn gì rồi, sao còn phải phát biểu bài toán?"**
Vì thứ khách nói thường là **giải pháp**, không phải vấn đề. "Cần nút export" → hỏi "xuất
ra để làm gì" → hoá ra để gửi kế toán đối chiếu → hoá ra vấn đề thật là hai hệ thống không
khớp số. Giải pháp đúng có thể không phải nút export.
**"Không lấy được baseline, khách không có số."**
Đừng bỏ trống. Ghi `OQ` + đề xuất cách đo: bấm giờ 3 ngày, đếm số ca lỗi tháng trước, hoặc
lấy log hệ thống cũ. Baseline ước lượng có ghi rõ cách ước lượng vẫn tốt hơn không có gì.
**"Must chiếm 90% danh sách RQ."**
Việc phân loại chưa xảy ra. Hỏi PO đúng một câu: *"Nếu chỉ kịp một nửa thì cắt cái nào?"*
— câu này ép ra thứ tự thật.
**"Có hai bên nói ngược nhau, tôi chọn bên nào?"**
Không chọn. Ghi cả hai vào mục 6 của `STAKEHOLDER`, tạo `OQ`, đưa PO quyết. BA tự chọn là
vi phạm nguyên tắc 2 và là nguồn gốc của CR ở UAT.
## Ra khỏi giai đoạn này khi nào
Đủ cả ba:
1. Bảng tự chấm G1 toàn ✅
2. PO đã điền `Approved by` vào header `BRIEF`
3. Không còn `OQ` nào chặn việc phân rã user story
Rồi chạy `/ba-2-analysis <PROJECT>`.
## Liên quan
- Tiêu chí gate G1: `../ba-lifecycle/references/workflow.md` §2
- Quy tắc viết: `../ba-lifecycle/references/writing-rules.md`
- Template: `templates/project-brief.md` · `templates/stakeholder-map.md` ·
`templates/elicitation-guide.md` · `templates/risk-register.md`