@dewtech/dare-cli 2.16.0 → 3.0.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 (408) hide show
  1. package/README.md +196 -3
  2. package/dist/__tests__/confidence.test.d.ts +2 -0
  3. package/dist/__tests__/confidence.test.d.ts.map +1 -0
  4. package/dist/__tests__/confidence.test.js +73 -0
  5. package/dist/__tests__/confidence.test.js.map +1 -0
  6. package/dist/__tests__/datamodel.test.d.ts +2 -0
  7. package/dist/__tests__/datamodel.test.d.ts.map +1 -0
  8. package/dist/__tests__/datamodel.test.js +131 -0
  9. package/dist/__tests__/datamodel.test.js.map +1 -0
  10. package/dist/__tests__/dna-detector.test.d.ts +2 -0
  11. package/dist/__tests__/dna-detector.test.d.ts.map +1 -0
  12. package/dist/__tests__/dna-detector.test.js +97 -0
  13. package/dist/__tests__/dna-detector.test.js.map +1 -0
  14. package/dist/__tests__/dna-facts.test.d.ts +2 -0
  15. package/dist/__tests__/dna-facts.test.d.ts.map +1 -0
  16. package/dist/__tests__/dna-facts.test.js +44 -0
  17. package/dist/__tests__/dna-facts.test.js.map +1 -0
  18. package/dist/__tests__/graph-renderer.test.d.ts +2 -0
  19. package/dist/__tests__/graph-renderer.test.d.ts.map +1 -0
  20. package/dist/__tests__/graph-renderer.test.js +85 -0
  21. package/dist/__tests__/graph-renderer.test.js.map +1 -0
  22. package/dist/__tests__/migration.test.d.ts +2 -0
  23. package/dist/__tests__/migration.test.d.ts.map +1 -0
  24. package/dist/__tests__/migration.test.js +77 -0
  25. package/dist/__tests__/migration.test.js.map +1 -0
  26. package/dist/__tests__/module-detector.test.d.ts +2 -0
  27. package/dist/__tests__/module-detector.test.d.ts.map +1 -0
  28. package/dist/__tests__/module-detector.test.js +83 -0
  29. package/dist/__tests__/module-detector.test.js.map +1 -0
  30. package/dist/__tests__/refine.test.d.ts +2 -0
  31. package/dist/__tests__/refine.test.d.ts.map +1 -0
  32. package/dist/__tests__/refine.test.js +186 -0
  33. package/dist/__tests__/refine.test.js.map +1 -0
  34. package/dist/__tests__/reverse-facts.test.d.ts +2 -0
  35. package/dist/__tests__/reverse-facts.test.d.ts.map +1 -0
  36. package/dist/__tests__/reverse-facts.test.js +78 -0
  37. package/dist/__tests__/reverse-facts.test.js.map +1 -0
  38. package/dist/__tests__/review.test.d.ts +2 -0
  39. package/dist/__tests__/review.test.d.ts.map +1 -0
  40. package/dist/__tests__/review.test.js +242 -0
  41. package/dist/__tests__/review.test.js.map +1 -0
  42. package/dist/__tests__/update.test.d.ts +2 -0
  43. package/dist/__tests__/update.test.d.ts.map +1 -0
  44. package/dist/__tests__/update.test.js +150 -0
  45. package/dist/__tests__/update.test.js.map +1 -0
  46. package/dist/__tests__/validate.test.js +65 -65
  47. package/dist/bin/dare.js +38 -3
  48. package/dist/bin/dare.js.map +1 -1
  49. package/dist/commands/blueprint.js +122 -122
  50. package/dist/commands/dag.d.ts.map +1 -1
  51. package/dist/commands/dag.js +43 -79
  52. package/dist/commands/dag.js.map +1 -1
  53. package/dist/commands/dna.d.ts +3 -0
  54. package/dist/commands/dna.d.ts.map +1 -0
  55. package/dist/commands/dna.js +69 -0
  56. package/dist/commands/dna.js.map +1 -0
  57. package/dist/commands/execute.d.ts.map +1 -1
  58. package/dist/commands/execute.js +76 -0
  59. package/dist/commands/execute.js.map +1 -1
  60. package/dist/commands/migrate.d.ts +3 -0
  61. package/dist/commands/migrate.d.ts.map +1 -0
  62. package/dist/commands/migrate.js +101 -0
  63. package/dist/commands/migrate.js.map +1 -0
  64. package/dist/commands/new.d.ts +16 -0
  65. package/dist/commands/new.d.ts.map +1 -0
  66. package/dist/commands/new.js +103 -0
  67. package/dist/commands/new.js.map +1 -0
  68. package/dist/commands/refine.d.ts +16 -0
  69. package/dist/commands/refine.d.ts.map +1 -0
  70. package/dist/commands/refine.js +167 -0
  71. package/dist/commands/refine.js.map +1 -0
  72. package/dist/commands/reverse.d.ts +3 -0
  73. package/dist/commands/reverse.d.ts.map +1 -0
  74. package/dist/commands/reverse.js +201 -0
  75. package/dist/commands/reverse.js.map +1 -0
  76. package/dist/commands/review.d.ts +16 -0
  77. package/dist/commands/review.d.ts.map +1 -0
  78. package/dist/commands/review.js +106 -0
  79. package/dist/commands/review.js.map +1 -0
  80. package/dist/commands/update.d.ts +13 -0
  81. package/dist/commands/update.d.ts.map +1 -0
  82. package/dist/commands/update.js +149 -0
  83. package/dist/commands/update.js.map +1 -0
  84. package/dist/commands/welcome.d.ts +14 -0
  85. package/dist/commands/welcome.d.ts.map +1 -0
  86. package/dist/commands/welcome.js +29 -0
  87. package/dist/commands/welcome.js.map +1 -0
  88. package/dist/skills/commands/add.d.ts +23 -0
  89. package/dist/skills/commands/add.d.ts.map +1 -0
  90. package/dist/skills/commands/add.js +206 -0
  91. package/dist/skills/commands/add.js.map +1 -0
  92. package/dist/skills/commands/info.d.ts +14 -0
  93. package/dist/skills/commands/info.d.ts.map +1 -0
  94. package/dist/skills/commands/info.js +99 -0
  95. package/dist/skills/commands/info.js.map +1 -0
  96. package/dist/skills/commands/list.d.ts +19 -0
  97. package/dist/skills/commands/list.d.ts.map +1 -0
  98. package/dist/skills/commands/list.js +163 -0
  99. package/dist/skills/commands/list.js.map +1 -0
  100. package/dist/skills/commands/publish.d.ts +56 -0
  101. package/dist/skills/commands/publish.d.ts.map +1 -0
  102. package/dist/skills/commands/publish.js +272 -0
  103. package/dist/skills/commands/publish.js.map +1 -0
  104. package/dist/skills/commands/remove.d.ts +19 -0
  105. package/dist/skills/commands/remove.d.ts.map +1 -0
  106. package/dist/skills/commands/remove.js +96 -0
  107. package/dist/skills/commands/remove.js.map +1 -0
  108. package/dist/skills/commands/update.d.ts +31 -0
  109. package/dist/skills/commands/update.d.ts.map +1 -0
  110. package/dist/skills/commands/update.js +132 -0
  111. package/dist/skills/commands/update.js.map +1 -0
  112. package/dist/skills/index.d.ts +22 -0
  113. package/dist/skills/index.d.ts.map +1 -0
  114. package/dist/skills/index.js +33 -0
  115. package/dist/skills/index.js.map +1 -0
  116. package/dist/skills/manifest.d.ts +54 -0
  117. package/dist/skills/manifest.d.ts.map +1 -0
  118. package/dist/skills/manifest.js +162 -0
  119. package/dist/skills/manifest.js.map +1 -0
  120. package/dist/skills/registry-local.d.ts +67 -0
  121. package/dist/skills/registry-local.d.ts.map +1 -0
  122. package/dist/skills/registry-local.js +130 -0
  123. package/dist/skills/registry-local.js.map +1 -0
  124. package/dist/skills/registry-mock.json +109 -0
  125. package/dist/skills/registry-remote.d.ts +110 -0
  126. package/dist/skills/registry-remote.d.ts.map +1 -0
  127. package/dist/skills/registry-remote.js +246 -0
  128. package/dist/skills/registry-remote.js.map +1 -0
  129. package/dist/skills/registry.d.ts +49 -0
  130. package/dist/skills/registry.d.ts.map +1 -0
  131. package/dist/skills/registry.js +94 -0
  132. package/dist/skills/registry.js.map +1 -0
  133. package/dist/skills/tests/manifest.spec.d.ts +8 -0
  134. package/dist/skills/tests/manifest.spec.d.ts.map +1 -0
  135. package/dist/skills/tests/manifest.spec.js +176 -0
  136. package/dist/skills/tests/manifest.spec.js.map +1 -0
  137. package/dist/skills/tests/publish.spec.d.ts +12 -0
  138. package/dist/skills/tests/publish.spec.d.ts.map +1 -0
  139. package/dist/skills/tests/publish.spec.js +276 -0
  140. package/dist/skills/tests/publish.spec.js.map +1 -0
  141. package/dist/skills/tests/registry-local.spec.d.ts +8 -0
  142. package/dist/skills/tests/registry-local.spec.d.ts.map +1 -0
  143. package/dist/skills/tests/registry-local.spec.js +231 -0
  144. package/dist/skills/tests/registry-local.spec.js.map +1 -0
  145. package/dist/skills/tests/registry.spec.d.ts +7 -0
  146. package/dist/skills/tests/registry.spec.d.ts.map +1 -0
  147. package/dist/skills/tests/registry.spec.js +58 -0
  148. package/dist/skills/tests/registry.spec.js.map +1 -0
  149. package/dist/skills/tests/remote-registry.spec.d.ts +9 -0
  150. package/dist/skills/tests/remote-registry.spec.d.ts.map +1 -0
  151. package/dist/skills/tests/remote-registry.spec.js +357 -0
  152. package/dist/skills/tests/remote-registry.spec.js.map +1 -0
  153. package/dist/skills/tests/update.spec.d.ts +9 -0
  154. package/dist/skills/tests/update.spec.d.ts.map +1 -0
  155. package/dist/skills/tests/update.spec.js +166 -0
  156. package/dist/skills/tests/update.spec.js.map +1 -0
  157. package/dist/types/Refine.types.d.ts +96 -0
  158. package/dist/types/Refine.types.d.ts.map +1 -0
  159. package/dist/types/Refine.types.js +19 -0
  160. package/dist/types/Refine.types.js.map +1 -0
  161. package/dist/types/Review.types.d.ts +86 -0
  162. package/dist/types/Review.types.d.ts.map +1 -0
  163. package/dist/types/Review.types.js +15 -0
  164. package/dist/types/Review.types.js.map +1 -0
  165. package/dist/types/UpdateManifest.types.d.ts +91 -0
  166. package/dist/types/UpdateManifest.types.d.ts.map +1 -0
  167. package/dist/types/UpdateManifest.types.js +13 -0
  168. package/dist/types/UpdateManifest.types.js.map +1 -0
  169. package/dist/utils/ReviewRunner.d.ts +42 -0
  170. package/dist/utils/ReviewRunner.d.ts.map +1 -0
  171. package/dist/utils/ReviewRunner.js +175 -0
  172. package/dist/utils/ReviewRunner.js.map +1 -0
  173. package/dist/utils/UpdateApplier.d.ts +42 -0
  174. package/dist/utils/UpdateApplier.d.ts.map +1 -0
  175. package/dist/utils/UpdateApplier.js +207 -0
  176. package/dist/utils/UpdateApplier.js.map +1 -0
  177. package/dist/utils/UpdateDetector.d.ts +56 -0
  178. package/dist/utils/UpdateDetector.d.ts.map +1 -0
  179. package/dist/utils/UpdateDetector.js +164 -0
  180. package/dist/utils/UpdateDetector.js.map +1 -0
  181. package/dist/utils/banner.d.ts +28 -0
  182. package/dist/utils/banner.d.ts.map +1 -0
  183. package/dist/utils/banner.js +77 -0
  184. package/dist/utils/banner.js.map +1 -0
  185. package/dist/utils/banner.spec.d.ts +5 -0
  186. package/dist/utils/banner.spec.d.ts.map +1 -0
  187. package/dist/utils/banner.spec.js +253 -0
  188. package/dist/utils/banner.spec.js.map +1 -0
  189. package/dist/utils/complexity-analyzer.d.ts +60 -0
  190. package/dist/utils/complexity-analyzer.d.ts.map +1 -0
  191. package/dist/utils/complexity-analyzer.js +292 -0
  192. package/dist/utils/complexity-analyzer.js.map +1 -0
  193. package/dist/utils/confidence.d.ts +41 -0
  194. package/dist/utils/confidence.d.ts.map +1 -0
  195. package/dist/utils/confidence.js +101 -0
  196. package/dist/utils/confidence.js.map +1 -0
  197. package/dist/utils/datamodel.d.ts +41 -0
  198. package/dist/utils/datamodel.d.ts.map +1 -0
  199. package/dist/utils/datamodel.js +535 -0
  200. package/dist/utils/datamodel.js.map +1 -0
  201. package/dist/utils/dna-detector.d.ts +61 -0
  202. package/dist/utils/dna-detector.d.ts.map +1 -0
  203. package/dist/utils/dna-detector.js +354 -0
  204. package/dist/utils/dna-detector.js.map +1 -0
  205. package/dist/utils/dna-facts.d.ts +13 -0
  206. package/dist/utils/dna-facts.d.ts.map +1 -0
  207. package/dist/utils/dna-facts.js +109 -0
  208. package/dist/utils/dna-facts.js.map +1 -0
  209. package/dist/utils/excalidraw-renderer.d.ts +11 -71
  210. package/dist/utils/excalidraw-renderer.d.ts.map +1 -1
  211. package/dist/utils/excalidraw-renderer.js +29 -162
  212. package/dist/utils/excalidraw-renderer.js.map +1 -1
  213. package/dist/utils/graph-renderer.d.ts +115 -0
  214. package/dist/utils/graph-renderer.d.ts.map +1 -0
  215. package/dist/utils/graph-renderer.js +216 -0
  216. package/dist/utils/graph-renderer.js.map +1 -0
  217. package/dist/utils/migration.d.ts +64 -0
  218. package/dist/utils/migration.d.ts.map +1 -0
  219. package/dist/utils/migration.js +183 -0
  220. package/dist/utils/migration.js.map +1 -0
  221. package/dist/utils/module-detector.d.ts +46 -0
  222. package/dist/utils/module-detector.d.ts.map +1 -0
  223. package/dist/utils/module-detector.js +348 -0
  224. package/dist/utils/module-detector.js.map +1 -0
  225. package/dist/utils/project-generator.d.ts.map +1 -1
  226. package/dist/utils/project-generator.js +273 -254
  227. package/dist/utils/project-generator.js.map +1 -1
  228. package/dist/utils/reverse-facts.d.ts +50 -0
  229. package/dist/utils/reverse-facts.d.ts.map +1 -0
  230. package/dist/utils/reverse-facts.js +291 -0
  231. package/dist/utils/reverse-facts.js.map +1 -0
  232. package/dist/utils/stack-bootstrap.js +371 -371
  233. package/dist/utils/static-analyzer.d.ts +29 -0
  234. package/dist/utils/static-analyzer.d.ts.map +1 -0
  235. package/dist/utils/static-analyzer.js +390 -0
  236. package/dist/utils/static-analyzer.js.map +1 -0
  237. package/dist/utils/version-compare.d.ts +27 -0
  238. package/dist/utils/version-compare.d.ts.map +1 -0
  239. package/dist/utils/version-compare.js +47 -0
  240. package/dist/utils/version-compare.js.map +1 -0
  241. package/package.json +8 -3
  242. package/templates/DARE-dag-example.yaml +280 -280
  243. package/templates/UPDATE-MANIFEST.json +48 -0
  244. package/templates/backend/node-nestjs/.env.example +9 -9
  245. package/templates/backend/node-nestjs/nest-cli.json +8 -8
  246. package/templates/backend/node-nestjs/package.json +50 -50
  247. package/templates/backend/node-nestjs/src/app.controller.ts +12 -12
  248. package/templates/backend/node-nestjs/src/app.module.ts +15 -15
  249. package/templates/backend/node-nestjs/src/app.service.ts +8 -8
  250. package/templates/backend/node-nestjs/src/main.ts +24 -24
  251. package/templates/backend/node-nestjs/tsconfig.json +21 -21
  252. package/templates/backend/php-laravel/.env.example +22 -22
  253. package/templates/backend/php-laravel/app/Http/Controllers/HealthController.php +15 -15
  254. package/templates/backend/php-laravel/composer.json +40 -40
  255. package/templates/backend/python-fastapi/.env.example +4 -4
  256. package/templates/backend/python-fastapi/app/api/router.py +8 -8
  257. package/templates/backend/python-fastapi/app/core/config.py +20 -20
  258. package/templates/backend/python-fastapi/main.py +35 -35
  259. package/templates/backend/python-fastapi/requirements.txt +13 -13
  260. package/templates/backend/rust-axum/.env.example +3 -3
  261. package/templates/backend/rust-axum/Cargo.toml +23 -23
  262. package/templates/backend/rust-axum/src/errors.rs +30 -30
  263. package/templates/backend/rust-axum/src/main.rs +32 -32
  264. package/templates/backend/rust-axum/src/routes.rs +6 -6
  265. package/templates/frontend/leptos-csr/.cargo/config.toml +2 -2
  266. package/templates/frontend/leptos-csr/Cargo.toml +16 -16
  267. package/templates/frontend/leptos-csr/Trunk.toml +10 -10
  268. package/templates/frontend/leptos-csr/index.html +11 -11
  269. package/templates/frontend/leptos-csr/src/lib.rs +20 -20
  270. package/templates/frontend/leptos-csr/style/main.scss +19 -19
  271. package/templates/frontend/leptos-fullstack/.cargo/config.toml +4 -4
  272. package/templates/frontend/leptos-fullstack/Cargo.toml +56 -56
  273. package/templates/frontend/leptos-fullstack/src/app.rs +49 -49
  274. package/templates/frontend/leptos-fullstack/src/lib.rs +9 -9
  275. package/templates/frontend/leptos-fullstack/src/main.rs +29 -29
  276. package/templates/frontend/leptos-fullstack/style/main.scss +19 -19
  277. package/templates/frontend/react/index.html +12 -12
  278. package/templates/frontend/react/package.json +35 -35
  279. package/templates/frontend/react/src/App.tsx +25 -25
  280. package/templates/frontend/react/src/main.tsx +9 -9
  281. package/templates/frontend/vue/package.json +32 -32
  282. package/templates/frontend/vue/src/App.vue +7 -7
  283. package/templates/frontend/vue/src/main.ts +10 -10
  284. package/templates/frontend/vue/src/router/index.ts +14 -14
  285. package/templates/frontend/vue/src/views/HomeView.vue +6 -6
  286. package/templates/hooks/pre-commit-dare-validate +24 -24
  287. package/templates/ide/antigravity/.agents/skills/dare-ax/SKILL.md +152 -0
  288. package/templates/ide/antigravity/.agents/skills/dare-blueprint/SKILL.md +180 -36
  289. package/templates/ide/antigravity/.agents/skills/dare-dag-build/SKILL.md +154 -0
  290. package/templates/ide/antigravity/.agents/skills/dare-dag-run/SKILL.md +130 -0
  291. package/templates/ide/antigravity/.agents/skills/dare-dag-runner/SKILL.md +203 -203
  292. package/templates/ide/antigravity/.agents/skills/dare-dna/SKILL.md +63 -0
  293. package/templates/ide/antigravity/.agents/skills/dare-docker/SKILL.md +315 -0
  294. package/templates/ide/antigravity/.agents/skills/dare-frontend-design/SKILL.md +192 -0
  295. package/templates/ide/antigravity/.agents/skills/dare-laravel-api/SKILL.md +337 -0
  296. package/templates/ide/antigravity/.agents/skills/dare-layered-design/SKILL.md +166 -0
  297. package/templates/ide/antigravity/.agents/skills/dare-llm-integration/SKILL.md +217 -0
  298. package/templates/ide/antigravity/.agents/skills/dare-migrate/SKILL.md +61 -0
  299. package/templates/ide/antigravity/.agents/skills/dare-quality-telemetry/SKILL.md +187 -0
  300. package/templates/ide/antigravity/.agents/skills/dare-realtime/SKILL.md +217 -0
  301. package/templates/ide/antigravity/.agents/skills/dare-refine/SKILL.md +114 -0
  302. package/templates/ide/antigravity/.agents/skills/dare-reverse/SKILL.md +108 -0
  303. package/templates/ide/antigravity/.agents/skills/dare-review/SKILL.md +111 -0
  304. package/templates/ide/antigravity/.agents/skills/dare-rust-leptos/SKILL.md +263 -0
  305. package/templates/ide/antigravity/.agents/skills/dare-rust-workspace/SKILL.md +275 -275
  306. package/templates/ide/antigravity/.agents/skills/dare-security/SKILL.md +274 -0
  307. package/templates/ide/antigravity/.agents/skills/dare-tasks/SKILL.md +265 -224
  308. package/templates/ide/antigravity/.agents/skills/dare-telemetry/SKILL.md +188 -0
  309. package/templates/ide/antigravity/.agents/skills/skill-fastapi-api/SKILL.md +343 -0
  310. package/templates/ide/antigravity/.agents/skills/skill-go-gin-api/SKILL.md +377 -0
  311. package/templates/ide/antigravity/.agents/skills/skill-mcp-server/SKILL.md +382 -0
  312. package/templates/ide/antigravity/.agents/skills/skill-nestjs-api/SKILL.md +326 -0
  313. package/templates/ide/antigravity/.agents/skills/skill-rails-api/SKILL.md +393 -0
  314. package/templates/ide/antigravity/templates/BLUEPRINT-template.md +193 -193
  315. package/templates/ide/antigravity/templates/DESIGN-template.md +129 -129
  316. package/templates/ide/antigravity/templates/TASK-SPEC-template.md +141 -100
  317. package/templates/ide/claude/.claude/commands/dare-ax.md +131 -0
  318. package/templates/ide/claude/.claude/commands/dare-blueprint.md +134 -78
  319. package/templates/ide/claude/.claude/commands/dare-bugfix-design.md +119 -0
  320. package/templates/ide/claude/.claude/commands/dare-dag-build.md +151 -110
  321. package/templates/ide/claude/.claude/commands/dare-dag-run.md +109 -109
  322. package/templates/ide/claude/.claude/commands/dare-dag-runner.md +117 -0
  323. package/templates/ide/claude/.claude/commands/dare-dag-viz.md +197 -197
  324. package/templates/ide/claude/.claude/commands/dare-design.md +69 -69
  325. package/templates/ide/claude/.claude/commands/dare-dna.md +75 -0
  326. package/templates/ide/claude/.claude/commands/dare-docker.md +207 -0
  327. package/templates/ide/claude/.claude/commands/dare-execute.md +152 -152
  328. package/templates/ide/claude/.claude/commands/dare-feature-design.md +147 -0
  329. package/templates/ide/claude/.claude/commands/dare-frontend-design.md +149 -0
  330. package/templates/ide/claude/.claude/commands/dare-laravel-api.md +211 -0
  331. package/templates/ide/claude/.claude/commands/dare-layered-design.md +124 -0
  332. package/templates/ide/claude/.claude/commands/dare-llm-integration.md +148 -0
  333. package/templates/ide/claude/.claude/commands/dare-migrate.md +72 -0
  334. package/templates/ide/claude/.claude/commands/dare-quality-telemetry.md +166 -0
  335. package/templates/ide/claude/.claude/commands/dare-realtime.md +159 -0
  336. package/templates/ide/claude/.claude/commands/dare-refine.md +145 -0
  337. package/templates/ide/claude/.claude/commands/dare-reverse.md +139 -0
  338. package/templates/ide/claude/.claude/commands/dare-review.md +113 -0
  339. package/templates/ide/claude/.claude/commands/dare-rust-leptos.md +269 -269
  340. package/templates/ide/claude/.claude/commands/dare-rust-workspace.md +209 -209
  341. package/templates/ide/claude/.claude/commands/dare-security.md +232 -232
  342. package/templates/ide/claude/.claude/commands/dare-tasks.md +70 -70
  343. package/templates/ide/claude/.claude/commands/dare-telemetry.md +132 -0
  344. package/templates/ide/claude/.claude/commands/skill-fastapi-api.md +205 -0
  345. package/templates/ide/claude/.claude/commands/skill-go-gin-api.md +232 -0
  346. package/templates/ide/claude/.claude/commands/skill-mcp-server.md +228 -0
  347. package/templates/ide/claude/.claude/commands/skill-nestjs-api.md +210 -0
  348. package/templates/ide/claude/.claude/commands/skill-rails-api.md +236 -0
  349. package/templates/ide/claude/.claude/settings.example.json +35 -35
  350. package/templates/ide/claude/CLAUDE.md +146 -146
  351. package/templates/ide/claude/templates/BLUEPRINT-template.md +193 -193
  352. package/templates/ide/claude/templates/DESIGN-template.md +129 -129
  353. package/templates/ide/claude/templates/TASK-SPEC-template.md +141 -100
  354. package/templates/ide/cursor/.cursor/commands/dag-viz.md +139 -0
  355. package/templates/ide/cursor/.cursor/commands/generate-blueprint.md +86 -41
  356. package/templates/ide/cursor/.cursor/commands/generate-design.md +35 -35
  357. package/templates/ide/cursor/.cursor/commands/generate-tasks.md +184 -142
  358. package/templates/ide/cursor/.cursor/commands/refine-task.md +107 -0
  359. package/templates/ide/cursor/.cursor/commands/review-task.md +91 -0
  360. package/templates/ide/cursor/.cursor/commands/run-dag.md +110 -110
  361. package/templates/ide/cursor/.cursor/rules/skill-ax.mdc +263 -0
  362. package/templates/ide/cursor/.cursor/rules/skill-dag-build.mdc +173 -0
  363. package/templates/ide/cursor/.cursor/rules/skill-dag-run.mdc +134 -0
  364. package/templates/ide/cursor/.cursor/rules/skill-dag-runner.mdc +221 -221
  365. package/templates/ide/cursor/.cursor/rules/skill-dna.mdc +63 -0
  366. package/templates/ide/cursor/.cursor/rules/skill-fastapi-api.mdc +352 -0
  367. package/templates/ide/cursor/.cursor/rules/skill-frontend-design.mdc +244 -0
  368. package/templates/ide/cursor/.cursor/rules/skill-go-gin-api.mdc +371 -0
  369. package/templates/ide/cursor/.cursor/rules/skill-layered-design.mdc +266 -0
  370. package/templates/ide/cursor/.cursor/rules/skill-llm-integration.mdc +295 -0
  371. package/templates/ide/cursor/.cursor/rules/skill-mcp-server.mdc +367 -0
  372. package/templates/ide/cursor/.cursor/rules/skill-migrate.mdc +58 -0
  373. package/templates/ide/cursor/.cursor/rules/skill-nestjs-api.mdc +346 -0
  374. package/templates/ide/cursor/.cursor/rules/skill-quality-telemetry.mdc +248 -0
  375. package/templates/ide/cursor/.cursor/rules/skill-rails-api.mdc +400 -0
  376. package/templates/ide/cursor/.cursor/rules/skill-realtime.mdc +262 -0
  377. package/templates/ide/cursor/.cursor/rules/skill-reverse.mdc +107 -0
  378. package/templates/ide/cursor/.cursor/rules/skill-rust-leptos.mdc +281 -0
  379. package/templates/ide/cursor/.cursor/rules/skill-rust-workspace.mdc +312 -312
  380. package/templates/ide/cursor/.cursor/rules/skill-security.mdc +245 -245
  381. package/templates/ide/cursor/templates/BLUEPRINT-template.md +193 -193
  382. package/templates/ide/cursor/templates/DESIGN-template.md +129 -129
  383. package/templates/ide/cursor/templates/TASK-SPEC-template.md +141 -100
  384. package/templates/shared/docker-compose.yml +41 -41
  385. package/dist/__tests__/dag-runner/adapters.test.d.ts +0 -2
  386. package/dist/__tests__/dag-runner/adapters.test.d.ts.map +0 -1
  387. package/dist/__tests__/dag-runner/adapters.test.js +0 -134
  388. package/dist/__tests__/dag-runner/adapters.test.js.map +0 -1
  389. package/dist/dag-runner/adapters/antigravity.d.ts +0 -6
  390. package/dist/dag-runner/adapters/antigravity.d.ts.map +0 -1
  391. package/dist/dag-runner/adapters/antigravity.js +0 -54
  392. package/dist/dag-runner/adapters/antigravity.js.map +0 -1
  393. package/dist/dag-runner/adapters/claude.d.ts +0 -6
  394. package/dist/dag-runner/adapters/claude.d.ts.map +0 -1
  395. package/dist/dag-runner/adapters/claude.js +0 -48
  396. package/dist/dag-runner/adapters/claude.js.map +0 -1
  397. package/dist/dag-runner/adapters/cursor.d.ts +0 -6
  398. package/dist/dag-runner/adapters/cursor.d.ts.map +0 -1
  399. package/dist/dag-runner/adapters/cursor.js +0 -58
  400. package/dist/dag-runner/adapters/cursor.js.map +0 -1
  401. package/dist/dag-runner/adapters/index.d.ts +0 -46
  402. package/dist/dag-runner/adapters/index.d.ts.map +0 -1
  403. package/dist/dag-runner/adapters/index.js +0 -55
  404. package/dist/dag-runner/adapters/index.js.map +0 -1
  405. package/dist/dag-runner/utils/timeout.d.ts +0 -27
  406. package/dist/dag-runner/utils/timeout.d.ts.map +0 -1
  407. package/dist/dag-runner/utils/timeout.js +0 -55
  408. package/dist/dag-runner/utils/timeout.js.map +0 -1
