@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.
- package/commands/debug.md +435 -435
- package/commands/debug.tmpl +111 -111
- package/commands/define-product.md +330 -327
- package/commands/define-product.tmpl +50 -47
- package/commands/dev-gen-test.md +364 -364
- package/commands/dev-gen-test.tmpl +63 -63
- package/commands/dev-run-test.md +375 -375
- package/commands/dev-run-test.tmpl +74 -74
- package/commands/dev-smoke-test.md +340 -340
- package/commands/dev-smoke-test.tmpl +60 -60
- package/commands/fix-bug.md +402 -402
- package/commands/fix-bug.tmpl +78 -78
- package/commands/generate-bdd.md +512 -512
- package/commands/generate-bdd.tmpl +211 -211
- package/commands/generate-code.md +480 -482
- package/commands/generate-code.tmpl +179 -181
- package/commands/generate-design-spec.md +495 -495
- package/commands/generate-design-spec.tmpl +219 -219
- package/commands/generate-prd.md +445 -396
- package/commands/generate-prd.tmpl +45 -198
- package/commands/generate-spec-manifest.md +337 -337
- package/commands/generate-spec-manifest.tmpl +57 -57
- package/commands/generate-tech-docs.md +364 -364
- package/commands/generate-tech-docs.tmpl +84 -84
- package/commands/learn.md +346 -346
- package/commands/learn.tmpl +22 -22
- package/commands/map-testids.md +321 -321
- package/commands/map-testids.tmpl +41 -41
- package/commands/propose-scenario.md +334 -334
- package/commands/propose-scenario.tmpl +54 -54
- package/commands/qc-analyze.md +322 -323
- package/commands/qc-analyze.tmpl +42 -43
- package/commands/qc-design-test.md +303 -303
- package/commands/qc-design-test.tmpl +23 -23
- package/commands/qc-plan.md +296 -296
- package/commands/qc-plan.tmpl +16 -16
- package/commands/qc-report.md +301 -301
- package/commands/qc-report.tmpl +21 -21
- package/commands/qc-review.md +297 -297
- package/commands/qc-review.tmpl +17 -17
- package/commands/qc-run-test.md +336 -336
- package/commands/qc-run-test.tmpl +35 -35
- package/commands/refine-prd.md +426 -428
- package/commands/refine-prd.tmpl +61 -61
- package/commands/report-bug.md +350 -350
- package/commands/report-bug.tmpl +70 -70
- package/commands/review-code.md +363 -363
- package/commands/review-code.tmpl +39 -39
- package/commands/review-context.md +577 -579
- package/commands/review-context.tmpl +212 -212
- package/commands/review-tech-docs.md +426 -426
- package/commands/review-tech-docs.tmpl +146 -146
- package/commands/setup-ai-first.md +237 -237
- package/commands/setup-ai-first.tmpl +131 -131
- package/commands/sync.md +145 -145
- package/commands/sync.tmpl +93 -93
- package/commands/update-framework.md +88 -88
- package/commands/update-framework.tmpl +36 -36
- package/commands/validate-traces.md +379 -379
- package/commands/validate-traces.tmpl +99 -99
- package/core/FRAMEWORK_VERSION +1 -1
- package/core/commands/debug.md +435 -435
- package/core/commands/define-product.md +330 -327
- package/core/commands/dev-gen-test.md +364 -364
- package/core/commands/dev-run-test.md +375 -375
- package/core/commands/dev-smoke-test.md +340 -340
- package/core/commands/fix-bug.md +402 -402
- package/core/commands/generate-bdd.md +512 -512
- package/core/commands/generate-code.md +480 -482
- package/core/commands/generate-design-spec.md +495 -495
- package/core/commands/generate-prd.md +445 -396
- package/core/commands/generate-spec-manifest.md +337 -337
- package/core/commands/generate-tech-docs.md +364 -364
- package/core/commands/learn.md +346 -346
- package/core/commands/map-testids.md +321 -321
- package/core/commands/propose-scenario.md +334 -334
- package/core/commands/qc-analyze.md +322 -323
- package/core/commands/qc-design-test.md +303 -303
- package/core/commands/qc-plan.md +296 -296
- package/core/commands/qc-report.md +301 -301
- package/core/commands/qc-review.md +297 -297
- package/core/commands/qc-run-test.md +336 -336
- package/core/commands/refine-prd.md +426 -428
- package/core/commands/report-bug.md +350 -350
- package/core/commands/review-code.md +363 -363
- package/core/commands/review-context.md +577 -579
- package/core/commands/review-tech-docs.md +426 -426
- package/core/commands/setup-ai-first.md +237 -237
- package/core/commands/sync.md +145 -145
- package/core/commands/update-framework.md +88 -88
- package/core/commands/validate-traces.md +379 -379
- package/core/skills/code/SKILL.md +388 -388
- package/core/skills/debug/SKILL.md +390 -390
- package/core/skills/design-spec/SKILL.md +316 -316
- package/core/skills/discovery/SKILL.md +7 -547
- package/core/skills/prd/SKILL.md +298 -394
- package/core/skills/setup-ai-first/SKILL.md +79 -79
- package/core/skills/spec/SKILL.md +176 -176
- package/core/skills/test/SKILL.md +602 -602
- package/core/steps/capture-lesson.md +44 -44
- package/core/steps/context-loader.md +174 -174
- package/core/steps/gate.md +54 -54
- package/core/steps/report-footer.md +52 -52
- package/core/steps/review-fanout.md +85 -87
- package/core/steps/spawn-agent.md +45 -45
- package/core/steps/trace-mirror.md +21 -21
- package/core/templates/architecture.template.md +37 -37
- package/core/templates/design-spec.template.md +77 -77
- package/core/templates/platform-guide.template.md +47 -47
- package/core/templates/prd.template.md +106 -231
- package/core/templates/product-definition.template.md +101 -88
- package/docs/04-operations/publishing.md +20 -3
- package/package.json +1 -1
- package/skills/code/SKILL.md +388 -388
- package/skills/code/SKILL.tmpl +56 -56
- package/skills/debug/SKILL.md +390 -390
- package/skills/debug/SKILL.tmpl +60 -60
- package/skills/design-spec/SKILL.md +316 -316
- package/skills/design-spec/SKILL.tmpl +36 -36
- package/skills/discovery/SKILL.md +7 -547
- package/skills/discovery/SKILL.tmpl +7 -140
- package/skills/prd/SKILL.md +298 -394
- package/skills/prd/SKILL.tmpl +40 -151
- package/skills/setup-ai-first/SKILL.md +79 -79
- package/skills/setup-ai-first/SKILL.tmpl +27 -27
- package/skills/spec/SKILL.md +176 -176
- package/skills/spec/SKILL.tmpl +18 -18
- package/skills/test/SKILL.md +602 -602
- package/skills/test/SKILL.tmpl +44 -44
- package/steps/capture-lesson.md +44 -44
- package/steps/context-loader.md +174 -174
- package/steps/gate.md +54 -54
- package/steps/report-footer.md +52 -52
- package/steps/review-fanout.md +85 -87
- package/steps/spawn-agent.md +45 -45
- package/steps/trace-mirror.md +21 -21
- package/templates/architecture.template.md +37 -37
- package/templates/design-spec.template.md +77 -77
- package/templates/platform-guide.template.md +47 -47
- package/templates/prd.template.md +106 -231
- package/templates/product-definition.template.md +101 -88
|
@@ -1,254 +1,101 @@
|
|
|
1
|
-
# /generate-prd —
|
|
1
|
+
# /generate-prd — Sinh Product Requirements Document
|
|
2
2
|
|
|
3
3
|
## Gate
|
|
4
4
|
{{include:steps/gate.md}}
|
|
5
5
|
|
|
6
|
-
*
|
|
6
|
+
*Lưu ý: Với lệnh này, target file ở Bước 1 là một file product-definition trong `{paths.product_definitions_dir}/`. Phân giải từ `$ARGUMENTS` hoặc liệt kê thư mục và hỏi.*
|
|
7
7
|
|
|
8
8
|
## Context
|
|
9
9
|
{{include:steps/context-loader.md}}
|
|
10
10
|
|
|
11
|
-
*
|
|
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
|
|
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
|
-
##
|
|
17
|
+
## Quy tắc thuật ngữ *(áp dụng nếu business-dictionary.md tồn tại)*
|
|
18
18
|
|
|
19
|
-
- **
|
|
20
|
-
- **
|
|
21
|
-
- **NEW TERM DETECTION**:
|
|
22
|
-
-
|
|
23
|
-
-
|
|
24
|
-
-
|
|
25
|
-
|
|
26
|
-
-
|
|
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 và KHÔNG có trong dictionary → **DỪNG** và hỏi PO:
|
|
22
|
+
- Thuật ngữ đó nghĩa là gì trong ngữ cảnh hệ thống?
|
|
23
|
+
- English canonical term nên dùng là gì?
|
|
24
|
+
- Có cần bổ sung vào business-dictionary.md không?
|
|
25
|
+
Sau khi PO confirm → cập nhật `business-dictionary.md` (nếu đồng ý) → tiếp tục sinh.
|
|
26
|
+
- 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
27
|
|
|
28
|
-
## Cross-Reference
|
|
28
|
+
## Quy tắc Cross-Reference
|
|
29
29
|
|
|
30
|
-
|
|
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** là inline link:
|
|
31
31
|
```
|
|
32
32
|
[TICKET-ID](./TICKET-ID-slug.md)
|
|
33
33
|
```
|
|
34
|
-
|
|
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
|
|
36
|
+
## Quy ước đánh số UC và BR
|
|
37
37
|
|
|
38
|
-
- **UC ID**: `{TICKET-ID}-UC{N}` — N
|
|
39
|
-
- **BR ID**: `{TICKET-ID}-UC{N}-BR{M}` — **M
|
|
40
|
-
-
|
|
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
|
+
- Ví 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
|
|
44
|
+
## Platform Strategy — PRD là 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
|
|
47
|
-
|
|
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** có 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 (
|
|
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" | "
|
|
52
|
-
| "Sai
|
|
53
|
-
|
|
|
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 có 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 —
|
|
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
|
|
61
|
-
*"Chi tiết
|
|
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
|
-
|
|
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
|
-
|
|
72
|
-
|
|
71
|
+
````markdown
|
|
72
|
+
{{include:templates/prd.template.md}}
|
|
73
|
+
````
|
|
73
74
|
|
|
74
75
|
---
|
|
75
76
|
|
|
76
|
-
##
|
|
77
|
+
## Quality Checklist *(kiểm tra trước khi ghi)*
|
|
77
78
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
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 có 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
|
|
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
|
-
→
|
|
100
|
+
→ rồi /review-context {prd-file} ← kiểm tra chất lượng PRD trước khi sinh BDD
|
|
254
101
|
```
|