@edupia-tutor/spec-driven-docs 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 (339) hide show
  1. package/bin/build.js +230 -0
  2. package/bin/index.js +598 -0
  3. package/commands/debug.md +830 -0
  4. package/commands/debug.tmpl +257 -0
  5. package/commands/define-product.md +652 -0
  6. package/commands/define-product.tmpl +158 -0
  7. package/commands/dev-gen-test.md +1010 -0
  8. package/commands/dev-gen-test.tmpl +490 -0
  9. package/commands/dev-run-test.md +744 -0
  10. package/commands/dev-run-test.tmpl +224 -0
  11. package/commands/dev-smoke-test.md +711 -0
  12. package/commands/dev-smoke-test.tmpl +217 -0
  13. package/commands/fix-bug.md +744 -0
  14. package/commands/fix-bug.tmpl +171 -0
  15. package/commands/generate-bdd.md +1054 -0
  16. package/commands/generate-bdd.tmpl +534 -0
  17. package/commands/generate-code.md +869 -0
  18. package/commands/generate-code.tmpl +349 -0
  19. package/commands/generate-design-spec.md +958 -0
  20. package/commands/generate-design-spec.tmpl +464 -0
  21. package/commands/generate-prd.md +748 -0
  22. package/commands/generate-prd.tmpl +254 -0
  23. package/commands/generate-spec-manifest.md +658 -0
  24. package/commands/generate-spec-manifest.tmpl +164 -0
  25. package/commands/generate-tech-docs.md +849 -0
  26. package/commands/generate-tech-docs.tmpl +355 -0
  27. package/commands/learn.md +636 -0
  28. package/commands/learn.tmpl +63 -0
  29. package/commands/map-testids.md +575 -0
  30. package/commands/map-testids.tmpl +81 -0
  31. package/commands/propose-scenario.md +623 -0
  32. package/commands/propose-scenario.tmpl +129 -0
  33. package/commands/qc-analyze.md +580 -0
  34. package/commands/qc-analyze.tmpl +86 -0
  35. package/commands/qc-design-test.md +562 -0
  36. package/commands/qc-design-test.tmpl +68 -0
  37. package/commands/qc-plan.md +543 -0
  38. package/commands/qc-plan.tmpl +49 -0
  39. package/commands/qc-report.md +554 -0
  40. package/commands/qc-report.tmpl +60 -0
  41. package/commands/qc-review.md +547 -0
  42. package/commands/qc-review.tmpl +53 -0
  43. package/commands/qc-run-test.md +604 -0
  44. package/commands/qc-run-test.tmpl +84 -0
  45. package/commands/refine-prd.md +772 -0
  46. package/commands/refine-prd.tmpl +140 -0
  47. package/commands/report-bug.md +639 -0
  48. package/commands/report-bug.tmpl +145 -0
  49. package/commands/review-code.md +677 -0
  50. package/commands/review-code.tmpl +104 -0
  51. package/commands/review-context.md +1047 -0
  52. package/commands/review-context.tmpl +415 -0
  53. package/commands/review-tech-docs.md +811 -0
  54. package/commands/review-tech-docs.tmpl +317 -0
  55. package/commands/setup-ai-first.md +545 -0
  56. package/commands/setup-ai-first.tmpl +358 -0
  57. package/commands/sync.md +451 -0
  58. package/commands/sync.tmpl +351 -0
  59. package/commands/update-framework.md +251 -0
  60. package/commands/update-framework.tmpl +151 -0
  61. package/commands/validate-traces.md +842 -0
  62. package/commands/validate-traces.tmpl +348 -0
  63. package/core/FRAMEWORK_VERSION +1 -0
  64. package/core/commands/debug.md +830 -0
  65. package/core/commands/define-product.md +652 -0
  66. package/core/commands/dev-gen-test.md +1010 -0
  67. package/core/commands/dev-run-test.md +744 -0
  68. package/core/commands/dev-smoke-test.md +711 -0
  69. package/core/commands/fix-bug.md +744 -0
  70. package/core/commands/generate-bdd.md +1054 -0
  71. package/core/commands/generate-code.md +869 -0
  72. package/core/commands/generate-design-spec.md +958 -0
  73. package/core/commands/generate-prd.md +748 -0
  74. package/core/commands/generate-spec-manifest.md +658 -0
  75. package/core/commands/generate-tech-docs.md +849 -0
  76. package/core/commands/learn.md +636 -0
  77. package/core/commands/map-testids.md +575 -0
  78. package/core/commands/propose-scenario.md +623 -0
  79. package/core/commands/qc-analyze.md +580 -0
  80. package/core/commands/qc-design-test.md +562 -0
  81. package/core/commands/qc-plan.md +543 -0
  82. package/core/commands/qc-report.md +554 -0
  83. package/core/commands/qc-review.md +547 -0
  84. package/core/commands/qc-run-test.md +604 -0
  85. package/core/commands/refine-prd.md +772 -0
  86. package/core/commands/report-bug.md +639 -0
  87. package/core/commands/review-code.md +677 -0
  88. package/core/commands/review-context.md +1047 -0
  89. package/core/commands/review-tech-docs.md +811 -0
  90. package/core/commands/setup-ai-first.md +545 -0
  91. package/core/commands/sync.md +451 -0
  92. package/core/commands/update-framework.md +251 -0
  93. package/core/commands/validate-traces.md +842 -0
  94. package/core/hooks/data-guard.js +141 -0
  95. package/core/hooks/settings.json +18 -0
  96. package/core/modules/android-compose/module.yaml +13 -0
  97. package/core/modules/android-compose/stack-profile.yaml +57 -0
  98. package/core/modules/angular/architecture-snippets/component-patterns.md +187 -0
  99. package/core/modules/angular/module.yaml +6 -0
  100. package/core/modules/angular/stack-profile.yaml +38 -0
  101. package/core/modules/context-engineering/architecture-snippets/context-design.md +119 -0
  102. package/core/modules/context-engineering/module.yaml +9 -0
  103. package/core/modules/context-engineering/stack-profile.yaml +61 -0
  104. package/core/modules/dotnet/architecture-snippets/clean-arch.md +160 -0
  105. package/core/modules/dotnet/module.yaml +6 -0
  106. package/core/modules/dotnet/stack-profile.yaml +50 -0
  107. package/core/modules/flutter/module.yaml +14 -0
  108. package/core/modules/flutter/stack-profile.yaml +59 -0
  109. package/core/modules/golang/architecture-snippets/domain-layout.md +283 -0
  110. package/core/modules/golang/module.yaml +6 -0
  111. package/core/modules/golang/stack-profile.yaml +40 -0
  112. package/core/modules/ios-swiftui/module.yaml +13 -0
  113. package/core/modules/ios-swiftui/stack-profile.yaml +55 -0
  114. package/core/modules/java-spring/architecture-snippets/layered-arch.md +201 -0
  115. package/core/modules/java-spring/module.yaml +15 -0
  116. package/core/modules/java-spring/stack-profile.yaml +28 -0
  117. package/core/modules/nextjs/architecture-snippets/app-router-patterns.md +269 -0
  118. package/core/modules/nextjs/module.yaml +14 -0
  119. package/core/modules/nextjs/stack-profile.yaml +74 -0
  120. package/core/modules/nuxt/module.yaml +14 -0
  121. package/core/modules/nuxt/stack-profile.yaml +58 -0
  122. package/core/modules/php-laravel/architecture-snippets/service-repository.md +302 -0
  123. package/core/modules/php-laravel/module.yaml +15 -0
  124. package/core/modules/php-laravel/stack-profile.yaml +56 -0
  125. package/core/modules/qc-playwright/stack-profile.yaml +66 -0
  126. package/core/modules/react/architecture-snippets/hooks-query-patterns.md +254 -0
  127. package/core/modules/react/module.yaml +14 -0
  128. package/core/modules/react/stack-profile.yaml +63 -0
  129. package/core/modules/react-native/module.yaml +14 -0
  130. package/core/modules/react-native/stack-profile.yaml +56 -0
  131. package/core/modules/vue/module.yaml +14 -0
  132. package/core/modules/vue/stack-profile.yaml +65 -0
  133. package/core/rules/data-protection.md +80 -0
  134. package/core/rules/workflow.md +44 -0
  135. package/core/skills/code/SKILL.md +770 -0
  136. package/core/skills/debug/SKILL.md +869 -0
  137. package/core/skills/design-spec/SKILL.md +589 -0
  138. package/core/skills/discovery/SKILL.md +554 -0
  139. package/core/skills/prd/SKILL.md +562 -0
  140. package/core/skills/qc/qa-analyst/DOC_GAPS.template.md +63 -0
  141. package/core/skills/qc/qa-analyst/acceptance-criteria.md +60 -0
  142. package/core/skills/qc/qa-analyst/business-rules.md +59 -0
  143. package/core/skills/qc/qa-analyst/data-flow.md +64 -0
  144. package/core/skills/qc/qa-analyst/spec-breakdown.md +61 -0
  145. package/core/skills/qc/qa-designer/e2e/journey.md +41 -0
  146. package/core/skills/qc/qa-designer/exploratory/charter.md +68 -0
  147. package/core/skills/qc/qa-designer/exploratory/explore-to-functional.md +43 -0
  148. package/core/skills/qc/qa-designer/functional/api.md +45 -0
  149. package/core/skills/qc/qa-designer/functional/gui-feature.md +46 -0
  150. package/core/skills/qc/qa-designer/functional/gui-screen.md +52 -0
  151. package/core/skills/qc/qa-designer/integration/api.md +42 -0
  152. package/core/skills/qc/qa-designer/integration/db.md +39 -0
  153. package/core/skills/qc/qa-designer/integration/gui.md +40 -0
  154. package/core/skills/qc/qa-designer/integration/kafka.md +40 -0
  155. package/core/skills/qc/qa-designer/non-functional.md +40 -0
  156. package/core/skills/qc/qa-planner/test-plan.md +120 -0
  157. package/core/skills/qc/qa-reviewer/script/e2e.md +87 -0
  158. package/core/skills/qc/qa-reviewer/script/exploratory.md +45 -0
  159. package/core/skills/qc/qa-reviewer/script/functional.md +101 -0
  160. package/core/skills/qc/qa-reviewer/script/integration.md +91 -0
  161. package/core/skills/qc/qa-reviewer/script/non-functional.md +126 -0
  162. package/core/skills/qc/qa-reviewer/test-case/e2e.md +73 -0
  163. package/core/skills/qc/qa-reviewer/test-case/exploratory.md +43 -0
  164. package/core/skills/qc/qa-reviewer/test-case/functional.md +76 -0
  165. package/core/skills/qc/qa-reviewer/test-case/integration.md +69 -0
  166. package/core/skills/qc/qa-reviewer/test-case/non-functional.md +73 -0
  167. package/core/skills/qc/qa-runner/e2e.md +49 -0
  168. package/core/skills/qc/qa-runner/exploratory/session.md +36 -0
  169. package/core/skills/qc/qa-runner/functional/api.md +35 -0
  170. package/core/skills/qc/qa-runner/functional/gui-feature.md +51 -0
  171. package/core/skills/qc/qa-runner/functional/gui-screen.md +55 -0
  172. package/core/skills/qc/qa-runner/integration.md +47 -0
  173. package/core/skills/qc/qa-runner/non-functional.md +49 -0
  174. package/core/skills/qc/qa-runner/report/report.md +37 -0
  175. package/core/skills/setup-ai-first/SKILL.md +216 -0
  176. package/core/skills/spec/SKILL.md +461 -0
  177. package/core/skills/test/SKILL.md +1297 -0
  178. package/core/steps/capture-lesson.md +79 -0
  179. package/core/steps/context-loader.md +307 -0
  180. package/core/steps/gate.md +87 -0
  181. package/core/steps/report-footer.md +100 -0
  182. package/core/steps/review-fanout.md +138 -0
  183. package/core/steps/spawn-agent.md +124 -0
  184. package/core/steps/trace-mirror.md +26 -0
  185. package/core/templates/architecture.template.md +113 -0
  186. package/core/templates/design-spec.template.md +217 -0
  187. package/core/templates/feature.template +259 -0
  188. package/core/templates/platform-guide.template.md +145 -0
  189. package/core/templates/prd.template.md +327 -0
  190. package/core/templates/product-definition.template.md +168 -0
  191. package/core/templates/project-context.yaml +161 -0
  192. package/docs/01-getting-started/README.md +19 -0
  193. package/docs/01-getting-started/core-concepts.md +102 -0
  194. package/docs/01-getting-started/installation.md +156 -0
  195. package/docs/01-getting-started/quickstart.md +85 -0
  196. package/docs/02-guides/README.md +26 -0
  197. package/docs/02-guides/developer/README.md +46 -0
  198. package/docs/02-guides/developer/bdd-and-trace.md +125 -0
  199. package/docs/02-guides/developer/commands.md +76 -0
  200. package/docs/02-guides/developer/pr-checklist.md +15 -0
  201. package/docs/02-guides/developer/scenarios.md +460 -0
  202. package/docs/02-guides/developer/workflow.md +121 -0
  203. package/docs/02-guides/product-owner/README.md +79 -0
  204. package/docs/02-guides/product-owner/commands.md +30 -0
  205. package/docs/02-guides/product-owner/handoff-checklist.md +42 -0
  206. package/docs/02-guides/product-owner/prd-writing-rules.md +45 -0
  207. package/docs/02-guides/product-owner/scenarios.md +436 -0
  208. package/docs/02-guides/tester/README.md +75 -0
  209. package/docs/02-guides/tester/bug-reporting.md +117 -0
  210. package/docs/02-guides/tester/qc-automation.md +165 -0
  211. package/docs/02-guides/tester/reading-specs.md +79 -0
  212. package/docs/02-guides/tester/scenarios.md +186 -0
  213. package/docs/02-guides/tester/spec-manifest.md +130 -0
  214. package/docs/02-guides/tester/test-checklist.md +31 -0
  215. package/docs/02-guides/tester/workflow.md +77 -0
  216. package/docs/03-concepts/README.md +19 -0
  217. package/docs/03-concepts/architecture.md +248 -0
  218. package/docs/03-concepts/pipeline.md +274 -0
  219. package/docs/03-concepts/traceability.md +149 -0
  220. package/docs/04-operations/README.md +33 -0
  221. package/docs/04-operations/bug-flow.md +362 -0
  222. package/docs/04-operations/publishing.md +137 -0
  223. package/docs/04-operations/sync-and-update.md +522 -0
  224. package/docs/05-reference/README.md +32 -0
  225. package/docs/05-reference/command-cheatsheet.md +147 -0
  226. package/docs/05-reference/commands.md +232 -0
  227. package/docs/05-reference/modules.md +110 -0
  228. package/docs/05-reference/trace-schema.md +153 -0
  229. package/docs/README.md +49 -0
  230. package/hooks/data-guard.js +141 -0
  231. package/hooks/settings.json +18 -0
  232. package/modules/android-compose/module.yaml +13 -0
  233. package/modules/android-compose/stack-profile.yaml +57 -0
  234. package/modules/angular/architecture-snippets/component-patterns.md +187 -0
  235. package/modules/angular/module.yaml +6 -0
  236. package/modules/angular/stack-profile.yaml +38 -0
  237. package/modules/context-engineering/architecture-snippets/context-design.md +119 -0
  238. package/modules/context-engineering/module.yaml +9 -0
  239. package/modules/context-engineering/stack-profile.yaml +61 -0
  240. package/modules/dotnet/architecture-snippets/clean-arch.md +160 -0
  241. package/modules/dotnet/module.yaml +6 -0
  242. package/modules/dotnet/stack-profile.yaml +50 -0
  243. package/modules/flutter/module.yaml +14 -0
  244. package/modules/flutter/stack-profile.yaml +59 -0
  245. package/modules/golang/architecture-snippets/domain-layout.md +283 -0
  246. package/modules/golang/module.yaml +6 -0
  247. package/modules/golang/stack-profile.yaml +40 -0
  248. package/modules/ios-swiftui/module.yaml +13 -0
  249. package/modules/ios-swiftui/stack-profile.yaml +55 -0
  250. package/modules/java-spring/architecture-snippets/layered-arch.md +201 -0
  251. package/modules/java-spring/module.yaml +15 -0
  252. package/modules/java-spring/stack-profile.yaml +28 -0
  253. package/modules/nextjs/architecture-snippets/app-router-patterns.md +269 -0
  254. package/modules/nextjs/module.yaml +14 -0
  255. package/modules/nextjs/stack-profile.yaml +74 -0
  256. package/modules/nuxt/module.yaml +14 -0
  257. package/modules/nuxt/stack-profile.yaml +58 -0
  258. package/modules/php-laravel/architecture-snippets/service-repository.md +302 -0
  259. package/modules/php-laravel/module.yaml +15 -0
  260. package/modules/php-laravel/stack-profile.yaml +56 -0
  261. package/modules/qc-playwright/stack-profile.yaml +66 -0
  262. package/modules/react/architecture-snippets/hooks-query-patterns.md +254 -0
  263. package/modules/react/module.yaml +14 -0
  264. package/modules/react/stack-profile.yaml +63 -0
  265. package/modules/react-native/module.yaml +14 -0
  266. package/modules/react-native/stack-profile.yaml +56 -0
  267. package/modules/vue/module.yaml +14 -0
  268. package/modules/vue/stack-profile.yaml +65 -0
  269. package/package.json +49 -0
  270. package/rules/data-protection.md +80 -0
  271. package/rules/workflow.md +44 -0
  272. package/scripts/init.sh +49 -0
  273. package/scripts/migrate-specs.js +256 -0
  274. package/scripts/upgrade.sh +94 -0
  275. package/skills/code/SKILL.md +770 -0
  276. package/skills/code/SKILL.tmpl +176 -0
  277. package/skills/debug/SKILL.md +869 -0
  278. package/skills/debug/SKILL.tmpl +262 -0
  279. package/skills/design-spec/SKILL.md +589 -0
  280. package/skills/design-spec/SKILL.tmpl +95 -0
  281. package/skills/discovery/SKILL.md +554 -0
  282. package/skills/discovery/SKILL.tmpl +147 -0
  283. package/skills/prd/SKILL.md +562 -0
  284. package/skills/prd/SKILL.tmpl +188 -0
  285. package/skills/qc/qa-analyst/DOC_GAPS.template.md +63 -0
  286. package/skills/qc/qa-analyst/acceptance-criteria.md +60 -0
  287. package/skills/qc/qa-analyst/business-rules.md +59 -0
  288. package/skills/qc/qa-analyst/data-flow.md +64 -0
  289. package/skills/qc/qa-analyst/spec-breakdown.md +61 -0
  290. package/skills/qc/qa-designer/e2e/journey.md +41 -0
  291. package/skills/qc/qa-designer/exploratory/charter.md +68 -0
  292. package/skills/qc/qa-designer/exploratory/explore-to-functional.md +43 -0
  293. package/skills/qc/qa-designer/functional/api.md +45 -0
  294. package/skills/qc/qa-designer/functional/gui-feature.md +46 -0
  295. package/skills/qc/qa-designer/functional/gui-screen.md +52 -0
  296. package/skills/qc/qa-designer/integration/api.md +42 -0
  297. package/skills/qc/qa-designer/integration/db.md +39 -0
  298. package/skills/qc/qa-designer/integration/gui.md +40 -0
  299. package/skills/qc/qa-designer/integration/kafka.md +40 -0
  300. package/skills/qc/qa-designer/non-functional.md +40 -0
  301. package/skills/qc/qa-planner/test-plan.md +120 -0
  302. package/skills/qc/qa-reviewer/script/e2e.md +87 -0
  303. package/skills/qc/qa-reviewer/script/exploratory.md +45 -0
  304. package/skills/qc/qa-reviewer/script/functional.md +101 -0
  305. package/skills/qc/qa-reviewer/script/integration.md +91 -0
  306. package/skills/qc/qa-reviewer/script/non-functional.md +126 -0
  307. package/skills/qc/qa-reviewer/test-case/e2e.md +73 -0
  308. package/skills/qc/qa-reviewer/test-case/exploratory.md +43 -0
  309. package/skills/qc/qa-reviewer/test-case/functional.md +76 -0
  310. package/skills/qc/qa-reviewer/test-case/integration.md +69 -0
  311. package/skills/qc/qa-reviewer/test-case/non-functional.md +73 -0
  312. package/skills/qc/qa-runner/e2e.md +49 -0
  313. package/skills/qc/qa-runner/exploratory/session.md +36 -0
  314. package/skills/qc/qa-runner/functional/api.md +35 -0
  315. package/skills/qc/qa-runner/functional/gui-feature.md +51 -0
  316. package/skills/qc/qa-runner/functional/gui-screen.md +55 -0
  317. package/skills/qc/qa-runner/integration.md +47 -0
  318. package/skills/qc/qa-runner/non-functional.md +49 -0
  319. package/skills/qc/qa-runner/report/report.md +37 -0
  320. package/skills/setup-ai-first/SKILL.md +216 -0
  321. package/skills/setup-ai-first/SKILL.tmpl +116 -0
  322. package/skills/spec/SKILL.md +461 -0
  323. package/skills/spec/SKILL.tmpl +174 -0
  324. package/skills/test/SKILL.md +1297 -0
  325. package/skills/test/SKILL.tmpl +296 -0
  326. package/steps/capture-lesson.md +79 -0
  327. package/steps/context-loader.md +307 -0
  328. package/steps/gate.md +87 -0
  329. package/steps/report-footer.md +100 -0
  330. package/steps/review-fanout.md +138 -0
  331. package/steps/spawn-agent.md +124 -0
  332. package/steps/trace-mirror.md +26 -0
  333. package/templates/architecture.template.md +113 -0
  334. package/templates/design-spec.template.md +217 -0
  335. package/templates/feature.template +259 -0
  336. package/templates/platform-guide.template.md +145 -0
  337. package/templates/prd.template.md +327 -0
  338. package/templates/product-definition.template.md +168 -0
  339. package/templates/project-context.yaml +161 -0
