@educa-corp/sdd-framework 0.4.2 → 0.5.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.
Files changed (116) hide show
  1. package/bin/self-check.js +124 -6
  2. package/bin/trace-schema.json +1199 -692
  3. package/commands/debug.md +3 -2
  4. package/commands/define-product.md +3 -2
  5. package/commands/dev-gen-test.md +37 -9
  6. package/commands/dev-run-test.md +37 -9
  7. package/commands/dev-smoke-test.md +3 -2
  8. package/commands/extend-prd.md +907 -0
  9. package/commands/extend-prd.tmpl +270 -0
  10. package/commands/fix-bug.md +37 -9
  11. package/commands/generate-architecture.md +3 -2
  12. package/commands/generate-bdd.md +56 -13
  13. package/commands/generate-bdd.tmpl +18 -3
  14. package/commands/generate-code.md +73 -16
  15. package/commands/generate-code.tmpl +36 -7
  16. package/commands/generate-design-spec.md +3 -2
  17. package/commands/generate-prd.md +28 -2
  18. package/commands/generate-prd.tmpl +25 -0
  19. package/commands/generate-spec-manifest.md +3 -2
  20. package/commands/generate-tech-docs.md +3 -2
  21. package/commands/learn.md +3 -2
  22. package/commands/map-testids.md +3 -2
  23. package/commands/propose-scenario.md +55 -3
  24. package/commands/propose-scenario.tmpl +52 -1
  25. package/commands/qc-analyze.md +3 -2
  26. package/commands/qc-design-test.md +4 -2
  27. package/commands/qc-design-test.tmpl +1 -0
  28. package/commands/qc-plan.md +3 -2
  29. package/commands/qc-report.md +3 -2
  30. package/commands/qc-review.md +3 -2
  31. package/commands/qc-run-test.md +50 -10
  32. package/commands/qc-run-test.tmpl +13 -1
  33. package/commands/refine-prd.md +3 -2
  34. package/commands/report-bug.md +3 -2
  35. package/commands/review-code.md +7 -5
  36. package/commands/review-code.tmpl +4 -3
  37. package/commands/review-context.md +6 -4
  38. package/commands/review-context.tmpl +3 -2
  39. package/commands/review-tech-docs.md +3 -2
  40. package/commands/setup-ai-first.md +3 -2
  41. package/commands/sync.md +40 -16
  42. package/commands/sync.tmpl +37 -14
  43. package/commands/update-framework.md +3 -2
  44. package/commands/validate-traces.md +318 -33
  45. package/commands/validate-traces.tmpl +315 -31
  46. package/core/FRAMEWORK_VERSION +1 -1
  47. package/core/commands/debug.md +3 -2
  48. package/core/commands/define-product.md +3 -2
  49. package/core/commands/dev-gen-test.md +37 -9
  50. package/core/commands/dev-run-test.md +37 -9
  51. package/core/commands/dev-smoke-test.md +3 -2
  52. package/core/commands/extend-prd.md +907 -0
  53. package/core/commands/fix-bug.md +37 -9
  54. package/core/commands/generate-architecture.md +3 -2
  55. package/core/commands/generate-bdd.md +56 -13
  56. package/core/commands/generate-code.md +73 -16
  57. package/core/commands/generate-design-spec.md +3 -2
  58. package/core/commands/generate-prd.md +28 -2
  59. package/core/commands/generate-spec-manifest.md +3 -2
  60. package/core/commands/generate-tech-docs.md +3 -2
  61. package/core/commands/learn.md +3 -2
  62. package/core/commands/map-testids.md +3 -2
  63. package/core/commands/propose-scenario.md +55 -3
  64. package/core/commands/qc-analyze.md +3 -2
  65. package/core/commands/qc-design-test.md +4 -2
  66. package/core/commands/qc-plan.md +3 -2
  67. package/core/commands/qc-report.md +3 -2
  68. package/core/commands/qc-review.md +3 -2
  69. package/core/commands/qc-run-test.md +50 -10
  70. package/core/commands/refine-prd.md +3 -2
  71. package/core/commands/report-bug.md +3 -2
  72. package/core/commands/review-code.md +7 -5
  73. package/core/commands/review-context.md +6 -4
  74. package/core/commands/review-tech-docs.md +3 -2
  75. package/core/commands/setup-ai-first.md +3 -2
  76. package/core/commands/sync.md +40 -16
  77. package/core/commands/update-framework.md +3 -2
  78. package/core/commands/validate-traces.md +318 -33
  79. package/core/rules/workflow.md +18 -0
  80. package/core/steps/report-footer.md +3 -2
  81. package/core/steps/trace-mirror.md +34 -7
  82. package/core/templates/feature.template +1 -1
  83. package/docs/01-getting-started/installation.md +18 -1
  84. package/docs/01-getting-started/what-is-sdd.md +4 -2
  85. package/docs/02-concepts/architecture.md +27 -3
  86. package/docs/02-concepts/pipeline-steps/02-specification.md +39 -3
  87. package/docs/02-concepts/pipeline-steps/04-bdd.md +24 -2
  88. package/docs/02-concepts/pipeline-steps/05-tech-docs.md +18 -1
  89. package/docs/02-concepts/pipeline-steps/06-code.md +35 -4
  90. package/docs/02-concepts/pipeline-steps/09-validate-traces.md +137 -12
  91. package/docs/02-concepts/pipeline-steps/10-feedback-loop.md +59 -3
  92. package/docs/02-concepts/roles-and-hitl.md +1 -1
  93. package/docs/02-concepts/traceability.md +126 -117
  94. package/docs/03-guides/developer.md +20 -4
  95. package/docs/03-guides/product-owner.md +72 -68
  96. package/docs/03-guides/tester-qa.md +81 -70
  97. package/docs/04-reference/commands.md +134 -105
  98. package/docs/04-reference/configuration.md +146 -94
  99. package/docs/04-reference/trace-schema.md +26 -9
  100. package/docs/explain/02-generate-prd.md +80 -78
  101. package/docs/explain/02b-extend-prd.md +125 -0
  102. package/docs/explain/03-refine-prd.md +86 -86
  103. package/docs/explain/04-review-context.md +18 -1
  104. package/docs/explain/06-generate-bdd.md +23 -0
  105. package/docs/explain/08-review-tech-docs.md +20 -5
  106. package/docs/explain/10-review-code.md +36 -2
  107. package/docs/explain/19-qc-run-test.md +87 -67
  108. package/docs/explain/21-validate-traces.md +74 -68
  109. package/docs/explain/23-fix-bug.md +19 -3
  110. package/docs/explain/26-propose-scenario.md +70 -63
  111. package/docs/explain/README.md +135 -134
  112. package/package.json +50 -50
  113. package/rules/workflow.md +18 -0
  114. package/steps/report-footer.md +3 -2
  115. package/steps/trace-mirror.md +34 -7
  116. package/templates/feature.template +1 -1
