@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,35 +1,35 @@
1
- # Comando: /generate-design
2
-
3
- ## Descrição
4
- Inicia o Método DARE (fase Design) gerando `DARE/DESIGN.md` a partir de uma ideia inicial.
5
-
6
- ## Instruções para o Cursor Composer
7
-
8
- 1. **Leia o contexto:** `package.json` / `Cargo.toml` / `composer.json` / `go.mod` / `requirements.txt` para identificar a stack atual. Leia `.cursorrules` para entender padrões do projeto. Se `DARE/DESIGN.md` já existir, não sobrescreva sem aprovação explícita.
9
-
10
- 2. **Leia o template:** `templates/DESIGN-template.md` — siga a estrutura fielmente.
11
-
12
- 3. **Gere `DARE/DESIGN.md` com as seções obrigatórias:**
13
-
14
- - **Descrição** — 3 a 5 frases: o que é, qual problema resolve, quem usa
15
- - **Objetivos e Métricas de Sucesso** — tabela numerada (O-01, O-02…) com métrica verificável e meta numérica
16
- - **Stakeholders** — tabela: papel, time, interesse principal
17
- - **Requisitos Funcionais** — tabela numerada (RF-01, RF-02…) com prioridade MUST/SHOULD/COULD e critério de aceite
18
- - **Requisitos Não-Funcionais** — tabela numerada (RNF-01…): performance, disponibilidade, segurança, observabilidade, manutenibilidade
19
- - **Requisitos de Segurança** — tabela numerada (RS-01…). **Sempre inclua:**
20
- - RS-01: validação de entrada no servidor (OWASP A03)
21
- - RS-02: hash de senhas / proteção de dados sensíveis (OWASP A02)
22
- - RS-03: controle de acesso por recurso (OWASP A01)
23
- - RS-04: auditoria de dependências sem CVE HIGH/CRITICAL (OWASP A06)
24
- - RS-05: secrets via variáveis de ambiente — nunca em código
25
- - Requisitos específicos do domínio do projeto
26
- - **Stack Técnica** — tabela por camada com versões fixas
27
- - **Integrações Externas** — tabela: sistema, tipo, protocolo, direção, dados, responsável
28
- - **Restrições** — prazo, orçamento, técnicas, compliance
29
- - **Fora do Escopo (v1)** — lista explícita
30
- - **Riscos e Mitigações** — tabela com probabilidade, impacto e mitigação concreta
31
- - **Checklist de Aprovação** — checkboxes para revisão humana
32
-
33
- 4. **Qualidade:** O DESIGN.md deve responder claramente: O QUÊ, POR QUÊ, PARA QUEM, O QUE NÃO e QUAIS RISCOS. Use "[A definir]" para informações não disponíveis, mas nunca omita seções.
34
-
35
- 5. **Salve** `DARE/DESIGN.md` e informe: _"DESIGN.md gerado. Revise as seções, especialmente os Requisitos de Segurança (RS-*) e Riscos. Quando aprovado, execute `/generate-blueprint`."_
1
+ # Comando: /generate-design
2
+
3
+ ## Descrição
4
+ Inicia o Método DARE (fase Design) gerando `DARE/DESIGN.md` a partir de uma ideia inicial.
5
+
6
+ ## Instruções para o Cursor Composer
7
+
8
+ 1. **Leia o contexto:** `package.json` / `Cargo.toml` / `composer.json` / `go.mod` / `requirements.txt` para identificar a stack atual. Leia `.cursorrules` para entender padrões do projeto. Se `DARE/DESIGN.md` já existir, não sobrescreva sem aprovação explícita.
9
+
10
+ 2. **Leia o template:** `templates/DESIGN-template.md` — siga a estrutura fielmente.
11
+
12
+ 3. **Gere `DARE/DESIGN.md` com as seções obrigatórias:**
13
+
14
+ - **Descrição** — 3 a 5 frases: o que é, qual problema resolve, quem usa
15
+ - **Objetivos e Métricas de Sucesso** — tabela numerada (O-01, O-02…) com métrica verificável e meta numérica
16
+ - **Stakeholders** — tabela: papel, time, interesse principal
17
+ - **Requisitos Funcionais** — tabela numerada (RF-01, RF-02…) com prioridade MUST/SHOULD/COULD e critério de aceite
18
+ - **Requisitos Não-Funcionais** — tabela numerada (RNF-01…): performance, disponibilidade, segurança, observabilidade, manutenibilidade
19
+ - **Requisitos de Segurança** — tabela numerada (RS-01…). **Sempre inclua:**
20
+ - RS-01: validação de entrada no servidor (OWASP A03)
21
+ - RS-02: hash de senhas / proteção de dados sensíveis (OWASP A02)
22
+ - RS-03: controle de acesso por recurso (OWASP A01)
23
+ - RS-04: auditoria de dependências sem CVE HIGH/CRITICAL (OWASP A06)
24
+ - RS-05: secrets via variáveis de ambiente — nunca em código
25
+ - Requisitos específicos do domínio do projeto
26
+ - **Stack Técnica** — tabela por camada com versões fixas
27
+ - **Integrações Externas** — tabela: sistema, tipo, protocolo, direção, dados, responsável
28
+ - **Restrições** — prazo, orçamento, técnicas, compliance
29
+ - **Fora do Escopo (v1)** — lista explícita
30
+ - **Riscos e Mitigações** — tabela com probabilidade, impacto e mitigação concreta
31
+ - **Checklist de Aprovação** — checkboxes para revisão humana
32
+
33
+ 4. **Qualidade:** O DESIGN.md deve responder claramente: O QUÊ, POR QUÊ, PARA QUEM, O QUE NÃO e QUAIS RISCOS. Use "[A definir]" para informações não disponíveis, mas nunca omita seções.
34
+
35
+ 5. **Salve** `DARE/DESIGN.md` e informe: _"DESIGN.md gerado. Revise as seções, especialmente os Requisitos de Segurança (RS-*) e Riscos. Quando aprovado, execute `/generate-blueprint`."_
@@ -1,184 +1,184 @@
1
- # Comando: /generate-tasks
2
-
3
- ## Descrição
4
- Avança o Método DARE lendo o Blueprint aprovado e gerando os **três artefatos**
5
- da fase de execução: `TASKS.md` (visão humana), `dare-dag.yaml` (grafo
6
- executável pelo CLI) e `EXECUTION/task-<id>.md` (specs detalhadas por task).
7
-
8
- ## Pré-requisitos
9
-
10
- - `DARE/BLUEPRINT.md` aprovado pelo usuário.
11
- - Você deve seguir as regras de construção do DAG definidas em
12
- `.cursor/rules/skill-dag-runner.mdc` — leia antes de gerar.
13
-
14
- ## Instruções para o Cursor Composer
15
-
16
- ### 1. Ler o contexto
17
-
18
- - Leia `$ARGUMENTS` (geralmente `DARE/BLUEPRINT.md`).
19
- - Leia os templates: `templates/TASKS-template.md` e `templates/TASK-SPEC-template.md`.
20
- - Leia `.cursorrules` para convenções do projeto.
21
- - Leia a skill `skill-dag-runner.mdc` para regras de DAG (depends_on mínimo,
22
- complexity, prompt self-contained, output cap 4000, parent context 2000).
23
-
24
- ### 2. Decompor o Blueprint em tasks atômicas
25
-
26
- - Cada fase do Blueprint vira tasks pequenas o suficiente para um único prompt
27
- do Composer.
28
- - Tarefas de segurança (FormRequests, middlewares, Bcrypt, rate limit) devem
29
- ter tasks específicas ou estar explícitas nas tasks relevantes.
30
- - Atribua `complexity` a cada task: LOW / MED / HIGH.
31
-
32
- #### Regras inegociáveis de ordenação
33
-
34
- 1. **A primeira task deve preparar o ambiente local** — Dockerfile +
35
- `docker-compose.yml` + healthcheck. Sem isso o Ralph Loop não tem onde
36
- rodar build/test/lint. Exceção: projeto que já vive em monorepo
37
- containerizado.
38
- 2. **Não crie task "Ralph Loop final" / "Hardening final"** — o Ralph Loop
39
- roda automático em cada `dare execute --complete`. Não é uma task; é um
40
- gate por task.
41
- 3. **Tests devem ter assertions reais** desde a task que os escreve.
42
- Placeholders (`assertTrue(true)` etc.) fazem o gate `test` falhar e a
43
- task vai para FAILED.
44
-
45
- ### 3. Gerar `DARE/TASKS.md` (visão humana)
46
-
47
- Tabela com todas as tasks e dependências em formato legível:
48
-
49
- ```markdown
50
- | ID | Título | Status | Depends On | Complexity |
51
- |----------|---------------------------|-------------|------------------|------------|
52
- | task-001 | Setup project structure | ⏳ PENDING | — | LOW |
53
- | task-002 | DB migrations | ⏳ PENDING | — | MED |
54
- | task-003 | Auth controllers | ⏳ PENDING | task-001, 002 | HIGH |
55
- ```
56
-
57
- Inclua: total de tasks, fases agrupadas, tempo estimado, próximos passos.
58
-
59
- ### 4. Gerar `DARE/dare-dag.yaml` (grafo executável)
60
-
61
- Schema canônico (alinhado com `skill-dag-runner.mdc`):
62
-
63
- ```yaml
64
- title: "<Nome do Projeto> - Development Tasks"
65
- version: "1.0.0"
66
-
67
- limits:
68
- parent_context_chars: 2000
69
- task_output_chars: 4000
70
- timeout_seconds: 600
71
-
72
- models:
73
- cursor: { HIGH: gpt-5.3-codex, MED: composer-2, LOW: auto-low }
74
- claude: { HIGH: claude-sonnet-4-5, MED: claude-haiku-4, LOW: claude-haiku-4 }
75
- antigravity: { HIGH: gemini-2.5-pro, MED: gemini-2.5-flash, LOW: gemini-2.5-flash }
76
-
77
- tasks:
78
- - id: task-001
79
- title: "Setup project structure"
80
- depends_on: []
81
- complexity: LOW
82
- spec_file: EXECUTION/task-001.md
83
- subtask_prompt: |
84
- Setup base project structure following DARE/BLUEPRINT.md.
85
- Create directories: src/, tests/, docs/. Initialize package files.
86
- No business logic yet. Validation gate: project builds.
87
- ```
88
-
89
- **Regras inegociáveis:**
90
- - `id` em kebab-case e único.
91
- - `depends_on` mínimo — só adicione quando a task filha **literalmente** não
92
- pode começar sem o output da pai (arquivo, schema, decisão exportada).
93
- - `subtask_prompt` totalmente self-contained (o subagente recebe só ele +
94
- snippets de 2000 chars dos pais).
95
- - Pelo menos 2 tasks no rank 0 (com `depends_on: []`) para haver paralelismo
96
- real.
97
- - Cadeia linear (`001 → 002 → 003 → ...`) é antipattern. Reanalise.
98
-
99
- ### 5. Gerar `DARE/EXECUTION/task-<id>.md` (uma spec por task)
100
-
101
- Para CADA task em `dare-dag.yaml`, crie a spec correspondente seguindo
102
- `templates/TASK-SPEC-template.md`:
103
-
104
- - **Objetivo** claro
105
- - **Arquivos a criar/modificar**
106
- - **Validation Gates** (build, test, lint específicos da stack)
107
- - **Testes esperados**
108
- - **Considerações de segurança**
109
- - **Próxima task** sugerida
110
-
111
- O `subtask_prompt` no YAML pode referenciar a spec via
112
- `spec_file: EXECUTION/task-<id>.md` para que o subagente leia a spec na hora
113
- de executar.
114
-
115
- ### 5.1 ANTI-STUB CONTRACT (inegociável)
116
-
117
- > Tasks geradas com `subtask_prompt` ou spec genéricos forçam o agente a inventar — e ele vai produzir mock, stub ou esqueleto. **Não é negociável**. O comando `dare review <task-id>` (v2.17+) detecta isso e marca a task como FAILED.
118
-
119
- Cada `subtask_prompt` e `EXECUTION/task-<id>.md` deve atender este contrato:
120
-
121
- **O `subtask_prompt` deve ser auto-suficiente**
122
-
123
- O subagente recebe **apenas** o `subtask_prompt` + snippets de 2000 chars dos pais. Tudo que ele precisa para implementar **sem inventar** deve estar ali ou na `spec_file`. Inclua:
124
-
125
- - Caminho exato dos arquivos a criar/modificar
126
- - Assinaturas exatas das funções/endpoints (`fn name(params: T) -> R`)
127
- - Schema de request/response com tipos
128
- - Validações específicas (não "validar input" — `email: regex /^.../`, `senha: ≥ 8 chars + 1 maiúscula + 1 dígito`)
129
- - Edge cases enumerados (input vazio, duplicado, expirado, sem permissão)
130
- - Lista de testes esperados com nome + comportamento (`should_reject_duplicate_email_with_409`)
131
-
132
- **A `spec_file` (`EXECUTION/task-<id>.md`) deve ter Definition of Done anti-stub:**
133
-
134
- ```markdown
135
- ## Definition of Done (ANTI-STUB)
136
-
137
- - [ ] Nenhum `TODO`, `FIXME`, `XXX` ou `HACK` em arquivos modificados
138
- - [ ] Nenhuma função vazia (`fn x() {}`, `def x(): pass`, `function x() {}`)
139
- - [ ] Nenhum `throw new Error('not implemented')`, `unimplemented!()`, `todo!()`, `NotImplementedError`
140
- - [ ] Nenhum `return null` / `return undefined` / `return {}` como única statement de função pública
141
- - [ ] Mocks **somente** dentro de `*.test.*`, `*.spec.*`, `__tests__/`, `tests/`, `spec/` — NUNCA em código de produção
142
- - [ ] Todos os endpoints declarados na seção 3 retornam dados reais (não fixos / hardcoded)
143
- - [ ] Cada validação da spec produz erro real com status code correto (testado)
144
- - [ ] Cada edge case da spec tem teste unitário ou integração demonstrando comportamento
145
- ```
146
-
147
- **Verificação automatizável:** o agente que executar a task vai rodar `dare review <id>` antes de marcar DONE. Se a review falhar, a task volta para revisão.
148
-
149
- **Sinais de spec rasa** (auto-validar antes de salvar):
150
-
151
- - ❌ "Implementar X" — sem assinatura, sem retorno, sem validações
152
- - ❌ "Tratar erros adequadamente" — quais erros? como? que código?
153
- - ❌ "Adicionar validações" — quais regras?
154
- - ❌ Arquivos listados sem dizer **o que cada um contém**
155
- - ✅ "Implementar `POST /auth/login` retornando `{ token: string, refresh: string }` com 200 se credenciais válidas, 401 se inválidas, 429 se rate limit"
156
-
157
- ### 6. Validar consistência dos 3 artefatos
158
-
159
- - Mesmos `id`s em `TASKS.md`, `dare-dag.yaml` e `EXECUTION/task-*.md`.
160
- - Mesmas `depends_on` em `TASKS.md` e `dare-dag.yaml`.
161
- - Mesmas `complexity`.
162
- - Sem ciclos.
163
-
164
- ### 7. Regenerar a visualização do DAG
165
-
166
- Depois de salvar o `dare-dag.yaml`, rode:
167
-
168
- ```bash
169
- dare dag viz -o DARE/dag-graph.mmd
170
- ```
171
-
172
- Isso reescreve `DARE/dag-graph.mmd` (Mermaid) refletindo o grafo atualizado.
173
- O usuário pode abrir o arquivo no Cursor com a extensão Mermaid Preview.
174
-
175
- ### 8. Mensagem final ao usuário
176
-
177
- > Gerados 4 artefatos da fase de execução:
178
- > - `DARE/TASKS.md` ([N] tasks, visão humana)
179
- > - `DARE/dare-dag.yaml` (grafo executável, [N] ranks paralelos)
180
- > - `DARE/EXECUTION/task-*.md` ([N] specs detalhadas)
181
- > - `DARE/dag-graph.mmd` (visualização Mermaid do DAG)
182
- >
183
- > Revise (abra `dag-graph.mmd` para ver o grafo). Para executar:
184
- > `/run-dag` ou `dare execute --next`.
1
+ # Comando: /generate-tasks
2
+
3
+ ## Descrição
4
+ Avança o Método DARE lendo o Blueprint aprovado e gerando os **três artefatos**
5
+ da fase de execução: `TASKS.md` (visão humana), `dare-dag.yaml` (grafo
6
+ executável pelo CLI) e `EXECUTION/task-<id>.md` (specs detalhadas por task).
7
+
8
+ ## Pré-requisitos
9
+
10
+ - `DARE/BLUEPRINT.md` aprovado pelo usuário.
11
+ - Você deve seguir as regras de construção do DAG definidas em
12
+ `.cursor/rules/skill-dag-runner.mdc` — leia antes de gerar.
13
+
14
+ ## Instruções para o Cursor Composer
15
+
16
+ ### 1. Ler o contexto
17
+
18
+ - Leia `$ARGUMENTS` (geralmente `DARE/BLUEPRINT.md`).
19
+ - Leia os templates: `templates/TASKS-template.md` e `templates/TASK-SPEC-template.md`.
20
+ - Leia `.cursorrules` para convenções do projeto.
21
+ - Leia a skill `skill-dag-runner.mdc` para regras de DAG (depends_on mínimo,
22
+ complexity, prompt self-contained, output cap 4000, parent context 2000).
23
+
24
+ ### 2. Decompor o Blueprint em tasks atômicas
25
+
26
+ - Cada fase do Blueprint vira tasks pequenas o suficiente para um único prompt
27
+ do Composer.
28
+ - Tarefas de segurança (FormRequests, middlewares, Bcrypt, rate limit) devem
29
+ ter tasks específicas ou estar explícitas nas tasks relevantes.
30
+ - Atribua `complexity` a cada task: LOW / MED / HIGH.
31
+
32
+ #### Regras inegociáveis de ordenação
33
+
34
+ 1. **A primeira task deve preparar o ambiente local** — Dockerfile +
35
+ `docker-compose.yml` + healthcheck. Sem isso o Ralph Loop não tem onde
36
+ rodar build/test/lint. Exceção: projeto que já vive em monorepo
37
+ containerizado.
38
+ 2. **Não crie task "Ralph Loop final" / "Hardening final"** — o Ralph Loop
39
+ roda automático em cada `dare execute --complete`. Não é uma task; é um
40
+ gate por task.
41
+ 3. **Tests devem ter assertions reais** desde a task que os escreve.
42
+ Placeholders (`assertTrue(true)` etc.) fazem o gate `test` falhar e a
43
+ task vai para FAILED.
44
+
45
+ ### 3. Gerar `DARE/TASKS.md` (visão humana)
46
+
47
+ Tabela com todas as tasks e dependências em formato legível:
48
+
49
+ ```markdown
50
+ | ID | Título | Status | Depends On | Complexity |
51
+ |----------|---------------------------|-------------|------------------|------------|
52
+ | task-001 | Setup project structure | ⏳ PENDING | — | LOW |
53
+ | task-002 | DB migrations | ⏳ PENDING | — | MED |
54
+ | task-003 | Auth controllers | ⏳ PENDING | task-001, 002 | HIGH |
55
+ ```
56
+
57
+ Inclua: total de tasks, fases agrupadas, tempo estimado, próximos passos.
58
+
59
+ ### 4. Gerar `DARE/dare-dag.yaml` (grafo executável)
60
+
61
+ Schema canônico (alinhado com `skill-dag-runner.mdc`):
62
+
63
+ ```yaml
64
+ title: "<Nome do Projeto> - Development Tasks"
65
+ version: "1.0.0"
66
+
67
+ limits:
68
+ parent_context_chars: 2000
69
+ task_output_chars: 4000
70
+ timeout_seconds: 600
71
+
72
+ models:
73
+ cursor: { HIGH: gpt-5.3-codex, MED: composer-2, LOW: auto-low }
74
+ claude: { HIGH: claude-sonnet-4-5, MED: claude-haiku-4, LOW: claude-haiku-4 }
75
+ antigravity: { HIGH: gemini-2.5-pro, MED: gemini-2.5-flash, LOW: gemini-2.5-flash }
76
+
77
+ tasks:
78
+ - id: task-001
79
+ title: "Setup project structure"
80
+ depends_on: []
81
+ complexity: LOW
82
+ spec_file: EXECUTION/task-001.md
83
+ subtask_prompt: |
84
+ Setup base project structure following DARE/BLUEPRINT.md.
85
+ Create directories: src/, tests/, docs/. Initialize package files.
86
+ No business logic yet. Validation gate: project builds.
87
+ ```
88
+
89
+ **Regras inegociáveis:**
90
+ - `id` em kebab-case e único.
91
+ - `depends_on` mínimo — só adicione quando a task filha **literalmente** não
92
+ pode começar sem o output da pai (arquivo, schema, decisão exportada).
93
+ - `subtask_prompt` totalmente self-contained (o subagente recebe só ele +
94
+ snippets de 2000 chars dos pais).
95
+ - Pelo menos 2 tasks no rank 0 (com `depends_on: []`) para haver paralelismo
96
+ real.
97
+ - Cadeia linear (`001 → 002 → 003 → ...`) é antipattern. Reanalise.
98
+
99
+ ### 5. Gerar `DARE/EXECUTION/task-<id>.md` (uma spec por task)
100
+
101
+ Para CADA task em `dare-dag.yaml`, crie a spec correspondente seguindo
102
+ `templates/TASK-SPEC-template.md`:
103
+
104
+ - **Objetivo** claro
105
+ - **Arquivos a criar/modificar**
106
+ - **Validation Gates** (build, test, lint específicos da stack)
107
+ - **Testes esperados**
108
+ - **Considerações de segurança**
109
+ - **Próxima task** sugerida
110
+
111
+ O `subtask_prompt` no YAML pode referenciar a spec via
112
+ `spec_file: EXECUTION/task-<id>.md` para que o subagente leia a spec na hora
113
+ de executar.
114
+
115
+ ### 5.1 ANTI-STUB CONTRACT (inegociável)
116
+
117
+ > Tasks geradas com `subtask_prompt` ou spec genéricos forçam o agente a inventar — e ele vai produzir mock, stub ou esqueleto. **Não é negociável**. O comando `dare review <task-id>` (v2.17+) detecta isso e marca a task como FAILED.
118
+
119
+ Cada `subtask_prompt` e `EXECUTION/task-<id>.md` deve atender este contrato:
120
+
121
+ **O `subtask_prompt` deve ser auto-suficiente**
122
+
123
+ O subagente recebe **apenas** o `subtask_prompt` + snippets de 2000 chars dos pais. Tudo que ele precisa para implementar **sem inventar** deve estar ali ou na `spec_file`. Inclua:
124
+
125
+ - Caminho exato dos arquivos a criar/modificar
126
+ - Assinaturas exatas das funções/endpoints (`fn name(params: T) -> R`)
127
+ - Schema de request/response com tipos
128
+ - Validações específicas (não "validar input" — `email: regex /^.../`, `senha: ≥ 8 chars + 1 maiúscula + 1 dígito`)
129
+ - Edge cases enumerados (input vazio, duplicado, expirado, sem permissão)
130
+ - Lista de testes esperados com nome + comportamento (`should_reject_duplicate_email_with_409`)
131
+
132
+ **A `spec_file` (`EXECUTION/task-<id>.md`) deve ter Definition of Done anti-stub:**
133
+
134
+ ```markdown
135
+ ## Definition of Done (ANTI-STUB)
136
+
137
+ - [ ] Nenhum `TODO`, `FIXME`, `XXX` ou `HACK` em arquivos modificados
138
+ - [ ] Nenhuma função vazia (`fn x() {}`, `def x(): pass`, `function x() {}`)
139
+ - [ ] Nenhum `throw new Error('not implemented')`, `unimplemented!()`, `todo!()`, `NotImplementedError`
140
+ - [ ] Nenhum `return null` / `return undefined` / `return {}` como única statement de função pública
141
+ - [ ] Mocks **somente** dentro de `*.test.*`, `*.spec.*`, `__tests__/`, `tests/`, `spec/` — NUNCA em código de produção
142
+ - [ ] Todos os endpoints declarados na seção 3 retornam dados reais (não fixos / hardcoded)
143
+ - [ ] Cada validação da spec produz erro real com status code correto (testado)
144
+ - [ ] Cada edge case da spec tem teste unitário ou integração demonstrando comportamento
145
+ ```
146
+
147
+ **Verificação automatizável:** o agente que executar a task vai rodar `dare review <id>` antes de marcar DONE. Se a review falhar, a task volta para revisão.
148
+
149
+ **Sinais de spec rasa** (auto-validar antes de salvar):
150
+
151
+ - ❌ "Implementar X" — sem assinatura, sem retorno, sem validações
152
+ - ❌ "Tratar erros adequadamente" — quais erros? como? que código?
153
+ - ❌ "Adicionar validações" — quais regras?
154
+ - ❌ Arquivos listados sem dizer **o que cada um contém**
155
+ - ✅ "Implementar `POST /auth/login` retornando `{ token: string, refresh: string }` com 200 se credenciais válidas, 401 se inválidas, 429 se rate limit"
156
+
157
+ ### 6. Validar consistência dos 3 artefatos
158
+
159
+ - Mesmos `id`s em `TASKS.md`, `dare-dag.yaml` e `EXECUTION/task-*.md`.
160
+ - Mesmas `depends_on` em `TASKS.md` e `dare-dag.yaml`.
161
+ - Mesmas `complexity`.
162
+ - Sem ciclos.
163
+
164
+ ### 7. Regenerar a visualização do DAG
165
+
166
+ Depois de salvar o `dare-dag.yaml`, rode:
167
+
168
+ ```bash
169
+ dare dag viz -o DARE/dag-graph.mmd
170
+ ```
171
+
172
+ Isso reescreve `DARE/dag-graph.mmd` (Mermaid) refletindo o grafo atualizado.
173
+ O usuário pode abrir o arquivo no Cursor com a extensão Mermaid Preview.
174
+
175
+ ### 8. Mensagem final ao usuário
176
+
177
+ > Gerados 4 artefatos da fase de execução:
178
+ > - `DARE/TASKS.md` ([N] tasks, visão humana)
179
+ > - `DARE/dare-dag.yaml` (grafo executável, [N] ranks paralelos)
180
+ > - `DARE/EXECUTION/task-*.md` ([N] specs detalhadas)
181
+ > - `DARE/dag-graph.mmd` (visualização Mermaid do DAG)
182
+ >
183
+ > Revise (abra `dag-graph.mmd` para ver o grafo). Para executar:
184
+ > `/run-dag` ou `dare execute --next`.
@@ -1,107 +1,107 @@
1
- # Comando: /refine-task
2
-
3
- ## Descrição
4
-
5
- Analisa a complexidade de uma task e, quando alta, **quebra em sub-tasks menores** com escopo bem delimitado. Pode ser chamada:
6
-
7
- - Automaticamente pela skill `/generate-tasks` após gerar o DAG (para cada task ≥ MED)
8
- - Manualmente pelo dev: `/refine-task task-034`
9
- - Após mudança de escopo: quando o BLUEPRINT mudou e uma task ficou grande
10
-
11
- A camada determinística (heurística de complexidade) é feita pelo CLI: `dare refine <id>`. Este comando adiciona a camada **semântica** — você lê a spec, decide se a quebra é necessária e produz sub-tasks coerentes.
12
-
13
- ## Instruções para o Cursor Composer
14
-
15
- ### 1. Rodar a heurística determinística
16
-
17
- ```bash
18
- dare refine $ARGUMENTS --split --format json > .dare/refine-$ARGUMENTS.json
19
- ```
20
-
21
- Esse JSON traz:
22
- - `report.score`, `report.level` (LOW/MED/HIGH/CRITICAL)
23
- - `report.signals` — explica a pontuação
24
- - `report.recommendsSplit` — true se HIGH/CRITICAL
25
- - `proposal.subtasks` — quebra inicial coarse (por diretório)
26
-
27
- ### 2. Decidir se vale quebrar
28
-
29
- **Quebrar quando:**
30
- - `recommendsSplit: true` (HIGH/CRITICAL)
31
- - Mais de 6 arquivos a criar/modificar
32
- - Mistura responsabilidades (modelo + controller + teste + migration)
33
- - Inclui refactor + feature juntos
34
- - Keyword "pesada" (refactor/migrate/integrate) + score MED+
35
-
36
- **Manter inteira quando:**
37
- - LOW ou MED baixo
38
- - Todos arquivos no mesmo módulo
39
- - Cabe em uma conversa do Composer (15–60 min)
40
-
41
- ### 3. Se quebrar — eixos de split
42
-
43
- | Eixo | Quando |
44
- |---|---|
45
- | **Por camada** | Modelo / Controller / Service / Test separados |
46
- | **Por endpoint** | 4 endpoints REST → 4 sub-tasks |
47
- | **Por feature** | Auth = register + login + refresh → split por verbo |
48
- | **Refactor + feature** | "1. refactor X" + "2. feature Y em cima" |
49
- | **Migration + código** | "1. migration + seeds" + "2. código novo" |
50
-
51
- Cada sub-task precisa de:
52
- - `subtask_prompt` auto-suficiente (Anti-Stub Contract!)
53
- - spec própria em `DARE/EXECUTION/<sub-id>.md`
54
- - `depends_on` mínimo mas correto
55
- - complexity honesta — se sub ainda for HIGH, quebrar de novo
56
-
57
- ### 4. Emitir verdito
58
-
59
- `.dare/refine-verdict-$ARGUMENTS.json`:
60
-
61
- ```json
62
- {
63
- "manageable": false,
64
- "reasons": ["Score 18 (HIGH) — 7 endpoints + migration", "Mistura refactor com features novas"],
65
- "proposedSubtasks": [
66
- {
67
- "id": "task-034a",
68
- "title": "Refactor UserService",
69
- "files": ["src/services/UserService.ts", "tests/services/UserService.test.ts"],
70
- "rationale": "Refactor isolado antes da feature",
71
- "estimatedLevel": "MED"
72
- }
73
- ]
74
- }
75
- ```
76
-
77
- Se manuseável:
78
-
79
- ```json
80
- {
81
- "manageable": true,
82
- "reasons": ["Score 7 (MED), 4 arquivos mesmo módulo, 6 testes"]
83
- }
84
- ```
85
-
86
- ### 5. Aplicar o split
87
-
88
- 1. Edite `DARE/dare-dag.yaml` substituindo a task pelas sub-tasks
89
- 2. Crie as specs em `DARE/EXECUTION/<sub-id>.md` (template + Anti-Stub Contract)
90
- 3. Atualize `DARE/TASKS.md` (visão humana)
91
- 4. Regenere Mermaid: `dare dag viz -o DARE/dag-graph.mmd`
92
- 5. Marque a task original como SPLIT no TASKS.md
93
-
94
- ### 6. Mensagem ao usuário
95
-
96
- Manuseável:
97
- > ✅ Task `$ARGUMENTS` está bem-dimensionada (score X, level Y). Sem split.
98
-
99
- Quebrada:
100
- > 🪓 Task `$ARGUMENTS` quebrada em N sub-tasks: [lista]. Revise com `dare validate` e `dare dag viz`.
101
-
102
- ## Regras inegociáveis
103
-
104
- - Não quebrar tasks LOW
105
- - Não inventar dependências falsas
106
- - Cada sub-task testável independentemente
107
- - Anti-Stub Contract aplica em cada sub-task
1
+ # Comando: /refine-task
2
+
3
+ ## Descrição
4
+
5
+ Analisa a complexidade de uma task e, quando alta, **quebra em sub-tasks menores** com escopo bem delimitado. Pode ser chamada:
6
+
7
+ - Automaticamente pela skill `/generate-tasks` após gerar o DAG (para cada task ≥ MED)
8
+ - Manualmente pelo dev: `/refine-task task-034`
9
+ - Após mudança de escopo: quando o BLUEPRINT mudou e uma task ficou grande
10
+
11
+ A camada determinística (heurística de complexidade) é feita pelo CLI: `dare refine <id>`. Este comando adiciona a camada **semântica** — você lê a spec, decide se a quebra é necessária e produz sub-tasks coerentes.
12
+
13
+ ## Instruções para o Cursor Composer
14
+
15
+ ### 1. Rodar a heurística determinística
16
+
17
+ ```bash
18
+ dare refine $ARGUMENTS --split --format json > .dare/refine-$ARGUMENTS.json
19
+ ```
20
+
21
+ Esse JSON traz:
22
+ - `report.score`, `report.level` (LOW/MED/HIGH/CRITICAL)
23
+ - `report.signals` — explica a pontuação
24
+ - `report.recommendsSplit` — true se HIGH/CRITICAL
25
+ - `proposal.subtasks` — quebra inicial coarse (por diretório)
26
+
27
+ ### 2. Decidir se vale quebrar
28
+
29
+ **Quebrar quando:**
30
+ - `recommendsSplit: true` (HIGH/CRITICAL)
31
+ - Mais de 6 arquivos a criar/modificar
32
+ - Mistura responsabilidades (modelo + controller + teste + migration)
33
+ - Inclui refactor + feature juntos
34
+ - Keyword "pesada" (refactor/migrate/integrate) + score MED+
35
+
36
+ **Manter inteira quando:**
37
+ - LOW ou MED baixo
38
+ - Todos arquivos no mesmo módulo
39
+ - Cabe em uma conversa do Composer (15–60 min)
40
+
41
+ ### 3. Se quebrar — eixos de split
42
+
43
+ | Eixo | Quando |
44
+ |---|---|
45
+ | **Por camada** | Modelo / Controller / Service / Test separados |
46
+ | **Por endpoint** | 4 endpoints REST → 4 sub-tasks |
47
+ | **Por feature** | Auth = register + login + refresh → split por verbo |
48
+ | **Refactor + feature** | "1. refactor X" + "2. feature Y em cima" |
49
+ | **Migration + código** | "1. migration + seeds" + "2. código novo" |
50
+
51
+ Cada sub-task precisa de:
52
+ - `subtask_prompt` auto-suficiente (Anti-Stub Contract!)
53
+ - spec própria em `DARE/EXECUTION/<sub-id>.md`
54
+ - `depends_on` mínimo mas correto
55
+ - complexity honesta — se sub ainda for HIGH, quebrar de novo
56
+
57
+ ### 4. Emitir verdito
58
+
59
+ `.dare/refine-verdict-$ARGUMENTS.json`:
60
+
61
+ ```json
62
+ {
63
+ "manageable": false,
64
+ "reasons": ["Score 18 (HIGH) — 7 endpoints + migration", "Mistura refactor com features novas"],
65
+ "proposedSubtasks": [
66
+ {
67
+ "id": "task-034a",
68
+ "title": "Refactor UserService",
69
+ "files": ["src/services/UserService.ts", "tests/services/UserService.test.ts"],
70
+ "rationale": "Refactor isolado antes da feature",
71
+ "estimatedLevel": "MED"
72
+ }
73
+ ]
74
+ }
75
+ ```
76
+
77
+ Se manuseável:
78
+
79
+ ```json
80
+ {
81
+ "manageable": true,
82
+ "reasons": ["Score 7 (MED), 4 arquivos mesmo módulo, 6 testes"]
83
+ }
84
+ ```
85
+
86
+ ### 5. Aplicar o split
87
+
88
+ 1. Edite `DARE/dare-dag.yaml` substituindo a task pelas sub-tasks
89
+ 2. Crie as specs em `DARE/EXECUTION/<sub-id>.md` (template + Anti-Stub Contract)
90
+ 3. Atualize `DARE/TASKS.md` (visão humana)
91
+ 4. Regenere Mermaid: `dare dag viz -o DARE/dag-graph.mmd`
92
+ 5. Marque a task original como SPLIT no TASKS.md
93
+
94
+ ### 6. Mensagem ao usuário
95
+
96
+ Manuseável:
97
+ > ✅ Task `$ARGUMENTS` está bem-dimensionada (score X, level Y). Sem split.
98
+
99
+ Quebrada:
100
+ > 🪓 Task `$ARGUMENTS` quebrada em N sub-tasks: [lista]. Revise com `dare validate` e `dare dag viz`.
101
+
102
+ ## Regras inegociáveis
103
+
104
+ - Não quebrar tasks LOW
105
+ - Não inventar dependências falsas
106
+ - Cada sub-task testável independentemente
107
+ - Anti-Stub Contract aplica em cada sub-task