@anhth2/spec-driven-dev-plugin 0.11.0 → 0.14.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 (173) hide show
  1. package/commands/debug.md +47 -7
  2. package/commands/define-product.md +47 -7
  3. package/commands/dev-gen-test.md +65 -17
  4. package/commands/dev-run-test.md +66 -18
  5. package/commands/dev-run-test.tmpl +1 -1
  6. package/commands/dev-smoke-test.md +47 -7
  7. package/commands/fix-bug.md +83 -13
  8. package/commands/fix-bug.tmpl +36 -6
  9. package/commands/generate-bdd.md +74 -21
  10. package/commands/generate-bdd.tmpl +9 -4
  11. package/commands/generate-code.md +118 -35
  12. package/commands/generate-code.tmpl +53 -18
  13. package/commands/generate-design-spec.md +47 -7
  14. package/commands/generate-prd.md +47 -7
  15. package/commands/generate-spec-manifest.md +47 -7
  16. package/commands/generate-tech-docs.md +234 -20
  17. package/commands/generate-tech-docs.tmpl +187 -13
  18. package/commands/learn.md +47 -7
  19. package/commands/map-testids.md +564 -0
  20. package/commands/map-testids.tmpl +81 -0
  21. package/commands/propose-scenario.md +78 -18
  22. package/commands/propose-scenario.tmpl +31 -11
  23. package/commands/qc-analyze.md +67 -12
  24. package/commands/qc-analyze.tmpl +20 -5
  25. package/commands/qc-design-test.md +51 -10
  26. package/commands/qc-design-test.tmpl +4 -3
  27. package/commands/qc-plan.md +50 -10
  28. package/commands/qc-plan.tmpl +3 -3
  29. package/commands/qc-report.md +60 -8
  30. package/commands/qc-report.tmpl +13 -1
  31. package/commands/qc-review.md +49 -9
  32. package/commands/qc-review.tmpl +2 -2
  33. package/commands/qc-run-test.md +75 -20
  34. package/commands/qc-run-test.tmpl +10 -3
  35. package/commands/refine-prd.md +47 -7
  36. package/commands/report-bug.md +63 -9
  37. package/commands/report-bug.tmpl +16 -2
  38. package/commands/review-code.md +47 -7
  39. package/commands/review-context.md +47 -7
  40. package/commands/review-tech-docs.md +50 -9
  41. package/commands/review-tech-docs.tmpl +3 -2
  42. package/commands/setup-ai-first.md +37 -4
  43. package/commands/setup-ai-first.tmpl +2 -2
  44. package/commands/sync.md +47 -11
  45. package/commands/sync.tmpl +12 -9
  46. package/commands/update-framework.md +35 -2
  47. package/commands/validate-traces.md +98 -40
  48. package/commands/validate-traces.tmpl +51 -33
  49. package/core/FRAMEWORK_VERSION +1 -1
  50. package/core/commands/debug.md +47 -7
  51. package/core/commands/define-product.md +47 -7
  52. package/core/commands/dev-gen-test.md +65 -17
  53. package/core/commands/dev-run-test.md +66 -18
  54. package/core/commands/dev-smoke-test.md +47 -7
  55. package/core/commands/fix-bug.md +83 -13
  56. package/core/commands/generate-bdd.md +74 -21
  57. package/core/commands/generate-code.md +118 -35
  58. package/core/commands/generate-design-spec.md +47 -7
  59. package/core/commands/generate-prd.md +47 -7
  60. package/core/commands/generate-spec-manifest.md +47 -7
  61. package/core/commands/generate-tech-docs.md +234 -20
  62. package/core/commands/learn.md +47 -7
  63. package/core/commands/map-testids.md +564 -0
  64. package/core/commands/propose-scenario.md +78 -18
  65. package/core/commands/qc-analyze.md +67 -12
  66. package/core/commands/qc-design-test.md +51 -10
  67. package/core/commands/qc-plan.md +50 -10
  68. package/core/commands/qc-report.md +60 -8
  69. package/core/commands/qc-review.md +49 -9
  70. package/core/commands/qc-run-test.md +75 -20
  71. package/core/commands/refine-prd.md +47 -7
  72. package/core/commands/report-bug.md +63 -9
  73. package/core/commands/review-code.md +47 -7
  74. package/core/commands/review-context.md +47 -7
  75. package/core/commands/review-tech-docs.md +50 -9
  76. package/core/commands/setup-ai-first.md +37 -4
  77. package/core/commands/sync.md +47 -11
  78. package/core/commands/update-framework.md +35 -2
  79. package/core/commands/validate-traces.md +98 -40
  80. package/core/modules/qc-playwright/stack-profile.yaml +4 -3
  81. package/core/skills/code/SKILL.md +82 -9
  82. package/core/skills/debug/SKILL.md +117 -11
  83. package/core/skills/design-spec/SKILL.md +47 -7
  84. package/core/skills/discovery/SKILL.md +47 -7
  85. package/core/skills/prd/SKILL.md +70 -4
  86. package/core/skills/qc/qa-analyst/acceptance-criteria.md +5 -1
  87. package/core/skills/qc/qa-analyst/business-rules.md +6 -2
  88. package/core/skills/qc/qa-analyst/data-flow.md +6 -2
  89. package/core/skills/qc/qa-analyst/spec-breakdown.md +7 -3
  90. package/core/skills/qc/qa-designer/e2e/journey.md +1 -1
  91. package/core/skills/qc/qa-designer/exploratory/charter.md +2 -2
  92. package/core/skills/qc/qa-designer/exploratory/explore-to-functional.md +1 -1
  93. package/core/skills/qc/qa-designer/functional/api.md +1 -1
  94. package/core/skills/qc/qa-designer/functional/gui-feature.md +1 -1
  95. package/core/skills/qc/qa-designer/functional/gui-screen.md +1 -1
  96. package/core/skills/qc/qa-designer/integration/api.md +1 -1
  97. package/core/skills/qc/qa-designer/integration/db.md +1 -1
  98. package/core/skills/qc/qa-designer/integration/gui.md +1 -1
  99. package/core/skills/qc/qa-designer/integration/kafka.md +1 -1
  100. package/core/skills/qc/qa-designer/non-functional.md +1 -1
  101. package/core/skills/qc/qa-planner/test-plan.md +4 -4
  102. package/core/skills/qc/qa-runner/exploratory/session.md +2 -2
  103. package/core/skills/setup-ai-first/SKILL.md +35 -2
  104. package/core/skills/spec/SKILL.md +70 -4
  105. package/core/skills/test/SKILL.md +129 -16
  106. package/core/steps/context-loader.md +12 -5
  107. package/core/steps/report-footer.md +35 -2
  108. package/core/steps/trace-mirror.md +18 -10
  109. package/core/templates/project-context.yaml +27 -6
  110. package/docs/01-getting-started/core-concepts.md +7 -7
  111. package/docs/01-getting-started/installation.md +4 -2
  112. package/docs/01-getting-started/quickstart.md +1 -1
  113. package/docs/02-guides/README.md +1 -2
  114. package/docs/02-guides/developer/README.md +1 -1
  115. package/docs/02-guides/developer/bdd-and-trace.md +10 -8
  116. package/docs/02-guides/developer/commands.md +4 -4
  117. package/docs/02-guides/developer/scenarios.md +26 -14
  118. package/docs/02-guides/developer/workflow.md +81 -19
  119. package/docs/02-guides/product-owner/README.md +6 -4
  120. package/docs/02-guides/product-owner/commands.md +1 -1
  121. package/docs/02-guides/product-owner/scenarios.md +80 -1
  122. package/docs/02-guides/tester/README.md +13 -10
  123. package/docs/02-guides/tester/bug-reporting.md +2 -2
  124. package/docs/02-guides/tester/qc-automation.md +165 -0
  125. package/docs/02-guides/tester/reading-specs.md +4 -4
  126. package/docs/02-guides/tester/scenarios.md +5 -5
  127. package/docs/02-guides/tester/spec-manifest.md +17 -12
  128. package/docs/02-guides/tester/test-checklist.md +3 -3
  129. package/docs/02-guides/tester/workflow.md +12 -14
  130. package/docs/03-concepts/architecture.md +7 -4
  131. package/docs/03-concepts/pipeline.md +37 -12
  132. package/docs/03-concepts/traceability.md +19 -18
  133. package/docs/04-operations/README.md +1 -1
  134. package/docs/04-operations/bug-flow.md +46 -5
  135. package/docs/04-operations/sync-and-update.md +186 -24
  136. package/docs/05-reference/README.md +3 -0
  137. package/docs/05-reference/command-cheatsheet.md +147 -0
  138. package/docs/05-reference/commands.md +73 -70
  139. package/docs/05-reference/modules.md +4 -4
  140. package/docs/05-reference/trace-schema.md +23 -16
  141. package/docs/README.md +3 -5
  142. package/modules/qc-playwright/stack-profile.yaml +4 -3
  143. package/package.json +1 -1
  144. package/skills/code/SKILL.md +82 -9
  145. package/skills/debug/SKILL.md +117 -11
  146. package/skills/design-spec/SKILL.md +47 -7
  147. package/skills/discovery/SKILL.md +47 -7
  148. package/skills/prd/SKILL.md +70 -4
  149. package/skills/qc/qa-analyst/acceptance-criteria.md +5 -1
  150. package/skills/qc/qa-analyst/business-rules.md +6 -2
  151. package/skills/qc/qa-analyst/data-flow.md +6 -2
  152. package/skills/qc/qa-analyst/spec-breakdown.md +7 -3
  153. package/skills/qc/qa-designer/e2e/journey.md +1 -1
  154. package/skills/qc/qa-designer/exploratory/charter.md +2 -2
  155. package/skills/qc/qa-designer/exploratory/explore-to-functional.md +1 -1
  156. package/skills/qc/qa-designer/functional/api.md +1 -1
  157. package/skills/qc/qa-designer/functional/gui-feature.md +1 -1
  158. package/skills/qc/qa-designer/functional/gui-screen.md +1 -1
  159. package/skills/qc/qa-designer/integration/api.md +1 -1
  160. package/skills/qc/qa-designer/integration/db.md +1 -1
  161. package/skills/qc/qa-designer/integration/gui.md +1 -1
  162. package/skills/qc/qa-designer/integration/kafka.md +1 -1
  163. package/skills/qc/qa-designer/non-functional.md +1 -1
  164. package/skills/qc/qa-planner/test-plan.md +4 -4
  165. package/skills/qc/qa-runner/exploratory/session.md +2 -2
  166. package/skills/setup-ai-first/SKILL.md +35 -2
  167. package/skills/spec/SKILL.md +70 -4
  168. package/skills/test/SKILL.md +129 -16
  169. package/steps/context-loader.md +12 -5
  170. package/steps/report-footer.md +35 -2
  171. package/steps/trace-mirror.md +18 -10
  172. package/templates/project-context.yaml +27 -6
  173. package/docs/02-guides/qc-automation.md +0 -92
