@edupia-tutor/spec-driven-docs 0.14.0 → 0.14.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/index.js +12 -1
- package/commands/debug.md +436 -436
- package/commands/debug.tmpl +111 -111
- package/commands/define-product.md +350 -345
- package/commands/define-product.tmpl +69 -64
- package/commands/dev-gen-test.md +365 -365
- package/commands/dev-gen-test.tmpl +63 -63
- package/commands/dev-run-test.md +376 -376
- package/commands/dev-run-test.tmpl +74 -74
- package/commands/dev-smoke-test.md +341 -341
- package/commands/dev-smoke-test.tmpl +60 -60
- package/commands/fix-bug.md +403 -403
- package/commands/fix-bug.tmpl +78 -78
- package/commands/generate-bdd.md +513 -513
- package/commands/generate-bdd.tmpl +211 -211
- package/commands/generate-code.md +481 -483
- package/commands/generate-code.tmpl +179 -181
- package/commands/generate-design-spec.md +497 -497
- package/commands/generate-design-spec.tmpl +220 -220
- package/commands/generate-prd.md +452 -400
- package/commands/generate-prd.tmpl +50 -200
- package/commands/generate-spec-manifest.md +340 -340
- package/commands/generate-spec-manifest.tmpl +59 -59
- package/commands/generate-tech-docs.md +365 -365
- package/commands/generate-tech-docs.tmpl +84 -84
- package/commands/learn.md +347 -347
- package/commands/learn.tmpl +22 -22
- package/commands/map-testids.md +322 -322
- package/commands/map-testids.tmpl +41 -41
- package/commands/propose-scenario.md +335 -335
- package/commands/propose-scenario.tmpl +54 -54
- package/commands/qc-analyze.md +323 -324
- package/commands/qc-analyze.tmpl +42 -43
- package/commands/qc-design-test.md +304 -304
- package/commands/qc-design-test.tmpl +23 -23
- package/commands/qc-plan.md +297 -297
- package/commands/qc-plan.tmpl +16 -16
- package/commands/qc-report.md +302 -302
- package/commands/qc-report.tmpl +21 -21
- package/commands/qc-review.md +298 -298
- package/commands/qc-review.tmpl +17 -17
- package/commands/qc-run-test.md +337 -337
- package/commands/qc-run-test.tmpl +35 -35
- package/commands/refine-prd.md +428 -430
- package/commands/refine-prd.tmpl +62 -62
- package/commands/report-bug.md +351 -351
- package/commands/report-bug.tmpl +70 -70
- package/commands/review-code.md +364 -364
- package/commands/review-code.tmpl +39 -39
- package/commands/review-context.md +578 -580
- package/commands/review-context.tmpl +212 -212
- package/commands/review-tech-docs.md +427 -427
- package/commands/review-tech-docs.tmpl +146 -146
- package/commands/setup-ai-first.md +239 -239
- package/commands/setup-ai-first.tmpl +133 -133
- 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 +381 -381
- package/commands/validate-traces.tmpl +100 -100
- package/core/FRAMEWORK_VERSION +1 -1
- package/core/commands/debug.md +436 -436
- package/core/commands/define-product.md +350 -345
- package/core/commands/dev-gen-test.md +365 -365
- package/core/commands/dev-run-test.md +376 -376
- package/core/commands/dev-smoke-test.md +341 -341
- package/core/commands/fix-bug.md +403 -403
- package/core/commands/generate-bdd.md +513 -513
- package/core/commands/generate-code.md +481 -483
- package/core/commands/generate-design-spec.md +497 -497
- package/core/commands/generate-prd.md +452 -400
- package/core/commands/generate-spec-manifest.md +340 -340
- package/core/commands/generate-tech-docs.md +365 -365
- package/core/commands/learn.md +347 -347
- package/core/commands/map-testids.md +322 -322
- package/core/commands/propose-scenario.md +335 -335
- package/core/commands/qc-analyze.md +323 -324
- package/core/commands/qc-design-test.md +304 -304
- package/core/commands/qc-plan.md +297 -297
- package/core/commands/qc-report.md +302 -302
- package/core/commands/qc-review.md +298 -298
- package/core/commands/qc-run-test.md +337 -337
- package/core/commands/refine-prd.md +428 -430
- package/core/commands/report-bug.md +351 -351
- package/core/commands/review-code.md +364 -364
- package/core/commands/review-context.md +578 -580
- package/core/commands/review-tech-docs.md +427 -427
- package/core/commands/setup-ai-first.md +239 -239
- package/core/commands/sync.md +145 -145
- package/core/commands/update-framework.md +88 -88
- package/core/commands/validate-traces.md +381 -381
- package/core/skills/code/SKILL.md +389 -389
- package/core/skills/debug/SKILL.md +391 -391
- package/core/skills/design-spec/SKILL.md +318 -318
- package/core/skills/discovery/SKILL.md +7 -547
- package/core/skills/prd/SKILL.md +298 -394
- package/core/skills/setup-ai-first/SKILL.md +80 -80
- package/core/skills/spec/SKILL.md +178 -178
- package/core/skills/test/SKILL.md +604 -604
- package/core/steps/capture-lesson.md +44 -44
- package/core/steps/context-loader.md +175 -175
- 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 +107 -232
- package/core/templates/product-definition.template.md +101 -88
- package/core/templates/project-context.yaml +2 -2
- package/docs/01-getting-started/core-concepts.md +1 -1
- package/docs/01-getting-started/quickstart.md +7 -7
- package/docs/02-guides/developer/bdd-and-trace.md +1 -1
- package/docs/02-guides/developer/scenarios.md +5 -5
- package/docs/02-guides/product-owner/handoff-checklist.md +1 -1
- package/docs/02-guides/product-owner/scenarios.md +23 -23
- package/docs/02-guides/tester/bug-reporting.md +2 -2
- package/docs/02-guides/tester/reading-specs.md +2 -2
- package/docs/02-guides/tester/scenarios.md +1 -1
- package/docs/02-guides/tester/spec-manifest.md +3 -3
- package/docs/02-guides/tester/workflow.md +1 -1
- package/docs/03-concepts/architecture.md +3 -3
- package/docs/03-concepts/pipeline.md +3 -3
- package/docs/04-operations/publishing.md +20 -3
- package/docs/04-operations/sync-and-update.md +5 -5
- package/docs/05-reference/command-cheatsheet.md +2 -2
- package/docs/05-reference/commands.md +8 -8
- package/package.json +1 -1
- package/scripts/migrate-specs.js +5 -3
- package/scripts/rename-prd-files.js +174 -0
- package/skills/code/SKILL.md +389 -389
- package/skills/code/SKILL.tmpl +56 -56
- package/skills/debug/SKILL.md +391 -391
- package/skills/debug/SKILL.tmpl +60 -60
- package/skills/design-spec/SKILL.md +318 -318
- package/skills/design-spec/SKILL.tmpl +37 -37
- 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 +80 -80
- package/skills/setup-ai-first/SKILL.tmpl +28 -28
- package/skills/spec/SKILL.md +178 -178
- package/skills/spec/SKILL.tmpl +20 -20
- package/skills/test/SKILL.md +604 -604
- package/skills/test/SKILL.tmpl +44 -44
- package/steps/capture-lesson.md +44 -44
- package/steps/context-loader.md +175 -175
- 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 +107 -232
- package/templates/product-definition.template.md +101 -88
- package/templates/project-context.yaml +2 -2
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
---
|
|
2
|
-
description:
|
|
2
|
+
description: Sinh file BDD .feature từ một PRD đã duyệt, hoặc sinh tài liệu technical design. Trigger when: "/generate-bdd", "/generate-tech-docs", "tạo BDD", "tạo spec", "generate feature file", "write BDD scenarios", "tạo technical design", "tech design", "sinh tech docs", "API design", "sinh .feature".
|
|
3
3
|
---
|
|
4
4
|
|
|
5
5
|
# Spec Skills — BDD & Technical Design
|
|
6
6
|
|
|
7
|
-
|
|
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.
|
|
8
8
|
|
|
9
9
|
---
|
|
10
10
|
|
|
@@ -12,102 +12,102 @@ This skill handles two commands: `/generate-bdd` to create BDD feature files, an
|
|
|
12
12
|
|
|
13
13
|
### Gate
|
|
14
14
|
|
|
15
|
-
<!-- Directory: specs
|
|
16
|
-
# Gate —
|
|
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
17
|
|
|
18
|
-
|
|
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
19
|
|
|
20
|
-
##
|
|
20
|
+
## Bước 0 — Kiểm tra chế độ Sub-Agent
|
|
21
21
|
|
|
22
|
-
|
|
22
|
+
Trước tiên, kiểm tra xem `$ARGUMENTS` có phải là payload JSON từ một orchestrator hay không:
|
|
23
23
|
|
|
24
|
-
1.
|
|
25
|
-
2.
|
|
26
|
-
- **
|
|
27
|
-
-
|
|
28
|
-
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
32
|
-
3.
|
|
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
|
+
- Đi thẳng tới phần logic riêng của lệnh.
|
|
32
|
+
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).
|
|
33
33
|
|
|
34
|
-
##
|
|
34
|
+
## Bước 0-B — Kiểm tra Model
|
|
35
35
|
|
|
36
|
-
*
|
|
36
|
+
*Bỏ qua bước này nếu `_agent_mode: true` (sub-agent — orchestrator đã kiểm tra rồi).*
|
|
37
37
|
|
|
38
|
-
|
|
39
|
-
|
|
38
|
+
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.
|
|
39
|
+
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.
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
Hiển thị và chờ phản hồi:
|
|
42
42
|
|
|
43
43
|
```
|
|
44
44
|
⚙️ MODEL CHECK
|
|
45
45
|
──────────────────────────────────────────────────────────────────
|
|
46
|
-
Recommended : claude-opus-4 (
|
|
47
|
-
Why needed :
|
|
48
|
-
|
|
46
|
+
Recommended : claude-opus-4 (hoặc model Opus mới nhất)
|
|
47
|
+
Why needed : Phân tích spec, review kiến trúc, sinh code đòi hỏi
|
|
48
|
+
suy luận sâu. Model nhỏ hơn dễ bỏ sót edge case.
|
|
49
49
|
|
|
50
|
-
|
|
51
|
-
• Settings → Model →
|
|
52
|
-
•
|
|
50
|
+
Cách đổi trong Claude Code:
|
|
51
|
+
• Settings → Model → chọn "claude-opus"
|
|
52
|
+
• hoặc: /model → chọn claude-opus
|
|
53
53
|
|
|
54
|
-
|
|
55
|
-
Y —
|
|
56
|
-
S —
|
|
54
|
+
Đang chạy claude-opus?
|
|
55
|
+
Y — đúng, đang dùng claude-opus → tiếp tục
|
|
56
|
+
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)
|
|
57
57
|
──────────────────────────────────────────────────────────────────
|
|
58
58
|
```
|
|
59
59
|
|
|
60
|
-
- "Y" →
|
|
61
|
-
- "S" →
|
|
62
|
-
- "N"
|
|
60
|
+
- "Y" → tiếp tục sang Bước 1.
|
|
61
|
+
- "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).
|
|
62
|
+
- "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."
|
|
63
63
|
|
|
64
|
-
##
|
|
64
|
+
## Bước 1 — Xác định Target File
|
|
65
65
|
|
|
66
|
-
1.
|
|
67
|
-
2.
|
|
68
|
-
- **BDD
|
|
69
|
-
- **PRD
|
|
70
|
-
- **tech-docs
|
|
71
|
-
- **design-spec
|
|
66
|
+
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.
|
|
67
|
+
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/`):
|
|
68
|
+
- **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 đó.
|
|
69
|
+
- **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.)*
|
|
70
|
+
- **Lệnh tech-docs**: `{specs_dir}/{domain}/*/tech-docs/{UC-ID}*-tech-design*.md`.
|
|
71
|
+
- **Lệnh design-spec**: `{specs_dir}/{domain}/*/design-spec/{TICKET-ID}*.md`.
|
|
72
72
|
|
|
73
|
-
|
|
74
|
-
3.
|
|
75
|
-
-
|
|
76
|
-
-
|
|
77
|
-
-
|
|
73
|
+
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.
|
|
74
|
+
3. Nếu `$ARGUMENTS` rỗng hoặc không tìm thấy file khớp:
|
|
75
|
+
- 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).
|
|
76
|
+
- 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)"
|
|
77
|
+
- Chờ người dùng chọn rồi mới tiếp tục.
|
|
78
78
|
|
|
79
|
-
##
|
|
79
|
+
## Bước 2 — Chạy Context Loader
|
|
80
80
|
|
|
81
|
-
|
|
82
|
-
|
|
81
|
+
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`.
|
|
82
|
+
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.
|
|
83
83
|
|
|
84
|
-
##
|
|
84
|
+
## Bước 3 — CHECKPOINT
|
|
85
85
|
|
|
86
|
-
|
|
86
|
+
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:
|
|
87
87
|
|
|
88
88
|
```
|
|
89
89
|
CHECKPOINT
|
|
90
90
|
-----------
|
|
91
91
|
Target : {resolved file path}
|
|
92
|
-
Project : {project.name
|
|
92
|
+
Project : {project.name từ project-context.yaml}
|
|
93
93
|
Tech stack : {language} / {framework}
|
|
94
|
-
Module : {module
|
|
95
|
-
Domains : {
|
|
94
|
+
Module : {module nếu có, else "not configured"}
|
|
95
|
+
Domains : {danh sách domain, ngăn cách bởi dấu phẩy}
|
|
96
96
|
|
|
97
|
-
|
|
97
|
+
Tiếp tục? (Y/N)
|
|
98
98
|
```
|
|
99
99
|
|
|
100
|
-
|
|
101
|
-
- "Y" →
|
|
102
|
-
- "N" →
|
|
100
|
+
Chờ người dùng trả lời rõ ràng "Y" hoặc "N" rồi mới tiếp tục.
|
|
101
|
+
- "Y" → tiếp tục sang các bước riêng của lệnh bên dưới.
|
|
102
|
+
- "N" → dừng lại và hỏi người dùng muốn thay đổi gì.
|
|
103
103
|
|
|
104
104
|
|
|
105
|
-
|
|
106
|
-
-
|
|
105
|
+
Cũng verify: Kiểm tra PRD `Status` là `approved` (không phải `draft`).
|
|
106
|
+
- 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ý."
|
|
107
107
|
|
|
108
108
|
### UC Decomposition
|
|
109
109
|
|
|
110
|
-
|
|
110
|
+
Với mỗi Use Case trong PRD, suy ra scenario. Trình bày outline:
|
|
111
111
|
|
|
112
112
|
```
|
|
113
113
|
{DOMAIN}-UC1: {Name}
|
|
@@ -121,15 +121,15 @@ For each Use Case in the PRD, derive scenarios. Present outline:
|
|
|
121
121
|
...
|
|
122
122
|
```
|
|
123
123
|
|
|
124
|
-
**CHECKPOINT** —
|
|
125
|
-
|
|
124
|
+
**CHECKPOINT** — Hỏi: "Outline này đúng chưa? Có scenario nào còn thiếu không?"
|
|
125
|
+
Chờ xác nhận trước khi sinh file.
|
|
126
126
|
|
|
127
127
|
### Generate
|
|
128
128
|
|
|
129
|
-
|
|
129
|
+
Với mỗi UC, ghi `specs/{domain}/{prd-slug}/bdd/{UC-ID}-{slug}.feature`:
|
|
130
130
|
|
|
131
131
|
```gherkin
|
|
132
|
-
# @trace.source=specs/{domain}/{prd-slug}/prd.md
|
|
132
|
+
# @trace.source=specs/{domain}/{prd-slug}/{TICKET-ID}-{prd-slug}.md
|
|
133
133
|
# @trace.uc={UC-ID}
|
|
134
134
|
Feature: {UC Name}
|
|
135
135
|
|
|
@@ -162,12 +162,12 @@ Feature: {UC Name}
|
|
|
162
162
|
|
|
163
163
|
### Quality Check
|
|
164
164
|
|
|
165
|
-
|
|
166
|
-
- [ ]
|
|
167
|
-
- [ ]
|
|
168
|
-
- [ ]
|
|
169
|
-
- [ ]
|
|
170
|
-
- [ ]
|
|
165
|
+
Sau khi sinh, tự đánh giá:
|
|
166
|
+
- [ ] Mỗi acceptance criteria từ PRD có ít nhất một scenario
|
|
167
|
+
- [ ] Mỗi business rule được phủ bởi ít nhất một scenario
|
|
168
|
+
- [ ] Có error scenario (validation, not-found, unauthorized)
|
|
169
|
+
- [ ] Scenario atomic (một behavior mỗi scenario)
|
|
170
|
+
- [ ] Không có chi tiết implementation trong feature file (không SQL, không tên class)
|
|
171
171
|
|
|
172
172
|
### Output
|
|
173
173
|
|
|
@@ -181,38 +181,38 @@ Files created:
|
|
|
181
181
|
Quality: {score}%
|
|
182
182
|
```
|
|
183
183
|
|
|
184
|
-
# Report Footer —
|
|
184
|
+
# Report Footer — Định dạng output chuẩn cho mọi lệnh
|
|
185
185
|
|
|
186
|
-
|
|
186
|
+
Mọi report của lệnh phải kết thúc bằng section footer chuẩn này.
|
|
187
187
|
|
|
188
188
|
## Status Badge
|
|
189
189
|
|
|
190
|
-
|
|
191
|
-
- `✅ Complete` —
|
|
192
|
-
- `❌ Failed` —
|
|
193
|
-
- `⚠️ Warnings` —
|
|
190
|
+
Chọn một theo kết quả:
|
|
191
|
+
- `✅ Complete` — mọi bước thành công, không có vấn đề
|
|
192
|
+
- `❌ Failed` — lệnh không hoàn thành được do lỗi chặn
|
|
193
|
+
- `⚠️ Warnings` — hoàn thành nhưng có vấn đề không chặn, nên review lại
|
|
194
194
|
|
|
195
195
|
## Output Artifacts
|
|
196
196
|
|
|
197
|
-
|
|
197
|
+
Liệt kê mọi file được tạo hoặc sửa bởi lệnh này:
|
|
198
198
|
```
|
|
199
199
|
Output Artifacts:
|
|
200
|
-
{created|updated} {file-path} ({
|
|
201
|
-
{created|updated} {file-path} ({
|
|
200
|
+
{created|updated} {file-path} ({mô tả ngắn})
|
|
201
|
+
{created|updated} {file-path} ({mô tả ngắn})
|
|
202
202
|
```
|
|
203
203
|
|
|
204
|
-
|
|
204
|
+
Nếu không ghi file nào (vd: lệnh review hoặc phân tích) → ghi `Output Artifacts: none (read-only)`.
|
|
205
205
|
|
|
206
206
|
## Pipeline Position
|
|
207
207
|
|
|
208
|
-
|
|
209
|
-
|
|
208
|
+
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`,
|
|
209
|
+
để người dùng luôn thấy lệnh này nằm ở đâu trong luồng end-to-end:
|
|
210
210
|
|
|
211
211
|
```
|
|
212
212
|
Discovery → PRD → [Design Spec] → BDD → Tech Design → Code → Dev Self-Check → QC → Trace Audit
|
|
213
213
|
```
|
|
214
214
|
|
|
215
|
-
|
|
215
|
+
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:
|
|
216
216
|
|
|
217
217
|
| Phase | Commands |
|
|
218
218
|
|-------|----------|
|
|
@@ -226,61 +226,61 @@ Find the current command in this phase legend and mark **its** phase in the map
|
|
|
226
226
|
| QC | `/qc-analyze` · `/qc-plan` · `/qc-design-test` · `/qc-review` · `/qc-run-test` · `/qc-report` |
|
|
227
227
|
| Trace Audit | `/validate-traces` |
|
|
228
228
|
|
|
229
|
-
|
|
229
|
+
Với **lệnh review**, thêm vòng review 3 bước và đánh dấu bước hiện tại, vd:
|
|
230
230
|
`Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume`.
|
|
231
231
|
|
|
232
|
-
**
|
|
233
|
-
`/report-bug`, `/propose-scenario`, `/generate-spec-manifest`)
|
|
234
|
-
**
|
|
232
|
+
**Lệnh xuyên suốt** (`/sync`, `/update-framework`, `/fix-bug`, `/debug`, `/learn`,
|
|
233
|
+
`/report-bug`, `/propose-scenario`, `/generate-spec-manifest`) nằm ngoài pipeline tuyến tính —
|
|
234
|
+
**bỏ hẳn dòng Pipeline** cho các lệnh này (đừng cố nhét chúng vào sơ đồ).
|
|
235
235
|
|
|
236
|
-
##
|
|
236
|
+
## Gợi ý lệnh tiếp theo
|
|
237
237
|
|
|
238
|
-
|
|
238
|
+
Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
239
239
|
|
|
240
|
-
|
|
|
240
|
+
| Lệnh hiện tại | Gợi ý lệnh tiếp theo |
|
|
241
241
|
|-------------------------|-----------------------------------------------|
|
|
242
|
-
| /setup-ai-first | `/define-product`
|
|
242
|
+
| /setup-ai-first | `/define-product` để bắt đầu feature đầu tiên |
|
|
243
243
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
244
|
-
| /generate-prd | `/refine-prd {prd-file}`
|
|
245
|
-
| /refine-prd |
|
|
246
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
247
|
-
| /generate-design-spec | Designer review →
|
|
248
|
-
| /generate-bdd | `/review-context {feature-file}`
|
|
249
|
-
| /review-context (BDD) | `/generate-tech-docs {UC-ID}`
|
|
250
|
-
| /qc-analyze | `/qc-plan {UC-ID}` (
|
|
244
|
+
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
245
|
+
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
246
|
+
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (rồi BDD sau khi sign-off); BE: `/generate-bdd {prd-file}` trực tiếp; sửa PRD nếu NEEDS_FIX |
|
|
247
|
+
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
248
|
+
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
249
|
+
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
250
|
+
| /qc-analyze | `/qc-plan {UC-ID}` (xử lý các gap blocker 🔴 trước) |
|
|
251
251
|
| /qc-plan | `/qc-design-test {UC-ID}` |
|
|
252
|
-
| /qc-design-test | `/qc-review {UC-ID}` (test-case
|
|
253
|
-
| /qc-review (test-case) | `/qc-run-test {UC-ID}`
|
|
254
|
-
| /qc-run-test | `/qc-report {UC-ID}`
|
|
255
|
-
| /qc-review (script) | `/qc-report {UC-ID}`
|
|
256
|
-
| /qc-report | `/validate-traces {UC-ID}`
|
|
252
|
+
| /qc-design-test | `/qc-review {UC-ID}` (review test-case) |
|
|
253
|
+
| /qc-review (test-case) | `/qc-run-test {UC-ID}` nếu APPROVED; sửa TC nếu NEEDS_FIX |
|
|
254
|
+
| /qc-run-test | `/qc-report {UC-ID}` rồi `/qc-review {UC-ID}` (review script) |
|
|
255
|
+
| /qc-review (script) | `/qc-report {UC-ID}` rồi tạo PR nếu APPROVED |
|
|
256
|
+
| /qc-report | `/validate-traces {UC-ID}` để làm mới Living Docs (qc_status) |
|
|
257
257
|
| /generate-tech-docs | `/review-tech-docs {tech-design-file}` |
|
|
258
|
-
| /review-tech-docs | `/generate-code {feature-file}`
|
|
259
|
-
| /generate-code |
|
|
258
|
+
| /review-tech-docs | `/generate-code {feature-file}` nếu APPROVED; sửa doc nếu NEEDS_FIX |
|
|
259
|
+
| /generate-code | Lần gen đầu → `/review-code {UC-ID}`; gen lại → `/dev-gen-test {UC-ID}` |
|
|
260
260
|
| /dev-gen-test | `/dev-run-test {UC-ID}` |
|
|
261
261
|
| /dev-run-test (passing) | `/review-code {UC-ID}` |
|
|
262
|
-
| /dev-run-test (failing) | `/fix-bug {ticket-id}`
|
|
263
|
-
| /review-code | `/dev-smoke-test {UC-ID}`
|
|
264
|
-
| /dev-smoke-test |
|
|
265
|
-
| /validate-traces | DRIFT/UNTRACKED → `/generate-code {UC-ID}`; GAP → `/dev-gen-test {UC-ID}`;
|
|
266
|
-
| /fix-bug |
|
|
267
|
-
| /debug | `/fix-bug {ticket-id}`
|
|
268
|
-
| /report-bug |
|
|
269
|
-
| /propose-scenario |
|
|
270
|
-
| /learn |
|
|
271
|
-
| /sync | `/validate-traces`
|
|
272
|
-
| /update-framework | Review `git diff .agent/`, commit; `/sync`
|
|
273
|
-
|
|
274
|
-
|
|
262
|
+
| /dev-run-test (failing) | `/fix-bug {ticket-id}` hoặc `/debug {error}` |
|
|
263
|
+
| /review-code | `/dev-smoke-test {UC-ID}` hoặc tạo PR |
|
|
264
|
+
| /dev-smoke-test | Tạo PR và link tới ticket |
|
|
265
|
+
| /validate-traces | DRIFT/UNTRACKED → `/generate-code {UC-ID}`; GAP → `/dev-gen-test {UC-ID}`; tất cả OK → tạo PR |
|
|
266
|
+
| /fix-bug | Tạo PR và link tới ticket |
|
|
267
|
+
| /debug | `/fix-bug {ticket-id}` nếu cần sửa |
|
|
268
|
+
| /report-bug | Gửi cho dev (`/fix-bug {BUG-ID}`); nếu thiếu coverage → `/propose-scenario {UC-ID}` |
|
|
269
|
+
| /propose-scenario | Báo PO/Dev review proposal trong `feedback/bdd-proposals/` |
|
|
270
|
+
| /learn | Tiếp tục làm việc — lesson áp dụng ở lệnh kế tiếp |
|
|
271
|
+
| /sync | `/validate-traces` để xem độ phủ đầy đủ; xử lý mọi `📥 tester feedback` được nêu |
|
|
272
|
+
| /update-framework | Review `git diff .agent/`, commit; `/sync` để đồng bộ nội dung dự án |
|
|
273
|
+
|
|
274
|
+
Định dạng footer như sau:
|
|
275
275
|
```
|
|
276
276
|
---
|
|
277
277
|
Status : {badge}
|
|
278
|
-
{Output Artifacts
|
|
278
|
+
{khối Output Artifacts}
|
|
279
279
|
Pipeline : Discovery → PRD → [BDD ◀ bạn ở đây] → Tech Design → Code → Dev Self-Check → QC → Trace Audit
|
|
280
|
-
(review
|
|
281
|
-
Next : {
|
|
280
|
+
(lệnh review) Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume
|
|
281
|
+
Next : {lệnh gợi ý kèm ví dụ tham số}
|
|
282
282
|
```
|
|
283
|
-
*(
|
|
283
|
+
*(Bỏ dòng `Pipeline` cho các lệnh xuyên suốt liệt kê ở trên.)*
|
|
284
284
|
|
|
285
285
|
|
|
286
286
|
---
|
|
@@ -289,12 +289,12 @@ Next : {suggested command with example arguments}
|
|
|
289
289
|
|
|
290
290
|
### Gate
|
|
291
291
|
|
|
292
|
-
|
|
293
|
-
|
|
292
|
+
Kiểm tra chất lượng BDD (đọc file .feature, verify scenario well-formed).
|
|
293
|
+
Nếu chất lượng < 80%, dừng và report: "BDD quality insufficient. Fix these issues first: [list]"
|
|
294
294
|
|
|
295
295
|
### Generate
|
|
296
296
|
|
|
297
|
-
|
|
297
|
+
Ghi `specs/{domain}/{prd-slug}/tech-docs/{UC-ID}-tech-design.md`:
|
|
298
298
|
|
|
299
299
|
```markdown
|
|
300
300
|
# Technical Design — {UC-ID}: {Feature}
|
|
@@ -356,40 +356,40 @@ Sequence for each UC:
|
|
|
356
356
|
{List external service calls, event producers/consumers}
|
|
357
357
|
```
|
|
358
358
|
|
|
359
|
-
|
|
359
|
+
Hướng dẫn: "SA/Lead nên review và approve trước khi chạy /generate-code."
|
|
360
360
|
|
|
361
|
-
# Report Footer —
|
|
361
|
+
# Report Footer — Định dạng output chuẩn cho mọi lệnh
|
|
362
362
|
|
|
363
|
-
|
|
363
|
+
Mọi report của lệnh phải kết thúc bằng section footer chuẩn này.
|
|
364
364
|
|
|
365
365
|
## Status Badge
|
|
366
366
|
|
|
367
|
-
|
|
368
|
-
- `✅ Complete` —
|
|
369
|
-
- `❌ Failed` —
|
|
370
|
-
- `⚠️ Warnings` —
|
|
367
|
+
Chọn một theo kết quả:
|
|
368
|
+
- `✅ Complete` — mọi bước thành công, không có vấn đề
|
|
369
|
+
- `❌ Failed` — lệnh không hoàn thành được do lỗi chặn
|
|
370
|
+
- `⚠️ Warnings` — hoàn thành nhưng có vấn đề không chặn, nên review lại
|
|
371
371
|
|
|
372
372
|
## Output Artifacts
|
|
373
373
|
|
|
374
|
-
|
|
374
|
+
Liệt kê mọi file được tạo hoặc sửa bởi lệnh này:
|
|
375
375
|
```
|
|
376
376
|
Output Artifacts:
|
|
377
|
-
{created|updated} {file-path} ({
|
|
378
|
-
{created|updated} {file-path} ({
|
|
377
|
+
{created|updated} {file-path} ({mô tả ngắn})
|
|
378
|
+
{created|updated} {file-path} ({mô tả ngắn})
|
|
379
379
|
```
|
|
380
380
|
|
|
381
|
-
|
|
381
|
+
Nếu không ghi file nào (vd: lệnh review hoặc phân tích) → ghi `Output Artifacts: none (read-only)`.
|
|
382
382
|
|
|
383
383
|
## Pipeline Position
|
|
384
384
|
|
|
385
|
-
|
|
386
|
-
|
|
385
|
+
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`,
|
|
386
|
+
để người dùng luôn thấy lệnh này nằm ở đâu trong luồng end-to-end:
|
|
387
387
|
|
|
388
388
|
```
|
|
389
389
|
Discovery → PRD → [Design Spec] → BDD → Tech Design → Code → Dev Self-Check → QC → Trace Audit
|
|
390
390
|
```
|
|
391
391
|
|
|
392
|
-
|
|
392
|
+
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:
|
|
393
393
|
|
|
394
394
|
| Phase | Commands |
|
|
395
395
|
|-------|----------|
|
|
@@ -403,59 +403,59 @@ Find the current command in this phase legend and mark **its** phase in the map
|
|
|
403
403
|
| QC | `/qc-analyze` · `/qc-plan` · `/qc-design-test` · `/qc-review` · `/qc-run-test` · `/qc-report` |
|
|
404
404
|
| Trace Audit | `/validate-traces` |
|
|
405
405
|
|
|
406
|
-
|
|
406
|
+
Với **lệnh review**, thêm vòng review 3 bước và đánh dấu bước hiện tại, vd:
|
|
407
407
|
`Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume`.
|
|
408
408
|
|
|
409
|
-
**
|
|
410
|
-
`/report-bug`, `/propose-scenario`, `/generate-spec-manifest`)
|
|
411
|
-
**
|
|
409
|
+
**Lệnh xuyên suốt** (`/sync`, `/update-framework`, `/fix-bug`, `/debug`, `/learn`,
|
|
410
|
+
`/report-bug`, `/propose-scenario`, `/generate-spec-manifest`) nằm ngoài pipeline tuyến tính —
|
|
411
|
+
**bỏ hẳn dòng Pipeline** cho các lệnh này (đừng cố nhét chúng vào sơ đồ).
|
|
412
412
|
|
|
413
|
-
##
|
|
413
|
+
## Gợi ý lệnh tiếp theo
|
|
414
414
|
|
|
415
|
-
|
|
415
|
+
Gợi ý lệnh kế tiếp hợp lý theo phase của workflow:
|
|
416
416
|
|
|
417
|
-
|
|
|
417
|
+
| Lệnh hiện tại | Gợi ý lệnh tiếp theo |
|
|
418
418
|
|-------------------------|-----------------------------------------------|
|
|
419
|
-
| /setup-ai-first | `/define-product`
|
|
419
|
+
| /setup-ai-first | `/define-product` để bắt đầu feature đầu tiên |
|
|
420
420
|
| /define-product | `/generate-prd {product-definition-file}` |
|
|
421
|
-
| /generate-prd | `/refine-prd {prd-file}`
|
|
422
|
-
| /refine-prd |
|
|
423
|
-
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (
|
|
424
|
-
| /generate-design-spec | Designer review →
|
|
425
|
-
| /generate-bdd | `/review-context {feature-file}`
|
|
426
|
-
| /review-context (BDD) | `/generate-tech-docs {UC-ID}`
|
|
427
|
-
| /qc-analyze | `/qc-plan {UC-ID}` (
|
|
421
|
+
| /generate-prd | `/refine-prd {prd-file}` rồi `/review-context {prd-file}` |
|
|
422
|
+
| /refine-prd | Mở Review Board → cập nhật PRD → `/review-context {prd-file}` |
|
|
423
|
+
| /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (rồi BDD sau khi sign-off); BE: `/generate-bdd {prd-file}` trực tiếp; sửa PRD nếu NEEDS_FIX |
|
|
424
|
+
| /generate-design-spec | Designer review → xác nhận link Figma → PO + Designer sign-off → `/generate-bdd {prd-file}` |
|
|
425
|
+
| /generate-bdd | `/review-context {feature-file}` để kiểm tra độ phủ |
|
|
426
|
+
| /review-context (BDD) | `/generate-tech-docs {UC-ID}` nếu APPROVED; sinh lại nếu NEEDS_FIX |
|
|
427
|
+
| /qc-analyze | `/qc-plan {UC-ID}` (xử lý các gap blocker 🔴 trước) |
|
|
428
428
|
| /qc-plan | `/qc-design-test {UC-ID}` |
|
|
429
|
-
| /qc-design-test | `/qc-review {UC-ID}` (test-case
|
|
430
|
-
| /qc-review (test-case) | `/qc-run-test {UC-ID}`
|
|
431
|
-
| /qc-run-test | `/qc-report {UC-ID}`
|
|
432
|
-
| /qc-review (script) | `/qc-report {UC-ID}`
|
|
433
|
-
| /qc-report | `/validate-traces {UC-ID}`
|
|
429
|
+
| /qc-design-test | `/qc-review {UC-ID}` (review test-case) |
|
|
430
|
+
| /qc-review (test-case) | `/qc-run-test {UC-ID}` nếu APPROVED; sửa TC nếu NEEDS_FIX |
|
|
431
|
+
| /qc-run-test | `/qc-report {UC-ID}` rồi `/qc-review {UC-ID}` (review script) |
|
|
432
|
+
| /qc-review (script) | `/qc-report {UC-ID}` rồi tạo PR nếu APPROVED |
|
|
433
|
+
| /qc-report | `/validate-traces {UC-ID}` để làm mới Living Docs (qc_status) |
|
|
434
434
|
| /generate-tech-docs | `/review-tech-docs {tech-design-file}` |
|
|
435
|
-
| /review-tech-docs | `/generate-code {feature-file}`
|
|
436
|
-
| /generate-code |
|
|
435
|
+
| /review-tech-docs | `/generate-code {feature-file}` nếu APPROVED; sửa doc nếu NEEDS_FIX |
|
|
436
|
+
| /generate-code | Lần gen đầu → `/review-code {UC-ID}`; gen lại → `/dev-gen-test {UC-ID}` |
|
|
437
437
|
| /dev-gen-test | `/dev-run-test {UC-ID}` |
|
|
438
438
|
| /dev-run-test (passing) | `/review-code {UC-ID}` |
|
|
439
|
-
| /dev-run-test (failing) | `/fix-bug {ticket-id}`
|
|
440
|
-
| /review-code | `/dev-smoke-test {UC-ID}`
|
|
441
|
-
| /dev-smoke-test |
|
|
442
|
-
| /validate-traces | DRIFT/UNTRACKED → `/generate-code {UC-ID}`; GAP → `/dev-gen-test {UC-ID}`;
|
|
443
|
-
| /fix-bug |
|
|
444
|
-
| /debug | `/fix-bug {ticket-id}`
|
|
445
|
-
| /report-bug |
|
|
446
|
-
| /propose-scenario |
|
|
447
|
-
| /learn |
|
|
448
|
-
| /sync | `/validate-traces`
|
|
449
|
-
| /update-framework | Review `git diff .agent/`, commit; `/sync`
|
|
450
|
-
|
|
451
|
-
|
|
439
|
+
| /dev-run-test (failing) | `/fix-bug {ticket-id}` hoặc `/debug {error}` |
|
|
440
|
+
| /review-code | `/dev-smoke-test {UC-ID}` hoặc tạo PR |
|
|
441
|
+
| /dev-smoke-test | Tạo PR và link tới ticket |
|
|
442
|
+
| /validate-traces | DRIFT/UNTRACKED → `/generate-code {UC-ID}`; GAP → `/dev-gen-test {UC-ID}`; tất cả OK → tạo PR |
|
|
443
|
+
| /fix-bug | Tạo PR và link tới ticket |
|
|
444
|
+
| /debug | `/fix-bug {ticket-id}` nếu cần sửa |
|
|
445
|
+
| /report-bug | Gửi cho dev (`/fix-bug {BUG-ID}`); nếu thiếu coverage → `/propose-scenario {UC-ID}` |
|
|
446
|
+
| /propose-scenario | Báo PO/Dev review proposal trong `feedback/bdd-proposals/` |
|
|
447
|
+
| /learn | Tiếp tục làm việc — lesson áp dụng ở lệnh kế tiếp |
|
|
448
|
+
| /sync | `/validate-traces` để xem độ phủ đầy đủ; xử lý mọi `📥 tester feedback` được nêu |
|
|
449
|
+
| /update-framework | Review `git diff .agent/`, commit; `/sync` để đồng bộ nội dung dự án |
|
|
450
|
+
|
|
451
|
+
Định dạng footer như sau:
|
|
452
452
|
```
|
|
453
453
|
---
|
|
454
454
|
Status : {badge}
|
|
455
|
-
{Output Artifacts
|
|
455
|
+
{khối Output Artifacts}
|
|
456
456
|
Pipeline : Discovery → PRD → [BDD ◀ bạn ở đây] → Tech Design → Code → Dev Self-Check → QC → Trace Audit
|
|
457
|
-
(review
|
|
458
|
-
Next : {
|
|
457
|
+
(lệnh review) Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume
|
|
458
|
+
Next : {lệnh gợi ý kèm ví dụ tham số}
|
|
459
459
|
```
|
|
460
|
-
*(
|
|
460
|
+
*(Bỏ dòng `Pipeline` cho các lệnh xuyên suốt liệt kê ở trên.)*
|
|
461
461
|
|