@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,116 @@
1
+ ---
2
+ description: Sets up the Spec-Driven Development framework in any backend project from scratch. Trigger when: "/setup-ai-first", "setup spec-driven workflow", "initialize ai-first framework", "cài đặt framework", "khởi tạo spec-driven", "set up this workflow", "how do I start using this framework".
3
+ ---
4
+
5
+ # /setup-ai-first — Initialize Spec-Driven Docs in a Project
6
+
7
+ Walk the user through a one-time setup that creates all required directories, installs CLAUDE.md, and verifies the environment.
8
+
9
+ ## Precondition Check
10
+
11
+ First, ask: "Bạn đang ở project nào? Cho tôi đường dẫn root của project."
12
+
13
+ Check if already set up:
14
+ - If `.claude/commands/` exists with `.md` files → report "Already set up. Run `/validate-traces` to check status."
15
+ - If `specs/` exists → offer to re-initialize or skip
16
+
17
+ ## Step 1 — Create Directory Structure
18
+
19
+ Create the following directories (skip if already exist):
20
+
21
+ ```
22
+ {project-root}/
23
+ ├── specs/
24
+ │ ├── product-definition/ # Output of /define-product
25
+ │ └── domain-knowledge/ # Business dictionary + core entities
26
+ ├── .trace/ # Traceability state (.trace/{domain}/{prd-slug}/{UC-ID}.tsv)
27
+ └── .agent/
28
+ └── review/ # Output of /refine-prd ({prd-slug}-findings.yaml)
29
+ ```
30
+
31
+ **Feature-package layout** — per-feature artifacts are NOT pre-created here; each command
32
+ creates its own folder on demand under `specs/{domain}/{prd-slug}/`:
33
+
34
+ ```
35
+ specs/{domain}/{prd-slug}/
36
+ ├── prd.md # /generate-prd
37
+ ├── bdd/ # /generate-bdd (.feature files)
38
+ ├── tech-docs/ # /generate-tech-docs
39
+ └── design-spec/ # /generate-design-spec (FE/App only)
40
+ ```
41
+
42
+ Report each directory created or already existing.
43
+
44
+ ## Step 2 — Copy Slash Commands
45
+
46
+ Tell the user:
47
+
48
+ > "Framework này đã cài slash commands vào Claude tự động qua skill system.
49
+ > Nếu bạn muốn dùng commands trực tiếp trong Claude Code project (`.claude/commands/`), chạy lệnh sau:"
50
+
51
+ ```bash
52
+ # Copy all commands from plugin to project
53
+ mkdir -p {project-root}/.claude/commands
54
+ cp {plugin-dir}/commands/*.md {project-root}/.claude/commands/
55
+ ```
56
+
57
+ Note: The `.claude/commands/` copies are optional. Skills in this framework work without them.
58
+
59
+ ## Step 3 — Create CLAUDE.md
60
+
61
+ Check if `{project-root}/CLAUDE.md` exists:
62
+ - If yes: ask "CLAUDE.md đã tồn tại. Merge template vào hay bỏ qua?"
63
+ - If no: create from template in `templates/architecture.template.md`
64
+
65
+ After creating, instruct:
66
+ > "Mở CLAUDE.md và điền vào các placeholder `{{...}}` với thông tin dự án của bạn.
67
+ > Đặc biệt quan trọng: §1 (project overview) và §3 (coding standards)."
68
+
69
+ ## Step 4 — Create project-context.yaml
70
+
71
+ Create `{project-root}/.agent/project-context.yaml`:
72
+
73
+ ```yaml
74
+ # Project context for AI-First workflow
75
+ # Fill in all fields before starting
76
+
77
+ project:
78
+ name: "{{PROJECT_NAME}}"
79
+ description: "{{ONE_LINE_DESCRIPTION}}"
80
+
81
+ tech_stack:
82
+ language: "{{LANGUAGE}}" # e.g. Java 21, Python 3.12, Node.js 20
83
+ framework: "{{FRAMEWORK}}" # e.g. Spring Boot 3.x, FastAPI, NestJS
84
+ build_tool: "{{BUILD_TOOL}}" # e.g. Gradle, Maven, npm
85
+ test_framework: "{{TEST_FW}}" # e.g. JUnit 5, pytest, Jest
86
+ orm: "{{ORM}}" # e.g. Hibernate/JPA, SQLAlchemy, Prisma
87
+ database: "{{DATABASE}}" # e.g. PostgreSQL, MySQL, MongoDB
88
+
89
+ conventions:
90
+ build_command: "{{BUILD_COMMAND}}" # e.g. ./gradlew build -x test
91
+ test_command: "{{TEST_COMMAND}}" # e.g. ./gradlew test
92
+ service_run: "{{RUN_COMMAND}}" # e.g. ./gradlew bootRun
93
+ ticket_prefix: "{{TICKET_PREFIX}}" # e.g. PROJ, FEAT, PD
94
+
95
+ domains: [] # List your business domains, e.g. [rental, payment, user]
96
+ ```
97
+
98
+ ## Step 5 — Verify Setup
99
+
100
+ Run a quick check:
101
+ - [ ] `specs/` directory exists
102
+ - [ ] `.trace/` directory exists
103
+ - [ ] `.agent/project-context.yaml` exists
104
+ - [ ] `CLAUDE.md` exists
105
+
106
+ Report:
107
+ ```
108
+ /setup-ai-first Complete ✅
109
+
110
+ Directories created: {N}
111
+ Files created:
112
+ ✅ CLAUDE.md (needs customization)
113
+ ✅ .agent/project-context.yaml (needs customization)
114
+ ```
115
+
116
+ {{include:steps/report-footer.md}}
@@ -0,0 +1,461 @@
1
+ ---
2
+ description: Generates BDD .feature files from an approved PRD, or generates technical design documents. Trigger when: "/generate-bdd", "/generate-tech-docs", "tạo BDD", "tạo spec", "generate feature file", "write BDD scenarios", "tạo technical design", "tech design", "sinh tech docs", "API design", "sinh .feature".
3
+ ---
4
+
5
+ # Spec Skills — BDD & Technical Design
6
+
7
+ This skill handles two commands: `/generate-bdd` to create BDD feature files, and `/generate-tech-docs` to create technical design documents.
8
+
9
+ ---
10
+
11
+ ## /generate-bdd — Generate BDD Feature Files
12
+
13
+ ### Gate
14
+
15
+ <!-- Directory: specs/*/*/prd.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
+ Also verify: Check that the PRD `Status` is `approved` (not `draft`).
106
+ - If `draft`: warn "PRD is still draft. Proceed anyway? Findings from /refine-prd may not be addressed yet."
107
+
108
+ ### UC Decomposition
109
+
110
+ For each Use Case in the PRD, derive scenarios. Present outline:
111
+
112
+ ```
113
+ {DOMAIN}-UC1: {Name}
114
+ SC1: Happy path — {client/role type} — {success scenario}
115
+ SC2: Happy path — {other client/role type} (if applicable)
116
+ SC3: Validation error — {invalid input}
117
+ SC4: Not found / resource missing
118
+ BRs covered: BR-1, BR-2
119
+
120
+ {DOMAIN}-UC2: {Name}
121
+ ...
122
+ ```
123
+
124
+ **CHECKPOINT** — Ask: "Does this outline look correct? Any missing scenarios?"
125
+ Wait for confirmation before generating files.
126
+
127
+ ### Generate
128
+
129
+ For each UC, write `specs/{domain}/{prd-slug}/bdd/{UC-ID}-{slug}.feature`:
130
+
131
+ ```gherkin
132
+ # @trace.source=specs/{domain}/{prd-slug}/prd.md
133
+ # @trace.uc={UC-ID}
134
+ Feature: {UC Name}
135
+
136
+ Background:
137
+ Given the system is running
138
+ And a {persona} is authenticated
139
+
140
+ Scenario: SC1 — {Happy path description}
141
+ Given {precondition}
142
+ When {action}
143
+ Then {expected outcome}
144
+ And {secondary outcome if any}
145
+
146
+ Scenario: SC2 — {Another happy path}
147
+ Given {precondition}
148
+ When {action}
149
+ Then {expected outcome}
150
+
151
+ Scenario: SC3 — Validation error
152
+ Given {precondition}
153
+ When {invalid action}
154
+ Then the system returns a validation error
155
+ And the error message mentions "{field}"
156
+
157
+ Scenario: SC4 — Resource not found
158
+ Given no {resource} exists with id {id}
159
+ When {action}
160
+ Then the system returns a not-found error
161
+ ```
162
+
163
+ ### Quality Check
164
+
165
+ After generating, self-evaluate:
166
+ - [ ] Every acceptance criteria from PRD has at least one scenario
167
+ - [ ] Every business rule is covered by at least one scenario
168
+ - [ ] Error scenarios are present (validation, not-found, unauthorized)
169
+ - [ ] Scenarios are atomic (one behavior per scenario)
170
+ - [ ] No implementation details in feature files (no SQL, no class names)
171
+
172
+ ### Output
173
+
174
+ ```
175
+ /generate-bdd Complete — {domain}
176
+
177
+ Files created:
178
+ ✅ specs/{domain}/{prd-slug}/bdd/{UC-ID}-{slug}.feature ({N} scenarios)
179
+ ...
180
+
181
+ Quality: {score}%
182
+ ```
183
+
184
+ # Report Footer — Standard Command Output Format
185
+
186
+ Every command report must end with this standard footer section.
187
+
188
+ ## Status Badge
189
+
190
+ Choose one based on outcome:
191
+ - `✅ Complete` — all steps succeeded, no issues found
192
+ - `❌ Failed` — command could not complete due to a blocking error
193
+ - `⚠️ Warnings` — completed with non-blocking issues that should be reviewed
194
+
195
+ ## Output Artifacts
196
+
197
+ List every file created or modified by this command:
198
+ ```
199
+ Output Artifacts:
200
+ {created|updated} {file-path} ({brief description})
201
+ {created|updated} {file-path} ({brief description})
202
+ ```
203
+
204
+ If no files were written (e.g., review or analysis commands) → write `Output Artifacts: none (read-only)`.
205
+
206
+ ## Pipeline Position
207
+
208
+ Print a one-line map of the pipeline with the CURRENT command's phase marked `◀ bạn ở đây`,
209
+ so the user always sees where this command sits in the end-to-end flow:
210
+
211
+ ```
212
+ Discovery → PRD → [Design Spec] → BDD → Tech Design → Code → Dev Self-Check → QC → Trace Audit
213
+ ```
214
+
215
+ Find the current command in this phase legend and mark **its** phase in the map above:
216
+
217
+ | Phase | Commands |
218
+ |-------|----------|
219
+ | Discovery | `/define-product` |
220
+ | PRD | `/generate-prd` · `/refine-prd` · `/review-context` (PRD) |
221
+ | Design Spec | `/generate-design-spec` |
222
+ | BDD | `/generate-bdd` · `/review-context` (BDD) |
223
+ | Tech Design | `/generate-tech-docs` · `/map-testids` · `/review-tech-docs` |
224
+ | Code | `/generate-code` · `/review-code` |
225
+ | Dev Self-Check | `/dev-gen-test` · `/dev-run-test` · `/dev-smoke-test` |
226
+ | QC | `/qc-analyze` · `/qc-plan` · `/qc-design-test` · `/qc-review` · `/qc-run-test` · `/qc-report` |
227
+ | Trace Audit | `/validate-traces` |
228
+
229
+ For a **review command**, also append the 3-step review loop with the current step marked, e.g.:
230
+ `Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume`.
231
+
232
+ **Cross-cutting commands** (`/sync`, `/update-framework`, `/fix-bug`, `/debug`, `/learn`,
233
+ `/report-bug`, `/propose-scenario`, `/generate-spec-manifest`) sit outside the linear pipeline —
234
+ **omit the Pipeline line entirely** for these (do not force-fit them onto the map).
235
+
236
+ ## Next Command Suggestion
237
+
238
+ Suggest the logical next command based on workflow phase:
239
+
240
+ | Current command | Suggest next |
241
+ |-------------------------|-----------------------------------------------|
242
+ | /setup-ai-first | `/define-product` to start your first feature |
243
+ | /define-product | `/generate-prd {product-definition-file}` |
244
+ | /generate-prd | `/refine-prd {prd-file}` then `/review-context {prd-file}` |
245
+ | /refine-prd | Open Review Board → update PRD → `/review-context {prd-file}` |
246
+ | /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 |
247
+ | /generate-design-spec | Designer review → Figma links confirmed → PO + Designer sign-off → `/generate-bdd {prd-file}` |
248
+ | /generate-bdd | `/review-context {feature-file}` to verify coverage |
249
+ | /review-context (BDD) | `/generate-tech-docs {UC-ID}` if APPROVED; regenerate if NEEDS_FIX |
250
+ | /qc-analyze | `/qc-plan {UC-ID}` (resolve 🔴 blocker gaps first) |
251
+ | /qc-plan | `/qc-design-test {UC-ID}` |
252
+ | /qc-design-test | `/qc-review {UC-ID}` (test-case review) |
253
+ | /qc-review (test-case) | `/qc-run-test {UC-ID}` if APPROVED; fix TCs if NEEDS_FIX |
254
+ | /qc-run-test | `/qc-report {UC-ID}` then `/qc-review {UC-ID}` (script review) |
255
+ | /qc-review (script) | `/qc-report {UC-ID}` then create PR if APPROVED |
256
+ | /qc-report | `/validate-traces {UC-ID}` to refresh Living Docs (qc_status) |
257
+ | /generate-tech-docs | `/review-tech-docs {tech-design-file}` |
258
+ | /review-tech-docs | `/generate-code {feature-file}` if APPROVED; fix doc if NEEDS_FIX |
259
+ | /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/dev-gen-test {UC-ID}` |
260
+ | /dev-gen-test | `/dev-run-test {UC-ID}` |
261
+ | /dev-run-test (passing) | `/review-code {UC-ID}` |
262
+ | /dev-run-test (failing) | `/fix-bug {ticket-id}` or `/debug {error}` |
263
+ | /review-code | `/dev-smoke-test {UC-ID}` or create PR |
264
+ | /dev-smoke-test | Create PR and link to ticket |
265
+ | /validate-traces | DRIFT/UNTRACKED → `/generate-code {UC-ID}`; GAP → `/dev-gen-test {UC-ID}`; all OK → create PR |
266
+ | /fix-bug | Create PR and link to ticket |
267
+ | /debug | `/fix-bug {ticket-id}` if fix needed |
268
+ | /report-bug | Send to dev (`/fix-bug {BUG-ID}`); if coverage gap → `/propose-scenario {UC-ID}` |
269
+ | /propose-scenario | Notify PO/Dev to review the proposal in `feedback/bdd-proposals/` |
270
+ | /learn | Continue working — lesson applies on next command |
271
+ | /sync | `/validate-traces` for full coverage; act on any `📥 tester feedback` surfaced |
272
+ | /update-framework | Review `git diff .agent/`, commit; `/sync` for project content |
273
+
274
+ Format the footer as:
275
+ ```
276
+ ---
277
+ Status : {badge}
278
+ {Output Artifacts block}
279
+ Pipeline : Discovery → PRD → [BDD ◀ bạn ở đây] → Tech Design → Code → Dev Self-Check → QC → Trace Audit
280
+ (review cmd) Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume
281
+ Next : {suggested command with example arguments}
282
+ ```
283
+ *(Omit the `Pipeline` line for cross-cutting commands listed above.)*
284
+
285
+
286
+ ---
287
+
288
+ ## /generate-tech-docs — Generate Technical Design Document
289
+
290
+ ### Gate
291
+
292
+ Check BDD quality (read .feature files, verify scenarios are well-formed).
293
+ If quality < 80%, halt and report: "BDD quality insufficient. Fix these issues first: [list]"
294
+
295
+ ### Generate
296
+
297
+ Write `specs/{domain}/{prd-slug}/tech-docs/{UC-ID}-tech-design.md`:
298
+
299
+ ```markdown
300
+ # Technical Design — {UC-ID}: {Feature}
301
+
302
+ **Domain**: {domain}
303
+ **Date**: {date}
304
+ **Spec**: specs/{domain}/{prd-slug}/bdd/{UC-ID}.feature
305
+
306
+ ## §1. Overview
307
+ {Brief description of what this UC implements}
308
+
309
+ ## §2. API Endpoints
310
+
311
+ | Method | Path | Auth/Role | Request Body | Response |
312
+ |--------|------|-----------|--------------|----------|
313
+ | GET | /v1/{resource} | {role} | — | {ResponseDTO} |
314
+ | POST | /v1/{resource} | {role} | {RequestDTO} | {ResponseDTO} |
315
+
316
+ ## §3. Data Model
317
+
318
+ {Entity diagram or table structure}
319
+
320
+ Key entities:
321
+ - `{Entity}`: {description, key fields}
322
+
323
+ ## §4. Service Flow
324
+
325
+ Sequence for each UC:
326
+ ```
327
+ {Client} → Controller → {Facade} → {Service} → {Repository}
328
+
329
+ {OtherService} (if cross-service)
330
+ ```
331
+
332
+ ## §5. Business Rules Implementation
333
+
334
+ | BR-ID | Rule | Implementation approach |
335
+ |-------|------|------------------------|
336
+ | BR-1 | {rule} | {how to implement} |
337
+
338
+ ## §6. Error Handling
339
+
340
+ | Scenario | Exception | HTTP Status |
341
+ |----------|-----------|-------------|
342
+ | {resource} not found | {NotFoundException} | 404 |
343
+ | Validation failure | {ValidationException} | 400 |
344
+ | Unauthorized | {AuthException} | 403 |
345
+
346
+ ## §7. Database Changes
347
+
348
+ {Migration script or schema changes needed}
349
+
350
+ ## §8. Caching Strategy
351
+
352
+ {Which data to cache, TTL, invalidation triggers — or "N/A"}
353
+
354
+ ## §9. Cross-Service Dependencies
355
+
356
+ {List external service calls, event producers/consumers}
357
+ ```
358
+
359
+ Instruct: "SA/Lead should review and approve before running /generate-code."
360
+
361
+ # Report Footer — Standard Command Output Format
362
+
363
+ Every command report must end with this standard footer section.
364
+
365
+ ## Status Badge
366
+
367
+ Choose one based on outcome:
368
+ - `✅ Complete` — all steps succeeded, no issues found
369
+ - `❌ Failed` — command could not complete due to a blocking error
370
+ - `⚠️ Warnings` — completed with non-blocking issues that should be reviewed
371
+
372
+ ## Output Artifacts
373
+
374
+ List every file created or modified by this command:
375
+ ```
376
+ Output Artifacts:
377
+ {created|updated} {file-path} ({brief description})
378
+ {created|updated} {file-path} ({brief description})
379
+ ```
380
+
381
+ If no files were written (e.g., review or analysis commands) → write `Output Artifacts: none (read-only)`.
382
+
383
+ ## Pipeline Position
384
+
385
+ Print a one-line map of the pipeline with the CURRENT command's phase marked `◀ bạn ở đây`,
386
+ so the user always sees where this command sits in the end-to-end flow:
387
+
388
+ ```
389
+ Discovery → PRD → [Design Spec] → BDD → Tech Design → Code → Dev Self-Check → QC → Trace Audit
390
+ ```
391
+
392
+ Find the current command in this phase legend and mark **its** phase in the map above:
393
+
394
+ | Phase | Commands |
395
+ |-------|----------|
396
+ | Discovery | `/define-product` |
397
+ | PRD | `/generate-prd` · `/refine-prd` · `/review-context` (PRD) |
398
+ | Design Spec | `/generate-design-spec` |
399
+ | BDD | `/generate-bdd` · `/review-context` (BDD) |
400
+ | Tech Design | `/generate-tech-docs` · `/map-testids` · `/review-tech-docs` |
401
+ | Code | `/generate-code` · `/review-code` |
402
+ | Dev Self-Check | `/dev-gen-test` · `/dev-run-test` · `/dev-smoke-test` |
403
+ | QC | `/qc-analyze` · `/qc-plan` · `/qc-design-test` · `/qc-review` · `/qc-run-test` · `/qc-report` |
404
+ | Trace Audit | `/validate-traces` |
405
+
406
+ For a **review command**, also append the 3-step review loop with the current step marked, e.g.:
407
+ `Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume`.
408
+
409
+ **Cross-cutting commands** (`/sync`, `/update-framework`, `/fix-bug`, `/debug`, `/learn`,
410
+ `/report-bug`, `/propose-scenario`, `/generate-spec-manifest`) sit outside the linear pipeline —
411
+ **omit the Pipeline line entirely** for these (do not force-fit them onto the map).
412
+
413
+ ## Next Command Suggestion
414
+
415
+ Suggest the logical next command based on workflow phase:
416
+
417
+ | Current command | Suggest next |
418
+ |-------------------------|-----------------------------------------------|
419
+ | /setup-ai-first | `/define-product` to start your first feature |
420
+ | /define-product | `/generate-prd {product-definition-file}` |
421
+ | /generate-prd | `/refine-prd {prd-file}` then `/review-context {prd-file}` |
422
+ | /refine-prd | Open Review Board → update PRD → `/review-context {prd-file}` |
423
+ | /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 |
424
+ | /generate-design-spec | Designer review → Figma links confirmed → PO + Designer sign-off → `/generate-bdd {prd-file}` |
425
+ | /generate-bdd | `/review-context {feature-file}` to verify coverage |
426
+ | /review-context (BDD) | `/generate-tech-docs {UC-ID}` if APPROVED; regenerate if NEEDS_FIX |
427
+ | /qc-analyze | `/qc-plan {UC-ID}` (resolve 🔴 blocker gaps first) |
428
+ | /qc-plan | `/qc-design-test {UC-ID}` |
429
+ | /qc-design-test | `/qc-review {UC-ID}` (test-case review) |
430
+ | /qc-review (test-case) | `/qc-run-test {UC-ID}` if APPROVED; fix TCs if NEEDS_FIX |
431
+ | /qc-run-test | `/qc-report {UC-ID}` then `/qc-review {UC-ID}` (script review) |
432
+ | /qc-review (script) | `/qc-report {UC-ID}` then create PR if APPROVED |
433
+ | /qc-report | `/validate-traces {UC-ID}` to refresh Living Docs (qc_status) |
434
+ | /generate-tech-docs | `/review-tech-docs {tech-design-file}` |
435
+ | /review-tech-docs | `/generate-code {feature-file}` if APPROVED; fix doc if NEEDS_FIX |
436
+ | /generate-code | First gen → `/review-code {UC-ID}`; re-gen → `/dev-gen-test {UC-ID}` |
437
+ | /dev-gen-test | `/dev-run-test {UC-ID}` |
438
+ | /dev-run-test (passing) | `/review-code {UC-ID}` |
439
+ | /dev-run-test (failing) | `/fix-bug {ticket-id}` or `/debug {error}` |
440
+ | /review-code | `/dev-smoke-test {UC-ID}` or create PR |
441
+ | /dev-smoke-test | Create PR and link to ticket |
442
+ | /validate-traces | DRIFT/UNTRACKED → `/generate-code {UC-ID}`; GAP → `/dev-gen-test {UC-ID}`; all OK → create PR |
443
+ | /fix-bug | Create PR and link to ticket |
444
+ | /debug | `/fix-bug {ticket-id}` if fix needed |
445
+ | /report-bug | Send to dev (`/fix-bug {BUG-ID}`); if coverage gap → `/propose-scenario {UC-ID}` |
446
+ | /propose-scenario | Notify PO/Dev to review the proposal in `feedback/bdd-proposals/` |
447
+ | /learn | Continue working — lesson applies on next command |
448
+ | /sync | `/validate-traces` for full coverage; act on any `📥 tester feedback` surfaced |
449
+ | /update-framework | Review `git diff .agent/`, commit; `/sync` for project content |
450
+
451
+ Format the footer as:
452
+ ```
453
+ ---
454
+ Status : {badge}
455
+ {Output Artifacts block}
456
+ Pipeline : Discovery → PRD → [BDD ◀ bạn ở đây] → Tech Design → Code → Dev Self-Check → QC → Trace Audit
457
+ (review cmd) Vòng review: [① phân tích ◀] → ② Review Board → ③ --resume
458
+ Next : {suggested command with example arguments}
459
+ ```
460
+ *(Omit the `Pipeline` line for cross-cutting commands listed above.)*
461
+