@dewtech/dare-cli 2.17.0 → 3.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 (788) hide show
  1. package/README.md +140 -39
  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.js +49 -49
  31. package/dist/__tests__/reverse-facts.test.d.ts +2 -0
  32. package/dist/__tests__/reverse-facts.test.d.ts.map +1 -0
  33. package/dist/__tests__/reverse-facts.test.js +78 -0
  34. package/dist/__tests__/reverse-facts.test.js.map +1 -0
  35. package/dist/__tests__/review.test.js +38 -38
  36. package/dist/__tests__/validate.test.js +65 -65
  37. package/dist/bin/dare.js +30 -3
  38. package/dist/bin/dare.js.map +1 -1
  39. package/dist/commands/__tests__/init.integration.spec.d.ts +2 -0
  40. package/dist/commands/__tests__/init.integration.spec.d.ts.map +1 -0
  41. package/dist/commands/__tests__/init.integration.spec.js +134 -0
  42. package/dist/commands/__tests__/init.integration.spec.js.map +1 -0
  43. package/dist/commands/blueprint.js +122 -122
  44. package/dist/commands/dag.d.ts.map +1 -1
  45. package/dist/commands/dag.js +43 -79
  46. package/dist/commands/dag.js.map +1 -1
  47. package/dist/commands/dna.d.ts +3 -0
  48. package/dist/commands/dna.d.ts.map +1 -0
  49. package/dist/commands/dna.js +69 -0
  50. package/dist/commands/dna.js.map +1 -0
  51. package/dist/commands/init.d.ts.map +1 -1
  52. package/dist/commands/init.js +84 -1
  53. package/dist/commands/init.js.map +1 -1
  54. package/dist/commands/migrate.d.ts +3 -0
  55. package/dist/commands/migrate.d.ts.map +1 -0
  56. package/dist/commands/migrate.js +101 -0
  57. package/dist/commands/migrate.js.map +1 -0
  58. package/dist/commands/new.d.ts +16 -0
  59. package/dist/commands/new.d.ts.map +1 -0
  60. package/dist/commands/new.js +104 -0
  61. package/dist/commands/new.js.map +1 -0
  62. package/dist/commands/reverse.d.ts +3 -0
  63. package/dist/commands/reverse.d.ts.map +1 -0
  64. package/dist/commands/reverse.js +201 -0
  65. package/dist/commands/reverse.js.map +1 -0
  66. package/dist/commands/welcome.d.ts +14 -0
  67. package/dist/commands/welcome.d.ts.map +1 -0
  68. package/dist/commands/welcome.js +29 -0
  69. package/dist/commands/welcome.js.map +1 -0
  70. package/dist/mcp-server/bin/server.js +0 -0
  71. package/dist/skills/commands/add.d.ts +23 -0
  72. package/dist/skills/commands/add.d.ts.map +1 -0
  73. package/dist/skills/commands/add.js +206 -0
  74. package/dist/skills/commands/add.js.map +1 -0
  75. package/dist/skills/commands/info.d.ts +14 -0
  76. package/dist/skills/commands/info.d.ts.map +1 -0
  77. package/dist/skills/commands/info.js +99 -0
  78. package/dist/skills/commands/info.js.map +1 -0
  79. package/dist/skills/commands/list.d.ts +19 -0
  80. package/dist/skills/commands/list.d.ts.map +1 -0
  81. package/dist/skills/commands/list.js +163 -0
  82. package/dist/skills/commands/list.js.map +1 -0
  83. package/dist/skills/commands/publish.d.ts +56 -0
  84. package/dist/skills/commands/publish.d.ts.map +1 -0
  85. package/dist/skills/commands/publish.js +272 -0
  86. package/dist/skills/commands/publish.js.map +1 -0
  87. package/dist/skills/commands/remove.d.ts +19 -0
  88. package/dist/skills/commands/remove.d.ts.map +1 -0
  89. package/dist/skills/commands/remove.js +96 -0
  90. package/dist/skills/commands/remove.js.map +1 -0
  91. package/dist/skills/commands/update.d.ts +31 -0
  92. package/dist/skills/commands/update.d.ts.map +1 -0
  93. package/dist/skills/commands/update.js +132 -0
  94. package/dist/skills/commands/update.js.map +1 -0
  95. package/dist/skills/index.d.ts +22 -0
  96. package/dist/skills/index.d.ts.map +1 -0
  97. package/dist/skills/index.js +33 -0
  98. package/dist/skills/index.js.map +1 -0
  99. package/dist/skills/manifest.d.ts +54 -0
  100. package/dist/skills/manifest.d.ts.map +1 -0
  101. package/dist/skills/manifest.js +162 -0
  102. package/dist/skills/manifest.js.map +1 -0
  103. package/dist/skills/registry-local.d.ts +67 -0
  104. package/dist/skills/registry-local.d.ts.map +1 -0
  105. package/dist/skills/registry-local.js +130 -0
  106. package/dist/skills/registry-local.js.map +1 -0
  107. package/dist/skills/registry-mock.json +109 -0
  108. package/dist/skills/registry-remote.d.ts +110 -0
  109. package/dist/skills/registry-remote.d.ts.map +1 -0
  110. package/dist/skills/registry-remote.js +246 -0
  111. package/dist/skills/registry-remote.js.map +1 -0
  112. package/dist/skills/registry.d.ts +49 -0
  113. package/dist/skills/registry.d.ts.map +1 -0
  114. package/dist/skills/registry.js +94 -0
  115. package/dist/skills/registry.js.map +1 -0
  116. package/dist/skills/tests/manifest.spec.d.ts +8 -0
  117. package/dist/skills/tests/manifest.spec.d.ts.map +1 -0
  118. package/dist/skills/tests/manifest.spec.js +176 -0
  119. package/dist/skills/tests/manifest.spec.js.map +1 -0
  120. package/dist/skills/tests/publish.spec.d.ts +12 -0
  121. package/dist/skills/tests/publish.spec.d.ts.map +1 -0
  122. package/dist/skills/tests/publish.spec.js +276 -0
  123. package/dist/skills/tests/publish.spec.js.map +1 -0
  124. package/dist/skills/tests/registry-local.spec.d.ts +8 -0
  125. package/dist/skills/tests/registry-local.spec.d.ts.map +1 -0
  126. package/dist/skills/tests/registry-local.spec.js +231 -0
  127. package/dist/skills/tests/registry-local.spec.js.map +1 -0
  128. package/dist/skills/tests/registry.spec.d.ts +7 -0
  129. package/dist/skills/tests/registry.spec.d.ts.map +1 -0
  130. package/dist/skills/tests/registry.spec.js +58 -0
  131. package/dist/skills/tests/registry.spec.js.map +1 -0
  132. package/dist/skills/tests/remote-registry.spec.d.ts +9 -0
  133. package/dist/skills/tests/remote-registry.spec.d.ts.map +1 -0
  134. package/dist/skills/tests/remote-registry.spec.js +357 -0
  135. package/dist/skills/tests/remote-registry.spec.js.map +1 -0
  136. package/dist/skills/tests/update.spec.d.ts +9 -0
  137. package/dist/skills/tests/update.spec.d.ts.map +1 -0
  138. package/dist/skills/tests/update.spec.js +166 -0
  139. package/dist/skills/tests/update.spec.js.map +1 -0
  140. package/dist/stacks/__tests__/dna-emitter.spec.d.ts +2 -0
  141. package/dist/stacks/__tests__/dna-emitter.spec.d.ts.map +1 -0
  142. package/dist/stacks/__tests__/dna-emitter.spec.js +207 -0
  143. package/dist/stacks/__tests__/dna-emitter.spec.js.map +1 -0
  144. package/dist/stacks/__tests__/dna.spec.d.ts +2 -0
  145. package/dist/stacks/__tests__/dna.spec.d.ts.map +1 -0
  146. package/dist/stacks/__tests__/dna.spec.js +211 -0
  147. package/dist/stacks/__tests__/dna.spec.js.map +1 -0
  148. package/dist/stacks/__tests__/parity-rails.fixture.json +228 -0
  149. package/dist/stacks/__tests__/parity-rails.spec.d.ts +2 -0
  150. package/dist/stacks/__tests__/parity-rails.spec.d.ts.map +1 -0
  151. package/dist/stacks/__tests__/parity-rails.spec.js +99 -0
  152. package/dist/stacks/__tests__/parity-rails.spec.js.map +1 -0
  153. package/dist/stacks/__tests__/registry.spec.d.ts +2 -0
  154. package/dist/stacks/__tests__/registry.spec.d.ts.map +1 -0
  155. package/dist/stacks/__tests__/registry.spec.js +101 -0
  156. package/dist/stacks/__tests__/registry.spec.js.map +1 -0
  157. package/dist/stacks/__tests__/template-engine.spec.d.ts +2 -0
  158. package/dist/stacks/__tests__/template-engine.spec.d.ts.map +1 -0
  159. package/dist/stacks/__tests__/template-engine.spec.js +149 -0
  160. package/dist/stacks/__tests__/template-engine.spec.js.map +1 -0
  161. package/dist/stacks/dna-emitter.d.ts +45 -0
  162. package/dist/stacks/dna-emitter.d.ts.map +1 -0
  163. package/dist/stacks/dna-emitter.js +267 -0
  164. package/dist/stacks/dna-emitter.js.map +1 -0
  165. package/dist/stacks/go-gin/__tests__/scaffold.spec.d.ts +2 -0
  166. package/dist/stacks/go-gin/__tests__/scaffold.spec.d.ts.map +1 -0
  167. package/dist/stacks/go-gin/__tests__/scaffold.spec.js +221 -0
  168. package/dist/stacks/go-gin/__tests__/scaffold.spec.js.map +1 -0
  169. package/dist/stacks/go-gin/scaffold.d.ts +3 -0
  170. package/dist/stacks/go-gin/scaffold.d.ts.map +1 -0
  171. package/dist/stacks/go-gin/scaffold.js +105 -0
  172. package/dist/stacks/go-gin/scaffold.js.map +1 -0
  173. package/dist/stacks/go-stdlib/__tests__/scaffold.spec.d.ts +2 -0
  174. package/dist/stacks/go-stdlib/__tests__/scaffold.spec.d.ts.map +1 -0
  175. package/dist/stacks/go-stdlib/__tests__/scaffold.spec.js +215 -0
  176. package/dist/stacks/go-stdlib/__tests__/scaffold.spec.js.map +1 -0
  177. package/dist/stacks/go-stdlib/scaffold.d.ts +3 -0
  178. package/dist/stacks/go-stdlib/scaffold.d.ts.map +1 -0
  179. package/dist/stacks/go-stdlib/scaffold.js +106 -0
  180. package/dist/stacks/go-stdlib/scaffold.js.map +1 -0
  181. package/dist/stacks/mcp-go/__tests__/scaffold.spec.d.ts +2 -0
  182. package/dist/stacks/mcp-go/__tests__/scaffold.spec.d.ts.map +1 -0
  183. package/dist/stacks/mcp-go/__tests__/scaffold.spec.js +203 -0
  184. package/dist/stacks/mcp-go/__tests__/scaffold.spec.js.map +1 -0
  185. package/dist/stacks/mcp-go/scaffold.d.ts +3 -0
  186. package/dist/stacks/mcp-go/scaffold.d.ts.map +1 -0
  187. package/dist/stacks/mcp-go/scaffold.js +94 -0
  188. package/dist/stacks/mcp-go/scaffold.js.map +1 -0
  189. package/dist/stacks/mcp-node-ts/__tests__/scaffold.spec.d.ts +2 -0
  190. package/dist/stacks/mcp-node-ts/__tests__/scaffold.spec.d.ts.map +1 -0
  191. package/dist/stacks/mcp-node-ts/__tests__/scaffold.spec.js +236 -0
  192. package/dist/stacks/mcp-node-ts/__tests__/scaffold.spec.js.map +1 -0
  193. package/dist/stacks/mcp-node-ts/scaffold.d.ts +3 -0
  194. package/dist/stacks/mcp-node-ts/scaffold.d.ts.map +1 -0
  195. package/dist/stacks/mcp-node-ts/scaffold.js +95 -0
  196. package/dist/stacks/mcp-node-ts/scaffold.js.map +1 -0
  197. package/dist/stacks/mcp-python/__tests__/scaffold.spec.d.ts +2 -0
  198. package/dist/stacks/mcp-python/__tests__/scaffold.spec.d.ts.map +1 -0
  199. package/dist/stacks/mcp-python/__tests__/scaffold.spec.js +228 -0
  200. package/dist/stacks/mcp-python/__tests__/scaffold.spec.js.map +1 -0
  201. package/dist/stacks/mcp-python/scaffold.d.ts +3 -0
  202. package/dist/stacks/mcp-python/scaffold.d.ts.map +1 -0
  203. package/dist/stacks/mcp-python/scaffold.js +98 -0
  204. package/dist/stacks/mcp-python/scaffold.js.map +1 -0
  205. package/dist/stacks/mcp-rust/__tests__/scaffold.spec.d.ts +2 -0
  206. package/dist/stacks/mcp-rust/__tests__/scaffold.spec.d.ts.map +1 -0
  207. package/dist/stacks/mcp-rust/__tests__/scaffold.spec.js +213 -0
  208. package/dist/stacks/mcp-rust/__tests__/scaffold.spec.js.map +1 -0
  209. package/dist/stacks/mcp-rust/scaffold.d.ts +3 -0
  210. package/dist/stacks/mcp-rust/scaffold.d.ts.map +1 -0
  211. package/dist/stacks/mcp-rust/scaffold.js +98 -0
  212. package/dist/stacks/mcp-rust/scaffold.js.map +1 -0
  213. package/dist/stacks/node-nestjs/__tests__/scaffold.spec.d.ts +2 -0
  214. package/dist/stacks/node-nestjs/__tests__/scaffold.spec.d.ts.map +1 -0
  215. package/dist/stacks/node-nestjs/__tests__/scaffold.spec.js +172 -0
  216. package/dist/stacks/node-nestjs/__tests__/scaffold.spec.js.map +1 -0
  217. package/dist/stacks/node-nestjs/scaffold.d.ts +3 -0
  218. package/dist/stacks/node-nestjs/scaffold.d.ts.map +1 -0
  219. package/dist/stacks/node-nestjs/scaffold.js +117 -0
  220. package/dist/stacks/node-nestjs/scaffold.js.map +1 -0
  221. package/dist/stacks/php-laravel/__tests__/scaffold.spec.d.ts +2 -0
  222. package/dist/stacks/php-laravel/__tests__/scaffold.spec.d.ts.map +1 -0
  223. package/dist/stacks/php-laravel/__tests__/scaffold.spec.js +205 -0
  224. package/dist/stacks/php-laravel/__tests__/scaffold.spec.js.map +1 -0
  225. package/dist/stacks/php-laravel/scaffold.d.ts +3 -0
  226. package/dist/stacks/php-laravel/scaffold.d.ts.map +1 -0
  227. package/dist/stacks/php-laravel/scaffold.js +109 -0
  228. package/dist/stacks/php-laravel/scaffold.js.map +1 -0
  229. package/dist/stacks/python-fastapi/__tests__/scaffold.spec.d.ts +2 -0
  230. package/dist/stacks/python-fastapi/__tests__/scaffold.spec.d.ts.map +1 -0
  231. package/dist/stacks/python-fastapi/__tests__/scaffold.spec.js +168 -0
  232. package/dist/stacks/python-fastapi/__tests__/scaffold.spec.js.map +1 -0
  233. package/dist/stacks/python-fastapi/scaffold.d.ts +3 -0
  234. package/dist/stacks/python-fastapi/scaffold.d.ts.map +1 -0
  235. package/dist/stacks/python-fastapi/scaffold.js +108 -0
  236. package/dist/stacks/python-fastapi/scaffold.js.map +1 -0
  237. package/dist/stacks/registry.d.ts +38 -0
  238. package/dist/stacks/registry.d.ts.map +1 -0
  239. package/dist/stacks/registry.js +153 -0
  240. package/dist/stacks/registry.js.map +1 -0
  241. package/dist/stacks/ruby-rails-8/__tests__/scaffold.spec.d.ts +6 -0
  242. package/dist/stacks/ruby-rails-8/__tests__/scaffold.spec.d.ts.map +1 -0
  243. package/dist/stacks/ruby-rails-8/__tests__/scaffold.spec.js +604 -0
  244. package/dist/stacks/ruby-rails-8/__tests__/scaffold.spec.js.map +1 -0
  245. package/dist/stacks/ruby-rails-8/scaffold.d.ts +91 -0
  246. package/dist/stacks/ruby-rails-8/scaffold.d.ts.map +1 -0
  247. package/dist/stacks/ruby-rails-8/scaffold.js +410 -0
  248. package/dist/stacks/ruby-rails-8/scaffold.js.map +1 -0
  249. package/dist/stacks/rust-axum/__tests__/scaffold.spec.d.ts +2 -0
  250. package/dist/stacks/rust-axum/__tests__/scaffold.spec.d.ts.map +1 -0
  251. package/dist/stacks/rust-axum/__tests__/scaffold.spec.js +203 -0
  252. package/dist/stacks/rust-axum/__tests__/scaffold.spec.js.map +1 -0
  253. package/dist/stacks/rust-axum/scaffold.d.ts +3 -0
  254. package/dist/stacks/rust-axum/scaffold.d.ts.map +1 -0
  255. package/dist/stacks/rust-axum/scaffold.js +105 -0
  256. package/dist/stacks/rust-axum/scaffold.js.map +1 -0
  257. package/dist/stacks/template-engine.d.ts +38 -0
  258. package/dist/stacks/template-engine.d.ts.map +1 -0
  259. package/dist/stacks/template-engine.js +134 -0
  260. package/dist/stacks/template-engine.js.map +1 -0
  261. package/dist/stacks/types.d.ts +69 -0
  262. package/dist/stacks/types.d.ts.map +1 -0
  263. package/dist/stacks/types.js +29 -0
  264. package/dist/stacks/types.js.map +1 -0
  265. package/dist/utils/banner.d.ts +28 -0
  266. package/dist/utils/banner.d.ts.map +1 -0
  267. package/dist/utils/banner.js +77 -0
  268. package/dist/utils/banner.js.map +1 -0
  269. package/dist/utils/banner.spec.d.ts +5 -0
  270. package/dist/utils/banner.spec.d.ts.map +1 -0
  271. package/dist/utils/banner.spec.js +253 -0
  272. package/dist/utils/banner.spec.js.map +1 -0
  273. package/dist/utils/confidence.d.ts +41 -0
  274. package/dist/utils/confidence.d.ts.map +1 -0
  275. package/dist/utils/confidence.js +101 -0
  276. package/dist/utils/confidence.js.map +1 -0
  277. package/dist/utils/datamodel.d.ts +41 -0
  278. package/dist/utils/datamodel.d.ts.map +1 -0
  279. package/dist/utils/datamodel.js +535 -0
  280. package/dist/utils/datamodel.js.map +1 -0
  281. package/dist/utils/dna-detector.d.ts +61 -0
  282. package/dist/utils/dna-detector.d.ts.map +1 -0
  283. package/dist/utils/dna-detector.js +354 -0
  284. package/dist/utils/dna-detector.js.map +1 -0
  285. package/dist/utils/dna-facts.d.ts +13 -0
  286. package/dist/utils/dna-facts.d.ts.map +1 -0
  287. package/dist/utils/dna-facts.js +109 -0
  288. package/dist/utils/dna-facts.js.map +1 -0
  289. package/dist/utils/excalidraw-renderer.d.ts +11 -71
  290. package/dist/utils/excalidraw-renderer.d.ts.map +1 -1
  291. package/dist/utils/excalidraw-renderer.js +29 -162
  292. package/dist/utils/excalidraw-renderer.js.map +1 -1
  293. package/dist/utils/graph-renderer.d.ts +115 -0
  294. package/dist/utils/graph-renderer.d.ts.map +1 -0
  295. package/dist/utils/graph-renderer.js +216 -0
  296. package/dist/utils/graph-renderer.js.map +1 -0
  297. package/dist/utils/migration.d.ts +64 -0
  298. package/dist/utils/migration.d.ts.map +1 -0
  299. package/dist/utils/migration.js +183 -0
  300. package/dist/utils/migration.js.map +1 -0
  301. package/dist/utils/module-detector.d.ts +46 -0
  302. package/dist/utils/module-detector.d.ts.map +1 -0
  303. package/dist/utils/module-detector.js +348 -0
  304. package/dist/utils/module-detector.js.map +1 -0
  305. package/dist/utils/project-generator.d.ts +1 -1
  306. package/dist/utils/project-generator.d.ts.map +1 -1
  307. package/dist/utils/project-generator.js +268 -259
  308. package/dist/utils/project-generator.js.map +1 -1
  309. package/dist/utils/reverse-facts.d.ts +50 -0
  310. package/dist/utils/reverse-facts.d.ts.map +1 -0
  311. package/dist/utils/reverse-facts.js +291 -0
  312. package/dist/utils/reverse-facts.js.map +1 -0
  313. package/dist/utils/stack-bootstrap.d.ts +3 -2
  314. package/dist/utils/stack-bootstrap.d.ts.map +1 -1
  315. package/dist/utils/stack-bootstrap.js +417 -387
  316. package/dist/utils/stack-bootstrap.js.map +1 -1
  317. package/package.json +91 -82
  318. package/templates/DARE-dag-example.yaml +280 -280
  319. package/templates/UPDATE-MANIFEST.json +48 -48
  320. package/templates/backend/node-nestjs/.env.example +9 -9
  321. package/templates/backend/node-nestjs/nest-cli.json +8 -8
  322. package/templates/backend/node-nestjs/package.json +50 -50
  323. package/templates/backend/node-nestjs/src/app.controller.ts +12 -12
  324. package/templates/backend/node-nestjs/src/app.module.ts +15 -15
  325. package/templates/backend/node-nestjs/src/app.service.ts +8 -8
  326. package/templates/backend/node-nestjs/src/main.ts +24 -24
  327. package/templates/backend/node-nestjs/tsconfig.json +21 -21
  328. package/templates/backend/php-laravel/.env.example +22 -22
  329. package/templates/backend/php-laravel/app/Http/Controllers/HealthController.php +15 -15
  330. package/templates/backend/php-laravel/composer.json +40 -40
  331. package/templates/backend/python-fastapi/.env.example +4 -4
  332. package/templates/backend/python-fastapi/app/api/router.py +8 -8
  333. package/templates/backend/python-fastapi/app/core/config.py +20 -20
  334. package/templates/backend/python-fastapi/main.py +35 -35
  335. package/templates/backend/python-fastapi/requirements.txt +13 -13
  336. package/templates/backend/rust-axum/.env.example +3 -3
  337. package/templates/backend/rust-axum/Cargo.toml +23 -23
  338. package/templates/backend/rust-axum/src/errors.rs +30 -30
  339. package/templates/backend/rust-axum/src/main.rs +32 -32
  340. package/templates/backend/rust-axum/src/routes.rs +6 -6
  341. package/templates/frontend/leptos-csr/.cargo/config.toml +2 -2
  342. package/templates/frontend/leptos-csr/Cargo.toml +16 -16
  343. package/templates/frontend/leptos-csr/Trunk.toml +10 -10
  344. package/templates/frontend/leptos-csr/index.html +11 -11
  345. package/templates/frontend/leptos-csr/src/lib.rs +20 -20
  346. package/templates/frontend/leptos-csr/style/main.scss +19 -19
  347. package/templates/frontend/leptos-fullstack/.cargo/config.toml +4 -4
  348. package/templates/frontend/leptos-fullstack/Cargo.toml +56 -56
  349. package/templates/frontend/leptos-fullstack/src/app.rs +49 -49
  350. package/templates/frontend/leptos-fullstack/src/lib.rs +9 -9
  351. package/templates/frontend/leptos-fullstack/src/main.rs +29 -29
  352. package/templates/frontend/leptos-fullstack/style/main.scss +19 -19
  353. package/templates/frontend/react/index.html +12 -12
  354. package/templates/frontend/react/package.json +35 -35
  355. package/templates/frontend/react/src/App.tsx +25 -25
  356. package/templates/frontend/react/src/main.tsx +9 -9
  357. package/templates/frontend/vue/package.json +32 -32
  358. package/templates/frontend/vue/src/App.vue +7 -7
  359. package/templates/frontend/vue/src/main.ts +10 -10
  360. package/templates/frontend/vue/src/router/index.ts +14 -14
  361. package/templates/frontend/vue/src/views/HomeView.vue +6 -6
  362. package/templates/hooks/pre-commit-dare-validate +24 -24
  363. package/templates/ide/antigravity/.agents/skills/dare-ax/SKILL.md +152 -0
  364. package/templates/ide/antigravity/.agents/skills/dare-dag-build/SKILL.md +154 -0
  365. package/templates/ide/antigravity/.agents/skills/dare-dag-run/SKILL.md +130 -0
  366. package/templates/ide/antigravity/.agents/skills/dare-dag-runner/SKILL.md +203 -203
  367. package/templates/ide/antigravity/.agents/skills/dare-dna/SKILL.md +63 -0
  368. package/templates/ide/antigravity/.agents/skills/dare-docker/SKILL.md +315 -0
  369. package/templates/ide/antigravity/.agents/skills/dare-frontend-design/SKILL.md +192 -0
  370. package/templates/ide/antigravity/.agents/skills/dare-laravel-api/SKILL.md +337 -0
  371. package/templates/ide/antigravity/.agents/skills/dare-layered-design/SKILL.md +166 -0
  372. package/templates/ide/antigravity/.agents/skills/dare-llm-integration/SKILL.md +217 -0
  373. package/templates/ide/antigravity/.agents/skills/dare-migrate/SKILL.md +61 -0
  374. package/templates/ide/antigravity/.agents/skills/dare-quality-telemetry/SKILL.md +187 -0
  375. package/templates/ide/antigravity/.agents/skills/dare-realtime/SKILL.md +217 -0
  376. package/templates/ide/antigravity/.agents/skills/dare-refine/SKILL.md +114 -114
  377. package/templates/ide/antigravity/.agents/skills/dare-reverse/SKILL.md +108 -0
  378. package/templates/ide/antigravity/.agents/skills/dare-review/SKILL.md +111 -111
  379. package/templates/ide/antigravity/.agents/skills/dare-rust-leptos/SKILL.md +263 -0
  380. package/templates/ide/antigravity/.agents/skills/dare-rust-workspace/SKILL.md +275 -275
  381. package/templates/ide/antigravity/.agents/skills/dare-security/SKILL.md +274 -0
  382. package/templates/ide/antigravity/.agents/skills/dare-tasks/SKILL.md +265 -265
  383. package/templates/ide/antigravity/.agents/skills/dare-telemetry/SKILL.md +188 -0
  384. package/templates/ide/antigravity/.agents/skills/skill-fastapi-api/SKILL.md +343 -0
  385. package/templates/ide/antigravity/.agents/skills/skill-go-gin-api/SKILL.md +377 -0
  386. package/templates/ide/antigravity/.agents/skills/skill-mcp-server/SKILL.md +382 -0
  387. package/templates/ide/antigravity/.agents/skills/skill-nestjs-api/SKILL.md +326 -0
  388. package/templates/ide/antigravity/.agents/skills/skill-rails-api/SKILL.md +393 -0
  389. package/templates/ide/antigravity/templates/BLUEPRINT-template.md +193 -193
  390. package/templates/ide/antigravity/templates/DESIGN-template.md +129 -129
  391. package/templates/ide/antigravity/templates/TASK-SPEC-template.md +141 -141
  392. package/templates/ide/claude/.claude/commands/dare-ax.md +131 -0
  393. package/templates/ide/claude/.claude/commands/dare-blueprint.md +134 -134
  394. package/templates/ide/claude/.claude/commands/dare-bugfix-design.md +119 -0
  395. package/templates/ide/claude/.claude/commands/dare-dag-build.md +151 -151
  396. package/templates/ide/claude/.claude/commands/dare-dag-run.md +109 -109
  397. package/templates/ide/claude/.claude/commands/dare-dag-runner.md +117 -0
  398. package/templates/ide/claude/.claude/commands/dare-dag-viz.md +197 -197
  399. package/templates/ide/claude/.claude/commands/dare-design.md +69 -69
  400. package/templates/ide/claude/.claude/commands/dare-dna.md +75 -0
  401. package/templates/ide/claude/.claude/commands/dare-docker.md +207 -0
  402. package/templates/ide/claude/.claude/commands/dare-execute.md +152 -152
  403. package/templates/ide/claude/.claude/commands/dare-feature-design.md +147 -0
  404. package/templates/ide/claude/.claude/commands/dare-frontend-design.md +149 -0
  405. package/templates/ide/claude/.claude/commands/dare-laravel-api.md +211 -0
  406. package/templates/ide/claude/.claude/commands/dare-layered-design.md +124 -0
  407. package/templates/ide/claude/.claude/commands/dare-llm-integration.md +148 -0
  408. package/templates/ide/claude/.claude/commands/dare-migrate.md +72 -0
  409. package/templates/ide/claude/.claude/commands/dare-quality-telemetry.md +166 -0
  410. package/templates/ide/claude/.claude/commands/dare-realtime.md +159 -0
  411. package/templates/ide/claude/.claude/commands/dare-refine.md +145 -145
  412. package/templates/ide/claude/.claude/commands/dare-reverse.md +139 -0
  413. package/templates/ide/claude/.claude/commands/dare-review.md +113 -113
  414. package/templates/ide/claude/.claude/commands/dare-rust-leptos.md +269 -269
  415. package/templates/ide/claude/.claude/commands/dare-rust-workspace.md +209 -209
  416. package/templates/ide/claude/.claude/commands/dare-security.md +232 -232
  417. package/templates/ide/claude/.claude/commands/dare-tasks.md +70 -70
  418. package/templates/ide/claude/.claude/commands/dare-telemetry.md +132 -0
  419. package/templates/ide/claude/.claude/commands/skill-fastapi-api.md +205 -0
  420. package/templates/ide/claude/.claude/commands/skill-go-gin-api.md +232 -0
  421. package/templates/ide/claude/.claude/commands/skill-mcp-server.md +228 -0
  422. package/templates/ide/claude/.claude/commands/skill-nestjs-api.md +210 -0
  423. package/templates/ide/claude/.claude/commands/skill-rails-api.md +236 -0
  424. package/templates/ide/claude/.claude/settings.example.json +35 -35
  425. package/templates/ide/claude/CLAUDE.md +146 -146
  426. package/templates/ide/claude/templates/BLUEPRINT-template.md +193 -193
  427. package/templates/ide/claude/templates/DESIGN-template.md +129 -129
  428. package/templates/ide/claude/templates/TASK-SPEC-template.md +141 -141
  429. package/templates/ide/cursor/.cursor/commands/dag-viz.md +139 -0
  430. package/templates/ide/cursor/.cursor/commands/generate-blueprint.md +86 -86
  431. package/templates/ide/cursor/.cursor/commands/generate-design.md +35 -35
  432. package/templates/ide/cursor/.cursor/commands/generate-tasks.md +184 -184
  433. package/templates/ide/cursor/.cursor/commands/refine-task.md +107 -107
  434. package/templates/ide/cursor/.cursor/commands/review-task.md +91 -91
  435. package/templates/ide/cursor/.cursor/commands/run-dag.md +110 -110
  436. package/templates/ide/cursor/.cursor/rules/skill-ax.mdc +263 -0
  437. package/templates/ide/cursor/.cursor/rules/skill-dag-build.mdc +173 -0
  438. package/templates/ide/cursor/.cursor/rules/skill-dag-run.mdc +134 -0
  439. package/templates/ide/cursor/.cursor/rules/skill-dag-runner.mdc +221 -221
  440. package/templates/ide/cursor/.cursor/rules/skill-dna.mdc +63 -0
  441. package/templates/ide/cursor/.cursor/rules/skill-fastapi-api.mdc +352 -0
  442. package/templates/ide/cursor/.cursor/rules/skill-frontend-design.mdc +244 -0
  443. package/templates/ide/cursor/.cursor/rules/skill-go-gin-api.mdc +371 -0
  444. package/templates/ide/cursor/.cursor/rules/skill-layered-design.mdc +266 -0
  445. package/templates/ide/cursor/.cursor/rules/skill-llm-integration.mdc +295 -0
  446. package/templates/ide/cursor/.cursor/rules/skill-mcp-server.mdc +367 -0
  447. package/templates/ide/cursor/.cursor/rules/skill-migrate.mdc +58 -0
  448. package/templates/ide/cursor/.cursor/rules/skill-nestjs-api.mdc +346 -0
  449. package/templates/ide/cursor/.cursor/rules/skill-quality-telemetry.mdc +248 -0
  450. package/templates/ide/cursor/.cursor/rules/skill-rails-api.mdc +400 -0
  451. package/templates/ide/cursor/.cursor/rules/skill-realtime.mdc +262 -0
  452. package/templates/ide/cursor/.cursor/rules/skill-reverse.mdc +107 -0
  453. package/templates/ide/cursor/.cursor/rules/skill-rust-leptos.mdc +281 -0
  454. package/templates/ide/cursor/.cursor/rules/skill-rust-workspace.mdc +312 -312
  455. package/templates/ide/cursor/.cursor/rules/skill-security.mdc +245 -245
  456. package/templates/ide/cursor/templates/BLUEPRINT-template.md +193 -193
  457. package/templates/ide/cursor/templates/DESIGN-template.md +129 -129
  458. package/templates/ide/cursor/templates/TASK-SPEC-template.md +141 -141
  459. package/templates/shared/docker-compose.yml +41 -41
  460. package/templates/stacks/go-gin/.dare/skills.yml +11 -0
  461. package/templates/stacks/go-gin/.env.example +24 -0
  462. package/templates/stacks/go-gin/.github/workflows/dare-ci.yml +42 -0
  463. package/templates/stacks/go-gin/README.md.tpl +38 -0
  464. package/templates/stacks/go-gin/cmd/server/main.go.tpl +78 -0
  465. package/templates/stacks/go-gin/db/migrations/0001_create_users.down.sql +2 -0
  466. package/templates/stacks/go-gin/db/migrations/0001_create_users.up.sql +12 -0
  467. package/templates/stacks/go-gin/db/queries/users.sql +23 -0
  468. package/templates/stacks/go-gin/gitignore +7 -0
  469. package/templates/stacks/go-gin/go.mod.tpl +17 -0
  470. package/templates/stacks/go-gin/internal/config/config.go +41 -0
  471. package/templates/stacks/go-gin/internal/db/postgres.go.tpl +25 -0
  472. package/templates/stacks/go-gin/internal/handler/auth_handler.go.tpl +72 -0
  473. package/templates/stacks/go-gin/internal/handler/users_handler.go.tpl +72 -0
  474. package/templates/stacks/go-gin/internal/handler/ws_handler.go +37 -0
  475. package/templates/stacks/go-gin/internal/llm/dummy.go +14 -0
  476. package/templates/stacks/go-gin/internal/llm/provider.go +8 -0
  477. package/templates/stacks/go-gin/internal/middleware/jwt.go.tpl +58 -0
  478. package/templates/stacks/go-gin/internal/middleware/rate_limit.go +55 -0
  479. package/templates/stacks/go-gin/internal/model/user.go +17 -0
  480. package/templates/stacks/go-gin/internal/repository/users_repository.go.tpl +79 -0
  481. package/templates/stacks/go-gin/internal/service/auth_service.go.tpl +55 -0
  482. package/templates/stacks/go-gin/internal/service/users_service.go.tpl +53 -0
  483. package/templates/stacks/go-gin/llms.txt.tpl +54 -0
  484. package/templates/stacks/go-gin/openapi.json.tpl +46 -0
  485. package/templates/stacks/go-gin/sqlc.yaml +14 -0
  486. package/templates/stacks/go-gin/tests/smoke_test.go.tpl +22 -0
  487. package/templates/stacks/go-stdlib/.dare/skills.yml +11 -0
  488. package/templates/stacks/go-stdlib/.env.example +24 -0
  489. package/templates/stacks/go-stdlib/.github/workflows/dare-ci.yml +42 -0
  490. package/templates/stacks/go-stdlib/README.md.tpl +41 -0
  491. package/templates/stacks/go-stdlib/cmd/server/main.go.tpl +82 -0
  492. package/templates/stacks/go-stdlib/db/migrations/0001_create_users.down.sql +2 -0
  493. package/templates/stacks/go-stdlib/db/migrations/0001_create_users.up.sql +12 -0
  494. package/templates/stacks/go-stdlib/db/queries/users.sql +23 -0
  495. package/templates/stacks/go-stdlib/gitignore +6 -0
  496. package/templates/stacks/go-stdlib/go.mod.tpl +15 -0
  497. package/templates/stacks/go-stdlib/internal/config/config.go +41 -0
  498. package/templates/stacks/go-stdlib/internal/db/postgres.go.tpl +24 -0
  499. package/templates/stacks/go-stdlib/internal/handler/auth_handler.go.tpl +71 -0
  500. package/templates/stacks/go-stdlib/internal/handler/users_handler.go.tpl +84 -0
  501. package/templates/stacks/go-stdlib/internal/handler/ws_handler.go +36 -0
  502. package/templates/stacks/go-stdlib/internal/httpx/json.go +32 -0
  503. package/templates/stacks/go-stdlib/internal/llm/dummy.go +14 -0
  504. package/templates/stacks/go-stdlib/internal/llm/provider.go +8 -0
  505. package/templates/stacks/go-stdlib/internal/middleware/chain.go +21 -0
  506. package/templates/stacks/go-stdlib/internal/middleware/cors.go +27 -0
  507. package/templates/stacks/go-stdlib/internal/middleware/jwt.go.tpl +51 -0
  508. package/templates/stacks/go-stdlib/internal/middleware/rate_limit.go +81 -0
  509. package/templates/stacks/go-stdlib/internal/model/user.go +17 -0
  510. package/templates/stacks/go-stdlib/internal/repository/users_repository.go.tpl +75 -0
  511. package/templates/stacks/go-stdlib/internal/service/auth_service.go.tpl +55 -0
  512. package/templates/stacks/go-stdlib/internal/service/users_service.go.tpl +53 -0
  513. package/templates/stacks/go-stdlib/llms.txt.tpl +60 -0
  514. package/templates/stacks/go-stdlib/openapi.json.tpl +46 -0
  515. package/templates/stacks/go-stdlib/sqlc.yaml +14 -0
  516. package/templates/stacks/go-stdlib/tests/smoke_test.go.tpl +45 -0
  517. package/templates/stacks/mcp-go/.dare/skills.yml +8 -0
  518. package/templates/stacks/mcp-go/.env.example +14 -0
  519. package/templates/stacks/mcp-go/.github/workflows/dare-ci.yml +42 -0
  520. package/templates/stacks/mcp-go/README.md.tpl +50 -0
  521. package/templates/stacks/mcp-go/cmd/server/main.go.tpl +62 -0
  522. package/templates/stacks/mcp-go/gitignore +6 -0
  523. package/templates/stacks/mcp-go/go.mod.tpl +9 -0
  524. package/templates/stacks/mcp-go/internal/prompts/summarize.go +9 -0
  525. package/templates/stacks/mcp-go/internal/server/server.go.tpl +80 -0
  526. package/templates/stacks/mcp-go/internal/tools/echo.go +15 -0
  527. package/templates/stacks/mcp-go/internal/transports/http.go.tpl +21 -0
  528. package/templates/stacks/mcp-go/internal/transports/sse.go.tpl +17 -0
  529. package/templates/stacks/mcp-go/internal/transports/stdio.go.tpl +14 -0
  530. package/templates/stacks/mcp-go/llms.txt.tpl +60 -0
  531. package/templates/stacks/mcp-go/openapi.json.tpl +31 -0
  532. package/templates/stacks/mcp-go/tests/echo_test.go.tpl +37 -0
  533. package/templates/stacks/mcp-node-ts/.dare/skills.yml +8 -0
  534. package/templates/stacks/mcp-node-ts/.env.example +16 -0
  535. package/templates/stacks/mcp-node-ts/.github/workflows/dare-ci.yml +54 -0
  536. package/templates/stacks/mcp-node-ts/README.md.hbs +49 -0
  537. package/templates/stacks/mcp-node-ts/gitignore +7 -0
  538. package/templates/stacks/mcp-node-ts/llms.txt.hbs +61 -0
  539. package/templates/stacks/mcp-node-ts/openapi.json.hbs +39 -0
  540. package/templates/stacks/mcp-node-ts/package.json.hbs +35 -0
  541. package/templates/stacks/mcp-node-ts/src/cli.ts.hbs +71 -0
  542. package/templates/stacks/mcp-node-ts/src/prompts/index.ts +36 -0
  543. package/templates/stacks/mcp-node-ts/src/server.ts.hbs +45 -0
  544. package/templates/stacks/mcp-node-ts/src/tools/echo.ts +23 -0
  545. package/templates/stacks/mcp-node-ts/src/tools/index.ts +18 -0
  546. package/templates/stacks/mcp-node-ts/src/transports/http.ts +68 -0
  547. package/templates/stacks/mcp-node-ts/src/transports/sse.ts +58 -0
  548. package/templates/stacks/mcp-node-ts/src/transports/stdio.ts +5 -0
  549. package/templates/stacks/mcp-node-ts/tests/echo.test.ts +50 -0
  550. package/templates/stacks/mcp-node-ts/tsconfig.json +17 -0
  551. package/templates/stacks/mcp-python/.dare/skills.yml +8 -0
  552. package/templates/stacks/mcp-python/.env.example +14 -0
  553. package/templates/stacks/mcp-python/.github/workflows/dare-ci.yml +42 -0
  554. package/templates/stacks/mcp-python/README.md.j2 +49 -0
  555. package/templates/stacks/mcp-python/gitignore +12 -0
  556. package/templates/stacks/mcp-python/llms.txt.j2 +56 -0
  557. package/templates/stacks/mcp-python/openapi.json.j2 +33 -0
  558. package/templates/stacks/mcp-python/pyproject.toml.j2 +37 -0
  559. package/templates/stacks/mcp-python/src/__init__.py +0 -0
  560. package/templates/stacks/mcp-python/src/cli.py.j2 +68 -0
  561. package/templates/stacks/mcp-python/src/prompts/__init__.py +0 -0
  562. package/templates/stacks/mcp-python/src/prompts/summarize.py +10 -0
  563. package/templates/stacks/mcp-python/src/server.py.j2 +28 -0
  564. package/templates/stacks/mcp-python/src/tools/__init__.py +0 -0
  565. package/templates/stacks/mcp-python/src/tools/echo.py +12 -0
  566. package/templates/stacks/mcp-python/src/transports/__init__.py +0 -0
  567. package/templates/stacks/mcp-python/src/transports/http.py +12 -0
  568. package/templates/stacks/mcp-python/src/transports/sse.py +13 -0
  569. package/templates/stacks/mcp-python/src/transports/stdio.py +6 -0
  570. package/templates/stacks/mcp-python/tests/__init__.py +0 -0
  571. package/templates/stacks/mcp-python/tests/test_echo.py +28 -0
  572. package/templates/stacks/mcp-rust/.dare/skills.yml +8 -0
  573. package/templates/stacks/mcp-rust/.env.example +14 -0
  574. package/templates/stacks/mcp-rust/.github/workflows/dare-ci.yml +38 -0
  575. package/templates/stacks/mcp-rust/Cargo.toml.tera +35 -0
  576. package/templates/stacks/mcp-rust/README.md.tera +50 -0
  577. package/templates/stacks/mcp-rust/gitignore +5 -0
  578. package/templates/stacks/mcp-rust/llms.txt.tera +60 -0
  579. package/templates/stacks/mcp-rust/openapi.json.tera +31 -0
  580. package/templates/stacks/mcp-rust/src/cli.rs.tera +33 -0
  581. package/templates/stacks/mcp-rust/src/lib.rs +6 -0
  582. package/templates/stacks/mcp-rust/src/main.rs.tera +30 -0
  583. package/templates/stacks/mcp-rust/src/prompts/mod.rs +1 -0
  584. package/templates/stacks/mcp-rust/src/prompts/summarize.rs +5 -0
  585. package/templates/stacks/mcp-rust/src/server.rs.tera +38 -0
  586. package/templates/stacks/mcp-rust/src/tools/echo.rs +18 -0
  587. package/templates/stacks/mcp-rust/src/tools/mod.rs +22 -0
  588. package/templates/stacks/mcp-rust/src/transports/http.rs +27 -0
  589. package/templates/stacks/mcp-rust/src/transports/mod.rs +3 -0
  590. package/templates/stacks/mcp-rust/src/transports/sse.rs +33 -0
  591. package/templates/stacks/mcp-rust/src/transports/stdio.rs +14 -0
  592. package/templates/stacks/mcp-rust/tests/echo_test.rs.tera +27 -0
  593. package/templates/stacks/node-nestjs/.dare/skills.yml +11 -0
  594. package/templates/stacks/node-nestjs/.env.example +21 -0
  595. package/templates/stacks/node-nestjs/.github/workflows/dare-ci.yml +54 -0
  596. package/templates/stacks/node-nestjs/README.md.hbs +35 -0
  597. package/templates/stacks/node-nestjs/gitignore +7 -0
  598. package/templates/stacks/node-nestjs/llms.txt.hbs +47 -0
  599. package/templates/stacks/node-nestjs/nest-cli.json +16 -0
  600. package/templates/stacks/node-nestjs/openapi.json.hbs +75 -0
  601. package/templates/stacks/node-nestjs/package.json.hbs +57 -0
  602. package/templates/stacks/node-nestjs/prisma/schema.prisma +25 -0
  603. package/templates/stacks/node-nestjs/prisma/seed.ts.hbs +25 -0
  604. package/templates/stacks/node-nestjs/src/app.module.ts +39 -0
  605. package/templates/stacks/node-nestjs/src/auth/auth.controller.ts +29 -0
  606. package/templates/stacks/node-nestjs/src/auth/auth.module.ts +25 -0
  607. package/templates/stacks/node-nestjs/src/auth/auth.service.ts +36 -0
  608. package/templates/stacks/node-nestjs/src/auth/dto/login-response.dto.ts +9 -0
  609. package/templates/stacks/node-nestjs/src/auth/dto/login.dto.ts +17 -0
  610. package/templates/stacks/node-nestjs/src/auth/jwt.strategy.ts +25 -0
  611. package/templates/stacks/node-nestjs/src/common/filters/problem-details.filter.ts +38 -0
  612. package/templates/stacks/node-nestjs/src/common/interceptors/json-response.interceptor.ts +13 -0
  613. package/templates/stacks/node-nestjs/src/main.ts.hbs +44 -0
  614. package/templates/stacks/node-nestjs/src/prisma/prisma.module.ts +9 -0
  615. package/templates/stacks/node-nestjs/src/prisma/prisma.service.ts +9 -0
  616. package/templates/stacks/node-nestjs/src/users/dto/create-user.dto.ts +22 -0
  617. package/templates/stacks/node-nestjs/src/users/dto/user.dto.ts +15 -0
  618. package/templates/stacks/node-nestjs/src/users/users.controller.ts +41 -0
  619. package/templates/stacks/node-nestjs/src/users/users.module.ts +11 -0
  620. package/templates/stacks/node-nestjs/src/users/users.repository.ts +38 -0
  621. package/templates/stacks/node-nestjs/src/users/users.service.ts +38 -0
  622. package/templates/stacks/node-nestjs/tsconfig.build.json +4 -0
  623. package/templates/stacks/node-nestjs/tsconfig.json +28 -0
  624. package/templates/stacks/php-laravel/.dare/skills.yml +11 -0
  625. package/templates/stacks/php-laravel/.env.example +41 -0
  626. package/templates/stacks/php-laravel/.github/workflows/dare-ci.yml +43 -0
  627. package/templates/stacks/php-laravel/README.md.hbs +36 -0
  628. package/templates/stacks/php-laravel/app/Http/Controllers/Api/AuthController.php +36 -0
  629. package/templates/stacks/php-laravel/app/Http/Controllers/Api/UsersController.php +33 -0
  630. package/templates/stacks/php-laravel/app/Http/Requests/CreateUserRequest.php +26 -0
  631. package/templates/stacks/php-laravel/app/Http/Requests/LoginRequest.php +34 -0
  632. package/templates/stacks/php-laravel/app/Llm/Contracts/LlmProvider.php +12 -0
  633. package/templates/stacks/php-laravel/app/Llm/Providers/DummyProvider.php +13 -0
  634. package/templates/stacks/php-laravel/app/Llm/Providers/OpenAiProvider.php +33 -0
  635. package/templates/stacks/php-laravel/app/Models/User.php +44 -0
  636. package/templates/stacks/php-laravel/app/Repositories/UsersRepository.php +32 -0
  637. package/templates/stacks/php-laravel/app/Services/AuthService.php +37 -0
  638. package/templates/stacks/php-laravel/app/Services/UsersService.php +57 -0
  639. package/templates/stacks/php-laravel/artisan +12 -0
  640. package/templates/stacks/php-laravel/bootstrap/app.php +29 -0
  641. package/templates/stacks/php-laravel/bootstrap/providers.php +5 -0
  642. package/templates/stacks/php-laravel/composer.json.hbs +58 -0
  643. package/templates/stacks/php-laravel/config/l5-swagger.php +41 -0
  644. package/templates/stacks/php-laravel/config/reverb.php +34 -0
  645. package/templates/stacks/php-laravel/config/sanctum.php +15 -0
  646. package/templates/stacks/php-laravel/database/migrations/2026_06_01_000001_create_users_table.php +27 -0
  647. package/templates/stacks/php-laravel/database/seeders/DatabaseSeeder.php +21 -0
  648. package/templates/stacks/php-laravel/gitignore +23 -0
  649. package/templates/stacks/php-laravel/llms.txt.hbs +53 -0
  650. package/templates/stacks/php-laravel/openapi.json.hbs +43 -0
  651. package/templates/stacks/php-laravel/phpstan.neon +9 -0
  652. package/templates/stacks/php-laravel/routes/api.php +13 -0
  653. package/templates/stacks/php-laravel/routes/channels.php +7 -0
  654. package/templates/stacks/php-laravel/tests/Feature/AuthTest.php +35 -0
  655. package/templates/stacks/php-laravel/tests/Feature/UsersTest.php +30 -0
  656. package/templates/stacks/php-laravel/tests/Pest.php +5 -0
  657. package/templates/stacks/python-fastapi/.dare/skills.yml +11 -0
  658. package/templates/stacks/python-fastapi/.env.example +21 -0
  659. package/templates/stacks/python-fastapi/.github/workflows/dare-ci.yml +43 -0
  660. package/templates/stacks/python-fastapi/README.md.j2 +35 -0
  661. package/templates/stacks/python-fastapi/alembic/env.py +46 -0
  662. package/templates/stacks/python-fastapi/alembic/script.py.mako +26 -0
  663. package/templates/stacks/python-fastapi/alembic/versions/0001_create_users.py.j2 +37 -0
  664. package/templates/stacks/python-fastapi/alembic.ini.j2 +39 -0
  665. package/templates/stacks/python-fastapi/app/__init__.py +0 -0
  666. package/templates/stacks/python-fastapi/app/core/__init__.py +0 -0
  667. package/templates/stacks/python-fastapi/app/core/config.py +24 -0
  668. package/templates/stacks/python-fastapi/app/core/security.py +34 -0
  669. package/templates/stacks/python-fastapi/app/db/__init__.py +0 -0
  670. package/templates/stacks/python-fastapi/app/db/session.py +22 -0
  671. package/templates/stacks/python-fastapi/app/main.py.j2 +36 -0
  672. package/templates/stacks/python-fastapi/app/models/__init__.py +3 -0
  673. package/templates/stacks/python-fastapi/app/models/user.py +30 -0
  674. package/templates/stacks/python-fastapi/app/repositories/__init__.py +0 -0
  675. package/templates/stacks/python-fastapi/app/repositories/user_repository.py +34 -0
  676. package/templates/stacks/python-fastapi/app/routers/__init__.py +0 -0
  677. package/templates/stacks/python-fastapi/app/routers/auth.py +37 -0
  678. package/templates/stacks/python-fastapi/app/routers/users.py +46 -0
  679. package/templates/stacks/python-fastapi/app/schemas/__init__.py +0 -0
  680. package/templates/stacks/python-fastapi/app/schemas/user.py +56 -0
  681. package/templates/stacks/python-fastapi/app/services/__init__.py +0 -0
  682. package/templates/stacks/python-fastapi/app/services/auth_service.py +22 -0
  683. package/templates/stacks/python-fastapi/app/services/user_service.py +31 -0
  684. package/templates/stacks/python-fastapi/gitignore +12 -0
  685. package/templates/stacks/python-fastapi/llms.txt.j2 +53 -0
  686. package/templates/stacks/python-fastapi/openapi.json.j2 +43 -0
  687. package/templates/stacks/python-fastapi/pyproject.toml.j2 +45 -0
  688. package/templates/stacks/python-fastapi/tests/__init__.py +0 -0
  689. package/templates/stacks/python-fastapi/tests/test_auth.py +22 -0
  690. package/templates/stacks/ruby-rails-8/.dare/skills.yml +50 -0
  691. package/templates/stacks/ruby-rails-8/.env.example +20 -0
  692. package/templates/stacks/ruby-rails-8/.github/workflows/dare-ci.yml +112 -0
  693. package/templates/stacks/ruby-rails-8/Gemfile.erb +61 -0
  694. package/templates/stacks/ruby-rails-8/app/channels/application_cable/channel.rb +11 -0
  695. package/templates/stacks/ruby-rails-8/app/channels/application_cable/connection.rb +34 -0
  696. package/templates/stacks/ruby-rails-8/app/channels/dare_updates_channel.rb +18 -0
  697. package/templates/stacks/ruby-rails-8/app/channels/user_updates_channel.rb +23 -0
  698. package/templates/stacks/ruby-rails-8/app/controllers/application_controller.rb +44 -0
  699. package/templates/stacks/ruby-rails-8/app/controllers/concerns/problem_details.rb +93 -0
  700. package/templates/stacks/ruby-rails-8/app/handlers/summarize_handler.rb +33 -0
  701. package/templates/stacks/ruby-rails-8/app/handlers/users_handler.rb +68 -0
  702. package/templates/stacks/ruby-rails-8/app/llm/cache/llm_cache.rb +44 -0
  703. package/templates/stacks/ruby-rails-8/app/llm/prompts/prompt_loader.rb +54 -0
  704. package/templates/stacks/ruby-rails-8/app/llm/prompts/summarize_v1.jinja2 +12 -0
  705. package/templates/stacks/ruby-rails-8/app/llm/providers/dummy_provider.rb +35 -0
  706. package/templates/stacks/ruby-rails-8/app/llm/providers/llm_provider.rb +67 -0
  707. package/templates/stacks/ruby-rails-8/app/llm/providers/openai_provider.rb +62 -0
  708. package/templates/stacks/ruby-rails-8/app/llm/rate_limit/token_bucket.rb +82 -0
  709. package/templates/stacks/ruby-rails-8/app/llm/validators/summarize_output_schema.json +21 -0
  710. package/templates/stacks/ruby-rails-8/app/llm/validators/validator.rb +52 -0
  711. package/templates/stacks/ruby-rails-8/app/models/user.rb +36 -0
  712. package/templates/stacks/ruby-rails-8/app/presenters/user_presenter.rb +48 -0
  713. package/templates/stacks/ruby-rails-8/app/repositories/document_repository.rb +57 -0
  714. package/templates/stacks/ruby-rails-8/app/repositories/user_repository.rb +73 -0
  715. package/templates/stacks/ruby-rails-8/app/services/create_user_service.rb +67 -0
  716. package/templates/stacks/ruby-rails-8/app/services/realtime_service.rb +53 -0
  717. package/templates/stacks/ruby-rails-8/app/services/summarize_document_service.rb +57 -0
  718. package/templates/stacks/ruby-rails-8/config/dare.yml +42 -0
  719. package/templates/stacks/ruby-rails-8/config/initializers/dare.rb +31 -0
  720. package/templates/stacks/ruby-rails-8/config/initializers/rack_attack.rb +64 -0
  721. package/templates/stacks/ruby-rails-8/config/initializers/rswag_api.rb +12 -0
  722. package/templates/stacks/ruby-rails-8/lib/tasks/dare.rake +159 -0
  723. package/templates/stacks/ruby-rails-8/llms.txt.erb +69 -0
  724. package/templates/stacks/ruby-rails-8/spec/api/summarize_spec.rb +56 -0
  725. package/templates/stacks/ruby-rails-8/spec/api/users_spec.rb +72 -0
  726. package/templates/stacks/ruby-rails-8/spec/channels/dare_updates_channel_spec.rb +61 -0
  727. package/templates/stacks/ruby-rails-8/spec/channels/user_updates_channel_spec.rb +56 -0
  728. package/templates/stacks/ruby-rails-8/spec/factories/users.rb +27 -0
  729. package/templates/stacks/ruby-rails-8/spec/handlers/users_handler_spec.rb +88 -0
  730. package/templates/stacks/ruby-rails-8/spec/rails_helper.rb +31 -0
  731. package/templates/stacks/ruby-rails-8/spec/services/create_user_service_spec.rb +88 -0
  732. package/templates/stacks/ruby-rails-8/spec/services/summarize_document_service_spec.rb +142 -0
  733. package/templates/stacks/ruby-rails-8/spec/swagger_helper.rb +73 -0
  734. package/templates/stacks/rust-axum/.dare/skills.yml +11 -0
  735. package/templates/stacks/rust-axum/.env.example +26 -0
  736. package/templates/stacks/rust-axum/.github/workflows/dare-ci.yml +40 -0
  737. package/templates/stacks/rust-axum/Cargo.toml.tera +53 -0
  738. package/templates/stacks/rust-axum/README.md.tera +37 -0
  739. package/templates/stacks/rust-axum/gitignore +5 -0
  740. package/templates/stacks/rust-axum/llms.txt.tera +54 -0
  741. package/templates/stacks/rust-axum/migrations/0001_create_users.sql +13 -0
  742. package/templates/stacks/rust-axum/openapi.json.tera +46 -0
  743. package/templates/stacks/rust-axum/src/config.rs +45 -0
  744. package/templates/stacks/rust-axum/src/errors.rs +48 -0
  745. package/templates/stacks/rust-axum/src/handlers/auth.rs +48 -0
  746. package/templates/stacks/rust-axum/src/handlers/mod.rs +3 -0
  747. package/templates/stacks/rust-axum/src/handlers/users.rs +81 -0
  748. package/templates/stacks/rust-axum/src/handlers/ws.rs +24 -0
  749. package/templates/stacks/rust-axum/src/lib.rs +19 -0
  750. package/templates/stacks/rust-axum/src/llm/mod.rs +1 -0
  751. package/templates/stacks/rust-axum/src/llm/provider.rs +48 -0
  752. package/templates/stacks/rust-axum/src/main.rs.tera +64 -0
  753. package/templates/stacks/rust-axum/src/middleware/auth.rs +20 -0
  754. package/templates/stacks/rust-axum/src/middleware/mod.rs +2 -0
  755. package/templates/stacks/rust-axum/src/middleware/rate_limit.rs +27 -0
  756. package/templates/stacks/rust-axum/src/models/mod.rs +1 -0
  757. package/templates/stacks/rust-axum/src/models/user.rs +13 -0
  758. package/templates/stacks/rust-axum/src/repositories/mod.rs +1 -0
  759. package/templates/stacks/rust-axum/src/repositories/user_repository.rs +62 -0
  760. package/templates/stacks/rust-axum/src/services/auth_service.rs +50 -0
  761. package/templates/stacks/rust-axum/src/services/mod.rs +2 -0
  762. package/templates/stacks/rust-axum/src/services/user_service.rs +53 -0
  763. package/templates/stacks/rust-axum/tests/integration_test.rs.tera +13 -0
  764. package/LICENSE +0 -21
  765. package/dist/__tests__/dag-runner/adapters.test.d.ts +0 -2
  766. package/dist/__tests__/dag-runner/adapters.test.d.ts.map +0 -1
  767. package/dist/__tests__/dag-runner/adapters.test.js +0 -134
  768. package/dist/__tests__/dag-runner/adapters.test.js.map +0 -1
  769. package/dist/dag-runner/adapters/antigravity.d.ts +0 -6
  770. package/dist/dag-runner/adapters/antigravity.d.ts.map +0 -1
  771. package/dist/dag-runner/adapters/antigravity.js +0 -54
  772. package/dist/dag-runner/adapters/antigravity.js.map +0 -1
  773. package/dist/dag-runner/adapters/claude.d.ts +0 -6
  774. package/dist/dag-runner/adapters/claude.d.ts.map +0 -1
  775. package/dist/dag-runner/adapters/claude.js +0 -48
  776. package/dist/dag-runner/adapters/claude.js.map +0 -1
  777. package/dist/dag-runner/adapters/cursor.d.ts +0 -6
  778. package/dist/dag-runner/adapters/cursor.d.ts.map +0 -1
  779. package/dist/dag-runner/adapters/cursor.js +0 -58
  780. package/dist/dag-runner/adapters/cursor.js.map +0 -1
  781. package/dist/dag-runner/adapters/index.d.ts +0 -46
  782. package/dist/dag-runner/adapters/index.d.ts.map +0 -1
  783. package/dist/dag-runner/adapters/index.js +0 -55
  784. package/dist/dag-runner/adapters/index.js.map +0 -1
  785. package/dist/dag-runner/utils/timeout.d.ts +0 -27
  786. package/dist/dag-runner/utils/timeout.d.ts.map +0 -1
  787. package/dist/dag-runner/utils/timeout.js +0 -55
  788. package/dist/dag-runner/utils/timeout.js.map +0 -1
