@edupia-tutor/spec-driven-docs 0.14.0 → 0.14.2

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 (162) hide show
  1. package/bin/index.js +12 -1
  2. package/commands/debug.md +436 -436
  3. package/commands/debug.tmpl +111 -111
  4. package/commands/define-product.md +350 -345
  5. package/commands/define-product.tmpl +69 -64
  6. package/commands/dev-gen-test.md +365 -365
  7. package/commands/dev-gen-test.tmpl +63 -63
  8. package/commands/dev-run-test.md +376 -376
  9. package/commands/dev-run-test.tmpl +74 -74
  10. package/commands/dev-smoke-test.md +341 -341
  11. package/commands/dev-smoke-test.tmpl +60 -60
  12. package/commands/fix-bug.md +403 -403
  13. package/commands/fix-bug.tmpl +78 -78
  14. package/commands/generate-bdd.md +513 -513
  15. package/commands/generate-bdd.tmpl +211 -211
  16. package/commands/generate-code.md +481 -483
  17. package/commands/generate-code.tmpl +179 -181
  18. package/commands/generate-design-spec.md +497 -497
  19. package/commands/generate-design-spec.tmpl +220 -220
  20. package/commands/generate-prd.md +452 -400
  21. package/commands/generate-prd.tmpl +50 -200
  22. package/commands/generate-spec-manifest.md +340 -340
  23. package/commands/generate-spec-manifest.tmpl +59 -59
  24. package/commands/generate-tech-docs.md +365 -365
  25. package/commands/generate-tech-docs.tmpl +84 -84
  26. package/commands/learn.md +347 -347
  27. package/commands/learn.tmpl +22 -22
  28. package/commands/map-testids.md +322 -322
  29. package/commands/map-testids.tmpl +41 -41
  30. package/commands/propose-scenario.md +335 -335
  31. package/commands/propose-scenario.tmpl +54 -54
  32. package/commands/qc-analyze.md +323 -324
  33. package/commands/qc-analyze.tmpl +42 -43
  34. package/commands/qc-design-test.md +304 -304
  35. package/commands/qc-design-test.tmpl +23 -23
  36. package/commands/qc-plan.md +297 -297
  37. package/commands/qc-plan.tmpl +16 -16
  38. package/commands/qc-report.md +302 -302
  39. package/commands/qc-report.tmpl +21 -21
  40. package/commands/qc-review.md +298 -298
  41. package/commands/qc-review.tmpl +17 -17
  42. package/commands/qc-run-test.md +337 -337
  43. package/commands/qc-run-test.tmpl +35 -35
  44. package/commands/refine-prd.md +428 -430
  45. package/commands/refine-prd.tmpl +62 -62
  46. package/commands/report-bug.md +351 -351
  47. package/commands/report-bug.tmpl +70 -70
  48. package/commands/review-code.md +364 -364
  49. package/commands/review-code.tmpl +39 -39
  50. package/commands/review-context.md +578 -580
  51. package/commands/review-context.tmpl +212 -212
  52. package/commands/review-tech-docs.md +427 -427
  53. package/commands/review-tech-docs.tmpl +146 -146
  54. package/commands/setup-ai-first.md +239 -239
  55. package/commands/setup-ai-first.tmpl +133 -133
  56. package/commands/sync.md +145 -145
  57. package/commands/sync.tmpl +93 -93
  58. package/commands/update-framework.md +88 -88
  59. package/commands/update-framework.tmpl +36 -36
  60. package/commands/validate-traces.md +381 -381
  61. package/commands/validate-traces.tmpl +100 -100
  62. package/core/FRAMEWORK_VERSION +1 -1
  63. package/core/commands/debug.md +436 -436
  64. package/core/commands/define-product.md +350 -345
  65. package/core/commands/dev-gen-test.md +365 -365
  66. package/core/commands/dev-run-test.md +376 -376
  67. package/core/commands/dev-smoke-test.md +341 -341
  68. package/core/commands/fix-bug.md +403 -403
  69. package/core/commands/generate-bdd.md +513 -513
  70. package/core/commands/generate-code.md +481 -483
  71. package/core/commands/generate-design-spec.md +497 -497
  72. package/core/commands/generate-prd.md +452 -400
  73. package/core/commands/generate-spec-manifest.md +340 -340
  74. package/core/commands/generate-tech-docs.md +365 -365
  75. package/core/commands/learn.md +347 -347
  76. package/core/commands/map-testids.md +322 -322
  77. package/core/commands/propose-scenario.md +335 -335
  78. package/core/commands/qc-analyze.md +323 -324
  79. package/core/commands/qc-design-test.md +304 -304
  80. package/core/commands/qc-plan.md +297 -297
  81. package/core/commands/qc-report.md +302 -302
  82. package/core/commands/qc-review.md +298 -298
  83. package/core/commands/qc-run-test.md +337 -337
  84. package/core/commands/refine-prd.md +428 -430
  85. package/core/commands/report-bug.md +351 -351
  86. package/core/commands/review-code.md +364 -364
  87. package/core/commands/review-context.md +578 -580
  88. package/core/commands/review-tech-docs.md +427 -427
  89. package/core/commands/setup-ai-first.md +239 -239
  90. package/core/commands/sync.md +145 -145
  91. package/core/commands/update-framework.md +88 -88
  92. package/core/commands/validate-traces.md +381 -381
  93. package/core/skills/code/SKILL.md +389 -389
  94. package/core/skills/debug/SKILL.md +391 -391
  95. package/core/skills/design-spec/SKILL.md +318 -318
  96. package/core/skills/discovery/SKILL.md +7 -547
  97. package/core/skills/prd/SKILL.md +298 -394
  98. package/core/skills/setup-ai-first/SKILL.md +80 -80
  99. package/core/skills/spec/SKILL.md +178 -178
  100. package/core/skills/test/SKILL.md +604 -604
  101. package/core/steps/capture-lesson.md +44 -44
  102. package/core/steps/context-loader.md +175 -175
  103. package/core/steps/gate.md +54 -54
  104. package/core/steps/report-footer.md +52 -52
  105. package/core/steps/review-fanout.md +85 -87
  106. package/core/steps/spawn-agent.md +45 -45
  107. package/core/steps/trace-mirror.md +21 -21
  108. package/core/templates/architecture.template.md +37 -37
  109. package/core/templates/design-spec.template.md +77 -77
  110. package/core/templates/platform-guide.template.md +47 -47
  111. package/core/templates/prd.template.md +107 -232
  112. package/core/templates/product-definition.template.md +101 -88
  113. package/core/templates/project-context.yaml +2 -2
  114. package/docs/01-getting-started/core-concepts.md +1 -1
  115. package/docs/01-getting-started/quickstart.md +7 -7
  116. package/docs/02-guides/developer/bdd-and-trace.md +1 -1
  117. package/docs/02-guides/developer/scenarios.md +5 -5
  118. package/docs/02-guides/product-owner/handoff-checklist.md +1 -1
  119. package/docs/02-guides/product-owner/scenarios.md +23 -23
  120. package/docs/02-guides/tester/bug-reporting.md +2 -2
  121. package/docs/02-guides/tester/reading-specs.md +2 -2
  122. package/docs/02-guides/tester/scenarios.md +1 -1
  123. package/docs/02-guides/tester/spec-manifest.md +3 -3
  124. package/docs/02-guides/tester/workflow.md +1 -1
  125. package/docs/03-concepts/architecture.md +3 -3
  126. package/docs/03-concepts/pipeline.md +3 -3
  127. package/docs/04-operations/publishing.md +20 -3
  128. package/docs/04-operations/sync-and-update.md +5 -5
  129. package/docs/05-reference/command-cheatsheet.md +2 -2
  130. package/docs/05-reference/commands.md +8 -8
  131. package/package.json +1 -1
  132. package/scripts/migrate-specs.js +5 -3
  133. package/scripts/rename-prd-files.js +174 -0
  134. package/skills/code/SKILL.md +389 -389
  135. package/skills/code/SKILL.tmpl +56 -56
  136. package/skills/debug/SKILL.md +391 -391
  137. package/skills/debug/SKILL.tmpl +60 -60
  138. package/skills/design-spec/SKILL.md +318 -318
  139. package/skills/design-spec/SKILL.tmpl +37 -37
  140. package/skills/discovery/SKILL.md +7 -547
  141. package/skills/discovery/SKILL.tmpl +7 -140
  142. package/skills/prd/SKILL.md +298 -394
  143. package/skills/prd/SKILL.tmpl +40 -151
  144. package/skills/setup-ai-first/SKILL.md +80 -80
  145. package/skills/setup-ai-first/SKILL.tmpl +28 -28
  146. package/skills/spec/SKILL.md +178 -178
  147. package/skills/spec/SKILL.tmpl +20 -20
  148. package/skills/test/SKILL.md +604 -604
  149. package/skills/test/SKILL.tmpl +44 -44
  150. package/steps/capture-lesson.md +44 -44
  151. package/steps/context-loader.md +175 -175
  152. package/steps/gate.md +54 -54
  153. package/steps/report-footer.md +52 -52
  154. package/steps/review-fanout.md +85 -87
  155. package/steps/spawn-agent.md +45 -45
  156. package/steps/trace-mirror.md +21 -21
  157. package/templates/architecture.template.md +37 -37
  158. package/templates/design-spec.template.md +77 -77
  159. package/templates/platform-guide.template.md +47 -47
  160. package/templates/prd.template.md +107 -232
  161. package/templates/product-definition.template.md +101 -88
  162. package/templates/project-context.yaml +2 -2
