@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
@@ -67,6 +67,8 @@ Read `.agent/project-context.yaml`. Extract and store:
67
67
  - `paths.specs_dir` → BDD specs root
68
68
  - `paths.prd_dir` → PRD documents root
69
69
  - `paths.refinement_dir` → findings/review output dir
70
+ - `paths.qc_dir` → QC automation artifacts root (visible top-level, one subfolder per UC: `{qc_dir}/{UC-ID}/`)
71
+ - `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)
70
72
  - `paths.product_definitions_dir` → product definitions root
71
73
  - `paths.domain_knowledge_dir` → domain knowledge root
72
74
  - `paths.business_dictionary` → path to business-dictionary.md
@@ -79,6 +81,8 @@ If `paths` section is absent, use these defaults:
79
81
  - `specs_dir` = `specs/bdd`
80
82
  - `prd_dir` = `specs/prd`
81
83
  - `refinement_dir` = `.agent/review`
84
+ - `qc_dir` = `docs`
85
+ - `qc_skills_dir` = `.agent/skills/qc`
82
86
  - `product_definitions_dir` = `specs/product-definition`
83
87
  - `domain_knowledge_dir` = `specs/domain-knowledge`
84
88
  - `business_dictionary` = `specs/domain-knowledge/business-dictionary.md`
@@ -104,7 +108,7 @@ If `services` section is present:
104
108
  - If `$ARGUMENTS` contains a path, extract the segment after `prd_dir`
105
109
 
106
110
  **2. Route to service** — if active domain matches a key in `services`:
107
- - Override `paths.specs_dir` → `services.{domain}.specs_dir`
111
+ - 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.
108
112
  - 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.
109
113
  - Store `active_service` = `services.{domain}.path`
110
114
  - Store `active_service_module` = `services.{domain}.module`
@@ -115,6 +119,7 @@ If `services` section is present:
115
119
  - Set `active_service = unresolved`
116
120
 
117
121
  **4. Spec source auto-override** — if `setup.spec_source` is set AND the corresponding path was not already explicitly set in `paths:`:
122
+ - 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`.)*
118
123
  - Override `paths.prd_dir` → `{spec_source}/specs/prd`
119
124
  - Override `paths.design_spec_dir` → `{spec_source}/specs/design-spec`
120
125
  - 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.)*
@@ -123,8 +128,10 @@ If `services` section is present:
123
128
  - Override `paths.core_entities` → `{spec_source}/specs/domain-knowledge/core-entities.md`
124
129
  - Override `paths.bug_reports_dir` → `{spec_source}/feedback/bug-reports`
125
130
  - Override `paths.bdd_proposals_dir` → `{spec_source}/feedback/bdd-proposals`
131
+ - Override `paths.prd_change_requests_dir` → `{spec_source}/feedback/prd-change-requests`
132
+ - 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`.)*
126
133
 
127
- > **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.
134
+ > **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.
128
135
 
129
136
  ---
130
137
 
@@ -144,12 +151,12 @@ When `active_service` has been resolved to a real path in Step 1.5 (e.g., `user-
144
151
  |----------|--------|
145
152
  | `conventions.test_command` | service's `conventions.test_command` |
146
153
  | `conventions.build_command` | service's `conventions.build_command` |
147
- | `paths.trace_dir` | `{active_service}/{service paths.trace_dir}` default: `{active_service}/.trace` |
148
- | `paths.specs_dir` | `{active_service}/{service paths.specs_dir}` (if set in service config, else keep Step 1.5 override) |
154
+ | `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`). |
155
+ | `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. |
149
156
 
150
157
  **3. Store** `service_root = {active_service}` as the working directory anchor for all downstream commands:
151
158
  - Shell commands (`/dev-run-test`, `/dev-gen-test`) run **from within** `service_root`
152
- - File write operations (test files, trace TSVs) use paths **relative to** `service_root`
159
+ - **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/`).
153
160
 
154
161
  **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).
155
162
 
@@ -451,6 +458,36 @@ Output Artifacts:
451
458
 
452
459
  If no files were written (e.g., review or analysis commands) → write `Output Artifacts: none (read-only)`.
453
460
 
