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

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 (141) hide show
  1. package/commands/debug.md +435 -435
  2. package/commands/debug.tmpl +111 -111
  3. package/commands/define-product.md +330 -327
  4. package/commands/define-product.tmpl +50 -47
  5. package/commands/dev-gen-test.md +364 -364
  6. package/commands/dev-gen-test.tmpl +63 -63
  7. package/commands/dev-run-test.md +375 -375
  8. package/commands/dev-run-test.tmpl +74 -74
  9. package/commands/dev-smoke-test.md +340 -340
  10. package/commands/dev-smoke-test.tmpl +60 -60
  11. package/commands/fix-bug.md +402 -402
  12. package/commands/fix-bug.tmpl +78 -78
  13. package/commands/generate-bdd.md +512 -512
  14. package/commands/generate-bdd.tmpl +211 -211
  15. package/commands/generate-code.md +480 -482
  16. package/commands/generate-code.tmpl +179 -181
  17. package/commands/generate-design-spec.md +495 -495
  18. package/commands/generate-design-spec.tmpl +219 -219
  19. package/commands/generate-prd.md +445 -396
  20. package/commands/generate-prd.tmpl +45 -198
  21. package/commands/generate-spec-manifest.md +337 -337
  22. package/commands/generate-spec-manifest.tmpl +57 -57
  23. package/commands/generate-tech-docs.md +364 -364
  24. package/commands/generate-tech-docs.tmpl +84 -84
  25. package/commands/learn.md +346 -346
  26. package/commands/learn.tmpl +22 -22
  27. package/commands/map-testids.md +321 -321
  28. package/commands/map-testids.tmpl +41 -41
  29. package/commands/propose-scenario.md +334 -334
  30. package/commands/propose-scenario.tmpl +54 -54
  31. package/commands/qc-analyze.md +322 -323
  32. package/commands/qc-analyze.tmpl +42 -43
  33. package/commands/qc-design-test.md +303 -303
  34. package/commands/qc-design-test.tmpl +23 -23
  35. package/commands/qc-plan.md +296 -296
  36. package/commands/qc-plan.tmpl +16 -16
  37. package/commands/qc-report.md +301 -301
  38. package/commands/qc-report.tmpl +21 -21
  39. package/commands/qc-review.md +297 -297
  40. package/commands/qc-review.tmpl +17 -17
  41. package/commands/qc-run-test.md +336 -336
  42. package/commands/qc-run-test.tmpl +35 -35
  43. package/commands/refine-prd.md +426 -428
  44. package/commands/refine-prd.tmpl +61 -61
  45. package/commands/report-bug.md +350 -350
  46. package/commands/report-bug.tmpl +70 -70
  47. package/commands/review-code.md +363 -363
  48. package/commands/review-code.tmpl +39 -39
  49. package/commands/review-context.md +577 -579
  50. package/commands/review-context.tmpl +212 -212
  51. package/commands/review-tech-docs.md +426 -426
  52. package/commands/review-tech-docs.tmpl +146 -146
  53. package/commands/setup-ai-first.md +237 -237
  54. package/commands/setup-ai-first.tmpl +131 -131
  55. package/commands/sync.md +145 -145
  56. package/commands/sync.tmpl +93 -93
  57. package/commands/update-framework.md +88 -88
  58. package/commands/update-framework.tmpl +36 -36
  59. package/commands/validate-traces.md +379 -379
  60. package/commands/validate-traces.tmpl +99 -99
  61. package/core/FRAMEWORK_VERSION +1 -1
  62. package/core/commands/debug.md +435 -435
  63. package/core/commands/define-product.md +330 -327
  64. package/core/commands/dev-gen-test.md +364 -364
  65. package/core/commands/dev-run-test.md +375 -375
  66. package/core/commands/dev-smoke-test.md +340 -340
  67. package/core/commands/fix-bug.md +402 -402
  68. package/core/commands/generate-bdd.md +512 -512
  69. package/core/commands/generate-code.md +480 -482
  70. package/core/commands/generate-design-spec.md +495 -495
  71. package/core/commands/generate-prd.md +445 -396
  72. package/core/commands/generate-spec-manifest.md +337 -337
  73. package/core/commands/generate-tech-docs.md +364 -364
  74. package/core/commands/learn.md +346 -346
  75. package/core/commands/map-testids.md +321 -321
  76. package/core/commands/propose-scenario.md +334 -334
  77. package/core/commands/qc-analyze.md +322 -323
  78. package/core/commands/qc-design-test.md +303 -303
  79. package/core/commands/qc-plan.md +296 -296
  80. package/core/commands/qc-report.md +301 -301
  81. package/core/commands/qc-review.md +297 -297
  82. package/core/commands/qc-run-test.md +336 -336
  83. package/core/commands/refine-prd.md +426 -428
  84. package/core/commands/report-bug.md +350 -350
  85. package/core/commands/review-code.md +363 -363
  86. package/core/commands/review-context.md +577 -579
  87. package/core/commands/review-tech-docs.md +426 -426
  88. package/core/commands/setup-ai-first.md +237 -237
  89. package/core/commands/sync.md +145 -145
  90. package/core/commands/update-framework.md +88 -88
  91. package/core/commands/validate-traces.md +379 -379
  92. package/core/skills/code/SKILL.md +388 -388
  93. package/core/skills/debug/SKILL.md +390 -390
  94. package/core/skills/design-spec/SKILL.md +316 -316
  95. package/core/skills/discovery/SKILL.md +7 -547
  96. package/core/skills/prd/SKILL.md +298 -394
  97. package/core/skills/setup-ai-first/SKILL.md +79 -79
  98. package/core/skills/spec/SKILL.md +176 -176
  99. package/core/skills/test/SKILL.md +602 -602
  100. package/core/steps/capture-lesson.md +44 -44
  101. package/core/steps/context-loader.md +174 -174
  102. package/core/steps/gate.md +54 -54
  103. package/core/steps/report-footer.md +52 -52
  104. package/core/steps/review-fanout.md +85 -87
  105. package/core/steps/spawn-agent.md +45 -45
  106. package/core/steps/trace-mirror.md +21 -21
  107. package/core/templates/architecture.template.md +37 -37
  108. package/core/templates/design-spec.template.md +77 -77
  109. package/core/templates/platform-guide.template.md +47 -47
  110. package/core/templates/prd.template.md +106 -231
  111. package/core/templates/product-definition.template.md +101 -88
  112. package/docs/04-operations/publishing.md +20 -3
  113. package/package.json +1 -1
  114. package/skills/code/SKILL.md +388 -388
  115. package/skills/code/SKILL.tmpl +56 -56
  116. package/skills/debug/SKILL.md +390 -390
  117. package/skills/debug/SKILL.tmpl +60 -60
  118. package/skills/design-spec/SKILL.md +316 -316
  119. package/skills/design-spec/SKILL.tmpl +36 -36
  120. package/skills/discovery/SKILL.md +7 -547
  121. package/skills/discovery/SKILL.tmpl +7 -140
  122. package/skills/prd/SKILL.md +298 -394
  123. package/skills/prd/SKILL.tmpl +40 -151
  124. package/skills/setup-ai-first/SKILL.md +79 -79
  125. package/skills/setup-ai-first/SKILL.tmpl +27 -27
  126. package/skills/spec/SKILL.md +176 -176
  127. package/skills/spec/SKILL.tmpl +18 -18
  128. package/skills/test/SKILL.md +602 -602
  129. package/skills/test/SKILL.tmpl +44 -44
  130. package/steps/capture-lesson.md +44 -44
  131. package/steps/context-loader.md +174 -174
  132. package/steps/gate.md +54 -54
  133. package/steps/report-footer.md +52 -52
  134. package/steps/review-fanout.md +85 -87
  135. package/steps/spawn-agent.md +45 -45
  136. package/steps/trace-mirror.md +21 -21
  137. package/templates/architecture.template.md +37 -37
  138. package/templates/design-spec.template.md +77 -77
  139. package/templates/platform-guide.template.md +47 -47
  140. package/templates/prd.template.md +106 -231
  141. package/templates/product-definition.template.md +101 -88