@@ -1,254 +1,104 @@
1
- # /generate-prd — Generate Product Requirements Document
1
+ # /generate-prd — Sinh Product Requirements Document
2
2
 
3
3
  ## Gate
4
4
  {{include:steps/gate.md}}
5
5
 
6
- *Note: For this command, the target file in Step 1 is a product-definition file in `{paths.product_definitions_dir}/`. Resolve it from `$ARGUMENTS` or list the directory and ask.*
6
+ *Lưu ý: Với lệnh này, target file Bước 1 một file product-definition trong `{paths.product_definitions_dir}/`. Phân giải từ `$ARGUMENTS` hoặc liệt thư mục và hỏi.*
7
7
 
8
8
  ## Context
9
9
  {{include:steps/context-loader.md}}
10
10
 
11
- *Additional context for this command: Read the full product-definition file. Extract: **TICKET-ID**, **domain**, **feature name**, Phases 1-7 data.*
11
+ *Context bổ sung cho lệnh này: Đọc toàn bộ file product-definition. Trích xuất: **TICKET-ID**, **domain**, **tên feature**, dữ liệu Phase 1-7, và bảng **Chuẩn hoá thuật ngữ** (Terminology Map ở Phase 0 — các cặp `thuật ngữ PO → thuật ngữ chuẩn`). Lưu bản đồ này để áp dụng ở bước Quy tắc thuật ngữ. **Nếu Phase 7 (Validation Report) còn `Xung đột phát hiện` / `Mục còn thiếu` khác "None" → diễn đạt lại mỗi mục thành một câu hỏi theo format `Q… — [AI DRAFT]` của section "Giả định AI" (nêu rõ độ vênh + cần PO chốt điều gì), thay vì dán thô. AI không tự quyết thay PO.***
12
12
 