461
+ ## Pipeline Position
462
+
463
+ Print a one-line map of the pipeline with the CURRENT command's phase marked `◀ bạn ở đây`,
464
+ so the user always sees where this command sits in the end-to-end flow:
465
+
466
+ ```
467
+ Discovery → PRD → [Design Spec] → BDD → Tech Design → Code → Dev Self-Check → QC → Trace Audit
468
+ ```
469
+
470
+ Find the current command in this phase legend and mark **its** phase in the map above:
471
+
472
+ | Phase | Commands |
473
+ |-------|----------|
474
+ | Discovery | `/define-product` |
475
+ | PRD | `/generate-prd` · `/refine-prd` · `/review-context` (PRD) |
476
+ | Design Spec | `/generate-design-spec` |
477
+ | BDD | `/generate-bdd` · `/review-context` (BDD) |
478
+ | Tech Design | `/generate-tech-docs` · `/map-testids` · `/review-tech-docs` |
479
+ | Code | `/generate-code` · `/review-code` |
480
+ | Dev Self-Check | `/dev-gen-test` · `/dev-run-test` · `/dev-smoke-test` |
481
+ | QC | `/qc-analyze` · `/qc-plan` · `/qc-design-test` · `/qc-review` · `/qc-run-test` · `/qc-report` |
482
+ | Trace Audit | `/validate-traces` |
483
+
484
+ For a **review command**, also append the 3-step review loop with the current step marked, e.g.:
485
+ `Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume`.
486
+
487
+ **Cross-cutting commands** (`/sync`, `/update-framework`, `/fix-bug`, `/debug`, `/learn`,
488
+ `/report-bug`, `/propose-scenario`, `/generate-spec-manifest`) sit outside the linear pipeline —
489
+ **omit the Pipeline line entirely** for these (do not force-fit them onto the map).
490
+
454
491
  ## Next Command Suggestion
455
492
 
456
493
  Suggest the logical next command based on workflow phase:
@@ -492,10 +529,13 @@ Suggest the logical next command based on workflow phase:
492
529
  Format the footer as:
493
530
  ```
494
531
  ---
495
- Status : {badge}
532
+ Status : {badge}
496
533
  {Output Artifacts block}
497
- Next : {suggested command with example arguments}
534
+ Pipeline : Discovery PRD [BDD ◀ bạn ở đây] → Tech Design → Code → Dev Self-Check → QC → Trace Audit
535
+ (review cmd) Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume
536
+ Next : {suggested command with example arguments}
498
537
  ```
538
+ *(Omit the `Pipeline` line for cross-cutting commands listed above.)*
499
539
 
500
540
 
501
541
  ---
@@ -602,6 +642,36 @@ Output Artifacts:
602
642
 
603
643
  If no files were written (e.g., review or analysis commands) → write `Output Artifacts: none (read-only)`.
604
644
 
645
+ ## Pipeline Position
646
+
647
+ Print a one-line map of the pipeline with the CURRENT command's phase marked `◀ bạn ở đây`,
648
+ so the user always sees where this command sits in the end-to-end flow:
649
+
650
+ ```
651
+ Discovery → PRD → [Design Spec] → BDD → Tech Design → Code → Dev Self-Check → QC → Trace Audit
652
+ ```
653
+
654
+ Find the current command in this phase legend and mark **its** phase in the map above:
655
+
656
+ | Phase | Commands |
657
+ |-------|----------|
658
+ | Discovery | `/define-product` |
659
+ | PRD | `/generate-prd` · `/refine-prd` · `/review-context` (PRD) |
660
+ | Design Spec | `/generate-design-spec` |
661
+ | BDD | `/generate-bdd` · `/review-context` (BDD) |
662
+ | Tech Design | `/generate-tech-docs` · `/map-testids` · `/review-tech-docs` |
663
+ | Code | `/generate-code` · `/review-code` |
664
+ | Dev Self-Check | `/dev-gen-test` · `/dev-run-test` · `/dev-smoke-test` |
665
+ | QC | `/qc-analyze` · `/qc-plan` · `/qc-design-test` · `/qc-review` · `/qc-run-test` · `/qc-report` |
666
+ | Trace Audit | `/validate-traces` |
667
+
668
+ For a **review command**, also append the 3-step review loop with the current step marked, e.g.:
669
+ `Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume`.
670
+
671
+ **Cross-cutting commands** (`/sync`, `/update-framework`, `/fix-bug`, `/debug`, `/learn`,
672
+ `/report-bug`, `/propose-scenario`, `/generate-spec-manifest`) sit outside the linear pipeline —
673
+ **omit the Pipeline line entirely** for these (do not force-fit them onto the map).
674
+
605
675
  ## Next Command Suggestion
606
676
 
607
677
  Suggest the logical next command based on workflow phase:
@@ -643,10 +713,13 @@ Suggest the logical next command based on workflow phase:
643
713
  Format the footer as:
644
714
  ```
645
715
  ---
646
- Status : {badge}
716
+ Status : {badge}
647
717
  {Output Artifacts block}
648
- Next : {suggested command with example arguments}
718
+ Pipeline : Discovery PRD [BDD ◀ bạn ở đây] → Tech Design → Code → Dev Self-Check → QC → Trace Audit
719
+ (review cmd) Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume
720
+ Next : {suggested command with example arguments}
649
721
  ```
