@edupia-tutor/spec-driven-docs 0.14.6 → 0.14.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. package/bin/index.js +1 -1
  2. package/commands/debug.md +1 -1
  3. package/commands/define-product.md +1 -1
  4. package/commands/dev-gen-test.md +1 -1
  5. package/commands/dev-run-test.md +1 -1
  6. package/commands/dev-smoke-test.md +1 -1
  7. package/commands/fix-bug.md +1 -1
  8. package/commands/generate-bdd.md +74 -5
  9. package/commands/generate-bdd.tmpl +73 -4
  10. package/commands/generate-code.md +19 -2
  11. package/commands/generate-code.tmpl +18 -1
  12. package/commands/generate-design-spec.md +50 -6
  13. package/commands/generate-design-spec.tmpl +49 -5
  14. package/commands/generate-prd.md +9 -5
  15. package/commands/generate-prd.tmpl +1 -0
  16. package/commands/generate-spec-manifest.md +1 -1
  17. package/commands/generate-tech-docs.md +2 -1
  18. package/commands/generate-tech-docs.tmpl +1 -0
  19. package/commands/learn.md +1 -1
  20. package/commands/map-testids.md +1 -1
  21. package/commands/propose-scenario.md +7 -3
  22. package/commands/propose-scenario.tmpl +6 -2
  23. package/commands/qc-analyze.md +15 -1
  24. package/commands/qc-analyze.tmpl +14 -0
  25. package/commands/qc-design-test.md +1 -1
  26. package/commands/qc-plan.md +1 -1
  27. package/commands/qc-report.md +1 -1
  28. package/commands/qc-review.md +1 -1
  29. package/commands/qc-run-test.md +1 -1
  30. package/commands/refine-prd.md +33 -13
  31. package/commands/refine-prd.tmpl +32 -12
  32. package/commands/report-bug.md +1 -1
  33. package/commands/review-code.md +1 -1
  34. package/commands/review-context.md +49 -27
  35. package/commands/review-context.tmpl +48 -26
  36. package/commands/review-tech-docs.md +1 -1
  37. package/commands/setup-ai-first.md +10 -10
  38. package/commands/setup-ai-first.tmpl +9 -9
  39. package/commands/sync.md +1 -1
  40. package/commands/update-framework.md +1 -1
  41. package/commands/validate-traces.md +2 -1
  42. package/commands/validate-traces.tmpl +1 -0
  43. package/core/FRAMEWORK_VERSION +1 -1
  44. package/core/commands/debug.md +1 -1
  45. package/core/commands/define-product.md +1 -1
  46. package/core/commands/dev-gen-test.md +1 -1
  47. package/core/commands/dev-run-test.md +1 -1
  48. package/core/commands/dev-smoke-test.md +1 -1
  49. package/core/commands/fix-bug.md +1 -1
  50. package/core/commands/generate-bdd.md +74 -5
  51. package/core/commands/generate-code.md +19 -2
  52. package/core/commands/generate-design-spec.md +50 -6
  53. package/core/commands/generate-prd.md +9 -5
  54. package/core/commands/generate-spec-manifest.md +1 -1
  55. package/core/commands/generate-tech-docs.md +2 -1
  56. package/core/commands/learn.md +1 -1
  57. package/core/commands/map-testids.md +1 -1
  58. package/core/commands/propose-scenario.md +7 -3
  59. package/core/commands/qc-analyze.md +15 -1
  60. package/core/commands/qc-design-test.md +1 -1
  61. package/core/commands/qc-plan.md +1 -1
  62. package/core/commands/qc-report.md +1 -1
  63. package/core/commands/qc-review.md +1 -1
  64. package/core/commands/qc-run-test.md +1 -1
  65. package/core/commands/refine-prd.md +33 -13
  66. package/core/commands/report-bug.md +1 -1
  67. package/core/commands/review-code.md +1 -1
  68. package/core/commands/review-context.md +49 -27
  69. package/core/commands/review-tech-docs.md +1 -1
  70. package/core/commands/setup-ai-first.md +10 -10
  71. package/core/commands/sync.md +1 -1
  72. package/core/commands/update-framework.md +1 -1
  73. package/core/commands/validate-traces.md +2 -1
  74. package/core/skills/code/SKILL.md +7 -759
  75. package/core/skills/debug/SKILL.md +9 -859
  76. package/core/skills/design-spec/SKILL.md +3 -582
  77. package/core/skills/prd/SKILL.md +5 -464
  78. package/core/skills/setup-ai-first/SKILL.md +3 -208
  79. package/core/skills/spec/SKILL.md +7 -450
  80. package/core/skills/test/SKILL.md +10 -1290
  81. package/core/steps/report-footer.md +1 -1
  82. package/core/steps/spawn-agent.md +12 -7
  83. package/core/templates/prd.template.md +7 -4
  84. package/core/templates/project-context.yaml +2 -2
  85. package/docs/01-getting-started/core-concepts.md +3 -3
  86. package/docs/01-getting-started/quickstart.md +4 -3
  87. package/docs/02-guides/bdd-input-checklist.md +68 -0
  88. package/docs/02-guides/developer/README.md +3 -0
  89. package/docs/02-guides/developer/bdd-and-trace.md +4 -3
  90. package/docs/02-guides/developer/commands.md +3 -3
  91. package/docs/02-guides/developer/pr-checklist.md +1 -0
  92. package/docs/02-guides/developer/scenarios.md +2 -2
  93. package/docs/02-guides/developer/workflow.md +3 -3
  94. package/docs/02-guides/prd-input-checklist.md +94 -0
  95. package/docs/02-guides/product-owner/README.md +5 -3
  96. package/docs/02-guides/product-owner/commands.md +1 -1
  97. package/docs/02-guides/product-owner/handoff-checklist.md +5 -5
  98. package/docs/02-guides/product-owner/scenarios.md +19 -17
  99. package/docs/02-guides/tech-docs-input-checklist.md +82 -0
  100. package/docs/02-guides/tester/README.md +1 -1
  101. package/docs/02-guides/tester/bug-reporting.md +1 -1
  102. package/docs/02-guides/tester/qc-automation.md +1 -1
  103. package/docs/03-concepts/README.md +1 -0
  104. package/docs/03-concepts/mechanisms-explained.md +34 -0
  105. package/docs/03-concepts/pipeline.md +12 -9
  106. package/docs/03-concepts/traceability.md +7 -4
  107. package/docs/04-operations/bug-flow.md +2 -0
  108. package/docs/04-operations/sync-and-update.md +3 -3
  109. package/docs/05-reference/command-cheatsheet.md +9 -9
  110. package/docs/05-reference/commands.md +12 -10
  111. package/docs/05-reference/trace-schema.md +2 -1
  112. package/package.json +1 -1
  113. package/skills/code/SKILL.md +7 -759
  114. package/skills/code/SKILL.tmpl +7 -164
  115. package/skills/debug/SKILL.md +9 -859
  116. package/skills/debug/SKILL.tmpl +9 -252
  117. package/skills/design-spec/SKILL.md +3 -582
  118. package/skills/design-spec/SKILL.tmpl +3 -87
  119. package/skills/prd/SKILL.md +5 -464
  120. package/skills/prd/SKILL.tmpl +5 -63
  121. package/skills/setup-ai-first/SKILL.md +3 -208
  122. package/skills/setup-ai-first/SKILL.tmpl +3 -108
  123. package/skills/spec/SKILL.md +7 -450
  124. package/skills/spec/SKILL.tmpl +7 -162
  125. package/skills/test/SKILL.md +10 -1290
  126. package/skills/test/SKILL.tmpl +10 -288
  127. package/steps/report-footer.md +1 -1
  128. package/steps/spawn-agent.md +12 -7
  129. package/templates/prd.template.md +7 -4
  130. package/templates/project-context.yaml +2 -2