13
- CHECKPOINT before generating: "Generate PRD for **{TICKET-ID} — {feature}** (domain: {domain}). Continue? (Y/N)"
13
+ CHECKPOINT trước khi sinh: "Sinh PRD cho **{TICKET-ID} — {feature}** (domain: {domain}). Tiếp tục? (Y/N)"
14
14
 
15
15
  ---
16
16
 
17
- ## Terminology Rules *(apply if business-dictionary.md exists)*
17
+ ## Quy tắc thuật ngữ *(áp dụng nếu business-dictionary.md tồn tại)*
18
18
 
19
- - **Replace banned terms**: substitute every banned term with its canonical equivalent (see dictionary § Banned Terms).
20
- - **Use canonical terms**: only use terms defined in dictionary.
21
- - **NEW TERM DETECTION**: If a term from PO input appears ≥2 times and is NOT in dictionary → **STOP** and ask PO:
22
- - What does that term mean in the system context?
23
- - What should the English canonical term be?
24
- - Should it be added to business-dictionary.md?
25
- After PO confirms update `business-dictionary.md` (if agreed) → continue generation.
26
- - If no banned terms found and all terms are canonicalproceed without interruption.
19
+ - **Áp dụng Terminology Map từ product-definition**: với mỗi cặp `thuật ngữ PO thuật ngữ chuẩn` trong bảng **Chuẩn hoá thuật ngữ** (Phase 0 của product-definition), dùng **thuật ngữ chuẩn** khi viết PRD. Đây là bản đồ PO đã xác nhận ở discovery — luôn ưu tiên áp dụng kể cả khi business-dictionary.md vắng mặt, để PRD nhất quán với product-definition. Nếu bảng trống/không có → bỏ qua âm thầm.
20
+ - **Thay banned term**: thay mọi banned term bằng bản chuẩn tương đương (xem dictionary § Banned Terms).
21
+ - **Dùng canonical term**: chỉ dùng các thuật ngữ được định nghĩa trong dictionary.
22
+ - **NEW TERM DETECTION**: Nếu một thuật ngữ trong input PO xuất hiện ≥2 lần và KHÔNG có trong dictionary → **DỪNG** và hỏi PO:
23
+ - Thuật ngữ đó nghĩa trong ngữ cảnh hệ thống?
24
+ - English canonical term nên dùng là gì?
25
+ - cần bổ sung vào business-dictionary.md không?
26
+ Sau khi PO confirm cập nhật `business-dictionary.md` (nếu đồng ý)tiếp tục sinh.
27
+ - Nếu không có banned term và tất cả thuật ngữ đều chuẩn → tiếp tục không gián đoạn.
27
28
 