722
+ *(Omit the `Pipeline` line for cross-cutting commands listed above.)*
650
723
 
651
724
 
652
725
  ---
@@ -710,6 +783,36 @@ Output Artifacts:
710
783
 
711
784
  If no files were written (e.g., review or analysis commands) → write `Output Artifacts: none (read-only)`.
712
785
 
786
+ ## Pipeline Position
787
+
788
+ Print a one-line map of the pipeline with the CURRENT command's phase marked `◀ bạn ở đây`,
789
+ so the user always sees where this command sits in the end-to-end flow:
790
+
791
+ ```
792
+ Discovery → PRD → [Design Spec] → BDD → Tech Design → Code → Dev Self-Check → QC → Trace Audit
793
+ ```
794
+
795
+ Find the current command in this phase legend and mark **its** phase in the map above:
796
+
797
+ | Phase | Commands |
798
+ |-------|----------|
799
+ | Discovery | `/define-product` |
800
+ | PRD | `/generate-prd` · `/refine-prd` · `/review-context` (PRD) |
801
+ | Design Spec | `/generate-design-spec` |
802
+ | BDD | `/generate-bdd` · `/review-context` (BDD) |
803
+ | Tech Design | `/generate-tech-docs` · `/map-testids` · `/review-tech-docs` |
804
+ | Code | `/generate-code` · `/review-code` |
805
+ | Dev Self-Check | `/dev-gen-test` · `/dev-run-test` · `/dev-smoke-test` |
806
+ | QC | `/qc-analyze` · `/qc-plan` · `/qc-design-test` · `/qc-review` · `/qc-run-test` · `/qc-report` |
807
+ | Trace Audit | `/validate-traces` |
808
+
809
+ For a **review command**, also append the 3-step review loop with the current step marked, e.g.:
810
+ `Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume`.
811
+
812
+ **Cross-cutting commands** (`/sync`, `/update-framework`, `/fix-bug`, `/debug`, `/learn`,
813
+ `/report-bug`, `/propose-scenario`, `/generate-spec-manifest`) sit outside the linear pipeline —
814
+ **omit the Pipeline line entirely** for these (do not force-fit them onto the map).
815
+
713
816
  ## Next Command Suggestion
714
817
 
715
818
  Suggest the logical next command based on workflow phase:
@@ -751,8 +854,11 @@ Suggest the logical next command based on workflow phase:
751
854
  Format the footer as:
752
855
  ```
753
856
  ---
754
- Status : {badge}
857
+ Status : {badge}
755
858
  {Output Artifacts block}
756
- Next : {suggested command with example arguments}
859
+ Pipeline : Discovery PRD [BDD ◀ bạn ở đây] → Tech Design → Code → Dev Self-Check → QC → Trace Audit
860
+ (review cmd) Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume
861
+ Next : {suggested command with example arguments}
757
862
  ```
863
+ *(Omit the `Pipeline` line for cross-cutting commands listed above.)*
758
864
 
@@ -141,6 +141,8 @@ Read `.agent/project-context.yaml`. Extract and store:
141
141
  - `paths.specs_dir` → BDD specs root
142
142
  - `paths.prd_dir` → PRD documents root
143
143
  - `paths.refinement_dir` → findings/review output dir
144
+ - `paths.qc_dir` → QC automation artifacts root (visible top-level, one subfolder per UC: `{qc_dir}/{UC-ID}/`)
145
+ - `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)
144
146
  - `paths.product_definitions_dir` → product definitions root
145
147
  - `paths.domain_knowledge_dir` → domain knowledge root
146
148
  - `paths.business_dictionary` → path to business-dictionary.md
@@ -153,6 +155,8 @@ If `paths` section is absent, use these defaults:
153
155
  - `specs_dir` = `specs/bdd`
154
156
  - `prd_dir` = `specs/prd`
155
157
  - `refinement_dir` = `.agent/review`
158
+ - `qc_dir` = `docs`
159
+ - `qc_skills_dir` = `.agent/skills/qc`
156
160
  - `product_definitions_dir` = `specs/product-definition`
157
161
  - `domain_knowledge_dir` = `specs/domain-knowledge`
158
162
  - `business_dictionary` = `specs/domain-knowledge/business-dictionary.md`
@@ -178,7 +182,7 @@ If `services` section is present:
178
182
  - If `$ARGUMENTS` contains a path, extract the segment after `prd_dir`
179
183
 
180
184
  **2. Route to service** — if active domain matches a key in `services`:
181
- - Override `paths.specs_dir` → `services.{domain}.specs_dir`
185
+ - 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.
182
186
  - 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.
183
187
  - Store `active_service` = `services.{domain}.path`
184
188
  - Store `active_service_module` = `services.{domain}.module`
@@ -189,6 +193,7 @@ If `services` section is present:
189
193
  - Set `active_service = unresolved`
190
194
 
191
195
  **4. Spec source auto-override** — if `setup.spec_source` is set AND the corresponding path was not already explicitly set in `paths:`:
196
+ - 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`.)*
192
197
  - Override `paths.prd_dir` → `{spec_source}/specs/prd`
