@educa-corp/sdd-framework 0.2.4 → 0.2.6

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 (152) hide show
  1. package/commands/generate-architecture.md +706 -0
  2. package/commands/generate-architecture.tmpl +194 -0
  3. package/commands/generate-code.md +35 -9
  4. package/commands/generate-code.tmpl +35 -9
  5. package/commands/generate-tech-docs.md +259 -246
  6. package/commands/generate-tech-docs.tmpl +21 -0
  7. package/core/FRAMEWORK_VERSION +1 -1
  8. package/core/commands/generate-architecture.md +706 -0
  9. package/core/commands/generate-code.md +35 -9
  10. package/core/commands/generate-tech-docs.md +259 -246
  11. package/core/skills/setup-ai-first/SKILL.md +12 -4
  12. package/core/templates/architecture.template.md +392 -111
  13. package/core/templates/tech-design.template.md +238 -246
  14. package/docs/01-getting-started/installation.md +47 -112
  15. package/docs/01-getting-started/quickstart.md +58 -72
  16. package/docs/01-getting-started/what-is-sdd.md +75 -0
  17. package/docs/02-concepts/architecture.md +109 -0
  18. package/docs/02-concepts/glossary.md +87 -0
  19. package/docs/02-concepts/overview.md +93 -0
  20. package/docs/02-concepts/pipeline-steps/00-setup.md +102 -0
  21. package/docs/02-concepts/pipeline-steps/01-discovery.md +129 -0
  22. package/docs/02-concepts/pipeline-steps/02-specification.md +130 -0
  23. package/docs/02-concepts/pipeline-steps/03-design-spec.md +90 -0
  24. package/docs/02-concepts/pipeline-steps/04-bdd.md +120 -0
  25. package/docs/02-concepts/pipeline-steps/05-tech-docs.md +101 -0
  26. package/docs/02-concepts/pipeline-steps/06-code.md +119 -0
  27. package/docs/02-concepts/pipeline-steps/07-dev-selftest.md +92 -0
  28. package/docs/02-concepts/pipeline-steps/08-qc-automation.md +102 -0
  29. package/docs/02-concepts/pipeline-steps/09-validate-traces.md +104 -0
  30. package/docs/02-concepts/pipeline-steps/10-feedback-loop.md +105 -0
  31. package/docs/02-concepts/pipeline-steps/README.md +92 -0
  32. package/docs/02-concepts/roles-and-hitl.md +73 -0
  33. package/docs/02-concepts/traceability.md +94 -0
  34. package/docs/03-guides/architect.md +98 -0
  35. package/docs/03-guides/developer.md +76 -0
  36. package/docs/03-guides/product-owner.md +68 -0
  37. package/docs/03-guides/tester-qa.md +70 -0
  38. package/docs/04-reference/commands.md +105 -0
  39. package/docs/04-reference/configuration.md +94 -0
  40. package/docs/04-reference/model-selection.md +68 -0
  41. package/docs/04-reference/modules.md +74 -0
  42. package/docs/04-reference/trace-schema.md +93 -0
  43. package/docs/README.md +29 -40
  44. package/docs/explain/00-setup-ai-first.md +77 -0
  45. package/docs/explain/00b-generate-architecture.md +76 -0
  46. package/docs/explain/01-define-product.md +79 -0
  47. package/docs/explain/02-generate-prd.md +78 -0
  48. package/docs/explain/03-refine-prd.md +86 -0
  49. package/docs/explain/04-review-context.md +100 -0
  50. package/docs/explain/05-generate-design-spec.md +73 -0
  51. package/docs/explain/06-generate-bdd.md +77 -0
  52. package/docs/explain/07-generate-tech-docs.md +71 -0
  53. package/docs/explain/08-review-tech-docs.md +79 -0
  54. package/docs/explain/09-generate-code.md +78 -0
  55. package/docs/explain/10-review-code.md +70 -0
  56. package/docs/explain/11-map-testids.md +69 -0
  57. package/docs/explain/12-dev-gen-test.md +66 -0
  58. package/docs/explain/13-dev-run-test.md +69 -0
  59. package/docs/explain/14-dev-smoke-test.md +67 -0
  60. package/docs/explain/15-qc-analyze.md +68 -0
  61. package/docs/explain/16-qc-plan.md +61 -0
  62. package/docs/explain/17-qc-design-test.md +61 -0
  63. package/docs/explain/18-qc-review.md +59 -0
  64. package/docs/explain/19-qc-run-test.md +67 -0
  65. package/docs/explain/20-qc-report.md +61 -0
  66. package/docs/explain/21-validate-traces.md +68 -0
  67. package/docs/explain/22-generate-spec-manifest.md +60 -0
  68. package/docs/explain/23-fix-bug.md +69 -0
  69. package/docs/explain/24-debug.md +61 -0
  70. package/docs/explain/25-report-bug.md +65 -0
  71. package/docs/explain/26-propose-scenario.md +63 -0
  72. package/docs/explain/27-learn.md +65 -0
  73. package/docs/explain/28-sync.md +70 -0
  74. package/docs/explain/29-update-framework.md +65 -0
  75. package/docs/explain/README.md +134 -0
  76. package/package.json +1 -1
  77. package/skills/setup-ai-first/SKILL.md +12 -4
  78. package/skills/setup-ai-first/SKILL.tmpl +12 -4
  79. package/templates/architecture.template.md +392 -111
  80. package/templates/tech-design.template.md +238 -246
  81. package/docs/01-getting-started/README.md +0 -19
  82. package/docs/01-getting-started/core-concepts.md +0 -102
  83. package/docs/02-guides/README.md +0 -26
  84. package/docs/02-guides/bdd-input-checklist.md +0 -68
  85. package/docs/02-guides/developer/README.md +0 -49
  86. package/docs/02-guides/developer/bdd-and-trace.md +0 -126
  87. package/docs/02-guides/developer/commands.md +0 -76
  88. package/docs/02-guides/developer/pr-checklist.md +0 -16
  89. package/docs/02-guides/developer/scenarios.md +0 -460
  90. package/docs/02-guides/developer/workflow.md +0 -121
  91. package/docs/02-guides/prd-input-checklist.md +0 -94
  92. package/docs/02-guides/product-owner/README.md +0 -81
  93. package/docs/02-guides/product-owner/commands.md +0 -30
  94. package/docs/02-guides/product-owner/handoff-checklist.md +0 -42
  95. package/docs/02-guides/product-owner/prd-writing-rules.md +0 -45
  96. package/docs/02-guides/product-owner/scenarios.md +0 -438
  97. package/docs/02-guides/tech-docs-input-checklist.md +0 -109
  98. package/docs/02-guides/tester/README.md +0 -75
  99. package/docs/02-guides/tester/bug-reporting.md +0 -117
  100. package/docs/02-guides/tester/qc-automation.md +0 -165
  101. package/docs/02-guides/tester/reading-specs.md +0 -79
  102. package/docs/02-guides/tester/scenarios.md +0 -186
  103. package/docs/02-guides/tester/spec-manifest.md +0 -130
  104. package/docs/02-guides/tester/test-checklist.md +0 -31
  105. package/docs/02-guides/tester/workflow.md +0 -77
  106. package/docs/03-concepts/README.md +0 -20
  107. package/docs/03-concepts/architecture.md +0 -248
  108. package/docs/03-concepts/mechanisms-explained.md +0 -124
  109. package/docs/03-concepts/pipeline.md +0 -278
  110. package/docs/03-concepts/traceability.md +0 -152
  111. package/docs/04-operations/README.md +0 -33
  112. package/docs/04-operations/bug-flow.md +0 -364
  113. package/docs/04-operations/publishing.md +0 -154
  114. package/docs/04-operations/sync-and-update.md +0 -522
  115. package/docs/05-reference/README.md +0 -34
  116. package/docs/05-reference/command-cheatsheet.md +0 -147
  117. package/docs/05-reference/commands.md +0 -234
  118. package/docs/05-reference/model-selection.md +0 -74
  119. package/docs/05-reference/modules.md +0 -110
  120. package/docs/05-reference/trace-schema.md +0 -154
  121. package/docs/06-commands/README.md +0 -75
  122. package/docs/06-commands/explain-debug.md +0 -32
  123. package/docs/06-commands/explain-define-product.md +0 -43
  124. package/docs/06-commands/explain-dev-gen-test.md +0 -28
  125. package/docs/06-commands/explain-dev-run-test.md +0 -24
  126. package/docs/06-commands/explain-dev-smoke-test.md +0 -25
  127. package/docs/06-commands/explain-fix-bug.md +0 -28
  128. package/docs/06-commands/explain-generate-bdd.md +0 -45
  129. package/docs/06-commands/explain-generate-code.md +0 -53
  130. package/docs/06-commands/explain-generate-design-spec.md +0 -54
  131. package/docs/06-commands/explain-generate-prd.md +0 -45
  132. package/docs/06-commands/explain-generate-spec-manifest.md +0 -20
  133. package/docs/06-commands/explain-generate-tech-docs.md +0 -56
  134. package/docs/06-commands/explain-learn.md +0 -21
  135. package/docs/06-commands/explain-map-testids.md +0 -28
  136. package/docs/06-commands/explain-propose-scenario.md +0 -24
  137. package/docs/06-commands/explain-qc-analyze.md +0 -22
  138. package/docs/06-commands/explain-qc-design-test.md +0 -20
  139. package/docs/06-commands/explain-qc-plan.md +0 -21
  140. package/docs/06-commands/explain-qc-report.md +0 -23
  141. package/docs/06-commands/explain-qc-review.md +0 -24
  142. package/docs/06-commands/explain-qc-run-test.md +0 -27
  143. package/docs/06-commands/explain-refine-prd.md +0 -51
  144. package/docs/06-commands/explain-report-bug.md +0 -24
  145. package/docs/06-commands/explain-review-code.md +0 -45
  146. package/docs/06-commands/explain-review-context.md +0 -68
  147. package/docs/06-commands/explain-review-tech-docs.md +0 -45
  148. package/docs/06-commands/explain-setup-ai-first.md +0 -25
  149. package/docs/06-commands/explain-sync.md +0 -24
  150. package/docs/06-commands/explain-update-framework.md +0 -22
  151. package/docs/06-commands/explain-validate-traces.md +0 -25
  152. package/docs/t-sample.md +0 -826