28
- ## Cross-Reference Rule
29
+ ## Quy tắc Cross-Reference
29
30
 
30
- Any mention of another TICKET-ID anywhere in the PRD (pre-condition, BR, note, appendix) → **MUST** be an inline link:
31
+ Bất kỳ chỗ nào nhắc tới một TICKET-ID khác trong PRD (pre-condition, BR, ghi chú, appendix) → **PHẢI** inline link. Mỗi PRD sống trong feature-package riêng (`{paths.specs_dir}/{domain}/{prd-slug-khác}/`), nên link trỏ sang folder anh em:
31
32
  ```
32
- [TICKET-ID](./TICKET-ID-slug.md)
33
+ [TICKET-ID khác](../{prd-slug-khác}/{TICKET-ID-khác}-{prd-slug-khác}.md)
33
34
  ```
34
- Never leave TICKET-ID as plain text if a corresponding PRD file exists in `{paths.specs_dir}/{domain}/{prd-slug}/`.
35
+ Không bao giờ để TICKET-ID dạng plain text nếu file PRD tương ứng tồn tại trong `{paths.specs_dir}/{domain}/`.
35
36
 
36
- ## UC and BR Numbering Convention
37
+ ## Quy ước đánh số UC BR
37
38
 
38
- - **UC ID**: `{TICKET-ID}-UC{N}` — N starts at 1, increments per use case.
39
- - **BR ID**: `{TICKET-ID}-UC{N}-BR{M}` — **M increments across the whole PRD** (does NOT reset per UC).
40
- - Example: UC1 → BR1, BR2; UC2 → BR3, BR4 (NOT BR1, BR2 again).
39
+ - **UC ID**: `{TICKET-ID}-UC{N}` — N bắt đầu từ 1, tăng theo từng use case.
40
+ - **BR ID**: `{TICKET-ID}-UC{N}-BR{M}` — **M tăng liên tục trên toàn PRD** (KHÔNG reset theo từng UC).
41
+ - dụ: UC1 → BR1, BR2; UC2 → BR3, BR4 (KHÔNG phải BR1, BR2 lại từ đầu).
41
42
 
