@educa-corp/sdd-framework 0.4.2 → 0.6.0
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/build.js +113 -19
- package/bin/gate-trace.js +464 -0
- package/bin/index.js +418 -146
- package/bin/lint-trace.js +602 -0
- package/bin/self-check.js +499 -6
- package/bin/trace-schema.json +1449 -692
- package/commands/debug.md +123 -510
- package/commands/debug.tmpl +3 -0
- package/commands/define-product.md +86 -509
- package/commands/dev-gen-test.md +120 -516
- package/commands/dev-run-test.md +120 -516
- package/commands/dev-smoke-test.md +86 -509
- package/commands/extend-prd.md +486 -0
- package/commands/extend-prd.tmpl +273 -0
- package/commands/fix-bug.md +152 -515
- package/commands/generate-architecture.md +94 -514
- package/commands/generate-architecture.tmpl +3 -0
- package/commands/generate-bdd.md +138 -519
- package/commands/generate-bdd.tmpl +18 -3
- package/commands/generate-code.md +156 -523
- package/commands/generate-code.tmpl +36 -7
- package/commands/generate-design-spec.md +86 -509
- package/commands/generate-prd.md +114 -509
- package/commands/generate-prd.tmpl +28 -0
- package/commands/generate-spec-manifest.md +86 -509
- package/commands/generate-tech-docs.md +86 -509
- package/commands/learn.md +172 -495
- package/commands/learn.tmpl +70 -3
- package/commands/map-testids.md +86 -509
- package/commands/propose-scenario.md +136 -508
- package/commands/propose-scenario.tmpl +52 -1
- package/commands/qc-analyze.md +86 -509
- package/commands/qc-design-test.md +87 -509
- package/commands/qc-design-test.tmpl +1 -0
- package/commands/qc-plan.md +86 -509
- package/commands/qc-report.md +86 -509
- package/commands/qc-review.md +86 -509
- package/commands/qc-run-test.md +133 -517
- package/commands/qc-run-test.tmpl +13 -1
- package/commands/refine-prd.md +99 -519
- package/commands/refine-prd.tmpl +3 -0
- package/commands/report-bug.md +86 -509
- package/commands/review-code.md +127 -513
- package/commands/review-code.tmpl +7 -3
- package/commands/review-context.md +96 -515
- package/commands/review-context.tmpl +6 -2
- package/commands/review-tech-docs.md +90 -510
- package/commands/review-tech-docs.tmpl +3 -0
- package/commands/setup-ai-first.md +166 -137
- package/commands/setup-ai-first.tmpl +72 -0
- package/commands/sync.md +86 -118
- package/commands/sync.tmpl +84 -16
- package/commands/update-framework.md +16 -102
- package/commands/update-framework.tmpl +14 -0
- package/commands/validate-traces.md +458 -531
- package/commands/validate-traces.tmpl +381 -31
- package/core/FRAMEWORK_VERSION +1 -1
- package/core/README.md +20 -0
- package/core/commands/debug.md +123 -510
- package/core/commands/define-product.md +86 -509
- package/core/commands/dev-gen-test.md +120 -516
- package/core/commands/dev-run-test.md +120 -516
- package/core/commands/dev-smoke-test.md +86 -509
- package/core/commands/extend-prd.md +486 -0
- package/core/commands/fix-bug.md +152 -515
- package/core/commands/generate-architecture.md +94 -514
- package/core/commands/generate-bdd.md +138 -519
- package/core/commands/generate-code.md +156 -523
- package/core/commands/generate-design-spec.md +86 -509
- package/core/commands/generate-prd.md +114 -509
- package/core/commands/generate-spec-manifest.md +86 -509
- package/core/commands/generate-tech-docs.md +86 -509
- package/core/commands/learn.md +172 -495
- package/core/commands/map-testids.md +86 -509
- package/core/commands/propose-scenario.md +136 -508
- package/core/commands/qc-analyze.md +86 -509
- package/core/commands/qc-design-test.md +87 -509
- package/core/commands/qc-plan.md +86 -509
- package/core/commands/qc-report.md +86 -509
- package/core/commands/qc-review.md +86 -509
- package/core/commands/qc-run-test.md +133 -517
- package/core/commands/refine-prd.md +99 -519
- package/core/commands/report-bug.md +86 -509
- package/core/commands/review-code.md +127 -513
- package/core/commands/review-context.md +96 -515
- package/core/commands/review-tech-docs.md +90 -510
- package/core/commands/setup-ai-first.md +166 -137
- package/core/commands/sync.md +86 -118
- package/core/commands/update-framework.md +16 -102
- package/core/commands/validate-traces.md +458 -531
- package/core/hooks/data-guard.js +174 -83
- package/core/hooks/settings.json +2 -1
- package/core/rules/workflow.md +48 -4
- package/core/steps/capture-lesson.md +34 -1
- package/core/steps/context-loader.md +24 -3
- package/core/steps/gate.md +92 -35
- package/core/steps/report-footer.md +26 -2
- package/core/steps/trace-mirror.md +34 -7
- package/core/templates/README.md +24 -1
- package/core/templates/ci/trace-gate.yml +146 -0
- package/core/templates/feature.template +1 -1
- package/core/templates/hooks/pre-push +61 -0
- package/docs/01-getting-started/installation.md +18 -1
- package/docs/01-getting-started/what-is-sdd.md +4 -2
- package/docs/02-concepts/architecture.md +48 -5
- package/docs/02-concepts/pipeline-steps/02-specification.md +39 -3
- package/docs/02-concepts/pipeline-steps/04-bdd.md +24 -2
- package/docs/02-concepts/pipeline-steps/05-tech-docs.md +18 -1
- package/docs/02-concepts/pipeline-steps/06-code.md +35 -4
- package/docs/02-concepts/pipeline-steps/09-validate-traces.md +137 -12
- package/docs/02-concepts/pipeline-steps/10-feedback-loop.md +59 -3
- package/docs/02-concepts/roles-and-hitl.md +1 -1
- package/docs/02-concepts/traceability.md +183 -117
- package/docs/03-guides/architect.md +63 -0
- package/docs/03-guides/developer.md +20 -4
- package/docs/03-guides/product-owner.md +72 -68
- package/docs/03-guides/tester-qa.md +81 -70
- package/docs/04-reference/commands.md +134 -105
- package/docs/04-reference/configuration.md +146 -94
- package/docs/04-reference/model-selection.md +32 -19
- package/docs/04-reference/trace-schema.md +26 -9
- package/docs/explain/02-generate-prd.md +80 -78
- package/docs/explain/02b-extend-prd.md +125 -0
- package/docs/explain/03-refine-prd.md +86 -86
- package/docs/explain/04-review-context.md +18 -1
- package/docs/explain/06-generate-bdd.md +23 -0
- package/docs/explain/08-review-tech-docs.md +20 -5
- package/docs/explain/10-review-code.md +36 -2
- package/docs/explain/19-qc-run-test.md +87 -67
- package/docs/explain/21-validate-traces.md +75 -68
- package/docs/explain/23-fix-bug.md +19 -3
- package/docs/explain/26-propose-scenario.md +70 -63
- package/docs/explain/27-learn.md +5 -3
- package/docs/explain/README.md +135 -134
- package/hooks/data-guard.js +174 -83
- package/hooks/settings.json +2 -1
- package/package.json +53 -50
- package/rules/workflow.md +48 -4
- package/steps/capture-lesson.md +34 -1
- package/steps/context-loader.md +24 -3
- package/steps/gate.md +92 -35
- package/steps/report-footer.md +26 -2
- package/steps/trace-mirror.md +34 -7
- package/templates/README.md +24 -1
- package/templates/ci/trace-gate.yml +146 -0
- package/templates/feature.template +1 -1
- package/templates/hooks/pre-push +61 -0
- package/scripts/init.sh +0 -49
- package/scripts/upgrade.sh +0 -94
|
@@ -1,70 +1,81 @@
|
|
|
1
|
-
[← Docs Home](../README.md) · [Guides](./)
|
|
2
|
-
|
|
3
|
-
# Guide · Tester / QA
|
|
4
|
-
|
|
5
|
-
> Bạn **chạy kiểm thử chính thức** (dây chuyền `/qc-*`, Playwright) và là **kênh feedback** đưa bug/scenario ngược về spec. Bạn ghi `qc_status` — trạng thái QC chính thức, có evidence.
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Chuỗi bước của bạn (Your path)
|
|
10
|
-
|
|
11
|
-
```mermaid
|
|
12
|
-
flowchart LR
|
|
13
|
-
A["/qc-analyze"] --> P["/qc-plan"] --> D["/qc-design-test"]
|
|
14
|
-
D --> R["/qc-review<br/>🛑 cổng"] --> RUN["/qc-run-test<br/>ghi qc_status"] --> REP["/qc-report<br/>product-gap"]
|
|
15
|
-
REP --> FB["/report-bug · /propose-scenario"]
|
|
16
|
-
FB --> SYNC["/sync"]
|
|
17
|
-
```
|
|
18
|
-
|
|
19
|
-
---
|
|
20
|
-
|
|
21
|
-
## Việc của bạn ở mỗi bước
|
|
22
|
-
|
|
23
|
-
| Trạm | Bạn làm gì |
|
|
24
|
-
|------|-----------|
|
|
25
|
-
| [`/qc-analyze`](../02-concepts/pipeline-steps/08-qc-automation.md) | Phân rã yêu cầu + phát hiện **gap tài liệu** |
|
|
26
|
-
| `/qc-plan` | Đánh giá rủi ro + câu hỏi cho dev |
|
|
27
|
-
| `/qc-design-test` | Thiết kế test case Markdown (`*.Test.md`) |
|
|
28
|
-
| `/qc-review` | 🛑 **Cổng review** case & script trước khi chạy |
|
|
29
|
-
| `/qc-run-test` | Chạy pytest-playwright, ghi **`qc_status`**; phân loại FAIL |
|
|
30
|
-
| `/qc-report` | Report + evidence, đẩy **product-gap** về PO/Dev |
|
|
31
|
-
| [Feedback](../02-concepts/pipeline-steps/10-feedback-loop.md) | `/report-bug`, `/propose-scenario` — kênh có hồ sơ spec |
|
|
32
|
-
|
|
33
|
-
Bạn cũng dùng `/validate-traces` để thấy **gap chưa phủ** (spec ↔ code ↔ test).
|
|
34
|
-
|
|
35
|
-
---
|
|
36
|
-
|
|
37
|
-
## Nguyên tắc sống còn cho QA
|
|
38
|
-
|
|
39
|
-
1. **`qc_status` ≠ `dev_selftest`** — bạn ghi QC chính thức (Playwright, evidence); dev smoke là trục độc lập.
|
|
40
|
-
2. **Không bao giờ fake-pass** — FAIL do product-gap thì **giữ FAIL + evidence**, đẩy về PO/Dev. Chỉ sửa script khi là script-bug (selector/logic).
|
|
41
|
-
3. **Không chạy test kém** — phải qua cổng `/qc-review` trước `/qc-run-test`.
|
|
42
|
-
4. **Bug phải spec-anchored** — `/report-bug` gắn `@trace` tới UC/SC để truy vết & regression.
|
|
43
|
-
5.
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
-
|
|
53
|
-
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
1
|
+
[← Docs Home](../README.md) · [Guides](./)
|
|
2
|
+
|
|
3
|
+
# Guide · Tester / QA
|
|
4
|
+
|
|
5
|
+
> Bạn **chạy kiểm thử chính thức** (dây chuyền `/qc-*`, Playwright) và là **kênh feedback** đưa bug/scenario ngược về spec. Bạn ghi `qc_status` — trạng thái QC chính thức, có evidence.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Chuỗi bước của bạn (Your path)
|
|
10
|
+
|
|
11
|
+
```mermaid
|
|
12
|
+
flowchart LR
|
|
13
|
+
A["/qc-analyze"] --> P["/qc-plan"] --> D["/qc-design-test"]
|
|
14
|
+
D --> R["/qc-review<br/>🛑 cổng"] --> RUN["/qc-run-test<br/>ghi qc_status"] --> REP["/qc-report<br/>product-gap"]
|
|
15
|
+
REP --> FB["/report-bug · /propose-scenario"]
|
|
16
|
+
FB --> SYNC["/sync"]
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Việc của bạn ở mỗi bước
|
|
22
|
+
|
|
23
|
+
| Trạm | Bạn làm gì |
|
|
24
|
+
|------|-----------|
|
|
25
|
+
| [`/qc-analyze`](../02-concepts/pipeline-steps/08-qc-automation.md) | Phân rã yêu cầu + phát hiện **gap tài liệu** |
|
|
26
|
+
| `/qc-plan` | Đánh giá rủi ro + câu hỏi cho dev |
|
|
27
|
+
| `/qc-design-test` | Thiết kế test case Markdown (`*.Test.md`) |
|
|
28
|
+
| `/qc-review` | 🛑 **Cổng review** case & script trước khi chạy |
|
|
29
|
+
| `/qc-run-test` | Chạy pytest-playwright, ghi **`qc_status`**; phân loại FAIL |
|
|
30
|
+
| `/qc-report` | Report + evidence, đẩy **product-gap** về PO/Dev |
|
|
31
|
+
| [Feedback](../02-concepts/pipeline-steps/10-feedback-loop.md) | `/report-bug`, `/propose-scenario` — kênh có hồ sơ spec |
|
|
32
|
+
|
|
33
|
+
Bạn cũng dùng `/validate-traces` để thấy **gap chưa phủ** (spec ↔ code ↔ test).
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Nguyên tắc sống còn cho QA
|
|
38
|
+
|
|
39
|
+
1. **`qc_status` ≠ `dev_selftest`** — bạn ghi QC chính thức (Playwright, evidence); dev smoke là trục độc lập.
|
|
40
|
+
2. **Không bao giờ fake-pass** — FAIL do product-gap thì **giữ FAIL + evidence**, đẩy về PO/Dev. Chỉ sửa script khi là script-bug (selector/logic).
|
|
41
|
+
3. **Không chạy test kém** — phải qua cổng `/qc-review` trước `/qc-run-test`.
|
|
42
|
+
4. **Bug phải spec-anchored** — `/report-bug` gắn `@trace` tới UC/SC để truy vết & regression.
|
|
43
|
+
5. **Bạn là người ĐÓNG bug** — `/fix-bug` của dev chỉ đặt `🟡 Fixed`; `🟢 Closed` do `/qc-run-test` đặt khi `qc_status` của SC liên kết flip `pass`. Dev không tự đóng bug của mình.
|
|
44
|
+
- Ngoại lệ: SC pass mà bug còn `🟢 Open` (chưa ai fix) → **không đóng**, giữ `Open` + kiểm tra lại test. Test pass trên bug chưa fix là dấu hiệu **test sai**.
|
|
45
|
+
6. **`/propose-scenario` dùng đúng bộ tag canonical** — `@trace.scenario` (placeholder `SC?`, `/generate-bdd` gán số khi chèn) · `@trace.sc_version: 1.0` · `@trace.business_rules`. AC ghi thành comment `# Covers:`, **không** phải trace key. Thiếu `@trace.scenario`/`sc_version` thì scenario vào BDD mà **không có row trace** → vô hình với coverage.
|
|
46
|
+
7. Stack QC cố định: Python + pytest-playwright + Page Object (module `qc-playwright`), **độc lập** module của dev.
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
## Câu hỏi bạn cần trả lời được
|
|
51
|
+
|
|
52
|
+
- Yêu cầu phân rã thành test case nào? Tài liệu có gap gì?
|
|
53
|
+
- Rủi ro nào cao? Cần hỏi dev gì?
|
|
54
|
+
- SC nào PASS/FAIL chính thức? FAIL là **script-bug** hay **product-gap**?
|
|
55
|
+
- Bug này gắn với scenario/spec nào?
|
|
56
|
+
- Scenario nào còn thiếu cần đề xuất (`/propose-scenario`)?
|
|
57
|
+
- Hành vi phát hiện được có **AC nào phủ** không? → quyết định Case A hay Case B:
|
|
58
|
+
|
|
59
|
+
| | Đi đâu | Ai xử |
|
|
60
|
+
|---|---|---|
|
|
61
|
+
| **Case A** — thiếu scenario cho AC **đã có** | `feedback/bdd-proposals/` | `/generate-bdd` tự chèn khi bạn đặt `Status: accepted` |
|
|
62
|
+
| **Case B** — requirement **MỚI**, không AC nào phủ | `feedback/prd-change-requests/` | PO chạy `/extend-prd` |
|
|
63
|
+
|
|
64
|
+
Case B **không tự vào BDD được** — scenario chưa có AC để trace tới. Và vì chưa có AC, **không cờ trace nào bắt được** thiếu sót đó. `/validate-traces` sẽ nhắc lại kèm **số ngày chờ** chừng nào request còn `Open`.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Anti-pattern
|
|
69
|
+
|
|
70
|
+
- ❌ Sửa script cho "xanh" khi thực chất là product-gap → giấu lỗi sản phẩm.
|
|
71
|
+
- ❌ Chạy `/qc-run-test` khi chưa qua `/qc-review`.
|
|
72
|
+
- ❌ Lẫn `qc_status` với `dev_selftest`.
|
|
73
|
+
- ❌ Bug không gắn spec → khó truy vết, khó regression.
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
77
|
+
## Lệnh của bạn (Your commands)
|
|
78
|
+
|
|
79
|
+
`/qc-analyze` · `/qc-plan` · `/qc-design-test` · `/qc-review` · `/qc-run-test` · `/qc-report` · `/report-bug` · `/propose-scenario` · `/validate-traces`
|
|
80
|
+
|
|
81
|
+
→ [Bảng lệnh đầy đủ](../04-reference/commands.md) · [Traceability](../02-concepts/traceability.md)
|
|
@@ -1,105 +1,134 @@
|
|
|
1
|
-
[← Docs Home](../README.md) · [Reference](./)
|
|
2
|
-
|
|
3
|
-
# Reference · Commands — Bảng đầy đủ (Command Catalog)
|
|
4
|
-
|
|
5
|
-
>
|
|
6
|
-
|
|
7
|
-
Mọi lệnh chạy chung một **Gate** (model check → target → context-loader → checkpoint). Xem [Khung chung](../02-concepts/pipeline-steps/README.md#khung-chung-mọi-command-common-gate).
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
## 0 · Setup & Foundation
|
|
12
|
-
|
|
13
|
-
| Lệnh | Input | Output | Owner |
|
|
14
|
-
|------|-------|--------|-------|
|
|
15
|
-
| `/setup-ai-first` | Dự án trống/có code | `.agent/`, `.claude/`, `project-context.yaml`, `CLAUDE.md` | Admin/Lead |
|
|
16
|
-
| `/generate-architecture` | config + tài liệu (`--from`) + code | `architecture.md` (SSOT kiến trúc, theo tier) | SA/Lead |
|
|
17
|
-
|
|
18
|
-
## 1 · Discovery
|
|
19
|
-
|
|
20
|
-
| Lệnh | Input | Output | Owner |
|
|
21
|
-
|------|-------|--------|-------|
|
|
22
|
-
| `/define-product` | Ý tưởng (+Figma) | `product-definition/*.md` (8 chặng) | PO |
|
|
23
|
-
|
|
24
|
-
## 2 · Specification (PRD)
|
|
25
|
-
|
|
26
|
-
| Lệnh | Input | Output | Owner |
|
|
27
|
-
|------|-------|--------|-------|
|
|
28
|
-
| `/generate-prd` | product-definition | PRD draft | PO |
|
|
29
|
-
| `/
|
|
30
|
-
| `/
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
| `/
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
| `/
|
|
58
|
-
| `/
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
|
65
|
-
|
|
66
|
-
| `/
|
|
67
|
-
| `/
|
|
68
|
-
| `/
|
|
69
|
-
|
|
70
|
-
##
|
|
71
|
-
|
|
72
|
-
| Lệnh | Input | Output | Owner |
|
|
73
|
-
|------|-------|--------|-------|
|
|
74
|
-
| `/
|
|
75
|
-
| `/
|
|
76
|
-
| `/
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
|
84
|
-
|
|
85
|
-
| `/
|
|
86
|
-
| `/
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
| `/
|
|
94
|
-
| `/
|
|
95
|
-
| `/
|
|
96
|
-
| `/
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
-
|
|
103
|
-
-
|
|
104
|
-
|
|
105
|
-
|
|
1
|
+
[← Docs Home](../README.md) · [Reference](./)
|
|
2
|
+
|
|
3
|
+
# Reference · Commands — Bảng đầy đủ (Command Catalog)
|
|
4
|
+
|
|
5
|
+
> 32 slash command, gom theo phase pipeline. Chi tiết cơ chế từng bước → [Pipeline Steps](../02-concepts/pipeline-steps/).
|
|
6
|
+
|
|
7
|
+
Mọi lệnh chạy chung một **Gate** (model check → target → context-loader → checkpoint). Xem [Khung chung](../02-concepts/pipeline-steps/README.md#khung-chung-mọi-command-common-gate).
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## 0 · Setup & Foundation
|
|
12
|
+
|
|
13
|
+
| Lệnh | Input | Output | Owner |
|
|
14
|
+
|------|-------|--------|-------|
|
|
15
|
+
| `/setup-ai-first` | Dự án trống/có code | `.agent/`, `.claude/`, `project-context.yaml`, `CLAUDE.md` | Admin/Lead |
|
|
16
|
+
| `/generate-architecture` | config + tài liệu (`--from`) + code | `architecture.md` (SSOT kiến trúc, theo tier) | SA/Lead |
|
|
17
|
+
|
|
18
|
+
## 1 · Discovery
|
|
19
|
+
|
|
20
|
+
| Lệnh | Input | Output | Owner |
|
|
21
|
+
|------|-------|--------|-------|
|
|
22
|
+
| `/define-product` | Ý tưởng (+Figma) | `product-definition/*.md` (8 chặng) | PO |
|
|
23
|
+
|
|
24
|
+
## 2 · Specification (PRD)
|
|
25
|
+
|
|
26
|
+
| Lệnh | Input | Output | Owner |
|
|
27
|
+
|------|-------|--------|-------|
|
|
28
|
+
| `/generate-prd` | product-definition | PRD draft **mới** | PO |
|
|
29
|
+
| `/extend-prd` | **PRD đã có** + `feedback/prd-change-requests/` | PRD v+1 (UC/AC/BR nối tiếp, `Status → draft`) | PO |
|
|
30
|
+
| `/refine-prd` | PRD | Findings 3 lăng kính DEV/SA/PO | PO+SA+Dev |
|
|
31
|
+
| `/review-context` (PRD) | PRD | Findings P0–P5 → `Status: approved` | PO |
|
|
32
|
+
|
|
33
|
+
> **Chọn lệnh nào cho PRD:**
|
|
34
|
+
> - PRD **chưa tồn tại** → `/generate-prd` (từ discovery). Nó **từ chối chạy** nếu file đã có.
|
|
35
|
+
> - PRD đã có, muốn **thêm** UC/AC/BR mới → `/extend-prd`. Đánh số **nối tiếp**, ghi **add-only** kèm guard sau-ghi, tăng version + changelog nêu rõ scope.
|
|
36
|
+
> - PRD đã có, muốn **sửa vấn đề** đã soi ra → `/refine-prd` → Review Board → `--resume`.
|
|
37
|
+
>
|
|
38
|
+
> `/refine-prd` **không** thêm được yêu cầu mới (nó tự cấm đụng section ngoài findings). `/generate-prd` **không** dùng lại được trên PRD đã có (sẽ mất changelog + đánh số lại BR → hỏng `@trace.business_rules` trong BDD đã sinh).
|
|
39
|
+
|
|
40
|
+
## 3 · Design-Spec (chỉ FE/App)
|
|
41
|
+
|
|
42
|
+
| Lệnh | Input | Output | Owner |
|
|
43
|
+
|------|-------|--------|-------|
|
|
44
|
+
| `/generate-design-spec` | PRD approved + Figma | `design-spec/*.md` | PO/PM |
|
|
45
|
+
|
|
46
|
+
## 4 · BDD
|
|
47
|
+
|
|
48
|
+
| Lệnh | Input | Output | Owner |
|
|
49
|
+
|------|-------|--------|-------|
|
|
50
|
+
| `/generate-bdd` | PRD approved (+design-spec) | `bdd/**/*.feature` | PO |
|
|
51
|
+
| `/review-context` (BDD) | `.feature` | Findings B1–B6 → `@trace.status: approved` | PO/Dev |
|
|
52
|
+
|
|
53
|
+
## 5 · Tech-Docs
|
|
54
|
+
|
|
55
|
+
| Lệnh | Input | Output | Owner |
|
|
56
|
+
|------|-------|--------|-------|
|
|
57
|
+
| `/generate-tech-docs` | BDD approved + entity catalog | `tech-docs/{TICKET}-tech-design.md` | SA |
|
|
58
|
+
| `/review-tech-docs` | tech-design | Findings đa chiều + ký T7 | SA/Lead |
|
|
59
|
+
|
|
60
|
+
## 6 · Code
|
|
61
|
+
|
|
62
|
+
| Lệnh | Input | Output | Owner |
|
|
63
|
+
|------|-------|--------|-------|
|
|
64
|
+
| `/generate-code` | `.feature` approved + tech-design | Code + `.trace/*.tsv` | Dev |
|
|
65
|
+
| `/review-code` | Code | Findings (read-only) | Dev/Lead |
|
|
66
|
+
| `/fix-bug` | Bug report | Fix + regression test | Dev |
|
|
67
|
+
| `/map-testids` | UI code | testid map (FE) | Dev |
|
|
68
|
+
| `/debug` | Mô tả lỗi | Phân tích (read-only) | Dev |
|
|
69
|
+
|
|
70
|
+
## 7 · Dev self-test
|
|
71
|
+
|
|
72
|
+
| Lệnh | Input | Output | Owner |
|
|
73
|
+
|------|-------|--------|-------|
|
|
74
|
+
| `/dev-gen-test` | Code + `.feature` | Bộ self-test | Dev |
|
|
75
|
+
| `/dev-run-test` | Self-test | Kết quả + cột `dev_selftest` | Dev |
|
|
76
|
+
| `/dev-smoke-test` | Service/app đang chạy | Kết quả smoke tại chỗ | Dev |
|
|
77
|
+
|
|
78
|
+
## 8 · QC Automation
|
|
79
|
+
|
|
80
|
+
| Lệnh | Input | Output | Owner |
|
|
81
|
+
|------|-------|--------|-------|
|
|
82
|
+
| `/qc-analyze` | UC + spec | `REQUIREMENT_ANALYSIS.md`, `DOC_GAPS.md` | QA |
|
|
83
|
+
| `/qc-plan` | Analysis | `TEST_PLAN.md` (rủi ro) | QA |
|
|
84
|
+
| `/qc-design-test` | Plan | `test-cases/*.Test.md` | QA |
|
|
85
|
+
| `/qc-review` | Test case/script | 🛑 Cổng review | QA |
|
|
86
|
+
| `/qc-run-test` | `.Test.md` reviewed | Script Playwright + `qc_status` | QA |
|
|
87
|
+
| `/qc-report` | Kết quả run | Report + evidence + product-gap | QA |
|
|
88
|
+
|
|
89
|
+
## 9 · Quality & Trace
|
|
90
|
+
|
|
91
|
+
| Lệnh | Input | Output | Owner |
|
|
92
|
+
|------|-------|--------|-------|
|
|
93
|
+
| `/validate-traces` | `.trace/*.tsv` + spec/code/test | Ma trận coverage · `trace-report.json` · **`trace-history.jsonl`** (append) · đếm hàng đợi | Dev/QA/Lead |
|
|
94
|
+
| `/validate-traces --realign-prd-version {UC}` | cờ ⓘ `PRD_STALE_REF` | Sửa **chỉ dòng `@trace.*`** — không đụng logic | Dev |
|
|
95
|
+
| `/validate-traces --realign-techdoc-revision {UC}` | cờ ⓘ `TECHDOC_STALE_REF` | như trên | Dev |
|
|
96
|
+
| `/generate-spec-manifest` | Specs | Mục lục spec cho agent ngoài | SA/Lead |
|
|
97
|
+
|
|
98
|
+
## 10 · Feedback & Ops
|
|
99
|
+
|
|
100
|
+
| Lệnh | Input | Output | Owner |
|
|
101
|
+
|------|-------|--------|-------|
|
|
102
|
+
| `/report-bug` | Lỗi phát hiện | `feedback/bug-reports/` (spec-anchored) | Tester/QC |
|
|
103
|
+
| `/propose-scenario` | Scenario thiếu | **A:** `feedback/bdd-proposals/` → `/generate-bdd` chèn · **B:** `feedback/prd-change-requests/` → PO chạy `/extend-prd` | Tester/QC |
|
|
104
|
+
| `/learn` · `/learn --review` | Định hướng lặp lại · rà/retire lesson cũ | `project-lessons.md` | Tất cả |
|
|
105
|
+
| `/sync` | (umbrella) | Pull + submodule + nổi feedback + Living Docs | Lead |
|
|
106
|
+
| `/update-framework` | — | Sync bản npm mới | Lead |
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## Ký hiệu trạng thái trong report
|
|
111
|
+
|
|
112
|
+
- 🛑 checkpoint (dừng, chờ `Y`) · 🔒 gate trạng thái (chặn downstream) · ⚪ read-only
|
|
113
|
+
- ⚠️ cảnh báo mềm (không chặn) · ✅ pass · ❌ fail
|
|
114
|
+
- 🔴 cờ **chặn PR** — `SEAM_UNWIRED` · `STUB_UNRESOLVED` · `ORPHANED` · `TRACE_ORPHAN`. Build xanh + test từng-UC xanh **không** đủ để bỏ qua chúng.
|
|
115
|
+
- 🟠 cờ drift **không chặn PR** — `PRD_DRIFT` · `BDD_DRIFT` · `TECHDOC_DRIFT` · `FE_TECHDOC_DRIFT` · `TECHDOC_STALE_VS_BDD` · `DESIGNSPEC_DRIFT` · `DESIGNSPEC_STALE_VS_BDD`. *"Code chưa theo kịp spec"*, khác *"code đang hỏng"*. **Hết cờ 🔴 ≠ sạch.**
|
|
116
|
+
- ⓘ cờ **không phải lỗi** — `PRD_STALE_REF` · `TECHDOC_STALE_REF` (version lệch nhưng changelog không nêu UC này → chỉ con trỏ cũ) · `SEAM_PENDING` · `STUB_PENDING` (owner chưa gen).
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## CLI maintenance (không phải slash command)
|
|
121
|
+
|
|
122
|
+
Chạy qua `npx @educa-corp/sdd-framework <flag>`. Tất cả **dry-run mặc định** — thêm `--apply` để thực thi.
|
|
123
|
+
|
|
124
|
+
| Flag | Việc |
|
|
125
|
+
|------|------|
|
|
126
|
+
| `--init` | Cài/nâng cấp `.agent/` + shortcut `.claude/commands/`. Backup file bạn đã sửa sang `.agent/.overwritten-*/` và liệt kê ra |
|
|
127
|
+
| `--migrate-bdd-platform` | `bdd/*.feature` phẳng → `bdd/{platform}/`. Báo `OCCUPIED` / `LOST SPEC` thay vì đoán |
|
|
128
|
+
| `--migrate-specs` | Bố cục artifact-type-first cũ (`specs/prd/`, `specs/bdd/`) → feature-package |
|
|
129
|
+
| `--rename-prd-files` | `prd.md` → `{TICKET-ID}-{prd-slug}.md` |
|
|
130
|
+
| `--help` | Danh sách đầy đủ |
|
|
131
|
+
|
|
132
|
+
Trong repo framework: `npm run build` (assemble template + chạy self-check) · `npm run self-check` (chỉ kiểm contract trace).
|
|
133
|
+
|
|
134
|
+
→ [Trace Schema](trace-schema.md) · [Modules](modules.md) · [Configuration](configuration.md) · [Model Selection](model-selection.md)
|