193
198
  - Override `paths.design_spec_dir` → `{spec_source}/specs/design-spec`
194
199
  - 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.)*
@@ -197,8 +202,10 @@ If `services` section is present:
197
202
  - Override `paths.core_entities` → `{spec_source}/specs/domain-knowledge/core-entities.md`
198
203
  - Override `paths.bug_reports_dir` → `{spec_source}/feedback/bug-reports`
199
204
  - Override `paths.bdd_proposals_dir` → `{spec_source}/feedback/bdd-proposals`
205
+ - Override `paths.prd_change_requests_dir` → `{spec_source}/feedback/prd-change-requests`
206
+ - 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`.)*
200
207
 
201
- > **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.
208
+ > **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.
202
209
 
203
210
  ---
204
211
 
@@ -218,12 +225,12 @@ When `active_service` has been resolved to a real path in Step 1.5 (e.g., `user-
218
225
  |----------|--------|
219
226
  | `conventions.test_command` | service's `conventions.test_command` |
220
227
  | `conventions.build_command` | service's `conventions.build_command` |
221
- | `paths.trace_dir` | `{active_service}/{service paths.trace_dir}` default: `{active_service}/.trace` |
222
- | `paths.specs_dir` | `{active_service}/{service paths.specs_dir}` (if set in service config, else keep Step 1.5 override) |
228
+ | `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`). |
229
+ | `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. |
223
230
 
224
231
  **3. Store** `service_root = {active_service}` as the working directory anchor for all downstream commands:
225
232
  - Shell commands (`/dev-run-test`, `/dev-gen-test`) run **from within** `service_root`
226
- - File write operations (test files, trace TSVs) use paths **relative to** `service_root`
233
+ - **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/`).
227
234
 
228
235
  **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).
229
236
 
@@ -480,6 +487,36 @@ Output Artifacts:
480
487
 
481
488
  If no files were written (e.g., review or analysis commands) → write `Output Artifacts: none (read-only)`.
482
489
 
490
+ ## Pipeline Position
491
+
492
+ Print a one-line map of the pipeline with the CURRENT command's phase marked `◀ bạn ở đây`,
493
+ so the user always sees where this command sits in the end-to-end flow:
494
+
495
+ ```
496
+ Discovery → PRD → [Design Spec] → BDD → Tech Design → Code → Dev Self-Check → QC → Trace Audit
497
+ ```
498
+
499
+ Find the current command in this phase legend and mark **its** phase in the map above:
500
+
501
+ | Phase | Commands |
502
+ |-------|----------|
503
+ | Discovery | `/define-product` |
504
+ | PRD | `/generate-prd` · `/refine-prd` · `/review-context` (PRD) |
505
+ | Design Spec | `/generate-design-spec` |
506
+ | BDD | `/generate-bdd` · `/review-context` (BDD) |
507
+ | Tech Design | `/generate-tech-docs` · `/map-testids` · `/review-tech-docs` |
508
+ | Code | `/generate-code` · `/review-code` |
509
+ | Dev Self-Check | `/dev-gen-test` · `/dev-run-test` · `/dev-smoke-test` |
510
+ | QC | `/qc-analyze` · `/qc-plan` · `/qc-design-test` · `/qc-review` · `/qc-run-test` · `/qc-report` |
511
+ | Trace Audit | `/validate-traces` |
512
+
513
+ For a **review command**, also append the 3-step review loop with the current step marked, e.g.:
514
+ `Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume`.
515
+
516
+ **Cross-cutting commands** (`/sync`, `/update-framework`, `/fix-bug`, `/debug`, `/learn`,
517
+ `/report-bug`, `/propose-scenario`, `/generate-spec-manifest`) sit outside the linear pipeline —
518
+ **omit the Pipeline line entirely** for these (do not force-fit them onto the map).
519
+
483
520
  ## Next Command Suggestion
484
521
 
485
522
  Suggest the logical next command based on workflow phase:
@@ -521,10 +558,13 @@ Suggest the logical next command based on workflow phase:
521
558
  Format the footer as:
522
559
  ```
523
560
  ---
524
- Status : {badge}
561
+ Status : {badge}
525
562
  {Output Artifacts block}
526
- Next : {suggested command with example arguments}
563
+ Pipeline : Discovery PRD [BDD ◀ bạn ở đây] → Tech Design → Code → Dev Self-Check → QC → Trace Audit
564
+ (review cmd) Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume
565
+ Next : {suggested command with example arguments}
527
566
  ```
