@educa-corp/sdd-framework 0.1.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 (382) hide show
  1. package/bin/build.js +230 -0
  2. package/bin/index.js +609 -0
  3. package/commands/debug.md +835 -0
  4. package/commands/debug.tmpl +257 -0
  5. package/commands/define-product.md +746 -0
  6. package/commands/define-product.tmpl +191 -0
  7. package/commands/dev-gen-test.md +1015 -0
  8. package/commands/dev-gen-test.tmpl +490 -0
  9. package/commands/dev-run-test.md +749 -0
  10. package/commands/dev-run-test.tmpl +224 -0
  11. package/commands/dev-smoke-test.md +716 -0
  12. package/commands/dev-smoke-test.tmpl +217 -0
  13. package/commands/fix-bug.md +749 -0
  14. package/commands/fix-bug.tmpl +171 -0
  15. package/commands/generate-bdd.md +1144 -0
  16. package/commands/generate-bdd.tmpl +499 -0
  17. package/commands/generate-code.md +1038 -0
  18. package/commands/generate-code.tmpl +513 -0
  19. package/commands/generate-design-spec.md +1079 -0
  20. package/commands/generate-design-spec.tmpl +524 -0
  21. package/commands/generate-prd.md +945 -0
  22. package/commands/generate-prd.tmpl +166 -0
  23. package/commands/generate-spec-manifest.md +663 -0
  24. package/commands/generate-spec-manifest.tmpl +164 -0
  25. package/commands/generate-tech-docs.md +1249 -0
  26. package/commands/generate-tech-docs.tmpl +252 -0
  27. package/commands/learn.md +641 -0
  28. package/commands/learn.tmpl +63 -0
  29. package/commands/map-testids.md +580 -0
  30. package/commands/map-testids.tmpl +81 -0
  31. package/commands/propose-scenario.md +632 -0
  32. package/commands/propose-scenario.tmpl +133 -0
  33. package/commands/qc-analyze.md +611 -0
  34. package/commands/qc-analyze.tmpl +112 -0
  35. package/commands/qc-design-test.md +567 -0
  36. package/commands/qc-design-test.tmpl +68 -0
  37. package/commands/qc-plan.md +548 -0
  38. package/commands/qc-plan.tmpl +49 -0
  39. package/commands/qc-report.md +559 -0
  40. package/commands/qc-report.tmpl +60 -0
  41. package/commands/qc-review.md +552 -0
  42. package/commands/qc-review.tmpl +53 -0
  43. package/commands/qc-run-test.md +609 -0
  44. package/commands/qc-run-test.tmpl +84 -0
  45. package/commands/refine-prd.md +992 -0
  46. package/commands/refine-prd.tmpl +278 -0
  47. package/commands/report-bug.md +647 -0
  48. package/commands/report-bug.tmpl +148 -0
  49. package/commands/review-code.md +682 -0
  50. package/commands/review-code.tmpl +104 -0
  51. package/commands/review-context.md +1202 -0
  52. package/commands/review-context.tmpl +488 -0
  53. package/commands/review-tech-docs.md +871 -0
  54. package/commands/review-tech-docs.tmpl +372 -0
  55. package/commands/setup-ai-first.md +546 -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 +928 -0
  62. package/commands/validate-traces.tmpl +429 -0
  63. package/core/FRAMEWORK_VERSION +1 -0
  64. package/core/commands/debug.md +835 -0
  65. package/core/commands/define-product.md +746 -0
  66. package/core/commands/dev-gen-test.md +1015 -0
  67. package/core/commands/dev-run-test.md +749 -0
  68. package/core/commands/dev-smoke-test.md +716 -0
  69. package/core/commands/fix-bug.md +749 -0
  70. package/core/commands/generate-bdd.md +1144 -0
  71. package/core/commands/generate-code.md +1038 -0
  72. package/core/commands/generate-design-spec.md +1079 -0
  73. package/core/commands/generate-prd.md +945 -0
  74. package/core/commands/generate-spec-manifest.md +663 -0
  75. package/core/commands/generate-tech-docs.md +1249 -0
  76. package/core/commands/learn.md +641 -0
  77. package/core/commands/map-testids.md +580 -0
  78. package/core/commands/propose-scenario.md +632 -0
  79. package/core/commands/qc-analyze.md +611 -0
  80. package/core/commands/qc-design-test.md +567 -0
  81. package/core/commands/qc-plan.md +548 -0
  82. package/core/commands/qc-report.md +559 -0
  83. package/core/commands/qc-review.md +552 -0
  84. package/core/commands/qc-run-test.md +609 -0
  85. package/core/commands/refine-prd.md +992 -0
  86. package/core/commands/report-bug.md +647 -0
  87. package/core/commands/review-code.md +682 -0
  88. package/core/commands/review-context.md +1202 -0
  89. package/core/commands/review-tech-docs.md +871 -0
  90. package/core/commands/setup-ai-first.md +546 -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 +928 -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 +19 -0
  136. package/core/skills/debug/SKILL.md +19 -0
  137. package/core/skills/design-spec/SKILL.md +11 -0
  138. package/core/skills/discovery/SKILL.md +14 -0
  139. package/core/skills/prd/SKILL.md +19 -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 +11 -0
  176. package/core/skills/spec/SKILL.md +19 -0
  177. package/core/skills/test/SKILL.md +18 -0
  178. package/core/steps/business-language.md +56 -0
  179. package/core/steps/capture-lesson.md +79 -0
  180. package/core/steps/context-loader.md +311 -0
  181. package/core/steps/gate.md +88 -0
  182. package/core/steps/report-footer.md +100 -0
  183. package/core/steps/review-fanout.md +159 -0
  184. package/core/steps/spawn-agent.md +129 -0
  185. package/core/steps/trace-mirror.md +26 -0
  186. package/core/templates/architecture.template.md +113 -0
  187. package/core/templates/design-spec.template.md +217 -0
  188. package/core/templates/feature.template +120 -0
  189. package/core/templates/platform-guide.template.md +145 -0
  190. package/core/templates/prd.template.md +224 -0
  191. package/core/templates/product-definition.template.md +188 -0
  192. package/core/templates/project-context.yaml +161 -0
  193. package/core/templates/tech-design.template.md +498 -0
  194. package/docs/01-getting-started/README.md +19 -0
  195. package/docs/01-getting-started/core-concepts.md +102 -0
  196. package/docs/01-getting-started/installation.md +156 -0
  197. package/docs/01-getting-started/quickstart.md +86 -0
  198. package/docs/02-guides/README.md +26 -0
  199. package/docs/02-guides/bdd-input-checklist.md +68 -0
  200. package/docs/02-guides/developer/README.md +49 -0
  201. package/docs/02-guides/developer/bdd-and-trace.md +126 -0
  202. package/docs/02-guides/developer/commands.md +76 -0
  203. package/docs/02-guides/developer/pr-checklist.md +16 -0
  204. package/docs/02-guides/developer/scenarios.md +460 -0
  205. package/docs/02-guides/developer/workflow.md +121 -0
  206. package/docs/02-guides/prd-input-checklist.md +94 -0
  207. package/docs/02-guides/product-owner/README.md +81 -0
  208. package/docs/02-guides/product-owner/commands.md +30 -0
  209. package/docs/02-guides/product-owner/handoff-checklist.md +42 -0
  210. package/docs/02-guides/product-owner/prd-writing-rules.md +45 -0
  211. package/docs/02-guides/product-owner/scenarios.md +438 -0
  212. package/docs/02-guides/tech-docs-input-checklist.md +109 -0
  213. package/docs/02-guides/tester/README.md +75 -0
  214. package/docs/02-guides/tester/bug-reporting.md +117 -0
  215. package/docs/02-guides/tester/qc-automation.md +165 -0
  216. package/docs/02-guides/tester/reading-specs.md +79 -0
  217. package/docs/02-guides/tester/scenarios.md +186 -0
  218. package/docs/02-guides/tester/spec-manifest.md +130 -0
  219. package/docs/02-guides/tester/test-checklist.md +31 -0
  220. package/docs/02-guides/tester/workflow.md +77 -0
  221. package/docs/03-concepts/README.md +20 -0
  222. package/docs/03-concepts/architecture.md +248 -0
  223. package/docs/03-concepts/mechanisms-explained.md +124 -0
  224. package/docs/03-concepts/pipeline.md +278 -0
  225. package/docs/03-concepts/traceability.md +152 -0
  226. package/docs/04-operations/README.md +33 -0
  227. package/docs/04-operations/bug-flow.md +364 -0
  228. package/docs/04-operations/publishing.md +154 -0
  229. package/docs/04-operations/sync-and-update.md +522 -0
  230. package/docs/05-reference/README.md +34 -0
  231. package/docs/05-reference/command-cheatsheet.md +147 -0
  232. package/docs/05-reference/commands.md +234 -0
  233. package/docs/05-reference/model-selection.md +74 -0
  234. package/docs/05-reference/modules.md +110 -0
  235. package/docs/05-reference/trace-schema.md +154 -0
  236. package/docs/06-commands/README.md +75 -0
  237. package/docs/06-commands/explain-debug.md +32 -0
  238. package/docs/06-commands/explain-define-product.md +43 -0
  239. package/docs/06-commands/explain-dev-gen-test.md +28 -0
  240. package/docs/06-commands/explain-dev-run-test.md +24 -0
  241. package/docs/06-commands/explain-dev-smoke-test.md +25 -0
  242. package/docs/06-commands/explain-fix-bug.md +28 -0
  243. package/docs/06-commands/explain-generate-bdd.md +45 -0
  244. package/docs/06-commands/explain-generate-code.md +53 -0
  245. package/docs/06-commands/explain-generate-design-spec.md +54 -0
  246. package/docs/06-commands/explain-generate-prd.md +45 -0
  247. package/docs/06-commands/explain-generate-spec-manifest.md +20 -0
  248. package/docs/06-commands/explain-generate-tech-docs.md +56 -0
  249. package/docs/06-commands/explain-learn.md +21 -0
  250. package/docs/06-commands/explain-map-testids.md +28 -0
  251. package/docs/06-commands/explain-propose-scenario.md +24 -0
  252. package/docs/06-commands/explain-qc-analyze.md +22 -0
  253. package/docs/06-commands/explain-qc-design-test.md +20 -0
  254. package/docs/06-commands/explain-qc-plan.md +21 -0
  255. package/docs/06-commands/explain-qc-report.md +23 -0
  256. package/docs/06-commands/explain-qc-review.md +24 -0
  257. package/docs/06-commands/explain-qc-run-test.md +27 -0
  258. package/docs/06-commands/explain-refine-prd.md +51 -0
  259. package/docs/06-commands/explain-report-bug.md +24 -0
  260. package/docs/06-commands/explain-review-code.md +45 -0
  261. package/docs/06-commands/explain-review-context.md +68 -0
  262. package/docs/06-commands/explain-review-tech-docs.md +45 -0
  263. package/docs/06-commands/explain-setup-ai-first.md +25 -0
  264. package/docs/06-commands/explain-sync.md +24 -0
  265. package/docs/06-commands/explain-update-framework.md +22 -0
  266. package/docs/06-commands/explain-validate-traces.md +25 -0
  267. package/docs/README.md +53 -0
  268. package/docs/t-sample.md +826 -0
  269. package/hooks/data-guard.js +141 -0
  270. package/hooks/settings.json +18 -0
  271. package/modules/android-compose/module.yaml +13 -0
  272. package/modules/android-compose/stack-profile.yaml +57 -0
  273. package/modules/angular/architecture-snippets/component-patterns.md +187 -0
  274. package/modules/angular/module.yaml +6 -0
  275. package/modules/angular/stack-profile.yaml +38 -0
  276. package/modules/context-engineering/architecture-snippets/context-design.md +119 -0
  277. package/modules/context-engineering/module.yaml +9 -0
  278. package/modules/context-engineering/stack-profile.yaml +61 -0
  279. package/modules/dotnet/architecture-snippets/clean-arch.md +160 -0
  280. package/modules/dotnet/module.yaml +6 -0
  281. package/modules/dotnet/stack-profile.yaml +50 -0
  282. package/modules/flutter/module.yaml +14 -0
  283. package/modules/flutter/stack-profile.yaml +59 -0
  284. package/modules/golang/architecture-snippets/domain-layout.md +283 -0
  285. package/modules/golang/module.yaml +6 -0
  286. package/modules/golang/stack-profile.yaml +40 -0
  287. package/modules/ios-swiftui/module.yaml +13 -0
  288. package/modules/ios-swiftui/stack-profile.yaml +55 -0
  289. package/modules/java-spring/architecture-snippets/layered-arch.md +201 -0
  290. package/modules/java-spring/module.yaml +15 -0
  291. package/modules/java-spring/stack-profile.yaml +28 -0
  292. package/modules/nextjs/architecture-snippets/app-router-patterns.md +269 -0
  293. package/modules/nextjs/module.yaml +14 -0
  294. package/modules/nextjs/stack-profile.yaml +74 -0
  295. package/modules/nuxt/module.yaml +14 -0
  296. package/modules/nuxt/stack-profile.yaml +58 -0
  297. package/modules/php-laravel/architecture-snippets/service-repository.md +302 -0
  298. package/modules/php-laravel/module.yaml +15 -0
  299. package/modules/php-laravel/stack-profile.yaml +56 -0
  300. package/modules/qc-playwright/stack-profile.yaml +66 -0
  301. package/modules/react/architecture-snippets/hooks-query-patterns.md +254 -0
  302. package/modules/react/module.yaml +14 -0
  303. package/modules/react/stack-profile.yaml +63 -0
  304. package/modules/react-native/module.yaml +14 -0
  305. package/modules/react-native/stack-profile.yaml +56 -0
  306. package/modules/vue/module.yaml +14 -0
  307. package/modules/vue/stack-profile.yaml +65 -0
  308. package/package.json +49 -0
  309. package/readme.txt +1 -0
  310. package/rules/data-protection.md +80 -0
  311. package/rules/workflow.md +44 -0
  312. package/scripts/init.sh +49 -0
  313. package/scripts/migrate-specs.js +258 -0
  314. package/scripts/rename-prd-files.js +174 -0
  315. package/scripts/upgrade.sh +94 -0
  316. package/skills/code/SKILL.md +19 -0
  317. package/skills/code/SKILL.tmpl +19 -0
  318. package/skills/debug/SKILL.md +19 -0
  319. package/skills/debug/SKILL.tmpl +19 -0
  320. package/skills/design-spec/SKILL.md +11 -0
  321. package/skills/design-spec/SKILL.tmpl +11 -0
  322. package/skills/discovery/SKILL.md +14 -0
  323. package/skills/discovery/SKILL.tmpl +14 -0
  324. package/skills/prd/SKILL.md +19 -0
  325. package/skills/prd/SKILL.tmpl +19 -0
  326. package/skills/qc/qa-analyst/DOC_GAPS.template.md +63 -0
  327. package/skills/qc/qa-analyst/acceptance-criteria.md +60 -0
  328. package/skills/qc/qa-analyst/business-rules.md +59 -0
  329. package/skills/qc/qa-analyst/data-flow.md +64 -0
  330. package/skills/qc/qa-analyst/spec-breakdown.md +61 -0
  331. package/skills/qc/qa-designer/e2e/journey.md +41 -0
  332. package/skills/qc/qa-designer/exploratory/charter.md +68 -0
  333. package/skills/qc/qa-designer/exploratory/explore-to-functional.md +43 -0
  334. package/skills/qc/qa-designer/functional/api.md +45 -0
  335. package/skills/qc/qa-designer/functional/gui-feature.md +46 -0
  336. package/skills/qc/qa-designer/functional/gui-screen.md +52 -0
  337. package/skills/qc/qa-designer/integration/api.md +42 -0
  338. package/skills/qc/qa-designer/integration/db.md +39 -0
  339. package/skills/qc/qa-designer/integration/gui.md +40 -0
  340. package/skills/qc/qa-designer/integration/kafka.md +40 -0
  341. package/skills/qc/qa-designer/non-functional.md +40 -0
  342. package/skills/qc/qa-planner/test-plan.md +120 -0
  343. package/skills/qc/qa-reviewer/script/e2e.md +87 -0
  344. package/skills/qc/qa-reviewer/script/exploratory.md +45 -0
  345. package/skills/qc/qa-reviewer/script/functional.md +101 -0
  346. package/skills/qc/qa-reviewer/script/integration.md +91 -0
  347. package/skills/qc/qa-reviewer/script/non-functional.md +126 -0
  348. package/skills/qc/qa-reviewer/test-case/e2e.md +73 -0
  349. package/skills/qc/qa-reviewer/test-case/exploratory.md +43 -0
  350. package/skills/qc/qa-reviewer/test-case/functional.md +76 -0
  351. package/skills/qc/qa-reviewer/test-case/integration.md +69 -0
  352. package/skills/qc/qa-reviewer/test-case/non-functional.md +73 -0
  353. package/skills/qc/qa-runner/e2e.md +49 -0
  354. package/skills/qc/qa-runner/exploratory/session.md +36 -0
  355. package/skills/qc/qa-runner/functional/api.md +35 -0
  356. package/skills/qc/qa-runner/functional/gui-feature.md +51 -0
  357. package/skills/qc/qa-runner/functional/gui-screen.md +55 -0
  358. package/skills/qc/qa-runner/integration.md +47 -0
  359. package/skills/qc/qa-runner/non-functional.md +49 -0
  360. package/skills/qc/qa-runner/report/report.md +37 -0
  361. package/skills/setup-ai-first/SKILL.md +11 -0
  362. package/skills/setup-ai-first/SKILL.tmpl +11 -0
  363. package/skills/spec/SKILL.md +19 -0
  364. package/skills/spec/SKILL.tmpl +19 -0
  365. package/skills/test/SKILL.md +18 -0
  366. package/skills/test/SKILL.tmpl +18 -0
  367. package/steps/business-language.md +56 -0
  368. package/steps/capture-lesson.md +79 -0
  369. package/steps/context-loader.md +311 -0
  370. package/steps/gate.md +88 -0
  371. package/steps/report-footer.md +100 -0
  372. package/steps/review-fanout.md +159 -0
  373. package/steps/spawn-agent.md +129 -0
  374. package/steps/trace-mirror.md +26 -0
  375. package/templates/architecture.template.md +113 -0
  376. package/templates/design-spec.template.md +217 -0
  377. package/templates/feature.template +120 -0
  378. package/templates/platform-guide.template.md +145 -0
  379. package/templates/prd.template.md +224 -0
  380. package/templates/product-definition.template.md +188 -0
  381. package/templates/project-context.yaml +161 -0
  382. package/templates/tech-design.template.md +498 -0