@@ -60,7 +60,7 @@ Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
60
60
  | /define-product | `/generate-prd {product-definition-file}` |
61
61
  | /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
62
62
  | /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
63
- | /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (rồi BDD sau khi sign-off); BE: `/generate-bdd {prd-file}` trực tiếp; sửa PRD nếu NEEDS_FIX |
63
+ | /review-context (PRD) | Khi 0 critical → PO đặt `Status: approved`, rồi FE/App: `/generate-design-spec {prd-file}` ( design sign-off → BDD); BE: `/generate-bdd {prd-file}`. Còn critical/NEEDS_FIX sửa PRD (giữ draft) |
64
64
  | /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
65
65
  | /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
66
66
  | /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
@@ -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
 
@@ -14,7 +14,7 @@
14
14
  # 3. When a workflow says "→ key.subkey", look up that key
15
15
  # and use the resolved value as the actual path
16
16
  # 4. All paths are RELATIVE to workspace root
17
- # 5. For "{domain}", substitute from spec's @trace.domain
17
+ # 5. For "{domain}", substitute the feature's domain (PRD: row `Domain` in Metadata / folder path; .feature: @trace.domain)
18
18
  # =============================================================
19
19
 
20
20
  project:
@@ -132,7 +132,7 @@ domains:
132
132
  # With spec_source set, only ONE override is needed instead of four separate dir vars.
