@edupia-tutor/spec-driven-docs 0.14.7 → 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/commands/generate-bdd.md +59 -4
- package/commands/generate-bdd.tmpl +59 -4
- package/commands/generate-code.md +18 -1
- package/commands/generate-code.tmpl +18 -1
- package/commands/generate-design-spec.md +35 -5
- package/commands/generate-design-spec.tmpl +35 -5
- package/commands/generate-prd.md +7 -4
- package/commands/generate-tech-docs.md +1 -0
- package/commands/generate-tech-docs.tmpl +1 -0
- package/commands/propose-scenario.md +6 -2
- package/commands/propose-scenario.tmpl +6 -2
- package/commands/qc-analyze.md +14 -0
- package/commands/qc-analyze.tmpl +14 -0
- package/commands/refine-prd.md +15 -4
- package/commands/refine-prd.tmpl +15 -4
- package/commands/review-context.md +15 -11
- package/commands/review-context.tmpl +15 -11
- package/commands/validate-traces.md +1 -0
- package/commands/validate-traces.tmpl +1 -0
- package/core/FRAMEWORK_VERSION +1 -1
- package/core/commands/generate-bdd.md +59 -4
- package/core/commands/generate-code.md +18 -1
- package/core/commands/generate-design-spec.md +35 -5
- package/core/commands/generate-prd.md +7 -4
- package/core/commands/generate-tech-docs.md +1 -0
- package/core/commands/propose-scenario.md +6 -2
- package/core/commands/qc-analyze.md +14 -0
- package/core/commands/refine-prd.md +15 -4
- package/core/commands/review-context.md +15 -11
- package/core/commands/validate-traces.md +1 -0
- 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/spawn-agent.md +12 -7
- package/core/templates/prd.template.md +7 -4
- package/docs/01-getting-started/core-concepts.md +2 -2
- 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 +1 -0
- package/docs/02-guides/developer/commands.md +3 -3
- package/docs/02-guides/developer/pr-checklist.md +1 -0
- package/docs/02-guides/developer/workflow.md +2 -2
- package/docs/02-guides/prd-input-checklist.md +94 -0
- package/docs/02-guides/product-owner/README.md +3 -1
- package/docs/02-guides/product-owner/commands.md +1 -1
- 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 +4 -1
- package/docs/04-operations/bug-flow.md +2 -0
- package/docs/05-reference/command-cheatsheet.md +8 -8
- 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/spawn-agent.md +12 -7
- package/templates/prd.template.md +7 -4
|
@@ -71,14 +71,18 @@ Dựng payload và gọi Agent tool cho từng UC:
|
|
|
71
71
|
```json
|
|
72
72
|
{
|
|
73
73
|
"_agent_mode": true,
|
|
74
|
-
"command":
|
|
75
|
-
"uc_id":
|
|
76
|
-
"target_file":
|
|
77
|
-
"uc_section":
|
|
78
|
-
"context":
|
|
74
|
+
"command": "generate-bdd",
|
|
75
|
+
"uc_id": "{TICKET-ID}-UC{N}",
|
|
76
|
+
"target_file": "{đường dẫn tuyệt đối tới PRD hoặc feature file}",
|
|
77
|
+
"uc_section": { "line_start": {N}, "line_end": {N} },
|
|
78
|
+
"context": { "<context gọn từ Bước A>" },
|
|
79
|
+
"active_platform": "{web|app|system — platform orchestrator đã chọn ở Platform Selection}",
|
|
80
|
+
"design_coverage": { "<Screen States + AC-UI behavioral orchestrator đã trích ở 'Design Spec — Gate & Load' (B1); rỗng nếu BE / không có design-spec>" }
|
|
79
81
|
}
|
|
80
82
|
```
|
|
81
83
|
|
|
84
|
+
> **Truyền state orchestrator đã phân giải (quan trọng):** orchestrator (session chính) đã chạy các Guard + chọn platform + nạp design-spec MỘT LẦN *trước* khi spawn. Phải kèm `active_platform` và `design_coverage` vào payload để sub-agent áp đúng (đặc biệt phủ Screen States + AC-UI cho FE/App). KHÔNG kèm → sub-agent sinh BDD thiếu phần design (PRD lớn mất B1).
|
|
85
|
+
|
|
82
86
|
> **Phạm vi lệnh**: Chỉ `/generate-bdd` khởi động chế độ orchestration. `/generate-code` và `/dev-gen-test` có thể chạy như sub-agent (chúng tôn trọng `_agent_mode: true` từ Gate Bước 0), nhưng không spawn thêm sub-agent — phạm vi của chúng vốn đã là một UC duy nhất.
|
|
83
87
|
|
|
84
88
|
Serialize JSON này và truyền làm `$ARGUMENTS` khi gọi lệnh sub-agent.
|
|
@@ -108,8 +112,9 @@ Khi `gate.md Bước 0` phát hiện `_agent_mode: true`:
|
|
|
108
112
|
2. **Bỏ qua context-loader.md** — dùng trực tiếp `payload.context`
|
|
109
113
|
3. **Chỉ giới hạn ở `payload.uc_id`** — không xử lý các UC khác trong file
|
|
110
114
|
4. Chỉ đọc section PRD giữa `payload.uc_section.line_start` và `line_end`
|
|
111
|
-
5.
|
|
112
|
-
6.
|
|
115
|
+
5. **Dùng state orchestrator đã phân giải:** `active_platform` = `payload.active_platform`; `design_coverage` = `payload.design_coverage`. **KHÔNG chạy lại** các Guard (PRD approved / Design-Spec) hay tự nạp lại design-spec / hỏi platform — orchestrator đã làm một lần ở session chính.
|
|
116
|
+
6. Thực thi logic thường của lệnh cho riêng UC này (dùng `design_coverage` từ payload để phủ Screen States + AC-UI)
|
|
117
|
+
7. Trả về JSON kết quả có cấu trúc (định dạng Bước E ở trên)
|
|
113
118
|
|
|
114
119
|
---
|
|
115
120
|
|
|
@@ -197,11 +197,14 @@ _(Nếu không có độ vênh: ghi "Không có — toàn bộ nội dung đã
|
|
|
197
197
|
|
|
198
198
|
# Change Log
|
|
199
199
|
|
|
200
|
-
|
|
200
|
+
> Hiện tại: **v1.0** ({date}) · Lịch sử đầy đủ → [changelog](./changelog/{TICKET}-{N}-{slug}.changelog.md) *(file kho chỉ tạo khi changelog vượt 5 version)*
|
|
201
201
|
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
202
|
+
<!-- Bảng phẳng, MỘT dòng/version, MỚI NHẤT TRÊN CÙNG. Chỉ giữ tối đa 5 version gần nhất ở đây;
|
|
203
|
+
cũ hơn → /refine-prd & /review-context tự dồn (rollover) sang file changelog/ ở link trên. -->
|
|
204
|
+
|
|
205
|
+
| Version | Date | Changes (UC/AC/BR bị ảnh hưởng) |
|
|
206
|
+
|---------|------|---------------------------------|
|
|
207
|
+
| 1.0 | {date} | Bản đầu — sinh từ product-definition. |
|
|
205
208
|
|
|
206
209
|
---
|
|
207
210
|
|
|
@@ -18,7 +18,7 @@ Các khái niệm cốt lõi trong 5 phút. Đào sâu hơn ở [../03-concepts]
|
|
|
18
18
|
|
|
19
19
|
- Con người định nghĩa *WHAT* — acceptance criteria, business rules, platform requirements.
|
|
20
20
|
- AI sinh ra *HOW* — BDD scenarios, tech design, code, tests — thích ứng theo platform.
|
|
21
|
-
- Mỗi artifact được review trước khi sang phase kế tiếp
|
|
21
|
+
- Mỗi artifact được review (AI tìm findings) rồi **người duyệt** (đặt `Status` / `@trace.status: approved`) trước khi sang phase kế tiếp; sửa nội dung sau khi duyệt → tự về `draft`. Lệnh tiêu thụ **cảnh báo mềm** nếu nguồn chưa approved.
|
|
22
22
|
- Mỗi dòng code truy ngược về một scenario trong file `.feature`.
|
|
23
23
|
|
|
24
24
|
**PRD platform-agnostic (Option C):** một PRD phục vụ mọi platform — chỉ mô tả nghiệp vụ, không có chi tiết UI hay API. FE/App đọc PRD → Design Spec → BDD; BE đọc PRD trực tiếp → BDD. Thêm platform mới sau không cần sửa PRD.
|
|
@@ -50,7 +50,7 @@ Mỗi artifact link tới artifact khác qua `@trace.*` tags:
|
|
|
50
50
|
|
|
51
51
|
```
|
|
52
52
|
product-definition.md
|
|
53
|
-
└─► PRD.md (Service, Module
|
|
53
|
+
└─► PRD.md (Domain, Status, Service, Module — bảng Metadata)
|
|
54
54
|
└─► specs/{domain}/{prd-slug}/bdd/{web|app|system}/{UC-ID}.feature (@trace.prd_version)
|
|
55
55
|
└─► specs/{domain}/{prd-slug}/tech-docs/{UC-ID}-tech-design*.md (@trace.bdd_version)
|
|
56
56
|
└─► src/ code — service submodule (@trace.implements)
|
|
@@ -45,16 +45,17 @@ Discovery → PRD → BDD → Tech Design → Code → Dev self-check:
|
|
|
45
45
|
→ specs/{domain}/{prd-slug}/{TICKET-ID}-{prd-slug}.md
|
|
46
46
|
/refine-prd specs/{domain}/{prd-slug}/{TICKET-ID}-{prd-slug}.md # AI suggestions → Review Board
|
|
47
47
|
/refine-prd --resume specs/{domain}/{prd-slug}/{TICKET-ID}-{prd-slug}.md # apply + bump version
|
|
48
|
-
/review-context specs/{domain}/{prd-slug}/{TICKET-ID}-{prd-slug}.md # quality gate (
|
|
48
|
+
/review-context specs/{domain}/{prd-slug}/{TICKET-ID}-{prd-slug}.md # quality gate (P0–P5)
|
|
49
49
|
/review-context --resume specs/{domain}/{prd-slug}/{TICKET-ID}-{prd-slug}.md
|
|
50
|
-
→ ✅
|
|
50
|
+
→ ✅ 0 critical → PO đặt | **Status** | approved | trong Metadata → tiếp Phase 3
|
|
51
51
|
|
|
52
52
|
# PHASE 3 — SPEC & DESIGN
|
|
53
53
|
# (FE/App only) /generate-design-spec specs/{domain}/{prd-slug}/{TICKET-ID}-{prd-slug}.md → designer + PO sign-off
|
|
54
54
|
/generate-bdd specs/{domain}/{prd-slug}/{TICKET-ID}-{prd-slug}.md
|
|
55
55
|
→ specs/{domain}/{prd-slug}/bdd/{UC-ID}.feature
|
|
56
56
|
/review-context specs/{domain}/{prd-slug}/bdd/{UC-ID}.feature
|
|
57
|
-
/review-context --resume specs/{domain}/{prd-slug}/bdd/{UC-ID}.feature # apply + bump bdd_version
|
|
57
|
+
/review-context --resume specs/{domain}/{prd-slug}/bdd/{UC-ID}.feature # apply + bump bdd_version + reset @trace.status draft
|
|
58
|
+
→ ✅ 0 critical → đặt # @trace.status: approved trong .feature → tiếp Tech Design
|
|
58
59
|
/generate-tech-docs specs/{domain}/{prd-slug}/bdd/{UC-ID}.feature
|
|
59
60
|
→ specs/{domain}/{prd-slug}/tech-docs/{UC-ID}-tech-design.md
|
|
60
61
|
/review-tech-docs specs/{domain}/{prd-slug}/tech-docs/{UC-ID}-tech-design.md
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
[📚 Docs](../README.md) › [Guides](README.md) › Checklist Input BDD (System/BE)
|
|
2
|
+
|
|
3
|
+
# Checklist Input BDD (System / BE) — Để BDD Chuẩn Ngay Lần Đầu
|
|
4
|
+
|
|
5
|
+
> Áp cho `/generate-bdd` khi chọn platform **`system`** (BDD cho BE). Chuẩn bị đúng đầu vào để không phải sinh lại.
|
|
6
|
+
|
|
7
|
+
## Hiểu trước cho đúng: System BDD có HAI kiểu sinh
|
|
8
|
+
|
|
9
|
+
Khi chọn platform `system`, lệnh tự phân loại:
|
|
10
|
+
|
|
11
|
+
- **BE thuần** (feature không có web/app) → System BDD **sinh thẳng từ PRD** (AC / Business Rules / Business Logic).
|
|
12
|
+
- **BE trong feature đa-platform** → System BDD **tổng hợp từ web + app BDD đã có** (BE suy ra để phục vụ các luồng client).
|
|
13
|
+
|
|
14
|
+
→ Biết mình ở kiểu nào mới chuẩn bị đúng.
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Phần CHUNG — cả hai kiểu đều cần
|
|
19
|
+
|
|
20
|
+
**1. PRD đã duyệt + Luật/AC rõ ràng** *(đòn bẩy số 1)*
|
|
21
|
+
System BDD phủ **mỗi AC và mỗi Business Rule → ít nhất 1 scenario**. PRD mơ hồ ở Business Rules / Logic = BDD mơ hồ. Đây là chỗ quyết định nhiều nhất.
|
|
22
|
+
|
|
23
|
+
**2. Loại API đã chốt đúng trong PRD**
|
|
24
|
+
- **"Đã có sẵn"** (brownfield) → bảng **Existing API Contract trong PRD phải đầy đủ**, không còn dấu "⛔ còn thiếu". Lệnh dùng bảng này làm chuẩn và **bỏ qua bước tổng hợp**. Còn thiếu = BDD dễ bịa / sai shape.
|
|
25
|
+
- **"Tự làm mới"** → contract thiết kế sau; BDD chỉ tả hành vi nghiệp vụ.
|
|
26
|
+
|
|
27
|
+
**3. Từ điển + danh sách thực thể đã cập nhật**
|
|
28
|
+
System BDD viết bằng **ngôn ngữ sự kiện nghiệp vụ** ("hệ thống nhận X → trả về Y"), **không** dùng từ giao diện (click/tap), **không** chốt cứng shape JSON kỹ thuật. Tên thực thể / trường / enum phải đúng `core-entities.md`.
|
|
29
|
+
|
|
30
|
+
**4. Domain khớp cấu hình service** *(chế độ umbrella)*
|
|
31
|
+
Domain trong PRD phải khớp một service trong config; lệch là lệnh **dừng**.
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Phần RIÊNG theo kiểu
|
|
36
|
+
|
|
37
|
+
### Nếu BE trong feature đa-platform (tổng hợp)
|
|
38
|
+
|
|
39
|
+
**5. Đã sinh web + app BDD TRƯỚC — đúng thứ tự outside-in**
|
|
40
|
+
Nếu sinh `system` khi **chưa có** web/app BDD → lệnh tưởng là "BE thuần", sinh từ PRD và **bỏ lỡ** các kỳ vọng client thật (token, profile, redirect…). Phải theo thứ tự **web → app → system**.
|
|
41
|
+
|
|
42
|
+
**6. Sẵn sàng quyết "xung đột cross-platform"**
|
|
43
|
+
Nếu web và app **kỳ vọng khác nhau** (response / lỗi / luật) → lệnh **dừng ở CHECKPOINT** bắt PO chọn cách hoà: gộp chung / phân biệt theo platform / tách endpoint. Web+app BDD nên nhất quán, hoặc PO sẵn sàng quyết ngay — nếu không sẽ tắc.
|
|
44
|
+
|
|
45
|
+
### Nếu BE thuần
|
|
46
|
+
|
|
47
|
+
Bỏ qua câu 5–6. Dồn lực vào câu 1–3: PRD Business Rules / Logic + contract + thực thể.
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Checklist nhanh — trước khi `/generate-bdd` (system)
|
|
52
|
+
|
|
53
|
+
- [ ] PRD `approved`, mỗi AC/BR đủ rõ để suy ra scenario
|
|
54
|
+
- [ ] Loại API đã chốt; brownfield → bảng Existing API Contract **đầy đủ** (hết ⛔)
|
|
55
|
+
- [ ] `business-dictionary` + `core-entities` cập nhật (sự kiện / thực thể)
|
|
56
|
+
- [ ] Domain khớp cấu hình service (umbrella)
|
|
57
|
+
- [ ] *(đa-platform)* web + app BDD đã sinh + review **trước** system
|
|
58
|
+
- [ ] *(đa-platform)* sẵn sàng quyết xung đột cross-platform
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Sau khi sinh BDD
|
|
63
|
+
|
|
64
|
+
`/review-context` (BDD) bắt nốt sạn (coverage, Gherkin R1–R10, thuật ngữ); khi 0 critical → người duyệt đặt `# @trace.status: approved` rồi mới sang Tech Docs / Code / QC. Chuẩn bị tốt checklist trên thì bước review nhẹ.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
← [Guides](README.md) · Liên quan: [Checklist Input PRD](prd-input-checklist.md) · [Checklist Input Tech-Docs (BE)](tech-docs-input-checklist.md)
|
|
@@ -10,6 +10,8 @@ Tài liệu dành cho **Developer (FE / BE / App)** — vai trò, commands, trac
|
|
|
10
10
|
|---|---|
|
|
11
11
|
| [Commands](commands.md) | Bảng lệnh cho dev · project lessons · xử lý feedback tester · khi nào dùng `--phase` |
|
|
12
12
|
| [BDD & Trace System](bdd-and-trace.md) | Tại sao BDD quan trọng với dev · `@trace.*` fields · trace chain · khi nào `/validate-traces` |
|
|
13
|
+
| [Checklist input BDD (System/BE)](../bdd-input-checklist.md) | Chuẩn bị để `/generate-bdd` (system) chuẩn ngay lần đầu |
|
|
14
|
+
| [Checklist input Tech-Docs (BE)](../tech-docs-input-checklist.md) | BDD khác tech-doc thế nào · chuẩn bị để `/generate-tech-docs` (BE) ra API contract chuẩn lần đầu |
|
|
13
15
|
| [Workflow](workflow.md) | Luồng làm việc cơ bản từ nhận PRD đến tạo PR |
|
|
14
16
|
| [Tình huống thực tế](scenarios.md) | 8 scenario: nhận PRD mới, đọc System/Web BDD, PRD đổi, API sign-off, bug từ tester, design spec, brownfield, umbrella, validate-traces |
|
|
15
17
|
| [Checklist trước khi tạo PR](pr-checklist.md) | Checklist verify trước khi mở PR |
|
|
@@ -34,6 +36,7 @@ PO/BA Dev
|
|
|
34
36
|
- Đọc và hiểu PRD + BDD từ spec submodule trước khi bắt đầu
|
|
35
37
|
- **KHÔNG tự generate BDD** — BDD đã được PO generate trong spec repo
|
|
36
38
|
- Đảm bảo code trace về đúng BDD scenario, BDD trace về đúng PRD
|
|
39
|
+
- **Duyệt BDD:** sau khi `/review-context` (BDD) sạch critical, Dev-lead/SA đặt `# @trace.status: approved` trong `.feature` (cổng trước tech-docs / code / QC)
|
|
37
40
|
- Báo PO/BA khi PRD hoặc BDD có gì không rõ hoặc mâu thuẫn — không tự suy diễn
|
|
38
41
|
|
|
39
42
|
**Dev KHÔNG làm:**
|
|
@@ -62,6 +62,7 @@ Framework dùng metadata `@trace.*` để liên kết PRD → BDD → Code. (Chi
|
|
|
62
62
|
| `@trace.prd` | BDD / Tech Doc header | Link về PRD gốc |
|
|
63
63
|
| `@trace.bdd` | Code comment / test | Link về BDD scenario |
|
|
64
64
|
| `Status` | bảng Metadata PRD | `draft` / `approved` — chỉ code khi `approved` |
|
|
65
|
+
| `@trace.status` | BDD `.feature` header | `draft` / `approved` — Dev-lead/SA đặt approved sau review-context BDD sạch; mirror → `uc_status` (dashboard) |
|
|
65
66
|
| `dev_selftest` | Trace TSV | `pass` / `fail` / `not_run` — kết quả dev self-check, set bởi `/dev-run-test`. Surfaced trong Living Docs để QC biết dev đã chạy self-check — **KHÔNG phải coverage chính thức** |
|
|
66
67
|
| `dev_selftest_at` | Trace TSV | Timestamp lần chạy `/dev-run-test` gần nhất |
|
|
67
68
|
| `qc_status` | Trace TSV | `pass` / `fail` / `skip` / `not_run` — kết quả **QC chính thức**, set bởi `/qc-run-test` (do QC chạy, KHÔNG phải dev). Orthogonal với `dev_selftest` và với coverage `status` |
|
|
@@ -8,11 +8,11 @@
|
|
|
8
8
|
| `/update-framework` | Nâng cấp **bản thân framework** (`.agent/commands/`, steps/, modules/) từ npm | Khi có version framework mới — không đụng project-context/CLAUDE.md |
|
|
9
9
|
| `/review-context {prd-file}` | Đọc + xác nhận PRD + BDD đủ rõ trước khi code — fan-out review dimension thành sub-agent song song + completeness-critic loop, findings file đầy đủ ngay trong 1 lần chạy | **Bước đầu tiên** khi nhận PRD mới |
|
|
10
10
|
| `/generate-tech-docs {feature-file}` | **Platform-aware.** BE (`system`): API contract (endpoints, DB, caching). FE/App (`web`/`app`): client design (components, state, API-integration map theo BE contract, routing) — **GATED**: cần System BDD + BE contract approved trước, nếu thiếu sẽ HALT | BE: sau khi đọc System BDD. FE: sau `--phase=ui`, khi BE contract đã approved |
|
|
11
|
-
| `/generate-code {bdd-file}` | Sinh code — BE hoặc FE khi API đã sẵn sàng | Sau khi tech docs `approved` |
|
|
11
|
+
| `/generate-code {bdd-file}` | Sinh code — BE hoặc FE khi API đã sẵn sàng. Guard mềm: BDD `@trace.status` approved; FE/App design-spec approved+fresh+sanity | Sau khi tech docs `approved` |
|
|
12
12
|
| `/generate-code {bdd-file} --phase=ui` | FE: gen UI + mock adapter. Mock **shape** từ BE contract nếu có (chuẩn) → else infer từ System BDD + warn (`mock_source=contract\|system-bdd`); fixture values luôn từ System BDD | Ngay sau khi đọc BDD (BE chưa cần deploy API) |
|
|
13
13
|
| `/generate-code {bdd-file} --phase=integration` | FE: wire API thật thay mock | Sau khi sign-off gate `approved` |
|
|
14
14
|
| `/dev-gen-test {bdd-file}` | **Dev self-check** — sinh test cases từ BDD để dev tự verify code mình vừa gen (KHÔNG phải bộ test chính thức của QC/dev-team) | Song song hoặc sau generate-code |
|
|
15
|
-
| `/review-code {file}` | Review code theo 4
|
|
15
|
+
| `/review-code {file}` | Review code theo 4 lăng kính (Traceability/Layer/Coding Standards/Spec Compliance) | Trước khi tạo PR |
|
|
16
16
|
| `/review-tech-docs {tech-doc-file}` | Review chất lượng Tech Docs | Sau generate-tech-docs |
|
|
17
17
|
| `/dev-run-test` | **Dev self-check** — chạy test do dev tự gen để xác nhận code mình hoạt động (smoke/self-verify, KHÔNG phải coverage chính thức) — *umbrella mode: tự `cd` vào service_root, dùng service's `test_command`*. Ghi `dev_selftest` (pass/fail) vào trace TSV | Sau khi code + tests sẵn sàng |
|
|
18
18
|
| `/fix-bug {issue}` | Phân tích + fix bug có trace | Khi có bug report |
|
|
@@ -53,7 +53,7 @@ Tester gửi bug report (`/report-bug`) và đề xuất scenario (`/propose-sce
|
|
|
53
53
|
|
|
54
54
|
Dev hành động theo phân loại:
|
|
55
55
|
- **Bug report** → `/fix-bug {BUG-ID}` (report đã có sẵn spec-context + AC bị vi phạm + layer)
|
|
56
|
-
- **Scenario proposal map vào AC sẵn có** →
|
|
56
|
+
- **Scenario proposal map vào AC sẵn có** → đặt `Status: accepted` trong file proposal → `/generate-bdd` tự chèn vào `.feature` rồi lưu trữ (`incorporated`); hoặc thêm tay. Rồi `/generate-code` + `/dev-gen-test`
|
|
57
57
|
- **Proposal là yêu cầu mới (PRD change request)** → chuyển PO sửa PRD trước
|
|
58
58
|
|
|
59
59
|
> Bug reports có thể đến từ hai nguồn: Tester dùng `/report-bug` trực tiếp, **hoặc** từ kết quả QC automation (`qc_status: fail` trong `.trace/*.tsv` → QC (hoặc tester) chạy `/report-bug` → `/sync` → dev thấy tại đây). Cả hai đều dùng cùng luồng `/fix-bug`.
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
- [ ] `/review-code` → không có issue Critical hoặc Major chưa xử lý
|
|
8
8
|
- [ ] Code trace về đúng BDD scenarios trong `my-project-specs/specs/{domain}/{prd-slug}/bdd/`
|
|
9
9
|
- [ ] Code có `@trace.bdd` comment cho các function implement BDD scenario
|
|
10
|
+
- [ ] BDD `@trace.status: approved` (đã duyệt) trước khi code/PR; FE/App: Design Spec `Status: approved` + `Built from PRD` khớp PRD hiện tại
|
|
10
11
|
- [ ] Tech Docs đã được update nếu có thay đổi API/DB schema
|
|
11
12
|
- [ ] **Không tự sửa BDD** — BDD là của PO, nếu cần update thì báo PO rồi pull lại
|
|
12
13
|
|
|
@@ -27,7 +27,7 @@ flowchart TD
|
|
|
27
27
|
|
|
28
28
|
TD --> E["/dev-gen-test → /dev-run-test<br/>dev tự kiểm (dev_selftest)<br/>ghi vào spec .trace"]
|
|
29
29
|
E --> F["/validate-traces<br/>cập nhật Living Docs (.living-docs)"]
|
|
30
|
-
F --> G["/review-code — 4
|
|
30
|
+
F --> G["/review-code — 4 lăng kính:<br/>Traceability · Layer · Coding Standards · Spec Compliance"]
|
|
31
31
|
G --> H([Tạo PR → notify PO/SA review])
|
|
32
32
|
```
|
|
33
33
|
|
|
@@ -98,7 +98,7 @@ FE/App track (web|app) ── KHÔNG chặn chờ BE ──
|
|
|
98
98
|
│
|
|
99
99
|
▼
|
|
100
100
|
/review-code {files}
|
|
101
|
-
→ 4
|
|
101
|
+
→ 4 lăng kính: Traceability / Layer Architecture / Coding Standards / Spec Compliance
|
|
102
102
|
→ Fix issues trước khi tạo PR
|
|
103
103
|
│
|
|
104
104
|
▼
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
[📚 Docs](../README.md) › [Guides](README.md) › Checklist Input PRD
|
|
2
|
+
|
|
3
|
+
# Checklist Input PRD — Để PRD Chuẩn Ngay Lần Đầu
|
|
4
|
+
|
|
5
|
+
> Muốn `/generate-prd` ra PRD tốt **ngay lần đầu**, đừng trông vào `/refine-prd` để vá — hãy chuẩn bị đúng đầu vào trước.
|
|
6
|
+
|
|
7
|
+
## Hiểu trước cho đúng
|
|
8
|
+
|
|
9
|
+
- **PRD sinh ra từ một file khảo sát (product-definition)** — output của `/define-product`. Bạn **không gõ thẳng** PRD.
|
|
10
|
+
- **Không có "generate-prd cho BE" riêng.** PRD là tài liệu nghiệp vụ **dùng chung cho mọi platform** (một bản phục vụ cả FE/App/BE). Cái "system/BE" chỉ xuất hiện ở bước sau (`/generate-bdd`).
|
|
11
|
+
- Vì vậy "PRD chuẩn ngay lần đầu" = **chuẩn bị tốt 7 thứ dưới đây trước khi chạy `/generate-prd`**.
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## 7 câu tự hỏi trước khi bấm `/generate-prd`
|
|
16
|
+
|
|
17
|
+
**1. Bản khảo sát đã làm xong chưa?**
|
|
18
|
+
Đã chạy `/define-product` đi hết 7 bước, không bỏ dở. Máy sẽ **không cho** sinh PRD nếu còn dang dở.
|
|
19
|
+
→ *Vì PRD là tài liệu để ký duyệt — không dựng từ thứ chưa chốt.*
|
|
20
|
+
|
|
21
|
+
**2. "Luật" và "cách xử lý" của tính năng đã viết rõ chưa?** *(quan trọng nhất)*
|
|
22
|
+
Hệ thống **phải làm gì / không được làm gì** (Business Rules), và **xử lý ra sao** trong từng trường hợp (Business Logic). Viết cụ thể, đừng để câu chung chung kiểu "xử lý hợp lý".
|
|
23
|
+
→ *Đây là phần dev dựa vào để code. Mơ hồ ở đây = code sai ở đó.*
|
|
24
|
+
|
|
25
|
+
**3. Đã liệt kê các trường hợp hỏng chưa?**
|
|
26
|
+
Không chỉ lúc chạy ngon, mà cả lúc lỗi: thiếu dữ liệu, điều kiện không thoả, hai người bấm cùng lúc, service khác chết.
|
|
27
|
+
→ *Hệ thống sống nhờ xử lý đúng mấy ca lỗi này; quên là lỗ hổng.*
|
|
28
|
+
|
|
29
|
+
**4. Tính năng này cần gì từ service/đội khác không?**
|
|
30
|
+
Ghi rõ: **cần dữ liệu/khả năng gì, lấy từ ai, để làm gì**. Nếu không cần thì ghi "Không có".
|
|
31
|
+
→ *Tính năng hiếm khi đứng một mình; thiếu mục này dễ tắc giữa chừng.*
|
|
32
|
+
|
|
33
|
+
**5. API của tính năng thuộc loại nào? — phải quyết trước**
|
|
34
|
+
Chọn 1 trong 3:
|
|
35
|
+
- **Đã có sẵn** (API chạy production rồi) → **đưa đường dẫn tới tài liệu API thật** (file swagger/openapi, link, hoặc thư mục code BE) **mà máy mở được**. Mở không được → PRD sẽ ghi "còn thiếu", chưa chuẩn.
|
|
36
|
+
- **Tự làm mới** → để trống, thiết kế sau ở `/generate-tech-docs`.
|
|
37
|
+
- **Đối tác đang làm song song** → chọn loại này (đừng chọn "đã có sẵn").
|
|
38
|
+
→ *Đây là chỗ quyết định độ chuẩn nhiều nhất cho tính năng BE.*
|
|
39
|
+
|
|
40
|
+
**6. Mỗi tiêu chí nghiệm thu (AC) có kiểm được đúng/sai rõ ràng không?**
|
|
41
|
+
Tránh kiểu "nhanh", "ổn". Phải đo được.
|
|
42
|
+
→ *AC mơ hồ thì sau này không ai biết tính năng "đạt" hay "chưa".*
|
|
43
|
+
|
|
44
|
+
**7. Tên gọi và dữ liệu đã dùng đúng từ điển chung chưa?**
|
|
45
|
+
Đảm bảo `business-dictionary.md` (từ chuẩn) và `core-entities.md` (danh sách thực thể/trường dữ liệu) đã cập nhật cho tính năng này.
|
|
46
|
+
→ *Gọi sai tên một bảng/trường là lệch cả chuỗi sau.*
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Checklist nhanh
|
|
51
|
+
|
|
52
|
+
- [ ] Khảo sát `/define-product` đã xong (7 bước, không gap)
|
|
53
|
+
- [ ] Business Rules + cách xử lý viết rõ, không mơ hồ *(đòn bẩy lớn nhất)*
|
|
54
|
+
- [ ] Đã liệt kê đủ các ca lỗi / trường hợp hỏng
|
|
55
|
+
- [ ] Phụ thuộc service/đội khác ghi rõ (hoặc "Không có")
|
|
56
|
+
- [ ] Đã quyết **loại API**; nếu "đã có sẵn" → đường dẫn contract **mở được**
|
|
57
|
+
- [ ] Mỗi AC kiểm được đúng/sai rõ ràng
|
|
58
|
+
- [ ] Từ điển chung + danh sách thực thể đã cập nhật
|
|
59
|
+
- [ ] Định danh đúng: Domain (khớp cấu hình service), PO, mã Ticket
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## Riêng tính năng BE — chú ý nhất ở đâu?
|
|
64
|
+
|
|
65
|
+
BE không có Design Spec / màn hình đỡ phía trước, nên **PRD chính là spec**. Hai thứ quyết định độ chuẩn:
|
|
66
|
+
|
|
67
|
+
1. **Business Rules + Business Logic (câu 2)** — vì BE đọc PRD thẳng rồi sinh System BDD từ đây.
|
|
68
|
+
2. **Loại API (câu 5)** — BE "đã có sẵn" mà đường dẫn contract mở không được thì PRD sẽ kẹt ở trạng thái "còn thiếu".
|
|
69
|
+
|
|
70
|
+
> Tính năng BE thuần **không có màn hình** → phần Wireframe để trống/N/A là đúng; đừng để máy bịa màn hình.
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## Sau khi sinh PRD
|
|
75
|
+
|
|
76
|
+
`/refine-prd` và `/review-context` là để **nhặt sạn** (làm rõ, bắt mâu thuẫn, thêm edge case) — **không phải** để vá cái thiếu từ khâu khảo sát. Chuẩn bị tốt 7 thứ trên thì hai bước này nhẹ tênh.
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Map sang các bước của `/define-product` *(cho ai muốn chính xác)*
|
|
81
|
+
|
|
82
|
+
| Câu hỏi | Nằm ở bước nào của discovery |
|
|
83
|
+
|---|---|
|
|
84
|
+
| 1. Khảo sát xong | toàn bộ Phase 1–7, `Status: completed` |
|
|
85
|
+
| 2. Luật + cách xử lý | Phase 4 (Business Rules) + Phase 5 (Business Logic) |
|
|
86
|
+
| 3. Ca lỗi | Phase 2 (Edge Cases) |
|
|
87
|
+
| 4. Phụ thuộc liên service | Phase 1, câu 8 |
|
|
88
|
+
| 5. Loại API | hỏi lúc `/generate-prd` (API Source) |
|
|
89
|
+
| 6. AC kiểm được | Phase 6 (Acceptance Criteria) |
|
|
90
|
+
| 7. Từ điển / thực thể | Phase 0 (Knowledge Sync) + `business-dictionary.md` / `core-entities.md` |
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
← [Guides](README.md) · Liên quan: [Checklist Input BDD (System/BE)](bdd-input-checklist.md) · [Quy tắc viết PRD](product-owner/prd-writing-rules.md) · [Checklist handoff](product-owner/handoff-checklist.md)
|
|
@@ -10,6 +10,8 @@ Tài liệu dành cho **Product Owner (PO)** và **Business Analyst (BA)** — v
|
|
|
10
10
|
|---|---|
|
|
11
11
|
| [Commands](commands.md) | Bảng lệnh cho PO/BA · project lessons · xử lý feedback tester |
|
|
12
12
|
| [Tình huống thực tế](scenarios.md) | 12 scenario: tính năng mới, design spec, BDD, PRD thay đổi, brownfield, **System BDD synthesis & cross-platform conflict**, ... |
|
|
13
|
+
| [Checklist input PRD](../prd-input-checklist.md) | 7 câu chuẩn bị để PRD chuẩn ngay lần đầu (kèm lưu ý BE) |
|
|
14
|
+
| [Checklist input BDD (System/BE)](../bdd-input-checklist.md) | Chuẩn bị để `/generate-bdd` (system) chuẩn ngay lần đầu |
|
|
13
15
|
| [Quy tắc viết PRD](prd-writing-rules.md) | Platform-agnostic · testable AC · negative path · BR numbering |
|
|
14
16
|
| [Checklist handoff](handoff-checklist.md) | Checklist verify trước khi thông báo dev team bắt đầu |
|
|
15
17
|
|
|
@@ -51,7 +53,7 @@ PRD (WHAT + WHY) → BDD (HOW verified) → Code (HOW built)
|
|
|
51
53
|
spec repo spec repo dev repo
|
|
52
54
|
```
|
|
53
55
|
|
|
54
|
-
> **Sau khi BDD approved → QC chạy pipeline tự động:** Khi BDD của một UC được
|
|
56
|
+
> **Sau khi BDD approved → QC chạy pipeline tự động:** Khi BDD của một UC được duyệt (đặt `@trace.status: approved` sau review-context BDD sạch), QC team chạy bộ lệnh native `/qc-analyze → /qc-plan → /qc-design-test → /qc-review → /qc-run-test → /qc-report` — đọc official `.feature`, generate + run Playwright/pytest, rồi ghi `qc_status` (official QC coverage) vào Living Docs. PO không chạy QC, nhưng nên biết bước này tồn tại ở downstream. Chi tiết: [chương QC Automation](../tester/qc-automation.md).
|
|
55
57
|
|
|
56
58
|
**3 lý do chính BDD thuộc PO:**
|
|
57
59
|
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
> **Project Lessons:** Nếu AI cứ lặp lại một kiểu sai khi gen PRD/BDD (vd: quên negative path, dùng sai thuật ngữ), chạy `/learn "AI hay X, đúng phải Y"` (category `prd`/`bdd`). Lesson được nạp vào đầu mọi lệnh → AI không lặp lại. Commit file lessons để cả team dùng chung.
|
|
23
23
|
|
|
24
24
|
> **Xử lý feedback từ tester:** Tester `/report-bug` và `/propose-scenario` commit vào `{spec_source}/feedback/` của spec repo. PO/Dev **thấy chúng khi chạy `/sync`** (dòng `📥 New tester feedback` liệt kê bug + proposal mới kéo về). PO review proposal:
|
|
25
|
-
> - **Map vào AC sẵn có** → coverage gap thật →
|
|
25
|
+
> - **Map vào AC sẵn có** → coverage gap thật → PO/Dev đặt `Status: accepted` trong file proposal → `/generate-bdd` tự chèn vào `.feature` rồi lưu trữ (`incorporated`); hoặc Dev thêm tay.
|
|
26
26
|
> - Là **PRD change request** (behavior chưa có trong PRD) → PO thêm/sửa AC → bump version → `/generate-bdd` lại.
|
|
27
27
|
|
|
28
28
|
---
|
|
@@ -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)
|