42
43
  ---
43
44
 
44
- ## Platform Strategy — PRD is platform-agnostic (Option C)
45
+ ## Platform Strategy — PRD tài liệu nghiệp vụ (không technical)
45
46
 
46
- PRD mô tả **WHAT** (yêu cầu nghiệp vụ) — không phụ thuộc vào platform nào implement.
47
- Viết AC theo business outcome, không theo UI/API details:
47
+ PRD mô tả **WHAT** (yêu cầu nghiệp vụ) — không nhét chi tiết **kỹ thuật** (API, token, endpoint, HTTP status, tên class/bảng/cột DB, query). Những thứ đó thuộc **Tech Docs**.
48
+ PRD **được phép** User Flow + Wireframe ở mức nghiệp vụ (§4) để BA/QC/Dev cùng hình dung; chỉ **chi tiết visual** (màu sắc, layout pixel, animation, micro-interaction) mới thuộc **Design Spec**.
48
49
 
49
- | ✅ Viết trong PRD (platform-agnostic) | ❌ Không viết trong PRD |
50
+ | ✅ Viết trong PRD (nghiệp vụ) | ❌ KHÔNG viết trong PRD |
50
51
  |---|---|
51
- | "Đăng nhập thành công → truy cập được tính năng" | "Click button show toast" ← Design Spec |
52
- | "Sai password 5 lần → khoá tài khoản 30 phút" | "API trả về JWT token" ← Tech Docs |
53
- | "Session hết hạn yêu cầu xác thực lại" | "Hiển thị spinner khi loading" ← Design Spec |
52
+ | "Đăng nhập thành công → truy cập được tính năng" | "API trả về JWT token" ← Tech Docs |
53
+ | "Sai mật khẩu 5 lần → khoá tài khoản 30 phút" | "Hiển thị spinner khi loading" ← Design Spec |
54
+ | Wireframe mức nghiệp vụ: màn hình gì, hành động ra kết quả gì | "Animation fade 300ms, màu #FF0000" ← Design Spec |
54
55
 
55
56
  **Một PRD phục vụ tất cả platform:**
56
57
  - **FE/App team** → đọc PRD + Design Spec → `/generate-bdd` (UI-level scenarios)
57
58
  - **BE team** → đọc PRD trực tiếp → `/generate-bdd` (API-level scenarios)
58
- - Design Spec là tài liệu riêng cho FE/App — **không trộn vào PRD**
59
+ - Design Spec là tài liệu **chi tiết visual** riêng cho FE/App — Wireframe nghiệp vụ trong PRD chỉ là khung.
59
60
 
60
- Khi viết AC, nếu PO đề cập chi tiết UI (màu sắc, layout, animation) → nhắc nhở:
61
- *"Chi tiết UI này thuộc về Design Spec, không thuộc PRD. Ghi nhận lại để tạo Design Spec sau."*
61
+ Khi viết AC, nếu PO đề cập chi tiết visual (màu sắc, animation, layout pixel) → nhắc nhở:
62
+ *"Chi tiết visual này thuộc về Design Spec, không thuộc PRD. Ghi nhận lại để tạo Design Spec sau."*
62
63
 
63
64
  ---
64
65
 
65
66
  ## Generate
66
67
 
67
- Write `{paths.specs_dir}/{domain}/{prd-slug}/prd.md` using the structure below.
68
+ Ghi `{paths.specs_dir}/{domain}/{prd-slug}/{TICKET-ID}-{prd-slug}.md` theo cấu trúc dưới đây.
68
69
 