@@ -63,6 +63,6 @@ Sinh 10-15 câu hỏi cho dev/BA (assumptions, edge case, error handling, securi
63
63
 
64
64
  ## Output
65
65
 
66
- Charter files: docs/<project>/exploratory/charters/<feature>_01.md, _02.md...
67
- Ideas file: docs/<project>/exploratory/ideas/<feature>.md
66
+ Charter files: {paths.qc_dir}/exploratory/charters/<feature>_01.md, _02.md...
67
+ Ideas file: {paths.qc_dir}/exploratory/ideas/<feature>.md
68
68
  Bảng tổng kết: STT | Charter | Tour | Risk | Time-box
@@ -37,7 +37,7 @@ Chuyển draft → TC chính thức bám **format file `TC_<FEATURE>.md`**:
37
37
  **Trace** `[BR-xx](REQUIREMENT_ANALYSIS.md#3-business-rules)` (không có BR → `⚠️ Chưa có Business Rule`) · **🚫 Block** `[GAP-xx]` nếu chặn.
38
38
  - **Test Data** dạng list · **Steps** `[Action]`/`[Verify]` · **Expected** 1 bullet cụ thể.
39
39
  - Phân nhóm GUI/Functional · cuối file: Trace matrix + bảng TC block · bỏ nội dung gạch ngang.
40
- - Đặt file `docs/<project>/<feature>/TC_<FEATURE>.md`.
40
+ - Đặt file `{paths.qc_dir}/{UC-ID}/test-cases/TC_<FEATURE>.md`.
41
41
 
42
42
  ## Output
43
43
  File TC functional + bảng `TC_ID | Title | Priority | Technique | Trace`. Bàn giao `qa-reviewer`.
@@ -41,5 +41,5 @@ response (schema thành công + các mã lỗi 4xx/5xx + body lỗi) · side-eff
41
41
  - Mỗi TC bám khối Format; Expected ghi status code + phần body verify; trace BR; gap chặn → 🚫 Block.
42
42
 
43
43
  ## Output
44
- File TC (`TC_<FEATURE>_API.md` hoặc gộp trong file feature) trong `docs/<project>/<feature>/`.
44
+ File TC (`TC_<FEATURE>_API.md` hoặc gộp trong file feature) trong `{paths.qc_dir}/{UC-ID}/test-cases/`.
45
45
  In bảng TC + Trace matrix. Bàn giao `qa-reviewer`.
@@ -42,5 +42,5 @@ Liệt kê các màn/route + thứ tự điều hướng · state/dữ liệu tr
42
42
  - Mỗi TC bám khối Format; trace BR; gap chặn → 🚫 Block.
43
43
 
44
44
  ## Output
45
- File `TC_<FEATURE>.md` trong `docs/<project>/<feature>/`. In bảng TC + Trace matrix + bảng TC block.
45
+ File `TC_<FEATURE>.md` trong `{paths.qc_dir}/{UC-ID}/test-cases/`. In bảng TC + Trace matrix + bảng TC block.
46
46
  Bàn giao `qa-reviewer` (test-case).
@@ -48,5 +48,5 @@ chức năng (input/action/display/nav) · constraint (required/min-max/format/e
48
48
  - Mỗi TC bám khối Format trên; trace BR; TC chặn bởi gap → 🚫 Block.
49
49
 
50
50
  ## Output
51
- File `TC_<FEATURE>.md` trong `docs/<project>/<feature>/`. In bảng `TC_ID | Title | Priority | Tags | Trace`
51
+ File `TC_<FEATURE>.md` trong `{paths.qc_dir}/{UC-ID}/test-cases/`. In bảng `TC_ID | Title | Priority | Tags | Trace`
52
52
  + Trace matrix + bảng TC block. Bàn giao `qa-reviewer` (test-case).
@@ -39,4 +39,4 @@ Nhóm TC: happy (dữ liệu đúng đầu→cuối) → contract negative (inpu
39
39
  → concurrency → điều kiện đồng bộ (đổ/không đổ). Mỗi TC bám Format; trace BR; gap chặn → 🚫 Block.
40
40
 
41
41
  ## Output
42
- File TC integration trong `docs/<project>/<feature>/`. Ưu tiên P0 cho định tuyến & tiền-dữ liệu. Bàn giao `qa-reviewer`.
42
+ File TC integration trong `{paths.qc_dir}/{UC-ID}/test-cases/`. Ưu tiên P0 cho định tuyến & tiền-dữ liệu. Bàn giao `qa-reviewer`.
@@ -35,5 +35,5 @@ Nhóm TC: ghi đúng giá trị (happy) → default/null đúng → update khôn
35
35
  → audit log → ràng buộc/unique (negative). Mỗi TC bám Format; trace BR; gap chặn → 🚫 Block.
36
36
 
37
37
  ## Output
38
- File TC trong `docs/<project>/<feature>/`. Ghi rõ query kiểm tra DB + yêu cầu cleanup;
38
+ File TC trong `{paths.qc_dir}/{UC-ID}/test-cases/`. Ghi rõ query kiểm tra DB + yêu cầu cleanup;
39
39
  không hardcode ID, chuẩn bị/dọn data qua fixture. Bàn giao `qa-reviewer`.
@@ -37,4 +37,4 @@ Nhóm TC: UI render đúng dữ liệu backend (happy) → empty state → lỗi
37
37
  Mỗi TC bám Format; trace BR; gap chặn → 🚫 Block.
38
38
 
39
39
  ## Output
40
- File TC trong `docs/<project>/<feature>/`. Mỗi TC nêu API liên quan + biểu hiện UI. Bàn giao `qa-reviewer`.
40
+ File TC trong `{paths.qc_dir}/{UC-ID}/test-cases/`. Mỗi TC nêu API liên quan + biểu hiện UI. Bàn giao `qa-reviewer`.
@@ -37,4 +37,4 @@ Nhóm TC: phát đúng topic+payload (happy) → điều kiện không phát →
37
37
  Mỗi TC bám Format; trace BR; gap chặn → 🚫 Block.
38
38
 
39
39
  ## Output
40
- File TC trong `docs/<project>/<feature>/`. Mỗi TC ghi topic, key, payload cần verify + hành vi consumer. Bàn giao `qa-reviewer`.
40
+ File TC trong `{paths.qc_dir}/{UC-ID}/test-cases/`. Mỗi TC ghi topic, key, payload cần verify + hành vi consumer. Bàn giao `qa-reviewer`.
@@ -37,4 +37,4 @@ Mỗi TC bám Format; **Expected có ngưỡng pass + công cụ đo**; đánh d
37
37
  Trace BR; gap chặn → 🚫 Block.
38
38
 
39
39
  ## Output
40
- File TC non-functional trong `docs/<project>/<feature>/`. Mỗi TC ghi tiêu chí đo + ngưỡng + công cụ. Bàn giao `qa-reviewer`.
40
+ File TC non-functional trong `{paths.qc_dir}/{UC-ID}/test-cases/`. Mỗi TC ghi tiêu chí đo + ngưỡng + công cụ. Bàn giao `qa-reviewer`.
@@ -8,9 +8,9 @@ ported_from: ai-automation-qc-base
8
8
 
9
9
  Tổng hợp **output của qa-analyst** thành **Test Plan** cho một feature.
10
10
 
11
- **Đầu vào (bắt buộc, chỉ 2 nguồn):**
12
- 1. `docs/<project>/<feature>/REQUIREMENT_ANALYSIS.md` — chức năng, BR-xx, AC-xx, data flow (qa-analyst).
13
- 2. `docs/<project>/<feature>/DOC_GAPS.md` — bảng gap GAP-xx, mức độ, gap Blocker (qa-analyst).
11
+ **Đầu vào (bắt buộc, chỉ 2 nguồn — đúng 2 file qa-analyst trả ra):**
12
+ 1. `{paths.qc_dir}/{UC-ID}/REQUIREMENT_ANALYSIS.md` — chức năng, BR-xx, AC-xx, data flow (qa-analyst).
13
+ 2. `{paths.qc_dir}/{UC-ID}/DOC_GAPS.md` — bảng gap GAP-xx, mức độ, gap Blocker (qa-analyst).
14
14
 
15
15
  ## Khi nào trigger
16
16
  - "lập test plan cho [Feature]" / "viết test plan"
@@ -53,7 +53,7 @@ Tổng hợp **output của qa-analyst** thành **Test Plan** cho một feature.
53
53
 
54
54
  ## Output — Template `TEST_PLAN.md`
55
55
 
56
- Đặt tại `docs/<project>/<feature>/TEST_PLAN.md`:
56
+ Đặt tại `{paths.qc_dir}/{UC-ID}/TEST_PLAN.md`:
57
57
 
58
58
  ```markdown
59
59
  # Test Plan – <Feature>
@@ -23,7 +23,7 @@ Skill **tự chứa**, 2 mode:
23
23
  Input: charter + tour + tester + time-box. Tạo file gồm: metadata (date/tester/charter/tour/env/data) ·
24
24
  `#SETUP` (bước chuẩn bị) · `#TEST` (5–8 gợi ý theo tour) · `#BUG` template (title, severity, steps,
25
25
  expected/actual) · `#QUESTION`, `#IDEA` placeholder · summary cuối session.
26
- → `docs/<project>/exploratory/sessions/<YYYY-MM-DD>_<tester>.md`
26
+ → `{paths.qc_dir}/exploratory/sessions/<YYYY-MM-DD>_<tester>.md`
27
27
 
28
28
  ## Mode 2 — Convert Findings
29
29
  Input: session note (#BUG + #IDEA).
@@ -33,4 +33,4 @@ Input: session note (#BUG + #IDEA).
33
33
  - **Weekly summary** (nếu yêu cầu): overview, top findings, coverage gap, recommendations.
34
34
 
35
35
  ## Output
36
- Mode 1: file session note. Mode 2: bug reports + file TC trong `docs/<project>/<feature>/` + summary.
36
+ Mode 1: file session note. Mode 2: bug reports + file TC trong `{paths.qc_dir}/{UC-ID}/test-cases/` + summary.
@@ -126,6 +126,36 @@ Output Artifacts:
126
126
 
127
127
  If no files were written (e.g., review or analysis commands) → write `Output Artifacts: none (read-only)`.
128
128
 
129
+ ## Pipeline Position
130
+
131
+ Print a one-line map of the pipeline with the CURRENT command's phase marked `◀ bạn ở đây`,
132
+ so the user always sees where this command sits in the end-to-end flow:
133
+
134
+ ```
135
+ Discovery → PRD → [Design Spec] → BDD → Tech Design → Code → Dev Self-Check → QC → Trace Audit
136
+ ```
137
+
138
+ Find the current command in this phase legend and mark **its** phase in the map above:
139
+
140
+ | Phase | Commands |
141
+ |-------|----------|
142
+ | Discovery | `/define-product` |
143
+ | PRD | `/generate-prd` · `/refine-prd` · `/review-context` (PRD) |
144
+ | Design Spec | `/generate-design-spec` |
145
+ | BDD | `/generate-bdd` · `/review-context` (BDD) |
146
+ | Tech Design | `/generate-tech-docs` · `/map-testids` · `/review-tech-docs` |
147
+ | Code | `/generate-code` · `/review-code` |
148
+ | Dev Self-Check | `/dev-gen-test` · `/dev-run-test` · `/dev-smoke-test` |
149
+ | QC | `/qc-analyze` · `/qc-plan` · `/qc-design-test` · `/qc-review` · `/qc-run-test` · `/qc-report` |
150
+ | Trace Audit | `/validate-traces` |
151
+
152
+ For a **review command**, also append the 3-step review loop with the current step marked, e.g.:
153
+ `Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume`.
154
+
155
+ **Cross-cutting commands** (`/sync`, `/update-framework`, `/fix-bug`, `/debug`, `/learn`,
156
+ `/report-bug`, `/propose-scenario`, `/generate-spec-manifest`) sit outside the linear pipeline —
157
+ **omit the Pipeline line entirely** for these (do not force-fit them onto the map).
158
+
129
159
  ## Next Command Suggestion
130
160
 
131
161
  Suggest the logical next command based on workflow phase:
@@ -167,8 +197,11 @@ Suggest the logical next command based on workflow phase:
167
197
  Format the footer as:
168
198
  ```
169
199
  ---
170
- Status : {badge}
200
+ Status : {badge}
171
201
  {Output Artifacts block}
172
- Next : {suggested command with example arguments}
202
+ Pipeline : Discovery PRD [BDD ◀ bạn ở đây] → Tech Design → Code → Dev Self-Check → QC → Trace Audit
203
+ (review cmd) Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume
204
+ Next : {suggested command with example arguments}
173
205
  ```
206
+ *(Omit the `Pipeline` line for cross-cutting commands listed above.)*
174
207
 
@@ -197,6 +197,36 @@ Output Artifacts:
197
197
 
198
198
  If no files were written (e.g., review or analysis commands) → write `Output Artifacts: none (read-only)`.
199
199
 
200
+ ## Pipeline Position
201
+
202
+ Print a one-line map of the pipeline with the CURRENT command's phase marked `◀ bạn ở đây`,
203
+ so the user always sees where this command sits in the end-to-end flow:
204
+
205
+ ```
206
+ Discovery → PRD → [Design Spec] → BDD → Tech Design → Code → Dev Self-Check → QC → Trace Audit
207
+ ```
208
+
209
+ Find the current command in this phase legend and mark **its** phase in the map above:
210
+
211
+ | Phase | Commands |
212
+ |-------|----------|
213
+ | Discovery | `/define-product` |
214
+ | PRD | `/generate-prd` · `/refine-prd` · `/review-context` (PRD) |
215
+ | Design Spec | `/generate-design-spec` |
216
+ | BDD | `/generate-bdd` · `/review-context` (BDD) |
217
+ | Tech Design | `/generate-tech-docs` · `/map-testids` · `/review-tech-docs` |
218
+ | Code | `/generate-code` · `/review-code` |
219
+ | Dev Self-Check | `/dev-gen-test` · `/dev-run-test` · `/dev-smoke-test` |
220
+ | QC | `/qc-analyze` · `/qc-plan` · `/qc-design-test` · `/qc-review` · `/qc-run-test` · `/qc-report` |
221
+ | Trace Audit | `/validate-traces` |
222
+
223
+ For a **review command**, also append the 3-step review loop with the current step marked, e.g.:
224
+ `Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume`.
225
+
226
+ **Cross-cutting commands** (`/sync`, `/update-framework`, `/fix-bug`, `/debug`, `/learn`,
227
+ `/report-bug`, `/propose-scenario`, `/generate-spec-manifest`) sit outside the linear pipeline —
228
+ **omit the Pipeline line entirely** for these (do not force-fit them onto the map).
229
+
200
230
  ## Next Command Suggestion
201
231
 
202
232
  Suggest the logical next command based on workflow phase:
@@ -238,10 +268,13 @@ Suggest the logical next command based on workflow phase:
238
268
  Format the footer as:
239
269
  ```
240
270
  ---
241
- Status : {badge}
271
+ Status : {badge}
242
272
  {Output Artifacts block}
243
- Next : {suggested command with example arguments}
273
+ Pipeline : Discovery PRD [BDD ◀ bạn ở đây] → Tech Design → Code → Dev Self-Check → QC → Trace Audit
274
+ (review cmd) Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume
275
+ Next : {suggested command with example arguments}
244
276
  ```
277
+ *(Omit the `Pipeline` line for cross-cutting commands listed above.)*
245
278
 
246
279
 
247
280
  ---
@@ -341,6 +374,36 @@ Output Artifacts:
341
374
 
342
375
  If no files were written (e.g., review or analysis commands) → write `Output Artifacts: none (read-only)`.
343
376
 
377
+ ## Pipeline Position
378
+
379
+ Print a one-line map of the pipeline with the CURRENT command's phase marked `◀ bạn ở đây`,
380
+ so the user always sees where this command sits in the end-to-end flow:
381
+
382
+ ```
383
+ Discovery → PRD → [Design Spec] → BDD → Tech Design → Code → Dev Self-Check → QC → Trace Audit
384
+ ```
385
+
386
+ Find the current command in this phase legend and mark **its** phase in the map above:
387
+
388
+ | Phase | Commands |
389
+ |-------|----------|
390
+ | Discovery | `/define-product` |
391
+ | PRD | `/generate-prd` · `/refine-prd` · `/review-context` (PRD) |
392
+ | Design Spec | `/generate-design-spec` |
393
+ | BDD | `/generate-bdd` · `/review-context` (BDD) |
394
+ | Tech Design | `/generate-tech-docs` · `/map-testids` · `/review-tech-docs` |
395
+ | Code | `/generate-code` · `/review-code` |
396
+ | Dev Self-Check | `/dev-gen-test` · `/dev-run-test` · `/dev-smoke-test` |
397
+ | QC | `/qc-analyze` · `/qc-plan` · `/qc-design-test` · `/qc-review` · `/qc-run-test` · `/qc-report` |
398
+ | Trace Audit | `/validate-traces` |
399
+
400
+ For a **review command**, also append the 3-step review loop with the current step marked, e.g.:
401
+ `Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume`.
402
+
403
+ **Cross-cutting commands** (`/sync`, `/update-framework`, `/fix-bug`, `/debug`, `/learn`,
404
+ `/report-bug`, `/propose-scenario`, `/generate-spec-manifest`) sit outside the linear pipeline —
405
+ **omit the Pipeline line entirely** for these (do not force-fit them onto the map).
406
+
344
407
  ## Next Command Suggestion
345
408
 
346
409
  Suggest the logical next command based on workflow phase:
@@ -382,8 +445,11 @@ Suggest the logical next command based on workflow phase:
382
445
  Format the footer as:
383
446
  ```
384
447
  ---
385
- Status : {badge}
448
+ Status : {badge}
386
449
  {Output Artifacts block}
387
- Next : {suggested command with example arguments}
450
+ Pipeline : Discovery PRD [BDD ◀ bạn ở đây] → Tech Design → Code → Dev Self-Check → QC → Trace Audit
451
+ (review cmd) Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume
452
+ Next : {suggested command with example arguments}
388
453
  ```
454
+ *(Omit the `Pipeline` line for cross-cutting commands listed above.)*
389
455
 
@@ -240,6 +240,36 @@ Output Artifacts:
240
240
 
241
241
  If no files were written (e.g., review or analysis commands) → write `Output Artifacts: none (read-only)`.
242
242
 
243
+ ## Pipeline Position
244
+
245
+ Print a one-line map of the pipeline with the CURRENT command's phase marked `◀ bạn ở đây`,
246
+ so the user always sees where this command sits in the end-to-end flow:
247
+
248
+ ```
249
+ Discovery → PRD → [Design Spec] → BDD → Tech Design → Code → Dev Self-Check → QC → Trace Audit
250
+ ```
251
+
252
+ Find the current command in this phase legend and mark **its** phase in the map above:
253
+
254
+ | Phase | Commands |
255
+ |-------|----------|
256
+ | Discovery | `/define-product` |
257
+ | PRD | `/generate-prd` · `/refine-prd` · `/review-context` (PRD) |
258
+ | Design Spec | `/generate-design-spec` |
259
+ | BDD | `/generate-bdd` · `/review-context` (BDD) |
260
+ | Tech Design | `/generate-tech-docs` · `/map-testids` · `/review-tech-docs` |
261
+ | Code | `/generate-code` · `/review-code` |
262
+ | Dev Self-Check | `/dev-gen-test` · `/dev-run-test` · `/dev-smoke-test` |
263
+ | QC | `/qc-analyze` · `/qc-plan` · `/qc-design-test` · `/qc-review` · `/qc-run-test` · `/qc-report` |
264
+ | Trace Audit | `/validate-traces` |
265
+
266
+ For a **review command**, also append the 3-step review loop with the current step marked, e.g.:
267
+ `Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume`.
268
+
269
+ **Cross-cutting commands** (`/sync`, `/update-framework`, `/fix-bug`, `/debug`, `/learn`,
270
+ `/report-bug`, `/propose-scenario`, `/generate-spec-manifest`) sit outside the linear pipeline —
271
+ **omit the Pipeline line entirely** for these (do not force-fit them onto the map).
272
+
243
273
  ## Next Command Suggestion
244
274
 
245
275
  Suggest the logical next command based on workflow phase:
@@ -281,10 +311,13 @@ Suggest the logical next command based on workflow phase:
281
311
  Format the footer as:
282
312
  ```
283
313
  ---
284
- Status : {badge}
314
+ Status : {badge}
285
315
  {Output Artifacts block}
286
- Next : {suggested command with example arguments}
316
+ Pipeline : Discovery PRD [BDD ◀ bạn ở đây] → Tech Design → Code → Dev Self-Check → QC → Trace Audit
317
+ (review cmd) Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume
318
+ Next : {suggested command with example arguments}
287
319
  ```
320
+ *(Omit the `Pipeline` line for cross-cutting commands listed above.)*
288
321
 
289
322
 
290
323
  ---
@@ -331,6 +364,8 @@ Read `.agent/project-context.yaml`. Extract and store:
331
364
  - `paths.specs_dir` → BDD specs root
332
365
  - `paths.prd_dir` → PRD documents root
333
366
  - `paths.refinement_dir` → findings/review output dir
367
+ - `paths.qc_dir` → QC automation artifacts root (visible top-level, one subfolder per UC: `{qc_dir}/{UC-ID}/`)
368
+ - `paths.qc_skills_dir` → where qc-* commands load QC skills from (default bundled `.agent/skills/qc`; override to the QC team's own repo/submodule so framework upgrade won't overwrite them)
334
369
  - `paths.product_definitions_dir` → product definitions root
335
370
  - `paths.domain_knowledge_dir` → domain knowledge root
336
371
  - `paths.business_dictionary` → path to business-dictionary.md
@@ -343,6 +378,8 @@ If `paths` section is absent, use these defaults:
343
378
  - `specs_dir` = `specs/bdd`
344
379
  - `prd_dir` = `specs/prd`
345
380
  - `refinement_dir` = `.agent/review`
381
+ - `qc_dir` = `docs`
382
+ - `qc_skills_dir` = `.agent/skills/qc`
346
383
  - `product_definitions_dir` = `specs/product-definition`
347
384
  - `domain_knowledge_dir` = `specs/domain-knowledge`
348
385
  - `business_dictionary` = `specs/domain-knowledge/business-dictionary.md`
@@ -368,7 +405,7 @@ If `services` section is present:
368
405
  - If `$ARGUMENTS` contains a path, extract the segment after `prd_dir`
369
406
 
370
407
  **2. Route to service** — if active domain matches a key in `services`:
371
- - Override `paths.specs_dir` → `services.{domain}.specs_dir`
408
+ - Override `paths.specs_dir` → `services.{domain}.specs_dir` — **only if `setup.spec_source` is NOT set.** When `spec_source` IS set, ALL BDD (web/app/**system**) is a shared cross-team artifact → leave `specs_dir` for step 4 to route to the spec repo; do NOT pin it per-service here.
372
409
  - Override `paths.tech_docs_dir` → `services.{domain}.tech_docs_dir` — **only if `setup.spec_source` is NOT set.** When `spec_source` IS set, the tech-design (API contract) is a cross-team artifact and must live in the shared spec repo (handled in step 4), so leave `tech_docs_dir` for step 4 to route — do NOT pin it per-service here.
373
410
  - Store `active_service` = `services.{domain}.path`
374
411
  - Store `active_service_module` = `services.{domain}.module`
@@ -379,6 +416,7 @@ If `services` section is present:
379
416
  - Set `active_service = unresolved`
380
417
 
381
418
  **4. Spec source auto-override** — if `setup.spec_source` is set AND the corresponding path was not already explicitly set in `paths:`:
419
+ - Override `paths.specs_dir` → `{spec_source}/specs/bdd` — **always when `spec_source` is set.** All BDD (web/app/**system**) lives in the shared spec repo so every umbrella (FE/App/BE) reads the same scenarios; the FE tech-design gate + `/generate-code --phase=ui`/`--phase=integration` resolve the `system/` BDD here. *(Per-service `specs/bdd` only when there is no `spec_source`.)*
382
420
  - Override `paths.prd_dir` → `{spec_source}/specs/prd`
383
421
  - Override `paths.design_spec_dir` → `{spec_source}/specs/design-spec`
384
422
  - Override `paths.tech_docs_dir` → `{spec_source}/specs/tech-docs` — **always when `spec_source` is set** (step 2 no longer pins tech-docs per-service in this case). The tech-design IS the cross-team API contract: BE authors it here, and FE/App read it from the same spec submodule at `/generate-code --phase=integration`. *(Per-service tech-docs only happen when there is no `spec_source` — a pure multi-service BE repo with no shared spec module.)*
@@ -387,8 +425,10 @@ If `services` section is present:
387
425
  - Override `paths.core_entities` → `{spec_source}/specs/domain-knowledge/core-entities.md`
388
426
  - Override `paths.bug_reports_dir` → `{spec_source}/feedback/bug-reports`
389
427
  - Override `paths.bdd_proposals_dir` → `{spec_source}/feedback/bdd-proposals`
428
+ - Override `paths.prd_change_requests_dir` → `{spec_source}/feedback/prd-change-requests`
429
+ - Override `paths.trace_dir` → `{spec_source}/.trace` — **always when `spec_source` is set.** Trace TSVs are consolidated in the spec repo (single authoritative location, no per-service split) so the PM/PO has one place to manage status. Code-side commands (`/generate-code`, `/dev-run-test`, `/qc-run-test`) run from `service_root` but **write their trace row into `{spec_source}/.trace`** — like they already push `feedback/` there. *(Per-service `.trace` only when there is no `spec_source`.)*
390
430
 
391
- > **Why under `spec_source`:** PRD, design-spec, domain knowledge, the **API contract (tech-docs)**, and tester feedback are all **cross-team artifacts** — they must live in the **shared spec repo** so every umbrella (FE/App/BE) reads the same source via `/sync`. Tech-docs specifically: BE authors the tech-design (API contract), commits + pushes it into the spec submodule (2-layer commit), and FE/App pull it on their next `/sync` to wire the real API in `/generate-code --phase=integration`. In single-service mode (no `spec_source`), these default under the repo root — still shared, same repo.
431
+ > **Why under `spec_source`:** PRD, design-spec, domain knowledge, **all BDD (web/app/system)**, the **API contract (tech-docs)**, tester feedback, **and the `.trace/` coverage state** are all **cross-team artifacts** — they live in the **shared spec repo** so every umbrella (FE/App/BE) and the PM read one source via `/sync`. The service submodule holds only **code** (+ build/test tooling). `.trace/` and `feedback/` are the dev/QC **write areas** in the spec repo (the PRD/BDD/design-spec/tech-docs there stay read-only for dev/QC only PO edits those). In single-service mode (no `spec_source`), everything defaults under the repo root — still one repo.
392
432
 
393
433
  ---
394
434
 
@@ -408,12 +448,12 @@ When `active_service` has been resolved to a real path in Step 1.5 (e.g., `user-
408
448
  |----------|--------|
409
449
  | `conventions.test_command` | service's `conventions.test_command` |
410
450
  | `conventions.build_command` | service's `conventions.build_command` |
411
- | `paths.trace_dir` | `{active_service}/{service paths.trace_dir}` default: `{active_service}/.trace` |
412
- | `paths.specs_dir` | `{active_service}/{service paths.specs_dir}` (if set in service config, else keep Step 1.5 override) |
451
+ | `paths.trace_dir` | **If `spec_source` is set → keep the Step 4 spec-repo route (`{spec_source}/.trace`); ignore any service-level `trace_dir`.** Only when there is no `spec_source`: `{active_service}/{service paths.trace_dir}` (default `{active_service}/.trace`). |
452
+ | `paths.specs_dir` | **If `spec_source` is set → keep the Step 4 spec-repo route (`{spec_source}/specs/bdd`); ignore any service-level `specs_dir`** (BDD is cross-team, never per-service in this mode). Only when there is no `spec_source`: `{active_service}/{service paths.specs_dir}` if set, else the Step 1.5 override. |
413
453
 
414
454
  **3. Store** `service_root = {active_service}` as the working directory anchor for all downstream commands:
415
455
  - Shell commands (`/dev-run-test`, `/dev-gen-test`) run **from within** `service_root`
416
- - File write operations (test files, trace TSVs) use paths **relative to** `service_root`
456
+ - **Source/test files** are written relative to `service_root`; **trace TSVs** are written to `{paths.trace_dir}` (the spec repo when `spec_source` is set — a cross-repo write, committed/pushed to the spec submodule like `feedback/`).
417
457
 
418
458
  **4. If service config not found** — keep umbrella defaults, still set `service_root = {active_service}` (path anchor is always needed even without a config override).
419
459
 
@@ -671,6 +711,36 @@ Output Artifacts:
671
711
 
672
712
  If no files were written (e.g., review or analysis commands) → write `Output Artifacts: none (read-only)`.
673
713
 
714
+ ## Pipeline Position
715
+
716
+ Print a one-line map of the pipeline with the CURRENT command's phase marked `◀ bạn ở đây`,
717
+ so the user always sees where this command sits in the end-to-end flow:
718
+
719
+ ```
720
+ Discovery → PRD → [Design Spec] → BDD → Tech Design → Code → Dev Self-Check → QC → Trace Audit
721
+ ```
722
+
723
+ Find the current command in this phase legend and mark **its** phase in the map above:
724
+
725
+ | Phase | Commands |
726
+ |-------|----------|
727
+ | Discovery | `/define-product` |
728
+ | PRD | `/generate-prd` · `/refine-prd` · `/review-context` (PRD) |
729
+ | Design Spec | `/generate-design-spec` |
730
+ | BDD | `/generate-bdd` · `/review-context` (BDD) |
731
+ | Tech Design | `/generate-tech-docs` · `/map-testids` · `/review-tech-docs` |
732
+ | Code | `/generate-code` · `/review-code` |
733
+ | Dev Self-Check | `/dev-gen-test` · `/dev-run-test` · `/dev-smoke-test` |
734
+ | QC | `/qc-analyze` · `/qc-plan` · `/qc-design-test` · `/qc-review` · `/qc-run-test` · `/qc-report` |
735
+ | Trace Audit | `/validate-traces` |
736
+
737
+ For a **review command**, also append the 3-step review loop with the current step marked, e.g.:
738
+ `Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume`.
739
+
740
+ **Cross-cutting commands** (`/sync`, `/update-framework`, `/fix-bug`, `/debug`, `/learn`,
741
+ `/report-bug`, `/propose-scenario`, `/generate-spec-manifest`) sit outside the linear pipeline —
742
+ **omit the Pipeline line entirely** for these (do not force-fit them onto the map).
743
+
674
744
  ## Next Command Suggestion
675
745
 
676
746
  Suggest the logical next command based on workflow phase:
@@ -712,10 +782,13 @@ Suggest the logical next command based on workflow phase:
712
782
  Format the footer as:
713
783
  ```
714
784
  ---
715
- Status : {badge}
785
+ Status : {badge}
716
786
  {Output Artifacts block}
717
- Next : {suggested command with example arguments}
787
+ Pipeline : Discovery PRD [BDD ◀ bạn ở đây] → Tech Design → Code → Dev Self-Check → QC → Trace Audit
788
+ (review cmd) Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume
789
+ Next : {suggested command with example arguments}
718
790
  ```
791
+ *(Omit the `Pipeline` line for cross-cutting commands listed above.)*
719
792
 
720
793
 
721
794
  ---
@@ -765,6 +838,8 @@ Read `.agent/project-context.yaml`. Extract and store:
765
838
  - `paths.specs_dir` → BDD specs root
766
839
  - `paths.prd_dir` → PRD documents root
767
840
  - `paths.refinement_dir` → findings/review output dir
841
+ - `paths.qc_dir` → QC automation artifacts root (visible top-level, one subfolder per UC: `{qc_dir}/{UC-ID}/`)
842
+ - `paths.qc_skills_dir` → where qc-* commands load QC skills from (default bundled `.agent/skills/qc`; override to the QC team's own repo/submodule so framework upgrade won't overwrite them)
768
843
  - `paths.product_definitions_dir` → product definitions root
769
844
  - `paths.domain_knowledge_dir` → domain knowledge root
770
845
  - `paths.business_dictionary` → path to business-dictionary.md
@@ -777,6 +852,8 @@ If `paths` section is absent, use these defaults:
777
852
  - `specs_dir` = `specs/bdd`
778
853
  - `prd_dir` = `specs/prd`
779
854
  - `refinement_dir` = `.agent/review`
855
+ - `qc_dir` = `docs`
856
+ - `qc_skills_dir` = `.agent/skills/qc`
780
857
  - `product_definitions_dir` = `specs/product-definition`
781
858
  - `domain_knowledge_dir` = `specs/domain-knowledge`
782
859
  - `business_dictionary` = `specs/domain-knowledge/business-dictionary.md`
@@ -802,7 +879,7 @@ If `services` section is present:
802
879
  - If `$ARGUMENTS` contains a path, extract the segment after `prd_dir`
803
880
 
804
881
  **2. Route to service** — if active domain matches a key in `services`:
805
- - Override `paths.specs_dir` → `services.{domain}.specs_dir`
882
+ - Override `paths.specs_dir` → `services.{domain}.specs_dir` — **only if `setup.spec_source` is NOT set.** When `spec_source` IS set, ALL BDD (web/app/**system**) is a shared cross-team artifact → leave `specs_dir` for step 4 to route to the spec repo; do NOT pin it per-service here.
806
883
  - Override `paths.tech_docs_dir` → `services.{domain}.tech_docs_dir` — **only if `setup.spec_source` is NOT set.** When `spec_source` IS set, the tech-design (API contract) is a cross-team artifact and must live in the shared spec repo (handled in step 4), so leave `tech_docs_dir` for step 4 to route — do NOT pin it per-service here.
807
884
  - Store `active_service` = `services.{domain}.path`
808
885
  - Store `active_service_module` = `services.{domain}.module`
@@ -813,6 +890,7 @@ If `services` section is present:
813
890
  - Set `active_service = unresolved`
814
891
 
815
892
  **4. Spec source auto-override** — if `setup.spec_source` is set AND the corresponding path was not already explicitly set in `paths:`:
893
+ - Override `paths.specs_dir` → `{spec_source}/specs/bdd` — **always when `spec_source` is set.** All BDD (web/app/**system**) lives in the shared spec repo so every umbrella (FE/App/BE) reads the same scenarios; the FE tech-design gate + `/generate-code --phase=ui`/`--phase=integration` resolve the `system/` BDD here. *(Per-service `specs/bdd` only when there is no `spec_source`.)*
816
894
  - Override `paths.prd_dir` → `{spec_source}/specs/prd`
817
895
  - Override `paths.design_spec_dir` → `{spec_source}/specs/design-spec`
818
896
  - Override `paths.tech_docs_dir` → `{spec_source}/specs/tech-docs` — **always when `spec_source` is set** (step 2 no longer pins tech-docs per-service in this case). The tech-design IS the cross-team API contract: BE authors it here, and FE/App read it from the same spec submodule at `/generate-code --phase=integration`. *(Per-service tech-docs only happen when there is no `spec_source` — a pure multi-service BE repo with no shared spec module.)*
@@ -821,8 +899,10 @@ If `services` section is present:
821
899
  - Override `paths.core_entities` → `{spec_source}/specs/domain-knowledge/core-entities.md`
822
900
  - Override `paths.bug_reports_dir` → `{spec_source}/feedback/bug-reports`
823
901
  - Override `paths.bdd_proposals_dir` → `{spec_source}/feedback/bdd-proposals`
902
+ - Override `paths.prd_change_requests_dir` → `{spec_source}/feedback/prd-change-requests`
903
+ - Override `paths.trace_dir` → `{spec_source}/.trace` — **always when `spec_source` is set.** Trace TSVs are consolidated in the spec repo (single authoritative location, no per-service split) so the PM/PO has one place to manage status. Code-side commands (`/generate-code`, `/dev-run-test`, `/qc-run-test`) run from `service_root` but **write their trace row into `{spec_source}/.trace`** — like they already push `feedback/` there. *(Per-service `.trace` only when there is no `spec_source`.)*
824
904
 
825
- > **Why under `spec_source`:** PRD, design-spec, domain knowledge, the **API contract (tech-docs)**, and tester feedback are all **cross-team artifacts** — they must live in the **shared spec repo** so every umbrella (FE/App/BE) reads the same source via `/sync`. Tech-docs specifically: BE authors the tech-design (API contract), commits + pushes it into the spec submodule (2-layer commit), and FE/App pull it on their next `/sync` to wire the real API in `/generate-code --phase=integration`. In single-service mode (no `spec_source`), these default under the repo root — still shared, same repo.
905
+ > **Why under `spec_source`:** PRD, design-spec, domain knowledge, **all BDD (web/app/system)**, the **API contract (tech-docs)**, tester feedback, **and the `.trace/` coverage state** are all **cross-team artifacts** — they live in the **shared spec repo** so every umbrella (FE/App/BE) and the PM read one source via `/sync`. The service submodule holds only **code** (+ build/test tooling). `.trace/` and `feedback/` are the dev/QC **write areas** in the spec repo (the PRD/BDD/design-spec/tech-docs there stay read-only for dev/QC only PO edits those). In single-service mode (no `spec_source`), everything defaults under the repo root — still one repo.
826
906
 
827
907
  ---
828
908
 
@@ -842,12 +922,12 @@ When `active_service` has been resolved to a real path in Step 1.5 (e.g., `user-
842
922
  |----------|--------|
843
923
  | `conventions.test_command` | service's `conventions.test_command` |
844
924
  | `conventions.build_command` | service's `conventions.build_command` |
845
- | `paths.trace_dir` | `{active_service}/{service paths.trace_dir}` default: `{active_service}/.trace` |
846
- | `paths.specs_dir` | `{active_service}/{service paths.specs_dir}` (if set in service config, else keep Step 1.5 override) |
925
+ | `paths.trace_dir` | **If `spec_source` is set → keep the Step 4 spec-repo route (`{spec_source}/.trace`); ignore any service-level `trace_dir`.** Only when there is no `spec_source`: `{active_service}/{service paths.trace_dir}` (default `{active_service}/.trace`). |
926
+ | `paths.specs_dir` | **If `spec_source` is set → keep the Step 4 spec-repo route (`{spec_source}/specs/bdd`); ignore any service-level `specs_dir`** (BDD is cross-team, never per-service in this mode). Only when there is no `spec_source`: `{active_service}/{service paths.specs_dir}` if set, else the Step 1.5 override. |
847
927
 
848
928
  **3. Store** `service_root = {active_service}` as the working directory anchor for all downstream commands:
849
929
  - Shell commands (`/dev-run-test`, `/dev-gen-test`) run **from within** `service_root`
850
- - File write operations (test files, trace TSVs) use paths **relative to** `service_root`
930
+ - **Source/test files** are written relative to `service_root`; **trace TSVs** are written to `{paths.trace_dir}` (the spec repo when `spec_source` is set — a cross-repo write, committed/pushed to the spec submodule like `feedback/`).
851
931
 
852
932
  **4. If service config not found** — keep umbrella defaults, still set `service_root = {active_service}` (path anchor is always needed even without a config override).
853
933
 
@@ -1120,6 +1200,36 @@ Output Artifacts:
1120
1200
 
1121
1201
  If no files were written (e.g., review or analysis commands) → write `Output Artifacts: none (read-only)`.
1122
1202
 
1203
+ ## Pipeline Position
1204
+
1205
+ Print a one-line map of the pipeline with the CURRENT command's phase marked `◀ bạn ở đây`,
1206
+ so the user always sees where this command sits in the end-to-end flow:
1207
+
1208
+ ```
1209
+ Discovery → PRD → [Design Spec] → BDD → Tech Design → Code → Dev Self-Check → QC → Trace Audit
1210
+ ```
1211
+
1212
+ Find the current command in this phase legend and mark **its** phase in the map above:
1213
+
1214
+ | Phase | Commands |
1215
+ |-------|----------|
1216
+ | Discovery | `/define-product` |
1217
+ | PRD | `/generate-prd` · `/refine-prd` · `/review-context` (PRD) |
1218
+ | Design Spec | `/generate-design-spec` |
1219
+ | BDD | `/generate-bdd` · `/review-context` (BDD) |
1220
+ | Tech Design | `/generate-tech-docs` · `/map-testids` · `/review-tech-docs` |
1221
+ | Code | `/generate-code` · `/review-code` |
1222
+ | Dev Self-Check | `/dev-gen-test` · `/dev-run-test` · `/dev-smoke-test` |
1223
+ | QC | `/qc-analyze` · `/qc-plan` · `/qc-design-test` · `/qc-review` · `/qc-run-test` · `/qc-report` |
1224
+ | Trace Audit | `/validate-traces` |
1225
+
1226
+ For a **review command**, also append the 3-step review loop with the current step marked, e.g.:
1227
+ `Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume`.
1228
+
1229
+ **Cross-cutting commands** (`/sync`, `/update-framework`, `/fix-bug`, `/debug`, `/learn`,
1230
+ `/report-bug`, `/propose-scenario`, `/generate-spec-manifest`) sit outside the linear pipeline —
1231
+ **omit the Pipeline line entirely** for these (do not force-fit them onto the map).
1232
+
1123
1233
  ## Next Command Suggestion
1124
1234
 
1125
1235
  Suggest the logical next command based on workflow phase:
@@ -1161,8 +1271,11 @@ Suggest the logical next command based on workflow phase:
1161
1271
  Format the footer as:
1162
1272
  ```
1163
1273
  ---
1164
- Status : {badge}
1274
+ Status : {badge}
1165
1275
  {Output Artifacts block}
1166
- Next : {suggested command with example arguments}
1276
+ Pipeline : Discovery PRD [BDD ◀ bạn ở đây] → Tech Design → Code → Dev Self-Check → QC → Trace Audit
1277
+ (review cmd) Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume
1278
+ Next : {suggested command with example arguments}
1167
1279
  ```
1280
+ *(Omit the `Pipeline` line for cross-cutting commands listed above.)*
1168
1281