567
+ *(Omit the `Pipeline` line for cross-cutting commands listed above.)*
528
568
 
529
569
 
530
570
  ```
@@ -46,6 +46,8 @@ Read `.agent/project-context.yaml`. Extract and store:
46
46
  - `paths.specs_dir` → BDD specs root
47
47
  - `paths.prd_dir` → PRD documents root
48
48
  - `paths.refinement_dir` → findings/review output dir
49
+ - `paths.qc_dir` → QC automation artifacts root (visible top-level, one subfolder per UC: `{qc_dir}/{UC-ID}/`)
50
+ - `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)
49
51
  - `paths.product_definitions_dir` → product definitions root
50
52
  - `paths.domain_knowledge_dir` → domain knowledge root
51
53
  - `paths.business_dictionary` → path to business-dictionary.md
@@ -58,6 +60,8 @@ If `paths` section is absent, use these defaults:
58
60
  - `specs_dir` = `specs/bdd`
59
61
  - `prd_dir` = `specs/prd`
60
62
  - `refinement_dir` = `.agent/review`
63
+ - `qc_dir` = `docs`
64
+ - `qc_skills_dir` = `.agent/skills/qc`
61
65
  - `product_definitions_dir` = `specs/product-definition`
62
66
  - `domain_knowledge_dir` = `specs/domain-knowledge`
63
67
  - `business_dictionary` = `specs/domain-knowledge/business-dictionary.md`
@@ -83,7 +87,7 @@ If `services` section is present:
83
87
  - If `$ARGUMENTS` contains a path, extract the segment after `prd_dir`
84
88
 
85
89
  **2. Route to service** — if active domain matches a key in `services`:
86
- - Override `paths.specs_dir` → `services.{domain}.specs_dir`
90
+ - 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.
87
91
  - 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.
88
92
  - Store `active_service` = `services.{domain}.path`
89
93
  - Store `active_service_module` = `services.{domain}.module`
@@ -94,6 +98,7 @@ If `services` section is present:
94
98
  - Set `active_service = unresolved`
95
99
 
96
100
  **4. Spec source auto-override** — if `setup.spec_source` is set AND the corresponding path was not already explicitly set in `paths:`:
101
+ - 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`.)*
97
102
  - Override `paths.prd_dir` → `{spec_source}/specs/prd`
98
103
  - Override `paths.design_spec_dir` → `{spec_source}/specs/design-spec`
99
104
  - 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.)*
@@ -102,8 +107,10 @@ If `services` section is present:
102
107
  - Override `paths.core_entities` → `{spec_source}/specs/domain-knowledge/core-entities.md`
103
108
  - Override `paths.bug_reports_dir` → `{spec_source}/feedback/bug-reports`
104
109
  - Override `paths.bdd_proposals_dir` → `{spec_source}/feedback/bdd-proposals`
110
+ - Override `paths.prd_change_requests_dir` → `{spec_source}/feedback/prd-change-requests`
111
+ - 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`.)*
105
112
 
106
- > **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.
113
+ > **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.
107
114
 
108
115
  ---
109
116
 