@@ -0,0 +1,562 @@
1
+ ---
2
+ description: Generates a PRD from a product definition, or analyzes an existing PRD through 4 review lenses (QA, DEV, SA, PO) to find gaps and risks. Trigger when: "/generate-prd", "/refine-prd", "tạo PRD", "generate PRD", "phân tích PRD", "review PRD", "refine PRD", "PRD có vấn đề gì không", "check PRD quality".
3
+ ---
4
+
5
+ # PRD Skills — Generate & Refine
6
+
7
+ This skill handles two commands: `/generate-prd` to create a PRD, and `/refine-prd` to analyze it for gaps.
8
+
9
+ ---
10
+
11
+ ## /generate-prd — Generate Product Requirements Document
12
+
13
+ ### Gate
14
+
15
+ <!-- Directory: specs/product-definition/**/*.md -->
16
+ # Gate — Universal Entry Procedure
17
+
18
+ Every command must execute this gate before proceeding with its specific logic.
19
+
20
+ ## Step 0 — Sub-Agent Mode Check
21
+
22
+ Before anything else, check if `$ARGUMENTS` is a JSON payload from an orchestrator:
23
+
24
+ 1. Attempt to parse `$ARGUMENTS` as JSON.
25
+ 2. If it parses successfully **and** contains `"_agent_mode": true`:
26
+ - **Skip Steps 1, 2, and 3 of this Gate entirely.**
27
+ - Set target file = `payload.target_file`
28
+ - Set loaded context = `payload.context` (do NOT run context-loader.md)
29
+ - Set UC scope = `payload.uc_id` (process only this UC)
30
+ - Set line range = `payload.uc_section` (read only that PRD section)
31
+ - Proceed directly to the command-specific logic.
32
+ 3. If `$ARGUMENTS` is not JSON or `_agent_mode` is absent → continue to Step 1 (normal mode).
33
+
34
+ ## Step 0-B — Model Check
35
+
36
+ *Skip this step if `_agent_mode: true` (sub-agent — orchestrator already validated).*
37
+
38
+ Complex generation and review commands require strong reasoning.
39
+ Using a smaller model risks missed edge cases, incomplete spec analysis, and architecture violations.
40
+
41
+ Display and wait for response:
42
+
43
+ ```
44
+ ⚙️ MODEL CHECK
45
+ ──────────────────────────────────────────────────────────────────
46
+ Recommended : claude-opus-4 (or latest Opus model)
47
+ Why needed : Spec analysis, architecture review, code generation
48
+ require deep reasoning. Smaller models miss edge cases.
49
+
50
+ To switch in Claude Code:
51
+ • Settings → Model → select "claude-opus"
52
+ • or: /model → choose claude-opus
53
+
54
+ Running on claude-opus?
55
+ Y — yes, on claude-opus → proceed
56
+ S — skip check (I accept lower quality risk with current model)
57
+ ──────────────────────────────────────────────────────────────────
58
+ ```
59
+
60
+ - "Y" → proceed to Step 1.
61
+ - "S" → proceed to Step 1 (user accepts risk, add ⚠️ to final report).
62
+ - "N" or anything else → **STOP.** Output: "Please switch to claude-opus, then re-run this command."
63
+
64
+ ## Step 1 — Resolve Target File
65
+
66
+ 1. If `$ARGUMENTS` is provided and points to an existing file → use it directly as the target.
67
+ 2. If `$ARGUMENTS` is a **bare UC-ID / ticket ID / partial name** (no path) → resolve it to a file by globbing the feature-package layout. The `{prd-slug}` is **not known yet**, so use a `*` wildcard for that segment, and a recursive `**` under `bdd/` so the platform subfolders (`bdd/web/`, `bdd/app/`, `bdd/system/`) are all covered:
68
+ - **BDD commands** (target is a `.feature`): `{specs_dir}/{domain}/*/bdd/**/{UC-ID}*.feature` — or `{specs_dir}/*/*/bdd/**/{UC-ID}*.feature` if the domain is also unknown. If a platform/scope is implied by the command (e.g. a system tech-doc needs the `system/` BDD), prefer the match under that platform subfolder.
69
+ - **PRD commands** (target is `prd.md`): `{specs_dir}/{domain}/*/prd.md` (match the feature folder whose id corresponds), else `{specs_dir}/*/*/prd.md`.
70
+ - **tech-docs commands**: `{specs_dir}/{domain}/*/tech-docs/{UC-ID}*-tech-design*.md`.
71
+ - **design-spec commands**: `{specs_dir}/{domain}/*/design-spec/{TICKET-ID}*.md`.
72
+
73
+ Once a file matches: set it as the target **and** record `domain` + `prd_slug` from its path (per the extraction rule in `context-loader.md` Step 1 — `prd_slug` = first segment after `{specs_dir}/{domain}/`). Every path the command later reads or writes (sibling BDD/tech-docs/design-spec/trace) uses **that resolved `prd_slug`**, so all artifacts stay in one feature package. If several files match (e.g. multiple platforms), pick per the command's platform/scope or list them and ask.
74
+ 3. If `$ARGUMENTS` is empty or no match found:
75
+ - List files in the relevant directory for this command (e.g., `specs/*/*/prd.md` for PRD commands, `specs/*/*/bdd/**/*.feature` for BDD commands).
76
+ - Present the list to the user and ask: "Which file do you want to work with? (Enter number or filename)"
77
+ - Wait for user selection before continuing.
78
+
79
+ ## Step 2 — Execute Context Loader
80
+
81
+ Load all project context by following the procedure in `steps/context-loader.md`.
82
+ Store all loaded context in memory for use throughout this command session.
83
+
84
+ ## Step 3 — CHECKPOINT
85
+
86
+ After completing Steps 1 and 2, display a summary and wait for confirmation:
87
+
88
+ ```
89
+ CHECKPOINT
90
+ -----------
91
+ Target : {resolved file path}
92
+ Project : {project.name from project-context.yaml}
93
+ Tech stack : {language} / {framework}
94
+ Module : {module if set, else "not configured"}
95
+ Domains : {comma-separated domain list}
96
+
97
+ Proceed? (Y/N)
98
+ ```
99
+
100
+ Wait for explicit "Y" or "N" from the user before continuing.
101
+ - "Y" → proceed to the command-specific steps below.
102
+ - "N" → stop and ask what the user wants to change.
103
+
104
+
105
+ ### Generate
106
+
107
+ Write `specs/{domain}/{prd-slug}/prd.md`:
108
+
109
+ ```markdown
110
+ # PRD — {Feature Name}
111
+
112
+ **Version**: 1.0
113
+ **Status**: draft
114
+ **Domain**: {domain}
115
+ **Ticket**: {TICKET_PREFIX}-{N} (if available)
116
+ **Date**: {date}
117
+
118
+ ## 1. Problem Statement
119
+ {from product-definition}
120
+
121
+ ## 2. Goals & Non-Goals
122
+
123
+ ### Goals
124
+ - {goal 1}
125
+
126
+ ### Non-Goals
127
+ - {non-goal 1}
128
+
129
+ ## 3. User Stories
130
+
131
+ As a {persona}, I want to {action} so that {benefit}.
132
+
133
+ ## 4. Use Cases
134
+
135
+ | UC-ID | Name | Priority | Description |
136
+ |-------|------|----------|-------------|
137
+ | {DOMAIN}-UC1 | {name} | High | {description} |
138
+
139
+ ## 5. Business Rules
140
+
141
+ | BR-ID | Rule | UC |
142
+ |-------|------|----|
143
+ | BR-1 | {rule} | UC1 |
144
+
145
+ ## 6. Acceptance Criteria
146
+
147
+ ### {DOMAIN}-UC1: {Name}
148
+ - AC1: Given {context}, when {action}, then {result}
149
+
150
+ ## 7. Out of Scope
151
+ {from product-definition}
152
+
153
+ ## 8. Cross-Service Dependencies
154
+ {from product-definition}
155
+
156
+ ## 9. Open Questions
157
+ - [ ] {question requiring clarification}
158
+ ```
159
+
160
+ ### Output
161
+
162
+ ```
163
+ ✅ PRD created: specs/{domain}/{prd-slug}/prd.md
164
+ Status: draft
165
+ ```
166
+
167
+ # Report Footer — Standard Command Output Format
168
+
169
+ Every command report must end with this standard footer section.
170
+
171
+ ## Status Badge
172
+
173
+ Choose one based on outcome:
174
+ - `✅ Complete` — all steps succeeded, no issues found
175
+ - `❌ Failed` — command could not complete due to a blocking error
176
+ - `⚠️ Warnings` — completed with non-blocking issues that should be reviewed
177
+
178
+ ## Output Artifacts
179
+
180
+ List every file created or modified by this command:
181
+ ```
182
+ Output Artifacts:
183
+ {created|updated} {file-path} ({brief description})
184
+ {created|updated} {file-path} ({brief description})
185
+ ```
186
+
187
+ If no files were written (e.g., review or analysis commands) → write `Output Artifacts: none (read-only)`.
188
+
189
+ ## Pipeline Position
190
+
191
+ Print a one-line map of the pipeline with the CURRENT command's phase marked `◀ bạn ở đây`,
192
+ so the user always sees where this command sits in the end-to-end flow:
193
+
194
+ ```
195
+ Discovery → PRD → [Design Spec] → BDD → Tech Design → Code → Dev Self-Check → QC → Trace Audit
196
+ ```
197
+
198
+ Find the current command in this phase legend and mark **its** phase in the map above:
199
+
200
+ | Phase | Commands |
201
+ |-------|----------|
202
+ | Discovery | `/define-product` |
203
+ | PRD | `/generate-prd` · `/refine-prd` · `/review-context` (PRD) |
204
+ | Design Spec | `/generate-design-spec` |
205
+ | BDD | `/generate-bdd` · `/review-context` (BDD) |
206
+ | Tech Design | `/generate-tech-docs` · `/map-testids` · `/review-tech-docs` |
207
+ | Code | `/generate-code` · `/review-code` |
208
+ | Dev Self-Check | `/dev-gen-test` · `/dev-run-test` · `/dev-smoke-test` |
209
+ | QC | `/qc-analyze` · `/qc-plan` · `/qc-design-test` · `/qc-review` · `/qc-run-test` · `/qc-report` |
210
+ | Trace Audit | `/validate-traces` |
211
+
212
+ For a **review command**, also append the 3-step review loop with the current step marked, e.g.:
213
+ `Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume`.
214
+
215
+ **Cross-cutting commands** (`/sync`, `/update-framework`, `/fix-bug`, `/debug`, `/learn`,
216
+ `/report-bug`, `/propose-scenario`, `/generate-spec-manifest`) sit outside the linear pipeline —
217
+ **omit the Pipeline line entirely** for these (do not force-fit them onto the map).
218
+
219
+ ## Next Command Suggestion
220
+
221
+ Suggest the logical next command based on workflow phase:
222
+
223
+ | Current command | Suggest next |
224
+ |-------------------------|-----------------------------------------------|
225
+ | /setup-ai-first | `/define-product` to start your first feature |
226
+ | /define-product | `/generate-prd {product-definition-file}` |
227
+ | /generate-prd | `/refine-prd {prd-file}` then `/review-context {prd-file}` |
228
+ | /refine-prd | Open Review Board → update PRD → `/review-context {prd-file}` |
229
+ | /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (then BDD after sign-off); BE: `/generate-bdd {prd-file}` directly; fix PRD if NEEDS_FIX |
230
+ | /generate-design-spec | Designer review → Figma links confirmed → PO + Designer sign-off → `/generate-bdd {prd-file}` |
231
+ | /generate-bdd | `/review-context {feature-file}` to verify coverage |
232
+ | /review-context (BDD) | `/generate-tech-docs {UC-ID}` if APPROVED; regenerate if NEEDS_FIX |
233
+ | /qc-analyze | `/qc-plan {UC-ID}` (resolve 🔴 blocker gaps first) |
234
+ | /qc-plan | `/qc-design-test {UC-ID}` |
235
+ | /qc-design-test | `/qc-review {UC-ID}` (test-case review) |
236
+ | /qc-review (test-case) | `/qc-run-test {UC-ID}` if APPROVED; fix TCs if NEEDS_FIX |
237
+ | /qc-run-test | `/qc-report {UC-ID}` then `/qc-review {UC-ID}` (script review) |
238
+ | /qc-review (script) | `/qc-report {UC-ID}` then create PR if APPROVED |
239
+ | /qc-report | `/validate-traces {UC-ID}` to refresh Living Docs (qc_status) |
240
+ | /generate-tech-docs | `/review-tech-docs {tech-design-file}` |
241
+ | /review-tech-docs | `/generate-code {feature-file}` if APPROVED; fix doc if NEEDS_FIX |
242
+ | /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/dev-gen-test {UC-ID}` |
243
+ | /dev-gen-test | `/dev-run-test {UC-ID}` |
244
+ | /dev-run-test (passing) | `/review-code {UC-ID}` |
245
+ | /dev-run-test (failing) | `/fix-bug {ticket-id}` or `/debug {error}` |
246
+ | /review-code | `/dev-smoke-test {UC-ID}` or create PR |
247
+ | /dev-smoke-test | Create PR and link to ticket |
248
+ | /validate-traces | DRIFT/UNTRACKED → `/generate-code {UC-ID}`; GAP → `/dev-gen-test {UC-ID}`; all OK → create PR |
249
+ | /fix-bug | Create PR and link to ticket |
250
+ | /debug | `/fix-bug {ticket-id}` if fix needed |
251
+ | /report-bug | Send to dev (`/fix-bug {BUG-ID}`); if coverage gap → `/propose-scenario {UC-ID}` |
252
+ | /propose-scenario | Notify PO/Dev to review the proposal in `feedback/bdd-proposals/` |
253
+ | /learn | Continue working — lesson applies on next command |
254
+ | /sync | `/validate-traces` for full coverage; act on any `📥 tester feedback` surfaced |
255
+ | /update-framework | Review `git diff .agent/`, commit; `/sync` for project content |
256
+
257
+ Format the footer as:
258
+ ```
259
+ ---
260
+ Status : {badge}
261
+ {Output Artifacts block}
262
+ Pipeline : Discovery → PRD → [BDD ◀ bạn ở đây] → Tech Design → Code → Dev Self-Check → QC → Trace Audit
263
+ (review cmd) Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume
264
+ Next : {suggested command with example arguments}
265
+ ```
266
+ *(Omit the `Pipeline` line for cross-cutting commands listed above.)*
267
+
268
+
269
+ ---
270
+
271
+ ## /refine-prd — Analyze PRD Through 4 Review Lenses
272
+
273
+ Performs a structured multi-perspective analysis of a PRD and writes findings to a YAML file for human review.
274
+
275
+ ### Gate
276
+
277
+ <!-- Directory: specs/*/*/prd.md -->
278
+ # Gate — Universal Entry Procedure
279
+
280
+ Every command must execute this gate before proceeding with its specific logic.
281
+
282
+ ## Step 0 — Sub-Agent Mode Check
283
+
284
+ Before anything else, check if `$ARGUMENTS` is a JSON payload from an orchestrator:
285
+
286
+ 1. Attempt to parse `$ARGUMENTS` as JSON.
287
+ 2. If it parses successfully **and** contains `"_agent_mode": true`:
288
+ - **Skip Steps 1, 2, and 3 of this Gate entirely.**
289
+ - Set target file = `payload.target_file`
290
+ - Set loaded context = `payload.context` (do NOT run context-loader.md)
291
+ - Set UC scope = `payload.uc_id` (process only this UC)
292
+ - Set line range = `payload.uc_section` (read only that PRD section)
293
+ - Proceed directly to the command-specific logic.
294
+ 3. If `$ARGUMENTS` is not JSON or `_agent_mode` is absent → continue to Step 1 (normal mode).
295
+
296
+ ## Step 0-B — Model Check
297
+
298
+ *Skip this step if `_agent_mode: true` (sub-agent — orchestrator already validated).*
299
+
300
+ Complex generation and review commands require strong reasoning.
301
+ Using a smaller model risks missed edge cases, incomplete spec analysis, and architecture violations.
302
+
303
+ Display and wait for response:
304
+
305
+ ```
306
+ ⚙️ MODEL CHECK
307
+ ──────────────────────────────────────────────────────────────────
308
+ Recommended : claude-opus-4 (or latest Opus model)
309
+ Why needed : Spec analysis, architecture review, code generation
310
+ require deep reasoning. Smaller models miss edge cases.
311
+
312
+ To switch in Claude Code:
313
+ • Settings → Model → select "claude-opus"
314
+ • or: /model → choose claude-opus
315
+
316
+ Running on claude-opus?
317
+ Y — yes, on claude-opus → proceed
318
+ S — skip check (I accept lower quality risk with current model)
319
+ ──────────────────────────────────────────────────────────────────
320
+ ```
321
+
322
+ - "Y" → proceed to Step 1.
323
+ - "S" → proceed to Step 1 (user accepts risk, add ⚠️ to final report).
324
+ - "N" or anything else → **STOP.** Output: "Please switch to claude-opus, then re-run this command."
325
+
326
+ ## Step 1 — Resolve Target File
327
+
328
+ 1. If `$ARGUMENTS` is provided and points to an existing file → use it directly as the target.
329
+ 2. If `$ARGUMENTS` is a **bare UC-ID / ticket ID / partial name** (no path) → resolve it to a file by globbing the feature-package layout. The `{prd-slug}` is **not known yet**, so use a `*` wildcard for that segment, and a recursive `**` under `bdd/` so the platform subfolders (`bdd/web/`, `bdd/app/`, `bdd/system/`) are all covered:
330
+ - **BDD commands** (target is a `.feature`): `{specs_dir}/{domain}/*/bdd/**/{UC-ID}*.feature` — or `{specs_dir}/*/*/bdd/**/{UC-ID}*.feature` if the domain is also unknown. If a platform/scope is implied by the command (e.g. a system tech-doc needs the `system/` BDD), prefer the match under that platform subfolder.
331
+ - **PRD commands** (target is `prd.md`): `{specs_dir}/{domain}/*/prd.md` (match the feature folder whose id corresponds), else `{specs_dir}/*/*/prd.md`.
332
+ - **tech-docs commands**: `{specs_dir}/{domain}/*/tech-docs/{UC-ID}*-tech-design*.md`.
333
+ - **design-spec commands**: `{specs_dir}/{domain}/*/design-spec/{TICKET-ID}*.md`.
334
+
335
+ Once a file matches: set it as the target **and** record `domain` + `prd_slug` from its path (per the extraction rule in `context-loader.md` Step 1 — `prd_slug` = first segment after `{specs_dir}/{domain}/`). Every path the command later reads or writes (sibling BDD/tech-docs/design-spec/trace) uses **that resolved `prd_slug`**, so all artifacts stay in one feature package. If several files match (e.g. multiple platforms), pick per the command's platform/scope or list them and ask.
336
+ 3. If `$ARGUMENTS` is empty or no match found:
337
+ - List files in the relevant directory for this command (e.g., `specs/*/*/prd.md` for PRD commands, `specs/*/*/bdd/**/*.feature` for BDD commands).
338
+ - Present the list to the user and ask: "Which file do you want to work with? (Enter number or filename)"
339
+ - Wait for user selection before continuing.
340
+
341
+ ## Step 2 — Execute Context Loader
342
+
343
+ Load all project context by following the procedure in `steps/context-loader.md`.
344
+ Store all loaded context in memory for use throughout this command session.
345
+
346
+ ## Step 3 — CHECKPOINT
347
+
348
+ After completing Steps 1 and 2, display a summary and wait for confirmation:
349
+
350
+ ```
351
+ CHECKPOINT
352
+ -----------
353
+ Target : {resolved file path}
354
+ Project : {project.name from project-context.yaml}
355
+ Tech stack : {language} / {framework}
356
+ Module : {module if set, else "not configured"}
357
+ Domains : {comma-separated domain list}
358
+
359
+ Proceed? (Y/N)
360
+ ```
361
+
362
+ Wait for explicit "Y" or "N" from the user before continuing.
363
+ - "Y" → proceed to the command-specific steps below.
364
+ - "N" → stop and ask what the user wants to change.
365
+
366
+
367
+ ### Analyze — 4 Lenses (run all four perspectives)
368
+
369
+ #### QA Lens — Test Coverage & Edge Cases
370
+ Evaluate:
371
+ - Are all acceptance criteria testable and measurable?
372
+ - Are edge cases and error scenarios specified?
373
+ - Are boundary conditions defined?
374
+ - Is there ambiguity in expected behavior?
375
+
376
+ #### DEV Lens — Technical Clarity & Feasibility
377
+ Evaluate:
378
+ - Are API inputs/outputs clearly defined?
379
+ - Are business rules unambiguous enough to implement?
380
+ - Are there performance or scalability concerns?
381
+ - Are cross-service dependencies fully described?
382
+ - Is there anything technically infeasible or risky?
383
+
384
+ #### SA Lens — Architecture & Design
385
+ Evaluate:
386
+ - Does this fit the existing architecture?
387
+ - Are there design patterns or constraints to apply?
388
+ - Is data modeling clear (entities, relationships)?
389
+ - Are there security or auth implications?
390
+
391
+ #### PO Lens — Business Value & Scope
392
+ Evaluate:
393
+ - Is scope clearly bounded?
394
+ - Are priorities clear?
395
+ - Are success metrics defined?
396
+ - Are stakeholder needs fully captured?
397
+ - Any scope creep risk?
398
+
399
+ ### Write Output
400
+
401
+ Derive the output filename from the PRD slug:
402
+ - PRD file: `specs/payment/create-invoice/prd.md` → output: `.agent/review/create-invoice-findings.yaml`
403
+ - Rule: take the PRD's parent folder name (the `prd-slug`), append `-findings.yaml`
404
+
405
+ Write findings to `.agent/review/{prd-slug}-findings.yaml`:
406
+
407
+ ```yaml
408
+ # Generated by /refine-prd
409
+ # Review each finding and mark: accepted / rejected / needs_discussion
410
+ prd_source: "specs/{domain}/{prd-slug}/prd.md"
411
+ generated_at: "{ISO datetime}"
412
+ status: "pending_review"
413
+
414
+ findings:
415
+ - id: "F001"
416
+ lens: "QA" # QA | DEV | SA | PO
417
+ severity: "major" # critical | major | minor
418
+ section: "§6. Acceptance Criteria"
419
+ finding: "{Clear description of the gap or issue}"
420
+ suggestion: "{Specific actionable improvement}"
421
+ status: "pending" # pending | accepted | rejected | needs_discussion
422
+
423
+ - id: "F002"
424
+ lens: "DEV"
425
+ severity: "minor"
426
+ section: "§8. Cross-Service Dependencies"
427
+ finding: "{finding}"
428
+ suggestion: "{suggestion}"
429
+ status: "pending"
430
+
431
+ summary:
432
+ total_findings: {N}
433
+ by_severity:
434
+ critical: {N}
435
+ major: {N}
436
+ minor: {N}
437
+ by_lens:
438
+ QA: {N}
439
+ DEV: {N}
440
+ SA: {N}
441
+ PO: {N}
442
+ recommendation: "APPROVED_WITH_MINOR_CHANGES | NEEDS_REVISION | BLOCKED"
443
+ ```
444
+
445
+ ### Report to User
446
+
447
+ ```
448
+ /refine-prd Complete — {PRD name}
449
+
450
+ Findings: {total} total
451
+ 🔴 Critical: {N} 🟡 Major: {N} 🟢 Minor: {N}
452
+
453
+ Top issues:
454
+ [F001] QA/major — {brief description}
455
+ [F002] DEV/minor — {brief description}
456
+
457
+ Review file: .agent/review/{prd-slug}-findings.yaml
458
+ → Open with Review Board extension (right-click file) to accept/reject each finding
459
+ → After review: update PRD and run /generate-bdd
460
+ ```
461
+
462
+ # Report Footer — Standard Command Output Format
463
+
464
+ Every command report must end with this standard footer section.
465
+
466
+ ## Status Badge
467
+
468
+ Choose one based on outcome:
469
+ - `✅ Complete` — all steps succeeded, no issues found
470
+ - `❌ Failed` — command could not complete due to a blocking error
471
+ - `⚠️ Warnings` — completed with non-blocking issues that should be reviewed
472
+
473
+ ## Output Artifacts
474
+
475
+ List every file created or modified by this command:
476
+ ```
477
+ Output Artifacts:
478
+ {created|updated} {file-path} ({brief description})
479
+ {created|updated} {file-path} ({brief description})
480
+ ```
481
+
482
+ If no files were written (e.g., review or analysis commands) → write `Output Artifacts: none (read-only)`.
483
+
484
+ ## Pipeline Position
485
+
486
+ Print a one-line map of the pipeline with the CURRENT command's phase marked `◀ bạn ở đây`,
487
+ so the user always sees where this command sits in the end-to-end flow:
488
+
489
+ ```
490
+ Discovery → PRD → [Design Spec] → BDD → Tech Design → Code → Dev Self-Check → QC → Trace Audit
491
+ ```
492
+
493
+ Find the current command in this phase legend and mark **its** phase in the map above:
494
+
495
+ | Phase | Commands |
496
+ |-------|----------|
497
+ | Discovery | `/define-product` |
498
+ | PRD | `/generate-prd` · `/refine-prd` · `/review-context` (PRD) |
499
+ | Design Spec | `/generate-design-spec` |
500
+ | BDD | `/generate-bdd` · `/review-context` (BDD) |
501
+ | Tech Design | `/generate-tech-docs` · `/map-testids` · `/review-tech-docs` |
502
+ | Code | `/generate-code` · `/review-code` |
503
+ | Dev Self-Check | `/dev-gen-test` · `/dev-run-test` · `/dev-smoke-test` |
504
+ | QC | `/qc-analyze` · `/qc-plan` · `/qc-design-test` · `/qc-review` · `/qc-run-test` · `/qc-report` |
505
+ | Trace Audit | `/validate-traces` |
506
+
507
+ For a **review command**, also append the 3-step review loop with the current step marked, e.g.:
508
+ `Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume`.
509
+
510
+ **Cross-cutting commands** (`/sync`, `/update-framework`, `/fix-bug`, `/debug`, `/learn`,
511
+ `/report-bug`, `/propose-scenario`, `/generate-spec-manifest`) sit outside the linear pipeline —
512
+ **omit the Pipeline line entirely** for these (do not force-fit them onto the map).
513
+
514
+ ## Next Command Suggestion
515
+
516
+ Suggest the logical next command based on workflow phase:
517
+
518
+ | Current command | Suggest next |
519
+ |-------------------------|-----------------------------------------------|
520
+ | /setup-ai-first | `/define-product` to start your first feature |
521
+ | /define-product | `/generate-prd {product-definition-file}` |
522
+ | /generate-prd | `/refine-prd {prd-file}` then `/review-context {prd-file}` |
523
+ | /refine-prd | Open Review Board → update PRD → `/review-context {prd-file}` |
524
+ | /review-context (PRD) | FE/App: `/generate-design-spec {prd-file}` (then BDD after sign-off); BE: `/generate-bdd {prd-file}` directly; fix PRD if NEEDS_FIX |
525
+ | /generate-design-spec | Designer review → Figma links confirmed → PO + Designer sign-off → `/generate-bdd {prd-file}` |
526
+ | /generate-bdd | `/review-context {feature-file}` to verify coverage |
527
+ | /review-context (BDD) | `/generate-tech-docs {UC-ID}` if APPROVED; regenerate if NEEDS_FIX |
528
+ | /qc-analyze | `/qc-plan {UC-ID}` (resolve 🔴 blocker gaps first) |
529
+ | /qc-plan | `/qc-design-test {UC-ID}` |
530
+ | /qc-design-test | `/qc-review {UC-ID}` (test-case review) |
531
+ | /qc-review (test-case) | `/qc-run-test {UC-ID}` if APPROVED; fix TCs if NEEDS_FIX |
532
+ | /qc-run-test | `/qc-report {UC-ID}` then `/qc-review {UC-ID}` (script review) |
533
+ | /qc-review (script) | `/qc-report {UC-ID}` then create PR if APPROVED |
534
+ | /qc-report | `/validate-traces {UC-ID}` to refresh Living Docs (qc_status) |
535
+ | /generate-tech-docs | `/review-tech-docs {tech-design-file}` |
536
+ | /review-tech-docs | `/generate-code {feature-file}` if APPROVED; fix doc if NEEDS_FIX |
537
+ | /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/dev-gen-test {UC-ID}` |
538
+ | /dev-gen-test | `/dev-run-test {UC-ID}` |
539
+ | /dev-run-test (passing) | `/review-code {UC-ID}` |
540
+ | /dev-run-test (failing) | `/fix-bug {ticket-id}` or `/debug {error}` |
541
+ | /review-code | `/dev-smoke-test {UC-ID}` or create PR |
542
+ | /dev-smoke-test | Create PR and link to ticket |
543
+ | /validate-traces | DRIFT/UNTRACKED → `/generate-code {UC-ID}`; GAP → `/dev-gen-test {UC-ID}`; all OK → create PR |
544
+ | /fix-bug | Create PR and link to ticket |
545
+ | /debug | `/fix-bug {ticket-id}` if fix needed |
546
+ | /report-bug | Send to dev (`/fix-bug {BUG-ID}`); if coverage gap → `/propose-scenario {UC-ID}` |
547
+ | /propose-scenario | Notify PO/Dev to review the proposal in `feedback/bdd-proposals/` |
548
+ | /learn | Continue working — lesson applies on next command |
549
+ | /sync | `/validate-traces` for full coverage; act on any `📥 tester feedback` surfaced |
550
+ | /update-framework | Review `git diff .agent/`, commit; `/sync` for project content |
551
+
552
+ Format the footer as:
553
+ ```
554
+ ---
555
+ Status : {badge}
556
+ {Output Artifacts block}
557
+ Pipeline : Discovery → PRD → [BDD ◀ bạn ở đây] → Tech Design → Code → Dev Self-Check → QC → Trace Audit
558
+ (review cmd) Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume
559
+ Next : {suggested command with example arguments}
560
+ ```
561
+ *(Omit the `Pipeline` line for cross-cutting commands listed above.)*
562
+