@edupia-tutor/spec-driven-docs 0.14.7 → 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 (79) hide show
  1. package/commands/generate-bdd.md +59 -4
  2. package/commands/generate-bdd.tmpl +59 -4
  3. package/commands/generate-code.md +18 -1
  4. package/commands/generate-code.tmpl +18 -1
  5. package/commands/generate-design-spec.md +35 -5
  6. package/commands/generate-design-spec.tmpl +35 -5
  7. package/commands/generate-prd.md +7 -4
  8. package/commands/generate-tech-docs.md +1 -0
  9. package/commands/generate-tech-docs.tmpl +1 -0
  10. package/commands/propose-scenario.md +6 -2
  11. package/commands/propose-scenario.tmpl +6 -2
  12. package/commands/qc-analyze.md +14 -0
  13. package/commands/qc-analyze.tmpl +14 -0
  14. package/commands/refine-prd.md +15 -4
  15. package/commands/refine-prd.tmpl +15 -4
  16. package/commands/review-context.md +15 -11
  17. package/commands/review-context.tmpl +15 -11
  18. package/commands/validate-traces.md +1 -0
  19. package/commands/validate-traces.tmpl +1 -0
  20. package/core/FRAMEWORK_VERSION +1 -1
  21. package/core/commands/generate-bdd.md +59 -4
  22. package/core/commands/generate-code.md +18 -1
  23. package/core/commands/generate-design-spec.md +35 -5
  24. package/core/commands/generate-prd.md +7 -4
  25. package/core/commands/generate-tech-docs.md +1 -0
  26. package/core/commands/propose-scenario.md +6 -2
  27. package/core/commands/qc-analyze.md +14 -0
  28. package/core/commands/refine-prd.md +15 -4
  29. package/core/commands/review-context.md +15 -11
  30. package/core/commands/validate-traces.md +1 -0
  31. package/core/skills/code/SKILL.md +7 -759
  32. package/core/skills/debug/SKILL.md +9 -859
  33. package/core/skills/design-spec/SKILL.md +3 -582
  34. package/core/skills/prd/SKILL.md +5 -464
  35. package/core/skills/setup-ai-first/SKILL.md +3 -208
  36. package/core/skills/spec/SKILL.md +7 -450
  37. package/core/skills/test/SKILL.md +10 -1290
  38. package/core/steps/spawn-agent.md +12 -7
  39. package/core/templates/prd.template.md +7 -4
  40. package/docs/01-getting-started/core-concepts.md +2 -2
  41. package/docs/01-getting-started/quickstart.md +4 -3
  42. package/docs/02-guides/bdd-input-checklist.md +68 -0
  43. package/docs/02-guides/developer/README.md +3 -0
  44. package/docs/02-guides/developer/bdd-and-trace.md +1 -0
  45. package/docs/02-guides/developer/commands.md +3 -3
  46. package/docs/02-guides/developer/pr-checklist.md +1 -0
  47. package/docs/02-guides/developer/workflow.md +2 -2
  48. package/docs/02-guides/prd-input-checklist.md +94 -0
  49. package/docs/02-guides/product-owner/README.md +3 -1
  50. package/docs/02-guides/product-owner/commands.md +1 -1
  51. package/docs/02-guides/tech-docs-input-checklist.md +82 -0
  52. package/docs/02-guides/tester/README.md +1 -1
  53. package/docs/02-guides/tester/bug-reporting.md +1 -1
  54. package/docs/02-guides/tester/qc-automation.md +1 -1
  55. package/docs/03-concepts/README.md +1 -0
  56. package/docs/03-concepts/mechanisms-explained.md +34 -0
  57. package/docs/03-concepts/pipeline.md +12 -9
  58. package/docs/03-concepts/traceability.md +4 -1
  59. package/docs/04-operations/bug-flow.md +2 -0
  60. package/docs/05-reference/command-cheatsheet.md +8 -8
  61. package/docs/05-reference/commands.md +12 -10
  62. package/docs/05-reference/trace-schema.md +2 -1
  63. package/package.json +1 -1
  64. package/skills/code/SKILL.md +7 -759
  65. package/skills/code/SKILL.tmpl +7 -164
  66. package/skills/debug/SKILL.md +9 -859
  67. package/skills/debug/SKILL.tmpl +9 -252
  68. package/skills/design-spec/SKILL.md +3 -582
  69. package/skills/design-spec/SKILL.tmpl +3 -87
  70. package/skills/prd/SKILL.md +5 -464
  71. package/skills/prd/SKILL.tmpl +5 -63
  72. package/skills/setup-ai-first/SKILL.md +3 -208
  73. package/skills/setup-ai-first/SKILL.tmpl +3 -108
  74. package/skills/spec/SKILL.md +7 -450
  75. package/skills/spec/SKILL.tmpl +7 -162
  76. package/skills/test/SKILL.md +10 -1290
  77. package/skills/test/SKILL.tmpl +10 -288
  78. package/steps/spawn-agent.md +12 -7
  79. package/templates/prd.template.md +7 -4