69
- ---
70
-
71
- ```markdown
72
- # {TICKET-ID} {Feature Name}
73
-
74
- ---
75
-
76
- ## Metadata
77
-
78
- | Field | Value |
79
- |---------------|----------------------------------|
80
- | **PRD ID** | {TICKET-ID} |
81
- | **Version** | 1.0 |
82
- | **Status** | draft |
83
- | **Author** | {PO name or "AI-assisted"} |
84
- | **Domain** | {domain} |
85
- | **Created** | {YYYY-MM-DD} |
86
- | **Updated** | {YYYY-MM-DD} |
87
- | **API Source** | *(bỏ trống nếu greenfield — thêm `existing` nếu API đã tồn tại trên hệ thống)* |
88
-
89
- ---
90
-
91
- # Feature
92
-
93
- {Describe the capability or function this feature provides — 2-3 concise sentences.}
94
-
95
- ---
96
-
97
- # 1. Overview
98
-
99
- ## a. User Story
100
-
101
- - **As a** {User role}
102
- - **I want to** {User goal}
103
- - **So that** {Business value}
104
-
105
- ## b. Scope
106
-
107
- **In Scope**
108
-
109
- - {Function 1}
110
- - {Function 2}
111
-
112
- ---
113
-
114
- # 2. Acceptance Criteria
115
-
116
- - **AC1:** {Acceptance criterion — testable, observable, no UI details}
117
- - **AC2:** {Acceptance criterion}
118
-
119
- ---
120
-
121
- # 3. Use Case
122
-
123
- #### {TICKET-ID}-UC1: {Use Case Name}
124
-
125
- - **Actor:** {User performing the action}
126
- - **Description:** {Business scenario description — 1 sentence}
127
- - **Pre-condition:** {Condition that must be true BEFORE use case begins}
128
- - **Post-condition:** {State / result AFTER use case completes}
129
-
130
- **Business Rule**
131
-
132
- | ID | Business Rule |
133
- |----|---------------|
134
- | {TICKET-ID}-UC1-BR1 | {Rule — WHAT the system must do} |
135
- | {TICKET-ID}-UC1-BR2 | {Rule} |
136
-
137
- **Business Logic**
138
-
139
- **{TICKET-ID}-UC1-BR1:**
140
- - Logic 1
141
- - Logic 2
142
- - Logic 3
143
-
144
- **{TICKET-ID}-UC1-BR2:**
145
- - Logic
146
-
147
- ---
148
-
149
- # 4. UI/UX Guidelines
150
-
151
- ## a. User Flow
152
-
153
- {Brief description of sequence and decision branches}
154
-
155
- ```mermaid
156
- flowchart TD
157
- A[Step 1: ...] --> B[Step 2: ...]
158
- B --> C{Condition?}
159
- C -->|Yes| D[Result A]
160
- C -->|No| E[Result B]
161
- ```
162
-
163
- ## b. Wireframe
164
-
165
- **Screen 1: {Screen Name}**
166
-
167
- **Screen:** {Screen name}
168
-
169
- **Components:**
170
- - {Component 1}
171
- - {Component 2}
172
- - {Component 3}
173
-
174
- **Actions:**
175
- - {Action 1} → {Result}
176
- - {Action 2} → {Result}
70
+ > **Quy ước tên file PRD:** `{TICKET-ID}-{prd-slug}.md` — vd `SEG01-segment-scoring-service.md`. KHÔNG đặt tên `prd.md`. Mỗi feature-package có đúng **một** file PRD ở cấp gốc folder (cạnh `bdd/`, `tech-docs/`, `design-spec/`); tính duy nhất nằm ở cả tên folder lẫn TICKET-ID trong tên file.
177
71
 
178
72
  ---
179
73
 
180
- # Appendix
181
-
182
- ## Original PO Input
183
-
184
- > {Paste verbatim content from product-definition file — Context + Problem + Goal}
185
-
186
- ## References
187
-
188
- - {[TICKET-ID](./TICKET-ID-slug.md) — relationship description}
189
-
190
- ## Existing API Contract *(chỉ điền khi API Source = existing)*
191
-
192
- > API đã tồn tại trên hệ thống. PO ghi lại contract để BDD generation dùng trực tiếp —
193
- > không cần tổng hợp từ FE/App BDD, không cần T7 sign-off gate.
194
-
195
- | Method | Path | Auth | Request | Response |
196
- |--------|------|------|---------|----------|
197
- | {GET/POST/PUT/DELETE} | {/api/v1/path} | {Bearer / none} | `{ field: type }` | `{ field: type }` |
198
-
199
- **Error responses:**
200
-
201
- | HTTP Status | Error Code | Khi nào xảy ra |
202
- |-------------|------------|----------------|
203
- | {4xx/5xx} | {ERR_CODE} | {condition} |
204
-
205
- ---
206
-
207
- ## AI Assumptions
208
-
209
- > Assumptions AI made when information was incomplete. Needs PO review and confirmation.
210
-
211
- - {Assumption 1 — [AI DRAFT]}
212
- ```
74
+ ````markdown
75
+ {{include:templates/prd.template.md}}
76
+ ````
213
77
 