@@ -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. Stack QC cố định: Python + pytest-playwright + Page Object (module `qc-playwright`), **độc lập** module của dev.
44
-
45
- ---
46
-
47
- ## Câu hỏi bạn cần trả lời được
48
-
49
- - Yêu cầu phân rã thành test case nào? Tài liệu có gap gì?
50
- - Rủi ro nào cao? Cần hỏi dev gì?
51
- - SC nào PASS/FAIL chính thức? FAIL là **script-bug** hay **product-gap**?
52
- - Bug này gắn với scenario/spec nào?
53
- - Scenario nào còn thiếu cần đề xuất (`/propose-scenario`)?
54
-
55
- ---
56
-
57
- ## Anti-pattern
58
-
59
- - Sửa script cho "xanh" khi thực chất là product-gap → giấu lỗi sản phẩm.
60
- - ❌ Chạy `/qc-run-test` khi chưa qua `/qc-review`.
61
- - Lẫn `qc_status` với `dev_selftest`.
62
- - Bug không gắn spec khó truy vết, khó regression.
63
-
64
- ---
65
-
66
- ## Lệnh của bạn (Your commands)
67
-
68
- `/qc-analyze` · `/qc-plan` · `/qc-design-test` · `/qc-review` · `/qc-run-test` · `/qc-report` · `/report-bug` · `/propose-scenario` · `/validate-traces`
69
-
70
- [Bảng lệnh đầy đủ](../04-reference/commands.md) · [Traceability](../02-concepts/traceability.md)
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 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 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
- > 31 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 | PO |
29
- | `/refine-prd` | PRD | Findings 3 lăng kính DEV/SA/PO | PO+SA+Dev |
30
- | `/review-context` (PRD) | PRD | Findings P0–P5 `Status: approved` | PO |
31
-
32
- ## 3 · Design-Spec (chỉ FE/App)
33
-
34
- | Lệnh | Input | Output | Owner |
35
- |------|-------|--------|-------|
36
- | `/generate-design-spec` | PRD approved + Figma | `design-spec/*.md` | PO/PM |
37
-
38
- ## 4 · BDD
39
-
40
- | Lệnh | Input | Output | Owner |
41
- |------|-------|--------|-------|
42
- | `/generate-bdd` | PRD approved (+design-spec) | `bdd/**/*.feature` | PO |
43
- | `/review-context` (BDD) | `.feature` | Findings B1–B6 → `@trace.status: approved` | PO/Dev |
44
-
45
- ## 5 · Tech-Docs
46
-
47
- | Lệnh | Input | Output | Owner |
48
- |------|-------|--------|-------|
49
- | `/generate-tech-docs` | BDD approved + entity catalog | `tech-docs/{TICKET}-tech-design.md` | SA |
50
- | `/review-tech-docs` | tech-design | Findings đa chiều + T7 | SA/Lead |
51
-
52
- ## 6 · Code
53
-
54
- | Lệnh | Input | Output | Owner |
55
- |------|-------|--------|-------|
56
- | `/generate-code` | `.feature` approved + tech-design | Code + `.trace/*.tsv` | Dev |
57
- | `/review-code` | Code | Findings (read-only) | Dev/Lead |
58
- | `/fix-bug` | Bug report | Fix + regression test | Dev |
59
- | `/map-testids` | UI code | testid map (FE) | Dev |
60
- | `/debug` | Mô tả lỗi | Phân tích (read-only) | Dev |
61
-
62
- ## 7 · Dev self-test
63
-
64
- | Lệnh | Input | Output | Owner |
65
- |------|-------|--------|-------|
66
- | `/dev-gen-test` | Code + `.feature` | Bộ self-test | Dev |
67
- | `/dev-run-test` | Self-test | Kết quả + cột `dev_selftest` | Dev |
68
- | `/dev-smoke-test` | Service/app đang chạy | Kết quả smoke tại chỗ | Dev |
69
-
70
- ## 8 · QC Automation
71
-
72
- | Lệnh | Input | Output | Owner |
73
- |------|-------|--------|-------|
74
- | `/qc-analyze` | UC + spec | `REQUIREMENT_ANALYSIS.md`, `DOC_GAPS.md` | QA |
75
- | `/qc-plan` | Analysis | `TEST_PLAN.md` (rủi ro) | QA |
76
- | `/qc-design-test` | Plan | `test-cases/*.Test.md` | QA |
77
- | `/qc-review` | Test case/script | 🛑 Cổng review | QA |
78
- | `/qc-run-test` | `.Test.md` reviewed | Script Playwright + `qc_status` | QA |
79
- | `/qc-report` | Kết quả run | Report + evidence + product-gap | QA |
80
-
81
- ## 9 · Quality & Trace
82
-
83
- | Lệnh | Input | Output | Owner |
84
- |------|-------|--------|-------|
85
- | `/validate-traces` | `.trace/*.tsv` + spec/code/test | Ma trận coverage (read-only) | Dev/QA/Lead |
86
- | `/generate-spec-manifest` | Specs | Mục lục spec cho agent ngoài | SA/Lead |
87
-
88
- ## 10 · Feedback & Ops
89
-
90
- | Lệnh | Input | Output | Owner |
91
- |------|-------|--------|-------|
92
- | `/report-bug` | Lỗi phát hiện | `feedback/bug-reports/` (spec-anchored) | Tester/QC |
93
- | `/propose-scenario` | Scenario thiếu | `feedback/bdd-proposals/` | Tester/QC |
94
- | `/learn` | Định hướng lặp lại | `project-lessons.md` | Tất cả |
95
- | `/sync` | (umbrella) | Pull + submodule + nổi feedback + Living Docs | Lead |
96
- | `/update-framework` | | Sync bản npm mới | Lead |
97
-
98
- ---
99
-
100
- ## hiệu trạng thái trong report
101
-
102
- - 🛑 checkpoint (dừng, chờ `Y`) · 🔒 gate trạng thái (chặn downstream) · read-only
103
- - ⚠️ cảnh báo mềm (không chặn) · pass · fail
104
-
105
- [Trace Schema](trace-schema.md) · [Modules](modules.md) · [Configuration](configuration.md) · [Model Selection](model-selection.md)
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 + 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` | 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` | Định hướng lặp lại | `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)