@edupia-tutor/spec-driven-docs 0.14.6 → 0.14.8
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/bin/index.js +1 -1
- package/commands/debug.md +1 -1
- package/commands/define-product.md +1 -1
- package/commands/dev-gen-test.md +1 -1
- package/commands/dev-run-test.md +1 -1
- package/commands/dev-smoke-test.md +1 -1
- package/commands/fix-bug.md +1 -1
- package/commands/generate-bdd.md +74 -5
- package/commands/generate-bdd.tmpl +73 -4
- package/commands/generate-code.md +19 -2
- package/commands/generate-code.tmpl +18 -1
- package/commands/generate-design-spec.md +50 -6
- package/commands/generate-design-spec.tmpl +49 -5
- package/commands/generate-prd.md +9 -5
- package/commands/generate-prd.tmpl +1 -0
- package/commands/generate-spec-manifest.md +1 -1
- package/commands/generate-tech-docs.md +2 -1
- package/commands/generate-tech-docs.tmpl +1 -0
- package/commands/learn.md +1 -1
- package/commands/map-testids.md +1 -1
- package/commands/propose-scenario.md +7 -3
- package/commands/propose-scenario.tmpl +6 -2
- package/commands/qc-analyze.md +15 -1
- package/commands/qc-analyze.tmpl +14 -0
- package/commands/qc-design-test.md +1 -1
- package/commands/qc-plan.md +1 -1
- package/commands/qc-report.md +1 -1
- package/commands/qc-review.md +1 -1
- package/commands/qc-run-test.md +1 -1
- package/commands/refine-prd.md +33 -13
- package/commands/refine-prd.tmpl +32 -12
- package/commands/report-bug.md +1 -1
- package/commands/review-code.md +1 -1
- package/commands/review-context.md +49 -27
- package/commands/review-context.tmpl +48 -26
- package/commands/review-tech-docs.md +1 -1
- package/commands/setup-ai-first.md +10 -10
- package/commands/setup-ai-first.tmpl +9 -9
- package/commands/sync.md +1 -1
- package/commands/update-framework.md +1 -1
- package/commands/validate-traces.md +2 -1
- package/commands/validate-traces.tmpl +1 -0
- package/core/FRAMEWORK_VERSION +1 -1
- package/core/commands/debug.md +1 -1
- package/core/commands/define-product.md +1 -1
- package/core/commands/dev-gen-test.md +1 -1
- package/core/commands/dev-run-test.md +1 -1
- package/core/commands/dev-smoke-test.md +1 -1
- package/core/commands/fix-bug.md +1 -1
- package/core/commands/generate-bdd.md +74 -5
- package/core/commands/generate-code.md +19 -2
- package/core/commands/generate-design-spec.md +50 -6
- package/core/commands/generate-prd.md +9 -5
- package/core/commands/generate-spec-manifest.md +1 -1
- package/core/commands/generate-tech-docs.md +2 -1
- package/core/commands/learn.md +1 -1
- package/core/commands/map-testids.md +1 -1
- package/core/commands/propose-scenario.md +7 -3
- package/core/commands/qc-analyze.md +15 -1
- package/core/commands/qc-design-test.md +1 -1
- package/core/commands/qc-plan.md +1 -1
- package/core/commands/qc-report.md +1 -1
- package/core/commands/qc-review.md +1 -1
- package/core/commands/qc-run-test.md +1 -1
- package/core/commands/refine-prd.md +33 -13
- package/core/commands/report-bug.md +1 -1
- package/core/commands/review-code.md +1 -1
- package/core/commands/review-context.md +49 -27
- package/core/commands/review-tech-docs.md +1 -1
- package/core/commands/setup-ai-first.md +10 -10
- package/core/commands/sync.md +1 -1
- package/core/commands/update-framework.md +1 -1
- package/core/commands/validate-traces.md +2 -1
- package/core/skills/code/SKILL.md +7 -759
- package/core/skills/debug/SKILL.md +9 -859
- package/core/skills/design-spec/SKILL.md +3 -582
- package/core/skills/prd/SKILL.md +5 -464
- package/core/skills/setup-ai-first/SKILL.md +3 -208
- package/core/skills/spec/SKILL.md +7 -450
- package/core/skills/test/SKILL.md +10 -1290
- package/core/steps/report-footer.md +1 -1
- package/core/steps/spawn-agent.md +12 -7
- package/core/templates/prd.template.md +7 -4
- package/core/templates/project-context.yaml +2 -2
- package/docs/01-getting-started/core-concepts.md +3 -3
- package/docs/01-getting-started/quickstart.md +4 -3
- package/docs/02-guides/bdd-input-checklist.md +68 -0
- package/docs/02-guides/developer/README.md +3 -0
- package/docs/02-guides/developer/bdd-and-trace.md +4 -3
- package/docs/02-guides/developer/commands.md +3 -3
- package/docs/02-guides/developer/pr-checklist.md +1 -0
- package/docs/02-guides/developer/scenarios.md +2 -2
- package/docs/02-guides/developer/workflow.md +3 -3
- package/docs/02-guides/prd-input-checklist.md +94 -0
- package/docs/02-guides/product-owner/README.md +5 -3
- package/docs/02-guides/product-owner/commands.md +1 -1
- package/docs/02-guides/product-owner/handoff-checklist.md +5 -5
- package/docs/02-guides/product-owner/scenarios.md +19 -17
- package/docs/02-guides/tech-docs-input-checklist.md +82 -0
- package/docs/02-guides/tester/README.md +1 -1
- package/docs/02-guides/tester/bug-reporting.md +1 -1
- package/docs/02-guides/tester/qc-automation.md +1 -1
- package/docs/03-concepts/README.md +1 -0
- package/docs/03-concepts/mechanisms-explained.md +34 -0
- package/docs/03-concepts/pipeline.md +12 -9
- package/docs/03-concepts/traceability.md +7 -4
- package/docs/04-operations/bug-flow.md +2 -0
- package/docs/04-operations/sync-and-update.md +3 -3
- package/docs/05-reference/command-cheatsheet.md +9 -9
- package/docs/05-reference/commands.md +12 -10
- package/docs/05-reference/trace-schema.md +2 -1
- package/package.json +1 -1
- package/skills/code/SKILL.md +7 -759
- package/skills/code/SKILL.tmpl +7 -164
- package/skills/debug/SKILL.md +9 -859
- package/skills/debug/SKILL.tmpl +9 -252
- package/skills/design-spec/SKILL.md +3 -582
- package/skills/design-spec/SKILL.tmpl +3 -87
- package/skills/prd/SKILL.md +5 -464
- package/skills/prd/SKILL.tmpl +5 -63
- package/skills/setup-ai-first/SKILL.md +3 -208
- package/skills/setup-ai-first/SKILL.tmpl +3 -108
- package/skills/spec/SKILL.md +7 -450
- package/skills/spec/SKILL.tmpl +7 -162
- package/skills/test/SKILL.md +10 -1290
- package/skills/test/SKILL.tmpl +10 -288
- package/steps/report-footer.md +1 -1
- package/steps/spawn-agent.md +12 -7
- package/templates/prd.template.md +7 -4
- package/templates/project-context.yaml +2 -2
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
[📚 Docs](../README.md) › [Guides](README.md) › Checklist Input Tech-Docs (BE)
|
|
2
|
+
|
|
3
|
+
# Checklist Input Tech-Docs (BE) — Để API Contract Chuẩn Ngay Lần Đầu
|
|
4
|
+
|
|
5
|
+
> Áp cho `/generate-tech-docs` trên một file **System BDD** (`@trace.platform: system`) — sinh ra **BE tech-doc = API contract**. Chuẩn bị đúng đầu vào để FE không phải chờ sửa lại.
|
|
6
|
+
|
|
7
|
+
## Trước tiên: BDD khác tech-doc thế nào?
|
|
8
|
+
|
|
9
|
+
Hai cái trả lời **hai câu hỏi khác nhau** về cùng một tính năng BE:
|
|
10
|
+
|
|
11
|
+
| | **System BDD (BE)** | **BE Tech-docs (API contract)** |
|
|
12
|
+
|---|---|---|
|
|
13
|
+
| Trả lời | **CÁI GÌ** — hệ thống phải làm gì (hành vi nghiệp vụ) | **LÀM SAO** — hiện thực kỹ thuật |
|
|
14
|
+
| Viết bằng | sự kiện nghiệp vụ: "hệ thống nhận X → trả về Y → báo lỗi Z" | endpoint/method/path, **shape** request/response, HTTP status, data model, DB, error code |
|
|
15
|
+
| Chi tiết kỹ thuật? | **KHÔNG** | **CÓ** — nơi *duy nhất* chứa mấy thứ đó |
|
|
16
|
+
| Ai làm | PO (spec repo) | Dev (`/generate-tech-docs`) |
|
|
17
|
+
| Sinh từ đâu | từ PRD | **từ chính System BDD** |
|
|
18
|
+
| Dùng để | kiểm chứng hành vi (QC test trace về đây) | BE code theo; **FE đọc để gọi API thật** |
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
PRD → System BDD (CÁI GÌ) → /generate-tech-docs → BE tech-doc (LÀM SAO) → code
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
**Ví von:** System BDD = *"đủ tiền → máy nhả nước; thiếu tiền → báo lỗi, trả tiền lại"* (hành vi). Tech-doc = *bản vẽ kỹ thuật của máy*: `POST /vend` nhận `{coin}` trả `{drink_id, change}`, thiếu tiền trả `402`.
|
|
25
|
+
|
|
26
|
+
**Vì sao tách ra?** BDD không vỡ khi đổi chi tiết kỹ thuật (test ổn định); tech-doc là **contract liên đội** (FE phụ thuộc → cần sign-off T7); brownfield thì contract đã nằm sẵn trong PRD, tech-doc chỉ chép lại.
|
|
27
|
+
|
|
28
|
+
> Một câu: **BDD nói "đúng thì ra cái gì", tech-doc nói "gọi thế nào để ra cái đó".**
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## 7 câu tự hỏi trước khi `/generate-tech-docs` (BE)
|
|
33
|
+
|
|
34
|
+
**1. System BDD đã duyệt + sạch lỗi chưa?**
|
|
35
|
+
BDD phải `@trace.status: approved` và **không còn finding critical** từ `/review-context`. Lệnh sẽ **dừng (HALT)** nếu BDD còn lỗi critical chưa xử lý.
|
|
36
|
+
→ *Tech-doc dẫn xuất từ BDD; BDD lỗi thì contract lỗi theo.*
|
|
37
|
+
|
|
38
|
+
**2. BDD đã mô tả đủ hành vi chưa?**
|
|
39
|
+
Mỗi scenario cần rõ: **kết quả trả về**, **các side-effect** (hệ thống lưu/đổi gì), và **tín hiệu lỗi** ("báo lỗi gì khi nào").
|
|
40
|
+
→ *Đây là nguyên liệu để suy ra endpoint, mã lỗi, và data model. BDD thiếu = contract thiếu.*
|
|
41
|
+
|
|
42
|
+
**3. API "đã có sẵn"? → bảng contract trong PRD phải đầy đủ**
|
|
43
|
+
Nếu là brownfield (`API Source: existing`), `/generate-tech-docs` chỉ **chép lại** contract từ PRD (reverse-document). Bảng "Existing API Contract" còn dấu "⛔ còn thiếu" → tech-doc sẽ hổng.
|
|
44
|
+
→ *Brownfield: đảm bảo contract đã trích đầy đủ từ nguồn thật.*
|
|
45
|
+
|
|
46
|
+
**4. Danh sách thực thể / dữ liệu đã chuẩn chưa?**
|
|
47
|
+
API contract cần **data model**: bảng/trường/kiểu/enum. Đảm bảo `core-entities.md` cập nhật đúng cho tính năng.
|
|
48
|
+
→ *Sai tên một trường ở đây là lệch cả request/response lẫn DB.*
|
|
49
|
+
|
|
50
|
+
**5. CLAUDE.md đã có kiến trúc + coding standard chưa?**
|
|
51
|
+
Tech-doc mô tả thiết kế theo **layer/kiến trúc của project**. Lệnh đọc `CLAUDE.md` (§architecture, §coding standards) để bám đúng quy ước.
|
|
52
|
+
→ *Thiếu → tech-doc tả kiến trúc chung chung, code sau lệch.*
|
|
53
|
+
|
|
54
|
+
**6. Đúng stack module cho service chưa?**
|
|
55
|
+
Service phải trỏ đúng module (java-spring / golang / dotnet / …) để lệnh lấy **mẫu layer** phù hợp.
|
|
56
|
+
→ *Sai module = mẫu thiết kế sai stack.*
|
|
57
|
+
|
|
58
|
+
**7. Phụ thuộc liên service đã ghi chưa?**
|
|
59
|
+
Nếu BE gọi/được gọi bởi service khác (§1c của PRD) → contract phải phản ánh các điểm tích hợp đó.
|
|
60
|
+
→ *Bỏ sót = contract thiếu chỗ nối, FE/đội khác tích hợp hụt.*
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Checklist nhanh — trước khi `/generate-tech-docs` (system/BE)
|
|
65
|
+
|
|
66
|
+
- [ ] System BDD `@trace.status: approved` + **0 finding critical** (không lệnh sẽ HALT)
|
|
67
|
+
- [ ] Mỗi scenario rõ: kết quả + side-effects + tín hiệu lỗi
|
|
68
|
+
- [ ] Brownfield → bảng Existing API Contract trong PRD **đầy đủ** (hết ⛔)
|
|
69
|
+
- [ ] `core-entities.md` cập nhật (data model: thực thể/trường/kiểu/enum)
|
|
70
|
+
- [ ] `CLAUDE.md` có kiến trúc layer + coding standards
|
|
71
|
+
- [ ] Service trỏ đúng stack module
|
|
72
|
+
- [ ] Phụ thuộc liên service (§1c PRD) ghi rõ nếu có
|
|
73
|
+
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
## Sau khi sinh tech-doc
|
|
77
|
+
|
|
78
|
+
`/review-tech-docs` chạy các check T1–T7. **T7 = cổng sign-off liên đội** (cross-team): greenfield/partner cần FE/App/SA confirm contract trước khi `@trace.status: approved`; brownfield (`existing`) thì skip T7 vì contract đã chốt sẵn. Contract chỉ thành "BE contract" mà FE chờ **sau khi approved**.
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
← [Guides](README.md) · Liên quan: [Checklist Input BDD (System/BE)](bdd-input-checklist.md) · [Checklist Input PRD](prd-input-checklist.md)
|
|
@@ -57,7 +57,7 @@ Design Spec Code Viết test cases · chạy /qc-*
|
|
|
57
57
|
|
|
58
58
|
| Command | Mục đích | Khi nào dùng |
|
|
59
59
|
|---|---|---|
|
|
60
|
-
| `/qc-analyze` | Phân tích spec chain (PRD + BDD + Tech Docs), xác định scope test | Bước 1, sau khi BDD
|
|
60
|
+
| `/qc-analyze` | Phân tích spec chain (PRD + BDD + Tech Docs), xác định scope test | Bước 1, sau khi BDD `@trace.status: approved` (cảnh báo mềm nếu chưa) |
|
|
61
61
|
| `/qc-plan` | Lập test plan: liệt kê scenarios, layer, ưu tiên | Bước 2 |
|
|
62
62
|
| `/qc-design-test` | Thiết kế test case chi tiết (Page Object, data, assertions) | Bước 3 |
|
|
63
63
|
| `/qc-review` | Review test design trước khi code automation | Bước 4 |
|
|
@@ -29,7 +29,7 @@ Nếu `/report-bug` báo *coverage gap* (behavior đúng nhưng chưa có scenar
|
|
|
29
29
|
/propose-scenario FT-001 login với email có khoảng trắng ở cuối vẫn phải thành công
|
|
30
30
|
```
|
|
31
31
|
|
|
32
|
-
- Nếu behavior **đã nằm trong một AC của PRD** → lệnh draft Gherkin (tag `@proposed @from-test`), ghi vào `{spec_source}/feedback/bdd-proposals/` → commit + push. PO/Dev review
|
|
32
|
+
- Nếu behavior **đã nằm trong một AC của PRD** → lệnh draft Gherkin (tag `@proposed @from-test`, mang `Status: proposed`), ghi vào `{spec_source}/feedback/bdd-proposals/` → commit + push. PO/Dev review → đặt `Status: accepted` → `/generate-bdd` tự chèn vào `.feature` rồi lưu trữ (`incorporated`).
|
|
33
33
|
- Nếu behavior **chưa có trong PRD** → lệnh **ghi** một *PRD change request* (`State: Open`) vào `{spec_source}/feedback/prd-change-requests/{UC-ID}-{slug}.md` → commit + push (KHÔNG chỉ in ra). PO thấy nó khi `/sync`, thêm/sửa AC rồi `/generate-bdd` lại.
|
|
34
34
|
|
|
35
35
|
> Tester không tự ghi vào BDD — chỉ đề xuất. Giữ đúng ownership.
|
|
@@ -79,7 +79,7 @@ functional / integration / e2e / non-functional / exploratory.
|
|
|
79
79
|
|
|
80
80
|
## Entry Point
|
|
81
81
|
|
|
82
|
-
Pipeline QC bắt đầu
|
|
82
|
+
Pipeline QC bắt đầu khi BDD của một UC đã duyệt — `# @trace.status: approved` (sau `/review-context (BDD)` sạch critical + người duyệt đặt). `/qc-analyze` đọc field này và **cảnh báo mềm** nếu chưa approved:
|
|
83
83
|
|
|
84
84
|
```
|
|
85
85
|
/qc-analyze {UC-ID} → … → /qc-report {UC-ID} → /validate-traces {UC-ID}
|
|
@@ -9,6 +9,7 @@ Hiểu **cách framework được xây dựng và vận hành** — kiến trúc
|
|
|
9
9
|
- [architecture.md](architecture.md) — 6 lớp (Protection → Output), module plug-in system, build pipeline (`*.tmpl` → `*.md` → `core/`), directory map, sub-agent orchestration, hook data-protection.
|
|
10
10
|
- [pipeline.md](pipeline.md) — các phase Discovery → PRD → Design-Spec → BDD → Tech-Docs → Code → Dev self-check → QC automation → Tester feedback; review gates; và step-architecture model (gate / context-loader / spawn-agent / report-footer) đằng sau mỗi command.
|
|
11
11
|
- [traceability.md](traceability.md) — `@trace.*` tags, trace TSV, hai tín hiệu `dev_selftest` vs `qc_status`, Living Docs (canonical trong spec-module + panel mirror), và `/validate-traces`.
|
|
12
|
+
- [mechanisms-explained.md](mechanisms-explained.md) — giải thích các **cơ chế** framework bằng **ngôn ngữ dễ hiểu** + ví von đời thường (bổ sung cho các trang trên; ưu tiên trực giác).
|
|
12
13
|
|
|
13
14
|
## Đọc gì trước?
|
|
14
15
|
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
[📚 Docs](../README.md) › [Concepts](README.md) › Cơ Chế (Dễ Hiểu)
|
|
2
|
+
|
|
3
|
+
# Giải Thích Cơ Chế Framework — Ngôn Ngữ Dễ Hiểu
|
|
4
|
+
|
|
5
|
+
> Nơi gom các giải thích **cơ chế hoạt động** của framework bằng lời dễ hiểu + ví von đời thường. Bổ sung cho các trang concepts "chính quy" ([pipeline](pipeline.md), [traceability](traceability.md), [architecture](architecture.md)) — trang này ưu tiên *trực giác*, không phải đặc tả.
|
|
6
|
+
|
|
7
|
+
## Mục lục
|
|
8
|
+
|
|
9
|
+
- [1. PRD lớn → chia việc cho nhiều "thợ phụ" (orchestration / sub-agent)](#1-prd-lớn--chia-việc-cho-nhiều-thợ-phụ-orchestration--sub-agent)
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 1. PRD lớn → chia việc cho nhiều "thợ phụ" (orchestration / sub-agent)
|
|
14
|
+
|
|
15
|
+
**Cơ chế:** Khi PRD **nhỏ**, một mình AI làm hết từ đầu tới cuối. Khi PRD **lớn** (> 3 Use Case hoặc > 300 dòng), AI chuyển sang **chế độ điều phối**: session chính thành "sếp" nhẹ, **spawn mỗi Use Case một sub-agent** ("thợ phụ") có context window riêng để làm song song cho nhanh và đỡ tốn bộ nhớ.
|
|
16
|
+
|
|
17
|
+
**Ví von:** Việc nhỏ thì một người ôm trọn. Việc lớn thì **sếp chia mỗi thợ một Use Case**.
|
|
18
|
+
|
|
19
|
+
**Điểm mấu chốt — sếp làm phần chung MỘT LẦN, rồi "photo" đưa thợ:**
|
|
20
|
+
- **Sếp làm trước, một lần** (ở session chính, đọc cả PRD): kiểm tra **cổng duyệt** (PRD approved?), **nạp Design Spec** (đã duyệt + còn mới + soi nhanh) → rút ra phần màn hình + AC-UI cần phủ (gọi là `design_coverage`), và chốt **platform** (web/app/system).
|
|
21
|
+
- **Khi giao việc**, sếp **kèm sẵn cho mỗi thợ**: platform + `design_coverage` đã rút. Thợ **không** phải tự đi đọc lại design-spec, **không** phải hỏi lại "đã duyệt chưa".
|
|
22
|
+
- Mỗi thợ chỉ đọc đúng **1 Use Case** trong PRD + dùng đồ sếp đưa → sinh BDD cho UC đó.
|
|
23
|
+
|
|
24
|
+
**Vì sao thiết kế vậy:**
|
|
25
|
+
- **Rẻ:** thợ khỏi đọc lại cả design-spec (đỡ token), khỏi bắt người dùng bấm Y/N nhiều lần (cổng duyệt hỏi 1 lần ở sếp).
|
|
26
|
+
- **Không sót:** phần phủ design (Screen States loading/lỗi/trống + AC-UI) áp **cho cả PRD lớn**, không chỉ PRD nhỏ.
|
|
27
|
+
|
|
28
|
+
> **Cạm bẫy đã từng có (và cách tránh):** nếu sếp quên "photo" `design_coverage`/platform khi giao việc → thợ làm theo trí nhớ thiếu → BDD của PRD lớn **rớt mất phần design** (dù PRD nhỏ vẫn đúng). Bài học: state nào orchestrator đã phân giải mà bước sau cần → **phải nhét vào payload giao cho sub-agent**, đừng để rơi.
|
|
29
|
+
|
|
30
|
+
*Chi tiết kỹ thuật:* [pipeline › spawn-agent](pipeline.md#spawn-agentmd--sub-agent-orchestration) · [architecture › sub-agent orchestration](architecture.md#sub-agent-orchestration).
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
*Có thêm cơ chế nào được giải thích kiểu dễ hiểu → thêm một mục mới ở đây.*
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
# Pipeline
|
|
4
4
|
|
|
5
|
-
Vòng đời feature đi qua các phase, mỗi transition có
|
|
5
|
+
Vòng đời feature đi qua các phase, mỗi transition lớn có **AI review (tìm findings) + cổng duyệt do người quyết** (xem note "Cổng duyệt" bên dưới):
|
|
6
6
|
**Discovery → PRD → Design-Spec → BDD → Tech-Docs → Code → Dev self-check → QC automation → Tester feedback.** Phần sau mô tả từng phase và **step-architecture model** đằng sau mỗi command.
|
|
7
7
|
|
|
8
8
|
## Mục lục
|
|
@@ -25,7 +25,7 @@ Vòng đời feature đi qua các phase, mỗi transition có một **AI review
|
|
|
25
25
|
| **0. Setup** *(one-time)* | Tech Lead | `/setup-ai-first`, `/sync`, `/sync-figma-*` | Config files, submodules, component catalog |
|
|
26
26
|
| **1. Discovery** | PO + AI | `/define-product` | `specs/product-definition/{TICKET-ID}-{slug}.md` |
|
|
27
27
|
| **2. PRD** | AI → SA/PO review | `/generate-prd`, `/refine-prd`, `/review-context` | `specs/{domain}/{prd-slug}/{TICKET-ID}-{prd-slug}.md` |
|
|
28
|
-
| **2b. Design Spec** *(FE/App only)* | AI → Designer/PO sign-off | `/generate-design-spec` | `specs/{domain}/{prd-slug}/design-spec/{TICKET-ID}-design-spec-{platform}.md` |
|
|
28
|
+
| **2b. Design Spec** *(FE/App only)* | AI → Designer/PO sign-off | `/generate-design-spec` | `specs/{domain}/{prd-slug}/design-spec/{TICKET-ID}-design-spec-{platform}-{slug}.md` |
|
|
29
29
|
| **3. BDD Spec** | AI → SA/Dev review | `/generate-bdd`, `/review-context` | `specs/{domain}/{prd-slug}/bdd/{UC-ID}.feature` |
|
|
30
30
|
| **4. Tech Design** *(platform-aware)* | AI → SA/Lead review | `/generate-tech-docs`, `/review-tech-docs` | BE: `specs/{domain}/{prd-slug}/tech-docs/{UC-ID}-tech-design.md` (API contract) · FE/App: `{UC-ID}-tech-design-{platform}.md` (client design — **gated** trên System BDD + BE contract) |
|
|
31
31
|
| **5. Code** | AI → Dev review | `/generate-code` *(FE: `--phase=ui`/`--phase=integration`)*, `/review-code` | `src/...` |
|
|
@@ -37,6 +37,8 @@ Vòng đời feature đi qua các phase, mỗi transition có một **AI review
|
|
|
37
37
|
|
|
38
38
|
> **PRD là platform-agnostic (Option C):** Một PRD phục vụ mọi platform — chỉ mô tả business outcome, không UI/API. FE/App: PRD → Design Spec (2b) → BDD. BE: PRD → BDD (skip 2b). Thêm platform sau không cần đổi PRD.
|
|
39
39
|
|
|
40
|
+
> **Cổng duyệt (human sign-off):** mỗi transition lớn có một **cổng do người quyết** — review (AI tìm findings) → người đặt trạng thái `approved` → bước sau. Ba cổng: **PRD** `Status: approved` (PO) · **Design Spec** `Status: approved` (PO+Designer) · **BDD** `@trace.status: approved` (Dev-lead). **Sửa nội dung sau khi duyệt → tự reset về `draft`** (PRD/Design/BDD đều vậy). Các lệnh tiêu thụ (`/generate-bdd`, `/generate-design-spec`, `/generate-tech-docs`, `/generate-code`, `/qc-analyze`) **cảnh báo mềm** nếu nguồn chưa `approved` (cho phép prototype, KHÔNG chặn cứng). Mỗi artifact còn ghi version nguồn để phát hiện **drift**: PRD `applied_to_version` (findings), Design Spec `Built from PRD`, BDD/tech-doc Version Check.
|
|
41
|
+
|
|
40
42
|
---
|
|
41
43
|
|
|
42
44
|
## Workflow chi tiết
|
|
@@ -55,22 +57,23 @@ Phase 2: PRD
|
|
|
55
57
|
/review-context {prd} ────→ .agent/review/{prd-slug}-review-context-findings.yaml
|
|
56
58
|
--fix (auto-fixable) | Review Board → --resume (apply + bump)
|
|
57
59
|
Checks: banned terms (P1) · ambiguity AC/BR (P2) · conflicts (P3) · completeness (P4)
|
|
58
|
-
✅
|
|
60
|
+
✅ 0 critical → PO đặt Status: approved (Metadata) → Phase 2b/3 · ❌ NEEDS_FIX → fix + re-run
|
|
59
61
|
|
|
60
62
|
Phase 2b/3: Design Spec & BDD
|
|
61
|
-
/generate-design-spec ────→ specs/{domain}/{prd-slug}/design-spec/{TICKET-ID}-design-spec-{platform}.md
|
|
63
|
+
/generate-design-spec ────→ specs/{domain}/{prd-slug}/design-spec/{TICKET-ID}-design-spec-{platform}-{slug}.md
|
|
62
64
|
(FE/App only — PO supplies node-level Figma link ?node-id= per screen;
|
|
63
|
-
AI fetches each frame via Figma MCP. Screen with no readable link → ❌ Missing;
|
|
64
|
-
|
|
65
|
-
[Designer review + PO sign-off]
|
|
65
|
+
AI fetches each frame via Figma MCP. Screen with no readable link → ❌ Missing → Status giữ draft;
|
|
66
|
+
ghi "Built from PRD: vX" để phát hiện lỗi thời; generate-bdd cảnh báo mềm nếu design-spec chưa approved)
|
|
67
|
+
[Designer review + PO sign-off → Status: approved]
|
|
66
68
|
/generate-bdd ────────────→ specs/{domain}/{prd-slug}/bdd/{UC-ID}.feature
|
|
67
69
|
THỨ TỰ OUTSIDE-IN (khi có client): web → app → system
|
|
68
70
|
System BDD được TỔNG HỢP từ web+app BDD (client-facing trước → BE/system suy ra để phục vụ)
|
|
69
71
|
(project chỉ-BE, không web/app: system gen thẳng từ PRD)
|
|
70
72
|
(apply platform vocabulary: web "clicks" / mobile "taps" / backend "submits a request")
|
|
73
|
+
FE/App: đọc AC-UI + Screen States từ design-spec để phủ scenario (gate: approved + Built-from-PRD còn mới + sanity)
|
|
71
74
|
/review-context {feature} → .agent/review/{uc-id}-review-bdd-findings.yaml
|
|
72
75
|
Checks: PRD coverage (mỗi AC + BR bullet → ≥1 scenario) · Gherkin R1–R10 · compliance C1–C5
|
|
73
|
-
✅
|
|
76
|
+
✅ 0 critical → đặt @trace.status: approved (.feature) → Phase 4
|
|
74
77
|
|
|
75
78
|
Phase 4: Tech Design (platform-aware — đọc @trace.platform)
|
|
76
79
|
BE (system):
|
|
@@ -124,7 +127,7 @@ Cross-cutting (any role, anytime)
|
|
|
124
127
|
|
|
125
128
|
## QC automation pipeline (Phase 5b)
|
|
126
129
|
|
|
127
|
-
Bộ test QC **chính thức** — native pipeline, chạy như một **branch sau khi BDD
|
|
130
|
+
Bộ test QC **chính thức** — native pipeline, chạy như một **branch sau khi BDD `@trace.status: approved`** (review-context BDD sạch + người duyệt; `/qc-analyze` cảnh báo mềm nếu chưa), song song / sau khi dev `/generate-code`. 6 stage tuần tự, port từ agent của team QC (QC repo nay chỉ còn reference):
|
|
128
131
|
|
|
129
132
|
```
|
|
130
133
|
BDD approved (specs/{domain}/{prd-slug}/bdd/*.feature)
|
|
@@ -18,11 +18,11 @@ Mỗi artifact link tới mọi artifact khác qua `@trace.*` tags, và trạng
|
|
|
18
18
|
|
|
19
19
|
## Artifact chain & @trace tags
|
|
20
20
|
|
|
21
|
-
Mỗi artifact
|
|
21
|
+
Mỗi artifact liên kết về artifact trước nó bằng metadata (PRD: bảng **Metadata**; BDD / tech-doc / code / test: `@trace.*` tags):
|
|
22
22
|
|
|
23
23
|
```
|
|
24
24
|
product-definition.md
|
|
25
|
-
└─► PRD.md (
|
|
25
|
+
└─► PRD.md (Domain, Status, Service/Module — đều trong bảng Metadata)
|
|
26
26
|
└─► specs/{domain}/{prd-slug}/bdd/{web|app|system}/{UC-ID}.feature (@trace.prd_version, @trace.module)
|
|
27
27
|
└─► specs/{domain}/{prd-slug}/tech-docs/{UC-ID}-tech-design*.md (@trace.bdd_version)
|
|
28
28
|
└─► src/ code — service submodule (@trace.implements)
|
|
@@ -34,8 +34,10 @@ product-definition.md
|
|
|
34
34
|
|
|
35
35
|
| Field | Vị trí | Ý nghĩa |
|
|
36
36
|
|-------|--------|---------|
|
|
37
|
-
|
|
|
38
|
-
|
|
|
37
|
+
| `Domain` | bảng Metadata PRD | Domain của feature (auth, payment, …) — route vào đúng service submodule |
|
|
38
|
+
| `Status` | bảng Metadata PRD | `draft` / `approved` — dev team chỉ code khi `approved` |
|
|
39
|
+
| `@trace.status` | BDD `.feature` header | `draft` / `approved` — người đặt `approved` sau khi review-context BDD sạch; mirror vào `uc_status` |
|
|
40
|
+
| `uc_status` | trace TSV (mirror) | gương của BDD `@trace.status` — `/validate-traces` đồng bộ → dashboard `approved_ucs` |
|
|
39
41
|
| `@trace.service` / `@trace.module` | BDD / Tech Doc header | Service + module sẽ implement |
|
|
40
42
|
| `@trace.prd_version` / `@trace.bdd_version` | BDD / code / test | Version của spec mà artifact được sinh từ — base cho drift detection |
|
|
41
43
|
| `@trace.implements` | Code comment | Scenario mà code này implement: `={UC-ID}-SC{N}` |
|
|
@@ -106,6 +108,7 @@ Living Docs (VS Code panel) đọc trace TSV và hiển thị traceability healt
|
|
|
106
108
|
- Drill down: PRD → UC → per-scenario table (Spec ver, Gen ver, Code, Tests, **Dev Self-Check**, **QC Status**, **Waiting on**, Status)
|
|
107
109
|
- **Waiting on** (cột `qc_owner` + `qc_blocked_by`): cho PO/PM thấy case chưa pass đang **chờ dev** (product-gap → `BUG-{id}`) hay **chờ PO** confirm/clarify (spec gap → `GAP-{id}`). Aggregates `waiting_dev` / `waiting_po` ở header dashboard.
|
|
108
110
|
- Status badges: ✅ OK · ⚠️ DRIFT · 🔴 GAP · — UNTRACKED · filter theo domain/PRD status/doc status · search theo UC/SC ID.
|
|
111
|
+
- Số **UC approved** (`approved_ucs`) trên dashboard = số UC có BDD `@trace.status: approved`, đồng bộ từ `.feature` qua `/validate-traces` (xem `uc_status` ở bảng trace field trên).
|
|
109
112
|
|
|
110
113
|
**Ba nơi chứa trace data — phân biệt authoritative vs mirror:**
|
|
111
114
|
|
|
@@ -56,6 +56,8 @@ Tester đọc spec chain **PRD → BDD → Code** để xác định layer của
|
|
|
56
56
|
| Yêu cầu thay đổi | cũ | cũ | **PRD change** | PO → Dev | Tester |
|
|
57
57
|
| ✅ rõ ràng | ✅ đúng | ❌ UI sai | **Design Spec bug** | PO/Designer → Dev | Tester |
|
|
58
58
|
|
|
59
|
+
> **Sửa PRD/BDD/Design Spec → phải duyệt lại:** mọi case mà PO sửa PRD (Case 3/4), Dev sửa BDD (Case 2), hoặc PO/Designer sửa Design Spec (Case 5) → artifact đó **tự về `draft`** (PRD/Design `Status` ở Metadata; BDD `@trace.status`). Phải `/review-context` lại + người **đặt `approved`** trước khi downstream (tech-docs / code / QC) tiêu thụ. Proposal scenario: PO/Dev đặt `Status: accepted` → `/generate-bdd` tự nạp rồi lưu trữ.
|
|
60
|
+
|
|
59
61
|
---
|
|
60
62
|
|
|
61
63
|
## 3. Case 1 — Code Bug (Code ≠ BDD)
|
|
@@ -256,7 +256,7 @@ Topology giả định cho mọi ví dụ dưới đây:
|
|
|
256
256
|
**① PO — 1 tầng (spec repo)**
|
|
257
257
|
```bash
|
|
258
258
|
cd my-project-specs && git pull
|
|
259
|
-
# /generate-prd · /generate-design-spec · /generate-bdd (web/app/system) · set
|
|
259
|
+
# /generate-prd · /generate-design-spec · /generate-bdd (web/app/system) · set Status: approved (bảng Metadata)
|
|
260
260
|
git add specs/payment/checkout/{TICKET-ID}-checkout.md \
|
|
261
261
|
specs/payment/checkout/design-spec/FT-042-checkout-design.md \
|
|
262
262
|
specs/payment/checkout/bdd/system/FT-042-UC1-checkout-system.feature \
|
|
@@ -400,7 +400,7 @@ git pull
|
|
|
400
400
|
/refine-prd {prd-file} # review 4 lens: QA/DEV/SA/PO
|
|
401
401
|
/review-context {prd-file} # chất lượng + P0 check
|
|
402
402
|
/review-context --fix {prd-file} # auto-fix vấn đề nhỏ
|
|
403
|
-
# → update
|
|
403
|
+
# → update Status: approved (bảng Metadata) khi PRD sẵn sàng
|
|
404
404
|
/generate-design-spec {prd-file} # FE/App
|
|
405
405
|
/generate-bdd {prd-file} # outside-in: web → app → system (System BDD tổng hợp từ web+app)
|
|
406
406
|
|
|
@@ -417,7 +417,7 @@ cd my-project-web
|
|
|
417
417
|
git add my-project-specs && git commit -m "chore: sync specs" && git push
|
|
418
418
|
|
|
419
419
|
/review-context my-project-specs/specs/{domain}/{prd-slug}/{TICKET-ID}-{prd-slug}.md
|
|
420
|
-
# → P0:
|
|
420
|
+
# → P0: Domain (bảng Metadata) khớp services config? Status: approved?
|
|
421
421
|
# Đọc Web BDD do PO generate (KHÔNG tự generate BDD):
|
|
422
422
|
# my-project-specs/specs/{domain}/{prd-slug}/bdd/web/{TICKET-ID}-UC*.feature
|
|
423
423
|
|
|
@@ -22,10 +22,10 @@ flowchart LR
|
|
|
22
22
|
A["/define-product<br/><b>PO</b>"] --> B["/generate-prd<br/><b>PO</b>"]
|
|
23
23
|
B --> C["/refine-prd<br/><b>PO</b> + Board"]
|
|
24
24
|
C --> D["/review-context (PRD)<br/><b>PO</b> · cổng chất lượng"]
|
|
25
|
-
D
|
|
25
|
+
D -->|"PO đặt Status: approved"| E["/generate-design-spec<br/><b>PO</b> (chỉ FE/App)"]
|
|
26
26
|
E --> F["/generate-bdd<br/><b>PO</b> · web→app→system"]
|
|
27
27
|
F --> G["/review-context (BDD)<br/><b>SA/Dev</b>"]
|
|
28
|
-
G
|
|
28
|
+
G -->|"đặt @trace.status: approved"| H["/generate-tech-docs<br/><b>Dev</b> · BE trước, FE sau"]
|
|
29
29
|
H --> I["/review-tech-docs<br/><b>Dev</b> + Board"]
|
|
30
30
|
I --> J["/generate-code<br/><b>Dev</b>"]
|
|
31
31
|
J --> K["/review-code<br/><b>Dev</b> · 4 lens"]
|
|
@@ -41,11 +41,11 @@ flowchart LR
|
|
|
41
41
|
|
|
42
42
|
```
|
|
43
43
|
PO ───────────────────────────────────────────────────────────────────────────
|
|
44
|
-
/define-product → /generate-prd → /refine-prd → /review-context(PRD)
|
|
44
|
+
/define-product → /generate-prd → /refine-prd → /review-context(PRD) → PO đặt Status: approved
|
|
45
45
|
→ /generate-design-spec (FE/App)
|
|
46
46
|
→ /generate-bdd (web→app→system)
|
|
47
47
|
SA/Dev ────────────────────────────────────────────────────────────────────────
|
|
48
|
-
/review-context(BDD) → /generate-tech-docs → /review-tech-docs
|
|
48
|
+
/review-context(BDD) → đặt @trace.status: approved → /generate-tech-docs → /review-tech-docs
|
|
49
49
|
→ /generate-code → /review-code → /dev-gen-test → /dev-run-test
|
|
50
50
|
QC/Tester ──────────────────────────────────────────────────────────────────────
|
|
51
51
|
/qc-analyze → /qc-plan → /qc-design-test → /qc-review → /qc-run-test → /qc-report
|
|
@@ -63,14 +63,14 @@ Có **4 lệnh review** cho **4 loại artifact khác nhau**. Đây là điểm
|
|
|
63
63
|
| Tôi muốn review… | Cách dùng (ví dụ) | Nó kiểm cái gì | Ai chạy |
|
|
64
64
|
|---|---|---|---|
|
|
65
65
|
| **PRD — nội dung & độ đầy đủ** | `/refine-prd specs/auth/login/{TICKET-ID}-login.md` | 4 lens QA·DEV·SA·PO: AC có test được? edge case? scope rõ? | PO |
|
|
66
|
-
| **PRD — chất lượng trước khi approve** | `/review-context specs/auth/login/{TICKET-ID}-login.md` | P-checks: banned term, mơ hồ, mâu thuẫn PRD khác, thiếu section, routing
|
|
66
|
+
| **PRD — chất lượng trước khi approve** | `/review-context specs/auth/login/{TICKET-ID}-login.md` | P-checks: banned term, mơ hồ, mâu thuẫn PRD khác, thiếu section, routing theo `Domain` (bảng Metadata) | PO |
|
|
67
67
|
| **BDD `.feature`** | `/review-context specs/auth/login/bdd/system/FEAT-01-UC1-login.feature` | B-checks: mỗi AC/BR → có ≥1 scenario? Gherkin R1–R10, compliance C1–C5 | SA/Dev |
|
|
68
68
|
| **Tech design** | `/review-tech-docs specs/auth/login/tech-docs/FEAT-01-UC1-tech-design.md` | T-checks: đúng layer/architecture, entity, trace BDD, cross-team API sign-off | Dev/SA |
|
|
69
|
-
| **Code** | `/review-code FEAT-01-UC1` | 4
|
|
69
|
+
| **Code** | `/review-code FEAT-01-UC1` | 4 lăng kính: Traceability · Layer Architecture · Coding Standards · Spec Compliance | Dev |
|
|
70
70
|
|
|
71
71
|
> **Vì sao PRD có 2 lệnh review?** `/refine-prd` làm **trước** (cải thiện nội dung, fan-out 4 lens). `/review-context` làm **sau** như **cổng chất lượng cuối** trước khi approve + sang BDD. Thứ tự: `generate-prd → refine-prd → review-context → approve`.
|
|
72
72
|
>
|
|
73
|
-
> **Vì sao `/review-context` dùng cho cả PRD lẫn BDD?** Nó tự nhận loại theo file: `.md`
|
|
73
|
+
> **Vì sao `/review-context` dùng cho cả PRD lẫn BDD?** Nó tự nhận loại theo file: `.md` ở gốc feature folder → PRD mode (P-checks); `.feature` → BDD mode (B-checks). Cùng một "cổng chất lượng", hai bộ tiêu chí.
|
|
74
74
|
|
|
75
75
|
---
|
|
76
76
|
|
|
@@ -82,7 +82,7 @@ Mọi lệnh review (`/refine-prd`, `/review-context`, `/review-tech-docs`) đ
|
|
|
82
82
|
① /refine-prd {file} ② Mở Review Board (extension) ③ /… --resume {file}
|
|
83
83
|
─────────────────────────── ────────────────────────────── ──────────────────────────
|
|
84
84
|
PHÂN TÍCH (read-only) → DUYỆT từng finding: → ÁP DỤNG cái đã accept
|
|
85
|
-
ghi .agent/review/ ✓Accept ✎Modify ⏸Defer ✗Reject + bump version + changelog
|
|
85
|
+
ghi .agent/review/ ✓Accept ✎Modify ⏸Defer ✗Reject + bump version + reset draft + changelog
|
|
86
86
|
{slug}-findings.yaml 💬 Giải thích (nếu khó hiểu)
|
|
87
87
|
```
|
|
88
88
|
|
|
@@ -108,7 +108,7 @@ Cùng một lệnh `/review-context` (và họ review nói chung) có **3 chế
|
|
|
108
108
|
|
|
109
109
|
## QC pipeline — 6 bước tuần tự
|
|
110
110
|
|
|
111
|
-
QC là **chuỗi 6 lệnh chạy theo thứ tự** sau khi BDD
|
|
111
|
+
QC là **chuỗi 6 lệnh chạy theo thứ tự** sau khi BDD `@trace.status: approved`. Output bước trước là input bước sau:
|
|
112
112
|
|
|
113
113
|
```
|
|
114
114
|
/qc-analyze → /qc-plan → /qc-design-test → /qc-review → /qc-run-test → /qc-report
|
|
@@ -59,17 +59,19 @@
|
|
|
59
59
|
| `/generate-prd` | `/generate-prd specs/product-definition/FEAT-01-login.md` | `specs/{domain}/{prd-slug}/{TICKET-ID}-{prd-slug}.md` | After define-product. Thêm `API Source: existing` + section "Existing API Contract" cho feature brownfield. |
|
|
60
60
|
| `/refine-prd` | `/refine-prd specs/auth/login/{TICKET-ID}-login.md` | `.agent/review/{prd-slug}-findings.yaml` | After generate-prd — fan-out 4 review lens + completeness-critic loop, mở Review Board. |
|
|
61
61
|
| `/refine-prd --resume` | `/refine-prd --resume specs/auth/login/{TICKET-ID}-login.md` | Applied findings + bumped version | Sau khi review trong Review Board (nút ⚡ Apply tự chạy lệnh này). |
|
|
62
|
-
| `/review-context` (PRD) | `/review-context specs/auth/login/{TICKET-ID}-login.md` | `.agent/review/{prd-slug}-review-context-findings.yaml` | Quality gate
|
|
62
|
+
| `/review-context` (PRD) | `/review-context specs/auth/login/{TICKET-ID}-login.md` | `.agent/review/{prd-slug}-review-context-findings.yaml` | Quality gate trước Phase 3. Checks: routing P0 (umbrella), banned terms (P1), ambiguity (P2), conflicts (P3), completeness (P4), custom (P5). 0 critical → PO đặt `Status: approved`. `--fix`/`--resume` reset Status→draft khi sửa PRD. |
|
|
63
63
|
| `/review-context --fix` | `/review-context --fix specs/auth/login/{TICKET-ID}-login.md` | Applies all auto-fixable findings immediately | Dev quick-fix, không cần Review Board. |
|
|
64
64
|
| `/review-context --resume` | `/review-context --resume specs/auth/login/{TICKET-ID}-login.md` | Applies accepted findings + bump version | PO/SA review — human quyết từng finding. |
|
|
65
65
|
|
|
66
|
+
> **Change Log gọn (rolling-window):** PRD chỉ giữ **5 version gần nhất** trong `# Change Log` (bảng phẳng 1 dòng/version); lịch sử cũ hơn được `/refine-prd` & `/review-context` tự dồn sang `changelog/{TICKET-ID}-{prd-slug}.changelog.md` (thư mục con của feature-package). Nhờ vậy PRD **không phình** theo các vòng refine, Dev/QC khỏi nạp lịch sử thừa vào context. `/generate-bdd` đọc 5 row gần để bắt drift; nếu BDD cũ hơn cửa sổ này → khuyến nghị gen lại toàn bộ (F).
|
|
67
|
+
|
|
66
68
|
---
|
|
67
69
|
|
|
68
70
|
## Phase 2b — Design Spec (FE/App)
|
|
69
71
|
|
|
70
72
|
| Command | Cách dùng (ví dụ) | Output | When to use |
|
|
71
73
|
|---------|-------------------|--------|-------------|
|
|
72
|
-
| `/generate-design-spec` | `/generate-design-spec specs/auth/login/{TICKET-ID}-login.md` | `specs/{domain}/{prd-slug}/design-spec/{TICKET-ID}-design-spec-{platform}.md` | FE/App: sau khi PRD approved, trước BDD. PO
|
|
74
|
+
| `/generate-design-spec` | `/generate-design-spec specs/auth/login/{TICKET-ID}-login.md` | `specs/{domain}/{prd-slug}/design-spec/{TICKET-ID}-design-spec-{platform}-{slug}.md` | FE/App: sau khi PRD approved (guard mềm), trước BDD. Ghi `Built from PRD: vX` (phát hiện lỗi thời); re-run có Version Check theo PRD. PO cấp **node-level Figma frame link** (`?node-id=`) cho mỗi screen; AI fetch từng frame qua Figma MCP. Screen thiếu link → ❌ Missing, Status giữ `draft`. **Self-Review Gate** tự rà trước khi ghi; `/generate-bdd` chỉ **cảnh báo mềm** nếu design-spec chưa approved. |
|
|
73
75
|
|
|
74
76
|
> BE teams bỏ qua Phase 2b — đọc PRD trực tiếp rồi `/generate-bdd`.
|
|
75
77
|
|
|
@@ -79,10 +81,10 @@
|
|
|
79
81
|
|
|
80
82
|
| Command | Cách dùng (ví dụ) | Output | When to use |
|
|
81
83
|
|---------|-------------------|--------|-------------|
|
|
82
|
-
| `/generate-bdd` | `/generate-bdd specs/auth/login/{TICKET-ID}-login.md` | `specs/{domain}/{prd-slug}/bdd/{UC-ID}.feature` (multi-service: `{prd-slug}/bdd/{service}/{UC-ID}.feature`) | After PRD approved (+ Design Spec sign-off cho FE/App). Đọc Service/Module từ PRD metadata, áp platform vocabulary, hiện SC outline chờ confirm. **Thứ tự outside-in: web → app → system**; `system` **tổng hợp từ web+app BDD** (web&app lệch contract → CHECKPOINT chọn union/platform-hint/separate-endpoints, ghi `@system.resolution:`; chỉ-BE → từ PRD). PRD lớn (>3 UC hoặc >300 dòng) → orchestration mode (1 sub-agent / UC). |
|
|
83
|
-
| `/review-context` (BDD) | `/review-context specs/auth/login/bdd/system/FEAT-01-UC1-login.feature` | `.agent/review/{uc-id}-review-bdd-findings.yaml` | Quality gate
|
|
84
|
-
| `/review-context --fix` | `/review-context --fix specs/auth/login/bdd/web/FEAT-01-UC1-login.feature` | Auto-fix terminology, metadata, coverage matrix | Dev quick-fix. |
|
|
85
|
-
| `/review-context --resume` | `/review-context --resume specs/auth/login/bdd/system/FEAT-01-UC1-login.feature` | Applies accepted findings + bump bdd_version | SA review. |
|
|
84
|
+
| `/generate-bdd` | `/generate-bdd specs/auth/login/{TICKET-ID}-login.md` | `specs/{domain}/{prd-slug}/bdd/{UC-ID}.feature` (multi-service: `{prd-slug}/bdd/{service}/{UC-ID}.feature`) | After PRD approved (+ Design Spec sign-off cho FE/App). Đọc Service/Module từ PRD metadata, áp platform vocabulary, hiện SC outline chờ confirm. **Thứ tự outside-in: web → app → system**; `system` **tổng hợp từ web+app BDD** (web&app lệch contract → CHECKPOINT chọn union/platform-hint/separate-endpoints, ghi `@system.resolution:`; chỉ-BE → từ PRD). PRD lớn (>3 UC hoặc >300 dòng) → orchestration mode (1 sub-agent / UC). FE/App: nuốt AC-UI + Screen States từ design-spec (gate approved+fresh+sanity). Proposal tester: chỉ nạp `Status: accepted` rồi lưu trữ. |
|
|
85
|
+
| `/review-context` (BDD) | `/review-context specs/auth/login/bdd/system/FEAT-01-UC1-login.feature` | `.agent/review/{uc-id}-review-bdd-findings.yaml` | Quality gate trước Phase 4. Checks: PRD coverage (mỗi AC + BR → ≥1 SC), Gherkin R1–R10, compliance C1–C5. 0 critical → đặt `@trace.status: approved`. |
|
|
86
|
+
| `/review-context --fix` | `/review-context --fix specs/auth/login/bdd/web/FEAT-01-UC1-login.feature` | Auto-fix terminology, metadata, coverage matrix + reset `@trace.status` & `uc_status` → draft | Dev quick-fix. |
|
|
87
|
+
| `/review-context --resume` | `/review-context --resume specs/auth/login/bdd/system/FEAT-01-UC1-login.feature` | Applies accepted findings + bump bdd_version + reset `@trace.status` & `uc_status` → draft | SA review. |
|
|
86
88
|
|
|
87
89
|
---
|
|
88
90
|
|
|
@@ -101,7 +103,7 @@
|
|
|
101
103
|
|
|
102
104
|
| Command | Cách dùng (ví dụ) | Output | When to use |
|
|
103
105
|
|---------|-------------------|--------|-------------|
|
|
104
|
-
| `/generate-code` | `/generate-code specs/auth/login/bdd/system/FEAT-01-UC1-login.feature` | `src/...` (tags `@trace.implements`) | After tech-design approved. Default = full impl/BE. |
|
|
106
|
+
| `/generate-code` | `/generate-code specs/auth/login/bdd/system/FEAT-01-UC1-login.feature` | `src/...` (tags `@trace.implements`) | After tech-design approved. Guard mềm: BDD `@trace.status` approved; FE/App design-spec approved+fresh+sanity. Default = full impl/BE. |
|
|
105
107
|
| `/generate-code --phase=ui` | `/generate-code --phase=ui specs/auth/login/bdd/web/FEAT-01-UC1-login.feature` | UI + mock API adapter | FE: BE chưa sẵn sàng — sinh UI + mock adapter. Mock **shape**: BE contract nếu có (chuẩn) → else System BDD + warn; fixture values luôn từ System BDD. Tester test FE ngay được. |
|
|
106
108
|
| `/generate-code --phase=integration` | `/generate-code --phase=integration specs/auth/login/bdd/web/FEAT-01-UC1-login.feature` | Wires real API | FE: sau khi T7 sign-off gate approved — thay mock adapter bằng real API calls. |
|
|
107
109
|
| `/review-code` | `/review-code FEAT-01-UC1` | Review report: Critical / Major / Minor | After generate-code. Check: mỗi scenario có endpoint, trace tags, layer rules, error handling khớp CLAUDE.md §5. Fix CRITICAL + MAJOR trước khi merge. |
|
|
@@ -122,11 +124,11 @@
|
|
|
122
124
|
|
|
123
125
|
## Phase 6b — QC Automation (official QC suite)
|
|
124
126
|
|
|
125
|
-
> Pipeline `/qc-*` **là** official QC suite. Chạy **theo thứ tự** sau khi BDD approved (
|
|
127
|
+
> Pipeline `/qc-*` **là** official QC suite. Chạy **theo thứ tự** sau khi BDD `@trace.status: approved` (review-context BDD sạch + người duyệt; `/qc-analyze` cảnh báo mềm nếu chưa). Tách biệt hoàn toàn với dev self-check: QC sở hữu `qc_status`, dev sở hữu `dev_selftest`. `/qc-run-test` & `/qc-report` dùng module `qc-playwright`, độc lập với dev implementation module. Xem [../02-guides/tester/qc-automation.md](../02-guides/tester/qc-automation.md).
|
|
126
128
|
|
|
127
129
|
| Command | Cách dùng (ví dụ) | Output | When to use |
|
|
128
130
|
|---------|-------------------|--------|-------------|
|
|
129
|
-
| `/qc-analyze` | `/qc-analyze FEAT-01-UC1` | **2 file** trong `{qc_dir}/{UC-ID}/` (mặc định `docs/`): `REQUIREMENT_ANALYSIS.md` (gộp requirement + BR + data-flow + AC) + `DOC_GAPS.md` | After BDD approved — đầu pipeline QC. |
|
|
131
|
+
| `/qc-analyze` | `/qc-analyze FEAT-01-UC1` | **2 file** trong `{qc_dir}/{UC-ID}/` (mặc định `docs/`): `REQUIREMENT_ANALYSIS.md` (gộp requirement + BR + data-flow + AC) + `DOC_GAPS.md` | After BDD `@trace.status: approved` (guard mềm) — đầu pipeline QC. |
|
|
130
132
|
| `/qc-plan` | `/qc-plan FEAT-01-UC1` | `{qc_dir}/{UC-ID}/TEST_PLAN.md` (scope, layers, priorities, questions-for-dev) | After `/qc-analyze`. |
|
|
131
133
|
| `/qc-design-test` | `/qc-design-test FEAT-01-UC1` | `{qc_dir}/{UC-ID}/test-cases/*.Test.md` mapped to `{UC-ID}-SC{N}` | After `/qc-plan`. |
|
|
132
134
|
| `/qc-review` | `/qc-review FEAT-01-UC1` | Verdict APPROVED / NEEDS_FIX + findings (**inline — không sinh file**) | After `/qc-design-test` (test-case) hoặc `/qc-run-test` (script). |
|
|
@@ -150,7 +152,7 @@
|
|
|
150
152
|
| Command | Cách dùng (ví dụ) | Output | When to use |
|
|
151
153
|
|---------|-------------------|--------|-------------|
|
|
152
154
|
| `/report-bug {UC-ID} {desc}` | `/report-bug FEAT-01-UC1 "nhập sai mật khẩu vẫn đăng nhập được"` | `{spec_repo}/feedback/bug-reports/{BUG-ID}.md` + spec context + layer classification | Tester hoặc QC tìm thấy bug (gồm QC product-gap). Phân loại layer (Code/BDD/PRD/Design/Env) để route. |
|
|
153
|
-
| `/propose-scenario {UC-ID} {desc}` | `/propose-scenario FEAT-01-UC1 "khoá tài khoản sau 5 lần sai mật khẩu"` | `{spec_repo}/feedback/bdd-proposals/{UC-ID}-*.md` draft Gherkin | Tester hoặc QC tìm thấy edge case BDD chưa cover. Map vào PRD AC sẵn có, hoặc emit PRD change request nếu hành vi thực sự mới. |
|
|
155
|
+
| `/propose-scenario {UC-ID} {desc}` | `/propose-scenario FEAT-01-UC1 "khoá tài khoản sau 5 lần sai mật khẩu"` | `{spec_repo}/feedback/bdd-proposals/{UC-ID}-*.md` draft Gherkin (mang `Status: proposed`) | Tester hoặc QC tìm thấy edge case BDD chưa cover. Map vào PRD AC sẵn có, hoặc emit PRD change request nếu hành vi thực sự mới. Vòng đời: `proposed` → PO/Dev đặt `accepted` → `/generate-bdd` nạp rồi đặt `incorporated` + lưu trữ. |
|
|
154
156
|
|
|
155
157
|
---
|
|
156
158
|
|
|
@@ -51,7 +51,7 @@ sc_id sc_title spec_ver gen_ver implemented_by test_count test_classes dev_selft
|
|
|
51
51
|
| 16 | `tech_doc_revision` | **BE** API-contract revision tại thời điểm codegen | `—` | generate-code / review-tech-docs (BE doc) |
|
|
52
52
|
| 17 | `fe_tech_doc_revision` | **FE** client tech-design revision (`{UC-ID}-tech-design-{platform}.md`) tại thời điểm FE integration | `—` | generate-code `--phase=integration` / review-tech-docs (FE doc) |
|
|
53
53
|
| 18 | `prd_status` | `\| **Status** \|` từ PRD metadata | từ PRD | generate-bdd |
|
|
54
|
-
| 19 | `uc_status` | Trạng thái UC: `draft` / `approved`
|
|
54
|
+
| 19 | `uc_status` | Trạng thái duyệt BDD của UC — **gương của `@trace.status`** (`.feature`): `draft` / `approved` | `draft` (UC mới) | generate-bdd (init) · validate-traces (sync ← `@trace.status`) · review-context (reset draft khi `--fix`/`--resume`) |
|
|
55
55
|
| 20 | `fe_phase` | FE phase khi implement (`ui` / `integration`) | `—` | generate-code `--phase` |
|
|
56
56
|
| 21 | `status` | Trạng thái tổng hợp: `OK` / `DRIFT` / `GAP` / `UNTRACKED` | `UNTRACKED` | validate-traces |
|
|
57
57
|
| 22 | `last_updated` | Ngày update gần nhất (`YYYY-MM-DD`) | today | mọi command ghi row |
|
|
@@ -105,6 +105,7 @@ Mọi artifact link với nhau qua `@trace.*` tags.
|
|
|
105
105
|
# @trace.id: FEAT-001-UC1
|
|
106
106
|
# @trace.service: web-admin
|
|
107
107
|
# @trace.module: react
|
|
108
|
+
# @trace.status: draft # draft/approved — người đặt approved sau review-context BDD sạch; mirror → uc_status
|
|
108
109
|
# @trace.prd_version: 1.2
|
|
109
110
|
# @trace.bdd_version: 3
|
|
110
111
|
# @trace.api_source: existing # brownfield: API đã tồn tại, contract lấy từ PRD
|