@edupia-tutor/spec-driven-docs 0.14.7 → 0.14.9
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/generate-bdd.md +76 -8
- package/commands/generate-bdd.tmpl +56 -108
- package/commands/generate-code.md +18 -1
- package/commands/generate-code.tmpl +18 -1
- package/commands/generate-design-spec.md +35 -5
- package/commands/generate-design-spec.tmpl +35 -5
- package/commands/generate-prd.md +15 -5
- package/commands/generate-prd.tmpl +1 -0
- package/commands/generate-tech-docs.md +1 -0
- package/commands/generate-tech-docs.tmpl +1 -0
- package/commands/propose-scenario.md +6 -2
- package/commands/propose-scenario.tmpl +6 -2
- package/commands/qc-analyze.md +14 -0
- package/commands/qc-analyze.tmpl +14 -0
- package/commands/refine-prd.md +25 -6
- package/commands/refine-prd.tmpl +18 -6
- package/commands/review-context.md +27 -12
- package/commands/review-context.tmpl +20 -12
- package/commands/validate-traces.md +1 -0
- package/commands/validate-traces.tmpl +1 -0
- package/core/FRAMEWORK_VERSION +1 -1
- package/core/commands/generate-bdd.md +76 -8
- package/core/commands/generate-code.md +18 -1
- package/core/commands/generate-design-spec.md +35 -5
- package/core/commands/generate-prd.md +15 -5
- package/core/commands/generate-tech-docs.md +1 -0
- package/core/commands/propose-scenario.md +6 -2
- package/core/commands/qc-analyze.md +14 -0
- package/core/commands/refine-prd.md +25 -6
- package/core/commands/review-context.md +27 -12
- package/core/commands/validate-traces.md +1 -0
- package/core/skills/code/SKILL.md +7 -759
- package/core/skills/debug/SKILL.md +9 -859
- package/core/skills/design-spec/SKILL.md +3 -582
- package/core/skills/prd/SKILL.md +5 -464
- package/core/skills/setup-ai-first/SKILL.md +3 -208
- package/core/skills/spec/SKILL.md +7 -450
- package/core/skills/test/SKILL.md +10 -1290
- package/core/steps/review-fanout.md +7 -0
- package/core/steps/spawn-agent.md +12 -7
- package/core/templates/feature.template +83 -222
- package/core/templates/prd.template.md +14 -5
- package/core/templates/project-context.yaml +1 -1
- package/docs/01-getting-started/core-concepts.md +2 -2
- package/docs/01-getting-started/quickstart.md +4 -3
- package/docs/02-guides/bdd-input-checklist.md +68 -0
- package/docs/02-guides/developer/README.md +3 -0
- package/docs/02-guides/developer/bdd-and-trace.md +1 -0
- package/docs/02-guides/developer/commands.md +3 -3
- package/docs/02-guides/developer/pr-checklist.md +1 -0
- package/docs/02-guides/developer/workflow.md +2 -2
- package/docs/02-guides/prd-input-checklist.md +94 -0
- package/docs/02-guides/product-owner/README.md +3 -1
- package/docs/02-guides/product-owner/commands.md +1 -1
- package/docs/02-guides/tech-docs-input-checklist.md +82 -0
- package/docs/02-guides/tester/README.md +1 -1
- package/docs/02-guides/tester/bug-reporting.md +1 -1
- package/docs/02-guides/tester/qc-automation.md +1 -1
- package/docs/03-concepts/README.md +1 -0
- package/docs/03-concepts/mechanisms-explained.md +57 -0
- package/docs/03-concepts/pipeline.md +12 -9
- package/docs/03-concepts/traceability.md +4 -1
- package/docs/04-operations/bug-flow.md +2 -0
- package/docs/05-reference/command-cheatsheet.md +8 -8
- package/docs/05-reference/commands.md +12 -10
- package/docs/05-reference/trace-schema.md +2 -1
- package/package.json +1 -1
- package/skills/code/SKILL.md +7 -759
- package/skills/code/SKILL.tmpl +7 -164
- package/skills/debug/SKILL.md +9 -859
- package/skills/debug/SKILL.tmpl +9 -252
- package/skills/design-spec/SKILL.md +3 -582
- package/skills/design-spec/SKILL.tmpl +3 -87
- package/skills/prd/SKILL.md +5 -464
- package/skills/prd/SKILL.tmpl +5 -63
- package/skills/setup-ai-first/SKILL.md +3 -208
- package/skills/setup-ai-first/SKILL.tmpl +3 -108
- package/skills/spec/SKILL.md +7 -450
- package/skills/spec/SKILL.tmpl +7 -162
- package/skills/test/SKILL.md +10 -1290
- package/skills/test/SKILL.tmpl +10 -288
- package/steps/review-fanout.md +7 -0
- package/steps/spawn-agent.md +12 -7
- package/templates/feature.template +83 -222
- package/templates/prd.template.md +14 -5
- package/templates/project-context.yaml +1 -1
|
@@ -4,459 +4,16 @@ description: Sinh file BDD .feature từ một PRD đã duyệt, hoặc sinh tà
|
|
|
4
4
|
|
|
5
5
|
# Spec Skills — BDD & Technical Design
|
|
6
6
|
|
|
7
|
-
Skill này xử lý
|
|
7
|
+
Skill này xử lý `/generate-bdd` và `/generate-tech-docs`. Để **không lệch schema/gate**, skill KHÔNG nhân bản — mỗi lệnh thực thi **y hệt** command tương ứng.
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
## /generate-bdd — Generate BDD Feature Files
|
|
12
|
-
|
|
13
|
-
### Gate
|
|
14
|
-
|
|
15
|
-
<!-- Directory: specs/*/*/*.md (file PRD ở gốc feature folder) -->
|
|
16
|
-
# Gate — Quy trình vào chuẩn cho mọi lệnh
|
|
17
|
-
|
|
18
|
-
Mọi lệnh PHẢI chạy gate này trước khi thực thi phần logic riêng của nó.
|
|
19
|
-
|
|
20
|
-
## Bước 0 — Kiểm tra chế độ Sub-Agent
|
|
21
|
-
|
|
22
|
-
Trước tiên, kiểm tra xem `$ARGUMENTS` có phải là payload JSON từ một orchestrator hay không:
|
|
23
|
-
|
|
24
|
-
1. Thử parse `$ARGUMENTS` dưới dạng JSON.
|
|
25
|
-
2. Nếu parse thành công **và** chứa `"_agent_mode": true`:
|
|
26
|
-
- **Bỏ qua hoàn toàn Bước 1, 2 và 3 của Gate này.**
|
|
27
|
-
- Đặt target file = `payload.target_file`
|
|
28
|
-
- Đặt loaded context = `payload.context` (KHÔNG chạy context-loader.md)
|
|
29
|
-
- Đặt phạm vi UC = `payload.uc_id` (chỉ xử lý UC này)
|
|
30
|
-
- Đặt line range = `payload.uc_section` (chỉ đọc đúng section đó của PRD)
|
|
31
|
-
- Đặt dimension = `payload.dimension` nếu có (lệnh review per-UC: chỉ review đúng lăng kính này)
|
|
32
|
-
- Đi thẳng tới phần logic riêng của lệnh.
|
|
33
|
-
3. Nếu `$ARGUMENTS` không phải JSON hoặc không có `_agent_mode` → tiếp tục sang Bước 1 (chế độ thường).
|
|
34
|
-
|
|
35
|
-
## Bước 0-B — Kiểm tra Model
|
|
36
|
-
|
|
37
|
-
*Bỏ qua bước này nếu `_agent_mode: true` (sub-agent — orchestrator đã kiểm tra rồi).*
|
|
38
|
-
|
|
39
|
-
Các lệnh sinh nội dung và review phức tạp đòi hỏi khả năng suy luận mạnh.
|
|
40
|
-
Dùng model nhỏ hơn sẽ rủi ro: bỏ sót edge case, phân tích spec thiếu sót, vi phạm kiến trúc.
|
|
41
|
-
|
|
42
|
-
Hiển thị và chờ phản hồi:
|
|
43
|
-
|
|
44
|
-
```
|
|
45
|
-
⚙️ MODEL CHECK
|
|
46
|
-
──────────────────────────────────────────────────────────────────
|
|
47
|
-
Recommended : claude-opus-4 (hoặc model Opus mới nhất)
|
|
48
|
-
Why needed : Phân tích spec, review kiến trúc, sinh code đòi hỏi
|
|
49
|
-
suy luận sâu. Model nhỏ hơn dễ bỏ sót edge case.
|
|
50
|
-
|
|
51
|
-
Cách đổi trong Claude Code:
|
|
52
|
-
• Settings → Model → chọn "claude-opus"
|
|
53
|
-
• hoặc: /model → chọn claude-opus
|
|
54
|
-
|
|
55
|
-
Đang chạy claude-opus?
|
|
56
|
-
Y — đúng, đang dùng claude-opus → tiếp tục
|
|
57
|
-
S — bỏ qua kiểm tra (tôi chấp nhận rủi ro chất lượng thấp hơn với model hiện tại)
|
|
58
|
-
──────────────────────────────────────────────────────────────────
|
|
59
|
-
```
|
|
60
|
-
|
|
61
|
-
- "Y" → tiếp tục sang Bước 1.
|
|
62
|
-
- "S" → tiếp tục sang Bước 1 (người dùng chấp nhận rủi ro, thêm ⚠️ vào report cuối).
|
|
63
|
-
- "N" hoặc bất kỳ giá trị nào khác → **DỪNG.** Xuất: "Vui lòng chuyển sang claude-opus rồi chạy lại lệnh này."
|
|
64
|
-
|
|
65
|
-
## Bước 1 — Xác định Target File
|
|
66
|
-
|
|
67
|
-
1. Nếu `$ARGUMENTS` được cung cấp và trỏ tới một file tồn tại → dùng trực tiếp làm target.
|
|
68
|
-
2. Nếu `$ARGUMENTS` là một **UC-ID / ticket ID / tên rút gọn** (không có path) → phân giải thành file bằng cách glob theo bố cục feature-package. `{prd-slug}` lúc này **chưa biết**, nên dùng wildcard `*` cho segment đó, và `**` đệ quy dưới `bdd/` để phủ hết các thư mục con theo platform (`bdd/web/`, `bdd/app/`, `bdd/system/`):
|
|
69
|
-
- **Lệnh BDD** (target là `.feature`): `{specs_dir}/{domain}/*/bdd/**/{UC-ID}*.feature` — hoặc `{specs_dir}/*/*/bdd/**/{UC-ID}*.feature` nếu domain cũng chưa biết. Nếu lệnh ngụ ý một platform/scope cụ thể (vd: system tech-doc cần BDD `system/`), ưu tiên kết quả trong thư mục con platform đó.
|
|
70
|
-
- **Lệnh PRD** (target là file PRD `{TICKET-ID}-{prd-slug}.md` — file `.md` duy nhất ở gốc feature folder, cạnh `bdd/`): `{specs_dir}/{domain}/*/{TICKET-ID}*.md` nếu biết TICKET-ID; nếu không, `{specs_dir}/{domain}/*/*.md` (khớp feature folder có id tương ứng), hoặc `{specs_dir}/*/*/*.md` nếu domain cũng chưa biết. *(Glob `*/*.md` ở cấp gốc folder chỉ khớp PRD — tech-docs/design-spec `.md` nằm sâu hơn trong thư mục con.)*
|
|
71
|
-
- **Lệnh tech-docs**: `{specs_dir}/{domain}/*/tech-docs/{UC-ID}*-tech-design*.md`.
|
|
72
|
-
- **Lệnh design-spec**: `{specs_dir}/{domain}/*/design-spec/{TICKET-ID}*.md`.
|
|
73
|
-
|
|
74
|
-
Khi một file khớp: đặt nó làm target **và** ghi lại `domain` + `prd_slug` từ path của nó (theo quy tắc trích xuất trong `context-loader.md` Bước 1 — `prd_slug` = segment đầu tiên sau `{specs_dir}/{domain}/`). Mọi path mà lệnh đọc/ghi về sau (BDD/tech-docs/design-spec/trace cùng cấp) đều dùng **`prd_slug` đã phân giải đó**, nên tất cả artifact nằm chung một feature package. Nếu nhiều file khớp (vd: nhiều platform), chọn theo platform/scope của lệnh hoặc liệt kê ra và hỏi.
|
|
75
|
-
3. Nếu `$ARGUMENTS` rỗng hoặc không tìm thấy file khớp:
|
|
76
|
-
- Liệt kê các file trong thư mục liên quan của lệnh này (vd: `specs/*/*/*.md` — file PRD ở gốc mỗi feature folder — cho lệnh PRD, `specs/*/*/bdd/**/*.feature` cho lệnh BDD).
|
|
77
|
-
- Hiển thị danh sách cho người dùng và hỏi: "Bạn muốn làm việc với file nào? (Nhập số thứ tự hoặc tên file)"
|
|
78
|
-
- Chờ người dùng chọn rồi mới tiếp tục.
|
|
79
|
-
|
|
80
|
-
## Bước 2 — Chạy Context Loader
|
|
81
|
-
|
|
82
|
-
Nạp toàn bộ context của dự án bằng cách làm theo quy trình trong `steps/context-loader.md`.
|
|
83
|
-
Lưu toàn bộ context đã nạp vào bộ nhớ để dùng xuyên suốt phiên làm việc của lệnh.
|
|
84
|
-
|
|
85
|
-
## Bước 3 — CHECKPOINT
|
|
86
|
-
|
|
87
|
-
Sau khi hoàn thành Bước 1 và 2, hiển thị bản tóm tắt và chờ xác nhận:
|
|
88
|
-
|
|
89
|
-
```
|
|
90
|
-
CHECKPOINT
|
|
91
|
-
-----------
|
|
92
|
-
Target : {resolved file path}
|
|
93
|
-
Project : {project.name từ project-context.yaml}
|
|
94
|
-
Tech stack : {language} / {framework}
|
|
95
|
-
Module : {module nếu có, else "not configured"}
|
|
96
|
-
Domains : {danh sách domain, ngăn cách bởi dấu phẩy}
|
|
97
|
-
|
|
98
|
-
Tiếp tục? (Y/N)
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
Chờ người dùng trả lời rõ ràng "Y" hoặc "N" rồi mới tiếp tục.
|
|
102
|
-
- "Y" → tiếp tục sang các bước riêng của lệnh bên dưới.
|
|
103
|
-
- "N" → dừng lại và hỏi người dùng muốn thay đổi gì.
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
Cũng verify: Kiểm tra PRD `Status` là `approved` (không phải `draft`).
|
|
107
|
-
- Nếu `draft`: cảnh báo "PRD vẫn đang draft. Vẫn tiếp tục? Findings từ /refine-prd có thể chưa được xử lý."
|
|
108
|
-
|
|
109
|
-
### UC Decomposition
|
|
110
|
-
|
|
111
|
-
Với mỗi Use Case trong PRD, suy ra scenario. Trình bày outline:
|
|
112
|
-
|
|
113
|
-
```
|
|
114
|
-
{DOMAIN}-UC1: {Name}
|
|
115
|
-
SC1: Happy path — {client/role type} — {success scenario}
|
|
116
|
-
SC2: Happy path — {other client/role type} (if applicable)
|
|
117
|
-
SC3: Validation error — {invalid input}
|
|
118
|
-
SC4: Not found / resource missing
|
|
119
|
-
BRs covered: BR-1, BR-2
|
|
120
|
-
|
|
121
|
-
{DOMAIN}-UC2: {Name}
|
|
122
|
-
...
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
**CHECKPOINT** — Hỏi: "Outline này đúng chưa? Có scenario nào còn thiếu không?"
|
|
126
|
-
Chờ xác nhận trước khi sinh file.
|
|
127
|
-
|
|
128
|
-
### Generate
|
|
129
|
-
|
|
130
|
-
Với mỗi UC, ghi `specs/{domain}/{prd-slug}/bdd/{UC-ID}-{slug}.feature`:
|
|
131
|
-
|
|
132
|
-
```gherkin
|
|
133
|
-
# @trace.source=specs/{domain}/{prd-slug}/{TICKET-ID}-{prd-slug}.md
|
|
134
|
-
# @trace.uc={UC-ID}
|
|
135
|
-
Feature: {UC Name}
|
|
136
|
-
|
|
137
|
-
Background:
|
|
138
|
-
Given the system is running
|
|
139
|
-
And a {persona} is authenticated
|
|
140
|
-
|
|
141
|
-
Scenario: SC1 — {Happy path description}
|
|
142
|
-
Given {precondition}
|
|
143
|
-
When {action}
|
|
144
|
-
Then {expected outcome}
|
|
145
|
-
And {secondary outcome if any}
|
|
146
|
-
|
|
147
|
-
Scenario: SC2 — {Another happy path}
|
|
148
|
-
Given {precondition}
|
|
149
|
-
When {action}
|
|
150
|
-
Then {expected outcome}
|
|
151
|
-
|
|
152
|
-
Scenario: SC3 — Validation error
|
|
153
|
-
Given {precondition}
|
|
154
|
-
When {invalid action}
|
|
155
|
-
Then the system returns a validation error
|
|
156
|
-
And the error message mentions "{field}"
|
|
157
|
-
|
|
158
|
-
Scenario: SC4 — Resource not found
|
|
159
|
-
Given no {resource} exists with id {id}
|
|
160
|
-
When {action}
|
|
161
|
-
Then the system returns a not-found error
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
### Quality Check
|
|
165
|
-
|
|
166
|
-
Sau khi sinh, tự đánh giá:
|
|
167
|
-
- [ ] Mỗi acceptance criteria từ PRD có ít nhất một scenario
|
|
168
|
-
- [ ] Mỗi business rule được phủ bởi ít nhất một scenario
|
|
169
|
-
- [ ] Có error scenario (validation, not-found, unauthorized)
|
|
170
|
-
- [ ] Scenario atomic (một behavior mỗi scenario)
|
|
171
|
-
- [ ] Không có chi tiết implementation trong feature file (không SQL, không tên class)
|
|
172
|
-
|
|
173
|
-
### Output
|
|
174
|
-
|
|
175
|
-
```
|
|
176
|
-
/generate-bdd Complete — {domain}
|
|
177
|
-
|
|
178
|
-
Files created:
|
|
179
|
-
✅ specs/{domain}/{prd-slug}/bdd/{UC-ID}-{slug}.feature ({N} scenarios)
|
|
180
|
-
...
|
|
181
|
-
|
|
182
|
-
Quality: {score}%
|
|
183
|
-
```
|
|
184
|
-
|
|
185
|
-
# Report Footer — Định dạng output chuẩn cho mọi lệnh
|
|
186
|
-
|
|
187
|
-
Mọi report của lệnh phải kết thúc bằng section footer chuẩn này.
|
|
188
|
-
|
|
189
|
-
## Status Badge
|
|
190
|
-
|
|
191
|
-
Chọn một theo kết quả:
|
|
192
|
-
- `✅ Complete` — mọi bước thành công, không có vấn đề
|
|
193
|
-
- `❌ Failed` — lệnh không hoàn thành được do lỗi chặn
|
|
194
|
-
- `⚠️ Warnings` — hoàn thành nhưng có vấn đề không chặn, nên review lại
|
|
195
|
-
|
|
196
|
-
## Output Artifacts
|
|
197
|
-
|
|
198
|
-
Liệt kê mọi file được tạo hoặc sửa bởi lệnh này:
|
|
199
|
-
```
|
|
200
|
-
Output Artifacts:
|
|
201
|
-
{created|updated} {file-path} ({mô tả ngắn})
|
|
202
|
-
{created|updated} {file-path} ({mô tả ngắn})
|
|
203
|
-
```
|
|
204
|
-
|
|
205
|
-
Nếu không ghi file nào (vd: lệnh review hoặc phân tích) → ghi `Output Artifacts: none (read-only)`.
|
|
206
|
-
|
|
207
|
-
## Pipeline Position
|
|
9
|
+
## /generate-bdd — Sinh BDD Feature Files
|
|
208
10
|
|
|
209
|
-
|
|
210
|
-
để người dùng luôn thấy lệnh này nằm ở đâu trong luồng end-to-end:
|
|
11
|
+
→ **Đọc và tuân theo `commands/generate-bdd.md`** với cùng `$ARGUMENTS`.
|
|
211
12
|
|
|
212
|
-
|
|
213
|
-
Discovery → PRD → [Design Spec] → BDD → Tech Design → Code → Dev Self-Check → QC → Trace Audit
|
|
214
|
-
```
|
|
13
|
+
Command lo: guard PRD approved + Design Spec (approved/độ-tươi/sanity) cho FE/App · Platform Selection web/app/system · System BDD synthesis (tổng hợp web+app, cross-platform conflict) · Version Check drift · proposal tester (chỉ `accepted`) · R1–R10 + C1–C5 + NHÓM grouping · `@trace` header đầy đủ + trace TSV.
|
|
215
14
|
|
|
216
|
-
|
|
15
|
+
## /generate-tech-docs — Sinh Technical Design Document
|
|
217
16
|
|
|
218
|
-
|
|
219
|
-
|-------|----------|
|
|
220
|
-
| Discovery | `/define-product` |
|
|
221
|
-
| PRD | `/generate-prd` · `/refine-prd` · `/review-context` (PRD) |
|
|
222
|
-
| Design Spec | `/generate-design-spec` |
|
|
223
|
-
| BDD | `/generate-bdd` · `/review-context` (BDD) |
|
|
224
|
-
| Tech Design | `/generate-tech-docs` · `/map-testids` · `/review-tech-docs` |
|
|
225
|
-
| Code | `/generate-code` · `/review-code` |
|
|
226
|
-
| Dev Self-Check | `/dev-gen-test` · `/dev-run-test` · `/dev-smoke-test` |
|
|
227
|
-
| QC | `/qc-analyze` · `/qc-plan` · `/qc-design-test` · `/qc-review` · `/qc-run-test` · `/qc-report` |
|
|
228
|
-
| Trace Audit | `/validate-traces` |
|
|
229
|
-
|
|
230
|
-
Với **lệnh review**, thêm vòng review 3 bước và đánh dấu bước hiện tại, vd:
|
|
231
|
-
`Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume`.
|
|
232
|
-
|
|
233
|
-
**Lệnh xuyên suốt** (`/sync`, `/update-framework`, `/fix-bug`, `/debug`, `/learn`,
|
|
234
|
-
`/report-bug`, `/propose-scenario`, `/generate-spec-manifest`) nằm ngoài pipeline tuyến tính —
|
|
235
|
-
**bỏ hẳn dòng Pipeline** cho các lệnh này (đừng cố nhét chúng vào sơ đồ).
|
|
236
|
-
|
|
237
|
-
## Gợi ý lệnh tiếp theo
|
|
238
|
-
|
|
239
|
-
Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
240
|
-
|
|
241
|
-
| Lệnh hiện tại | Gợi ý lệnh tiếp theo |
|
|
242
|
-
|-------------------------|-----------------------------------------------|
|
|
243
|
-
| /setup-ai-first | `/define-product` để bắt đầu feature đầu tiên |
|
|
244
|
-
| /define-product | `/generate-prd {product-definition-file}` |
|
|
245
|
-
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
246
|
-
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
247
|
-
| /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) |
|
|
248
|
-
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
249
|
-
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
250
|
-
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
251
|
-
| /qc-analyze | `/qc-plan {UC-ID}` (xử lý các gap blocker 🔴 trước) |
|
|
252
|
-
| /qc-plan | `/qc-design-test {UC-ID}` |
|
|
253
|
-
| /qc-design-test | `/qc-review {UC-ID}` (review test-case) |
|
|
254
|
-
| /qc-review (test-case) | `/qc-run-test {UC-ID}` nếu APPROVED; sửa TC nếu NEEDS_FIX |
|
|
255
|
-
| /qc-run-test | `/qc-report {UC-ID}` rồi `/qc-review {UC-ID}` (review script) |
|
|
256
|
-
| /qc-review (script) | `/qc-report {UC-ID}` rồi tạo PR nếu APPROVED |
|
|
257
|
-
| /qc-report | `/validate-traces {UC-ID}` để làm mới Living Docs (qc_status) |
|
|
258
|
-
| /generate-tech-docs | `/review-tech-docs {tech-design-file}` |
|
|
259
|
-
| /review-tech-docs | `/generate-code {feature-file}` nếu APPROVED; sửa doc nếu NEEDS_FIX |
|
|
260
|
-
| /generate-code | Lần gen đầu → `/review-code {UC-ID}`; gen lại → `/dev-gen-test {UC-ID}` |
|
|
261
|
-
| /dev-gen-test | `/dev-run-test {UC-ID}` |
|
|
262
|
-
| /dev-run-test (passing) | `/review-code {UC-ID}` |
|
|
263
|
-
| /dev-run-test (failing) | `/fix-bug {ticket-id}` hoặc `/debug {error}` |
|
|
264
|
-
| /review-code | `/dev-smoke-test {UC-ID}` hoặc tạo PR |
|
|
265
|
-
| /dev-smoke-test | Tạo PR và link tới ticket |
|
|
266
|
-
| /validate-traces | DRIFT/UNTRACKED → `/generate-code {UC-ID}`; GAP → `/dev-gen-test {UC-ID}`; tất cả OK → tạo PR |
|
|
267
|
-
| /fix-bug | Tạo PR và link tới ticket |
|
|
268
|
-
| /debug | `/fix-bug {ticket-id}` nếu cần sửa |
|
|
269
|
-
| /report-bug | Gửi cho dev (`/fix-bug {BUG-ID}`); nếu thiếu coverage → `/propose-scenario {UC-ID}` |
|
|
270
|
-
| /propose-scenario | Báo PO/Dev review proposal trong `feedback/bdd-proposals/` |
|
|
271
|
-
| /learn | Tiếp tục làm việc — lesson áp dụng ở lệnh kế tiếp |
|
|
272
|
-
| /sync | `/validate-traces` để xem độ phủ đầy đủ; xử lý mọi `📥 tester feedback` được nêu |
|
|
273
|
-
| /update-framework | Review `git diff .agent/`, commit; `/sync` để đồng bộ nội dung dự án |
|
|
274
|
-
|
|
275
|
-
Định dạng footer như sau:
|
|
276
|
-
```
|
|
277
|
-
---
|
|
278
|
-
Status : {badge}
|
|
279
|
-
{khối Output Artifacts}
|
|
280
|
-
Pipeline : Discovery → PRD → [BDD ◀ bạn ở đây] → Tech Design → Code → Dev Self-Check → QC → Trace Audit
|
|
281
|
-
(lệnh review) Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume
|
|
282
|
-
Next : {lệnh gợi ý kèm ví dụ tham số}
|
|
283
|
-
```
|
|
284
|
-
*(Bỏ dòng `Pipeline` cho các lệnh xuyên suốt liệt kê ở trên.)*
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
---
|
|
288
|
-
|
|
289
|
-
## /generate-tech-docs — Generate Technical Design Document
|
|
290
|
-
|
|
291
|
-
### Gate
|
|
292
|
-
|
|
293
|
-
Kiểm tra chất lượng BDD (đọc file .feature, verify scenario well-formed).
|
|
294
|
-
Nếu chất lượng < 80%, dừng và report: "BDD quality insufficient. Fix these issues first: [list]"
|
|
295
|
-
|
|
296
|
-
### Generate
|
|
297
|
-
|
|
298
|
-
Ghi `specs/{domain}/{prd-slug}/tech-docs/{UC-ID}-tech-design.md`:
|
|
299
|
-
|
|
300
|
-
```markdown
|
|
301
|
-
# Technical Design — {UC-ID}: {Feature}
|
|
302
|
-
|
|
303
|
-
**Domain**: {domain}
|
|
304
|
-
**Date**: {date}
|
|
305
|
-
**Spec**: specs/{domain}/{prd-slug}/bdd/{UC-ID}.feature
|
|
306
|
-
|
|
307
|
-
## §1. Overview
|
|
308
|
-
{Brief description of what this UC implements}
|
|
309
|
-
|
|
310
|
-
## §2. API Endpoints
|
|
311
|
-
|
|
312
|
-
| Method | Path | Auth/Role | Request Body | Response |
|
|
313
|
-
|--------|------|-----------|--------------|----------|
|
|
314
|
-
| GET | /v1/{resource} | {role} | — | {ResponseDTO} |
|
|
315
|
-
| POST | /v1/{resource} | {role} | {RequestDTO} | {ResponseDTO} |
|
|
316
|
-
|
|
317
|
-
## §3. Data Model
|
|
318
|
-
|
|
319
|
-
{Entity diagram or table structure}
|
|
320
|
-
|
|
321
|
-
Key entities:
|
|
322
|
-
- `{Entity}`: {description, key fields}
|
|
323
|
-
|
|
324
|
-
## §4. Service Flow
|
|
325
|
-
|
|
326
|
-
Sequence for each UC:
|
|
327
|
-
```
|
|
328
|
-
{Client} → Controller → {Facade} → {Service} → {Repository}
|
|
329
|
-
↓
|
|
330
|
-
{OtherService} (if cross-service)
|
|
331
|
-
```
|
|
332
|
-
|
|
333
|
-
## §5. Business Rules Implementation
|
|
334
|
-
|
|
335
|
-
| BR-ID | Rule | Implementation approach |
|
|
336
|
-
|-------|------|------------------------|
|
|
337
|
-
| BR-1 | {rule} | {how to implement} |
|
|
338
|
-
|
|
339
|
-
## §6. Error Handling
|
|
340
|
-
|
|
341
|
-
| Scenario | Exception | HTTP Status |
|
|
342
|
-
|----------|-----------|-------------|
|
|
343
|
-
| {resource} not found | {NotFoundException} | 404 |
|
|
344
|
-
| Validation failure | {ValidationException} | 400 |
|
|
345
|
-
| Unauthorized | {AuthException} | 403 |
|
|
346
|
-
|
|
347
|
-
## §7. Database Changes
|
|
348
|
-
|
|
349
|
-
{Migration script or schema changes needed}
|
|
350
|
-
|
|
351
|
-
## §8. Caching Strategy
|
|
352
|
-
|
|
353
|
-
{Which data to cache, TTL, invalidation triggers — or "N/A"}
|
|
354
|
-
|
|
355
|
-
## §9. Cross-Service Dependencies
|
|
356
|
-
|
|
357
|
-
{List external service calls, event producers/consumers}
|
|
358
|
-
```
|
|
359
|
-
|
|
360
|
-
Hướng dẫn: "SA/Lead nên review và approve trước khi chạy /generate-code."
|
|
361
|
-
|
|
362
|
-
# Report Footer — Định dạng output chuẩn cho mọi lệnh
|
|
363
|
-
|
|
364
|
-
Mọi report của lệnh phải kết thúc bằng section footer chuẩn này.
|
|
365
|
-
|
|
366
|
-
## Status Badge
|
|
367
|
-
|
|
368
|
-
Chọn một theo kết quả:
|
|
369
|
-
- `✅ Complete` — mọi bước thành công, không có vấn đề
|
|
370
|
-
- `❌ Failed` — lệnh không hoàn thành được do lỗi chặn
|
|
371
|
-
- `⚠️ Warnings` — hoàn thành nhưng có vấn đề không chặn, nên review lại
|
|
372
|
-
|
|
373
|
-
## Output Artifacts
|
|
374
|
-
|
|
375
|
-
Liệt kê mọi file được tạo hoặc sửa bởi lệnh này:
|
|
376
|
-
```
|
|
377
|
-
Output Artifacts:
|
|
378
|
-
{created|updated} {file-path} ({mô tả ngắn})
|
|
379
|
-
{created|updated} {file-path} ({mô tả ngắn})
|
|
380
|
-
```
|
|
381
|
-
|
|
382
|
-
Nếu không ghi file nào (vd: lệnh review hoặc phân tích) → ghi `Output Artifacts: none (read-only)`.
|
|
383
|
-
|
|
384
|
-
## Pipeline Position
|
|
385
|
-
|
|
386
|
-
In một sơ đồ pipeline một dòng, đánh dấu phase của lệnh HIỆN TẠI bằng `◀ bạn ở đây`,
|
|
387
|
-
để người dùng luôn thấy lệnh này nằm ở đâu trong luồng end-to-end:
|
|
388
|
-
|
|
389
|
-
```
|
|
390
|
-
Discovery → PRD → [Design Spec] → BDD → Tech Design → Code → Dev Self-Check → QC → Trace Audit
|
|
391
|
-
```
|
|
392
|
-
|
|
393
|
-
Tìm lệnh hiện tại trong bảng phase dưới đây và đánh dấu **phase của nó** trong sơ đồ trên:
|
|
394
|
-
|
|
395
|
-
| Phase | Commands |
|
|
396
|
-
|-------|----------|
|
|
397
|
-
| Discovery | `/define-product` |
|
|
398
|
-
| PRD | `/generate-prd` · `/refine-prd` · `/review-context` (PRD) |
|
|
399
|
-
| Design Spec | `/generate-design-spec` |
|
|
400
|
-
| BDD | `/generate-bdd` · `/review-context` (BDD) |
|
|
401
|
-
| Tech Design | `/generate-tech-docs` · `/map-testids` · `/review-tech-docs` |
|
|
402
|
-
| Code | `/generate-code` · `/review-code` |
|
|
403
|
-
| Dev Self-Check | `/dev-gen-test` · `/dev-run-test` · `/dev-smoke-test` |
|
|
404
|
-
| QC | `/qc-analyze` · `/qc-plan` · `/qc-design-test` · `/qc-review` · `/qc-run-test` · `/qc-report` |
|
|
405
|
-
| Trace Audit | `/validate-traces` |
|
|
406
|
-
|
|
407
|
-
Với **lệnh review**, thêm vòng review 3 bước và đánh dấu bước hiện tại, vd:
|
|
408
|
-
`Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume`.
|
|
409
|
-
|
|
410
|
-
**Lệnh xuyên suốt** (`/sync`, `/update-framework`, `/fix-bug`, `/debug`, `/learn`,
|
|
411
|
-
`/report-bug`, `/propose-scenario`, `/generate-spec-manifest`) nằm ngoài pipeline tuyến tính —
|
|
412
|
-
**bỏ hẳn dòng Pipeline** cho các lệnh này (đừng cố nhét chúng vào sơ đồ).
|
|
413
|
-
|
|
414
|
-
## Gợi ý lệnh tiếp theo
|
|
415
|
-
|
|
416
|
-
Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
417
|
-
|
|
418
|
-
| Lệnh hiện tại | Gợi ý lệnh tiếp theo |
|
|
419
|
-
|-------------------------|-----------------------------------------------|
|
|
420
|
-
| /setup-ai-first | `/define-product` để bắt đầu feature đầu tiên |
|
|
421
|
-
| /define-product | `/generate-prd {product-definition-file}` |
|
|
422
|
-
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
423
|
-
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
424
|
-
| /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) |
|
|
425
|
-
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
426
|
-
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
427
|
-
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
428
|
-
| /qc-analyze | `/qc-plan {UC-ID}` (xử lý các gap blocker 🔴 trước) |
|
|
429
|
-
| /qc-plan | `/qc-design-test {UC-ID}` |
|
|
430
|
-
| /qc-design-test | `/qc-review {UC-ID}` (review test-case) |
|
|
431
|
-
| /qc-review (test-case) | `/qc-run-test {UC-ID}` nếu APPROVED; sửa TC nếu NEEDS_FIX |
|
|
432
|
-
| /qc-run-test | `/qc-report {UC-ID}` rồi `/qc-review {UC-ID}` (review script) |
|
|
433
|
-
| /qc-review (script) | `/qc-report {UC-ID}` rồi tạo PR nếu APPROVED |
|
|
434
|
-
| /qc-report | `/validate-traces {UC-ID}` để làm mới Living Docs (qc_status) |
|
|
435
|
-
| /generate-tech-docs | `/review-tech-docs {tech-design-file}` |
|
|
436
|
-
| /review-tech-docs | `/generate-code {feature-file}` nếu APPROVED; sửa doc nếu NEEDS_FIX |
|
|
437
|
-
| /generate-code | Lần gen đầu → `/review-code {UC-ID}`; gen lại → `/dev-gen-test {UC-ID}` |
|
|
438
|
-
| /dev-gen-test | `/dev-run-test {UC-ID}` |
|
|
439
|
-
| /dev-run-test (passing) | `/review-code {UC-ID}` |
|
|
440
|
-
| /dev-run-test (failing) | `/fix-bug {ticket-id}` hoặc `/debug {error}` |
|
|
441
|
-
| /review-code | `/dev-smoke-test {UC-ID}` hoặc tạo PR |
|
|
442
|
-
| /dev-smoke-test | Tạo PR và link tới ticket |
|
|
443
|
-
| /validate-traces | DRIFT/UNTRACKED → `/generate-code {UC-ID}`; GAP → `/dev-gen-test {UC-ID}`; tất cả OK → tạo PR |
|
|
444
|
-
| /fix-bug | Tạo PR và link tới ticket |
|
|
445
|
-
| /debug | `/fix-bug {ticket-id}` nếu cần sửa |
|
|
446
|
-
| /report-bug | Gửi cho dev (`/fix-bug {BUG-ID}`); nếu thiếu coverage → `/propose-scenario {UC-ID}` |
|
|
447
|
-
| /propose-scenario | Báo PO/Dev review proposal trong `feedback/bdd-proposals/` |
|
|
448
|
-
| /learn | Tiếp tục làm việc — lesson áp dụng ở lệnh kế tiếp |
|
|
449
|
-
| /sync | `/validate-traces` để xem độ phủ đầy đủ; xử lý mọi `📥 tester feedback` được nêu |
|
|
450
|
-
| /update-framework | Review `git diff .agent/`, commit; `/sync` để đồng bộ nội dung dự án |
|
|
451
|
-
|
|
452
|
-
Định dạng footer như sau:
|
|
453
|
-
```
|
|
454
|
-
---
|
|
455
|
-
Status : {badge}
|
|
456
|
-
{khối Output Artifacts}
|
|
457
|
-
Pipeline : Discovery → PRD → [BDD ◀ bạn ở đây] → Tech Design → Code → Dev Self-Check → QC → Trace Audit
|
|
458
|
-
(lệnh review) Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume
|
|
459
|
-
Next : {lệnh gợi ý kèm ví dụ tham số}
|
|
460
|
-
```
|
|
461
|
-
*(Bỏ dòng `Pipeline` cho các lệnh xuyên suốt liệt kê ở trên.)*
|
|
17
|
+
→ **Đọc và tuân theo `commands/generate-tech-docs.md`** với cùng `$ARGUMENTS`.
|
|
462
18
|
|
|
19
|
+
Command lo: platform-aware (BE = API contract · FE/App = client design GATED trên System BDD + BE contract) · §2b Test Selectors · brownfield reverse-document · review-tech-docs T1–T7 (T7 sign-off) sau đó.
|