@@ -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ý hai lệnh: `/generate-bdd` để tạo file BDD feature, và `/generate-tech-docs` để tạo tài liệu technical design.
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
- In một đồ pipeline một dòng, đánh dấu phase của lệnh HIỆN TẠI bằng `◀ bạn ở đây`,
210
- để người dùng luôn thấy lệnh này nằm ở đâu trong luồng end-to-end:
11
+ **Đọc 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
- 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:
15
+ ## /generate-tech-docs Sinh Technical Design Document
217
16
 
218
- | Phase | Commands |
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 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 đó.
@@ -4,171 +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ý hai lệnh: `/generate-bdd` để tạo file BDD feature, và `/generate-tech-docs` để tạo tài liệu technical design.
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
- {{include:steps/gate.md}}
17
-
18
- Cũng verify: Kiểm tra PRD `Status` là `approved` (không phải `draft`).
19
- - 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ý."
20
-
21
- ### UC Decomposition
22
-
23
- Với mỗi Use Case trong PRD, suy ra scenario. Trình bày outline:
24
-
25
- ```
26
- {DOMAIN}-UC1: {Name}
27
- SC1: Happy path — {client/role type} — {success scenario}
28
- SC2: Happy path — {other client/role type} (if applicable)
29
- SC3: Validation error — {invalid input}
30
- SC4: Not found / resource missing
31
- BRs covered: BR-1, BR-2
32
-
33
- {DOMAIN}-UC2: {Name}
34
- ...
35
- ```
36
-
37
- **CHECKPOINT** — Hỏi: "Outline này đúng chưa? Có scenario nào còn thiếu không?"
38
- Chờ xác nhận trước khi sinh file.
39
-
40
- ### Generate
41
-
42
- Với mỗi UC, ghi `specs/{domain}/{prd-slug}/bdd/{UC-ID}-{slug}.feature`:
43
-
44
- ```gherkin
45
- # @trace.source=specs/{domain}/{prd-slug}/{TICKET-ID}-{prd-slug}.md
46
- # @trace.uc={UC-ID}
47
- Feature: {UC Name}
48
-
49
- Background:
50
- Given the system is running
51
- And a {persona} is authenticated
52
-
53
- Scenario: SC1 — {Happy path description}
54
- Given {precondition}
55
- When {action}
56
- Then {expected outcome}
57
- And {secondary outcome if any}
58
-
59
- Scenario: SC2 — {Another happy path}
60
- Given {precondition}
61
- When {action}
62
- Then {expected outcome}
63
-
64
- Scenario: SC3 — Validation error
65
- Given {precondition}
66
- When {invalid action}
67
- Then the system returns a validation error
68
- And the error message mentions "{field}"
69
-
70
- Scenario: SC4 — Resource not found
71
- Given no {resource} exists with id {id}
72
- When {action}
73
- Then the system returns a not-found error
74
- ```
75
-
76
- ### Quality Check
77
-
78
- Sau khi sinh, tự đánh giá:
79
- - [ ] Mỗi acceptance criteria từ PRD có ít nhất một scenario
80
- - [ ] Mỗi business rule được phủ bởi ít nhất một scenario
81
- - [ ] Có error scenario (validation, not-found, unauthorized)
82
- - [ ] Scenario atomic (một behavior mỗi scenario)
83
- - [ ] Không có chi tiết implementation trong feature file (không SQL, không tên class)
84
-
85
- ### Output
86
-
87
- ```
88
- /generate-bdd Complete — {domain}
89
-
90
- Files created:
91
- ✅ specs/{domain}/{prd-slug}/bdd/{UC-ID}-{slug}.feature ({N} scenarios)
92
- ...
93
-
94
- Quality: {score}%
95
- ```
96
-
97
- {{include:steps/report-footer.md}}
98
-
99
- ---
100
-
101
- ## /generate-tech-docs — Generate Technical Design Document
102
-
103
- ### Gate
104
-
105
- Kiểm tra chất lượng BDD (đọc file .feature, verify scenario well-formed).
106
- Nếu chất lượng < 80%, dừng và report: "BDD quality insufficient. Fix these issues first: [list]"
107
-
108
- ### Generate
109
-
110
- Ghi `specs/{domain}/{prd-slug}/tech-docs/{UC-ID}-tech-design.md`:
111
-
112
- ```markdown
113
- # Technical Design — {UC-ID}: {Feature}
114
-
115
- **Domain**: {domain}
116
- **Date**: {date}
117
- **Spec**: specs/{domain}/{prd-slug}/bdd/{UC-ID}.feature
118
-
119
- ## §1. Overview
120
- {Brief description of what this UC implements}
121
-
122
- ## §2. API Endpoints
123
-
124
- | Method | Path | Auth/Role | Request Body | Response |
125
- |--------|------|-----------|--------------|----------|
126
- | GET | /v1/{resource} | {role} | — | {ResponseDTO} |
127
- | POST | /v1/{resource} | {role} | {RequestDTO} | {ResponseDTO} |
128
-
129
- ## §3. Data Model
130
-
131
- {Entity diagram or table structure}
132
-
133
- Key entities:
134
- - `{Entity}`: {description, key fields}
135
-
136
- ## §4. Service Flow
137
-
138
- Sequence for each UC:
139
- ```
140
- {Client} → Controller → {Facade} → {Service} → {Repository}
141
-
142
- {OtherService} (if cross-service)
143
- ```
144
-
145
- ## §5. Business Rules Implementation
146
-
147
- | BR-ID | Rule | Implementation approach |
148
- |-------|------|------------------------|
149
- | BR-1 | {rule} | {how to implement} |
150
-
151
- ## §6. Error Handling
152
-
153
- | Scenario | Exception | HTTP Status |
154
- |----------|-----------|-------------|
155
- | {resource} not found | {NotFoundException} | 404 |
156
- | Validation failure | {ValidationException} | 400 |
157
- | Unauthorized | {AuthException} | 403 |
158
-
159
- ## §7. Database Changes
160
-
161
- {Migration script or schema changes needed}
162
-
163
- ## §8. Caching Strategy
9
+ ## /generate-bdd — Sinh BDD Feature Files
164
10
 
165
- {Which data to cache, TTL, invalidation triggers or "N/A"}
11
+ **Đọc tuân theo `commands/generate-bdd.md`** với cùng `$ARGUMENTS`.
166
12
 
167
- ## §9. Cross-Service Dependencies
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.
168
14
 
169
- {List external service calls, event producers/consumers}
170
- ```
15
+ ## /generate-tech-docs Sinh Technical Design Document
171
16
 
172
- Hướng dẫn: "SA/Lead nên review approve trước khi chạy /generate-code."
17
+ **Đọctuân theo `commands/generate-tech-docs.md`** với cùng `$ARGUMENTS`.
173
18
 
174
- {{include:steps/report-footer.md}}
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 đó.