@anhth2/spec-driven-dev-plugin 0.9.2 → 0.11.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 (223) hide show
  1. package/commands/debug.md +50 -20
  2. package/commands/define-product.md +49 -19
  3. package/commands/{generate-tests.md → dev-gen-test.md} +85 -23
  4. package/commands/{generate-tests.tmpl → dev-gen-test.tmpl} +18 -4
  5. package/{core/commands/run-tests.md → commands/dev-run-test.md} +102 -21
  6. package/commands/{run-tests.tmpl → dev-run-test.tmpl} +35 -2
  7. package/commands/{smoke-test.md → dev-smoke-test.md} +54 -24
  8. package/commands/{smoke-test.tmpl → dev-smoke-test.tmpl} +5 -5
  9. package/commands/fix-bug.md +50 -20
  10. package/commands/generate-bdd.md +78 -21
  11. package/commands/generate-bdd.tmpl +11 -2
  12. package/commands/generate-code.md +123 -23
  13. package/commands/generate-code.tmpl +56 -4
  14. package/commands/generate-design-spec.md +142 -47
  15. package/commands/generate-design-spec.tmpl +93 -28
  16. package/commands/generate-prd.md +49 -19
  17. package/commands/generate-spec-manifest.md +49 -19
  18. package/commands/generate-tech-docs.md +50 -20
  19. package/commands/generate-tech-docs.tmpl +1 -1
  20. package/commands/learn.md +50 -20
  21. package/commands/propose-scenario.md +50 -20
  22. package/commands/propose-scenario.tmpl +1 -1
  23. package/commands/qc-analyze.md +514 -0
  24. package/commands/qc-analyze.tmpl +71 -0
  25. package/commands/qc-design-test.md +510 -0
  26. package/commands/qc-design-test.tmpl +67 -0
  27. package/commands/qc-plan.md +492 -0
  28. package/commands/qc-plan.tmpl +49 -0
  29. package/commands/qc-report.md +491 -0
  30. package/commands/qc-report.tmpl +48 -0
  31. package/commands/qc-review.md +496 -0
  32. package/commands/qc-review.tmpl +53 -0
  33. package/commands/qc-run-test.md +538 -0
  34. package/commands/qc-run-test.tmpl +77 -0
  35. package/commands/refine-prd.md +203 -24
  36. package/commands/refine-prd.tmpl +16 -5
  37. package/commands/report-bug.md +49 -19
  38. package/commands/review-code.md +51 -21
  39. package/commands/review-code.tmpl +1 -1
  40. package/commands/review-context.md +198 -20
  41. package/commands/review-context.tmpl +11 -1
  42. package/commands/review-tech-docs.md +49 -19
  43. package/commands/setup-ai-first.md +14 -7
  44. package/commands/sync.md +30 -20
  45. package/commands/sync.tmpl +16 -13
  46. package/commands/update-framework.md +14 -7
  47. package/commands/validate-traces.md +106 -45
  48. package/commands/validate-traces.tmpl +57 -26
  49. package/core/FRAMEWORK_VERSION +1 -1
  50. package/core/commands/debug.md +50 -20
  51. package/core/commands/define-product.md +49 -19
  52. package/core/commands/{generate-tests.md → dev-gen-test.md} +85 -23
  53. package/{commands/run-tests.md → core/commands/dev-run-test.md} +102 -21
  54. package/core/commands/{smoke-test.md → dev-smoke-test.md} +54 -24
  55. package/core/commands/fix-bug.md +50 -20
  56. package/core/commands/generate-bdd.md +78 -21
  57. package/core/commands/generate-code.md +123 -23
  58. package/core/commands/generate-design-spec.md +142 -47
  59. package/core/commands/generate-prd.md +49 -19
  60. package/core/commands/generate-spec-manifest.md +49 -19
  61. package/core/commands/generate-tech-docs.md +50 -20
  62. package/core/commands/learn.md +50 -20
  63. package/core/commands/propose-scenario.md +50 -20
  64. package/core/commands/qc-analyze.md +514 -0
  65. package/core/commands/qc-design-test.md +510 -0
  66. package/core/commands/qc-plan.md +492 -0
  67. package/core/commands/qc-report.md +491 -0
  68. package/core/commands/qc-review.md +496 -0
  69. package/core/commands/qc-run-test.md +538 -0
  70. package/core/commands/refine-prd.md +203 -24
  71. package/core/commands/report-bug.md +49 -19
  72. package/core/commands/review-code.md +51 -21
  73. package/core/commands/review-context.md +198 -20
  74. package/core/commands/review-tech-docs.md +49 -19
  75. package/core/commands/setup-ai-first.md +14 -7
  76. package/core/commands/sync.md +30 -20
  77. package/core/commands/update-framework.md +14 -7
  78. package/core/commands/validate-traces.md +106 -45
  79. package/core/modules/qc-playwright/stack-profile.yaml +65 -0
  80. package/core/skills/code/SKILL.md +63 -26
  81. package/core/skills/debug/SKILL.md +78 -34
  82. package/core/skills/design-spec/SKILL.md +49 -19
  83. package/core/skills/discovery/SKILL.md +49 -19
  84. package/core/skills/prd/SKILL.md +28 -14
  85. package/core/skills/qc/qa-analyst/DOC_GAPS.template.md +63 -0
  86. package/core/skills/qc/qa-analyst/acceptance-criteria.md +56 -0
  87. package/core/skills/qc/qa-analyst/business-rules.md +55 -0
  88. package/core/skills/qc/qa-analyst/data-flow.md +60 -0
  89. package/core/skills/qc/qa-analyst/spec-breakdown.md +57 -0
  90. package/core/skills/qc/qa-designer/e2e/journey.md +41 -0
  91. package/core/skills/qc/qa-designer/exploratory/charter.md +68 -0
  92. package/core/skills/qc/qa-designer/exploratory/explore-to-functional.md +43 -0
  93. package/core/skills/qc/qa-designer/functional/api.md +45 -0
  94. package/core/skills/qc/qa-designer/functional/gui-feature.md +46 -0
  95. package/core/skills/qc/qa-designer/functional/gui-screen.md +52 -0
  96. package/core/skills/qc/qa-designer/integration/api.md +42 -0
  97. package/core/skills/qc/qa-designer/integration/db.md +39 -0
  98. package/core/skills/qc/qa-designer/integration/gui.md +40 -0
  99. package/core/skills/qc/qa-designer/integration/kafka.md +40 -0
  100. package/core/skills/qc/qa-designer/non-functional.md +40 -0
  101. package/core/skills/qc/qa-planner/test-plan.md +120 -0
  102. package/core/skills/qc/qa-reviewer/script/e2e.md +87 -0
  103. package/core/skills/qc/qa-reviewer/script/exploratory.md +45 -0
  104. package/core/skills/qc/qa-reviewer/script/functional.md +101 -0
  105. package/core/skills/qc/qa-reviewer/script/integration.md +91 -0
  106. package/core/skills/qc/qa-reviewer/script/non-functional.md +126 -0
  107. package/core/skills/qc/qa-reviewer/test-case/e2e.md +73 -0
  108. package/core/skills/qc/qa-reviewer/test-case/exploratory.md +43 -0
  109. package/core/skills/qc/qa-reviewer/test-case/functional.md +76 -0
  110. package/core/skills/qc/qa-reviewer/test-case/integration.md +69 -0
  111. package/core/skills/qc/qa-reviewer/test-case/non-functional.md +73 -0
  112. package/core/skills/qc/qa-runner/e2e.md +49 -0
  113. package/core/skills/qc/qa-runner/exploratory/session.md +36 -0
  114. package/core/skills/qc/qa-runner/functional/api.md +35 -0
  115. package/core/skills/qc/qa-runner/functional/gui-feature.md +51 -0
  116. package/core/skills/qc/qa-runner/functional/gui-screen.md +55 -0
  117. package/core/skills/qc/qa-runner/integration.md +47 -0
  118. package/core/skills/qc/qa-runner/non-functional.md +49 -0
  119. package/core/skills/qc/qa-runner/report/report.md +37 -0
  120. package/core/skills/setup-ai-first/SKILL.md +14 -7
  121. package/core/skills/spec/SKILL.md +28 -14
  122. package/core/skills/test/SKILL.md +121 -54
  123. package/core/steps/capture-lesson.md +1 -1
  124. package/core/steps/context-loader.md +35 -12
  125. package/core/steps/report-footer.md +14 -7
  126. package/core/steps/review-fanout.md +138 -0
  127. package/core/steps/spawn-agent.md +1 -1
  128. package/core/steps/trace-mirror.md +18 -0
  129. package/core/templates/design-spec.template.md +16 -8
  130. package/core/templates/project-context.yaml +8 -0
  131. package/docs/01-getting-started/README.md +19 -0
  132. package/docs/01-getting-started/core-concepts.md +102 -0
  133. package/docs/01-getting-started/installation.md +154 -0
  134. package/docs/01-getting-started/quickstart.md +85 -0
  135. package/docs/02-guides/README.md +27 -0
  136. package/docs/02-guides/developer/README.md +46 -0
  137. package/docs/02-guides/developer/bdd-and-trace.md +123 -0
  138. package/docs/02-guides/developer/commands.md +76 -0
  139. package/docs/02-guides/developer/pr-checklist.md +15 -0
  140. package/docs/02-guides/developer/scenarios.md +448 -0
  141. package/docs/02-guides/developer/workflow.md +59 -0
  142. package/docs/02-guides/product-owner/README.md +77 -0
  143. package/docs/02-guides/product-owner/commands.md +30 -0
  144. package/docs/02-guides/product-owner/handoff-checklist.md +42 -0
  145. package/docs/02-guides/product-owner/prd-writing-rules.md +45 -0
  146. package/docs/02-guides/product-owner/scenarios.md +357 -0
  147. package/docs/02-guides/qc-automation.md +92 -0
  148. package/docs/02-guides/tester/README.md +72 -0
  149. package/docs/02-guides/tester/bug-reporting.md +117 -0
  150. package/docs/02-guides/tester/reading-specs.md +79 -0
  151. package/docs/02-guides/tester/scenarios.md +186 -0
  152. package/docs/02-guides/tester/spec-manifest.md +124 -0
  153. package/docs/02-guides/tester/test-checklist.md +31 -0
  154. package/docs/02-guides/tester/workflow.md +79 -0
  155. package/docs/03-concepts/README.md +19 -0
  156. package/docs/03-concepts/architecture.md +243 -0
  157. package/docs/03-concepts/pipeline.md +249 -0
  158. package/docs/03-concepts/traceability.md +148 -0
  159. package/docs/04-operations/README.md +33 -0
  160. package/docs/04-operations/bug-flow.md +321 -0
  161. package/docs/04-operations/publishing.md +137 -0
  162. package/docs/04-operations/sync-and-update.md +328 -0
  163. package/docs/05-reference/README.md +29 -0
  164. package/docs/05-reference/commands.md +229 -0
  165. package/docs/05-reference/modules.md +110 -0
  166. package/docs/05-reference/trace-schema.md +146 -0
  167. package/docs/README.md +51 -0
  168. package/modules/qc-playwright/stack-profile.yaml +65 -0
  169. package/package.json +2 -2
  170. package/skills/code/SKILL.md +63 -26
  171. package/skills/debug/SKILL.md +78 -34
  172. package/skills/debug/SKILL.tmpl +1 -1
  173. package/skills/design-spec/SKILL.md +49 -19
  174. package/skills/discovery/SKILL.md +49 -19
  175. package/skills/prd/SKILL.md +28 -14
  176. package/skills/qc/qa-analyst/DOC_GAPS.template.md +63 -0
  177. package/skills/qc/qa-analyst/acceptance-criteria.md +56 -0
  178. package/skills/qc/qa-analyst/business-rules.md +55 -0
  179. package/skills/qc/qa-analyst/data-flow.md +60 -0
  180. package/skills/qc/qa-analyst/spec-breakdown.md +57 -0
  181. package/skills/qc/qa-designer/e2e/journey.md +41 -0
  182. package/skills/qc/qa-designer/exploratory/charter.md +68 -0
  183. package/skills/qc/qa-designer/exploratory/explore-to-functional.md +43 -0
  184. package/skills/qc/qa-designer/functional/api.md +45 -0
  185. package/skills/qc/qa-designer/functional/gui-feature.md +46 -0
  186. package/skills/qc/qa-designer/functional/gui-screen.md +52 -0
  187. package/skills/qc/qa-designer/integration/api.md +42 -0
  188. package/skills/qc/qa-designer/integration/db.md +39 -0
  189. package/skills/qc/qa-designer/integration/gui.md +40 -0
  190. package/skills/qc/qa-designer/integration/kafka.md +40 -0
  191. package/skills/qc/qa-designer/non-functional.md +40 -0
  192. package/skills/qc/qa-planner/test-plan.md +120 -0
  193. package/skills/qc/qa-reviewer/script/e2e.md +87 -0
  194. package/skills/qc/qa-reviewer/script/exploratory.md +45 -0
  195. package/skills/qc/qa-reviewer/script/functional.md +101 -0
  196. package/skills/qc/qa-reviewer/script/integration.md +91 -0
  197. package/skills/qc/qa-reviewer/script/non-functional.md +126 -0
  198. package/skills/qc/qa-reviewer/test-case/e2e.md +73 -0
  199. package/skills/qc/qa-reviewer/test-case/exploratory.md +43 -0
  200. package/skills/qc/qa-reviewer/test-case/functional.md +76 -0
  201. package/skills/qc/qa-reviewer/test-case/integration.md +69 -0
  202. package/skills/qc/qa-reviewer/test-case/non-functional.md +73 -0
  203. package/skills/qc/qa-runner/e2e.md +49 -0
  204. package/skills/qc/qa-runner/exploratory/session.md +36 -0
  205. package/skills/qc/qa-runner/functional/api.md +35 -0
  206. package/skills/qc/qa-runner/functional/gui-feature.md +51 -0
  207. package/skills/qc/qa-runner/functional/gui-screen.md +55 -0
  208. package/skills/qc/qa-runner/integration.md +47 -0
  209. package/skills/qc/qa-runner/non-functional.md +49 -0
  210. package/skills/qc/qa-runner/report/report.md +37 -0
  211. package/skills/setup-ai-first/SKILL.md +14 -7
  212. package/skills/spec/SKILL.md +28 -14
  213. package/skills/test/SKILL.md +121 -54
  214. package/skills/test/SKILL.tmpl +9 -9
  215. package/steps/capture-lesson.md +1 -1
  216. package/steps/context-loader.md +35 -12
  217. package/steps/report-footer.md +14 -7
  218. package/steps/review-fanout.md +138 -0
  219. package/steps/spawn-agent.md +1 -1
  220. package/steps/trace-mirror.md +18 -0
  221. package/templates/design-spec.template.md +16 -8
  222. package/templates/project-context.yaml +8 -0
  223. package/ARCHITECTURE.md +0 -247