214
78
  ---
215
79
 
216
- ## Quality Checklist *(verify before writing)*
80
+ ## Quality Checklist *(kiểm tra trước khi ghi)*
217
81
 
218
- - [ ] Every AC is testable (clear pass/fail), no UI details (colors, fonts, button positions)
219
- - [ ] Each UC has Actor / Description / Pre-condition / Post-condition
220
- - [ ] Business Rule (WHAT) is separate from Business Logic (HOW)
221
- - [ ] BR ID increments across whole PRD — does not reset per UC
222
- - [ ] Every TICKET-ID cross-reference is an inline link `[TICKET-ID](./file.md)`
223
- - [ ] No banned terms (if dictionary exists)
224
- - [ ] User Flow includes error path / exception path
225
- - [ ] Wireframe covers all screens related to Use Cases
82
+ - [ ] Mọi AC đều testable (pass/fail rõ ràng), không chi tiết kỹ thuật (API/token/DB) hay visual chi tiết (màu sắc, font, animation)
83
+ - [ ] Mỗi UC Actor / Description / Pre-condition / Post-condition
84
+ - [ ] Business Rule (WHAT) Business Logic (HOW) nằm chung bảng 3 cột `ID | Business Rule | Business Logic`
85
+ - [ ] BR ID tăng liên tục trên toàn PRD — không reset theo từng UC
86
+ - [ ] Mọi cross-reference TICKET-ID đều inline link `[TICKET-ID](./file.md)`
87
+ - [ ] Không banned term (nếu dictionary tồn tại)
88
+ - [ ] User Flow cả luồng lỗi / luồng ngoại lệ
89
+ - [ ] Wireframe phủ tất cả màn hình liên quan tới Use Case
226
90
  - [ ] **Định dạng (readability)**: User Story / AC / các field của UC (Actor, Description, Pre/Post-condition) viết dạng bullet `- **Label:** …` — mỗi ý MỘT dòng, KHÔNG viết các dòng liền nhau (sẽ bị dồn thành 1 đoạn khi render); có một dòng trống trước và sau mỗi bảng
227
91
 
228
- ## Changelog Section (append at end of PRD)
229
-
230
- Every PRD must end with this section. Start at v1.0:
231
-
232
- ```markdown
233
- ---
234
-
235
- ## Changelog
236
-
237
- | Version | Date | Changes |
238
- |---------|------|---------|
239
- | 1.0 | {YYYY-MM-DD} | Initial version |
240
- ```
241
-
242
92
  ## Output
243
93
 
244
94
  {{include:steps/report-footer.md}}
245
95
 
246
96
  ```
247
- /generate-prd Complete — {TICKET-ID}
97
+ /generate-prd Hoàn tất — {TICKET-ID}
248
98
  ---
249
99
  Status : ✅ Complete
250
100
  Output Artifacts:
251
- created {paths.specs_dir}/{domain}/{prd-slug}/prd.md (PRD v1.0)
252
- Next : /refine-prd {paths.specs_dir}/{domain}/{prd-slug}/prd.md
253
- then /review-context {prd-file} ← verify PRD quality before generating BDD
101
+ created {paths.specs_dir}/{domain}/{prd-slug}/{TICKET-ID}-{prd-slug}.md (PRD v1.0)
102
+ Next : /refine-prd {paths.specs_dir}/{domain}/{prd-slug}/{TICKET-ID}-{prd-slug}.md
103
+ rồi /review-context {prd-file} ← kiểm tra chất lượng PRD trước khi sinh BDD
254
104
  ```