@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.
Files changed (79) hide show
  1. package/commands/generate-bdd.md +59 -4
  2. package/commands/generate-bdd.tmpl +59 -4
  3. package/commands/generate-code.md +18 -1
  4. package/commands/generate-code.tmpl +18 -1
  5. package/commands/generate-design-spec.md +35 -5
  6. package/commands/generate-design-spec.tmpl +35 -5
  7. package/commands/generate-prd.md +7 -4
  8. package/commands/generate-tech-docs.md +1 -0
  9. package/commands/generate-tech-docs.tmpl +1 -0
  10. package/commands/propose-scenario.md +6 -2
  11. package/commands/propose-scenario.tmpl +6 -2
  12. package/commands/qc-analyze.md +14 -0
  13. package/commands/qc-analyze.tmpl +14 -0
  14. package/commands/refine-prd.md +15 -4
  15. package/commands/refine-prd.tmpl +15 -4
  16. package/commands/review-context.md +15 -11
  17. package/commands/review-context.tmpl +15 -11
  18. package/commands/validate-traces.md +1 -0
  19. package/commands/validate-traces.tmpl +1 -0
  20. package/core/FRAMEWORK_VERSION +1 -1
  21. package/core/commands/generate-bdd.md +59 -4
  22. package/core/commands/generate-code.md +18 -1
  23. package/core/commands/generate-design-spec.md +35 -5
  24. package/core/commands/generate-prd.md +7 -4
  25. package/core/commands/generate-tech-docs.md +1 -0
  26. package/core/commands/propose-scenario.md +6 -2
  27. package/core/commands/qc-analyze.md +14 -0
  28. package/core/commands/refine-prd.md +15 -4
  29. package/core/commands/review-context.md +15 -11
  30. package/core/commands/validate-traces.md +1 -0
  31. package/core/skills/code/SKILL.md +7 -759
  32. package/core/skills/debug/SKILL.md +9 -859
  33. package/core/skills/design-spec/SKILL.md +3 -582
  34. package/core/skills/prd/SKILL.md +5 -464
  35. package/core/skills/setup-ai-first/SKILL.md +3 -208
  36. package/core/skills/spec/SKILL.md +7 -450
  37. package/core/skills/test/SKILL.md +10 -1290
  38. package/core/steps/spawn-agent.md +12 -7
  39. package/core/templates/prd.template.md +7 -4
  40. package/docs/01-getting-started/core-concepts.md +2 -2
  41. package/docs/01-getting-started/quickstart.md +4 -3
  42. package/docs/02-guides/bdd-input-checklist.md +68 -0
  43. package/docs/02-guides/developer/README.md +3 -0
  44. package/docs/02-guides/developer/bdd-and-trace.md +1 -0
  45. package/docs/02-guides/developer/commands.md +3 -3
  46. package/docs/02-guides/developer/pr-checklist.md +1 -0
  47. package/docs/02-guides/developer/workflow.md +2 -2
  48. package/docs/02-guides/prd-input-checklist.md +94 -0
  49. package/docs/02-guides/product-owner/README.md +3 -1
  50. package/docs/02-guides/product-owner/commands.md +1 -1
  51. package/docs/02-guides/tech-docs-input-checklist.md +82 -0
  52. package/docs/02-guides/tester/README.md +1 -1
  53. package/docs/02-guides/tester/bug-reporting.md +1 -1
  54. package/docs/02-guides/tester/qc-automation.md +1 -1
  55. package/docs/03-concepts/README.md +1 -0
  56. package/docs/03-concepts/mechanisms-explained.md +34 -0
  57. package/docs/03-concepts/pipeline.md +12 -9
  58. package/docs/03-concepts/traceability.md +4 -1
  59. package/docs/04-operations/bug-flow.md +2 -0
  60. package/docs/05-reference/command-cheatsheet.md +8 -8
  61. package/docs/05-reference/commands.md +12 -10
  62. package/docs/05-reference/trace-schema.md +2 -1
  63. package/package.json +1 -1
  64. package/skills/code/SKILL.md +7 -759
  65. package/skills/code/SKILL.tmpl +7 -164
  66. package/skills/debug/SKILL.md +9 -859
  67. package/skills/debug/SKILL.tmpl +9 -252
  68. package/skills/design-spec/SKILL.md +3 -582
  69. package/skills/design-spec/SKILL.tmpl +3 -87
  70. package/skills/prd/SKILL.md +5 -464
  71. package/skills/prd/SKILL.tmpl +5 -63
  72. package/skills/setup-ai-first/SKILL.md +3 -208
  73. package/skills/setup-ai-first/SKILL.tmpl +3 -108
  74. package/skills/spec/SKILL.md +7 -450
  75. package/skills/spec/SKILL.tmpl +7 -162
  76. package/skills/test/SKILL.md +10 -1290
  77. package/skills/test/SKILL.tmpl +10 -288
  78. package/steps/spawn-agent.md +12 -7
  79. 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": "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>" }
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. Thực thi logic thường của lệnh cho riêng UC này
112
- 6. Trả về JSON kết quả cấu trúc (định dạng Bước E trên)
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
- ### v1.0 {mô tả} ({date})
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
- | Mục | Thay đổi |
203
- |-----|----------|
204
- | — | Bản đầu — sinh từ product-definition. |
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 (AI review gate mọi transition).
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 trong metadata)
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 (P1P4)
48
+ /review-context specs/{domain}/{prd-slug}/{TICKET-ID}-{prd-slug}.md # quality gate (P0P5)
49
49
  /review-context --resume specs/{domain}/{prd-slug}/{TICKET-ID}-{prd-slug}.md
50
- → ✅ APPROVED → tiếp Phase 3
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 lens (Security/Perf/Arch/Test) | Trước khi tạo PR |
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ó** → thêm scenario vào `.feature` (hoặc `/generate-bdd` lại), rồi `/generate-code` + `/dev-gen-test`
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 lens:<br/>Security · Performance · Architecture · Test"]
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 lens: Security / Performance / Architecture / Test Coverage
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 approve, 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).
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 → để Dev thêm scenario vào `.feature` (hoặc regen).
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 đã approved |
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 rồi đưa vào `.feature`.
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 ngay khi BDD của một UC được approved (`/review-context (BDD)` APPROVED):
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ó một **AI review gate**:
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
- APPROVED → Phase 3 · ❌ NEEDS_FIX → fix + re-run
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
- sign-off + /generate-bdd blocked tới khi mọi screen link)
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
- APPROVED → Phase 4
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 được approve** (`/review-context` (BDD) APPROVED), 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):
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)