@educa-corp/fw 0.8.0 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,11 @@
|
|
|
3
3
|
> `fw install` in các mục của những version mới hơn bản đang cài trong dự án.
|
|
4
4
|
> Mỗi lần sửa lệnh, khuôn, bộ câu hỏi hay công cụ đều phải tăng version và thêm một mục ở đây. Test sẽ báo lỗi nếu version chưa có mục.
|
|
5
5
|
|
|
6
|
+
## 0.8.1 — 2026-10-01
|
|
7
|
+
|
|
8
|
+
- Hướng dẫn có thêm loại trang **Cách làm** (`.fw/guide/cach-lam/`), gồm các bước làm một việc cụ thể kèm câu gõ mẫu. Trang đầu tiên: **Cách quyết finding sau khi refine** (cho PO / BA).
|
|
9
|
+
- Sửa lỗi `/prd refine`: gọi lại lệnh khi lượt trước **đang chờ PO quyết** thì không rà lại từ đầu nữa, mà trình lại bảng tóm tắt để PO quyết tiếp. Trước bản này, lệnh sẽ chạy lại cả lượt 1, tốn thêm token và sinh ra finding trùng.
|
|
10
|
+
|
|
6
11
|
## 0.8.0 — 2026-10-01
|
|
7
12
|
|
|
8
13
|
- PRD có mục mới **User flow**: các hành trình xuyên suốt nhiều UC, mỗi hành trình gồm một dòng trong bảng và một sơ đồ mermaid, có nhánh lỗi. **Mỗi UC phải có mặt trong ít nhất một hành trình**, `spec_edit flowcheck` kiểm và PRD thiếu User flow thì không duyệt được. PRD đã có: chạy `/prd <EPIC-ID> change thêm User flow`.
|
package/docs/guide/README.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Hướng dẫn sử dụng `@educa-corp/fw`
|
|
2
2
|
|
|
3
3
|
> Framework làm việc với Claude Code: đưa một tính năng đi từ **ý tưởng → làm rõ yêu cầu → PRD → …**, AI hỏi và viết, con người xác nhận ở mỗi bước.
|
|
4
|
-
> Hướng dẫn này viết cho **bản 0.8.
|
|
4
|
+
> Hướng dẫn này viết cho **bản 0.8.1**. Chỉ mô tả những lệnh **đã có**. Lệnh mới có thì hướng dẫn mới được bổ sung.
|
|
5
5
|
> Trong dự án đã cài framework, bản hướng dẫn đúng với version đang dùng nằm ở **`.fw/guide/`**. Có thể hỏi Claude: *"Đọc .fw/guide và cho biết cách đổi PRD"*.
|
|
6
6
|
|
|
7
7
|
---
|
|
@@ -13,6 +13,7 @@
|
|
|
13
13
|
| Cài vào dự án và chạy lần đầu | [Bắt đầu](01-bat-dau.md) |
|
|
14
14
|
| Hiểu vài khái niệm trước khi dùng (UC, BR, AC, 🤖/✅…) | [Khái niệm](02-khai-niem.md) |
|
|
15
15
|
| Biết **vai trò của mình** dùng lệnh nào | [PO / BA](vai-tro/po-ba.md) · *Dev, QC: sắp có* |
|
|
16
|
+
| Làm một việc cụ thể, từng bước, có câu gõ mẫu | **Cách làm:** [Quyết finding sau khi refine](cach-lam/quyet-finding-refine.md) |
|
|
16
17
|
| Tra cứu một lệnh cụ thể | Bảng lệnh ngay bên dưới |
|
|
17
18
|
| Gặp lỗi | [Xử lý sự cố](xu-ly-su-co.md) |
|
|
18
19
|
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
[← Hướng dẫn](../README.md) · [PO / BA](../vai-tro/po-ba.md) · [/prd refine](../lenh/prd-refine.md)
|
|
2
|
+
|
|
3
|
+
# Cách quyết finding sau khi refine PRD
|
|
4
|
+
|
|
5
|
+
> **Dành cho:** PO / BA · **Khi nào:** sau khi `/prd EP-xx refine` trình bảng finding · **Mất khoảng:** 30–60 phút với vài chục finding
|
|
6
|
+
> Muốn tra cứu các luật (lượt, mức độ, điều kiện duyệt) thì xem [/prd refine](../lenh/prd-refine.md).
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## 1. Mở đúng chỗ
|
|
11
|
+
|
|
12
|
+
Không cần quyết ngay trong phiên vừa rà. Khi đã sẵn sàng:
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
/clear
|
|
16
|
+
/prd EP-01 refine
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Lệnh thấy lượt trước đang chờ bạn quyết. Nó **không rà lại**, chỉ trình lại bảng tóm tắt theo thứ tự F01 → F… (nặng nhất trước).
|
|
20
|
+
|
|
21
|
+
Mở thêm file chi tiết bên cạnh, ví dụ trong VS Code:
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
specs/{domain}/{slug}/review/prd-refine.md
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Mỗi finding gồm: **Trích** (đoạn PRD liên quan) · **Vấn đề** · **Đề xuất** · **Nếu chốt đề xuất này** (hệ quả có thể phát sinh, chỉ có ở critical và major).
|
|
28
|
+
|
|
29
|
+
## 2. Quyết theo từng đợt nhỏ, nặng trước
|
|
30
|
+
|
|
31
|
+
Nên chia thành 4–5 tin nhắn, đừng dồn tất cả vào một lần:
|
|
32
|
+
|
|
33
|
+
| Đợt | Gõ ví dụ *(minh hoạ)* |
|
|
34
|
+
|---|---|
|
|
35
|
+
| **Critical**: bắt buộc quyết **từng mã** | `nhận F01` |
|
|
36
|
+
| Major nhóm QA | `nhận F02, F04, F05 · F03 sửa thành "hiển thị thông báo 'Email đã tồn tại'" · bác F06 vì AC đã đủ rõ` |
|
|
37
|
+
| Major nhóm DEV | `nhận F07–F15 trừ F11 · hoãn F11` |
|
|
38
|
+
| Major nhóm SA, Phạm vi | Như trên, quyết từng phần |
|
|
39
|
+
| **Minor** | `nhận tất cả minor` |
|
|
40
|
+
|
|
41
|
+
Quyết theo nhóm thì Claude **liệt kê lại đúng các mã** sẽ bị áp và hỏi *"Đúng chưa?"*. Kiểm danh sách đó trước khi trả lời "đúng".
|
|
42
|
+
|
|
43
|
+
## 3. Chọn quyết định nào
|
|
44
|
+
|
|
45
|
+
| Quyết định | Dùng khi | Lưu ý |
|
|
46
|
+
|---|---|---|
|
|
47
|
+
| `nhận` | Đồng ý cả vấn đề lẫn đề xuất | AI sửa PRD đúng theo đề xuất |
|
|
48
|
+
| `sửa: …` | Đồng ý là có vấn đề, nhưng muốn sửa **theo cách khác** | Ghi rõ cách của bạn, càng cụ thể càng tốt |
|
|
49
|
+
| `bác vì …` | Finding **sai**, **thừa**, hoặc PRD đã trả lời ở chỗ khác | **Luôn ghi lý do.** Lý do được lưu vào sổ quyết định, lần rà sau sẽ không nêu lại |
|
|
50
|
+
| `hoãn` | Đúng là có vấn đề, nhưng **để bước sau** xử lý (giao diện, kỹ thuật, chưa đủ thông tin) | Được ghi vào "Câu hỏi còn mở" của PRD, kèm chú thích "để bước QC" |
|
|
51
|
+
|
|
52
|
+
**Phân biệt bác và hoãn:** finding **không đúng** thì `bác`. Finding **đúng nhưng chưa phải lúc** thì `hoãn`.
|
|
53
|
+
|
|
54
|
+
## 4. Chưa hiểu thì hỏi trước
|
|
55
|
+
|
|
56
|
+
```
|
|
57
|
+
F18 nghĩa là gì? Cho ví dụ tình huống cụ thể.
|
|
58
|
+
F07 và F12 có trùng nhau không?
|
|
59
|
+
Nếu nhận F21 thì UC nào bị sửa?
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Claude giải thích **mà không sửa gì**. Chỉ khi bạn gõ quyết định thì mới có thay đổi.
|
|
63
|
+
|
|
64
|
+
## 5. Cách khác: ghi thẳng vào file
|
|
65
|
+
|
|
66
|
+
Sửa các dòng `- Quyết định: chờ` trong `prd-refine.md`, ví dụ:
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
- Quyết định: nhận
|
|
70
|
+
- Quyết định: sửa: khoá 30 phút thay vì 15 phút
|
|
71
|
+
- Quyết định: bác: đã có ở UC-002-BR03
|
|
72
|
+
- Quyết định: hoãn
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Xong thì gõ: `Tôi đã ghi quyết định vào file, đọc và áp giúp.`
|
|
76
|
+
|
|
77
|
+
Cách này hợp khi bạn muốn đọc kỹ từng finding, hoặc cần hỏi ý người khác trước khi quyết.
|
|
78
|
+
|
|
79
|
+
## 6. Sau khi quyết xong
|
|
80
|
+
|
|
81
|
+
Khi mọi critical và major đã có quyết định:
|
|
82
|
+
1. Claude áp các finding `nhận` và `sửa` vào PRD, tăng version (ví dụ 1.2 → 1.3), ghi Lịch sử thay đổi.
|
|
83
|
+
2. Bảng **Tóm tắt** trong `prd-refine.md` có thêm số **nhận · sửa · bác · hoãn**.
|
|
84
|
+
3. Claude nhắc `/clear` rồi `/prd EP-01 refine` để chạy **lượt 2**. Lượt này chỉ soi phần vừa sửa, nhanh hơn nhiều.
|
|
85
|
+
|
|
86
|
+
Minor không bắt buộc phải quyết. Minor còn `chờ` vẫn duyệt PRD được.
|
|
87
|
+
|
|
88
|
+
## Mẹo
|
|
89
|
+
|
|
90
|
+
- **Thấy finding sai hoặc thừa thì `bác` và ghi lý do, đừng bỏ qua.** Tỉ lệ bác cho người phụ trách framework biết bước kiểm chứng của AI có làm tốt không.
|
|
91
|
+
- Nhiều finding cùng nói về một UC thì quyết chúng **cùng lúc**, để các bản sửa không giẫm lên nhau.
|
|
92
|
+
- Đang quyết dở mà phải dừng thì cứ dừng. Quyết định nào đã ghi thì đã được lưu. Lần sau gọi lại lệnh là tiếp tục từ chỗ còn `chờ`.
|
|
@@ -41,21 +41,9 @@ Khi bạn quyết xong, bảng Tóm tắt trong `prd-refine.md` ghi số **nhậ
|
|
|
41
41
|
|
|
42
42
|
## Bạn quyết thế nào
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
> Cách làm từng bước, kèm câu gõ mẫu và mẹo: **[Cách quyết finding sau khi refine](../cach-lam/quyet-finding-refine.md)**.
|
|
45
45
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
```
|
|
49
|
-
nhận F01, F03 · bác F02 vì đã có ở UC-002 · F04 sửa thành "khoá 30 phút" · hoãn F05
|
|
50
|
-
```
|
|
51
|
-
|
|
52
|
-
Hoặc **quyết theo nhóm**, áp cho major và minor:
|
|
53
|
-
|
|
54
|
-
```
|
|
55
|
-
nhận tất cả minor · nhận hết UC-003 trừ F12 · bác F20–F24 vì đã có ở epic khác
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
Quyết theo nhóm thì AI **liệt kê lại đúng các mã** sẽ bị áp rồi hỏi bạn xác nhận. **Critical luôn phải quyết từng mã.**
|
|
46
|
+
AI trình bảng tóm tắt, **sắp theo mức độ** (critical → major → minor), rồi **theo lăng kính** (QA → DEV → SA → Phạm vi). Mã F đánh theo đúng thứ tự đó, nên F01 luôn là finding nặng nhất. Chi tiết từng finding nằm trong `review/prd-refine.md`. Gọi lại lệnh khi lượt trước đang chờ quyết thì lệnh **không rà lại**, chỉ trình lại bảng tóm tắt.
|
|
59
47
|
|
|
60
48
|
| Quyết định | Kết quả |
|
|
61
49
|
|---|---|
|
|
@@ -64,7 +52,8 @@ Quyết theo nhóm thì AI **liệt kê lại đúng các mã** sẽ bị áp r
|
|
|
64
52
|
| `bác: <lý do>` | Không sửa. Lần rà sau **không nêu lại** điểm này |
|
|
65
53
|
| `hoãn` | Không sửa lúc này. Được ghi vào "Câu hỏi còn mở" của PRD để bước QC xử lý |
|
|
66
54
|
|
|
67
|
-
|
|
55
|
+
- Quyết được **theo mã** hoặc **theo nhóm** (chỉ cho major và minor). **Critical phải quyết từng mã.**
|
|
56
|
+
- Bác hay hoãn đều tính là **đã quyết**. Mọi critical và major đã có quyết định là đi tiếp được. Minor còn `chờ` không chặn.
|
|
68
57
|
|
|
69
58
|
## Vì sao chỉ có 2 lượt
|
|
70
59
|
|
|
@@ -20,6 +20,12 @@
|
|
|
20
20
|
| 4 | `/prd EP-xx refine` | Quyết từng finding: nhận, sửa, bác hay hoãn. Tối đa 2 lượt. Xong thì duyệt PRD | [/prd refine](../lenh/prd-refine.md) |
|
|
21
21
|
| 5 | `/prd EP-xx change …` | Khi yêu cầu đổi. Duyệt kế hoạch thay đổi, refine lại phần vừa đổi, rồi duyệt lại PRD | [/prd](../lenh/prd.md#đổi-prd-prd-ep-01-change-mô-tả) |
|
|
22
22
|
|
|
23
|
+
## Cách làm thường gặp
|
|
24
|
+
|
|
25
|
+
| Việc | Hướng dẫn |
|
|
26
|
+
|---|---|
|
|
27
|
+
| Quyết vài chục finding sau khi refine PRD | [Cách quyết finding sau khi refine](../cach-lam/quyet-finding-refine.md) |
|
|
28
|
+
|
|
23
29
|
## Mẹo
|
|
24
30
|
|
|
25
31
|
- **Có tài liệu thì dán vào ngay lượt đầu.** AI trích trước, bạn chỉ xác nhận. Nhưng AI vẫn sẽ hỏi những gì tài liệu **chưa nói**.
|
package/package.json
CHANGED
package/ref/prd/refine.md
CHANGED
|
@@ -11,8 +11,11 @@ Chạy `SE upgrade D` trước. Lệnh này bổ sung trường và mục còn t
|
|
|
11
11
|
|
|
12
12
|
Đọc frontmatter của `D` (`version`, `refined`) và của `R` (nếu có: `prd_version`, `round`).
|
|
13
13
|
|
|
14
|
+
Xét **từ trên xuống**, gặp dòng nào khớp trước thì theo dòng đó.
|
|
15
|
+
|
|
14
16
|
| Tình huống | Lượt | Phạm vi |
|
|
15
17
|
|---|---|---|
|
|
18
|
+
| `R` có `status: pending` (đã rà xong, **đang chờ PO quyết**) | **Không rà lại.** Sang thẳng **Bước C** để trình lại bảng tóm tắt từ `R`, rồi Bước D | — |
|
|
16
19
|
| `refined` = `version` | **Dừng.** Báo *"Bản v{version} đã refine xong."* Có `--full` thì chạy lượt 1 trên toàn PRD | — |
|
|
17
20
|
| Chưa có `R`, hoặc chưa từng refine | **1** | Toàn bộ PRD |
|
|
18
21
|
| `R` có `round: 1` **đã áp** bản sửa, `prd_version` < `version` | **2** | Chỉ các mục mà lượt 1 đã sửa hoặc thêm (đọc từ quyết định `nhận` / `sửa` trong `R`), cộng các mục tham chiếu tới chúng |
|