@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,11 +1,11 @@
|
|
|
1
|
-
# /dev-smoke-test — Smoke Test
|
|
1
|
+
# /dev-smoke-test — Smoke Test Service hoặc App đang chạy
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Dùng khi service/app **đang chạy sẵn**. Khác `/dev-run-test` (không cần live server).
|
|
4
4
|
|
|
5
5
|
## Gate
|
|
6
6
|
{{include:steps/gate.md}}
|
|
7
7
|
|
|
8
|
-
*
|
|
8
|
+
*Lưu ý: Với lệnh này, target ở Bước 1 là một UC-ID từ `$ARGUMENTS`. Context loading cung cấp `conventions.service_run`, thông tin port, và `tech_stack.module`.*
|
|
9
9
|
|
|
10
10
|
## Context
|
|
11
11
|
{{include:steps/context-loader.md}}
|
|
@@ -14,7 +14,7 @@ Use when service/app is **already running**. Different from `/dev-run-test` (no
|
|
|
14
14
|
|
|
15
15
|
## Service Detection
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
Đọc `active_module` từ context. Dùng để chọn đúng cách dev-smoke-test.
|
|
18
18
|
|
|
19
19
|
| Platform | Modules |
|
|
20
20
|
|---|---|
|
|
@@ -24,11 +24,11 @@ Read `active_module` from context. Use to select the correct dev-smoke-test appr
|
|
|
24
24
|
|
|
25
25
|
---
|
|
26
26
|
|
|
27
|
-
##
|
|
27
|
+
## Nếu `platform_type = backend`
|
|
28
28
|
|
|
29
|
-
### Phase 1 —
|
|
29
|
+
### Phase 1 — Xác minh service đang chạy
|
|
30
30
|
|
|
31
|
-
|
|
31
|
+
Đọc `conventions.service_run` từ project-context.yaml để xác định port.
|
|
32
32
|
|
|
33
33
|
```bash
|
|
34
34
|
# Try common health endpoints (use whichever applies):
|
|
@@ -37,20 +37,20 @@ curl -s http://localhost:{port}/actuator/health # Spring Boot
|
|
|
37
37
|
curl -s http://localhost:{port}/ping # some frameworks
|
|
38
38
|
```
|
|
39
39
|
|
|
40
|
-
|
|
40
|
+
Nếu chưa chạy → "Khởi động với `{conventions.service_run}` từ project root."
|
|
41
41
|
|
|
42
|
-
### Phase 2 —
|
|
42
|
+
### Phase 2 — Xác định endpoint
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
|
|
44
|
+
Từ UC-ID → tìm controller/handler có `@trace.implements={UC-ID}`.
|
|
45
|
+
Liệt kê: method, path, auth/role bắt buộc.
|
|
46
46
|
|
|
47
|
-
### Phase 3 —
|
|
47
|
+
### Phase 3 — Lấy auth token (nếu cần)
|
|
48
48
|
|
|
49
49
|
```
|
|
50
|
-
Endpoint
|
|
51
|
-
1.
|
|
52
|
-
2.
|
|
53
|
-
3. Skip — test public
|
|
50
|
+
Endpoint yêu cầu auth. Lựa chọn:
|
|
51
|
+
1. Dán Bearer token (từ Postman/DevTools)
|
|
52
|
+
2. Dùng test/dev token từ local config
|
|
53
|
+
3. Skip — chỉ test endpoint public
|
|
54
54
|
```
|
|
55
55
|
|
|
56
56
|
### Phase 4 — Run
|
|
@@ -67,21 +67,21 @@ curl -s -X POST "http://localhost:{port}/v1/{resource}" \
|
|
|
67
67
|
-d '{"field1": "test_value"}'
|
|
68
68
|
```
|
|
69
69
|
|
|
70
|
-
|
|
|
70
|
+
| Kết quả | Ý nghĩa |
|
|
71
71
|
|--------|---------|
|
|
72
|
-
| 200/201 +
|
|
73
|
-
| 200 +
|
|
74
|
-
| 400 |
|
|
75
|
-
| 401 | Token
|
|
76
|
-
| 403 |
|
|
72
|
+
| 200/201 + đúng data | ✅ OK |
|
|
73
|
+
| 200 + sai data | ⚠️ Logic bug → /debug |
|
|
74
|
+
| 400 | Sai request body → kiểm tra field bắt buộc |
|
|
75
|
+
| 401 | Token hết hạn hoặc sai config |
|
|
76
|
+
| 403 | Sai role → kiểm tra auth rule |
|
|
77
77
|
| 500 | Server error → /debug |
|
|
78
|
-
| Connection refused | Service
|
|
78
|
+
| Connection refused | Service chưa chạy |
|
|
79
79
|
|
|
80
|
-
###
|
|
80
|
+
### Nếu `active_module = context-engineering`
|
|
81
81
|
|
|
82
|
-
#### Phase 1 —
|
|
82
|
+
#### Phase 1 — Xác minh entry point của pipeline tới được
|
|
83
83
|
|
|
84
|
-
|
|
84
|
+
Chạy prompt function trực tiếp với một input hợp lệ tối thiểu:
|
|
85
85
|
|
|
86
86
|
```bash
|
|
87
87
|
# Python (pytest / script):
|
|
@@ -91,30 +91,30 @@ python -c "from {module}.{function} import {function}; print({function}(input='{
|
|
|
91
91
|
{conventions.test_command} -m smoke -v
|
|
92
92
|
```
|
|
93
93
|
|
|
94
|
-
#### Phase 2 —
|
|
94
|
+
#### Phase 2 — Xác minh cấu trúc output
|
|
95
95
|
|
|
96
|
-
|
|
96
|
+
Kiểm tra output khớp schema kỳ vọng:
|
|
97
97
|
|
|
98
98
|
```
|
|
99
99
|
Expected output schema: {output fields from @trace or tech-doc}
|
|
100
100
|
Actual output: {paste output here}
|
|
101
101
|
```
|
|
102
102
|
|
|
103
|
-
#### Phase 3 —
|
|
103
|
+
#### Phase 3 — Diễn giải kết quả
|
|
104
104
|
|
|
105
|
-
|
|
|
105
|
+
| Kết quả | Ý nghĩa |
|
|
106
106
|
|--------|---------|
|
|
107
|
-
| Output
|
|
108
|
-
| Output
|
|
109
|
-
| `APIError` / `AuthenticationError` | API key
|
|
110
|
-
| `TokenLimitError` | Input
|
|
111
|
-
| Exception / traceback |
|
|
107
|
+
| Output khớp schema | ✅ OK |
|
|
108
|
+
| Output có nhưng sai format | ⚠️ Logic bug → /debug |
|
|
109
|
+
| `APIError` / `AuthenticationError` | API key không hợp lệ hoặc service unavailable |
|
|
110
|
+
| `TokenLimitError` | Input quá dài — kiểm tra kích thước prompt template |
|
|
111
|
+
| Exception / traceback | Lỗi code → /debug |
|
|
112
112
|
|
|
113
113
|
---
|
|
114
114
|
|
|
115
|
-
##
|
|
115
|
+
## Nếu `platform_type = web-frontend`
|
|
116
116
|
|
|
117
|
-
### Phase 1 —
|
|
117
|
+
### Phase 1 — Xác minh dev server đang chạy
|
|
118
118
|
|
|
119
119
|
```bash
|
|
120
120
|
# Linux / macOS:
|
|
@@ -126,9 +126,9 @@ curl -s -o NUL -w "%{http_code}" http://localhost:{port}
|
|
|
126
126
|
# Should return 200. If not: start with {conventions.service_run} (e.g., npm run dev)
|
|
127
127
|
```
|
|
128
128
|
|
|
129
|
-
### Phase 2 —
|
|
129
|
+
### Phase 2 — Chạy E2E smoke test
|
|
130
130
|
|
|
131
|
-
|
|
131
|
+
Xác định E2E tool trong dự án (Playwright hoặc Cypress):
|
|
132
132
|
|
|
133
133
|
```bash
|
|
134
134
|
# Playwright — run scenarios tagged with this UC:
|
|
@@ -138,25 +138,25 @@ npx playwright test --grep "{UC-ID}"
|
|
|
138
138
|
npx cypress run --spec "cypress/e2e/{UC-ID}*"
|
|
139
139
|
```
|
|
140
140
|
|
|
141
|
-
|
|
142
|
-
1.
|
|
143
|
-
2.
|
|
144
|
-
3.
|
|
141
|
+
Nếu chưa có E2E test → mở browser và verify thủ công:
|
|
142
|
+
1. Điều hướng tới route của UC này
|
|
143
|
+
2. Thực hiện hành động chính của người dùng
|
|
144
|
+
3. Xác nhận kết quả kỳ vọng hiển thị
|
|
145
145
|
|
|
146
|
-
### Phase 3 —
|
|
146
|
+
### Phase 3 — Diễn giải kết quả
|
|
147
147
|
|
|
148
|
-
|
|
|
148
|
+
| Kết quả | Ý nghĩa |
|
|
149
149
|
|--------|---------|
|
|
150
|
-
|
|
|
150
|
+
| Tất cả E2E test pass | ✅ OK |
|
|
151
151
|
| Assertion failed | ⚠️ Logic bug → /debug |
|
|
152
|
-
| `ERR_CONNECTION_REFUSED` | Dev server
|
|
153
|
-
| API
|
|
152
|
+
| `ERR_CONNECTION_REFUSED` | Dev server chưa chạy |
|
|
153
|
+
| API trả về 4xx/5xx | Vấn đề backend → kiểm tra backend service |
|
|
154
154
|
|
|
155
155
|
---
|
|
156
156
|
|
|
157
|
-
##
|
|
157
|
+
## Nếu `platform_type = mobile`
|
|
158
158
|
|
|
159
|
-
### Phase 1 —
|
|
159
|
+
### Phase 1 — Xác minh device/emulator sẵn sàng
|
|
160
160
|
|
|
161
161
|
```bash
|
|
162
162
|
# Flutter:
|
|
@@ -174,15 +174,15 @@ npx react-native run-ios # build + install on iOS simulator
|
|
|
174
174
|
# Open Xcode → select simulator → Product → Run
|
|
175
175
|
```
|
|
176
176
|
|
|
177
|
-
### Phase 2 —
|
|
177
|
+
### Phase 2 — Checklist dev-smoke-test thủ công
|
|
178
178
|
|
|
179
|
-
|
|
180
|
-
1.
|
|
181
|
-
2.
|
|
182
|
-
3.
|
|
183
|
-
4.
|
|
179
|
+
Với UC đang test, verify trên device:
|
|
180
|
+
1. Điều hướng tới màn của UC này
|
|
181
|
+
2. Thực hiện hành động chính từ Scenario `.feature` (step `When`)
|
|
182
|
+
3. Xác nhận kết quả kỳ vọng hiển thị (step `Then`)
|
|
183
|
+
4. Kiểm tra có crash hoặc dialog lỗi bất ngờ không
|
|
184
184
|
|
|
185
|
-
### Phase 3 —
|
|
185
|
+
### Phase 3 — Bắt issue nếu phát hiện
|
|
186
186
|
|
|
187
187
|
```bash
|
|
188
188
|
# Flutter:
|
|
@@ -195,7 +195,7 @@ adb logcat -d | grep -i "error\|exception\|crash"
|
|
|
195
195
|
# Copy crash log from Xcode → Devices and Simulators → View Device Logs
|
|
196
196
|
```
|
|
197
197
|
|
|
198
|
-
|
|
198
|
+
Dán output vào `/debug`.
|
|
199
199
|
|
|
200
200
|
---
|
|
201
201
|
|
|
@@ -212,6 +212,6 @@ Platform: {backend | web-frontend | mobile}
|
|
|
212
212
|
|
|
213
213
|
Status legend: ✅ = OK | ⚠️ = Responded but wrong data / logic bug | ❌ = Error / not running
|
|
214
214
|
|
|
215
|
-
Issues: {
|
|
216
|
-
Next: /debug (
|
|
215
|
+
Issues: {mô tả các failure}
|
|
216
|
+
Next: /debug (dán lỗi tương tác) HOẶC /fix-bug {TICKET_ID} HOẶC sẵn sàng PR
|
|
217
217
|
```
|