133
133
  #
134
134
  # services: # domain → service submodule routing
135
- # {{DOMAIN_1}}: # must match @trace.domain in PRD files
135
+ # {{DOMAIN_1}}: # must match the PRD's `Domain` (Metadata row) / folder path segment
136
136
  # path: "{{SERVICE_SUBMODULE_DIR}}" # relative path to service submodule (code + .trace/)
137
137
  # module: "{{STACK_MODULE}}" # e.g., java-spring, nextjs, flutter
138
138
  # # NOTE: with spec_source set, BDD + tech-docs are cross-team and live in the spec repo —
@@ -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)
@@ -93,7 +93,7 @@ my-project-umbrella/ ← mở Claude Code ở đây
93
93
  ```
94
94
 
95
95
  - **Spec module** (`{spec_source}/`): chứa PRD, Design Spec, **ALL BDD (web/app/system)**, tech-docs (BE API contract + FE tech-design), domain-knowledge, feedback — shared để mọi umbrella đọc cùng nguồn. Report canonical của Living Docs cũng sinh tại `{spec_source}/.living-docs/`.
96
- - **Routing:** context-loader đọc `@trace.domain` từ PRD → tra trong `services` config → route **code** vào đúng service submodule; **BDD + tech-docs + specs + `.trace/` + feedback** đều ở spec module (cross-team, một chỗ cho PM). PRD phải có `@trace.domain` khớp một key trong `services`.
96
+ - **Routing:** context-loader đọc row `Domain` (bảng Metadata) từ PRD → tra trong `services` config → route **code** vào đúng service submodule; **BDD + tech-docs + specs + `.trace/` + feedback** đều ở spec module (cross-team, một chỗ cho PM). PRD phải có row `Domain` khớp một key trong `services`.
97
97
 
98
98
  Setup umbrella đầy đủ, file ownership, two-layer commit, multi-platform → [Operations › Sync & Update §4 Umbrella mode](../04-operations/sync-and-update.md#4-umbrella-mode--git-submodule).
99
99
 
@@ -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:**
@@ -57,11 +57,12 @@ Framework dùng metadata `@trace.*` để liên kết PRD → BDD → Code. (Chi
57
57
 
58
58
  | Field | Vị trí | Ý nghĩa |
59
59
  |---|---|---|
60
- | `@trace.domain` | PRD frontmatter | Domain của feature (auth, payment, ...) — dùng để route vào đúng service submodule |
60
+ | `Domain` | bảng Metadata PRD | Domain của feature (auth, payment, ...) — dùng để route vào đúng service submodule |
61
61
  | `@trace.module` | BDD / Tech Doc header | Module trong codebase sẽ implement |
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
- | `@trace.status` | PRD frontmatter | `draft` / `approved` — chỉ code khi `approved` |
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` |
@@ -70,7 +71,7 @@ Framework dùng metadata `@trace.*` để liên kết PRD → BDD → Code. (Chi
70
71
  ### Ví dụ trace chain hoàn chỉnh
71
72
 
72
73
  ```
73
- specs/auth/login/{TICKET-ID}-login.md ← @trace.domain: auth, @trace.status: approved
74
+ specs/auth/login/{TICKET-ID}-login.md ← Metadata: Domain: auth, Status: approved
74
75
 
75
76
  specs/auth/login/bdd/system/FT-001-UC1-login.feature ← @trace.prd: FT-001 · web/app/system riêng (system tổng hợp từ web+app)
76
77
 
@@ -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
 
@@ -21,7 +21,7 @@
21
21
  (lấy PRD + BDD mới nhất từ PO)
22
22
 
23
23
  2. /review-context my-project-specs/specs/payment/checkout/{TICKET-ID}-checkout.md
24
- → Kiểm tra @trace.status = approved (không code khi còn draft)
24
+ → Kiểm tra Status = approved (bảng Metadata PRD; không code khi còn draft)
25
25
  → Đọc kỹ AC, UC, BR
26
26
 
27
27
  3. Đọc BDD tương ứng theo platform của mình:
@@ -343,7 +343,7 @@ code . ← hoặc claude .
343
343
  # → sync Living Docs panel
344
344
 
345
345
  # 4. Framework tự detect umbrella mode từ project-context.yaml
346
- # Khi chạy /review-context với PRD có @trace.domain: be
346
+ # Khi chạy /review-context với PRD có Domain: be (bảng Metadata)
347
347
  # → CODE route tới mass-product-be/ · BDD đọc từ spec repo mass-product-spec/specs/{domain}/{prd-slug}/bdd/ (spec_source set)
348
348
  ```
349
349
 
@@ -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
 
@@ -45,7 +45,7 @@ Nhận thông báo PRD + BDD mới từ PO
45
45
 
46
46
 
47
47
  /review-context {prd-file}
48
- → Kiểm tra @trace.domain, @trace.status = approved
48
+ → Kiểm tra Domain, Status = approved (bảng Metadata PRD)
49
49
  → Đọc hiểu AC, UC, BR trong PRD
50
50
  → Đọc BDD tương ứng trong specs/{domain}/{prd-slug}/bdd/{platform}/
51
51
  → Nếu có gì không rõ: hỏi PO TRƯỚC khi tiếp tục
@@ -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
 
@@ -32,8 +34,8 @@ PO/BA Dev team
32
34
 
33
35
  **PO/BA chịu trách nhiệm:**
34
36
  - Đảm bảo PRD platform-agnostic (không chứa UI details hay API specs)
35
- - Đặt `@trace.domain` đúng để dev team routing hoạt động
36
- - Cập nhật `@trace.status: approved` trước khi handoff
37
+ - Đặt row `Domain` (bảng Metadata) đúng để dev team routing hoạt động
38
+ - Cập nhật `Status: approved` (bảng Metadata) trước khi handoff
37
39
  - **Generate BDD cho tất cả platforms** theo thứ tự **outside-in: web → app → system** — System BDD được **tổng hợp từ web+app BDD** (project chỉ-BE thì system gen thẳng từ PRD). Xem [scenarios](scenarios.md).
38
40
  - Thông báo dev team khi có PRD hoặc BDD mới/update
39
41
 
@@ -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
  ---
@@ -5,10 +5,10 @@
5
5
  Trước khi thông báo dev team bắt đầu, kiểm tra:
6
6
 
7
7
  **Metadata:**
8
- - [ ] `@trace.id` có và đúng format (vd: FEAT-01)
9
- - [ ] `@trace.domain` có và khớp với domain names đã thống nhất với dev team
10
- - [ ] `@trace.status: approved` (không phải draft/in-review)
11
- - [ ] `@trace.version` có (vd: 1.0)
8
+ - [ ] Row `Ticket` (bảng Metadata) có và đúng format (vd: FEAT-01)
9
+ - [ ] Row `Domain` có và khớp với domain names đã thống nhất với dev team
10
+ - [ ] Row `Status` = `approved` (không phải draft)
11
+ - [ ] Row `Version` có (vd: 1.0)
12
12
 
13
13
  **Nội dung PRD:**
14
14
  - [ ] Tất cả `{{PLACEHOLDER}}` đã được điền
@@ -23,7 +23,7 @@ Trước khi thông báo dev team bắt đầu, kiểm tra:
23
23
  - [ ] Không có P3 conflict với PRD khác trong cùng domain
24
24
 
25
25
  **Cho FE/App thêm:**
26
- - [ ] Design Spec đã tạo và `@trace.status: approved` (không còn `draft`)
26
+ - [ ] Design Spec đã tạo và `Status: approved` trong Metadata (không còn `draft`)
27
27
  - [ ] Mỗi screen có Figma link node-level (`?node-id=`) — không screen nào bị flag ❌ Missing
28
28
  - [ ] Designer đã sign-off (gate này bị BLOCKED nếu còn screen thiếu node-id link)
29
29
 
@@ -40,13 +40,13 @@ Mở findings file, xem xét từng finding: `accepted` → apply · `modified`
40
40
  ```
41
41
  /review-context specs/auth/FEAT-01-login/FEAT-01-login.md
42
42
  ```
43
- Kiểm tra: `@trace.status`, `@trace.domain`, completeness.
43
+ Kiểm tra: `Status`, `Domain` (bảng Metadata), completeness.
44
44
 
45
45
  **Bước 5 — Approve PRD:**
46
46
  ```yaml
47
- # Trong file PRD, cập nhật:
48
- @trace.status: approved
49
- @trace.version: 1.0
47
+ # Trong bảng Metadata của PRD, cập nhật:
48
+ # | **Status** | approved |
49
+ # | **Version** | 1.0 |
50
50
  ```
51
51
 
52
52
  **Bước 6 — Tạo Design Spec (FE/App):**
@@ -55,7 +55,7 @@ Kiểm tra: `@trace.status`, `@trace.domain`, completeness.
55
55
  ```
56
56
  Agent hỏi platform (web / app). PO phải cung cấp **Figma link node-level** (URL chứa `?node-id=`, lấy bằng right-click vào frame → "Copy link to selection") cho **mỗi screen**. Screen nào thiếu link → bị flag ❌ Missing, Status giữ `draft`, `/generate-bdd` bị BLOCKED cho đến khi đủ link.
57
57
 
58
- Sau khi Designer review + confirm đủ Figma node-id links → `@trace.status: approved`.
58
+ Sau khi Designer review + confirm đủ Figma node-id links → đặt `Status: approved` trong Metadata Design Spec.
59
59
 
60
60
  **Bước 7 — Generate BDD:**
61
61
  ```
@@ -84,7 +84,7 @@ git push
84
84
 
85
85
  ```
86
86
  /define-product → product definition
87
- /generate-prd → PRD với @trace.domain: auth
87
+ /generate-prd → PRD với Domain: auth (bảng Metadata)
88
88
  /review-context --fix → auto-fix
89
89
  /generate-design-spec → design spec cho FE (nếu có designer)
90
90
  /generate-bdd → web → specs/auth/FEAT-01-login/bdd/web/
@@ -115,7 +115,7 @@ git push
115
115
  ```
116
116
  Output: `specs/auth/FEAT-01-login/design-spec/FEAT-01-design-spec-web.md`
117
117
 
118
- Mỗi screen cần Figma link node-id. Screen thiếu → flag ❌ Missing, BLOCKED. Sau khi Designer review → `@trace.status: approved`.
118
+ Mỗi screen cần Figma link node-id. Screen thiếu → flag ❌ Missing, BLOCKED. Sau khi Designer review → đặt `Status: approved` trong Metadata Design Spec.
119
119
 
120
120
  **Bước 2 — Generate BDD:**
121
121
  ```
@@ -162,7 +162,8 @@ Lặp lại cho đến khi `recommendation: APPROVED`.
162
162
 
163
163
  **Bước 1 — Đổi status về draft:**
164
164
  ```yaml
165
- @trace.status: draft
165
+ # Trong bảng Metadata PRD:
166
+ # | **Status** | draft |
166
167
  ```
167
168
 
168
169
  **Bước 2 — Sửa nội dung:**
@@ -178,9 +179,9 @@ Lặp lại cho đến khi `recommendation: APPROVED`.
178
179
 
179
180
  **Bước 4 — Approve và thông báo:**
180
181
  ```yaml
181
- @trace.status: approved
182
- @trace.version: 1.1 # minor bump vì chỉ thêm AC
183
- # major bump (2.0) nếu thay đổi cơ bản
182
+ # Trong bảng Metadata PRD:
183
+ # | **Status** | approved |
184
+ # | **Version** | 1.1 | # minor bump (chỉ thêm AC); major (2.0) nếu thay đổi cơ bản
184
185
  ```
185
186
  ```bash
186
187
  git add specs/auth/FEAT-01-login/FEAT-01-login.md
@@ -225,7 +226,7 @@ services:
225
226
  specs_dir: "loyalty-service/specs/bdd"
226
227
  ```
227
228
 
228
- **Bước 3 — Viết PRD bình thường với `@trace.domain: loyalty`.**
229
+ **Bước 3 — Viết PRD bình thường với `Domain: loyalty` (bảng Metadata).**
229
230
 
230
231
  > **Lưu ý:** Nếu dev team chưa cập nhật services config → `/review-context` P0 check sẽ cảnh báo domain không match.
231
232
 
@@ -281,7 +282,7 @@ specs/
281
282
 
282
283
  ```bash
283
284
  # Xem nhanh tất cả PRDs và status:
284
- grep -r "@trace.status" specs/ --include="*.md"
285
+ grep -rn "\*\*Status\*\*" specs/ --include="*.md"
285
286
  ```
286
287
 
287
288
  ---
@@ -290,10 +291,11 @@ grep -r "@trace.status" specs/ --include="*.md"
290
291
 
291
292
  **Checklist trước khi thông báo:**
292
293
  ```yaml
293
- @trace.id: FEAT-01 ✅
294
- @trace.domain: auth khớp với services keys của dev team
295
- @trace.status: approvedđã approved
296
- @trace.version: 1.0 version number
294
+ # Bảng Metadata PRD:
295
+ # | **Ticket** | FEAT-01 | (đúng format)
296
+ # | **Domain** | auth | khớp services keys của dev team
297
+ # | **Status** | approved | đã approved
298
+ # | **Version** | 1.0 | ✅ có version number
297
299
  ```
298
300
 
299
301
  ```