@@ -0,0 +1,61 @@
1
+ [← /qc-plan](16-qc-plan.md) · [Explain Home](README.md) · [Next: /qc-review →](18-qc-review.md)
2
+
3
+ # 17 · `/qc-design-test` — Trạm 3: Thiết kế test case (Markdown)
4
+
5
+ > **Một câu.** Thiết kế **test case dạng Markdown** (`.Test.md`) từ plan — chưa sinh Python; script đến sau ở `/qc-run-test`.
6
+
7
+ ---
8
+
9
+ ## Vấn đề giải quyết
10
+
11
+ Tách "thiết kế test case" (con người đọc/review được) khỏi "code test" (máy chạy). `.Test.md` là bản thiết kế mà `/qc-review` duyệt và `/qc-run-test` biến thành script.
12
+
13
+ ---
14
+
15
+ ## Vị trí & tiền đề
16
+
17
+ - **Vị trí:** Phase QC (trạm 3), sau `/qc-plan`.
18
+
19
+ ---
20
+
21
+ ## Input / Output
22
+
23
+ **Input:** TEST_PLAN.md + skill `qa-designer` (chọn layer, nạp MỘT file).
24
+
25
+ **Output:** `{qc_dir}/{UC-ID}/{platform}/test-cases/*.Test.md` (trace mapping bắt buộc).
26
+
27
+ ---
28
+
29
+ ## Các bước xử lý (chi tiết)
30
+
31
+ 1. **Role qa-designer** — chọn layer, nạp một file skill (không nạp cả bộ → tiết kiệm context).
32
+ 2. **Conventions** — theo quy ước test-case của QC team.
33
+ 3. **Trace mapping (bắt buộc)** — mỗi test case ↔ SC.
34
+ 4. **Output** `.Test.md`.
35
+
36
+ ---
37
+
38
+ ## Checkpoint & Gate
39
+
40
+ - Không gate ở đây; gate là `/qc-review` kế tiếp.
41
+
42
+ ---
43
+
44
+ ## Cơ chế đặc biệt
45
+
46
+ - **Markdown-first** — test case là tài liệu review được trước khi thành code.
47
+ - **Nạp MỘT file skill theo layer** — tối ưu context (chỉ layer cần).
48
+ - **Trace mapping** — giữ test case gắn SC để về sau ghi `qc_status` đúng.
49
+
50
+ ---
51
+
52
+ ## 👓 Góc nhìn tối ưu
53
+
54
+ - **Tách design ↔ script** thêm một trạm nhưng cho phép review sớm — đánh đổi giữa số bước và chất lượng gate.
55
+ - **Phụ thuộc convention QC team** — cần đồng bộ khi convention đổi.
56
+
57
+ ---
58
+
59
+ ## Kết nối
60
+
61
+ **Trước:** [`/qc-plan`](16-qc-plan.md) · **Sau:** [`/qc-review`](18-qc-review.md) (review test case).
@@ -0,0 +1,59 @@
1
+ [← /qc-design-test](17-qc-design-test.md) · [Explain Home](README.md) · [Next: /qc-run-test →](19-qc-run-test.md)
2
+
3
+ # 18 · `/qc-review` — Trạm 4: Cổng review hai chiều (test case & script)
4
+
5
+ > **Một câu.** Gate chất lượng của QC: review **test case** (sau design-test) VÀ **script** (sau run-test) — chạy ở hai thời điểm trong dây chuyền.
6
+
7
+ ---
8
+
9
+ ## Vấn đề giải quyết
10
+
11
+ Không chạy test kém. Trạm này chặn: (1) test case chưa đủ tốt trước khi biến thành script; (2) script chưa đúng trước khi coi kết quả là chính thức.
12
+
13
+ ---
14
+
15
+ ## Vị trí & tiền đề
16
+
17
+ - **Vị trí:** Phase QC (trạm 4) — **hai lần**: sau `/qc-design-test` (review case) và sau `/qc-run-test` (review script).
18
+
19
+ ---
20
+
21
+ ## Input / Output
22
+
23
+ **Input:** `.Test.md` (case) hoặc script Python (script) + skill `qa-reviewer`.
24
+
25
+ **Output:** verdict APPROVED / NEEDS_FIX + findings review.
26
+
27
+ ---
28
+
29
+ ## Các bước xử lý (chi tiết)
30
+
31
+ 1. **Role qa-reviewer** — nạp `{qc_skills_dir}/qa-reviewer/`.
32
+ 2. **Review focus** — kiểm test case (đủ phủ, đúng SC) hoặc script (đúng logic, selector, không fake-pass).
33
+ 3. Verdict: APPROVED → đi tiếp; NEEDS_FIX → sửa rồi review lại.
34
+
35
+ ---
36
+
37
+ ## Checkpoint & Gate
38
+
39
+ - 🛑 **Cổng hai chiều** — chặn `/qc-run-test` (nếu case chưa duyệt) và chặn tạo PR (nếu script chưa duyệt).
40
+
41
+ ---
42
+
43
+ ## Cơ chế đặc biệt
44
+
45
+ - **Một lệnh, hai vai** — review case và review script dùng chung skill, khác focus.
46
+ - **Gate thật của QC** — điểm HITL chính trong dây chuyền tự động.
47
+
48
+ ---
49
+
50
+ ## 👓 Góc nhìn tối ưu
51
+
52
+ - **Chạy 2 lần cùng một lệnh** — người dùng phải nhớ gọi đúng thời điểm. Footer "Next" hướng dẫn, nhưng dễ nhầm. Cân nhắc tách rõ hoặc auto-detect giai đoạn.
53
+ - **Verdict thủ công** — phụ thuộc reviewer; không có findings-file có mã như review-context. Đáng xem có nên chuẩn hoá.
54
+
55
+ ---
56
+
57
+ ## Kết nối
58
+
59
+ **Trước:** [`/qc-design-test`](17-qc-design-test.md) (case) / [`/qc-run-test`](19-qc-run-test.md) (script) · **Sau:** case APPROVED → [`/qc-run-test`](19-qc-run-test.md); script APPROVED → [`/qc-report`](20-qc-report.md) / PR.
@@ -0,0 +1,67 @@
1
+ [← /qc-review](18-qc-review.md) · [Explain Home](README.md) · [Next: /qc-report →](20-qc-report.md)
2
+
3
+ # 19 · `/qc-run-test` — Trạm 5: Sinh & chạy Playwright, ghi `qc_status`
4
+
5
+ > **Một câu.** Biến `.Test.md` đã review thành **Python pytest-playwright**, chạy thật, rồi ghi **`qc_status` chính thức** (có evidence) vào trace TSV.
6
+
7
+ ---
8
+
9
+ ## Vấn đề giải quyết
10
+
11
+ Đây là nơi QC trở thành **chính thức**: chạy test thật trên Playwright, phân loại FAIL (script-bug vs product-gap, **không fake-pass**), và đóng dấu `qc_status` — trạng thái QC authoritative.
12
+
13
+ ---
14
+
15
+ ## Vị trí & tiền đề
16
+
17
+ - **Vị trí:** Phase QC (trạm 5), sau `/qc-review` (case APPROVED).
18
+ - **Stack:** module `qc-playwright` (Python + pytest-playwright + Page Object) — **độc lập** module dev.
19
+
20
+ ---
21
+
22
+ ## Input / Output
23
+
24
+ **Input:** `.Test.md` đã review + skill `qa-runner` + selector (từ `/map-testids`).
25
+
26
+ **Output:** script Python + kết quả + cột `qc_status` trong `.trace/…/{UC-ID}-{platform}.tsv` + Panel Mirror.
27
+
28
+ ---
29
+
30
+ ## Các bước xử lý (chi tiết)
31
+
32
+ 1. **Role & stack** — qc-playwright (`stack-profile.yaml`): Python, pytest-playwright fixture, Page Object; mỗi test độc lập; gom theo (role, account) để auth không xen kẽ.
33
+ 2. **Skills** — nạp một file skill `qa-runner` theo layer.
34
+ 3. **Sinh script** từ `.Test.md`; tag `@trace.verifies={UC-ID}-SC{N}`.
35
+ 4. **Chạy** — phân loại mỗi FAIL: **script-bug** (fix selector/logic) vs **product-gap** (giữ FAIL + evidence, **không bao giờ fake-pass**).
36
+ 5. **Write Trace State — `qc_status`** (kết quả QC chính thức).
37
+ 6. **Refresh Panel Mirror** — Living Docs local.
38
+
39
+ ---
40
+
41
+ ## Checkpoint & Gate
42
+
43
+ - Tiền đề: case đã APPROVED ở `/qc-review`. Script sinh ra → review lại ở `/qc-review` (script) trước PR.
44
+
45
+ ---
46
+
47
+ ## Cơ chế đặc biệt
48
+
49
+ - **`qc_status` là trục authoritative** — khác `dev_selftest`; có evidence.
50
+ - **Không fake-pass** — product-gap giữ nguyên FAIL, đẩy về PO/Dev.
51
+ - **Stack QC tách hẳn dev** — `@trace.verifies` nối script ↔ SC.
52
+ - **`active_platform` khoá sổ trace** — `qc_status` ghi đúng `{UC-ID}-{platform}.tsv`.
53
+
54
+ ---
55
+
56
+ ## 👓 Góc nhìn tối ưu
57
+
58
+ - **Trạm nặng nhất của QC** — sinh + chạy + phân loại + ghi trace. Chạy thật phụ thuộc môi trường (browser, data, service lên).
59
+ - **Phân loại script-bug vs product-gap phụ thuộc AI/reviewer** — sai loại → hoặc giấu lỗi sản phẩm hoặc báo nhầm. Đáng có tiêu chí rõ.
60
+ - **Selector phụ thuộc `/map-testids`** — nếu chưa map, script giòn.
61
+ - **Chạy lại tốn tài nguyên** — cân nhắc scoped run như dev-run-test.
62
+
63
+ ---
64
+
65
+ ## Kết nối
66
+
67
+ **Trước:** [`/qc-review`](18-qc-review.md) (case) · **Sau:** [`/qc-report`](20-qc-report.md) rồi [`/qc-review`](18-qc-review.md) (script).
@@ -0,0 +1,61 @@
1
+ [← /qc-run-test](19-qc-run-test.md) · [Explain Home](README.md) · [Next: /validate-traces →](21-validate-traces.md)
2
+
3
+ # 20 · `/qc-report` — Trạm 6: Report + evidence + product-gap
4
+
5
+ > **Một câu.** Trạm cuối QC: tổng hợp **report + evidence**, và đẩy **product-gap** (lỗi sản phẩm, không phải script) ngược về PO/Dev.
6
+
7
+ ---
8
+
9
+ ## Vấn đề giải quyết
10
+
11
+ Kết quả chạy cần được trình bày có bằng chứng và **định tuyến đúng**: script-bug thì QC tự sửa, còn **product-gap** phải về tay PO/Dev. Trạm này đóng gói kết quả QC pass thành báo cáo.
12
+
13
+ ---
14
+
15
+ ## Vị trí & tiền đề
16
+
17
+ - **Vị trí:** Phase QC (trạm 6, cuối), sau `/qc-run-test`.
18
+
19
+ ---
20
+
21
+ ## Input / Output
22
+
23
+ **Input:** kết quả run + evidence + skill `qa-runner/report`.
24
+
25
+ **Output:** QC report + evidence; product-gap đẩy về PO/Dev.
26
+
27
+ ---
28
+
29
+ ## Các bước xử lý (chi tiết)
30
+
31
+ 1. **Role qa-runner/report** — nạp skill report.
32
+ 2. **Procedure** — tổng hợp kết quả run (pass/fail per SC), đính evidence.
33
+ 3. Tách **product-gap** → định tuyến về PO/Dev (có thể thành `/report-bug`).
34
+ 4. **Output** report.
35
+
36
+ ---
37
+
38
+ ## Checkpoint & Gate
39
+
40
+ - Không gate chặn — báo cáo + định tuyến.
41
+
42
+ ---
43
+
44
+ ## Cơ chế đặc biệt
45
+
46
+ - **Product-gap routing** — khép vòng feedback: lỗi sản phẩm từ QC về đúng người quyết.
47
+ - **Evidence-first** — báo cáo kèm bằng chứng (khác dev smoke).
48
+
49
+ ---
50
+
51
+ ## 👓 Góc nhìn tối ưu
52
+
53
+ - **Product-gap → PO/Dev** nhưng cơ chế nối với `/report-bug` không tự động — dễ đứt. Đáng tích hợp để gap thành bug spec-anchored có hồ sơ.
54
+ - **Report tách khỏi run** (trạm riêng) — linh hoạt nhưng thêm một lệnh phải nhớ gọi.
55
+ - **Sau report → `/validate-traces`** để làm mới Living Docs (`qc_status`) — chuỗi này phụ thuộc người chạy đủ.
56
+
57
+ ---
58
+
59
+ ## Kết nối
60
+
61
+ **Trước:** [`/qc-run-test`](19-qc-run-test.md) · **Sau:** [`/validate-traces`](21-validate-traces.md) (làm mới Living Docs); product-gap → [`/report-bug`](25-report-bug.md).
@@ -0,0 +1,68 @@
1
+ [← /qc-report](20-qc-report.md) · [Explain Home](README.md) · [Next: /generate-spec-manifest →](22-generate-spec-manifest.md)
2
+
3
+ # 21 · `/validate-traces` — Ma trận độ phủ spec ↔ code ↔ test
4
+
5
+ > **Một câu.** Check **read-only** độ phủ giữa spec, code, test (gồm PRD version drift); phân loại mỗi SC và làm mới Living Docs. Không sửa gì.
6
+
7
+ ---
8
+
9
+ ## Vấn đề giải quyết
10
+
11
+ Traceability chỉ có giá trị khi kiểm được. Command cho bức tranh toàn cục: SC nào có code, có test, hay còn hở — để không "tưởng xong mà chưa xong".
12
+
13
+ ---
14
+
15
+ ## Vị trí & tiền đề
16
+
17
+ - **Vị trí:** Phase Trace Audit (xuyên suốt).
18
+ - **Đặc biệt:** read-only — an toàn chạy bất kỳ lúc nào.
19
+
20
+ ---
21
+
22
+ ## Input / Output
23
+
24
+ **Input:** `.trace/…/{UC-ID}-{platform}.tsv` + spec + code + test.
25
+
26
+ **Output:** ma trận coverage + `code_coverage`; làm mới Living Docs dashboard.
27
+
28
+ ---
29
+
30
+ ## Các bước xử lý (chi tiết)
31
+
32
+ 1. Quét trace `.tsv` + đối chiếu spec/code/test.
33
+ 2. Phân loại mỗi SC theo **thứ tự ưu tiên** (rule sớm thắng):
34
+ | # | Trạng thái | Điều kiện |
35
+ |---|-----------|-----------|
36
+ | 1 | UNTRACKED | `gen_ver == —` |
37
+ | 2 | DRIFT | có code + `spec_ver != gen_ver` |
38
+ | 3 | GAP | có code + `test_count == —/0` |
39
+ | 4 | OK | version khớp + có code + có test |
40
+ 3. Dựng dashboard: `dev_selftest` (DEV smoke) **và** `qc_status` (QC chính thức) hiển thị cạnh nhau — **không merge**; cột `qc_owner` + `qc_blocked_by` ("Waiting on").
41
+
42
+ ---
43
+
44
+ ## Checkpoint & Gate
45
+
46
+ - ⚪ Read-only, không gate.
47
+
48
+ ---
49
+
50
+ ## Cơ chế đặc biệt
51
+
52
+ - **DRIFT xét trước GAP** — code lỗi thời chưa test phải hiện DRIFT (regen) không phải GAP.
53
+ - **`dev_selftest` ≠ `qc_status`** — hai cột riêng, không trộn.
54
+ - **"Waiting on" column** — `qc_owner`/`qc_blocked_by` trả lời "case nào chờ ai".
55
+
56
+ ---
57
+
58
+ ## 👓 Góc nhìn tối ưu
59
+
60
+ - **Chỉ báo cáo, không hành động** — hành động ở `/generate-code` (regen DRIFT) & QC (bù GAP). Chuỗi phụ thuộc người chạy tiếp.
61
+ - **Nguồn sự thật của Living Docs** — chất lượng dashboard phụ thuộc `.tsv` được các lệnh code/test ghi đúng.
62
+ - **Là "single pane" để PM/PO nhìn trạng thái** — ứng viên tốt cho UI viewer (blueprint có gợi ý).
63
+
64
+ ---
65
+
66
+ ## Kết nối
67
+
68
+ **Trước:** bất kỳ (đặc biệt sau [`/qc-report`](20-qc-report.md)) · **Sau:** DRIFT/UNTRACKED → [`/generate-code`](09-generate-code.md); GAP → [`/dev-gen-test`](12-dev-gen-test.md); OK → PR.
@@ -0,0 +1,60 @@
1
+ [← /validate-traces](21-validate-traces.md) · [Explain Home](README.md) · [Next: /fix-bug →](23-fix-bug.md)
2
+
3
+ # 22 · `/generate-spec-manifest` — Mục lục spec cho agent ngoài
4
+
5
+ > **Một câu.** Sinh một **manifest** (mục lục máy-đọc) của mọi spec trong dự án, để agent/công cụ bên ngoài định vị PRD/BDD/tech-docs mà không phải quét cả repo.
6
+
7
+ ---
8
+
9
+ ## Vấn đề giải quyết
10
+
11
+ Agent ngoài (hoặc lệnh khác) cần biết "có những spec nào, ở đâu, trạng thái gì" mà không đọc toàn bộ. Manifest là index tự sinh, luôn cập nhật khi chạy lại.
12
+
13
+ ---
14
+
15
+ ## Vị trí & tiền đề
16
+
17
+ - **Vị trí:** xuyên suốt (thường sau `/sync`).
18
+ - **Đặc biệt:** file manifest **gitignored** (auto-generated, không commit).
19
+
20
+ ---
21
+
22
+ ## Input / Output
23
+
24
+ **Input:** cây spec (`specs/{domain}/{prd-slug}/…`).
25
+
26
+ **Output:** `spec-manifest.yaml` (auto-generated, DO NOT edit; regenerate bằng chính lệnh này).
27
+
28
+ ---
29
+
30
+ ## Các bước xử lý (chi tiết)
31
+
32
+ 1. Quét `specs/` theo bố cục feature-package.
33
+ 2. Với mỗi feature: ghi domain, prd-slug, TICKET-ID, các artifact (PRD/BDD/tech-docs/design-spec), trạng thái.
34
+ 3. Ghi `spec-manifest.yaml` với header "Auto-generated — do not commit".
35
+
36
+ ---
37
+
38
+ ## Checkpoint & Gate
39
+
40
+ - Không gate.
41
+
42
+ ---
43
+
44
+ ## Cơ chế đặc biệt
45
+
46
+ - **Máy-đọc, gitignored** — index tái sinh, không phải nguồn chân lý (spec mới là nguồn).
47
+ - **Cho agent ngoài** — điểm tích hợp với công cụ/agent khác.
48
+
49
+ ---
50
+
51
+ ## 👓 Góc nhìn tối ưu
52
+
53
+ - **Phải chạy lại để cập nhật** — dễ stale nếu quên. `/sync` Step 6 làm mới cho umbrella; single-service phải nhớ chạy tay.
54
+ - **Trùng vai với `/validate-traces`?** — validate-traces là trạng thái coverage; manifest là index vị trí. Khác mục đích nhưng cùng "bản đồ spec".
55
+
56
+ ---
57
+
58
+ ## Kết nối
59
+
60
+ **Trước:** [`/sync`](28-sync.md) hoặc bất kỳ · **Sau:** agent ngoài dùng manifest để định vị spec.
@@ -0,0 +1,69 @@
1
+ [← /generate-spec-manifest](22-generate-spec-manifest.md) · [Explain Home](README.md) · [Next: /debug →](24-debug.md)
2
+
3
+ # 23 · `/fix-bug` — Workflow sửa bug đầy đủ
4
+
5
+ > **Một câu.** Sửa bug **có kỷ luật**: truy root cause → fix (tag `@trace.fixes/root_cause/regression`) → regression test → build → commit (2 tầng ở umbrella) → đóng bug report → đề xuất lesson.
6
+
7
+ ---
8
+
9
+ ## Vấn đề giải quyết
10
+
11
+ Sửa bug ad-hoc dễ tái phát và mất truy vết. Command áp một quy trình: hiểu gốc rễ, sửa có tag, thêm regression test để không lặp, và ghi lesson nếu là lỗi tái diễn.
12
+
13
+ ---
14
+
15
+ ## Vị trí & tiền đề
16
+
17
+ - **Vị trí:** xuyên suốt (ngoài pipeline tuyến tính).
18
+ - **Đặc biệt:** một trong số ít lệnh được sinh code **không cần `.feature` backing** (bug fix).
19
+
20
+ ---
21
+
22
+ ## Input / Output
23
+
24
+ **Input:** bug report spec-anchored (`{BUG-ID}`) hoặc mô tả lỗi + code liên quan.
25
+
26
+ **Output:** code fix (tag trace) + regression test + commit + bug report đóng.
27
+
28
+ ---
29
+
30
+ ## Các bước xử lý (chi tiết)
31
+
32
+ 1. **Gate** — xác định service & code liên quan; tạo branch `fix/{TICKET}-{slug}`.
33
+ 2. **Phase 2 · Root Cause Analysis** — truy nguyên nhân gốc (không vá triệu chứng).
34
+ 3. **Phase 3 · Fix** — sửa; tag `@trace.fixes` / `@trace.root_cause` / `@trace.regression`.
35
+ 4. **Phase 4 · Regression Test** — thêm test tái hiện bug để chống tái phát.
36
+ 5. **Phase 5 · Build & Commit** — build verify; umbrella **push 2 tầng** (Tầng 1: fix branch trong service submodule nơi code sống; Tầng 2: umbrella pointer).
37
+ 6. **Phase 5.5 · Đóng bug report** — nếu fix một `{BUG-ID}` đã file → cập nhật trạng thái.
38
+ 7. **Phase 6 · Đề xuất Lesson** — nếu lỗi tái diễn → `capture-lesson` (L1–L5).
39
+
40
+ ---
41
+
42
+ ## Checkpoint & Gate
43
+
44
+ - Commit **sau khi user duyệt**.
45
+ - Build phải pass.
46
+
47
+ ---
48
+
49
+ ## Cơ chế đặc biệt
50
+
51
+ - **Root cause bắt buộc** trước fix — chống vá triệu chứng.
52
+ - **Regression test bắt buộc** — mỗi bug fix để lại "bằng chứng chống tái phát".
53
+ - **Push 2 tầng umbrella** — code ở submodule, pointer ở umbrella.
54
+ - **Đóng bug report + đề xuất lesson** — khép vòng feedback.
55
+
56
+ ---
57
+
58
+ ## 👓 Góc nhìn tối ưu
59
+
60
+ - **Sinh code không cần `.feature`** — ngoại lệ có chủ đích cho bug, nhưng nghĩa là fix có thể lệch spec. Đáng cân nhắc có nên yêu cầu cập nhật BDD nếu fix đổi hành vi.
61
+ - **Root cause phụ thuộc AI phân tích** — với bug phức tạp có thể cần `/debug` trước.
62
+ - **Push 2 tầng** dễ sai thứ tự (submodule trước, pointer sau) — điểm nhạy cảm.
63
+ - **Regression test có gắn `@trace.verifies` không?** — đáng đảm bảo để validate-traces thấy.
64
+
65
+ ---
66
+
67
+ ## Kết nối
68
+
69
+ **Trước:** [`/report-bug`](25-report-bug.md) / [`/debug`](24-debug.md) / [`/dev-run-test`](13-dev-run-test.md) (fail) · **Sau:** tạo PR + link ticket; lỗi lặp → [`/learn`](27-learn.md).
@@ -0,0 +1,61 @@
1
+ [← /fix-bug](23-fix-bug.md) · [Explain Home](README.md) · [Next: /report-bug →](25-report-bug.md)
2
+
3
+ # 24 · `/debug` — Phân tích debug nhanh (read-only)
4
+
5
+ > **Một câu.** Phân tích lỗi (stack trace, error pattern, test failure) và đề xuất hướng sửa — **không sửa code**, chỉ chẩn đoán.
6
+
7
+ ---
8
+
9
+ ## Vấn đề giải quyết
10
+
11
+ Trước khi sửa, cần hiểu lỗi. `/debug` phân tích nhanh nguyên nhân + vị trí + hướng fix, tách "hiểu lỗi" khỏi "sửa lỗi" (`/fix-bug`).
12
+
13
+ ---
14
+
15
+ ## Vị trí & tiền đề
16
+
17
+ - **Vị trí:** xuyên suốt.
18
+ - **Đặc biệt:** **read-only** — không sửa, không commit.
19
+
20
+ ---
21
+
22
+ ## Input / Output
23
+
24
+ **Input:** mô tả lỗi / stack trace / test failure + `platform_type` + project lessons.
25
+
26
+ **Output:** báo cáo — Error · Root Cause · Location · Suggested Fix · Related Rule (`Output Artifacts: none (read-only)`).
27
+
28
+ ---
29
+
30
+ ## Các bước xử lý (chi tiết)
31
+
32
+ 1. **Stack Trace Analysis** — đọc stack trace, định vị.
33
+ 2. **Common Error Patterns** — đối chiếu pattern lỗi quen thuộc theo platform.
34
+ 3. **Test Failure Analysis** — nếu là test fail, phân tích nguyên nhân.
35
+ 4. **Output** cấu trúc: Error / Root Cause / Location / Suggested Fix / Related Rule (trỏ rule/lesson liên quan).
36
+
37
+ ---
38
+
39
+ ## Checkpoint & Gate
40
+
41
+ - Read-only, không gate.
42
+
43
+ ---
44
+
45
+ ## Cơ chế đặc biệt
46
+
47
+ - **Chẩn đoán theo platform** (`platform_type`) + đối chiếu **project lessons**.
48
+ - **Related Rule** — nối lỗi với rule/lesson đã có → học từ lịch sử.
49
+
50
+ ---
51
+
52
+ ## 👓 Góc nhìn tối ưu
53
+
54
+ - **Read-only tách khỏi fix** — sạch về vai, nhưng người dùng phải chuyển sang `/fix-bug` thủ công. Có thể chuyển giao mượt hơn (truyền root cause sang fix-bug).
55
+ - **Common Error Patterns** — độ hữu ích phụ thuộc pattern có bám stack thực tế của dự án không.
56
+
57
+ ---
58
+
59
+ ## Kết nối
60
+
61
+ **Trước:** lỗi bất kỳ / [`/dev-run-test`](13-dev-run-test.md) (fail) · **Sau:** cần sửa → [`/fix-bug`](23-fix-bug.md).
@@ -0,0 +1,65 @@
1
+ [← /debug](24-debug.md) · [Explain Home](README.md) · [Next: /propose-scenario →](26-propose-scenario.md)
2
+
3
+ # 25 · `/report-bug` — File bug có trace-spec (cho Tester & QC)
4
+
5
+ > **Một câu.** Ghi một bug **gắn spec** (AC bị vi phạm, layer khả nghi), backfill trace, và handoff để PO/Dev thực sự thấy.
6
+
7
+ ---
8
+
9
+ ## Vấn đề giải quyết
10
+
11
+ Bug không gắn spec khó truy vết & regression. Command ép bug được neo vào UC/SC/AC cụ thể, phân loại layer khả nghi, và nổi lên đúng người — làm input chất lượng cho `/fix-bug`.
12
+
13
+ ---
14
+
15
+ ## Vị trí & tiền đề
16
+
17
+ - **Vị trí:** xuyên suốt (kênh feedback tester/QC), gồm cả product-gap từ `/qc-*`.
18
+
19
+ ---
20
+
21
+ ## Input / Output
22
+
23
+ **Input:** mô tả bug + UC/platform + spec context.
24
+
25
+ **Output:** `{bug_reports_dir}/{BUG-ID}.md` (spec-anchored) + backfill trace + handoff.
26
+
27
+ ---
28
+
29
+ ## Các bước xử lý (chi tiết)
30
+
31
+ 1. **Step 1 · Phân giải Spec Context** — định vị UC/SC/PRD liên quan.
32
+ 2. **Step 2 · Thu thập chi tiết Bug** — hiện tượng, bước tái hiện, môi trường.
33
+ 3. **Step 3 · Xác định AC bị vi phạm** — bug này vi phạm AC nào (neo nghiệp vụ).
34
+ 4. **Step 4 · Phân loại Layer khả nghi (BUG_FLOW)** — đoán layer gây lỗi (FE/BE/data…).
35
+ 5. **Step 5 · Ghi Report** — file `{BUG-ID}.md`.
36
+ 6. **Step 5.5 · Backfill trace** — link pending-view (nối bug vào trace).
37
+ 7. **Step 6 · Handoff** — nổi lên để PO/Dev thấy (qua `/sync`).
38
+
39
+ ---
40
+
41
+ ## Checkpoint & Gate
42
+
43
+ - Không gate — kênh có hồ sơ.
44
+
45
+ ---
46
+
47
+ ## Cơ chế đặc biệt
48
+
49
+ - **Spec-anchored** — bug neo AC/SC → `/fix-bug` có ngữ cảnh, regression đúng chỗ.
50
+ - **BUG_FLOW layer classification** — hướng dev tới layer khả nghi.
51
+ - **Backfill trace pending-view** — bug hiện trong dashboard trace.
52
+
53
+ ---
54
+
55
+ ## 👓 Góc nhìn tối ưu
56
+
57
+ - **Product-gap từ `/qc-report` → `/report-bug`** không tự động — nối tay. Đáng tích hợp để gap thành bug spec-anchored liền mạch.
58
+ - **Handoff qua `/sync`** — nếu không chạy sync, feedback nằm im. Phụ thuộc nhịp vận hành.
59
+ - **Phân loại layer là phỏng đoán** — có thể sai; `/debug`/`/fix-bug` xác nhận lại.
60
+
61
+ ---
62
+
63
+ ## Kết nối
64
+
65
+ **Trước:** QC/test phát hiện lỗi · **Sau:** [`/fix-bug {BUG-ID}`](23-fix-bug.md); thiếu coverage → [`/propose-scenario`](26-propose-scenario.md); nổi lên qua [`/sync`](28-sync.md).
@@ -0,0 +1,63 @@
1
+ [← /report-bug](25-report-bug.md) · [Explain Home](README.md) · [Next: /learn →](27-learn.md)
2
+
3
+ # 26 · `/propose-scenario` — Đề xuất BDD scenario mới (cho Tester & QC)
4
+
5
+ > **Một câu.** Tester đề xuất một scenario còn thiếu; command quyết đây là **scenario mới** (draft) hay **thay đổi PRD** (change request), rồi ghi proposal để PO/Dev duyệt.
6
+
7
+ ---
8
+
9
+ ## Vấn đề giải quyết
10
+
11
+ Tester thấy coverage thủng nhưng không được sửa spec trực tiếp. Command cho họ kênh **đề xuất có hồ sơ**: nếu là scenario mới trong scope → draft; nếu chạm yêu cầu nghiệp vụ → PRD change request.
12
+
13
+ ---
14
+
15
+ ## Vị trí & tiền đề
16
+
17
+ - **Vị trí:** xuyên suốt (kênh feedback tester/QC).
18
+
19
+ ---
20
+
21
+ ## Input / Output
22
+
23
+ **Input:** UC + platform + mô tả scenario thiếu.
24
+
25
+ **Output:** `{bdd_proposals_dir}/…` (Case A: scenario draft) hoặc PRD change request (Case B).
26
+
27
+ ---
28
+
29
+ ## Các bước xử lý (chi tiết)
30
+
31
+ 1. **Step 1 · Phân giải UC + Platform.**
32
+ 2. **Step 2 · Quyết định Coverage (CRITICAL)** — phân loại:
33
+ - **Case A** — scenario mới **trong scope** UC hiện tại → draft scenario.
34
+ - **Case B** — đòi hỏi **thay đổi yêu cầu nghiệp vụ** → **PRD Change Request** (không tự draft, đẩy về PO).
35
+ 3. **Step 3 · Draft Scenario** (chỉ Case A) — viết Gherkin đề xuất.
36
+ 4. **Step 4 · Ghi Proposal.**
37
+ 5. **Step 5 · Handoff** — để PO/Dev thấy; `/generate-bdd` có thể incorporate proposal `accepted`.
38
+
39
+ ---
40
+
41
+ ## Checkpoint & Gate
42
+
43
+ - Không gate — đề xuất, PO/Dev quyết.
44
+
45
+ ---
46
+
47
+ ## Cơ chế đặc biệt
48
+
49
+ - **Phân biệt scenario-gap vs PRD-change** — giữ ranh giới ai được đổi gì (tester không tự đổi yêu cầu nghiệp vụ).
50
+ - **Proposal `accepted` chảy ngược vào `/generate-bdd`** — khép vòng.
51
+
52
+ ---
53
+
54
+ ## 👓 Góc nhìn tối ưu
55
+
56
+ - **Quyết định Case A/B là điểm phán đoán** — sai hướng thì hoặc phình scope BDD hoặc bỏ sót đổi PRD. Tiêu chí rõ quan trọng.
57
+ - **Nối với `/generate-bdd` incorporate** phụ thuộc trạng thái `accepted` được cập nhật — quy trình duyệt cần rõ.
58
+
59
+ ---
60
+
61
+ ## Kết nối
62
+
63
+ **Trước:** tester thấy coverage thiếu · **Sau:** PO/Dev review proposal; Case A accepted → [`/generate-bdd`](06-generate-bdd.md); Case B → [`/refine-prd`](03-refine-prd.md)/PRD.