@@ -0,0 +1,33 @@
1
+ [📚 Docs](../README.md) › Operations
2
+
3
+ # 04 · Operations
4
+
5
+ > Vận hành hằng ngày với framework: đồng bộ nội dung & nâng cấp framework, quy trình xử lý bug, và publish package lên npm.
6
+
7
+ Mục này dành cho cả team (PO · Dev · Tester · QC) và người maintain framework.
8
+
9
+ ---
10
+
11
+ ## Trong mục này
12
+
13
+ | Trang | Nội dung |
14
+ |-------|----------|
15
+ | [Sync & Update](sync-and-update.md) | `/sync` vs `/update-framework`, umbrella mode, đồng bộ Living Docs, workflow hằng ngày theo role |
16
+ | [Bug Flow](bug-flow.md) | Phân loại bug theo spec layer (Code/BDD/PRD/Design/Env), 6 case, format thông báo, checklist đóng bug |
17
+ | [Publishing](publishing.md) | Build + publish `@anhth2/spec-driven-dev-plugin` lên npm, versioning, transfer ownership |
18
+
19
+ ---
20
+
21
+ ## Hai loại "update" — đừng nhầm
22
+
23
+ | | `/sync` | `/update-framework` |
24
+ |---|---|---|
25
+ | Update cái gì | Nội dung dự án: code/specs trong submodule + Living Docs | Bản thân framework: commands, steps, modules |
26
+ | Nguồn | Git remote của submodule | npm registry |
27
+ | Tần suất | Mỗi sáng / trước khi work | Khi có version framework mới (hiếm) |
28
+
29
+ Chi tiết: [Sync & Update](sync-and-update.md).
30
+
31
+ ---
32
+
33
+ *Xem thêm:* [02 · Guides](../02-guides/) (theo vai trò) · [03 · Concepts](../03-concepts/) (kiến trúc) · [05 · Reference](../05-reference/) (tra cứu lệnh).
@@ -0,0 +1,321 @@
1
+ [📚 Docs](../README.md) › [Operations](README.md) › Bug Flow
2
+
3
+ # Bug Flow — PO · Dev · Tester
4
+
5
+ > Cách **PO, Dev, và Tester phối hợp** khi phát hiện bug. Mọi bug đều được trace về spec layer để fix đúng chỗ và tránh lặp lại.
6
+
7
+ ---
8
+
9
+ ## Mục lục
10
+
11
+ 1. [Bug thuộc layer nào?](#1-bug-thuộc-layer-nào)
12
+ 2. [Bảng quyết định nhanh](#2-bảng-quyết-định-nhanh)
13
+ 3. [Case 1 — Code Bug (Code ≠ BDD)](#3-case-1--code-bug-code--bdd)
14
+ 4. [Case 2 — BDD Bug (BDD ≠ PRD)](#4-case-2--bdd-bug-bdd--prd)
15
+ 5. [Case 3 — PRD Ambiguity (PRD không rõ)](#5-case-3--prd-ambiguity-prd-không-rõ)
16
+ 6. [Case 4 — PRD Change (yêu cầu thay đổi)](#6-case-4--prd-change-yêu-cầu-thay-đổi)
17
+ 7. [Case 5 — Design Spec Bug (UI ≠ Design Spec)](#7-case-5--design-spec-bug-ui--design-spec)
18
+ 8. [Case 6 — Environment / Data Bug](#8-case-6--environment--data-bug)
19
+ 9. [Giao tiếp hiệu quả — các format thông báo](#9-giao-tiếp-hiệu-quả--các-format-thông-báo)
20
+ 10. [Checklist đóng bug](#10-checklist-đóng-bug)
21
+
22
+ ---
23
+
24
+ ## 1. Bug thuộc layer nào?
25
+
26
+ Tester đọc spec chain **PRD → BDD → Code** để xác định layer của bug:
27
+
28
+ ```
29
+ ┌─────────────────────────────┐
30
+ │ Bug được phát hiện │
31
+ └──────────────┬──────────────┘
32
+ ┌──────────────▼──────────────┐
33
+ │ Tester đọc PRD → BDD → Code │
34
+ └──────────────┬──────────────┘
35
+ ┌────────────────────┼────────────────────┐
36
+ ┌───────▼───────┐ ┌─────────▼─────────┐ ┌────────▼────────┐
37
+ │ PRD mơ hồ / │ │ BDD sai so PRD / │ │ Code sai so BDD │
38
+ │ yêu cầu đổi │ │ thiếu scenario │ │ (phổ biến nhất) │
39
+ └───────┬───────┘ └─────────┬─────────┘ └────────┬────────┘
40
+ → PO xử lý → Dev xử lý → Dev xử lý
41
+ (Case 3, 4) (Case 2) (Case 1)
42
+ ```
43
+
44
+ ---
45
+
46
+ ## 2. Bảng quyết định nhanh
47
+
48
+ | PRD | BDD | Code | Chẩn đoán | Ai fix | Re-test |
49
+ |---|---|---|---|---|---|
50
+ | ✅ rõ ràng | ✅ đúng | ❌ sai | **Code bug** | Dev | Tester |
51
+ | ✅ rõ ràng | ❌ sai | ❌ sai | **BDD bug** | Dev | Tester |
52
+ | ❌ mơ hồ | bất kỳ | bất kỳ | **PRD ambiguity** | PO → Dev | Tester |
53
+ | ✅ rõ ràng | ✅ đúng | ✅ đúng | **Env / data bug** | DevOps / Dev | Tester |
54
+ | Yêu cầu thay đổi | cũ | cũ | **PRD change** | PO → Dev | Tester |
55
+ | ✅ rõ ràng | ✅ đúng | ❌ UI sai | **Design Spec bug** | PO/Designer → Dev | Tester |
56
+
57
+ ---
58
+
59
+ ## 3. Case 1 — Code Bug (Code ≠ BDD)
60
+
61
+ > Phổ biến nhất. Spec đúng, code implement sai.
62
+
63
+ ```
64
+ Tester Dev
65
+ ────── ────────────────────────────────────────────
66
+ Gửi bug report
67
+ (kèm spec context:
68
+ PRD path, BDD path,
69
+ AC bị vi phạm,
70
+ BDD scenario fail)
71
+ Nhận bug report; đọc BDD scenario được chỉ định
72
+ /fix-bug "{BUG-ID}: {mô tả}"
73
+ → agent tìm divergence code vs BDD → propose fix
74
+ Review + apply fix
75
+ /dev-run-test → dev self-check pass ✅
76
+ (dev_selftest — smoke check, KHÔNG phải official QC;
77
+ QC pipeline /qc-run-test set qc_status ở flow riêng)
78
+ /validate-traces → no broken
79
+ Tạo PR + notify tester:
80
+ "Fixed — root cause: {X}; Re-test: {BDD scenario}"
81
+ Nhận thông báo; re-test scenario
82
+ → PASS: đóng bug
83
+ → FAIL: gửi lại với actual behavior mới
84
+ ```
85
+
86
+ **Ví dụ:**
87
+
88
+ ```
89
+ Bug: FT-001 — tài khoản khoá sau 6 lần sai, không phải 5
90
+ PRD AC3 : "5 lần sai → khoá" ✅
91
+ BDD SC3 : "When 5 failures, Then 423" ✅
92
+ Code : if failCount > 5: lock() ❌ ← > thay vì >=
93
+ Fix: đổi > thành >= → chạy BDD test → pass
94
+ → notify: "Case 1 fixed, re-test FT-001-UC2-SC3"
95
+ ```
96
+
97
+ > **Nếu root cause là lỗi AI hay lặp khi gen code** (vd dùng `>` thay vì `>=` cho boundary, hay gọi repository thẳng từ controller): `/fix-bug` sẽ hỏi *"Record as a project lesson? (Y/N)"* → chọn **Y**. Lesson được nạp vào mọi lần gen sau. Hoặc chủ động `/learn "AI hay X, đúng phải Y"`.
98
+
99
+ ---
100
+
101
+ ## 4. Case 2 — BDD Bug (BDD ≠ PRD)
102
+
103
+ > Dev gen BDD sai từ đầu, hoặc PRD đã update nhưng BDD chưa.
104
+
105
+ ```
106
+ Tester Dev PO/BA
107
+ ────── ──────────── ──────
108
+ Gửi bug report
109
+ (BDD scenario mâu
110
+ thuẫn với PRD AC)
111
+ Đọc PRD → BDD: xác nhận BDD sai
112
+ Nếu PRD rõ ràng:
113
+ → update BDD scenario + code nếu cần
114
+ → /dev-run-test → dev self-check pass
115
+ → /validate-traces → PR + notify
116
+ Nếu PRD chưa đủ rõ → báo PO
117
+ Clarify PRD
118
+ (không đổi version
119
+ nếu chỉ làm rõ)
120
+ Update BDD + code → PR + notify
121
+ Re-test
122
+ ```
123
+
124
+ **Ví dụ:**
125
+
126
+ ```
127
+ Bug: FT-001 — BDD ghi "3 lần sai → khoá", PRD ghi "5 lần"
128
+ PRD AC3 : "5 lần sai → khoá" ✅
129
+ BDD SC3 : "When 3 failures, Then 423" ❌ ← dev gen BDD sai
130
+ Code : if failCount >= 3: lock() ❌ ← code theo BDD sai
131
+ Fix: 1) BDD 3→5 2) code >=3 → >=5 3) update test data
132
+ → notify: "BDD + code fixed, re-test với 5 lần"
133
+ ```
134
+
135
+ ---
136
+
137
+ ## 5. Case 3 — PRD Ambiguity (PRD không rõ)
138
+
139
+ > Không ai sai — PRD viết thiếu, dev và tester hiểu khác nhau.
140
+
141
+ ```
142
+ Tester Dev PO/BA
143
+ ────── ──────────── ──────
144
+ Gửi bug report
145
+ (AC mơ hồ: dev hiểu
146
+ X, tester expect Y)
147
+ Đọc PRD → xác nhận AC chưa đủ rõ
148
+ KHÔNG tự fix code
149
+ Báo PO: "AC3 mơ hồ: dev assume 5 lần,
150
+ tester expect 3. Đúng là bao nhiêu?"
151
+ Quyết định: 5 lần
152
+ Update PRD AC3
153
+ Bump version nếu
154
+ thay đổi behavior
155
+ Notify dev + tester
156
+ Nhận PRD mới; update BDD/code nếu cần
157
+ /validate-traces → PR + notify
158
+ Re-test theo PRD mới
159
+ ```
160
+
161
+ **Ví dụ:**
162
+
163
+ ```
164
+ PRD AC3: "Sai password nhiều lần → khoá tài khoản" ← "nhiều lần" = bao nhiêu?
165
+ Dev assume 5 lần; Tester expect 3 lần (thông lệ ngân hàng)
166
+ → Không phải bug code/BDD — là PRD thiếu thông tin
167
+ → PO quyết định 5 lần: "Sai password 5 lần liên tiếp → khoá 30 phút"
168
+ → BDD đã đúng → chỉ close bug, không fix code
169
+ ```
170
+
171
+ ---
172
+
173
+ ## 6. Case 4 — PRD Change (yêu cầu thay đổi)
174
+
175
+ > Không phải bug — business requirement thay đổi sau khi đã implement.
176
+
177
+ ```
178
+ Tester Dev PO/BA
179
+ ────── ──────────── ──────
180
+ Gửi bug report
181
+ (behavior đổi theo
182
+ yêu cầu business mới)
183
+ So sánh PRD version: code theo v1.0,
184
+ tester expect v1.1 → báo PO xác nhận
185
+ Xác nhận: PRD change,
186
+ không phải bug
187
+ Update PRD v1.1
188
+ Notify dev + tester
189
+ Nhận PRD v1.1
190
+ /review-context → xem diff
191
+ Update BDD + code + tests
192
+ /validate-traces → PR + notify:
193
+ "Implemented per PRD v1.1; re-test behavior mới"
194
+ Re-test theo PRD v1.1
195
+ ```
196
+
197
+ **Lưu ý quan trọng:** Bug report phải được **re-classify** thành "PRD Change Request" trước khi xử lý — không đưa vào bug backlog.
198
+
199
+ ---
200
+
201
+ ## 7. Case 5 — Design Spec Bug (UI ≠ Design Spec)
202
+
203
+ > Chỉ áp dụng cho FE/App. Code không khớp Design Spec.
204
+
205
+ ```
206
+ Tester Dev (FE/App) PO/BA + Designer
207
+ ────── ──────────── ──────────────────
208
+ Gửi bug report
209
+ (screen X không khớp
210
+ Design Spec section Y)
211
+ Đọc Design Spec → xác nhận spec nói gì
212
+ Nếu code sai Design Spec:
213
+ → fix code theo spec → PR + notify
214
+ Nếu Design Spec sai/lỗi thời:
215
+ → báo PO/Designer
216
+ Review + update Design Spec
217
+ Notify dev
218
+ Nhận Design Spec mới → fix code → PR + notify
219
+ Re-test UI
220
+ ```
221
+
222
+ ---
223
+
224
+ ## 8. Case 6 — Environment / Data Bug
225
+
226
+ > Spec đúng hết, code đúng hết — lỗi ở infra hoặc test data.
227
+
228
+ ```
229
+ Dấu hiệu nhận biết:
230
+ - Bug chỉ xảy ra trên staging, không reproduce local
231
+ - Bug xảy ra với 1 user cụ thể, không với user khác
232
+ - Bug xảy ra sau deploy, không trước
233
+ - /dev-run-test (dev_selftest — dev self-check) pass nhưng manual / QC test fail
234
+
235
+ Xử lý:
236
+ Tester → cung cấp: environment, user ID, timestamp, request ID
237
+ Dev → check logs, config, database state
238
+ DevOps → check infra, env vars, deploy artifacts
239
+ ```
240
+
241
+ ---
242
+
243
+ ## 9. Giao tiếp hiệu quả — các format thông báo
244
+
245
+ ### Bug report (Tester → Dev)
246
+
247
+ Tester chạy `/report-bug {UC-ID} {mô tả}` → tự sinh report theo format dưới (gồm phân loại layer + phát hiện coverage gap), commit+push vào **spec repo** `feedback/bug-reports/{BUG-ID}.md`. PO/Dev thấy khi chạy `/sync` (dòng `📥 New tester feedback`):
248
+
249
+ ```
250
+ [BUG-{ID}] {Feature} — {mô tả ngắn}
251
+
252
+ Spec: {PRD path} v{x.x} | AC{N}: "{AC text}"
253
+ BDD: {BDD path} → "{Scenario title}" (hoặc: ⚠️ no scenario covers this)
254
+ Layer: Code / BDD / PRD / Env ← Tester đề xuất, Dev xác nhận
255
+
256
+ Expected: {theo spec}
257
+ Actual: {thực tế}
258
+ Repro: {steps}
259
+ Env: staging / {date deploy}
260
+ ```
261
+
262
+ > **Nếu Layer = "coverage gap"** (behavior đúng nhưng chưa scenario nào cover): tester chạy `/propose-scenario {UC-ID}` → draft scenario vào `bdd-proposals/` cho PO/Dev duyệt. Xem [Case 2](#4-case-2--bdd-bug-bdd--prd).
263
+
264
+ ### Fix xong (Dev → Tester)
265
+
266
+ ```
267
+ [BUG-{ID}] Fixed ✅
268
+
269
+ Root cause: Case {1..6} — {mô tả ngắn}
270
+ Changed:
271
+ - {file/component}: {what changed}
272
+ - BDD: {updated / unchanged}
273
+ - PRD: {unchanged / clarified by PO}
274
+
275
+ Deploy: staging @ {time} — {commit/PR link}
276
+ Re-test: {BDD scenario ID hoặc AC number}
277
+ ```
278
+
279
+ ### Cần PO clarify (Dev → PO)
280
+
281
+ ```
282
+ [PRD-CLARIFY] {Feature} — AC{N} mơ hồ
283
+
284
+ Tình huống:
285
+ Dev implement: {X}
286
+ Tester expect: {Y}
287
+ Triggered by: BUG-{ID}
288
+
289
+ PRD AC hiện tại: "{AC text}"
290
+
291
+ Câu hỏi: {câu hỏi cụ thể — 1 câu}
292
+ Cần trả lời trước: {date} để unblock tester
293
+ ```
294
+
295
+ ---
296
+
297
+ ## 10. Checklist đóng bug
298
+
299
+ Trước khi đánh "Resolved":
300
+
301
+ **Dev:**
302
+ - [ ] Root cause xác định rõ (Case 1/2/3/4/5/6)
303
+ - [ ] Fix đúng layer — không patch code khi lỗi ở BDD hoặc PRD
304
+ - [ ] `/validate-traces` → no broken traces
305
+ - [ ] `/dev-run-test` → dev self-check pass (`dev_selftest` — smoke check, KHÔNG thay official QC `qc_status` do `/qc-run-test` set)
306
+ - [ ] Nếu root cause là lỗi AI gen hay lặp → đã `/learn` (hoặc accept prompt khi `/fix-bug`)
307
+ - [ ] Notify tester với đầy đủ thông tin re-test
308
+
309
+ **Tester:**
310
+ - [ ] Re-test đúng scenario được chỉ định
311
+ - [ ] Kiểm tra regression: các AC khác của cùng PRD không bị ảnh hưởng
312
+ - [ ] Confirm PASS trước khi close
313
+
314
+ **PO** *(nếu PRD được cập nhật)*:
315
+ - [ ] PRD version mới đã được bump
316
+ - [ ] Changelog có entry cho thay đổi
317
+ - [ ] Notify dev và tester về version mới
318
+
319
+ ---
320
+
321
+ *Xem thêm:* [Sync & Update](sync-and-update.md) · [Guide · Tester](../02-guides/tester/README.md) · [Guide · QC Automation](../02-guides/qc-automation.md).
@@ -0,0 +1,137 @@
1
+ [📚 Docs](../README.md) › [Operations](README.md) › Publishing
2
+
3
+ # Publishing — Publish lên npm
4
+
5
+ > Hướng dẫn publish package `@anhth2/spec-driven-dev-plugin` lên npm: setup lần đầu, publish version mới, kiểm tra sau publish, và transfer ownership.
6
+
7
+ Package: `@anhth2/spec-driven-dev-plugin`
8
+ Registry: <https://www.npmjs.com/package/@anhth2/spec-driven-dev-plugin>
9
+
10
+ ---
11
+
12
+ ## Mục lục
13
+
14
+ 1. [Yêu cầu](#1-yêu-cầu)
15
+ 2. [Setup lần đầu](#2-setup-lần-đầu)
16
+ 3. [Publish version mới](#3-publish-version-mới)
17
+ 4. [Kiểm tra sau khi publish](#4-kiểm-tra-sau-khi-publish)
18
+ 5. [Transfer package sang account khác](#5-transfer-package-sang-account-khác)
19
+
20
+ ---
21
+
22
+ ## 1. Yêu cầu
23
+
24
+ - Node.js đã cài (`node -v`)
25
+ - Tài khoản npm: <https://www.npmjs.com> (hiện đang dùng account `anhth2`)
26
+
27
+ ---
28
+
29
+ ## 2. Setup lần đầu
30
+
31
+ ### 2.1 — Đăng nhập npm
32
+
33
+ ```powershell
34
+ npm login
35
+ ```
36
+
37
+ Trình duyệt sẽ mở trang xác thực npm. Đăng nhập bằng account `anhth2`, sau đó quay lại terminal. Kiểm tra:
38
+
39
+ ```powershell
40
+ npm whoami
41
+ # output: anhth2
42
+ ```
43
+
44
+ ### 2.2 — Tạo Access Token (nếu cần dùng CI hoặc tránh 2FA mỗi lần)
45
+
46
+ 1. Vào <https://www.npmjs.com> → Avatar → **Access Tokens**
47
+ 2. **Generate New Token** → **Granular Access Token**
48
+ 3. Điền:
49
+ - Name: `publish-spec-driven-dev`
50
+ - Expiration: 1 year
51
+ - Packages: chọn `@anhth2/spec-driven-dev-plugin` → **Read and write**
52
+ 4. Copy token, lưu vào nơi an toàn
53
+
54
+ Publish với token:
55
+
56
+ ```powershell
57
+ npm publish --token <your-token>
58
+ ```
59
+
60
+ ---
61
+
62
+ ## 3. Publish version mới
63
+
64
+ ### Bước 1 — Cập nhật nội dung commands (nếu có thay đổi)
65
+
66
+ Sửa các file trong thư mục `commands/`.
67
+
68
+ ### Bước 2 — Tăng version trong `package.json` (semver)
69
+
70
+ | Loại thay đổi | Lệnh | Ví dụ |
71
+ |---|---|---|
72
+ | Fix nhỏ, sửa lỗi | `npm version patch` | 0.1.0 → 0.1.1 |
73
+ | Thêm command mới | `npm version minor` | 0.1.0 → 0.2.0 |
74
+ | Thay đổi lớn, breaking | `npm version major` | 0.1.0 → 1.0.0 |
75
+
76
+ ```powershell
77
+ # Ví dụ: thêm command mới
78
+ npm version minor
79
+ ```
80
+
81
+ Lệnh này tự động cập nhật `version` trong `package.json` và tạo git commit + tag.
82
+
83
+ ### Bước 3 — Publish
84
+
85
+ ```powershell
86
+ npm publish
87
+ ```
88
+
89
+ ### Bước 4 — Push git (bao gồm tag vừa tạo)
90
+
91
+ ```powershell
92
+ git push && git push --tags
93
+ ```
94
+
95
+ ---
96
+
97
+ ## 4. Kiểm tra sau khi publish
98
+
99
+ ```powershell
100
+ # Xem version mới trên npm
101
+ npm view @anhth2/spec-driven-dev-plugin version
102
+
103
+ # Chạy thử
104
+ npx @anhth2/spec-driven-dev-plugin@latest
105
+ ```
106
+
107
+ ---
108
+
109
+ ## 5. Transfer package sang account khác
110
+
111
+ Khi cần chuyển quyền sở hữu package cho người khác (ví dụ: sang account `edupia-team`):
112
+
113
+ ### Thêm maintainer
114
+
115
+ ```powershell
116
+ npm owner add <npm-username> @anhth2/spec-driven-dev-plugin
117
+ ```
118
+
119
+ ### Transfer toàn bộ
120
+
121
+ ```powershell
122
+ npm access grant read-write <npm-username> @anhth2/spec-driven-dev-plugin
123
+ ```
124
+
125
+ Hoặc làm thủ công trên website:
126
+
127
+ 1. Vào <https://www.npmjs.com/package/@anhth2/spec-driven-dev-plugin>
128
+ 2. Tab **Settings** → **Maintainers** → thêm username mới
129
+
130
+ > **Lưu ý:** Nếu muốn đổi tên package, cần publish lại với tên mới vì npm không cho đổi tên package đã publish. Sau đó deprecate package cũ:
131
+ > ```powershell
132
+ > npm deprecate @anhth2/spec-driven-dev-plugin "Moved to <new-package-name>"
133
+ > ```
134
+
135
+ ---
136
+
137
+ *Xem thêm:* [Sync & Update](sync-and-update.md) (`/update-framework` kéo version mới từ npm về project) · [Bug Flow](bug-flow.md).