@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,327 @@
1
+ # {TICKET-ID} Tên tính năng/Feature Name
2
+
3
+ <!--
4
+ Template này được sử dụng bởi workflow /generate-prd.
5
+ AI Agent sẽ điền các section dựa trên input từ PO.
6
+ Các placeholder {…} cần được thay thế bằng nội dung thực tế.
7
+
8
+ ╔══════════════════════════════════════════════════════════════════════╗
9
+ ║ TERMINOLOGY RULES — Business Dictionary Enforcement ║
10
+ ║ Source: specs/domain-knowledge/business-dictionary.md ║
11
+ ║ AI Agent PHẢI tuân thủ 100% khi sinh nội dung PRD. ║
12
+ ╚══════════════════════════════════════════════════════════════════════╝
13
+
14
+ THUẬT NGỮ BẮT BUỘC (phải dùng đúng keyword):
15
+ ┌─────────────────────────┬──────────────────────────────────────────┐
16
+ │ Keyword chuẩn │ Ngữ cảnh │
17
+ ├─────────────────────────┼──────────────────────────────────────────┤
18
+ │ Consumer │ Khách hàng (global entity) │
19
+ │ Merchant / Tenant │ Merchant = nghiệp vụ, Tenant = kỹ thuật│
20
+ │ Online Storefront │ Tính năng bán hàng trên Zalo Mini App │
21
+ │ Branch │ Chi nhánh vật lý (projection từ KVS) │
22
+ │ Loyalty Member │ Quan hệ Consumer ↔ Merchant │
23
+ │ Order │ Đơn hàng (chỉ completed → Loyalty) │
24
+ │ OrderItem │ Chi tiết dòng hàng trong Order │
25
+ │ Product │ Hàng hóa (projection từ KVS) │
26
+ │ ProductCategory │ Nhóm hàng (hierarchical) │
27
+ │ ProductAttribute │ Định nghĩa loại thuộc tính │
28
+ │ ProductAttributeMap │ Mapping thuộc tính → sản phẩm cụ thể │
29
+ │ ProductImage │ Hình ảnh sản phẩm (nhiều ảnh, có rank) │
30
+ │ Address │ Địa chỉ đa hình (polymorphic) │
31
+ │ SourceSystem │ Hệ thống partner (map → X-App-Id) │
32
+ │ ExternalId │ ID tham chiếu từ hệ thống nguồn (KVS) │
33
+ │ Onboarding │ Quy trình khởi tạo gian hàng lần đầu │
34
+ │ revision │ Row version — delta sync │
35
+ │ KVLoyalty Widget │ Thư viện tích hợp frontend (JS qua CDN) │
36
+ └─────────────────────────┴──────────────────────────────────────────┘
37
+
38
+ THUẬT NGỮ BỊ CẤM — TUYỆT ĐỐI KHÔNG xuất hiện trong PRD:
39
+ ┌─────────────────────────┬─────────────────────────────────────────────────┐
40
+ │ ❌ KHÔNG dùng │ ✅ Thay thế bằng │
41
+ ├─────────────────────────┼─────────────────────────────────────────────────┤
42
+ │ Customer │ Consumer │
43
+ │ SKU │ Product + ProductAttribute + ProductAttributeMap│
44
+ │ JS SDK / JavaScript SDK │ KVLoyalty Widget │
45
+ │ CDC │ Event bus (Kafka) │
46
+ │ primaryBranchId │ Branch.isPrimary │
47
+ │ Cửa hàng (= storefront)│ Online Storefront / Gian hàng online │
48
+ └─────────────────────────┴─────────────────────────────────────────────────┘
49
+
50
+ QUY TẮC BỔ SUNG:
51
+ - Luôn dùng SourceSystem cho partners, ExternalId cho external references.
52
+ - Status/Enum values → tham chiếu core-entities.md Global Enum Registry.
53
+ - Khi nhắc "SKU" → diễn giải bằng Product con (masterProductId) + ProductAttributeMap.
54
+ - Consumer là global entity — 1 Consumer có thể mua hàng ở nhiều Merchant.
55
+ - Nếu phát hiện banned term trong input PO → thay thế bằng term chuẩn và ghi chú trong "Giả định AI".
56
+ - CROSS-REFERENCE (BẮT BUỘC): Bất kỳ chỗ nào trong tài liệu có nhắc đến một tính năng/ticket khác
57
+ (dù là pre-condition, business rule, giả định, AC, hay bất kỳ section nào) → PHẢI gắn inline link:
58
+ [TICKET-ID](./TICKET-ID-slug.md)
59
+ Không được để TICKET-ID dạng plain text nếu tồn tại file PRD tương ứng.
60
+ Ngoài ra, ghi rõ quan hệ phụ thuộc trong "Tài liệu tham khảo" ở Appendix.
61
+ - NEW TERM DETECTION: Nếu trong input PO xuất hiện thuật ngữ CHƯA CÓ trong business-dictionary.md
62
+ và thuật ngữ đó lặp lại ≥ 2 lần → DỪNG lại, hỏi PO confirm trước khi tiếp tục:
63
+ + Thuật ngữ đó có nghĩa gì trong ngữ cảnh hệ thống?
64
+ + English term chuẩn nên dùng là gì?
65
+ + Có cần bổ sung vào business-dictionary.md không?
66
+ Sau khi PO confirm → cập nhật business-dictionary.md (nếu PO đồng ý) rồi mới tiếp tục sinh PRD.
67
+ -->
68
+
69
+ ---
70
+
71
+ ## Metadata
72
+
73
+ | Field | Value |
74
+ |---------------|---------------------------------|
75
+ | **PRD ID** | {TICKET-ID} |
76
+ | **Version** | 1.0 |
77
+ | **Status** | draft / review / approved |
78
+ | **Author** | {PO name or "AI-assisted"} |
79
+ | **Domain** | {domain: loyalty, identity, …} |
80
+ | **Created** | {YYYY-MM-DD} |
81
+ | **Updated** | {YYYY-MM-DD} |
82
+
83
+ ---
84
+
85
+ # Feature
86
+
87
+ {Tên tính năng chính và mô tả capability hoặc chức năng mà sản phẩm cung cấp.}
88
+
89
+ ---
90
+
91
+ # 1. Tổng quan
92
+
93
+ ## a. User Story
94
+
95
+ <!--
96
+ ĐỊNH NGHĨA: Mô tả ngắn gọn nhu cầu của người dùng theo góc nhìn nghiệp vụ.
97
+ Trả lời câu hỏi: "Ai cần gì và tại sao?" — KHÔNG mô tả kỹ thuật.
98
+
99
+ QUY TẮC VIẾT:
100
+ - {User role} → Vai trò người dùng (ví dụ: Consumer, Merchant Admin, Cashier)
101
+ - {User goal} → Mục tiêu người dùng muốn đạt được (hành động/chức năng cụ thể)
102
+ - {Business value}→ Giá trị nghiệp vụ mang lại (lý do tại sao người dùng cần điều này)
103
+ -->
104
+
105
+ - **As a** {User role}
106
+ - **I want to** {User goal}
107
+ - **So that** {Business value}
108
+
109
+ ## b. Phạm vi
110
+
111
+ <!--
112
+ ĐỊNH NGHĨA: Liệt kê danh sách các chức năng thuộc feature này.
113
+ Trả lời câu hỏi: "Feature này làm gì?" — giúp xác định ranh giới, tránh scope creep.
114
+
115
+ QUY TẮC VIẾT:
116
+ - Mỗi dòng là một chức năng/capability cụ thể mà feature này cung cấp.
117
+ - Chỉ liệt kê những gì được làm trong ticket này. Nếu có chức năng liên quan nhưng
118
+ KHÔNG thuộc ticket này → KHÔNG đưa vào danh sách.
119
+ - Viết ngắn gọn, súc tích, đủ để người đọc hiểu mà không cần giải thích thêm.
120
+ -->
121
+
122
+ **In Scope**
123
+
124
+ - {Chức năng thuộc feature}
125
+
126
+ ---
127
+
128
+ # 2. Acceptance Criteria
129
+
130
+ <!--
131
+ ĐỊNH NGHĨA: Danh sách điều kiện cần thỏa mãn để tính năng được coi là hoàn thành.
132
+ Trả lời câu hỏi: "Khi nào thì feature này được coi là DONE?" — tiêu chí để QA kiểm thử và PO sign-off.
133
+
134
+ QUY TẮC VIẾT:
135
+ - Viết theo góc nhìn người dùng: "Người dùng có thể...", "Hệ thống cho phép..."
136
+ - Mỗi AC phải testable (có thể kiểm tra được — pass hoặc fail rõ ràng).
137
+ - Chỉ ghi các tiêu chí CỐT LÕI — khi tính năng đạt được những điều này thì người dùng
138
+ đã có thể sử dụng được. Không ghi tiêu chí phụ hoặc edge case nhỏ.
139
+
140
+ KHÔNG viết AC về:
141
+ - UI/UX (màu sắc, vị trí nút, font chữ, animation) → thuộc Wireframe.
142
+ - Chi tiết kỹ thuật hoặc logic xử lý nội bộ → thuộc Business Rule / Business Logic.
143
+ -->
144
+
145
+ - **AC1:** {Điều kiện chấp nhận}
146
+ - **AC2:** {Điều kiện chấp nhận}
147
+ - **AC3:** {Điều kiện chấp nhận}
148
+
149
+ ---
150
+
151
+ # 3. Use Case
152
+
153
+ <!--
154
+ ĐỊNH NGHĨA — USE CASE (UC):
155
+ Mô tả một kịch bản nghiệp vụ cụ thể từ góc nhìn người dùng tương tác với hệ thống.
156
+ Trả lời câu hỏi: "Người dùng tương tác với hệ thống như thế nào trong từng tình huống?"
157
+ - Actor → Ai thực hiện hành động trong kịch bản này
158
+ - Description → Tóm tắt kịch bản bằng 1 câu
159
+ - Pre-condition → Điều kiện PHẢI đúng TRƯỚC KHI Use Case bắt đầu (trạng thái hệ thống, quyền, dữ liệu)
160
+ - Post-condition→ Trạng thái/kết quả SAU KHI Use Case hoàn thành thành công
161
+
162
+ ĐỊNH NGHĨA — BUSINESS RULE (BR):
163
+ Quy tắc nghiệp vụ mà hệ thống bắt buộc phải tuân theo — viết thành một câu rõ ràng, ngắn gọn, dễ hiểu.
164
+ Trả lời câu hỏi: "Hệ thống PHẢI làm gì / KHÔNG được làm gì?" (WHAT)
165
+ - Là ràng buộc không thể thương lượng, xuất phát từ yêu cầu nghiệp vụ.
166
+ - Mỗi BR chỉ phát biểu MỘT quy tắc duy nhất, không gộp nhiều quy tắc vào một dòng.
167
+
168
+ ĐỊNH NGHĨA — BUSINESS LOGIC (BL):
169
+ Cách thực thi cụ thể của một Business Rule — mô tả các điều kiện và logic chi tiết.
170
+ Trả lời câu hỏi: "Hệ thống thực hiện quy tắc đó cụ thể như thế nào?" (HOW)
171
+ - Các điều kiện rẽ nhánh (if/else, trường hợp A / trường hợp B)
172
+ - Công thức tính toán hoặc quy tắc áp dụng theo từng trường hợp
173
+ - Thứ tự xử lý, ưu tiên, các trường hợp ngoại lệ
174
+ - Đây là input trực tiếp để developer implement.
175
+
176
+ NUMBERING CONVENTION:
177
+ - UC ID: format {TICKET_ID}-UC{N}
178
+ + {TICKET_ID} = Jira Ticket ID (e.g., LOYAL-29)
179
+ + {N} = UC number within this PRD (1, 2, 3, ...)
180
+ + E.g.: LOYAL-29-UC1, LOYAL-29-UC2, LOYAL-29-UC3, ...
181
+ - BR ID: format {TICKET_ID}-UC{N}-BR{M}
182
+ + {M} = BR number incrementing from 1 across the PRD (not reset per UC, not global)
183
+ + E.g.: LOYAL-29-UC1-BR1, LOYAL-29-UC1-BR2, LOYAL-29-UC2-BR3, ...
184
+ -->
185
+
186
+ #### {TICKET_ID}-UC1: {Tên Use Case}
187
+
188
+ - **Actor:** {Người dùng thực hiện}
189
+ - **Description:** {Mô tả ngắn gọn kịch bản nghiệp vụ}
190
+ - **Pre-condition:** {Điều kiện cần trước khi Use Case bắt đầu}
191
+ - **Post-condition:** {Kết quả sau khi Use Case hoàn thành}
192
+
193
+ **Business Rule**
194
+
195
+ | ID | Business Rule |
196
+ |----|---------------|
197
+ | {TICKET_ID}-UC1-BR1 | |
198
+
199
+ **Business Logic**
200
+
201
+ **{TICKET_ID}-UC1-BR1:**
202
+ - Logic 1
203
+ - Logic 2
204
+ - Logic 3
205
+
206
+ ---
207
+
208
+ # 4. UI/UX Guidelines
209
+
210
+ ## a. User Flow
211
+
212
+ <!--
213
+ ĐỊNH NGHĨA: Sơ đồ trực quan mô tả trình tự các bước và nhánh quyết định mà người dùng đi qua.
214
+ Trả lời câu hỏi: "Người dùng đi qua những bước nào và hệ thống phản hồi ra sao?"
215
+
216
+ QUY TẮC VIẾT (Mermaid flowchart):
217
+ - Start/Entry → Điểm vào: người dùng bắt đầu từ đâu (màn hình nào, hành động nào)
218
+ - Process → Bước xử lý: hình chữ nhật [ ] — hành động hoặc hiển thị của hệ thống
219
+ - Decision → Điểm rẽ nhánh: hình thoi { } — điều kiện dẫn đến kết quả khác nhau
220
+ - End State → Trạng thái kết thúc: kết quả cuối cùng người dùng nhận được
221
+
222
+ Mỗi nhánh Decision phải có label rõ ràng (|Có|, |Không|, |Thành công|, |Thất bại|...).
223
+ Bao gồm cả luồng lỗi / luồng ngoại lệ quan trọng (không chỉ happy path).
224
+ -->
225
+
226
+ {Flowchart mô tả trình tự các bước và các nhánh quyết định (Start/Entry → Process → Decision → End State)}
227
+
228
+ ```mermaid
229
+ flowchart TD
230
+ A[Bước 1: ...] --> B[Bước 2: ...]
231
+ B --> C{Điều kiện?}
232
+ C -->|Có| D[Bước 3a: ...]
233
+ C -->|Không| E[Bước 3b: ...]
234
+ ```
235
+
236
+ ## b. Wireframe
237
+
238
+ <!--
239
+ ĐỊNH NGHĨA: Mô tả bố cục và thành phần UI của từng màn hình.
240
+ Trả lời câu hỏi: "Màn hình trông như thế nào và người dùng tương tác với nó ra sao?"
241
+ Là cầu nối giữa nghiệp vụ và thiết kế UI. Có thể kèm link Figma hoặc ảnh mockup.
242
+
243
+ CẤU TRÚC BẢNG CHUẨN (3 thành phần chính):
244
+ - Screen → Tên màn hình / modal / trạng thái đang mô tả
245
+ - Components → Danh sách các thành phần UI hiển thị (button, label, list, input, bar...)
246
+ - Actions → Hành động người dùng thực hiện và kết quả/màn hình tiếp theo tương ứng
247
+
248
+ LƯU Ý — CẤU TRÚC LINH HOẠT THEO ĐỘ PHỨC TẠP:
249
+ Với màn đơn giản → dùng bảng 3 cột chuẩn (Screen / Components / Actions) là đủ.
250
+ Với màn phức tạp (nhiều trạng thái, nhiều modal, nhiều luồng lỗi) → có thể mở rộng:
251
+ - Tách riêng từng màn / modal / trạng thái thay vì gộp chung một bảng.
252
+ - Thêm các field chi tiết hơn nếu cần (UI Pattern, Header, Footer, Toast, Entry Point...).
253
+ Nguyên tắc: ưu tiên sự rõ ràng hơn tuân thủ cứng nhắc cấu trúc —
254
+ miễn là designer, dev, QA đọc vào hiểu đúng ý định của màn hình đó.
255
+ -->
256
+
257
+ **Screen N: {Tên màn hình}**
258
+
259
+ **Screen:** {Tên màn hình}
260
+
261
+ **Components:**
262
+ - {Component 1}
263
+ - {Component 2}
264
+ - {Component 3}
265
+
266
+ **Actions:**
267
+ - {Hành động 1} → {Kết quả}
268
+ - {Hành động 2} → {Kết quả}
269
+
270
+ <!-- Figma Design: {Link Figma — xóa dòng này nếu không có URL} -->
271
+
272
+ <!-- ![Wireframe mô tả](./assets/wireframe-name.png) -->
273
+
274
+ ---
275
+
276
+ # Appendix
277
+
278
+ ## Input gốc từ PO
279
+
280
+ > Lưu lại nguyên văn input ban đầu (text + links đến hình ảnh).
281
+
282
+ {Paste original input here}
283
+
284
+ ## Tài liệu tham khảo
285
+
286
+ <!--
287
+ Cross-reference PRD liên quan dùng format: [TICKET-ID](./TICKET-ID-slug.md) — {quan hệ phụ thuộc}
288
+ Ví dụ:
289
+ - [LOYAL-23](./LOYAL-23-cau-hinh-chi-nhanh.md) — Pre-condition: Branch phải được cấu hình trước
290
+ - [LOYAL-10](./LOYAL-10-onboarding-merchant.md) — Entity dùng chung: Merchant/Tenant
291
+ -->
292
+
293
+ - {[TICKET-ID](./TICKET-ID-slug.md) — mô tả quan hệ phụ thuộc}
294
+
295
+ ## Giả định AI
296
+
297
+ > Các giả định AI đưa ra khi PO chọn "skip" hoặc thông tin chưa đầy đủ.
298
+ > Mỗi giả định cần được PO review và confirm.
299
+
300
+ - {Giả định 1 — [AI DRAFT]}
301
+ - {Giả định 2 — [AI DRAFT]}
302
+
303
+ ---
304
+
305
+ ## Changelog
306
+
307
+ <!--
308
+ Version history — mỗi lần PRD được cập nhật (qua /refine-prd --resume hoặc PO tự sửa)
309
+ → thêm 1 dòng mới vào đầu bảng này với version mới.
310
+
311
+ Version bumping rules:
312
+ - Major (X.0 → X+1.0): thêm/xoá Use Case, thay đổi scope lớn, breaking BR change
313
+ - Minor (x.Y → x.Y+1): làm rõ AC/BR, thêm edge case, cập nhật wording
314
+
315
+ BDD và Code đọc version này qua @trace.prd_version để detect drift.
316
+ -->
317
+
318
+ | Version | Date | Changes |
319
+ |---------|------|---------|
320
+ | 1.0 | {YYYY-MM-DD} | Initial version |
321
+
322
+ <!--
323
+ NEXT STEPS:
324
+ Khi PRD được approve (status: approved), chạy:
325
+ /generate-bdd "path/to/this-prd.md"
326
+ để sinh BDD feature specs từ PRD này.
327
+ -->
@@ -0,0 +1,168 @@
1
+ # {TICKET-ID} Product Definition — {Feature Name}
2
+
3
+ <!--
4
+ This template is used by the /define-product workflow.
5
+ AI Agent fills each section through phased Q&A with PO.
6
+ Output is structured input for /generate-prd.
7
+
8
+ RULES:
9
+ - Each section corresponds to 1 phase in the workflow
10
+ - Incomplete section → keep placeholder, MUST NOT proceed to next phase
11
+ - PO confirmation status is recorded in each section
12
+ -->
13
+
14
+ ---
15
+
16
+ ## Metadata
17
+
18
+ | Field | Value |
19
+ |--------------------|--------------------------------|
20
+ | **Ticket** | {TICKET-ID} |
21
+ | **Feature** | {Feature name} |
22
+ | **Domain** | {domain} |
23
+ | **PO** | {PO name} |
24
+ | **Created** | {YYYY-MM-DD} |
25
+ | **Status** | in-progress / completed |
26
+ | **Completed Phase**| {last completed phase number} |
27
+
28
+ ---
29
+
30
+ ## Phase 0: Knowledge Sync
31
+
32
+ > AI syncs system knowledge. No PO input needed.
33
+
34
+ ### Related Entities
35
+ - {Entity 1} — {brief description}
36
+ - {Entity 2} — {brief description}
37
+
38
+ ### Related Modules
39
+ - {Module 1}
40
+ - {Module 2}
41
+
42
+ ### Existing Rules / Logic
43
+ - {Rule/logic from existing PRDs or domain knowledge}
44
+
45
+ ### Terminology Normalization
46
+ | Term in PO input | Canonical term (business-dictionary) |
47
+ |-------------------|--------------------------------------|
48
+ | {original term} | {canonical term} |
49
+
50
+ ---
51
+
52
+ ## Phase 1: Feature Definition
53
+
54
+ > ✅ PO Confirmed: {Yes/No}
55
+
56
+ ### Context
57
+ {Business context leading to this feature}
58
+
59
+ ### Problem Statement
60
+ {Problem to solve}
61
+
62
+ ### Goal
63
+ {Feature objective}
64
+
65
+ ### Actors
66
+ | Actor | Role | Primary/Secondary |
67
+ |----------|--------------------|-------------------|
68
+ | {Actor} | {Role description} | Primary |
69
+
70
+ ### Scope (In Scope)
71
+ - {Function 1}
72
+ - {Function 2}
73
+
74
+ ### User Story
75
+ - **As a** {User role}
76
+ - **I want to** {User goal}
77
+ - **So that** {Business value}
78
+
79
+ ---
80
+
81
+ ## Phase 2: User Flow Definition
82
+
83
+ > ✅ PO Confirmed: {Yes/No}
84
+
85
+ ### Entry Point
86
+ {How user starts interacting with the feature}
87
+
88
+ ### Flow Steps
89
+ | Step | Action | Screen/State | Notes |
90
+ |------|-----------------|------------------|-------------|
91
+ | 1 | {User action} | {Screen/State} | {Notes} |
92
+ | 2 | {User action} | {Screen/State} | {Notes} |
93
+
94
+ ### Exit Point
95
+ {Final outcome when flow completes}
96
+
97
+ ---
98
+
99
+ ## Phase 3: Clarification Log
100
+
101
+ > Records all questions and answers across rounds.
102
+
103
+ ### Round {N}
104
+ | # | Category | Question | PO Answer |
105
+ |---|----------|------------|------------|
106
+ | 1 | Context | {question} | {answer} |
107
+ | 2 | Flow | {question} | {answer} |
108
+ | 3 | Logic | {question} | {answer} |
109
+
110
+ ### Unresolved Items
111
+ - {Unresolved item — if any remain, MUST NOT proceed to Phase 4}
112
+
113
+ ---
114
+
115
+ ## Phase 4: Business Rules
116
+
117
+ > ✅ PO Confirmed: {Yes/No}
118
+
119
+ | Rule ID | Action/Trigger | Rule | Condition |
120
+ |---------|---------------------|---------------------|----------------------|
121
+ | BR-1 | {Action from flow} | {Business rule} | {Applicable condition} |
122
+ | BR-2 | {Action from flow} | {Business rule} | {Applicable condition} |
123
+
124
+ ---
125
+
126
+ ## Phase 5: Business Logic
127
+
128
+ > ✅ PO Confirmed: {Yes/No}
129
+
130
+ | Rule ID | System Behavior | Data State Change | UI Behavior | Error Handling |
131
+ |---------|------------------------------------------|----------------------|----------------------|-----------------------|
132
+ | BR-1 | {How system processes when rule triggers} | {Data changes} | {enable/disable/...} | {Error message/action}|
133
+ | BR-2 | {How system processes when rule triggers} | {Data changes} | {enable/disable/...} | {Error message/action}|
134
+
135
+ ---
136
+
137
+ ## Phase 6: Acceptance Criteria
138
+
139
+ > ✅ PO Confirmed: {Yes/No}
140
+
141
+ | AC ID | Description | Expected Behavior | Derived from |
142
+ |-------|------------------------|---------------------------|--------------|
143
+ | AC-1 | {Criterion description} | {Expected behavior} | BR-{N} |
144
+ | AC-2 | {Criterion description} | {Expected behavior} | BR-{N} |
145
+
146
+ ---
147
+
148
+ ## Phase 7: Validation Report
149
+
150
+ ### Coverage Matrix
151
+ | Flow Action | Has Rule? | Has Logic? | Has AC? | Status |
152
+ |-------------|-----------|------------|---------|--------|
153
+ | {Action 1} | ✅/❌ | ✅/❌ | ✅/❌ | OK/GAP |
154
+
155
+ ### Conflicts Detected
156
+ - {Conflict description — or "None"}
157
+
158
+ ### Missing Items
159
+ - {Missing rule/AC/logic — or "None"}
160
+
161
+ ---
162
+
163
+ <!--
164
+ NEXT STEPS:
165
+ When Product Definition is complete (Status: completed), run:
166
+ /generate-prd {path-to-this-file} --jira {TICKET-ID}
167
+ to generate a PRD from this Product Definition.
168
+ -->
@@ -0,0 +1,161 @@
1
+ # =============================================================
2
+ # Project Context — AI-First Spec-Driven Development
3
+ # =============================================================
4
+ # This is the SINGLE SOURCE OF TRUTH for project-specific
5
+ # paths, tools, and routing used by all workflows.
6
+ #
7
+ # Workflows reference this file for WHERE to find things.
8
+ # Workflow steps define WHAT to do (universal best practices).
9
+ # =============================================================
10
+ #
11
+ # HOW AI AGENTS USE THIS FILE:
12
+ # 1. Open this file at the start of any workflow
13
+ # 2. Parse the YAML structure
14
+ # 3. When a workflow says "→ key.subkey", look up that key
15
+ # and use the resolved value as the actual path
16
+ # 4. All paths are RELATIVE to workspace root
17
+ # 5. For "{domain}", substitute from spec's @trace.domain
18
+ # =============================================================
19
+
20
+ project:
21
+ name: "{{PROJECT_NAME}}"
22
+ description: "{{PROJECT_DESCRIPTION}}"
23
+
24
+ # ----- File Paths -----
25
+ # All paths are relative to workspace root.
26
+ paths:
27
+ # Feature-Package Layout:
28
+ # specs/{domain}/{prd-slug}/prd.md — PRD document
29
+ # specs/{domain}/{prd-slug}/bdd/ — BDD .feature files
30
+ # specs/{domain}/{prd-slug}/tech-docs/ — Technical design docs
31
+ # specs/{domain}/{prd-slug}/design-spec/ — Design specs (FE/App only)
32
+ # .trace/{domain}/{prd-slug}/{UC-ID}.tsv — Trace state
33
+ #
34
+ # specs_dir is the unified root for all spec artifact types (PRD, BDD, tech-docs, design-spec).
35
+ # prd-slug is derived from the PRD folder path — not a separate config variable.
36
+ specs_dir: "specs"
37
+ templates_dir: "specs/templates"
38
+ feature_template: "specs/templates/feature.template"
39
+ bdd_writing_guide: "specs/templates/bdd-writing-guide.md"
40
+ trace_report: "specs/.trace/trace-report.md"
41
+
42
+ # PRD template (PRDs are now at specs/{domain}/{prd-slug}/prd.md)
43
+ prd_template: "specs/templates/prd.template.md"
44
+ refinement_dir: ".agent/review"
45
+
46
+ # QC's OWN analysis/design working docs (qc-analyze/plan/design-test outputs:
47
+ # REQUIREMENT_ANALYSIS.md, DOC_GAPS.md, TEST_PLAN.md, test-cases/*.Test.md).
48
+ # One subfolder per UC: {qc_dir}/{UC-ID}/. Default "docs" (the QC team's own
49
+ # convention), VISIBLE — not hidden under .agent/. NOTE: specs (PRD / .feature /
50
+ # design-spec) are NOT here — they come from the PO spec submodule (spec_source).
51
+ qc_dir: "docs"
52
+
53
+ # WHERE the qc-* commands LOAD their skills from (qa-analyst / qa-designer / qa-planner
54
+ # / qa-reviewer / qa-runner + DOC_GAPS.template.md). Default = the framework-bundled
55
+ # copy at .agent/skills/qc (works standalone). The QC team OWNS these skills in their
56
+ # canonical repo (ai-automation-qc-base) — point this at that repo/submodule (e.g.
57
+ # "qc-base/.claude/skills") so the skills evolve INDEPENDENTLY and are NOT overwritten
58
+ # by framework upgrade (--init / upgrade.sh rewrite only .agent/, never this path).
59
+ qc_skills_dir: ".agent/skills/qc"
60
+
61
+ # Product Definitions
62
+ product_definitions_dir: "specs/product-definition"
63
+ product_definition_template: "specs/templates/product-definition.template.md"
64
+
65
+ # Domain Knowledge
66
+ domain_knowledge_dir: "specs/domain-knowledge"
67
+ business_dictionary: "specs/domain-knowledge/business-dictionary.md"
68
+ core_entities: "specs/domain-knowledge/core-entities.md"
69
+
70
+ # Project Lessons (guardrails accumulated via /learn — loaded by context-loader Step 6.7)
71
+ # Single-service default below. In umbrella/service mode, set this in each service's
72
+ # .agent/project-context.yaml to ".agent/project-lessons.md" (resolved per service_root).
73
+ lessons_file: "specs/domain-knowledge/lessons-learned.md"
74
+
75
+ # Tech Docs (BE-authored API contract).
76
+ # Merged into specs_dir in the feature-package layout:
77
+ # tech-docs live at specs/{domain}/{prd-slug}/tech-docs/.
78
+ # In umbrella mode with spec_source set, context-loader auto-routes this to
79
+ # {spec_source}/specs so FE/App read the contract via the spec submodule.
80
+ tech_docs_dir: "specs"
81
+
82
+ # Design Specs (FE/App platforms only — web, app).
83
+ # In the feature-package layout, design-specs live at specs/{domain}/{prd-slug}/design-spec/.
84
+ # This variable is no longer needed as a separate path — derived from specs_dir.
85
+ # design_spec_dir: "specs/design-spec" ← removed; use specs_dir instead
86
+
87
+ # Trace (internal structure: .trace/{domain}/{prd-slug}/{UC-ID}.tsv)
88
+ trace_dir: ".trace"
89
+
90
+ # Tester / QC feedback (written by /report-bug and /propose-scenario).
91
+ # These live in the SHARED spec repo so PO/Dev see them on their next /sync.
92
+ # In umbrella mode, context-loader auto-resolves them under {spec_source}/feedback/.
93
+ bug_reports_dir: "feedback/bug-reports"
94
+ bdd_proposals_dir: "feedback/bdd-proposals"
95
+ # PRD change requests (new requirement found in test, not covered by any AC) —
96
+ # written by /propose-scenario Case B so the PO can add/extend an AC then re-/generate-bdd.
97
+ prd_change_requests_dir: "feedback/prd-change-requests"
98
+
99
+ tech_stack:
100
+ language: "{{LANGUAGE}}" # e.g., Java 17 / TypeScript / C# / Go
101
+ framework: "{{FRAMEWORK}}" # e.g., Spring Boot 3.2 / Angular 17 / .NET 8
102
+ build_tool: "{{BUILD_TOOL}}" # e.g., Maven / npm / dotnet / go
103
+ test_framework: "{{TEST_FRAMEWORK}}" # e.g., JUnit 5 + Mockito / Jest / xUnit
104
+ database: "{{DATABASE}}" # e.g., PostgreSQL / MySQL / MongoDB
105
+ module: "{{MODULE}}" # e.g., java-spring / angular / dotnet / golang / context-engineering
106
+
107
+ conventions:
108
+ build_command: "{{BUILD_COMMAND}}" # e.g., mvn clean install -DskipTests
109
+ test_command: "{{TEST_COMMAND}}" # e.g., mvn test
110
+ service_run: "{{RUN_COMMAND}}" # e.g., mvn spring-boot:run
111
+ ticket_prefix: "{{TICKET_PREFIX}}" # e.g., PROJ / FEAT / UC
112
+
113
+ domains:
114
+ - "{{DOMAIN_1}}"
115
+ # - "{{DOMAIN_2}}"
116
+
117
+ # ----- Multi-Service / Umbrella Setup -----
118
+ # Fill this section ONLY if this is an UMBRELLA repo that contains multiple
119
+ # service submodules. Leave commented out for single-service projects.
120
+ #
121
+ # setup:
122
+ # mode: umbrella # "umbrella" | "single" (default: single)
123
+ # spec_source: "{{SPEC_SUBMODULE_PATH}}" # path to PO spec submodule, e.g. "free-trial-specs"
124
+ #
125
+ # When spec_source is set, context-loader auto-derives (ALL specs live in the spec repo
126
+ # using the feature-package layout; service submodules hold only code):
127
+ # specs_dir → {spec_source}/specs # unified root — PRD/BDD/tech-docs/design-spec
128
+ # tech_docs_dir → {spec_source}/specs # merged into specs_dir
129
+ # domain_knowledge_dir → {spec_source}/specs/domain-knowledge
130
+ # trace_dir → {spec_source}/.trace # structure: .trace/{domain}/{prd-slug}/{UC-ID}.tsv
131
+ # (You can still override these manually in paths: section below.)
132
+ # With spec_source set, only ONE override is needed instead of four separate dir vars.
133
+ #
134
+ # services: # domain → service submodule routing
135
+ # {{DOMAIN_1}}: # must match @trace.domain in PRD files
136
+ # path: "{{SERVICE_SUBMODULE_DIR}}" # relative path to service submodule (code + .trace/)
137
+ # module: "{{STACK_MODULE}}" # e.g., java-spring, nextjs, flutter
138
+ # # NOTE: with spec_source set, BDD + tech-docs are cross-team and live in the spec repo —
139
+ # # do NOT pin per-service specs_dir / tech_docs_dir here (they would be ignored).
140
+ # # Per-service specs_dir / tech_docs_dir apply ONLY when there is no spec_source.
141
+ #
142
+ # IMPORTANT — per-service CLAUDE.md:
143
+ # Each service submodule should have its OWN CLAUDE.md ({path}/CLAUDE.md) defining its
144
+ # architecture + coding standards for ITS stack. context-loader loads CLAUDE.md in two
145
+ # layers: root CLAUDE.md (umbrella-wide shared rules) + {service}/CLAUDE.md (overlay,
146
+ # wins on conflict for architecture/coding-standards). The agent sits at the umbrella
147
+ # root, so without a service CLAUDE.md, code generation falls back to umbrella defaults
148
+ # (likely the wrong stack). Generate one per service via /setup-ai-first inside each.
149
+ # {{DOMAIN_2}}:
150
+ # path: "{{SERVICE_2_DIR}}"
151
+ # module: "{{STACK_MODULE}}"
152
+ # specs_dir: "{{SERVICE_2_DIR}}/specs"
153
+ # tech_docs_dir: "{{SERVICE_2_DIR}}/specs"
154
+
155
+ # ----- Architecture -----
156
+ architecture:
157
+ style: "{{ARCH_STYLE}}" # e.g., Layered / Clean / Hexagonal
158
+ layers: "{{LAYER_STACK}}" # e.g., Controller → Facade → Service → Repository
159
+ key_rules:
160
+ - "{{ARCH_RULE_1}}"
161
+ - "{{ARCH_RULE_2}}"
@@ -0,0 +1,19 @@
1
+ [📚 Docs](../README.md) › Getting Started
2
+
3
+ # Getting Started
4
+
5
+ Bắt đầu với spec-driven-docs framework — cài đặt, chạy feature đầu tiên, và nắm các khái niệm cốt lõi trong vài phút.
6
+
7
+ ## Mục lục (this section)
8
+
9
+ - [installation.md](installation.md) — Cài framework, prerequisites (Node, Claude Code), QC automation stack, và VS Code extension (Review Board + Living Docs panels).
10
+ - [quickstart.md](quickstart.md) — Chạy feature đầu tiên end-to-end: Discovery → PRD → BDD → Tech Design → Code → Dev self-check.
11
+ - [core-concepts.md](core-concepts.md) — Khái niệm trong 5 phút: spec-as-source-of-truth, pipeline phases, traceability, dev_selftest vs qc_status, umbrella/spec-module.
12
+
13
+ ## Đọc gì trước?
14
+
15
+ 1. Mới hoàn toàn? → bắt đầu ở [core-concepts.md](core-concepts.md) để hiểu triết lý.
16
+ 2. Sẵn sàng cài? → [installation.md](installation.md).
17
+ 3. Đã cài xong? → [quickstart.md](quickstart.md) để chạy feature đầu tiên.
18
+
19
+ > Cần đào sâu hơn? Xem các section khác trong [📚 Docs](../README.md) — concepts, multi-repo/umbrella, QC pipeline, command reference, architecture.