@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,14 @@
1
+ name: "React"
2
+ version: "1.0.0"
3
+ description: "React 18 SPA with hooks, React Query, and Zustand"
4
+ language: "TypeScript"
5
+ framework: "React"
6
+ stack_type: "frontend"
7
+ default_layer_order:
8
+ - Types / interfaces
9
+ - API client (React Query hooks)
10
+ - State store (Zustand)
11
+ - Custom hooks (business logic)
12
+ - UI components (presentational)
13
+ - Page / feature components (container)
14
+ test_framework: "Vitest + React Testing Library"
@@ -0,0 +1,63 @@
1
+ build:
2
+ compile: "npm run build"
3
+ test: "npm test"
4
+ run: "npm run dev"
5
+ lint: "npm run lint"
6
+
7
+ architecture:
8
+ style: "Feature-based (components → hooks → queries → store)"
9
+ key_rules:
10
+ - "Business logic lives in custom hooks, not in components"
11
+ - "Server state managed by React Query (useQuery / useMutation)"
12
+ - "Client-only UI state managed by Zustand or useState"
13
+ - "Components must be pure functions — no direct API calls inside JSX"
14
+ - "Shared UI primitives in components/ui/, feature logic in features/{name}/"
15
+ - "Never fetch data directly in a component — use a custom hook"
16
+ folder_structure: |
17
+ src/
18
+ ├── api/ ← axios instance, interceptors
19
+ ├── components/
20
+ │ └── ui/ ← reusable primitives (Button, Modal, Table...)
21
+ ├── features/
22
+ │ └── {domain}/
23
+ │ ├── components/ ← feature-specific UI
24
+ │ ├── hooks/ ← useOrderList, useCreateOrder...
25
+ │ ├── queries/ ← React Query definitions
26
+ │ ├── store/ ← Zustand slice (if needed)
27
+ │ └── types.ts
28
+ ├── pages/ ← route-level page components
29
+ └── lib/ ← utilities, formatters, constants
30
+
31
+ coding_standards:
32
+ naming:
33
+ components: "PascalCase (e.g., OrderList, CreateOrderModal)"
34
+ hooks: "camelCase with 'use' prefix (e.g., useOrderList, useCreateOrder)"
35
+ query_keys: "SCREAMING_SNAKE_CASE array (e.g., ['ORDER_LIST', customerId])"
36
+ stores: "camelCase + Store suffix (e.g., useCartStore)"
37
+ files:
38
+ component: "{Feature}.tsx"
39
+ hook: "use{Feature}.ts"
40
+ query: "{feature}.queries.ts"
41
+ store: "{feature}.store.ts"
42
+ types: "{feature}.types.ts"
43
+ patterns:
44
+ data_fetching: "React Query (TanStack Query v5)"
45
+ global_state: "Zustand slices"
46
+ forms: "React Hook Form + Zod validation"
47
+ api_client: "Axios with interceptors for auth + error handling"
48
+ error_boundary: "React ErrorBoundary wraps each feature route"
49
+
50
+ testing:
51
+ unit: "Vitest + React Testing Library"
52
+ e2e: "Playwright or Cypress"
53
+ patterns:
54
+ - "Test behavior, not implementation — query by role/label, not className"
55
+ - "Mock React Query with a QueryClient wrapper in test setup"
56
+ - "Use MSW (Mock Service Worker) to mock API calls in tests"
57
+ - "renderWithProviders() helper wraps component with QueryClient + Router"
58
+
59
+ trace_tags:
60
+ implements: "// @trace.implements={UC-ID}-SC{N}"
61
+ source: "// @trace.source=specs/{domain}/{prd-slug}/bdd/{UC-ID}.feature"
62
+ verifies: "// @trace.verifies={UC-ID}"
63
+ test_type: "// @trace.test_type=unit|integration"
@@ -0,0 +1,14 @@
1
+ name: "React Native"
2
+ version: "1.0.0"
3
+ description: "Cross-platform mobile (iOS + Android) with React Native / Expo"
4
+ language: "TypeScript"
5
+ framework: "React Native"
6
+ stack_type: "mobile"
7
+ default_layer_order:
8
+ - Types / interfaces
9
+ - API client (React Query hooks)
10
+ - State store (Zustand)
11
+ - Custom hooks (business logic)
12
+ - UI components (presentational)
13
+ - Screen / feature components (container)
14
+ test_framework: "Jest + React Native Testing Library"
@@ -0,0 +1,56 @@
1
+ build:
2
+ compile: "npx expo export / npx react-native build-android"
3
+ test: "jest"
4
+ run: "npx expo start / npx react-native run-ios"
5
+ lint: "eslint . && tsc --noEmit"
6
+
7
+ architecture:
8
+ style: "Feature-based (screens → hooks → queries → store)"
9
+ key_rules:
10
+ - "Business logic lives in custom hooks, not in screen components"
11
+ - "Server state managed by React Query (TanStack Query)"
12
+ - "Navigation state managed by React Navigation"
13
+ - "Native modules wrapped in a service layer — never called directly in components"
14
+ - "Shared UI primitives in src/components/ui/, feature screens in src/features/{name}/"
15
+ folder_structure: |
16
+ src/
17
+ ├── api/ ← axios instance, interceptors
18
+ ├── components/
19
+ │ └── ui/ ← reusable primitives (AppButton, AppInput...)
20
+ ├── features/
21
+ │ └── {domain}/
22
+ │ ├── components/
23
+ │ ├── hooks/
24
+ │ ├── queries/
25
+ │ └── screens/
26
+ ├── navigation/ ← React Navigation stacks/tabs
27
+ ├── store/ ← Zustand slices
28
+ └── lib/ ← utils, formatters, constants
29
+
30
+ coding_standards:
31
+ naming:
32
+ components: "PascalCase (e.g., OrderListScreen, CreateOrderForm)"
33
+ hooks: "camelCase with 'use' prefix (e.g., useOrderList)"
34
+ screens: "PascalCase + Screen suffix (e.g., OrderDetailScreen)"
35
+ files:
36
+ screen: "{Feature}Screen.tsx"
37
+ component: "{Feature}.tsx"
38
+ hook: "use{Feature}.ts"
39
+ patterns:
40
+ state_management: "Zustand + React Query"
41
+ navigation: "React Navigation v6 (Stack + Tab + Drawer)"
42
+ networking: "Axios"
43
+ forms: "React Hook Form + Zod"
44
+ storage: "MMKV or AsyncStorage"
45
+
46
+ testing:
47
+ unit: "Jest + React Native Testing Library"
48
+ e2e: "Detox or Maestro"
49
+ patterns:
50
+ - "Test by accessibility label or testID — never by style/className"
51
+ - "Mock native modules in jest setup"
52
+ - "Use renderWithProviders() with NavigationContainer + QueryClient"
53
+
54
+ trace_tags:
55
+ implements: "// @trace.implements={UC-ID}-SC{N}"
56
+ source: "// @trace.source=specs/{domain}/{prd-slug}/bdd/{UC-ID}.feature"
@@ -0,0 +1,14 @@
1
+ name: "Vue"
2
+ version: "1.0.0"
3
+ description: "Vue 3 SPA with Composition API, Pinia, and Vue Query"
4
+ language: "TypeScript"
5
+ framework: "Vue 3"
6
+ stack_type: "frontend"
7
+ default_layer_order:
8
+ - Types / interfaces
9
+ - API client (Vue Query / composables)
10
+ - State store (Pinia)
11
+ - Composables (business logic)
12
+ - UI components (presentational)
13
+ - Page / feature components (container)
14
+ test_framework: "Vitest + Vue Test Utils"
@@ -0,0 +1,65 @@
1
+ build:
2
+ compile: "npm run build"
3
+ test: "npm run test"
4
+ run: "npm run dev"
5
+ lint: "npm run lint"
6
+
7
+ architecture:
8
+ style: "Feature-based (components → composables → queries → store)"
9
+ key_rules:
10
+ - "Business logic lives in composables, not in component setup()"
11
+ - "Server state managed by Vue Query (@tanstack/vue-query)"
12
+ - "Client-only UI state managed by Pinia stores"
13
+ - "Components must be pure — no direct API calls inside <template> or setup()"
14
+ - "Shared UI primitives in components/ui/, feature logic in features/{name}/"
15
+ - "Never fetch data directly in a component — use a composable"
16
+ - "Props defined with defineProps<{}>(), emits with defineEmits<{}>()"
17
+ folder_structure: |
18
+ src/
19
+ ├── api/ ← axios instance, interceptors
20
+ ├── components/
21
+ │ └── ui/ ← reusable primitives (BaseButton, BaseInput...)
22
+ ├── features/
23
+ │ └── {domain}/
24
+ │ ├── components/ ← feature-specific UI
25
+ │ ├── composables/ ← useOrderList, useCreateOrder...
26
+ │ ├── queries/ ← Vue Query definitions
27
+ │ ├── store/ ← Pinia slice (if needed)
28
+ │ └── types.ts
29
+ ├── pages/ ← route-level page components (Vue Router)
30
+ ├── router/ ← route definitions
31
+ └── lib/ ← utilities, formatters, constants
32
+
33
+ coding_standards:
34
+ naming:
35
+ components: "PascalCase (e.g., OrderList, CreateOrderModal)"
36
+ composables: "camelCase with 'use' prefix (e.g., useOrderList, useCreateOrder)"
37
+ stores: "camelCase + Store suffix (e.g., useCartStore) — defined with defineStore()"
38
+ query_keys: "SCREAMING_SNAKE_CASE string/array (e.g., ['ORDER_LIST', customerId])"
39
+ files:
40
+ component: "{Feature}.vue"
41
+ composable: "use{Feature}.ts"
42
+ query: "{feature}.queries.ts"
43
+ store: "{feature}.store.ts"
44
+ types: "{feature}.types.ts"
45
+ patterns:
46
+ data_fetching: "Vue Query (TanStack Query v5 for Vue)"
47
+ global_state: "Pinia stores"
48
+ forms: "VeeValidate + Zod"
49
+ api_client: "Axios with interceptors for auth + error handling"
50
+ reactivity: "ref() for primitives, reactive() for objects, computed() for derived state"
51
+
52
+ testing:
53
+ unit: "Vitest + Vue Test Utils"
54
+ e2e: "Playwright or Cypress"
55
+ patterns:
56
+ - "Test behavior, not implementation — query by role/label via @testing-library/vue"
57
+ - "Mock Vue Query with VueQueryPlugin wrapper in test setup"
58
+ - "Use MSW (Mock Service Worker) to mock API calls in tests"
59
+ - "mountWithProviders() helper wraps component with Pinia + VueQuery + Router"
60
+
61
+ trace_tags:
62
+ implements: "// @trace.implements={UC-ID}-SC{N}"
63
+ source: "// @trace.source=specs/{domain}/{prd-slug}/bdd/{UC-ID}.feature"
64
+ verifies: "// @trace.verifies={UC-ID}"
65
+ test_type: "// @trace.test_type=unit|integration"
package/package.json ADDED
@@ -0,0 +1,49 @@
1
+ {
2
+ "name": "@edupia-tutor/spec-driven-docs",
3
+ "version": "0.14.0",
4
+ "description": "AI-First Spec-Driven Development workflow framework for Claude Code",
5
+ "bin": {
6
+ "spec-driven-docs": "./bin/index.js"
7
+ },
8
+ "scripts": {
9
+ "build": "node bin/build.js",
10
+ "prepublishOnly": "node bin/build.js",
11
+ "pub": "npm publish --access=public",
12
+ "dev": "node bin/build.js && node bin/index.js --init",
13
+ "prepack": "node -e \"const fs=require('fs'); ['README.md','PUBLISHING.md','SETUP_GUIDE.md'].forEach(f=>{ if(fs.existsSync(f)) fs.renameSync(f,'__'+f); });\"",
14
+ "postpack": "node -e \"const fs=require('fs'); ['README.md','PUBLISHING.md','SETUP_GUIDE.md'].forEach(f=>{ if(fs.existsSync('__'+f)) fs.renameSync('__'+f,f); });\""
15
+ },
16
+ "files": [
17
+ "bin/",
18
+ "commands/",
19
+ "core/",
20
+ "hooks/",
21
+ "modules/",
22
+ "rules/",
23
+ "scripts/",
24
+ "skills/",
25
+ "steps/",
26
+ "templates/",
27
+ "docs/"
28
+ ],
29
+ "keywords": [
30
+ "claude-code",
31
+ "spec-driven",
32
+ "ai-first",
33
+ "bdd",
34
+ "traceability",
35
+ "workflow"
36
+ ],
37
+ "author": "Edupia Team",
38
+ "license": "MIT",
39
+ "repository": {
40
+ "type": "git",
41
+ "url": "https://github.com/edupia-tutor/spec-driven-docs"
42
+ },
43
+ "engines": {
44
+ "node": ">=14"
45
+ },
46
+ "publishConfig": {
47
+ "access": "public"
48
+ }
49
+ }
@@ -0,0 +1,80 @@
1
+ # Data Protection Rules
2
+
3
+ > These rules are loaded by `steps/context-loader.md` at the start of every command.
4
+ > AI agents MUST follow these rules without exception.
5
+
6
+ ---
7
+
8
+ ## NEVER Read — Sensitive Files
9
+
10
+ The following file patterns contain credentials, secrets, or private keys.
11
+ **Do NOT read, display, log, or reference their contents under any circumstance.**
12
+
13
+ ### Environment & Secrets
14
+ - `.env`
15
+ - `.env.*` (e.g., `.env.local`, `.env.production`, `.env.staging`)
16
+ - `*.secret`
17
+ - `secrets/` (entire directory)
18
+ - `.secrets/` (entire directory)
19
+ - `*credentials*`
20
+
21
+ ### Cryptographic Keys & Certificates
22
+ - `*.key`
23
+ - `*.pem`
24
+ - `*.p12`
25
+ - `*.pfx`
26
+ - `*.jks`
27
+ - `*.keystore`
28
+ - `*.crt` / `*.cert`
29
+
30
+ ### Framework-Specific Config Files (may contain DB passwords, API keys)
31
+ - `application-prod.yml` / `application-prod.properties`
32
+ - `application-production.yml`
33
+ - `appsettings.Production.json`
34
+ - `appsettings.Staging.json`
35
+ - `database.yml` (Rails)
36
+ - `config/master.key` (Rails)
37
+ - `storage/oauth-private.key`
38
+
39
+ ### Files Matching Dangerous Keywords
40
+ Any file whose name contains (case-insensitive):
41
+ - `password`
42
+ - `passwd`
43
+ - `secret`
44
+ - `private_key`
45
+ - `api_key`
46
+ - `access_token`
47
+ - `auth_token`
48
+
49
+ ---
50
+
51
+ ## NEVER Write or Modify
52
+
53
+ - Any file listed above
54
+ - `*.lock` files that are not package lock files (e.g., `*.lock` outside of `package-lock.json`, `yarn.lock`, `composer.lock`)
55
+
56
+ ---
57
+
58
+ ## NEVER Execute via Bash
59
+
60
+ - Commands that print secrets: `printenv`, `env | grep -i secret`, `cat .env`
61
+ - Commands that expose credentials: `docker inspect`, `kubectl get secret -o yaml`
62
+ - Git commands that may expose history of secrets: `git show`, `git log -p` on config files
63
+
64
+ ---
65
+
66
+ ## Safe Alternatives
67
+
68
+ If context about environment configuration is needed:
69
+
70
+ 1. Ask the user to describe the configuration **without sharing actual values**.
71
+ 2. Reference the **structure** of config (keys, not values): "I see you use `DATABASE_URL` — I'll generate code that reads from that variable."
72
+ 3. Use placeholder values in generated code: `process.env.DATABASE_URL` or `${DATABASE_URL}`.
73
+
74
+ ---
75
+
76
+ ## If a Sensitive File is Accidentally Accessed
77
+
78
+ 1. Do NOT display or repeat any content from the file.
79
+ 2. Immediately stop and notify the user: "I've detected a sensitive file. I will not read or use its contents."
80
+ 3. Ask the user what they actually need (usually it's the structure, not the values).
@@ -0,0 +1,44 @@
1
+ # Workflow Rules
2
+
3
+ > General AI behavior rules for all spec-driven-docs commands.
4
+ > Loaded by `steps/context-loader.md` at the start of every command.
5
+
6
+ ---
7
+
8
+ ## Checkpoints
9
+
10
+ - **Always** show a CHECKPOINT before making significant changes.
11
+ - A CHECKPOINT must include: what will be done, which files will be created/modified, estimated scope.
12
+ - Wait for explicit "Y" or user confirmation before proceeding.
13
+ - Exception: read-only analysis commands (`/review-code`, `/validate-traces`, `/debug`) may skip CHECKPOINT.
14
+
15
+ ## Scope Control
16
+
17
+ - Work only within the scope explicitly confirmed at CHECKPOINT.
18
+ - Do NOT create files outside the directories specified in `project-context.yaml → paths`.
19
+ - If new scope is discovered mid-command, STOP and ask: "I found additional scope [{description}]. Should I include it? (Y/N)"
20
+
21
+ ## Code Generation
22
+
23
+ - Never generate code for files not backed by a `.feature` spec (unless `/fix-bug` or `/debug`).
24
+ - Always add `@trace.implements` tags on controller-level methods.
25
+ - Never overwrite existing business logic without explicit confirmation.
26
+ - Build must pass before committing: run `{conventions.build_command}` and fix errors (max 3 retries).
27
+
28
+ ## File Operations
29
+
30
+ - Prefer **editing** existing files over replacing them entirely.
31
+ - When creating new files, check if a similar file already exists first.
32
+ - Never delete files unless explicitly instructed.
33
+
34
+ ## Communication
35
+
36
+ - Report in the language the user writes in (Vietnamese if user uses Vietnamese, English otherwise).
37
+ - Keep reports structured: status, artifacts created, next recommended command.
38
+ - If unsure about business intent, ask — do not guess and generate wrong spec.
39
+
40
+ ## Error Handling
41
+
42
+ - If a tool call fails (file not found, build error, etc.), report the specific error clearly.
43
+ - Do NOT silently skip errors or pretend success.
44
+ - Suggest a concrete fix, not just "please check the error".
@@ -0,0 +1,49 @@
1
+ #!/usr/bin/env bash
2
+ # init.sh — First-time setup of Spec-Driven Docs framework in a consumer project.
3
+ #
4
+ # Usage:
5
+ # bash scripts/init.sh
6
+ # bash scripts/init.sh --module java-spring
7
+ # bash scripts/init.sh --module java-spring --hooks
8
+ #
9
+ # What it does:
10
+ # 1. Copies framework files to .agent/ (commands, steps, hooks, rules, templates, modules)
11
+ # 2. Creates lightweight shortcut files in .claude/commands/ that delegate to .agent/
12
+ # 3. Writes .agent/FRAMEWORK_VERSION for upgrade.sh to track installed version
13
+ #
14
+ # After init:
15
+ # - Commit .agent/ to git so the entire team shares the framework
16
+ # - Run /setup-ai-first in Claude Code to complete project setup
17
+ # - To upgrade later: bash scripts/upgrade.sh
18
+
19
+ set -euo pipefail
20
+
21
+ echo ""
22
+ echo "╔══════════════════════════════════════════╗"
23
+ echo "║ Spec-Driven Docs — Project Init ║"
24
+ echo "╚══════════════════════════════════════════╝"
25
+ echo ""
26
+
27
+ # ── Prerequisite check ────────────────────────────────────────────────────────
28
+
29
+ if ! command -v node &> /dev/null; then
30
+ echo "❌ Node.js is required. Install from https://nodejs.org"
31
+ exit 1
32
+ fi
33
+
34
+ # ── Run installer via npx ─────────────────────────────────────────────────────
35
+
36
+ echo "Running: npx @edupia-tutor/spec-driven-docs --init $*"
37
+ echo ""
38
+
39
+ npx -y @edupia-tutor/spec-driven-docs --init "$@"
40
+
41
+ echo ""
42
+ echo "✅ Init complete!"
43
+ echo ""
44
+ echo "Recommended next steps:"
45
+ echo " git add .agent/ .claude/commands/"
46
+ echo " git commit -m 'chore: init spec-driven-docs framework'"
47
+ echo ""
48
+ echo "Then open Claude Code and run: /setup-ai-first"
49
+ echo ""