@@ -0,0 +1,358 @@
1
+ # /setup-ai-first — Khởi tạo SDD Framework trong một dự án
2
+
3
+ Dẫn người dùng qua một setup một-lần tạo mọi thư mục cần thiết, cài CLAUDE.md, và verify môi trường.
4
+
5
+ ## Gate
6
+ {{include:steps/gate.md}}
7
+
8
+ *Lưu ý: Với lệnh này — **bỏ qua Gate Step 1, 2, và 3** (chưa có file input và chưa có project context). Chỉ chạy Step 0-B (model check). Project root là **thư mục làm việc hiện tại**. Đi thẳng tới Precondition Check bên dưới.*
9
+
10
+ ---
11
+
12
+ ## Precondition Check
13
+
14
+ Kiểm tra đã setup chưa:
15
+ - Nếu cả `CLAUDE.md` **và** `.agent/project-context.yaml` đều tồn tại → hỏi: "Dự án này đã được khởi tạo. Chạy lại setup để regenerate file config? (Y/N)"
16
+ - N → dừng
17
+ - Y → tiếp tục (file có sẵn được giữ — mỗi bước sẽ đề nghị merge/skip)
18
+ - Nếu chỉ có `specs/` hoặc phát hiện setup một phần → tiếp tục bình thường (an toàn chạy lại)
19
+
20
+ ## Step 0.5 — Loại dự án
21
+
22
+ Hỏi người dùng:
23
+
24
+ ```
25
+ Dự án này thuộc loại nào?
26
+ 1. Single-service — một codebase, một platform (setup chuẩn)
27
+ 2. Umbrella repo — repo này chứa nhiều service submodule (microservices / multi-app)
28
+ 3. PO Spec repo — chỉ docs, không có code chạy được (chỉ PRD + design-spec)
29
+ ```
30
+
31
+ Lưu câu trả lời thành `project_type`. Mặc định `1` nếu user không trả lời.
32
+
33
+ Dựa trên câu trả lời:
34
+
35
+ **project_type = 1 (Single-service):** Tiếp tục setup chuẩn bên dưới.
36
+
37
+ **project_type = 2 (Umbrella):** Hỏi hai câu follow-up:
38
+ - "Path tới spec submodule (vd `free-trial-specs`)? Nhấn Enter để skip."
39
+ - "Liệt kê các service dạng cặp `domain:module`, ngăn cách bởi dấu phẩy
40
+ (vd `user:java-spring,order:java-spring`). Nhấn Enter để skip."
41
+
42
+ Rồi:
43
+ - Skip tạo bất kỳ artifact `specs/` nào (mọi spec — PRD, BDD, tech-docs, design-spec — sống trong spec submodule theo bố cục feature-package `specs/{domain}/{prd-slug}/`)
44
+ - Chỉ tạo: `.trace/`, `.agent/review/` ở cấp umbrella
45
+ *(Trừ khi user yêu cầu rõ tạo cấu trúc đầy đủ)*
46
+ - Sinh `.agent/project-context.yaml` ở umbrella mode với services và spec_source đã cung cấp
47
+ - Skip tạo `CLAUDE.md` (umbrella không có một tech stack đơn)
48
+ - Sau setup, nhắc: "Mở từng service submodule riêng trong Claude Code để cài framework ở đó nếu cần."
49
+
50
+ **project_type = 3 (PO Spec repo):**
51
+ - Tạo base dir: `specs/product-definition/`, `specs/domain-knowledge/`, `feedback/`, `.agent/review/`
52
+ - Artifact theo từng feature (`specs/{domain}/{prd-slug}/{ {TICKET-ID}-{prd-slug}.md, bdd/, tech-docs/, design-spec/}`) được tạo on demand bởi các lệnh generate — ĐỪNG tạo trước
53
+ - Skip: `.trace/` (theo service, sống cạnh code trong mỗi service submodule)
54
+ - Sinh `CLAUDE.md` tối thiểu chỉ với §1 (project overview) và §7 (git conventions)
55
+ - Hỏi người dùng: **"Liệt kê các business domain của bạn (vd auth, payment, loyalty):"** — lưu thành domain list cho `project-context.yaml` và nhắc PO các tên này phải được dùng nhất quán ở row `| **Domain** |` của bảng Metadata trong mọi PRD
56
+ - Thông báo:
57
+ - Lệnh cho PO repo: `/define-product`, `/generate-prd`, `/review-context`, `/generate-design-spec`
58
+ - **Quan trọng cho handoff team dev:** Mọi PRD phải có row `| **Domain** | {domain} |` trong **bảng Metadata**. Team dev dùng nó để route BDD/code sinh ra tới đúng service submodule. Tên domain không nhất quán sẽ phá routing.
59
+ - Bảng Metadata PRD (do `/generate-prd` điền sẵn theo template):
60
+ ```
61
+ | **Domain** | {domain} | ← phải khớp một key trong services config của team dev
62
+ | **Ticket** | {TICKET-ID} |
63
+ | **Status** | draft | approved |
64
+ ```
65
+
66
+ ## Step 1 — Tạo cấu trúc thư mục
67
+
68
+ Tạo các thư mục này (skip nếu đã tồn tại):
69
+
70
+ ```
71
+ {project-root}/
72
+ ├── specs/
73
+ │ ├── product-definition/ ← Output của /define-product
74
+ │ └── domain-knowledge/ ← business dictionary & domain context
75
+ ├── .trace/ ← .trace/{domain}/{prd-slug}/{UC-ID}-{platform}.tsv
76
+ └── .agent/
77
+ └── review/
78
+ ```
79
+
80
+ **Bố cục feature-package** — artifact spec theo từng feature KHÔNG được tạo trước. Mỗi lệnh generate
81
+ tự tạo folder của nó on demand dưới `specs/{domain}/{prd-slug}/`:
82
+
83
+ ```
84
+ specs/{domain}/{prd-slug}/
85
+ ├── {TICKET-ID}-{prd-slug}.md ← /generate-prd (vd SEG01-segment-scoring-service.md)
86
+ ├── bdd/ ← /generate-bdd (file .feature)
87
+ ├── tech-docs/ ← /generate-tech-docs
88
+ └── design-spec/ ← /generate-design-spec (chỉ platform FE/App)
89
+ ```
90
+
91
+ *Tạo base dir nào tuỳ theo `project_type` set ở Step 0.5:*
92
+
93
+ | project_type | Tạo | Skip |
94
+ |---|---|---|
95
+ | **1 — Single-service** | Cấu trúc base ở trên (`specs/product-definition/`, `specs/domain-knowledge/`, `.trace/`, `.agent/review/`) | folder theo feature (tạo on demand) |
96
+ | **2 — Umbrella** | Chỉ `.trace/` + `.agent/review/` (ở umbrella root) | Mọi thứ khác — **toàn bộ spec sống trong spec submodule (`spec_source`)** dưới `specs/{domain}/{prd-slug}/`; service submodule chỉ chứa **code + `.trace/`** |
97
+ | **3 — PO Spec repo** | `specs/product-definition/`, `specs/domain-knowledge/`, **`feedback/`**, `.agent/review/` (folder `specs/{domain}/{prd-slug}/` theo feature tạo on demand) | `.trace/` (theo service, sống cạnh code trong mỗi service submodule) |
98
+
99
+ ## Step 2 — Tạo CLAUDE.md
100
+
101
+ *Bỏ qua hoàn toàn step này nếu `project_type = 2` (Umbrella) — umbrella không có một tech stack đơn.*
102
+ *Với `project_type = 3` (PO Spec repo) — tạo CLAUDE.md tối thiểu chỉ với §1 (project overview) và §7 (git conventions). Skip §2–§6.*
103
+
104
+ Kiểm tra `CLAUDE.md` tồn tại chưa:
105
+ - Có → hỏi "Merge template hay skip?"
106
+ - Không → tạo từ template bên dưới
107
+
108
+ Sau khi tạo, hướng dẫn: "Mở CLAUDE.md và điền các giá trị `{{PLACEHOLDER}}` bằng thông tin dự án của bạn."
109
+
110
+ ### CLAUDE.md Template
111
+
112
+ ```
113
+ # §1. Project Overview
114
+ Project: {{PROJECT_NAME}}
115
+ Language: {{LANGUAGE}}
116
+ Framework: {{FRAMEWORK}}
117
+ Build: {{BUILD_COMMAND}}
118
+ Test: {{TEST_COMMAND}}
119
+ Domains: {{COMMA_SEPARATED_DOMAINS}}
120
+
121
+ # §2. Architecture
122
+ layers: "{{LAYER_STACK}}"
123
+ # Example: Controller → Facade → Service → Repository
124
+ rules:
125
+ - "Controllers must not contain business logic"
126
+ - "Services own transaction boundaries"
127
+
128
+ # §3. Coding Standards
129
+ naming:
130
+ classes: "{{NAMING_CONVENTION}}"
131
+ methods: "{{METHOD_CONVENTION}}"
132
+ response_wrapper: "{{WRAPPER}}"
133
+ forbidden:
134
+ - "Magic numbers"
135
+ - "Debug print statements"
136
+
137
+ # §4. Traceability
138
+ # Every controller method must be tagged:
139
+ # @trace.implements={UC-ID}-{SC-ID}
140
+ # @trace.source=specs/{domain}/{prd-slug}/bdd/{UC-ID}.feature ← adjust if specs_dir differs in .agent/project-context.yaml
141
+ # Tests must be tagged:
142
+ # @trace.verifies={UC-ID}
143
+
144
+ # §5. Error Handling
145
+ not_found: "{{NOT_FOUND_EXCEPTION}}"
146
+ http_codes: { get: 200, create: 201, not_found: 404, validation: 400 }
147
+
148
+ # §6. Build & Test
149
+ build_command: "{{BUILD_COMMAND}}"
150
+ test_command: "{{TEST_COMMAND}}"
151
+ run_command: "{{RUN_COMMAND}}"
152
+
153
+ # §7. Git Conventions
154
+ branch_feature: "feature/{{TICKET_PREFIX}}-{N}-{slug}"
155
+ commit_feature: "feat({{TICKET_PREFIX}}-{N}): {description}"
156
+ ```
157
+
158
+ ## Step 3 — Tạo project-context.yaml
159
+
160
+ *Với `project_type = 2` (Umbrella):*
161
+ - *Nếu `.agent/project-context.yaml` đã được sinh bởi `--init --umbrella` → mở nó và verify/sửa section `services` (domain key, path, module). Skip copy template bên dưới.*
162
+ - *Nếu chưa sinh → hỏi: "Path spec submodule?" và "Services (cặp domain:module)?" rồi sinh config umbrella (xem Step 0.5 cho format).*
163
+
164
+ Tạo `.agent/project-context.yaml` dùng `.agent/templates/project-context.yaml` làm template nguồn.
165
+
166
+ Copy template và hướng dẫn: "Mở `.agent/project-context.yaml` và điền mọi giá trị `{{PLACEHOLDER}}`. Section `paths` đã được cấu hình sẵn với default hợp lý — chỉnh nếu dự án dùng tên thư mục khác."
167
+
168
+ ## Step 4 — Tạo business-dictionary.md
169
+
170
+ *Skip Step 4 và 5 nếu `project_type = 2` (Umbrella) — business dictionary và core entities sống trong spec submodule và do team PO quản lý. Team dev đọc chúng từ `{spec_source}/specs/domain-knowledge/`.*
171
+
172
+
173
+ Tạo `specs/domain-knowledge/business-dictionary.md` nếu chưa tồn tại:
174
+
175
+ ```markdown
176
+ # Business Dictionary — {{PROJECT_NAME}}
177
+
178
+ > Thuật ngữ chuẩn cho dự án này. Mọi PRD, BDD spec, và code phải theo các thuật ngữ này.
179
+ > Managed by: PO / SA team.
180
+
181
+ ## Canonical Terms
182
+
183
+ | Canonical Term | Description / Context |
184
+ |----------------|----------------------|
185
+ | {Term} | {Short description, usage scope} |
186
+
187
+ ## Banned Terms
188
+
189
+ | ❌ Do NOT use | ✅ Use instead | Reason |
190
+ |---------------|-------------------|--------|
191
+ | {banned} | {canonical} | {why} |
192
+
193
+ ## Status / Enum Registry
194
+
195
+ | Entity | Field | Allowed Values |
196
+ |--------|---------|--------------------|
197
+ | {Entity} | status | {value1, value2} |
198
+ ```
199
+
200
+ Hướng dẫn: "Mở `specs/domain-knowledge/business-dictionary.md` và thêm thuật ngữ dự án của bạn. File này sẽ được mọi lệnh đọc để enforce naming nhất quán."
201
+
202
+ ## Step 5 — Tạo core-entities.md
203
+
204
+ Tạo `specs/domain-knowledge/core-entities.md` nếu chưa tồn tại:
205
+
206
+ ```markdown
207
+ # Core Entities — {{PROJECT_NAME}}
208
+
209
+ > Glossary entity máy-đọc-được cho phát triển có AI hỗ trợ.
210
+ > Được mọi lệnh nạp để AI biết domain model của bạn mà không cần đọc source code.
211
+ > Managed by: Tech Lead / Architect.
212
+ >
213
+ > HOW TO USE:
214
+ > - Add one `## Entity: {Name}` section per domain entity (aggregate root, value object, etc.)
215
+ > - Keep field descriptions concise — this is a REFERENCE, not API docs
216
+ > - Update this file whenever you add/rename fields or change business invariants
217
+
218
+ ---
219
+
220
+ ## Entity: {EntityName}
221
+
222
+ **Purpose**: {1-2 sentences — what this entity represents and why it exists in the domain}
223
+ **Domain**: {domain}
224
+ **Storage**: {e.g., `orders` table in PostgreSQL | `orders` collection in MongoDB}
225
+ **Owner service**: {service/module that owns this entity}
226
+
227
+ | Field | Type | Nullable | Description |
228
+ |--------------|---------|----------|-------------------------------------|
229
+ | id | UUID | No | Primary key |
230
+ | {field_name} | {type} | Yes/No | {short description} |
231
+ | status | Enum | No | See Status Registry in business-dictionary.md |
232
+
233
+ **Business invariants:**
234
+ - {Rule 1: e.g., "status can only transition: PENDING → ACTIVE → CLOSED"}
235
+ - {Rule 2: e.g., "total must equal sum of line items"}
236
+
237
+ **Relationships:**
238
+ - `{EntityA}` 1:N `{EntityB}` — {one sentence description}
239
+ - `{EntityA}` N:N `{EntityC}` via `{junction_table}` — {description}
240
+
241
+ ---
242
+
243
+ ## Entity: {AnotherEntity}
244
+
245
+ *(Add more entities following the same pattern above)*
246
+ ```
247
+
248
+ Hướng dẫn: "Mở `specs/domain-knowledge/core-entities.md` và định nghĩa các domain entity chính. Bắt đầu với aggregate root. File này được mọi lệnh AI nạp — định nghĩa tốt ở đây tiết kiệm đáng kể qua-lại khi sinh code."
249
+
250
+ ## Step 6 — Cài VS Code Extension (Khuyến nghị)
251
+
252
+ Khuyến nghị user cài extension VS Code **Spec Driven Docs Tools** — nó cung cấp panel Review Board + Living Documentation tích hợp với workflow này.
253
+
254
+ ```bash
255
+ code --install-extension SpecDrivenDocsTools.spec-driven-docs-tool
256
+ ```
257
+
258
+ Hoặc: VS Code → `Ctrl+Shift+P` → **"Extensions: Install from Marketplace"** → tìm **Spec Driven Docs Tools**.
259
+
260
+ **Nó làm gì:**
261
+ - 📋 **Review Board** — UI trực quan để review findings từ `/refine-prd`, `/review-context`, `/review-tech-docs`
262
+ - 📊 **Living Documentation** — dashboard traceability dựa trên `.trace/*.tsv`
263
+
264
+ ## Step 7 — Verify
265
+
266
+ Checklist tuỳ theo `project_type`:
267
+
268
+ **project_type = 1 (Single-service):**
269
+ - [ ] `specs/` tồn tại
270
+ - [ ] `specs/product-definition/` tồn tại
271
+ - [ ] `specs/domain-knowledge/` tồn tại
272
+ - [ ] `.trace/` tồn tại
273
+ *(folder `specs/{domain}/{prd-slug}/` theo feature tạo on demand — không check ở đây)*
274
+ - [ ] `.agent/project-context.yaml` tồn tại
275
+ - [ ] `CLAUDE.md` tồn tại
276
+ - [ ] `specs/domain-knowledge/business-dictionary.md` tồn tại
277
+ - [ ] `specs/domain-knowledge/core-entities.md` tồn tại
278
+
279
+ **project_type = 2 (Umbrella):**
280
+ - [ ] `.agent/project-context.yaml` tồn tại với `setup.mode: umbrella`
281
+ - [ ] Section `services` có ít nhất một entry với đúng domain key
282
+ - [ ] Path `spec_source` tồn tại (vd thư mục `my-project-specs/` có mặt)
283
+ - [ ] `.agent/review/` tồn tại
284
+ - [ ] Spec submodule đã init: `git submodule status` không hiện prefix `-`
285
+
286
+ **project_type = 3 (PO Spec repo):**
287
+ - [ ] `specs/product-definition/` tồn tại
288
+ - [ ] `specs/domain-knowledge/` tồn tại
289
+ - [ ] `feedback/` tồn tại
290
+ *(folder `specs/{domain}/{prd-slug}/` theo feature tạo on demand — không check ở đây)*
291
+ - [ ] `.agent/review/` tồn tại
292
+ - [ ] `.agent/project-context.yaml` tồn tại
293
+ - [ ] `CLAUDE.md` tồn tại (tối thiểu)
294
+ - [ ] `specs/domain-knowledge/business-dictionary.md` tồn tại
295
+ - [ ] `specs/domain-knowledge/core-entities.md` tồn tại
296
+
297
+ ## Output
298
+
299
+ {{include:steps/report-footer.md}}
300
+
301
+ ```
302
+ /setup-ai-first Hoàn tất ✅
303
+ ```
304
+
305
+ Output tuỳ theo `project_type`:
306
+
307
+ **Single-service:**
308
+ ```
309
+ Next:
310
+ 1. Điền CLAUDE.md (thay các giá trị {{PLACEHOLDER}})
311
+ 2. Điền .agent/project-context.yaml
312
+ 3. Điền specs/domain-knowledge/business-dictionary.md
313
+ 4. Điền specs/domain-knowledge/core-entities.md
314
+ 5. git add và commit 4 file đó
315
+ 6. Cài VS Code extension:
316
+ code --install-extension SpecDrivenDocsTools.spec-driven-docs-tool
317
+ 7. /define-product để bắt đầu feature đầu tiên
318
+ ```
319
+
320
+ **Umbrella:**
321
+ ```
322
+ Next:
323
+ 1. Review .agent/project-context.yaml:
324
+ - Cập nhật services[].path khớp tên thư mục submodule thực tế
325
+ - Cập nhật domain key của services khớp row `Domain` (bảng Metadata) trong các file PRD
326
+ - Xác nhận path spec_source đúng
327
+
328
+ 2. Chạy /sync — một lệnh lo mọi thứ còn lại:
329
+ /sync
330
+ → git pull + submodule init + spec submodule update
331
+ → Tự tạo .agent/project-context.yaml cho mỗi service submodule
332
+ (phát hiện module từ pom.xml / go.mod / package.json / pubspec.yaml v.v.)
333
+ → Sync Living Docs panel
334
+ → Refresh spec-manifest.yaml
335
+
336
+ 3. Bắt đầu sinh:
337
+ /generate-bdd {spec_source}/specs/{domain}/{prd-slug}/{TICKET-ID}-{prd-slug}.md
338
+ ```
339
+
340
+ **PO Spec repo:**
341
+ ```
342
+ Next:
343
+ 1. Điền .agent/project-context.yaml:
344
+ - domains: [liệt kê mọi business domain — chúng thành row `Domain` (bảng Metadata) trong PRD]
345
+ - project.name, project.description
346
+ 2. Điền specs/domain-knowledge/business-dictionary.md ← canonical terms
347
+ 3. Điền specs/domain-knowledge/core-entities.md ← entity glossary
348
+ 4. git add và commit các file đó
349
+ 5. Cài VS Code extension:
350
+ code --install-extension SpecDrivenDocsTools.spec-driven-docs-tool
351
+ 6. /define-product để bắt đầu feature đầu tiên
352
+
353
+ ⚠️ Nhắc handoff team dev:
354
+ - Mỗi PRD phải có row `Domain` (bảng Metadata) khớp một trong domains list của bạn
355
+ - Khi team dev setup umbrella repo của họ, họ map các tên domain này
356
+ tới path service submodule trong section services của project-context.yaml
357
+ - Chia sẻ tên domain với team dev trước khi họ cấu hình umbrella
358
+ ```