@@ -123,12 +130,12 @@ When `active_service` has been resolved to a real path in Step 1.5 (e.g., `user-
123
130
  |----------|--------|
124
131
  | `conventions.test_command` | service's `conventions.test_command` |
125
132
  | `conventions.build_command` | service's `conventions.build_command` |
126
- | `paths.trace_dir` | `{active_service}/{service paths.trace_dir}` default: `{active_service}/.trace` |
127
- | `paths.specs_dir` | `{active_service}/{service paths.specs_dir}` (if set in service config, else keep Step 1.5 override) |
133
+ | `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`). |
134
+ | `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. |
128
135
 
129
136
  **3. Store** `service_root = {active_service}` as the working directory anchor for all downstream commands:
130
137
  - Shell commands (`/dev-run-test`, `/dev-gen-test`) run **from within** `service_root`
131
- - File write operations (test files, trace TSVs) use paths **relative to** `service_root`
138
+ - **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/`).
132
139
 
133
140
  **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).
134
141
 
@@ -461,6 +468,36 @@ Output Artifacts:
461
468
 
462
469
  If no files were written (e.g., review or analysis commands) → write `Output Artifacts: none (read-only)`.
463
470
 
471
+ ## Pipeline Position
472
+
473
+ Print a one-line map of the pipeline with the CURRENT command's phase marked `◀ bạn ở đây`,
474
+ so the user always sees where this command sits in the end-to-end flow:
475
+
476
+ ```
477
+ Discovery → PRD → [Design Spec] → BDD → Tech Design → Code → Dev Self-Check → QC → Trace Audit
478
+ ```
479
+
480
+ Find the current command in this phase legend and mark **its** phase in the map above:
481
+
482
+ | Phase | Commands |
483
+ |-------|----------|
484
+ | Discovery | `/define-product` |
485
+ | PRD | `/generate-prd` · `/refine-prd` · `/review-context` (PRD) |
486
+ | Design Spec | `/generate-design-spec` |
487
+ | BDD | `/generate-bdd` · `/review-context` (BDD) |
488
+ | Tech Design | `/generate-tech-docs` · `/map-testids` · `/review-tech-docs` |
489
+ | Code | `/generate-code` · `/review-code` |
490
+ | Dev Self-Check | `/dev-gen-test` · `/dev-run-test` · `/dev-smoke-test` |
491
+ | QC | `/qc-analyze` · `/qc-plan` · `/qc-design-test` · `/qc-review` · `/qc-run-test` · `/qc-report` |
492
+ | Trace Audit | `/validate-traces` |
493
+
494
+ For a **review command**, also append the 3-step review loop with the current step marked, e.g.:
495
+ `Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume`.
496
+
497
+ **Cross-cutting commands** (`/sync`, `/update-framework`, `/fix-bug`, `/debug`, `/learn`,
498
+ `/report-bug`, `/propose-scenario`, `/generate-spec-manifest`) sit outside the linear pipeline —
499
+ **omit the Pipeline line entirely** for these (do not force-fit them onto the map).
500
+
464
501
  ## Next Command Suggestion
465
502
 
466
503
  Suggest the logical next command based on workflow phase:
@@ -502,8 +539,11 @@ Suggest the logical next command based on workflow phase:
502
539
  Format the footer as:
503
540
  ```
504
541
  ---
505
- Status : {badge}
542
+ Status : {badge}
506
543
  {Output Artifacts block}
507
- Next : {suggested command with example arguments}
544
+ Pipeline : Discovery PRD [BDD ◀ bạn ở đây] → Tech Design → Code → Dev Self-Check → QC → Trace Audit
545
+ (review cmd) Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume
546
+ Next : {suggested command with example arguments}
508
547
  ```
548
+ *(Omit the `Pipeline` line for cross-cutting commands listed above.)*
509
549
 
@@ -180,6 +180,36 @@ Output Artifacts:
180
180
 
181
181
  If no files were written (e.g., review or analysis commands) → write `Output Artifacts: none (read-only)`.
182
182
 
183
+ ## Pipeline Position
184
+
185
+ Print a one-line map of the pipeline with the CURRENT command's phase marked `◀ bạn ở đây`,
186
+ so the user always sees where this command sits in the end-to-end flow:
187
+
188
+ ```
189
+ Discovery → PRD → [Design Spec] → BDD → Tech Design → Code → Dev Self-Check → QC → Trace Audit
190
+ ```
191
+
192
+ Find the current command in this phase legend and mark **its** phase in the map above:
193
+
194
+ | Phase | Commands |
195
+ |-------|----------|
196
+ | Discovery | `/define-product` |
197
+ | PRD | `/generate-prd` · `/refine-prd` · `/review-context` (PRD) |
198
+ | Design Spec | `/generate-design-spec` |
199
+ | BDD | `/generate-bdd` · `/review-context` (BDD) |
200
+ | Tech Design | `/generate-tech-docs` · `/map-testids` · `/review-tech-docs` |
201
+ | Code | `/generate-code` · `/review-code` |
202
+ | Dev Self-Check | `/dev-gen-test` · `/dev-run-test` · `/dev-smoke-test` |
203
+ | QC | `/qc-analyze` · `/qc-plan` · `/qc-design-test` · `/qc-review` · `/qc-run-test` · `/qc-report` |
204
+ | Trace Audit | `/validate-traces` |
205
+
206
+ For a **review command**, also append the 3-step review loop with the current step marked, e.g.:
207
+ `Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume`.
208
+
209
+ **Cross-cutting commands** (`/sync`, `/update-framework`, `/fix-bug`, `/debug`, `/learn`,
210
+ `/report-bug`, `/propose-scenario`, `/generate-spec-manifest`) sit outside the linear pipeline —
211
+ **omit the Pipeline line entirely** for these (do not force-fit them onto the map).
212
+
183
213
  ## Next Command Suggestion
184
214
 
185
215
  Suggest the logical next command based on workflow phase:
@@ -221,10 +251,13 @@ Suggest the logical next command based on workflow phase:
221
251
  Format the footer as:
222
252
  ```
223
253
  ---
224
- Status : {badge}
254
+ Status : {badge}
225
255
  {Output Artifacts block}
226
- Next : {suggested command with example arguments}
256
+ Pipeline : Discovery PRD [BDD ◀ bạn ở đây] → Tech Design → Code → Dev Self-Check → QC → Trace Audit
257
+ (review cmd) Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume
258
+ Next : {suggested command with example arguments}
227
259
  ```
260
+ *(Omit the `Pipeline` line for cross-cutting commands listed above.)*
228
261
 
229
262
 
230
263
  ---
@@ -436,6 +469,36 @@ Output Artifacts:
436
469
 
437
470
  If no files were written (e.g., review or analysis commands) → write `Output Artifacts: none (read-only)`.
438
471
 
472
+ ## Pipeline Position
473
+
474
+ Print a one-line map of the pipeline with the CURRENT command's phase marked `◀ bạn ở đây`,
475
+ so the user always sees where this command sits in the end-to-end flow:
476
+
477
+ ```
478
+ Discovery → PRD → [Design Spec] → BDD → Tech Design → Code → Dev Self-Check → QC → Trace Audit
479
+ ```
480
+
481
+ Find the current command in this phase legend and mark **its** phase in the map above:
482
+
483
+ | Phase | Commands |
484
+ |-------|----------|
485
+ | Discovery | `/define-product` |
486
+ | PRD | `/generate-prd` · `/refine-prd` · `/review-context` (PRD) |
487
+ | Design Spec | `/generate-design-spec` |
488
+ | BDD | `/generate-bdd` · `/review-context` (BDD) |
489
+ | Tech Design | `/generate-tech-docs` · `/map-testids` · `/review-tech-docs` |
490
+ | Code | `/generate-code` · `/review-code` |
491
+ | Dev Self-Check | `/dev-gen-test` · `/dev-run-test` · `/dev-smoke-test` |
492
+ | QC | `/qc-analyze` · `/qc-plan` · `/qc-design-test` · `/qc-review` · `/qc-run-test` · `/qc-report` |
493
+ | Trace Audit | `/validate-traces` |
494
+
495
+ For a **review command**, also append the 3-step review loop with the current step marked, e.g.:
496
+ `Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume`.
497
+
498
+ **Cross-cutting commands** (`/sync`, `/update-framework`, `/fix-bug`, `/debug`, `/learn`,
499
+ `/report-bug`, `/propose-scenario`, `/generate-spec-manifest`) sit outside the linear pipeline —
500
+ **omit the Pipeline line entirely** for these (do not force-fit them onto the map).
501
+
439
502
  ## Next Command Suggestion
440
503
 
441
504
  Suggest the logical next command based on workflow phase:
@@ -477,8 +540,11 @@ Suggest the logical next command based on workflow phase:
477
540
  Format the footer as:
478
541
  ```
479
542
  ---
480
- Status : {badge}
543
+ Status : {badge}
481
544
  {Output Artifacts block}
482
- Next : {suggested command with example arguments}
545
+ Pipeline : Discovery PRD [BDD ◀ bạn ở đây] → Tech Design → Code → Dev Self-Check → QC → Trace Audit
546
+ (review cmd) Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume
547
+ Next : {suggested command with example arguments}
483
548
  ```
549
+ *(Omit the `Pipeline` line for cross-cutting commands listed above.)*
484
550
 
@@ -51,6 +51,10 @@ Mỗi AC gắn mã trace: chức năng + BR-xx để TC sau này map 1-1.
51
51
 
52
52
  ## Output
53
53
 
54
- - Danh sách AC dạng Given/When/Then, có mã trace về chức năng và business rule.
54
+ Ghi vào **mục Acceptance Criteria** của `{paths.qc_dir}/{UC-ID}/REQUIREMENT_ANALYSIS.md`
55
+ (KHÔNG tạo file riêng — qc-analyze chỉ trả 2 file: `REQUIREMENT_ANALYSIS.md` + `DOC_GAPS.md`):
56
+
57
+ - Danh sách AC dạng Given/When/Then, có mã trace về chức năng, business rule (BR-xx)
58
+ và scenario chính thức `{UC-ID}-SC{N}` của `.feature`.
55
59
  - Bảng ma trận: BR / chức năng × AC để xác nhận không bỏ sót.
56
60
  - Đây là đầu vào trực tiếp cho `qa-designer` (mỗi AC → ≥1 test case) và `qa-reviewer` (đối chiếu coverage).
@@ -49,7 +49,11 @@ Với rule có nhiều điều kiện kết hợp → gợi ý dựng **Decision
49
49
 
50
50
  ## Output
51
51
 
52
+ Ghi vào **mục Business Rules** của `{paths.qc_dir}/{UC-ID}/REQUIREMENT_ANALYSIS.md`
53
+ (KHÔNG tạo file riêng — qc-analyze chỉ trả 2 file: `REQUIREMENT_ANALYSIS.md` + `DOC_GAPS.md`):
54
+
52
55
  - Bảng business rule có ID (BR-xx) để TC trace ngược về.
53
- - Rule MÂU THUẪN / KHÔNG RÕ → ghi vào `DOC_GAPS.md` (loại CONTRADICTORY / AMBIGUOUS,
54
- cột "Ảnh hưởng" trỏ BR-xx) rồi ghi vào `DOC_GAPS.md`.
55
56
  - Gợi ý các rule cần Decision Table / BVA khi sang qa-designer.
57
+
58
+ Rule MÂU THUẪN / KHÔNG RÕ → ghi vào `{paths.qc_dir}/{UC-ID}/DOC_GAPS.md`
59
+ (loại CONTRADICTORY / AMBIGUOUS, cột "Ảnh hưởng" trỏ BR-xx).
@@ -52,9 +52,13 @@ Thể hiện luồng dạng bước tuần tự hoặc sơ đồ text:
52
52
 
53
53
  ## Output
54
54
 
55
+ Ghi vào **mục Data Flow** của `{paths.qc_dir}/{UC-ID}/REQUIREMENT_ANALYSIS.md`
56
+ (KHÔNG tạo file riêng — qc-analyze chỉ trả 2 file: `REQUIREMENT_ANALYSIS.md` + `DOC_GAPS.md`):
57
+
55
58
  - Sơ đồ/list luồng dữ liệu cho mỗi kịch bản chính.
56
59
  - Danh sách integration point + state change + failure point.
57
- - Chặng nào luồng/hành vi chưa rõ (vd lỗi xử lý ra sao, retry, partial commit) →
58
- ghi vào `DOC_GAPS.md` (loại MISSING / OPEN QUESTION).
59
60
  - Gợi ý loại test cần cho từng điểm (gui-feature / integration / e2e) khi sang qa-designer.
60
61
  - Dữ liệu/trạng thái cần chuẩn bị & cleanup → đầu vào fixture cho qa-runner.
62
+
63
+ Chặng nào luồng/hành vi chưa rõ (vd lỗi xử lý ra sao, retry, partial commit) →
64
+ ghi vào `{paths.qc_dir}/{UC-ID}/DOC_GAPS.md` (loại MISSING / OPEN QUESTION).
@@ -46,12 +46,16 @@ F. GIẢ ĐỊNH & CÂU HỎI MỞ: điều suy ra được vs điều cần dev
46
46
 
47
47
  ## Output
48
48
 
49
- File Markdown tả yêu cầu cấu trúc (đặt trong `docs/<project>/<feature>/`):
49
+ ⚠️ `/qc-analyze` chỉ ghi **ĐÚNG 2 FILE** cho mỗi UC, đặt trong thư mục QC **lộ ra ngoài**
50
+ `{paths.qc_dir}/{UC-ID}/` (mặc định `docs/{UC-ID}/` — KHÔNG để trong `.agent/` ẩn):
51
+ `REQUIREMENT_ANALYSIS.md` + `DOC_GAPS.md`. KHÔNG tách mỗi bước phân tích thành file riêng.
52
+
53
+ Phần spec-breakdown là **mục đầu tiên** của `REQUIREMENT_ANALYSIS.md`:
50
54
  - Bảng chức năng + input/output/constraint
51
55
  - Sơ đồ/list luồng chính & phụ
52
56
  - Danh sách giả định và câu hỏi mở (đánh dấu rõ điều CHƯA chắc)
53
57
 
54
- Đồng thời ghi mọi khoảng trống phát hiện vào `docs/<project>/<feature>/DOC_GAPS.md`
55
- (theo `.claude/skills/qa-analyst/DOC_GAPS.template.md`), mỗi gap có ID `GAP-xx`.
58
+ Đồng thời ghi mọi khoảng trống phát hiện vào `{paths.qc_dir}/{UC-ID}/DOC_GAPS.md`
59
+ (theo `{paths.qc_skills_dir}/qa-analyst/DOC_GAPS.template.md`), mỗi gap có ID `GAP-xx`.
56
60
 
57
61
  Kết thúc bằng gợi ý: feature đã đủ rõ để chuyển sang `qa-planner` (phân tích rủi ro) chưa.
@@ -37,5 +37,5 @@ Mỗi journey → 1 TC bám Format; Expected = chuỗi verify point; chuẩn b
37
37
  **Journey phụ thuộc gap vẫn viết + 🚫 Block: GAP-xx**, định tuyến ghi "dự kiến theo BR". Trace BR.
38
38
 
39
39
  ## Output
40
- File TC e2e (hoặc nhóm E2E trong file feature) trong `docs/<project>/<feature>/`.
40
+ File TC e2e (hoặc nhóm E2E trong file feature) trong `{paths.qc_dir}/{UC-ID}/test-cases/`.
41
41
  In bảng `E2E-ID | Journey | Pri | Trace | Block` + bảng TC block. Bàn giao `qa-reviewer`.