@@ -1,254 +1,101 @@
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.*
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 confirmsupdate `business-dictionary.md` (if agreed) → continue generation.
26
- - If no banned terms found and all terms are canonicalproceed without interruption.
19
+ - **Thay banned term**: thay mọi banned term bằng bản chuẩn tương đương (xem dictionary § Banned Terms).
20
+ - **Dùng canonical term**: chỉ dùng các thuật ngữ được định nghĩa trong dictionary.
21
+ - **NEW TERM DETECTION**: Nếu một thuật ngữ trong input PO xuất hiện ≥2 lần KHÔNG trong dictionary → **DỪNG** hỏi PO:
22
+ - Thuật ngữ đó nghĩa trong ngữ cảnh hệ thống?
23
+ - English canonical term nên dùng là gì?
24
+ - cần bổ sung vào business-dictionary.md không?
25
+ Sau khi PO confirmcập nhật `business-dictionary.md` (nếu đồng ý) → tiếp tục sinh.
26
+ - Nếu không banned term tất cả thuật ngữ đều chuẩn tiếp tục không gián đoạn.
27
27
 
28
- ## Cross-Reference Rule
28
+ ## Quy tắc Cross-Reference
29
29
 
30
- Any mention of another TICKET-ID anywhere in the PRD (pre-condition, BR, note, appendix) → **MUST** be an inline link:
30
+ 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:
31
31
  ```
32
32
  [TICKET-ID](./TICKET-ID-slug.md)
33
33
  ```