@@ -1,141 +1,141 @@
1
- # TASK [ID]: [Título da Task]
2
-
3
- > **Complexidade:** LOW / MED / HIGH
4
- > **Depends on:** [task-ids ou —]
5
- > **Estimativa:** [X horas]
6
-
7
- ---
8
-
9
- ## 1. OBJETIVO
10
-
11
- [Uma frase precisa do que esta task entrega. Deve ser verificável — termine com um estado observável, não uma ação.]
12
-
13
- Exemplo: _"Ao final desta task, o endpoint `POST /api/v1/users` aceita cadastro, valida unicidade de e-mail e retorna JWT."_
14
-
15
- ---
16
-
17
- ## 2. CONTEXTO
18
-
19
- - **Fase no BLUEPRINT:** Fase [N] — [Nome da fase]
20
- - **Arquivos existentes relevantes:** [caminhos de arquivos que servem de referência ou serão modificados]
21
- - **Decisões do BLUEPRINT que afetam esta task:** [cite seção/decisão específica]
22
-
23
- ---
24
-
25
- ## 3. ARQUIVOS A CRIAR / MODIFICAR
26
-
27
- | Ação | Caminho | Descrição |
28
- |------|---------|-----------|
29
- | CRIAR | `src/[módulo]/[arquivo]` | [o que contém] |
30
- | MODIFICAR | `src/[módulo]/[arquivo]` | [o que muda] |
31
- | CRIAR | `tests/[arquivo].test.[ext]` | Testes da feature |
32
-
33
- ---
34
-
35
- ## 4. IMPLEMENTAÇÃO
36
-
37
- ### Passo 1: [Nome do passo]
38
- [Descrição precisa do que fazer. Inclua assinaturas de função/struct se crítico.]
39
-
40
- ```[lang]
41
- // Exemplo de padrão esperado
42
- ```
43
-
44
- ### Passo 2: [Nome do passo]
45
- [Descrição]
46
-
47
- ### Passo 3: Testes
48
- - [ ] Teste do caminho feliz (`should_[comportamento]_when_[condição]`)
49
- - [ ] Teste de erro de validação (400 / erro de negócio)
50
- - [ ] Teste de autorização (401 / 403 quando aplicável)
51
- - [ ] Teste de edge case: [descrever]
52
-
53
- ---
54
-
55
- ## 5. CONSIDERAÇÕES DE SEGURANÇA
56
-
57
- - [ ] **Input validation:** toda entrada do usuário validada no servidor antes de qualquer processamento
58
- - [ ] **Autenticação / Autorização:** verificar se o usuário tem permissão sobre o *recurso específico*, não só sobre a rota
59
- - [ ] **Dados sensíveis:** senhas, tokens e PII nunca aparecem em logs, responses de erro ou mensagens de exceção
60
- - [ ] **SQL / Command Injection:** usar ORM / prepared statements; nunca concatenar strings em queries
61
- - [ ] **Dependências novas:** se esta task adicionar uma dependência, verificar CVEs com `npm audit` / `cargo audit` / `pip-audit` antes de commitar
62
- - [ ] **Segredo em código:** nenhum token, chave ou credencial hardcoded — sempre via variável de ambiente
63
-
64
- ---
65
-
66
- ## 6. VALIDATION GATES (RALPH LOOP)
67
-
68
- Execute **todos** antes de marcar a task como DONE. Se qualquer um falhar, leia o erro, corrija e reexecute.
69
-
70
- ```bash
71
- # 1. Build — sem erros de compilação
72
- [comando de build da stack]
73
-
74
- # 2. Tests — todos passando, incluindo os novos
75
- [comando de test]
76
-
77
- # 3. Lint — sem warnings
78
- [comando de lint]
79
-
80
- # 4. Auditoria de dependências (se novas deps foram adicionadas nesta task)
81
- [npm audit --audit-level=high | cargo audit | pip-audit | composer audit]
82
- ```
83
-
84
- > **Gate de segurança obrigatório:** se esta task adicionar dependências externas, `[audit-cmd]` não pode retornar CVE de nível HIGH ou CRITICAL.
85
-
86
- ---
87
-
88
- ## 7. PADRÕES PROIBIDOS (ANTI-STUB / ANTI-MOCK)
89
-
90
- > Esta seção é **inegociável**. O comando `dare review` (v2.17+) escaneia o código modificado por esta task e reprova se encontrar qualquer padrão abaixo.
91
-
92
- ### Em código de produção (qualquer arquivo **fora** de `*.test.*`, `*.spec.*`, `__tests__/`, `tests/`, `spec/`)
93
-
94
- - ❌ **TODO / FIXME / XXX / HACK** — qualquer um desses marcadores em comentário
95
- - ❌ **Função vazia** — `fn x() {}`, `function x() {}`, `def x(): pass`, `def x(): ...`
96
- - ❌ **Stub explícito** — `throw new Error('not implemented')`, `unimplemented!()`, `todo!()`, `raise NotImplementedError`
97
- - ❌ **Retorno-fantasma** — `return null` / `return undefined` / `return {}` / `return []` como **única** statement de função pública declarada nesta task
98
- - ❌ **Mocks fora de testes** — `jest.fn()`, `sinon.stub()`, `mockReturnValue`, dados hardcoded fingindo ser do banco, fixtures injetadas em controllers/services
99
- - ❌ **Comentário de placeholder** — `// implement later`, `# placeholder`, `// stub`, `// FIXME implement`
100
-
101
- ### Mocks são permitidos APENAS em
102
-
103
- - Arquivos de teste (`*.test.*`, `*.spec.*`, `__tests__/`, `tests/`, `spec/`)
104
- - Seeds / fixtures dentro de `database/seeders/`, `tests/fixtures/`
105
- - Helpers explicitamente marcados como auxiliares de teste
106
-
107
- ### Verificação automática
108
-
109
- Antes de marcar a task como DONE, rode:
110
-
111
- ```bash
112
- dare review <task-id>
113
- ```
114
-
115
- Output esperado:
116
-
117
- ```
118
- ✅ task-XYZ: nenhum padrão proibido detectado em N arquivos modificados.
119
- ```
120
-
121
- Se a review falhar, a task **não pode** ir para DONE — corrija os achados e re-rode.
122
-
123
- ---
124
-
125
- ## 8. CRITÉRIOS DE DONE
126
-
127
- - [ ] Todos os 4 validation gates passaram sem erros (build + test + lint + audit)
128
- - [ ] Testes cobrem caminho feliz + erros enumerados + edge cases da seção 4
129
- - [ ] Considerações de segurança da seção 5 todas checadas
130
- - [ ] Arquivos listados na seção 3 criados/modificados conforme spec
131
- - [ ] **`dare review <task-id>` passou** (seção 7 — sem stubs, mocks, TODOs)
132
- - [ ] Cada validação declarada na spec tem teste demonstrando o erro real (não placeholder)
133
- - [ ] Cada edge case enumerado tem teste cobrindo
134
- - [ ] Endpoints retornam dados reais do banco/service, não hardcoded
135
- - [ ] `DARE/TASKS.md` atualizado com status `DONE`
136
-
137
- ---
138
-
139
- ## 9. PRÓXIMA TASK SUGERIDA
140
-
141
- `[task-id]` — [título] _(desbloqueada após conclusão desta task)_
1
+ # TASK [ID]: [Título da Task]
2
+
3
+ > **Complexidade:** LOW / MED / HIGH
4
+ > **Depends on:** [task-ids ou —]
5
+ > **Estimativa:** [X horas]
6
+
7
+ ---
8
+
9
+ ## 1. OBJETIVO
10
+
11
+ [Uma frase precisa do que esta task entrega. Deve ser verificável — termine com um estado observável, não uma ação.]
12
+
13
+ Exemplo: _"Ao final desta task, o endpoint `POST /api/v1/users` aceita cadastro, valida unicidade de e-mail e retorna JWT."_
14
+
15
+ ---
16
+
17
+ ## 2. CONTEXTO
18
+
19
+ - **Fase no BLUEPRINT:** Fase [N] — [Nome da fase]
20
+ - **Arquivos existentes relevantes:** [caminhos de arquivos que servem de referência ou serão modificados]
21
+ - **Decisões do BLUEPRINT que afetam esta task:** [cite seção/decisão específica]
22
+
23
+ ---
24
+
25
+ ## 3. ARQUIVOS A CRIAR / MODIFICAR
26
+
27
+ | Ação | Caminho | Descrição |
28
+ |------|---------|-----------|
29
+ | CRIAR | `src/[módulo]/[arquivo]` | [o que contém] |
30
+ | MODIFICAR | `src/[módulo]/[arquivo]` | [o que muda] |
31
+ | CRIAR | `tests/[arquivo].test.[ext]` | Testes da feature |
32
+
33
+ ---
34
+
35
+ ## 4. IMPLEMENTAÇÃO
36
+
37
+ ### Passo 1: [Nome do passo]
38
+ [Descrição precisa do que fazer. Inclua assinaturas de função/struct se crítico.]
39
+
40
+ ```[lang]
41
+ // Exemplo de padrão esperado
42
+ ```
43
+
44
+ ### Passo 2: [Nome do passo]
45
+ [Descrição]
46
+
47
+ ### Passo 3: Testes
48
+ - [ ] Teste do caminho feliz (`should_[comportamento]_when_[condição]`)
49
+ - [ ] Teste de erro de validação (400 / erro de negócio)
50
+ - [ ] Teste de autorização (401 / 403 quando aplicável)
51
+ - [ ] Teste de edge case: [descrever]
52
+
53
+ ---
54
+
55
+ ## 5. CONSIDERAÇÕES DE SEGURANÇA
56
+
57
+ - [ ] **Input validation:** toda entrada do usuário validada no servidor antes de qualquer processamento
58
+ - [ ] **Autenticação / Autorização:** verificar se o usuário tem permissão sobre o *recurso específico*, não só sobre a rota
59
+ - [ ] **Dados sensíveis:** senhas, tokens e PII nunca aparecem em logs, responses de erro ou mensagens de exceção
60
+ - [ ] **SQL / Command Injection:** usar ORM / prepared statements; nunca concatenar strings em queries
61
+ - [ ] **Dependências novas:** se esta task adicionar uma dependência, verificar CVEs com `npm audit` / `cargo audit` / `pip-audit` antes de commitar
62
+ - [ ] **Segredo em código:** nenhum token, chave ou credencial hardcoded — sempre via variável de ambiente
63
+
64
+ ---
65
+
66
+ ## 6. VALIDATION GATES (RALPH LOOP)
67
+
68
+ Execute **todos** antes de marcar a task como DONE. Se qualquer um falhar, leia o erro, corrija e reexecute.
69
+
70
+ ```bash
71
+ # 1. Build — sem erros de compilação
72
+ [comando de build da stack]
73
+
74
+ # 2. Tests — todos passando, incluindo os novos
75
+ [comando de test]
76
+
77
+ # 3. Lint — sem warnings
78
+ [comando de lint]
79
+
80
+ # 4. Auditoria de dependências (se novas deps foram adicionadas nesta task)
81
+ [npm audit --audit-level=high | cargo audit | pip-audit | composer audit]
82
+ ```
83
+
84
+ > **Gate de segurança obrigatório:** se esta task adicionar dependências externas, `[audit-cmd]` não pode retornar CVE de nível HIGH ou CRITICAL.
85
+
86
+ ---
87
+
88
+ ## 7. PADRÕES PROIBIDOS (ANTI-STUB / ANTI-MOCK)
89
+
90
+ > Esta seção é **inegociável**. O comando `dare review` (v2.17+) escaneia o código modificado por esta task e reprova se encontrar qualquer padrão abaixo.
91
+
92
+ ### Em código de produção (qualquer arquivo **fora** de `*.test.*`, `*.spec.*`, `__tests__/`, `tests/`, `spec/`)
93
+
94
+ - ❌ **TODO / FIXME / XXX / HACK** — qualquer um desses marcadores em comentário
95
+ - ❌ **Função vazia** — `fn x() {}`, `function x() {}`, `def x(): pass`, `def x(): ...`
96
+ - ❌ **Stub explícito** — `throw new Error('not implemented')`, `unimplemented!()`, `todo!()`, `raise NotImplementedError`
97
+ - ❌ **Retorno-fantasma** — `return null` / `return undefined` / `return {}` / `return []` como **única** statement de função pública declarada nesta task
98
+ - ❌ **Mocks fora de testes** — `jest.fn()`, `sinon.stub()`, `mockReturnValue`, dados hardcoded fingindo ser do banco, fixtures injetadas em controllers/services
99
+ - ❌ **Comentário de placeholder** — `// implement later`, `# placeholder`, `// stub`, `// FIXME implement`
100
+
101
+ ### Mocks são permitidos APENAS em
102
+
103
+ - Arquivos de teste (`*.test.*`, `*.spec.*`, `__tests__/`, `tests/`, `spec/`)
104
+ - Seeds / fixtures dentro de `database/seeders/`, `tests/fixtures/`
105
+ - Helpers explicitamente marcados como auxiliares de teste
106
+
107
+ ### Verificação automática
108
+
109
+ Antes de marcar a task como DONE, rode:
110
+
111
+ ```bash
112
+ dare review <task-id>
113
+ ```
114
+
115
+ Output esperado:
116
+
117
+ ```
118
+ ✅ task-XYZ: nenhum padrão proibido detectado em N arquivos modificados.
119
+ ```
120
+
121
+ Se a review falhar, a task **não pode** ir para DONE — corrija os achados e re-rode.
122
+
123
+ ---
124
+
125
+ ## 8. CRITÉRIOS DE DONE
126
+
127
+ - [ ] Todos os 4 validation gates passaram sem erros (build + test + lint + audit)
128
+ - [ ] Testes cobrem caminho feliz + erros enumerados + edge cases da seção 4
129
+ - [ ] Considerações de segurança da seção 5 todas checadas
130
+ - [ ] Arquivos listados na seção 3 criados/modificados conforme spec
131
+ - [ ] **`dare review <task-id>` passou** (seção 7 — sem stubs, mocks, TODOs)
132
+ - [ ] Cada validação declarada na spec tem teste demonstrando o erro real (não placeholder)
133
+ - [ ] Cada edge case enumerado tem teste cobrindo
134
+ - [ ] Endpoints retornam dados reais do banco/service, não hardcoded
135
+ - [ ] `DARE/TASKS.md` atualizado com status `DONE`
136
+
137
+ ---
138
+
139
+ ## 9. PRÓXIMA TASK SUGERIDA
140
+
141
+ `[task-id]` — [título] _(desbloqueada após conclusão desta task)_
@@ -0,0 +1,139 @@
1
+ # Comando: /dag-viz
2
+
3
+ ## Descrição
4
+
5
+ Gera diagrama interativo `.excalidraw` a partir do `DARE/dare-dag.yaml` atual. Cada task vira um retângulo com cor baseada em complexidade e status visual, agrupado em colunas verticais (swim lanes) por rank, com setas conectando dependências.
6
+
7
+ ## Instruções para o Cursor Composer
8
+
9
+ 1. **Leia o DAG:** Abra `DARE/dare-dag.yaml`. Valide sintaxe YAML. Extraia tasks, complexidade, dependências e status.
10
+
11
+ 2. **Leia a skill de visualização:** Consulte `.cursor/rules/skill-dag-viz.mdc` (se existir) para convenções visuais e tokens de design.
12
+
13
+ 3. **Calcule ranks:**
14
+ - Tasks sem `depends_on` → rank 1
15
+ - Demais: rank = 1 + max(rank das dependências)
16
+ - Agrupe por rank para formar swim lanes verticais
17
+
18
+ 4. **Gere elementos Excalidraw:**
19
+ - Para cada task, crie retângulo 120×60px:
20
+ - Cor de fundo por `complexity`:
21
+ - LOW → azul `#e3f2fd`, stroke `#1976d2`
22
+ - MEDIUM → laranja `#fff3e0`, stroke `#f57c00`
23
+ - HIGH → rosa `#fce4ec`, stroke `#c2185b`
24
+ - Stroke por `status`:
25
+ - PENDING → linha sólida cinza padrão
26
+ - RUNNING → linha pontilhada azul
27
+ - DONE → linha sólida verde `#388e3c`
28
+ - FAILED → linha sólida vermelha `#d32f2f`
29
+ - Texto: `task-id\ntask-name\n[COMPLEXITY]`
30
+ - Para cada dependência em `depends_on`, crie seta de source → target, stroke cinza `#999`.
31
+
32
+ 5. **Posicione elementos:**
33
+ - X = 20 + (taskIndex_no_rank × 140)
34
+ - Y = 20 + (rank − 1) × 160
35
+
36
+ 6. **Salve:** Escreva resultado em `DARE/dag-graph.excalidraw` no formato JSON Excalidraw 2.x.
37
+
38
+ 7. **Mensagem final:**
39
+ ```
40
+ DAG gerado: DARE/dag-graph.excalidraw
41
+ Abra em https://excalidraw.com (File → Open) para visualizar e editar.
42
+ ```
43
+
44
+ ## Estrutura JSON Excalidraw esperada
45
+
46
+ ```json
47
+ {
48
+ "type": "excalidraw",
49
+ "version": 2,
50
+ "source": "dare-dag-viz",
51
+ "elements": [
52
+ {
53
+ "id": "task-001",
54
+ "type": "rectangle",
55
+ "x": 20, "y": 20,
56
+ "width": 120, "height": 60,
57
+ "backgroundColor": "#e3f2fd",
58
+ "strokeColor": "#1976d2",
59
+ "strokeStyle": "solid",
60
+ "fillStyle": "solid",
61
+ "roundness": { "type": 2, "value": 6 }
62
+ },
63
+ {
64
+ "type": "text",
65
+ "x": 25, "y": 25,
66
+ "text": "task-001\nSetup Auth\n[LOW]",
67
+ "fontSize": 12,
68
+ "containerId": "task-001"
69
+ },
70
+ {
71
+ "type": "arrow",
72
+ "startBinding": { "elementId": "task-001" },
73
+ "endBinding": { "elementId": "task-003" },
74
+ "strokeColor": "#999"
75
+ }
76
+ ],
77
+ "appState": {
78
+ "gridMode": "grid",
79
+ "gridSize": 20
80
+ },
81
+ "files": {}
82
+ }
83
+ ```
84
+
85
+ ## Campos esperados em `dare-dag.yaml`
86
+
87
+ ```yaml
88
+ tasks:
89
+ task-001:
90
+ name: "Setup Auth"
91
+ complexity: "LOW" # LOW | MEDIUM | HIGH
92
+ rank: 1 # opcional (calculado se ausente)
93
+ depends_on: [] # default []
94
+ status: "DONE" # PENDING | RUNNING | DONE | FAILED (default PENDING)
95
+ subtask_prompt: "..." # opcional
96
+ ```
97
+
98
+ **Obrigatórios:** `name`, `complexity`.
99
+ **Opcionais:** `rank`, `depends_on`, `status`.
100
+
101
+ ## Como abrir o resultado
102
+
103
+ 1. Acesse https://excalidraw.com
104
+ 2. File → Open → selecione `DARE/dag-graph.excalidraw`
105
+ 3. Edite livremente (mover, colorir, anotar)
106
+ 4. Salve no mesmo arquivo
107
+
108
+ ## Atualizar após mudanças
109
+
110
+ Sempre que `dare-dag.yaml` for modificado, rode `/dag-viz` para regenerar.
111
+
112
+ > Dica: faça backup se editou manualmente — a regeneração sobrescreve.
113
+
114
+ ## Troubleshooting
115
+
116
+ - **"File not found: DARE/dare-dag.yaml"** — projeto não tem DAG. Rode `/generate-tasks` primeiro para gerá-lo.
117
+ - **"JSON inválido"** — valide com `dare dag validate` (se CLI disponível) ou inspecione manualmente.
118
+ - **Diagrama muito grande** — abra em Excalidraw e ajuste com Ctrl+Mouse / pinch zoom.
119
+
120
+ ## Convenções visuais
121
+
122
+ - **Azul** (`#e3f2fd`) = LOW complexity
123
+ - **Laranja** (`#fff3e0`) = MEDIUM
124
+ - **Rosa** (`#fce4ec`) = HIGH
125
+ - **Verde** (`#388e3c`) = DONE
126
+ - **Vermelho** (`#d32f2f`) = FAILED
127
+ - **Pontilhado azul** = RUNNING
128
+ - **Cinza padrão** = PENDING
129
+
130
+ ## Próximos passos
131
+
132
+ - Exporte para PNG no Excalidraw para incluir em README ou PR
133
+ - Compartilhe o link colaborativo do Excalidraw com stakeholders
134
+ - Atualize após cada `/generate-tasks` ou `/run-dag`
135
+
136
+ ---
137
+
138
+ Skill MIT — parte do DARE Method.
139
+ Inspiração: [Excalidraw Diagram Skill](https://github.com/coleam00/excalidraw-diagram-skill) por Cole Medin.
@@ -1,86 +1,86 @@
1
- # Comando: /generate-blueprint
2
-
3
- ## Descrição
4
- Avança o DARE para a fase Architect: lê `DARE/DESIGN.md` aprovado e gera **somente** `DARE/BLUEPRINT.md`.
5
-
6
- > As tasks, DAG e specs de execução são geradas depois com `/generate-tasks`, após você revisar e aprovar o Blueprint.
7
-
8
- ## Instruções para o Cursor Composer
9
-
10
- 1. **Leia `DARE/DESIGN.md`** — obrigatório. Se não existir, peça `/generate-design` primeiro. Extraia: stack, RF-*, RNF-*, RS-*, integrações, restrições, escopo.
11
-
12
- 2. **Leia o template:** `templates/BLUEPRINT-template.md` — siga a estrutura fielmente.
13
-
14
- 3. **Gere `DARE/BLUEPRINT.md`** com seções obrigatórias:
15
-
16
- - **Visão Geral da Arquitetura** — diagrama Mermaid + tabela de decisões com justificativa
17
- - **Stack Técnica Definida** — versões fixas (não ranges)
18
- - **Estrutura de Pastas** — árvore completa dos arquivos a criar
19
- - **Modelo de Dados** — entidades, campos tipados, relacionamentos, índices
20
- - **Contratos de API** — método, rota, auth, request/response, status codes
21
- - **Plano de Execução (Fases)** — cada fase com critério de DONE verificável:
22
- - Fase 1 = containerização (Dockerfile + docker-compose + healthcheck) — sempre
23
- - Fase N-1 = auditoria de segurança + dependências — sempre
24
- - **Validation Gates por stack:**
25
- | Stack | Build | Test | Lint/Audit |
26
- |-------|-------|------|------------|
27
- | Rust | `cargo build` | `cargo test --workspace` | `cargo clippy && cargo audit` |
28
- | Node | `npm run build` | `npm test` | `npx eslint src && npm audit --audit-level=high` |
29
- | Python | verificar imports | `pytest` | `ruff check . && pip-audit` |
30
- | PHP | `php artisan config:cache` | `php artisan test` | `./vendor/bin/phpstan && composer audit` |
31
- | Go | `go build ./...` | `go test ./...` | `golangci-lint run` |
32
- - **Controles de Segurança** — checklist mapeando cada RS-* do DESIGN para fases específicas
33
- - **Estratégia de Testes** — unitários + integração + auditoria de deps + E2E
34
- - **Estratégia de Deploy** — por ambiente
35
- - **Checklist de Aprovação** — checkboxes para revisão humana
36
-
37
- ---
38
-
39
- ### 🚫 ANTI-STUB CONTRACT (regra inegociável)
40
-
41
- > **Por que existe esta seção:** o `/generate-tasks` que vem depois usa este Blueprint como **única fonte de verdade**. Se um endpoint, função ou regra ficar genérico aqui, o agente que implementar a task **será forçado a inventar** — e vai produzir mocks, stubs e esqueletos para "preencher o vazio". Detalhe agora.
42
- >
43
- > Tasks que produzem mock/stub/skeleton **falham** no `dare review` (v2.17+) e bloqueiam o `dare execute --complete`.
44
-
45
- Para **cada** endpoint, função pública, evento ou job declarado no Blueprint, especifique de forma **executável**:
46
-
47
- **Endpoints HTTP/RPC:**
48
- - Assinatura completa (método, path, headers, content-type)
49
- - Request schema (campos, tipos, restrições, opcionalidade)
50
- - Response schema **por status code** (2xx, 4xx, 5xx)
51
- - Validações server-side (lista exaustiva — `email único`, `senha ≥ 8 chars + maiúscula + dígito`)
52
- - Edge cases enumerados (input vazio, duplicado, expirado, sem permissão)
53
- - Side effects (tabelas/filas/caches/emails tocados — em ordem)
54
- - Exemplo concreto (payload real, response real — não placeholder)
55
-
56
- **Funções de domínio / services:**
57
- - Assinatura tipada (`fn name(args: Types) -> ReturnType`)
58
- - Pré-condições e pós-condições verificáveis
59
- - Estados de erro com tipo de exceção esperado
60
- - Comportamento em concorrência (idempotência, locking, retry)
61
-
62
- **Jobs / event handlers / workers:**
63
- - Trigger (evento, cron, fila — nome canônico)
64
- - Payload schema tipado
65
- - Retry policy (backoff, max attempts, DLQ)
66
- - Idempotência (chave + estratégia)
67
-
68
- **Modelos de dados:**
69
- - Cada campo: tipo, nullable, default, constraints (unique, fk, check), índices
70
- - Triggers / hooks (soft-delete, audit, encryption-at-rest)
71
-
72
- **Critério de "Blueprint detalhado o suficiente"** (auto-validação antes de salvar):
73
-
74
- - [ ] Para cada endpoint, um humano consegue escrever request/response sem perguntar?
75
- - [ ] Para cada função pública, está claro o que retorna em todos os caminhos (sucesso + erros enumerados)?
76
- - [ ] Edge cases enumerados explicitamente — não "tratar edge cases"?
77
- - [ ] Cada validação tem regra concreta — não só "validar email"?
78
- - [ ] Cada decisão arquitetural tem **justificativa**?
79
-
80
- **Anti-padrão a evitar:** seções como _"implementar autenticação"_ ou _"validar dados"_ — isso vira stub. Especifique algoritmo, campos, regras.
81
-
82
- 4. **Salve `DARE/BLUEPRINT.md`** e informe:
83
-
84
- _"Blueprint gerado. Revise a arquitetura, os contratos de API e os critérios de DONE de cada fase. Quando aprovado, execute `/generate-tasks` para gerar o DAG e as specs de execução."_
85
-
86
- **Não gere** `TASKS.md`, `dare-dag.yaml` nem arquivos em `EXECUTION/` — isso é responsabilidade do `/generate-tasks`.
1
+ # Comando: /generate-blueprint
2
+
3
+ ## Descrição
4
+ Avança o DARE para a fase Architect: lê `DARE/DESIGN.md` aprovado e gera **somente** `DARE/BLUEPRINT.md`.
5
+
6
+ > As tasks, DAG e specs de execução são geradas depois com `/generate-tasks`, após você revisar e aprovar o Blueprint.
7
+
8
+ ## Instruções para o Cursor Composer
9
+
10
+ 1. **Leia `DARE/DESIGN.md`** — obrigatório. Se não existir, peça `/generate-design` primeiro. Extraia: stack, RF-*, RNF-*, RS-*, integrações, restrições, escopo.
11
+
12
+ 2. **Leia o template:** `templates/BLUEPRINT-template.md` — siga a estrutura fielmente.
13
+
14
+ 3. **Gere `DARE/BLUEPRINT.md`** com seções obrigatórias:
15
+
16
+ - **Visão Geral da Arquitetura** — diagrama Mermaid + tabela de decisões com justificativa
17
+ - **Stack Técnica Definida** — versões fixas (não ranges)
18
+ - **Estrutura de Pastas** — árvore completa dos arquivos a criar
19
+ - **Modelo de Dados** — entidades, campos tipados, relacionamentos, índices
20
+ - **Contratos de API** — método, rota, auth, request/response, status codes
21
+ - **Plano de Execução (Fases)** — cada fase com critério de DONE verificável:
22
+ - Fase 1 = containerização (Dockerfile + docker-compose + healthcheck) — sempre
23
+ - Fase N-1 = auditoria de segurança + dependências — sempre
24
+ - **Validation Gates por stack:**
25
+ | Stack | Build | Test | Lint/Audit |
26
+ |-------|-------|------|------------|
27
+ | Rust | `cargo build` | `cargo test --workspace` | `cargo clippy && cargo audit` |
28
+ | Node | `npm run build` | `npm test` | `npx eslint src && npm audit --audit-level=high` |
29
+ | Python | verificar imports | `pytest` | `ruff check . && pip-audit` |
30
+ | PHP | `php artisan config:cache` | `php artisan test` | `./vendor/bin/phpstan && composer audit` |
31
+ | Go | `go build ./...` | `go test ./...` | `golangci-lint run` |
32
+ - **Controles de Segurança** — checklist mapeando cada RS-* do DESIGN para fases específicas
33
+ - **Estratégia de Testes** — unitários + integração + auditoria de deps + E2E
34
+ - **Estratégia de Deploy** — por ambiente
35
+ - **Checklist de Aprovação** — checkboxes para revisão humana
36
+
37
+ ---
38
+
39
+ ### 🚫 ANTI-STUB CONTRACT (regra inegociável)
40
+
41
+ > **Por que existe esta seção:** o `/generate-tasks` que vem depois usa este Blueprint como **única fonte de verdade**. Se um endpoint, função ou regra ficar genérico aqui, o agente que implementar a task **será forçado a inventar** — e vai produzir mocks, stubs e esqueletos para "preencher o vazio". Detalhe agora.
42
+ >
43
+ > Tasks que produzem mock/stub/skeleton **falham** no `dare review` (v2.17+) e bloqueiam o `dare execute --complete`.
44
+
45
+ Para **cada** endpoint, função pública, evento ou job declarado no Blueprint, especifique de forma **executável**:
46
+
47
+ **Endpoints HTTP/RPC:**
48
+ - Assinatura completa (método, path, headers, content-type)
49
+ - Request schema (campos, tipos, restrições, opcionalidade)
50
+ - Response schema **por status code** (2xx, 4xx, 5xx)
51
+ - Validações server-side (lista exaustiva — `email único`, `senha ≥ 8 chars + maiúscula + dígito`)
52
+ - Edge cases enumerados (input vazio, duplicado, expirado, sem permissão)
53
+ - Side effects (tabelas/filas/caches/emails tocados — em ordem)
54
+ - Exemplo concreto (payload real, response real — não placeholder)
55
+
56
+ **Funções de domínio / services:**
57
+ - Assinatura tipada (`fn name(args: Types) -> ReturnType`)
58
+ - Pré-condições e pós-condições verificáveis
59
+ - Estados de erro com tipo de exceção esperado
60
+ - Comportamento em concorrência (idempotência, locking, retry)
61
+
62
+ **Jobs / event handlers / workers:**
63
+ - Trigger (evento, cron, fila — nome canônico)
64
+ - Payload schema tipado
65
+ - Retry policy (backoff, max attempts, DLQ)
66
+ - Idempotência (chave + estratégia)
67
+
68
+ **Modelos de dados:**
69
+ - Cada campo: tipo, nullable, default, constraints (unique, fk, check), índices
70
+ - Triggers / hooks (soft-delete, audit, encryption-at-rest)
71
+
72
+ **Critério de "Blueprint detalhado o suficiente"** (auto-validação antes de salvar):
73
+
74
+ - [ ] Para cada endpoint, um humano consegue escrever request/response sem perguntar?
75
+ - [ ] Para cada função pública, está claro o que retorna em todos os caminhos (sucesso + erros enumerados)?
76
+ - [ ] Edge cases enumerados explicitamente — não "tratar edge cases"?
77
+ - [ ] Cada validação tem regra concreta — não só "validar email"?
78
+ - [ ] Cada decisão arquitetural tem **justificativa**?
79
+
80
+ **Anti-padrão a evitar:** seções como _"implementar autenticação"_ ou _"validar dados"_ — isso vira stub. Especifique algoritmo, campos, regras.
81
+
82
+ 4. **Salve `DARE/BLUEPRINT.md`** e informe:
83
+
84
+ _"Blueprint gerado. Revise a arquitetura, os contratos de API e os critérios de DONE de cada fase. Quando aprovado, execute `/generate-tasks` para gerar o DAG e as specs de execução."_
85
+
86
+ **Não gere** `TASKS.md`, `dare-dag.yaml` nem arquivos em `EXECUTION/` — isso é responsabilidade do `/generate-tasks`.