@@ -0,0 +1,315 @@
1
+ ---
2
+ name: dare-docker
3
+ description: Containerização DARE com Dockerfile e docker-compose seguros, performantes e idiomáticos. Multi-stage builds, usuário não-root, healthchecks, redes isoladas, .dockerignore robusto. Cobre PHP/Laravel, Python/FastAPI, Node, Go, Rust, Rails e Vue.
4
+ ---
5
+
6
+ # DARE Docker Skill
7
+
8
+ Você é um engenheiro DevOps especialista em containerização. Seu papel é gerar `Dockerfile`, `docker-compose.yml` e `.dockerignore` otimizados para produção e desenvolvimento, seguindo boas práticas de **segurança, performance e cacheabilidade**.
9
+
10
+ ## Quando usar esta skill
11
+
12
+ - Projeto novo DARE precisa de imagem Docker
13
+ - Projeto existente tem Dockerfile antigo, com bash longo, root user, sem cache
14
+ - Build local lento (> 60s) — otimização de cache
15
+ - Imagem final pesada (> 500MB) — multi-stage e Alpine/distroless
16
+
17
+ ## Padrões para Dockerfile
18
+
19
+ ### Multi-stage builds (obrigatório)
20
+
21
+ Separe build (compiladores, deps de dev) de runtime (binário/artefato + libs mínimas).
22
+
23
+ ```dockerfile
24
+ # Stage 1 — build
25
+ FROM rust:1.80-alpine AS builder
26
+ WORKDIR /app
27
+ COPY Cargo.toml Cargo.lock ./
28
+ RUN cargo fetch
29
+ COPY src ./src
30
+ RUN cargo build --release
31
+
32
+ # Stage 2 — runtime
33
+ FROM alpine:3.20
34
+ RUN adduser -D -u 1000 appuser
35
+ COPY --from=builder /app/target/release/myapp /usr/local/bin/myapp
36
+ USER appuser
37
+ EXPOSE 8080
38
+ CMD ["myapp"]
39
+ ```
40
+
41
+ ### Imagens base
42
+
43
+ - Use Alpine ou distroless quando possível
44
+ - Tags **explícitas** (`php:8.3-fpm-alpine`, nunca `latest`)
45
+ - Pin de versão evita surpresas de patch
46
+
47
+ ### Usuário não-root
48
+
49
+ ```dockerfile
50
+ RUN adduser -D -u 1000 appuser
51
+ USER appuser
52
+ ```
53
+
54
+ Aplicação rodando como root no container = vulnerabilidade.
55
+
56
+ ### Cache de camadas
57
+
58
+ Ordene do menos mutável para o mais mutável:
59
+ 1. `FROM`
60
+ 2. `RUN apt-get install …` (raro mudar)
61
+ 3. `COPY package.json` / `Cargo.toml` / `composer.json`
62
+ 4. `RUN npm install` / `cargo fetch` / `composer install`
63
+ 5. `COPY src/` ← muda muito, fica no final
64
+ 6. `RUN build`
65
+
66
+ ### Limpeza na mesma camada `RUN`
67
+
68
+ ```dockerfile
69
+ RUN apt-get update && \
70
+ apt-get install -y --no-install-recommends curl ca-certificates && \
71
+ apt-get clean && \
72
+ rm -rf /var/lib/apt/lists/*
73
+ ```
74
+
75
+ ### `ENTRYPOINT` vs `CMD`
76
+
77
+ - `ENTRYPOINT` — comando fixo do container
78
+ - `CMD` — argumentos default, podem ser sobrescritos
79
+
80
+ ## Padrões por stack
81
+
82
+ ### PHP / Laravel
83
+
84
+ ```dockerfile
85
+ FROM php:8.3-fpm-alpine AS base
86
+ WORKDIR /var/www/html
87
+
88
+ RUN apk add --no-cache --virtual .build-deps \
89
+ $PHPIZE_DEPS postgresql-dev && \
90
+ docker-php-ext-install pdo_pgsql opcache bcmath && \
91
+ apk del .build-deps
92
+
93
+ COPY composer.json composer.lock ./
94
+ RUN composer install --no-dev --no-interaction --no-progress --optimize-autoloader
95
+
96
+ COPY . .
97
+ RUN chown -R www-data:www-data storage bootstrap/cache
98
+
99
+ USER www-data
100
+ EXPOSE 9000
101
+ CMD ["php-fpm"]
102
+ ```
103
+
104
+ ### Python / FastAPI
105
+
106
+ ```dockerfile
107
+ FROM python:3.11-slim AS builder
108
+ WORKDIR /app
109
+ COPY requirements.txt .
110
+ RUN pip install --no-cache-dir --user -r requirements.txt
111
+
112
+ FROM python:3.11-slim
113
+ RUN useradd -m -u 1000 appuser
114
+ COPY --from=builder /root/.local /home/appuser/.local
115
+ ENV PATH=/home/appuser/.local/bin:$PATH
116
+ WORKDIR /app
117
+ COPY --chown=appuser:appuser . .
118
+ USER appuser
119
+ EXPOSE 8000
120
+ CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
121
+ ```
122
+
123
+ ### Go
124
+
125
+ ```dockerfile
126
+ FROM golang:1.22-alpine AS builder
127
+ WORKDIR /app
128
+ COPY go.mod go.sum ./
129
+ RUN go mod download
130
+ COPY . .
131
+ RUN CGO_ENABLED=0 go build -ldflags="-s -w" -o /app/bin/server ./cmd/server
132
+
133
+ FROM scratch
134
+ COPY --from=builder /app/bin/server /server
135
+ EXPOSE 8080
136
+ USER 1000:1000
137
+ ENTRYPOINT ["/server"]
138
+ ```
139
+
140
+ ### Node / Vue (build estático)
141
+
142
+ ```dockerfile
143
+ FROM node:20-alpine AS builder
144
+ WORKDIR /app
145
+ COPY package*.json ./
146
+ RUN npm ci
147
+ COPY . .
148
+ RUN npm run build
149
+
150
+ FROM nginx:alpine
151
+ COPY --from=builder /app/dist /usr/share/nginx/html
152
+ COPY nginx.conf /etc/nginx/conf.d/default.conf
153
+ EXPOSE 80
154
+ ```
155
+
156
+ ### Rails
157
+
158
+ ```dockerfile
159
+ FROM ruby:3.3-alpine AS builder
160
+ RUN apk add --no-cache build-base postgresql-dev nodejs yarn
161
+ WORKDIR /app
162
+ COPY Gemfile Gemfile.lock ./
163
+ RUN bundle install --without development test
164
+ COPY . .
165
+ RUN SECRET_KEY_BASE=dummy bundle exec rails assets:precompile
166
+
167
+ FROM ruby:3.3-alpine
168
+ RUN apk add --no-cache postgresql-client tzdata
169
+ WORKDIR /app
170
+ COPY --from=builder /usr/local/bundle /usr/local/bundle
171
+ COPY --from=builder /app /app
172
+ RUN adduser -D -u 1000 appuser && chown -R appuser:appuser /app
173
+ USER appuser
174
+ EXPOSE 3000
175
+ CMD ["bundle", "exec", "rails", "server", "-b", "0.0.0.0"]
176
+ ```
177
+
178
+ ## Padrões para docker-compose
179
+
180
+ ### Especificação atual
181
+
182
+ NÃO use `version: '3'` — está deprecated. Estrutura moderna:
183
+
184
+ ```yaml
185
+ services:
186
+ api:
187
+ build: .
188
+ ports: ["8080:8080"]
189
+ env_file: .env
190
+ depends_on:
191
+ postgres:
192
+ condition: service_healthy
193
+ networks: [internal]
194
+
195
+ postgres:
196
+ image: postgres:16-alpine
197
+ environment:
198
+ POSTGRES_PASSWORD: ${DB_PASSWORD}
199
+ volumes:
200
+ - postgres_data:/var/lib/postgresql/data
201
+ healthcheck:
202
+ test: ["CMD-SHELL", "pg_isready -U postgres"]
203
+ interval: 5s
204
+ retries: 5
205
+ networks: [internal]
206
+
207
+ volumes:
208
+ postgres_data:
209
+
210
+ networks:
211
+ internal:
212
+ ```
213
+
214
+ ### Boas práticas
215
+
216
+ - **Serviços isolados** — Nginx + PHP-FPM em containers separados (não monolito)
217
+ - **Volumes nomeados** — persistência clara
218
+ - **Redes customizadas** — isolar comunicação entre serviços
219
+ - **Variáveis via `.env`** — nunca hardcode senha em compose
220
+ - **Healthchecks** — `depends_on: condition: service_healthy` evita race condition
221
+ - **Portas de DB não expostas para host em prod** — só na rede interna
222
+
223
+ ## `.dockerignore` obrigatório
224
+
225
+ ```
226
+ .git/
227
+ .github/
228
+ .vscode/
229
+ .idea/
230
+ node_modules/
231
+ vendor/
232
+ target/
233
+ .next/
234
+ dist/
235
+ build/
236
+ .env
237
+ .env.local
238
+ *.log
239
+ tests/
240
+ DARE/
241
+ .dockerignore
242
+ Dockerfile*
243
+ docker-compose*.yml
244
+ README.md
245
+ docs/
246
+ ```
247
+
248
+ ## Métricas / checklist
249
+
250
+ | Critério | OK |
251
+ |---|---|
252
+ | Multi-stage build | [ ] |
253
+ | Usuário não-root no runtime | [ ] |
254
+ | Tag explícita (não `latest`) | [ ] |
255
+ | `.dockerignore` presente | [ ] |
256
+ | Healthcheck nos serviços DB/cache | [ ] |
257
+ | Volumes nomeados (não bind mount em prod) | [ ] |
258
+ | Sem senha hardcoded no compose | [ ] |
259
+ | Imagem final < 200MB (linguagem compilada) ou < 500MB (interpretada) | [ ] |
260
+ | Cache de camadas otimizado | [ ] |
261
+
262
+ ## Antipatterns
263
+
264
+ | AP | Antipattern | Por que evitar |
265
+ |---|---|---|
266
+ | AP-01 | Rodar como root | Vulnerabilidade — escape de container vira root no host |
267
+ | AP-02 | Tag `latest` | Build não reproduzível |
268
+ | AP-03 | `COPY . .` antes de instalar deps | Cache invalidado a cada commit |
269
+ | AP-04 | Senha em compose | Vaza em log e git |
270
+ | AP-05 | Mono-container com tudo (DB + app) | Não escala, viola SRP |
271
+ | AP-06 | `version: '3'` em compose | Deprecated |
272
+ | AP-07 | Sem healthcheck no DB | `depends_on` simples não espera DB ficar pronto |
273
+ | AP-08 | Sem `.dockerignore` | Imagem pesada, vaza `.env`/`.git` |
274
+
275
+ ## Como aplicar
276
+
277
+ ### Passo 1: Analisar stack
278
+
279
+ Leia `DESIGN.md` ou arquivos de config para identificar linguagem + framework + versão.
280
+
281
+ ### Passo 2: Gerar Dockerfile
282
+
283
+ Use o template correspondente à stack acima. Adapte:
284
+ - Versão exata (PHP 8.3, Node 20, Python 3.11, …)
285
+ - Extensões/deps específicas
286
+ - Porta exposta
287
+ - Comando de start
288
+
289
+ ### Passo 3: Gerar docker-compose.yml
290
+
291
+ Liste serviços necessários (api, db, redis, queue worker, …). Use healthchecks.
292
+
293
+ ### Passo 4: Gerar .dockerignore
294
+
295
+ Pasta `DARE/`, `node_modules/`, `.git/`, `.env`, `tests/` — sempre.
296
+
297
+ ### Passo 5: Validar
298
+
299
+ ```bash
300
+ docker build -t myapp .
301
+ docker compose config # valida sintaxe
302
+ docker compose up --build
303
+ docker compose ps # verificar healthchecks
304
+ ```
305
+
306
+ ## Dicas
307
+
308
+ - **Use** `docker scout cves` para escanear imagens
309
+ - **Combine** com `dare-security` (escanear secrets antes de COPY)
310
+ - **Para Rust**, `cargo-chef` acelera builds CI dramaticamente
311
+ - **Para multi-arch**, use `docker buildx build --platform linux/amd64,linux/arm64`
312
+
313
+ ---
314
+
315
+ Esta skill é parte do DARE Method e está sob licença MIT.
@@ -0,0 +1,192 @@
1
+ ---
2
+ name: dare-frontend-design
3
+ description: Arquitetura frontend DARE para projetos React e Vue. Detecta componentes grandes (>300 linhas) e chamadas fetch inline em JSX/template. Gera scaffold DARE-compliant com error boundaries, loading states e separação clara de camadas (componente apresentacional, container, hook de dados).
4
+ ---
5
+
6
+ # DARE Frontend Design Skill
7
+
8
+ Você é um arquiteto frontend especialista em React e Vue. Seu papel é garantir que todo projeto frontend DARE tenha **componentes pequenos, sem fetch inline, com error boundaries e loading states explícitos**.
9
+
10
+ ## Quando usar esta skill
11
+
12
+ - Projeto novo React/Vue sendo iniciado via DARE
13
+ - Componente passou de 300 linhas e está virando god component
14
+ - Tem `fetch()` espalhado em JSX/template
15
+ - Faltam error boundaries
16
+ - Loading state é booleano `isLoading` espalhado em vários lugares
17
+
18
+ ## A arquitetura recomendada (React)
19
+
20
+ ```
21
+ ┌────────────────────────────────────────────────┐
22
+ │ Page (rota, layout) │ ← top-level
23
+ └────────────────────────────────────────────────┘
24
+ ↓ usa
25
+ ┌────────────────────────────────────────────────┐
26
+ │ Container (lógica + estado, sem JSX pesado) │ ← orquestrador
27
+ └────────────────────────────────────────────────┘
28
+ ↓ injeta props
29
+ ┌────────────────────────────────────────────────┐
30
+ │ Presentational (puro, recebe props) │ ← visual
31
+ └────────────────────────────────────────────────┘
32
+
33
+ ┌────────────────────────────────────────────────┐
34
+ │ Hook de dados (useUser, useOrders…) │ ← fetch + cache
35
+ └────────────────────────────────────────────────┘
36
+ ```
37
+
38
+ ## Vue (Composition API)
39
+
40
+ ```
41
+ Page.vue
42
+ ↓ usa
43
+ useUserData() (composable — fetch + reactive)
44
+ ↓ injeta props
45
+ UserCard.vue (presentational)
46
+ ```
47
+
48
+ ## As 4 regras
49
+
50
+ ### 1. Componente < 300 linhas
51
+
52
+ Se passar de 300 linhas (TSX/Vue SFC inteiro, incluindo template e script), quebre em:
53
+ - Sub-componentes lógicos
54
+ - Hook/composable para estado
55
+ - Helper para transformações
56
+
57
+ ### 2. Zero `fetch()` direto em JSX/template
58
+
59
+ ```tsx
60
+ // ❌ Errado
61
+ function UserList() {
62
+ const [users, setUsers] = useState([]);
63
+ useEffect(() => {
64
+ fetch('/api/users').then(r => r.json()).then(setUsers);
65
+ }, []);
66
+ return <ul>{users.map(...)}</ul>;
67
+ }
68
+
69
+ // ✅ Certo
70
+ function UserList() {
71
+ const { data, isLoading, error } = useUsers();
72
+ if (isLoading) return <Spinner />;
73
+ if (error) return <ErrorMessage error={error} />;
74
+ return <ul>{data.map(...)}</ul>;
75
+ }
76
+
77
+ // Hook isolado, testável
78
+ function useUsers() {
79
+ return useQuery({ queryKey: ['users'], queryFn: () => api.users.list() });
80
+ }
81
+ ```
82
+
83
+ ### 3. Error Boundary em cada Page
84
+
85
+ React: `<ErrorBoundary fallback={<ErrorPage/>}>` ao redor de cada rota.
86
+ Vue: `onErrorCaptured` em layout/page-level.
87
+
88
+ ### 4. Bundle size monitorado
89
+
90
+ `vite-bundle-visualizer`, `webpack-bundle-analyzer` ou similar. Configurar limite por chunk (ex: <300KB inicial).
91
+
92
+ ## Métricas obrigatórias
93
+
94
+ | ID | Métrica | Como medir |
95
+ |---|---|---|
96
+ | M-01 | 100% de componentes < 300 linhas | linter `wc -l` por arquivo |
97
+ | M-02 | 0 `fetch()` direto em JSX/template | grep AST |
98
+ | M-03 | 100% de páginas com error boundary | grep por `ErrorBoundary` |
99
+ | M-04 | Bundle config presente para monitorar tamanho | `test -f vite.config.ts \| webpack.config.js` |
100
+
101
+ ## Antipatterns
102
+
103
+ | AP | Antipattern | Sinal | Correção |
104
+ |---|---|---|---|
105
+ | AP-01 | God component | >300 linhas | Quebrar em sub-componentes + hooks |
106
+ | AP-02 | Fetch em JSX | `useEffect(() => fetch(...))` no componente | Mover para hook customizado |
107
+ | AP-03 | Booleanos isLoading espalhados | `isLoading`, `isError`, `isSubmitting`, ... | Discriminated union de estados |
108
+ | AP-04 | Sem error boundary | erro derruba a app | Wrap em `<ErrorBoundary>` |
109
+ | AP-05 | Estilo inline pesado | `style={{ color: red, padding: ... }}` | Mover para CSS module / styled |
110
+ | AP-06 | Props drilling profundo | passa prop 5+ níveis | Context API ou estado global (Zustand, Pinia) |
111
+
112
+ ## Como aplicar
113
+
114
+ ### Passo 1: Detectar god components
115
+
116
+ ```bash
117
+ find src/ -name "*.tsx" -o -name "*.vue" | xargs wc -l | sort -rn | head -20
118
+ ```
119
+
120
+ Linha > 300 = candidato a quebrar.
121
+
122
+ ### Passo 2: Detectar fetch inline
123
+
124
+ ```bash
125
+ grep -rn "fetch(\|axios\." src/components/ src/pages/
126
+ ```
127
+
128
+ Toda ocorrência = AP-02. Mover para hook/composable.
129
+
130
+ ### Passo 3: Migrar para hooks de dados
131
+
132
+ Use React Query / TanStack Query / SWR (React) ou VueQuery / Pinia (Vue). Hooks devolvem `{ data, isLoading, error }`.
133
+
134
+ ### Passo 4: Adicionar error boundaries
135
+
136
+ React:
137
+ ```tsx
138
+ // src/components/ErrorBoundary.tsx
139
+ class ErrorBoundary extends React.Component { ... }
140
+
141
+ // src/pages/UsersPage.tsx
142
+ <ErrorBoundary fallback={<ErrorPage />}>
143
+ <UserList />
144
+ </ErrorBoundary>
145
+ ```
146
+
147
+ Vue:
148
+ ```vue
149
+ <script setup>
150
+ import { onErrorCaptured } from 'vue';
151
+ onErrorCaptured((err) => { logError(err); return false; });
152
+ </script>
153
+ ```
154
+
155
+ ### Passo 5: Configurar bundle analyzer
156
+
157
+ ```typescript
158
+ // vite.config.ts
159
+ import { visualizer } from 'rollup-plugin-visualizer';
160
+ export default {
161
+ plugins: [visualizer({ open: false, gzipSize: true })],
162
+ build: { chunkSizeWarningLimit: 300 }
163
+ };
164
+ ```
165
+
166
+ ## Boas práticas
167
+
168
+ 1. **Presentational vs Container** — visual puro vs orquestrador
169
+ 2. **Hooks pequenos e focados** — um hook = uma responsabilidade
170
+ 3. **Estado mínimo** — derive sempre que possível
171
+ 4. **Acessibilidade desde o dia 1** — `role`, `aria-*`, contraste
172
+
173
+ ## Stack recomendada
174
+
175
+ | Camada | React | Vue |
176
+ |---|---|---|
177
+ | Roteamento | React Router / Next | Vue Router / Nuxt |
178
+ | Estado server | TanStack Query | TanStack Vue Query / Pinia Colada |
179
+ | Estado client | Zustand / Jotai | Pinia |
180
+ | Styling | Tailwind / CSS Modules / styled | Tailwind / SCSS / styled |
181
+ | Testes | Vitest + Testing Library | Vitest + Testing Library |
182
+ | Bundler | Vite | Vite |
183
+
184
+ ## Dicas
185
+
186
+ - **Leia** `docs/design/skills/dare-frontend-design/DESIGN.md`
187
+ - **Combine** com `dare-realtime` se há WebSocket/SSE
188
+ - **Use** `dare-ax` — frontend também tem OpenAPI client gerado
189
+
190
+ ---
191
+
192
+ Esta skill é parte do DARE Method e está sob licença MIT.