34
- Never leave TICKET-ID as plain text if a corresponding PRD file exists in `{paths.specs_dir}/{domain}/{prd-slug}/`.
34
+ 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}/{prd-slug}/`.
35
35
 
36
- ## UC and BR Numbering Convention
36
+ ## Quy ước đánh số UC BR
37
37
 
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).
38
+ - **UC ID**: `{TICKET-ID}-UC{N}` — N bắt đầu từ 1, tăng theo từng use case.
39
+ - **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).
40
+ - dụ: UC1 → BR1, BR2; UC2 → BR3, BR4 (KHÔNG phải BR1, BR2 lại từ đầu).
41
41
 
42
42
  ---
43
43
 
44
- ## Platform Strategy — PRD is platform-agnostic (Option C)
44
+ ## Platform Strategy — PRD tài liệu nghiệp vụ (không technical)
45
45
 
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:
46
+ 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**.
47
+ 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
48
 
49
- | ✅ Viết trong PRD (platform-agnostic) | ❌ Không viết trong PRD |
49
+ | ✅ Viết trong PRD (nghiệp vụ) | ❌ KHÔNG viết trong PRD |
50
50
  |---|---|
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 |
51
+ | "Đăng nhập thành công → truy cập được tính năng" | "API trả về JWT token" ← Tech Docs |
52
+ | "Sai mật khẩu 5 lần → khoá tài khoản 30 phút" | "Hiển thị spinner khi loading" ← Design Spec |
53
+ | 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
54
 
55
55
  **Một PRD phục vụ tất cả platform:**
56
56
  - **FE/App team** → đọc PRD + Design Spec → `/generate-bdd` (UI-level scenarios)
57
57
  - **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**
58
+ - 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
59
 
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."*
60
+ Khi viết AC, nếu PO đề cập chi tiết visual (màu sắc, animation, layout pixel) → nhắc nhở:
61
+ *"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
62
 
63
63
  ---
64
64
 
65
65
  ## Generate
66
66
 
67
- Write `{paths.specs_dir}/{domain}/{prd-slug}/prd.md` using the structure below.
67
+ Ghi `{paths.specs_dir}/{domain}/{prd-slug}/prd.md` theo cấu trúc dưới đây.
68
68
 
69
69
  ---
70
70
 
71
- ```markdown
72
- # {TICKET-ID} {Feature Name}
71
+ ````markdown
72
+ {{include:templates/prd.template.md}}
73
+ ````
73
74
 
74
75
  ---
75
76
 
76
- ## Metadata
77
+ ## Quality Checklist *(kiểm tra trước khi ghi)*
77
78
 
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}
177
-
178
- ---
179
-
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
- ```
213
-
214
- ---
215
-
216
- ## Quality Checklist *(verify before writing)*
217
-
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
79
+ - [ ] Mọi AC đều testable (pass/fail rõ ràng), không có chi tiết kỹ thuật (API/token/DB) hay visual chi tiết (màu sắc, font, animation)
80
+ - [ ] Mỗi UC có Actor / Description / Pre-condition / Post-condition
81
+ - [ ] Business Rule (WHAT) và Business Logic (HOW) nằm chung bảng 3 cột `ID | Business Rule | Business Logic`
82
+ - [ ] BR ID tăng liên tục trên toàn PRD — không reset theo từng UC
83
+ - [ ] Mọi cross-reference TICKET-ID đều là inline link `[TICKET-ID](./file.md)`
84
+ - [ ] Không banned term (nếu dictionary tồn tại)
85
+ - [ ] User Flow có cả luồng lỗi / luồng ngoại lệ
86
+ - [ ] Wireframe phủ tất cả màn hình liên quan tới Use Case
226
87
  - [ ] **Đị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
88
 
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
89
  ## Output
243
90
 
244
91
  {{include:steps/report-footer.md}}
245
92
 
246
93
  ```
247
- /generate-prd Complete — {TICKET-ID}
94
+ /generate-prd Hoàn tất — {TICKET-ID}
248
95
  ---
249
96
  Status : ✅ Complete
250
97
  Output Artifacts:
251
98
  created {paths.specs_dir}/{domain}/{prd-slug}/prd.md (PRD v1.0)
252
99
  Next : /refine-prd {paths.specs_dir}/{domain}/{prd-slug}/prd.md
253
- then /review-context {prd-file} ← verify PRD quality before generating BDD
100
+ rồi /review-context {prd-file} ← kiểm tra chất lượng PRD trước khi sinh BDD
254
101
  ```