@dewtech/dare-cli 3.2.0 → 3.4.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 (839) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +764 -762
  3. package/dist/__tests__/confidence.test.js +13 -13
  4. package/dist/__tests__/dag-converter.test.js +56 -56
  5. package/dist/__tests__/dag-runner/ralph-loop.test.js +107 -45
  6. package/dist/__tests__/dag-runner/ralph-loop.test.js.map +1 -1
  7. package/dist/__tests__/dag-runner/state-store.test.d.ts +2 -0
  8. package/dist/__tests__/dag-runner/state-store.test.d.ts.map +1 -0
  9. package/dist/__tests__/dag-runner/state-store.test.js +74 -0
  10. package/dist/__tests__/dag-runner/state-store.test.js.map +1 -0
  11. package/dist/__tests__/ide-command-parity.test.js +1 -0
  12. package/dist/__tests__/ide-command-parity.test.js.map +1 -1
  13. package/dist/__tests__/mcp-server/server.test.js +3 -16
  14. package/dist/__tests__/mcp-server/server.test.js.map +1 -1
  15. package/dist/__tests__/project-generator.test.d.ts +2 -0
  16. package/dist/__tests__/project-generator.test.d.ts.map +1 -0
  17. package/dist/__tests__/project-generator.test.js +56 -0
  18. package/dist/__tests__/project-generator.test.js.map +1 -0
  19. package/dist/__tests__/refine.test.js +49 -49
  20. package/dist/__tests__/reverse-collection.test.js +6 -6
  21. package/dist/__tests__/review.test.js +38 -38
  22. package/dist/__tests__/security-hardening.test.d.ts +2 -0
  23. package/dist/__tests__/security-hardening.test.d.ts.map +1 -0
  24. package/dist/__tests__/security-hardening.test.js +101 -0
  25. package/dist/__tests__/security-hardening.test.js.map +1 -0
  26. package/dist/__tests__/validate.test.js +65 -65
  27. package/dist/bin/dare.js +2 -0
  28. package/dist/bin/dare.js.map +1 -1
  29. package/dist/commands/__tests__/bench.spec.d.ts +2 -0
  30. package/dist/commands/__tests__/bench.spec.d.ts.map +1 -0
  31. package/dist/commands/__tests__/bench.spec.js +106 -0
  32. package/dist/commands/__tests__/bench.spec.js.map +1 -0
  33. package/dist/commands/__tests__/execute.best-of.spec.d.ts +2 -0
  34. package/dist/commands/__tests__/execute.best-of.spec.d.ts.map +1 -0
  35. package/dist/commands/__tests__/execute.best-of.spec.js +24 -0
  36. package/dist/commands/__tests__/execute.best-of.spec.js.map +1 -0
  37. package/dist/commands/__tests__/execute.telemetry.spec.d.ts +2 -0
  38. package/dist/commands/__tests__/execute.telemetry.spec.d.ts.map +1 -0
  39. package/dist/commands/__tests__/execute.telemetry.spec.js +93 -0
  40. package/dist/commands/__tests__/execute.telemetry.spec.js.map +1 -0
  41. package/dist/commands/__tests__/execute.verify.spec.d.ts +2 -0
  42. package/dist/commands/__tests__/execute.verify.spec.d.ts.map +1 -0
  43. package/dist/commands/__tests__/execute.verify.spec.js +150 -0
  44. package/dist/commands/__tests__/execute.verify.spec.js.map +1 -0
  45. package/dist/commands/__tests__/init-validation.test.d.ts +2 -0
  46. package/dist/commands/__tests__/init-validation.test.d.ts.map +1 -0
  47. package/dist/commands/__tests__/init-validation.test.js +81 -0
  48. package/dist/commands/__tests__/init-validation.test.js.map +1 -0
  49. package/dist/commands/__tests__/init.integration.spec.js +6 -4
  50. package/dist/commands/__tests__/init.integration.spec.js.map +1 -1
  51. package/dist/commands/__tests__/init.spec.d.ts +2 -0
  52. package/dist/commands/__tests__/init.spec.d.ts.map +1 -0
  53. package/dist/commands/__tests__/init.spec.js +88 -0
  54. package/dist/commands/__tests__/init.spec.js.map +1 -0
  55. package/dist/commands/bench.d.ts +10 -0
  56. package/dist/commands/bench.d.ts.map +1 -0
  57. package/dist/commands/bench.js +64 -0
  58. package/dist/commands/bench.js.map +1 -0
  59. package/dist/commands/blueprint.js +122 -122
  60. package/dist/commands/design.js +20 -20
  61. package/dist/commands/execute-verification.d.ts +51 -0
  62. package/dist/commands/execute-verification.d.ts.map +1 -0
  63. package/dist/commands/execute-verification.js +201 -0
  64. package/dist/commands/execute-verification.js.map +1 -0
  65. package/dist/commands/execute.d.ts.map +1 -1
  66. package/dist/commands/execute.js +139 -2
  67. package/dist/commands/execute.js.map +1 -1
  68. package/dist/commands/init-validation.d.ts +22 -0
  69. package/dist/commands/init-validation.d.ts.map +1 -0
  70. package/dist/commands/init-validation.js +54 -0
  71. package/dist/commands/init-validation.js.map +1 -0
  72. package/dist/commands/init.d.ts.map +1 -1
  73. package/dist/commands/init.js +26 -10
  74. package/dist/commands/init.js.map +1 -1
  75. package/dist/dag-runner/ralph-loop.d.ts +9 -9
  76. package/dist/dag-runner/ralph-loop.d.ts.map +1 -1
  77. package/dist/dag-runner/ralph-loop.js +89 -113
  78. package/dist/dag-runner/ralph-loop.js.map +1 -1
  79. package/dist/dag-runner/state-store.d.ts +14 -1
  80. package/dist/dag-runner/state-store.d.ts.map +1 -1
  81. package/dist/dag-runner/state-store.js +39 -8
  82. package/dist/dag-runner/state-store.js.map +1 -1
  83. package/dist/exec/npm-invoke.d.ts +8 -0
  84. package/dist/exec/npm-invoke.d.ts.map +1 -0
  85. package/dist/exec/npm-invoke.js +45 -0
  86. package/dist/exec/npm-invoke.js.map +1 -0
  87. package/dist/exec/safe-spawn.d.ts +21 -0
  88. package/dist/exec/safe-spawn.d.ts.map +1 -0
  89. package/dist/exec/safe-spawn.js +108 -0
  90. package/dist/exec/safe-spawn.js.map +1 -0
  91. package/dist/graphrag/graph-rag.js +24 -24
  92. package/dist/graphrag/types.d.ts +2 -2
  93. package/dist/graphrag/types.d.ts.map +1 -1
  94. package/dist/mcp-server/__tests__/auth.test.d.ts +2 -0
  95. package/dist/mcp-server/__tests__/auth.test.d.ts.map +1 -0
  96. package/dist/mcp-server/__tests__/auth.test.js +72 -0
  97. package/dist/mcp-server/__tests__/auth.test.js.map +1 -0
  98. package/dist/mcp-server/__tests__/boot-config.test.d.ts +2 -0
  99. package/dist/mcp-server/__tests__/boot-config.test.d.ts.map +1 -0
  100. package/dist/mcp-server/__tests__/boot-config.test.js +29 -0
  101. package/dist/mcp-server/__tests__/boot-config.test.js.map +1 -0
  102. package/dist/mcp-server/__tests__/error-sanitize.test.d.ts +2 -0
  103. package/dist/mcp-server/__tests__/error-sanitize.test.d.ts.map +1 -0
  104. package/dist/mcp-server/__tests__/error-sanitize.test.js +66 -0
  105. package/dist/mcp-server/__tests__/error-sanitize.test.js.map +1 -0
  106. package/dist/mcp-server/__tests__/path-confinement.test.d.ts +2 -0
  107. package/dist/mcp-server/__tests__/path-confinement.test.d.ts.map +1 -0
  108. package/dist/mcp-server/__tests__/path-confinement.test.js +135 -0
  109. package/dist/mcp-server/__tests__/path-confinement.test.js.map +1 -0
  110. package/dist/mcp-server/bin/server.js +18 -6
  111. package/dist/mcp-server/bin/server.js.map +1 -1
  112. package/dist/mcp-server/boot-config.d.ts +6 -0
  113. package/dist/mcp-server/boot-config.d.ts.map +1 -0
  114. package/dist/mcp-server/boot-config.js +17 -0
  115. package/dist/mcp-server/boot-config.js.map +1 -0
  116. package/dist/mcp-server/middleware/auth.d.ts +10 -0
  117. package/dist/mcp-server/middleware/auth.d.ts.map +1 -0
  118. package/dist/mcp-server/middleware/auth.js +44 -0
  119. package/dist/mcp-server/middleware/auth.js.map +1 -0
  120. package/dist/mcp-server/middleware/cors.d.ts +6 -0
  121. package/dist/mcp-server/middleware/cors.d.ts.map +1 -0
  122. package/dist/mcp-server/middleware/cors.js +30 -0
  123. package/dist/mcp-server/middleware/cors.js.map +1 -0
  124. package/dist/mcp-server/middleware/error-handler.d.ts +11 -0
  125. package/dist/mcp-server/middleware/error-handler.d.ts.map +1 -0
  126. package/dist/mcp-server/middleware/error-handler.js +14 -0
  127. package/dist/mcp-server/middleware/error-handler.js.map +1 -0
  128. package/dist/mcp-server/server.d.ts +7 -2
  129. package/dist/mcp-server/server.d.ts.map +1 -1
  130. package/dist/mcp-server/server.js +185 -105
  131. package/dist/mcp-server/server.js.map +1 -1
  132. package/dist/skills/registry-mock.json +109 -109
  133. package/dist/skills/tests/manifest.spec.js +20 -20
  134. package/dist/stacks/__tests__/dna-emitter.spec.js +6 -6
  135. package/dist/stacks/dna-emitter.d.ts.map +1 -1
  136. package/dist/stacks/dna-emitter.js +70 -79
  137. package/dist/stacks/dna-emitter.js.map +1 -1
  138. package/dist/stacks/ruby-rails-8/scaffold.js +15 -15
  139. package/dist/utils/UpdateApplier.d.ts.map +1 -1
  140. package/dist/utils/UpdateApplier.js +8 -0
  141. package/dist/utils/UpdateApplier.js.map +1 -1
  142. package/dist/utils/logger.d.ts +7 -0
  143. package/dist/utils/logger.d.ts.map +1 -0
  144. package/dist/utils/logger.js +23 -0
  145. package/dist/utils/logger.js.map +1 -0
  146. package/dist/utils/path-safety.d.ts +22 -0
  147. package/dist/utils/path-safety.d.ts.map +1 -0
  148. package/dist/utils/path-safety.js +83 -0
  149. package/dist/utils/path-safety.js.map +1 -0
  150. package/dist/utils/project-generator.d.ts.map +1 -1
  151. package/dist/utils/project-generator.js +256 -252
  152. package/dist/utils/project-generator.js.map +1 -1
  153. package/dist/utils/stack-bootstrap.js +373 -373
  154. package/dist/utils/stack-bootstrap.js.map +1 -1
  155. package/dist/utils/templates.js +394 -394
  156. package/dist/verification/__tests__/anti-tamper.test.d.ts +2 -0
  157. package/dist/verification/__tests__/anti-tamper.test.d.ts.map +1 -0
  158. package/dist/verification/__tests__/anti-tamper.test.js +73 -0
  159. package/dist/verification/__tests__/anti-tamper.test.js.map +1 -0
  160. package/dist/verification/__tests__/bench-fixtures.test.d.ts +2 -0
  161. package/dist/verification/__tests__/bench-fixtures.test.d.ts.map +1 -0
  162. package/dist/verification/__tests__/bench-fixtures.test.js +35 -0
  163. package/dist/verification/__tests__/bench-fixtures.test.js.map +1 -0
  164. package/dist/verification/__tests__/bench-harness.test.d.ts +2 -0
  165. package/dist/verification/__tests__/bench-harness.test.d.ts.map +1 -0
  166. package/dist/verification/__tests__/bench-harness.test.js +75 -0
  167. package/dist/verification/__tests__/bench-harness.test.js.map +1 -0
  168. package/dist/verification/__tests__/bench-report.test.d.ts +2 -0
  169. package/dist/verification/__tests__/bench-report.test.d.ts.map +1 -0
  170. package/dist/verification/__tests__/bench-report.test.js +73 -0
  171. package/dist/verification/__tests__/bench-report.test.js.map +1 -0
  172. package/dist/verification/__tests__/best-of-n-runner.test.d.ts +2 -0
  173. package/dist/verification/__tests__/best-of-n-runner.test.d.ts.map +1 -0
  174. package/dist/verification/__tests__/best-of-n-runner.test.js +94 -0
  175. package/dist/verification/__tests__/best-of-n-runner.test.js.map +1 -0
  176. package/dist/verification/__tests__/config.test.d.ts +2 -0
  177. package/dist/verification/__tests__/config.test.d.ts.map +1 -0
  178. package/dist/verification/__tests__/config.test.js +50 -0
  179. package/dist/verification/__tests__/config.test.js.map +1 -0
  180. package/dist/verification/__tests__/decay-policy.test.d.ts +2 -0
  181. package/dist/verification/__tests__/decay-policy.test.d.ts.map +1 -0
  182. package/dist/verification/__tests__/decay-policy.test.js +130 -0
  183. package/dist/verification/__tests__/decay-policy.test.js.map +1 -0
  184. package/dist/verification/__tests__/fail-to-pass.test.d.ts +2 -0
  185. package/dist/verification/__tests__/fail-to-pass.test.d.ts.map +1 -0
  186. package/dist/verification/__tests__/fail-to-pass.test.js +107 -0
  187. package/dist/verification/__tests__/fail-to-pass.test.js.map +1 -0
  188. package/dist/verification/__tests__/failure-signature.test.d.ts +2 -0
  189. package/dist/verification/__tests__/failure-signature.test.d.ts.map +1 -0
  190. package/dist/verification/__tests__/failure-signature.test.js +40 -0
  191. package/dist/verification/__tests__/failure-signature.test.js.map +1 -0
  192. package/dist/verification/__tests__/logger.test.d.ts +2 -0
  193. package/dist/verification/__tests__/logger.test.d.ts.map +1 -0
  194. package/dist/verification/__tests__/logger.test.js +23 -0
  195. package/dist/verification/__tests__/logger.test.js.map +1 -0
  196. package/dist/verification/__tests__/mutation-cargo-mutants.test.d.ts +2 -0
  197. package/dist/verification/__tests__/mutation-cargo-mutants.test.d.ts.map +1 -0
  198. package/dist/verification/__tests__/mutation-cargo-mutants.test.js +96 -0
  199. package/dist/verification/__tests__/mutation-cargo-mutants.test.js.map +1 -0
  200. package/dist/verification/__tests__/mutation-infection.test.d.ts +2 -0
  201. package/dist/verification/__tests__/mutation-infection.test.d.ts.map +1 -0
  202. package/dist/verification/__tests__/mutation-infection.test.js +101 -0
  203. package/dist/verification/__tests__/mutation-infection.test.js.map +1 -0
  204. package/dist/verification/__tests__/mutation-mutmut.test.d.ts +2 -0
  205. package/dist/verification/__tests__/mutation-mutmut.test.d.ts.map +1 -0
  206. package/dist/verification/__tests__/mutation-mutmut.test.js +102 -0
  207. package/dist/verification/__tests__/mutation-mutmut.test.js.map +1 -0
  208. package/dist/verification/__tests__/mutation-registry.test.d.ts +2 -0
  209. package/dist/verification/__tests__/mutation-registry.test.d.ts.map +1 -0
  210. package/dist/verification/__tests__/mutation-registry.test.js +28 -0
  211. package/dist/verification/__tests__/mutation-registry.test.js.map +1 -0
  212. package/dist/verification/__tests__/mutation-stryker.test.d.ts +2 -0
  213. package/dist/verification/__tests__/mutation-stryker.test.d.ts.map +1 -0
  214. package/dist/verification/__tests__/mutation-stryker.test.js +88 -0
  215. package/dist/verification/__tests__/mutation-stryker.test.js.map +1 -0
  216. package/dist/verification/__tests__/no-shell-true.test.d.ts +2 -0
  217. package/dist/verification/__tests__/no-shell-true.test.d.ts.map +1 -0
  218. package/dist/verification/__tests__/no-shell-true.test.js +43 -0
  219. package/dist/verification/__tests__/no-shell-true.test.js.map +1 -0
  220. package/dist/verification/__tests__/path-safety.test.d.ts +2 -0
  221. package/dist/verification/__tests__/path-safety.test.d.ts.map +1 -0
  222. package/dist/verification/__tests__/path-safety.test.js +59 -0
  223. package/dist/verification/__tests__/path-safety.test.js.map +1 -0
  224. package/dist/verification/__tests__/prerank.test.d.ts +2 -0
  225. package/dist/verification/__tests__/prerank.test.d.ts.map +1 -0
  226. package/dist/verification/__tests__/prerank.test.js +44 -0
  227. package/dist/verification/__tests__/prerank.test.js.map +1 -0
  228. package/dist/verification/__tests__/runner.test.d.ts +2 -0
  229. package/dist/verification/__tests__/runner.test.d.ts.map +1 -0
  230. package/dist/verification/__tests__/runner.test.js +200 -0
  231. package/dist/verification/__tests__/runner.test.js.map +1 -0
  232. package/dist/verification/__tests__/safe-spawn.test.d.ts +2 -0
  233. package/dist/verification/__tests__/safe-spawn.test.d.ts.map +1 -0
  234. package/dist/verification/__tests__/safe-spawn.test.js +36 -0
  235. package/dist/verification/__tests__/safe-spawn.test.js.map +1 -0
  236. package/dist/verification/__tests__/security.test.d.ts +2 -0
  237. package/dist/verification/__tests__/security.test.d.ts.map +1 -0
  238. package/dist/verification/__tests__/security.test.js +79 -0
  239. package/dist/verification/__tests__/security.test.js.map +1 -0
  240. package/dist/verification/__tests__/selector-pareto.test.d.ts +2 -0
  241. package/dist/verification/__tests__/selector-pareto.test.d.ts.map +1 -0
  242. package/dist/verification/__tests__/selector-pareto.test.js +77 -0
  243. package/dist/verification/__tests__/selector-pareto.test.js.map +1 -0
  244. package/dist/verification/__tests__/telemetry.test.d.ts +2 -0
  245. package/dist/verification/__tests__/telemetry.test.d.ts.map +1 -0
  246. package/dist/verification/__tests__/telemetry.test.js +116 -0
  247. package/dist/verification/__tests__/telemetry.test.js.map +1 -0
  248. package/dist/verification/__tests__/type-check.test.d.ts +2 -0
  249. package/dist/verification/__tests__/type-check.test.d.ts.map +1 -0
  250. package/dist/verification/__tests__/type-check.test.js +52 -0
  251. package/dist/verification/__tests__/type-check.test.js.map +1 -0
  252. package/dist/verification/__tests__/worktree.test.d.ts +2 -0
  253. package/dist/verification/__tests__/worktree.test.d.ts.map +1 -0
  254. package/dist/verification/__tests__/worktree.test.js +41 -0
  255. package/dist/verification/__tests__/worktree.test.js.map +1 -0
  256. package/dist/verification/bench/fixtures.d.ts +11 -0
  257. package/dist/verification/bench/fixtures.d.ts.map +1 -0
  258. package/dist/verification/bench/fixtures.js +66 -0
  259. package/dist/verification/bench/fixtures.js.map +1 -0
  260. package/dist/verification/bench/harness.d.ts +19 -0
  261. package/dist/verification/bench/harness.d.ts.map +1 -0
  262. package/dist/verification/bench/harness.js +138 -0
  263. package/dist/verification/bench/harness.js.map +1 -0
  264. package/dist/verification/bench/report.d.ts +53 -0
  265. package/dist/verification/bench/report.d.ts.map +1 -0
  266. package/dist/verification/bench/report.js +47 -0
  267. package/dist/verification/bench/report.js.map +1 -0
  268. package/dist/verification/best-of-n/runner.d.ts +29 -0
  269. package/dist/verification/best-of-n/runner.d.ts.map +1 -0
  270. package/dist/verification/best-of-n/runner.js +76 -0
  271. package/dist/verification/best-of-n/runner.js.map +1 -0
  272. package/dist/verification/best-of-n/selector/pareto.d.ts +10 -0
  273. package/dist/verification/best-of-n/selector/pareto.d.ts.map +1 -0
  274. package/dist/verification/best-of-n/selector/pareto.js +65 -0
  275. package/dist/verification/best-of-n/selector/pareto.js.map +1 -0
  276. package/dist/verification/best-of-n/selector/prerank.d.ts +23 -0
  277. package/dist/verification/best-of-n/selector/prerank.d.ts.map +1 -0
  278. package/dist/verification/best-of-n/selector/prerank.js +32 -0
  279. package/dist/verification/best-of-n/selector/prerank.js.map +1 -0
  280. package/dist/verification/best-of-n/worktree.d.ts +9 -0
  281. package/dist/verification/best-of-n/worktree.d.ts.map +1 -0
  282. package/dist/verification/best-of-n/worktree.js +100 -0
  283. package/dist/verification/best-of-n/worktree.js.map +1 -0
  284. package/dist/verification/config.d.ts +24 -0
  285. package/dist/verification/config.d.ts.map +1 -0
  286. package/dist/verification/config.js +168 -0
  287. package/dist/verification/config.js.map +1 -0
  288. package/dist/verification/decay/policy.d.ts +16 -0
  289. package/dist/verification/decay/policy.d.ts.map +1 -0
  290. package/dist/verification/decay/policy.js +64 -0
  291. package/dist/verification/decay/policy.js.map +1 -0
  292. package/dist/verification/decay/signature.d.ts +6 -0
  293. package/dist/verification/decay/signature.d.ts.map +1 -0
  294. package/dist/verification/decay/signature.js +18 -0
  295. package/dist/verification/decay/signature.js.map +1 -0
  296. package/dist/verification/gates/anti-tamper.d.ts +16 -0
  297. package/dist/verification/gates/anti-tamper.d.ts.map +1 -0
  298. package/dist/verification/gates/anti-tamper.js +142 -0
  299. package/dist/verification/gates/anti-tamper.js.map +1 -0
  300. package/dist/verification/gates/fail-to-pass.d.ts +39 -0
  301. package/dist/verification/gates/fail-to-pass.d.ts.map +1 -0
  302. package/dist/verification/gates/fail-to-pass.js +173 -0
  303. package/dist/verification/gates/fail-to-pass.js.map +1 -0
  304. package/dist/verification/gates/mutation/adapter.d.ts +34 -0
  305. package/dist/verification/gates/mutation/adapter.d.ts.map +1 -0
  306. package/dist/verification/gates/mutation/adapter.js +22 -0
  307. package/dist/verification/gates/mutation/adapter.js.map +1 -0
  308. package/dist/verification/gates/mutation/cargo-mutants.d.ts +28 -0
  309. package/dist/verification/gates/mutation/cargo-mutants.d.ts.map +1 -0
  310. package/dist/verification/gates/mutation/cargo-mutants.js +170 -0
  311. package/dist/verification/gates/mutation/cargo-mutants.js.map +1 -0
  312. package/dist/verification/gates/mutation/infection.d.ts +28 -0
  313. package/dist/verification/gates/mutation/infection.d.ts.map +1 -0
  314. package/dist/verification/gates/mutation/infection.js +149 -0
  315. package/dist/verification/gates/mutation/infection.js.map +1 -0
  316. package/dist/verification/gates/mutation/mutmut.d.ts +23 -0
  317. package/dist/verification/gates/mutation/mutmut.d.ts.map +1 -0
  318. package/dist/verification/gates/mutation/mutmut.js +148 -0
  319. package/dist/verification/gates/mutation/mutmut.js.map +1 -0
  320. package/dist/verification/gates/mutation/stryker.d.ts +19 -0
  321. package/dist/verification/gates/mutation/stryker.d.ts.map +1 -0
  322. package/dist/verification/gates/mutation/stryker.js +103 -0
  323. package/dist/verification/gates/mutation/stryker.js.map +1 -0
  324. package/dist/verification/gates/type-check.d.ts +11 -0
  325. package/dist/verification/gates/type-check.d.ts.map +1 -0
  326. package/dist/verification/gates/type-check.js +84 -0
  327. package/dist/verification/gates/type-check.js.map +1 -0
  328. package/dist/verification/registry.d.ts +6 -0
  329. package/dist/verification/registry.d.ts.map +1 -0
  330. package/dist/verification/registry.js +49 -0
  331. package/dist/verification/registry.js.map +1 -0
  332. package/dist/verification/runner.d.ts +27 -0
  333. package/dist/verification/runner.d.ts.map +1 -0
  334. package/dist/verification/runner.js +173 -0
  335. package/dist/verification/runner.js.map +1 -0
  336. package/dist/verification/telemetry.d.ts +18 -0
  337. package/dist/verification/telemetry.d.ts.map +1 -0
  338. package/dist/verification/telemetry.js +71 -0
  339. package/dist/verification/telemetry.js.map +1 -0
  340. package/dist/verification/types.d.ts +89 -0
  341. package/dist/verification/types.d.ts.map +1 -0
  342. package/dist/verification/types.js +3 -0
  343. package/dist/verification/types.js.map +1 -0
  344. package/package.json +96 -91
  345. package/templates/DARE-dag-example.yaml +280 -280
  346. package/templates/UPDATE-MANIFEST.json +68 -48
  347. package/templates/backend/node-nestjs/.env.example +9 -9
  348. package/templates/backend/node-nestjs/nest-cli.json +8 -8
  349. package/templates/backend/node-nestjs/package.json +50 -50
  350. package/templates/backend/node-nestjs/src/app.controller.ts +12 -12
  351. package/templates/backend/node-nestjs/src/app.module.ts +15 -15
  352. package/templates/backend/node-nestjs/src/app.service.ts +8 -8
  353. package/templates/backend/node-nestjs/src/main.ts +24 -24
  354. package/templates/backend/node-nestjs/tsconfig.json +21 -21
  355. package/templates/backend/php-laravel/.env.example +22 -22
  356. package/templates/backend/php-laravel/app/Http/Controllers/HealthController.php +15 -15
  357. package/templates/backend/php-laravel/composer.json +40 -40
  358. package/templates/backend/python-fastapi/.env.example +4 -4
  359. package/templates/backend/python-fastapi/app/api/router.py +8 -8
  360. package/templates/backend/python-fastapi/app/core/config.py +20 -20
  361. package/templates/backend/python-fastapi/main.py +35 -35
  362. package/templates/backend/python-fastapi/requirements.txt +13 -13
  363. package/templates/backend/rust-axum/.env.example +3 -3
  364. package/templates/backend/rust-axum/Cargo.toml +23 -23
  365. package/templates/backend/rust-axum/src/errors.rs +30 -30
  366. package/templates/backend/rust-axum/src/main.rs +32 -32
  367. package/templates/backend/rust-axum/src/routes.rs +6 -6
  368. package/templates/frontend/leptos-csr/.cargo/config.toml +2 -2
  369. package/templates/frontend/leptos-csr/Cargo.toml +16 -16
  370. package/templates/frontend/leptos-csr/Trunk.toml +10 -10
  371. package/templates/frontend/leptos-csr/index.html +11 -11
  372. package/templates/frontend/leptos-csr/src/lib.rs +20 -20
  373. package/templates/frontend/leptos-csr/style/main.scss +19 -19
  374. package/templates/frontend/leptos-fullstack/.cargo/config.toml +4 -4
  375. package/templates/frontend/leptos-fullstack/Cargo.toml +56 -56
  376. package/templates/frontend/leptos-fullstack/src/app.rs +49 -49
  377. package/templates/frontend/leptos-fullstack/src/lib.rs +9 -9
  378. package/templates/frontend/leptos-fullstack/src/main.rs +29 -29
  379. package/templates/frontend/leptos-fullstack/style/main.scss +19 -19
  380. package/templates/frontend/react/index.html +12 -12
  381. package/templates/frontend/react/package.json +35 -35
  382. package/templates/frontend/react/src/App.tsx +25 -25
  383. package/templates/frontend/react/src/main.tsx +9 -9
  384. package/templates/frontend/vue/package.json +32 -32
  385. package/templates/frontend/vue/src/App.vue +7 -7
  386. package/templates/frontend/vue/src/main.ts +10 -10
  387. package/templates/frontend/vue/src/router/index.ts +14 -14
  388. package/templates/frontend/vue/src/views/HomeView.vue +6 -6
  389. package/templates/hooks/pre-commit-dare-validate +24 -24
  390. package/templates/ide/antigravity/.agents/skills/dare-ax/SKILL.md +152 -152
  391. package/templates/ide/antigravity/.agents/skills/dare-bench/SKILL.md +21 -0
  392. package/templates/ide/antigravity/.agents/skills/dare-blueprint/SKILL.md +368 -368
  393. package/templates/ide/antigravity/.agents/skills/dare-bootstrap/SKILL.md +32 -32
  394. package/templates/ide/antigravity/.agents/skills/dare-bugfix-design/SKILL.md +76 -76
  395. package/templates/ide/antigravity/.agents/skills/dare-dag/SKILL.md +32 -32
  396. package/templates/ide/antigravity/.agents/skills/dare-dag-build/SKILL.md +154 -154
  397. package/templates/ide/antigravity/.agents/skills/dare-dag-run/SKILL.md +130 -130
  398. package/templates/ide/antigravity/.agents/skills/dare-dag-runner/SKILL.md +203 -203
  399. package/templates/ide/antigravity/.agents/skills/dare-design/SKILL.md +180 -180
  400. package/templates/ide/antigravity/.agents/skills/dare-discover/SKILL.md +33 -33
  401. package/templates/ide/antigravity/.agents/skills/dare-dna/SKILL.md +63 -63
  402. package/templates/ide/antigravity/.agents/skills/dare-docker/SKILL.md +315 -315
  403. package/templates/ide/antigravity/.agents/skills/dare-execute/SKILL.md +264 -264
  404. package/templates/ide/antigravity/.agents/skills/dare-feature-design/SKILL.md +74 -74
  405. package/templates/ide/antigravity/.agents/skills/dare-frontend-design/SKILL.md +192 -192
  406. package/templates/ide/antigravity/.agents/skills/dare-graph/SKILL.md +35 -35
  407. package/templates/ide/antigravity/.agents/skills/dare-info/SKILL.md +31 -31
  408. package/templates/ide/antigravity/.agents/skills/dare-init/SKILL.md +35 -35
  409. package/templates/ide/antigravity/.agents/skills/dare-laravel-api/SKILL.md +337 -337
  410. package/templates/ide/antigravity/.agents/skills/dare-layered-design/SKILL.md +166 -166
  411. package/templates/ide/antigravity/.agents/skills/dare-llm-integration/SKILL.md +217 -217
  412. package/templates/ide/antigravity/.agents/skills/dare-migrate/SKILL.md +61 -61
  413. package/templates/ide/antigravity/.agents/skills/dare-quality-telemetry/SKILL.md +187 -187
  414. package/templates/ide/antigravity/.agents/skills/dare-realtime/SKILL.md +217 -217
  415. package/templates/ide/antigravity/.agents/skills/dare-refine/SKILL.md +114 -114
  416. package/templates/ide/antigravity/.agents/skills/dare-reverse/SKILL.md +108 -108
  417. package/templates/ide/antigravity/.agents/skills/dare-review/SKILL.md +111 -111
  418. package/templates/ide/antigravity/.agents/skills/dare-rust-leptos/SKILL.md +263 -263
  419. package/templates/ide/antigravity/.agents/skills/dare-rust-workspace/SKILL.md +275 -275
  420. package/templates/ide/antigravity/.agents/skills/dare-security/SKILL.md +274 -274
  421. package/templates/ide/antigravity/.agents/skills/dare-skill/SKILL.md +35 -35
  422. package/templates/ide/antigravity/.agents/skills/dare-tasks/SKILL.md +265 -265
  423. package/templates/ide/antigravity/.agents/skills/dare-telemetry/SKILL.md +188 -188
  424. package/templates/ide/antigravity/.agents/skills/dare-update/SKILL.md +33 -33
  425. package/templates/ide/antigravity/.agents/skills/dare-validate/SKILL.md +33 -33
  426. package/templates/ide/antigravity/.agents/skills/dare-welcome/SKILL.md +30 -30
  427. package/templates/ide/antigravity/.agents/skills/skill-fastapi-api/SKILL.md +343 -343
  428. package/templates/ide/antigravity/.agents/skills/skill-go-gin-api/SKILL.md +377 -377
  429. package/templates/ide/antigravity/.agents/skills/skill-mcp-server/SKILL.md +382 -382
  430. package/templates/ide/antigravity/.agents/skills/skill-nestjs-api/SKILL.md +326 -326
  431. package/templates/ide/antigravity/.agents/skills/skill-rails-api/SKILL.md +393 -393
  432. package/templates/ide/antigravity/templates/BLUEPRINT-template.md +193 -193
  433. package/templates/ide/antigravity/templates/DESIGN-template.md +129 -129
  434. package/templates/ide/antigravity/templates/TASK-SPEC-template.md +141 -141
  435. package/templates/ide/antigravity/templates/TASKS-template.md +26 -26
  436. package/templates/ide/antigravity/templates/TELEMETRY-template.md +125 -125
  437. package/templates/ide/claude/.claude/commands/dare-ax.md +131 -131
  438. package/templates/ide/claude/.claude/commands/dare-bench.md +18 -0
  439. package/templates/ide/claude/.claude/commands/dare-blueprint.md +134 -134
  440. package/templates/ide/claude/.claude/commands/dare-bootstrap.md +27 -27
  441. package/templates/ide/claude/.claude/commands/dare-bugfix-design.md +119 -119
  442. package/templates/ide/claude/.claude/commands/dare-dag-build.md +151 -151
  443. package/templates/ide/claude/.claude/commands/dare-dag-run.md +109 -109
  444. package/templates/ide/claude/.claude/commands/dare-dag-runner.md +117 -117
  445. package/templates/ide/claude/.claude/commands/dare-dag-viz.md +197 -197
  446. package/templates/ide/claude/.claude/commands/dare-dag.md +27 -27
  447. package/templates/ide/claude/.claude/commands/dare-design.md +69 -69
  448. package/templates/ide/claude/.claude/commands/dare-discover.md +28 -28
  449. package/templates/ide/claude/.claude/commands/dare-dna.md +75 -75
  450. package/templates/ide/claude/.claude/commands/dare-docker.md +207 -207
  451. package/templates/ide/claude/.claude/commands/dare-execute.md +152 -152
  452. package/templates/ide/claude/.claude/commands/dare-feature-design.md +147 -147
  453. package/templates/ide/claude/.claude/commands/dare-frontend-design.md +149 -149
  454. package/templates/ide/claude/.claude/commands/dare-graph.md +30 -30
  455. package/templates/ide/claude/.claude/commands/dare-info.md +26 -26
  456. package/templates/ide/claude/.claude/commands/dare-init.md +30 -30
  457. package/templates/ide/claude/.claude/commands/dare-laravel-api.md +211 -211
  458. package/templates/ide/claude/.claude/commands/dare-layered-design.md +124 -124
  459. package/templates/ide/claude/.claude/commands/dare-llm-integration.md +148 -148
  460. package/templates/ide/claude/.claude/commands/dare-migrate.md +72 -72
  461. package/templates/ide/claude/.claude/commands/dare-quality-telemetry.md +166 -166
  462. package/templates/ide/claude/.claude/commands/dare-realtime.md +159 -159
  463. package/templates/ide/claude/.claude/commands/dare-refine.md +145 -145
  464. package/templates/ide/claude/.claude/commands/dare-reverse.md +139 -139
  465. package/templates/ide/claude/.claude/commands/dare-review.md +113 -113
  466. package/templates/ide/claude/.claude/commands/dare-rust-leptos.md +269 -269
  467. package/templates/ide/claude/.claude/commands/dare-rust-workspace.md +209 -209
  468. package/templates/ide/claude/.claude/commands/dare-security.md +232 -232
  469. package/templates/ide/claude/.claude/commands/dare-skill.md +30 -30
  470. package/templates/ide/claude/.claude/commands/dare-tasks.md +70 -70
  471. package/templates/ide/claude/.claude/commands/dare-telemetry.md +132 -132
  472. package/templates/ide/claude/.claude/commands/dare-update.md +28 -28
  473. package/templates/ide/claude/.claude/commands/dare-validate.md +28 -28
  474. package/templates/ide/claude/.claude/commands/dare-welcome.md +25 -25
  475. package/templates/ide/claude/.claude/commands/skill-fastapi-api.md +205 -205
  476. package/templates/ide/claude/.claude/commands/skill-go-gin-api.md +232 -232
  477. package/templates/ide/claude/.claude/commands/skill-mcp-server.md +228 -228
  478. package/templates/ide/claude/.claude/commands/skill-nestjs-api.md +210 -210
  479. package/templates/ide/claude/.claude/commands/skill-rails-api.md +236 -236
  480. package/templates/ide/claude/.claude/settings.example.json +35 -35
  481. package/templates/ide/claude/CLAUDE.md +146 -146
  482. package/templates/ide/claude/templates/BLUEPRINT-template.md +193 -193
  483. package/templates/ide/claude/templates/DESIGN-template.md +129 -129
  484. package/templates/ide/claude/templates/TASK-SPEC-template.md +141 -141
  485. package/templates/ide/claude/templates/TASKS-template.md +26 -26
  486. package/templates/ide/claude/templates/TELEMETRY-template.md +125 -125
  487. package/templates/ide/cursor/.cursor/commands/dare-bench.md +18 -0
  488. package/templates/ide/cursor/.cursor/commands/dare-blueprint.md +86 -86
  489. package/templates/ide/cursor/.cursor/commands/dare-bootstrap.md +27 -27
  490. package/templates/ide/cursor/.cursor/commands/dare-bugfix-design.md +64 -64
  491. package/templates/ide/cursor/.cursor/commands/dare-dag-run.md +110 -110
  492. package/templates/ide/cursor/.cursor/commands/dare-dag-viz.md +139 -139
  493. package/templates/ide/cursor/.cursor/commands/dare-dag.md +27 -27
  494. package/templates/ide/cursor/.cursor/commands/dare-design.md +35 -35
  495. package/templates/ide/cursor/.cursor/commands/dare-discover.md +28 -28
  496. package/templates/ide/cursor/.cursor/commands/dare-dna.md +75 -75
  497. package/templates/ide/cursor/.cursor/commands/dare-docker-compose.md +18 -18
  498. package/templates/ide/cursor/.cursor/commands/dare-dockerfile.md +17 -17
  499. package/templates/ide/cursor/.cursor/commands/dare-execute.md +19 -19
  500. package/templates/ide/cursor/.cursor/commands/dare-feature-design.md +64 -64
  501. package/templates/ide/cursor/.cursor/commands/dare-graph.md +30 -30
  502. package/templates/ide/cursor/.cursor/commands/dare-info.md +26 -26
  503. package/templates/ide/cursor/.cursor/commands/dare-init.md +30 -30
  504. package/templates/ide/cursor/.cursor/commands/dare-migrate.md +72 -72
  505. package/templates/ide/cursor/.cursor/commands/dare-refine.md +107 -107
  506. package/templates/ide/cursor/.cursor/commands/dare-reverse.md +139 -139
  507. package/templates/ide/cursor/.cursor/commands/dare-review.md +91 -91
  508. package/templates/ide/cursor/.cursor/commands/dare-skill.md +30 -30
  509. package/templates/ide/cursor/.cursor/commands/dare-tasks.md +184 -184
  510. package/templates/ide/cursor/.cursor/commands/dare-telemetry.md +42 -42
  511. package/templates/ide/cursor/.cursor/commands/dare-update.md +28 -28
  512. package/templates/ide/cursor/.cursor/commands/dare-validate.md +28 -28
  513. package/templates/ide/cursor/.cursor/commands/dare-welcome.md +25 -25
  514. package/templates/ide/cursor/.cursor/rules/skill-ax.mdc +263 -263
  515. package/templates/ide/cursor/.cursor/rules/skill-bugfix-design.mdc +51 -51
  516. package/templates/ide/cursor/.cursor/rules/skill-dag-build.mdc +173 -173
  517. package/templates/ide/cursor/.cursor/rules/skill-dag-run.mdc +134 -134
  518. package/templates/ide/cursor/.cursor/rules/skill-dag-runner.mdc +221 -221
  519. package/templates/ide/cursor/.cursor/rules/skill-dna.mdc +63 -63
  520. package/templates/ide/cursor/.cursor/rules/skill-docker.mdc +33 -33
  521. package/templates/ide/cursor/.cursor/rules/skill-fastapi-api.mdc +352 -352
  522. package/templates/ide/cursor/.cursor/rules/skill-feature-design.mdc +43 -43
  523. package/templates/ide/cursor/.cursor/rules/skill-frontend-design.mdc +244 -244
  524. package/templates/ide/cursor/.cursor/rules/skill-go-gin-api.mdc +371 -371
  525. package/templates/ide/cursor/.cursor/rules/skill-laravel-api.mdc +44 -44
  526. package/templates/ide/cursor/.cursor/rules/skill-layered-design.mdc +266 -266
  527. package/templates/ide/cursor/.cursor/rules/skill-llm-integration.mdc +295 -295
  528. package/templates/ide/cursor/.cursor/rules/skill-mcp-server.mdc +367 -367
  529. package/templates/ide/cursor/.cursor/rules/skill-migrate.mdc +58 -58
  530. package/templates/ide/cursor/.cursor/rules/skill-nestjs-api.mdc +346 -346
  531. package/templates/ide/cursor/.cursor/rules/skill-quality-telemetry.mdc +248 -248
  532. package/templates/ide/cursor/.cursor/rules/skill-rails-api.mdc +400 -400
  533. package/templates/ide/cursor/.cursor/rules/skill-realtime.mdc +262 -262
  534. package/templates/ide/cursor/.cursor/rules/skill-reverse.mdc +107 -107
  535. package/templates/ide/cursor/.cursor/rules/skill-rust-leptos.mdc +281 -281
  536. package/templates/ide/cursor/.cursor/rules/skill-rust-workspace.mdc +312 -312
  537. package/templates/ide/cursor/.cursor/rules/skill-security.mdc +245 -245
  538. package/templates/ide/cursor/.cursor/rules/skill-telemetry.mdc +156 -156
  539. package/templates/ide/cursor/templates/BLUEPRINT-template.md +193 -193
  540. package/templates/ide/cursor/templates/DESIGN-template.md +129 -129
  541. package/templates/ide/cursor/templates/TASK-SPEC-template.md +141 -141
  542. package/templates/ide/cursor/templates/TASKS-template.md +26 -26
  543. package/templates/ide/cursor/templates/TELEMETRY-template.md +125 -125
  544. package/templates/shared/docker-compose.yml +41 -41
  545. package/templates/stacks/go-gin/.dare/skills.yml +11 -11
  546. package/templates/stacks/go-gin/.env.example +24 -24
  547. package/templates/stacks/go-gin/.github/workflows/dare-ci.yml +42 -42
  548. package/templates/stacks/go-gin/README.md.tpl +38 -38
  549. package/templates/stacks/go-gin/cmd/server/main.go.tpl +78 -78
  550. package/templates/stacks/go-gin/db/migrations/0001_create_users.down.sql +2 -2
  551. package/templates/stacks/go-gin/db/migrations/0001_create_users.up.sql +12 -12
  552. package/templates/stacks/go-gin/db/queries/users.sql +23 -23
  553. package/templates/stacks/go-gin/gitignore +7 -7
  554. package/templates/stacks/go-gin/go.mod.tpl +17 -17
  555. package/templates/stacks/go-gin/internal/config/config.go +41 -41
  556. package/templates/stacks/go-gin/internal/db/postgres.go.tpl +25 -25
  557. package/templates/stacks/go-gin/internal/handler/auth_handler.go.tpl +72 -72
  558. package/templates/stacks/go-gin/internal/handler/users_handler.go.tpl +72 -72
  559. package/templates/stacks/go-gin/internal/handler/ws_handler.go +37 -37
  560. package/templates/stacks/go-gin/internal/llm/dummy.go +14 -14
  561. package/templates/stacks/go-gin/internal/llm/provider.go +8 -8
  562. package/templates/stacks/go-gin/internal/middleware/jwt.go.tpl +58 -58
  563. package/templates/stacks/go-gin/internal/middleware/rate_limit.go +55 -55
  564. package/templates/stacks/go-gin/internal/model/user.go +17 -17
  565. package/templates/stacks/go-gin/internal/repository/users_repository.go.tpl +79 -79
  566. package/templates/stacks/go-gin/internal/service/auth_service.go.tpl +55 -55
  567. package/templates/stacks/go-gin/internal/service/users_service.go.tpl +53 -53
  568. package/templates/stacks/go-gin/llms.txt.tpl +54 -54
  569. package/templates/stacks/go-gin/openapi.json.tpl +46 -46
  570. package/templates/stacks/go-gin/sqlc.yaml +14 -14
  571. package/templates/stacks/go-gin/tests/smoke_test.go.tpl +22 -22
  572. package/templates/stacks/go-stdlib/.dare/skills.yml +11 -11
  573. package/templates/stacks/go-stdlib/.env.example +24 -24
  574. package/templates/stacks/go-stdlib/.github/workflows/dare-ci.yml +42 -42
  575. package/templates/stacks/go-stdlib/README.md.tpl +41 -41
  576. package/templates/stacks/go-stdlib/cmd/server/main.go.tpl +82 -82
  577. package/templates/stacks/go-stdlib/db/migrations/0001_create_users.down.sql +2 -2
  578. package/templates/stacks/go-stdlib/db/migrations/0001_create_users.up.sql +12 -12
  579. package/templates/stacks/go-stdlib/db/queries/users.sql +23 -23
  580. package/templates/stacks/go-stdlib/gitignore +6 -6
  581. package/templates/stacks/go-stdlib/go.mod.tpl +15 -15
  582. package/templates/stacks/go-stdlib/internal/config/config.go +41 -41
  583. package/templates/stacks/go-stdlib/internal/db/postgres.go.tpl +24 -24
  584. package/templates/stacks/go-stdlib/internal/handler/auth_handler.go.tpl +71 -71
  585. package/templates/stacks/go-stdlib/internal/handler/users_handler.go.tpl +84 -84
  586. package/templates/stacks/go-stdlib/internal/handler/ws_handler.go +36 -36
  587. package/templates/stacks/go-stdlib/internal/httpx/json.go +32 -32
  588. package/templates/stacks/go-stdlib/internal/llm/dummy.go +14 -14
  589. package/templates/stacks/go-stdlib/internal/llm/provider.go +8 -8
  590. package/templates/stacks/go-stdlib/internal/middleware/chain.go +21 -21
  591. package/templates/stacks/go-stdlib/internal/middleware/cors.go +27 -27
  592. package/templates/stacks/go-stdlib/internal/middleware/jwt.go.tpl +51 -51
  593. package/templates/stacks/go-stdlib/internal/middleware/rate_limit.go +81 -81
  594. package/templates/stacks/go-stdlib/internal/model/user.go +17 -17
  595. package/templates/stacks/go-stdlib/internal/repository/users_repository.go.tpl +75 -75
  596. package/templates/stacks/go-stdlib/internal/service/auth_service.go.tpl +55 -55
  597. package/templates/stacks/go-stdlib/internal/service/users_service.go.tpl +53 -53
  598. package/templates/stacks/go-stdlib/llms.txt.tpl +60 -60
  599. package/templates/stacks/go-stdlib/openapi.json.tpl +46 -46
  600. package/templates/stacks/go-stdlib/sqlc.yaml +14 -14
  601. package/templates/stacks/go-stdlib/tests/smoke_test.go.tpl +45 -45
  602. package/templates/stacks/mcp-go/.dare/skills.yml +8 -8
  603. package/templates/stacks/mcp-go/.env.example +14 -14
  604. package/templates/stacks/mcp-go/.github/workflows/dare-ci.yml +42 -42
  605. package/templates/stacks/mcp-go/README.md.tpl +50 -50
  606. package/templates/stacks/mcp-go/cmd/server/main.go.tpl +62 -62
  607. package/templates/stacks/mcp-go/gitignore +6 -6
  608. package/templates/stacks/mcp-go/go.mod.tpl +9 -9
  609. package/templates/stacks/mcp-go/internal/prompts/summarize.go +9 -9
  610. package/templates/stacks/mcp-go/internal/server/server.go.tpl +80 -80
  611. package/templates/stacks/mcp-go/internal/tools/echo.go +15 -15
  612. package/templates/stacks/mcp-go/internal/transports/http.go.tpl +21 -21
  613. package/templates/stacks/mcp-go/internal/transports/sse.go.tpl +17 -17
  614. package/templates/stacks/mcp-go/internal/transports/stdio.go.tpl +14 -14
  615. package/templates/stacks/mcp-go/llms.txt.tpl +60 -60
  616. package/templates/stacks/mcp-go/openapi.json.tpl +31 -31
  617. package/templates/stacks/mcp-go/tests/echo_test.go.tpl +37 -37
  618. package/templates/stacks/mcp-node-ts/.dare/skills.yml +8 -8
  619. package/templates/stacks/mcp-node-ts/.env.example +16 -16
  620. package/templates/stacks/mcp-node-ts/.github/workflows/dare-ci.yml +54 -54
  621. package/templates/stacks/mcp-node-ts/README.md.hbs +49 -49
  622. package/templates/stacks/mcp-node-ts/gitignore +7 -7
  623. package/templates/stacks/mcp-node-ts/llms.txt.hbs +61 -61
  624. package/templates/stacks/mcp-node-ts/openapi.json.hbs +39 -39
  625. package/templates/stacks/mcp-node-ts/package.json.hbs +35 -35
  626. package/templates/stacks/mcp-node-ts/src/cli.ts.hbs +71 -71
  627. package/templates/stacks/mcp-node-ts/src/prompts/index.ts +36 -36
  628. package/templates/stacks/mcp-node-ts/src/server.ts.hbs +45 -45
  629. package/templates/stacks/mcp-node-ts/src/tools/echo.ts +23 -23
  630. package/templates/stacks/mcp-node-ts/src/tools/index.ts +18 -18
  631. package/templates/stacks/mcp-node-ts/src/transports/http.ts +68 -68
  632. package/templates/stacks/mcp-node-ts/src/transports/sse.ts +58 -58
  633. package/templates/stacks/mcp-node-ts/src/transports/stdio.ts +5 -5
  634. package/templates/stacks/mcp-node-ts/tests/echo.test.ts +50 -50
  635. package/templates/stacks/mcp-node-ts/tsconfig.json +17 -17
  636. package/templates/stacks/mcp-python/.dare/skills.yml +8 -8
  637. package/templates/stacks/mcp-python/.env.example +14 -14
  638. package/templates/stacks/mcp-python/.github/workflows/dare-ci.yml +42 -42
  639. package/templates/stacks/mcp-python/README.md.j2 +49 -49
  640. package/templates/stacks/mcp-python/gitignore +12 -12
  641. package/templates/stacks/mcp-python/llms.txt.j2 +56 -56
  642. package/templates/stacks/mcp-python/openapi.json.j2 +33 -33
  643. package/templates/stacks/mcp-python/pyproject.toml.j2 +37 -37
  644. package/templates/stacks/mcp-python/src/cli.py.j2 +68 -68
  645. package/templates/stacks/mcp-python/src/prompts/summarize.py +10 -10
  646. package/templates/stacks/mcp-python/src/server.py.j2 +28 -28
  647. package/templates/stacks/mcp-python/src/tools/echo.py +12 -12
  648. package/templates/stacks/mcp-python/src/transports/http.py +12 -12
  649. package/templates/stacks/mcp-python/src/transports/sse.py +13 -13
  650. package/templates/stacks/mcp-python/src/transports/stdio.py +6 -6
  651. package/templates/stacks/mcp-python/tests/test_echo.py +28 -28
  652. package/templates/stacks/mcp-rust/.dare/skills.yml +8 -8
  653. package/templates/stacks/mcp-rust/.env.example +14 -14
  654. package/templates/stacks/mcp-rust/.github/workflows/dare-ci.yml +38 -38
  655. package/templates/stacks/mcp-rust/Cargo.toml.tera +35 -35
  656. package/templates/stacks/mcp-rust/README.md.tera +50 -50
  657. package/templates/stacks/mcp-rust/gitignore +5 -5
  658. package/templates/stacks/mcp-rust/llms.txt.tera +60 -60
  659. package/templates/stacks/mcp-rust/openapi.json.tera +31 -31
  660. package/templates/stacks/mcp-rust/src/cli.rs.tera +33 -33
  661. package/templates/stacks/mcp-rust/src/lib.rs +6 -6
  662. package/templates/stacks/mcp-rust/src/main.rs.tera +30 -30
  663. package/templates/stacks/mcp-rust/src/prompts/mod.rs +1 -1
  664. package/templates/stacks/mcp-rust/src/prompts/summarize.rs +5 -5
  665. package/templates/stacks/mcp-rust/src/server.rs.tera +38 -38
  666. package/templates/stacks/mcp-rust/src/tools/echo.rs +18 -18
  667. package/templates/stacks/mcp-rust/src/tools/mod.rs +22 -22
  668. package/templates/stacks/mcp-rust/src/transports/http.rs +27 -27
  669. package/templates/stacks/mcp-rust/src/transports/mod.rs +3 -3
  670. package/templates/stacks/mcp-rust/src/transports/sse.rs +33 -33
  671. package/templates/stacks/mcp-rust/src/transports/stdio.rs +14 -14
  672. package/templates/stacks/mcp-rust/tests/echo_test.rs.tera +27 -27
  673. package/templates/stacks/node-nestjs/.dare/skills.yml +11 -11
  674. package/templates/stacks/node-nestjs/.env.example +21 -21
  675. package/templates/stacks/node-nestjs/.github/workflows/dare-ci.yml +54 -54
  676. package/templates/stacks/node-nestjs/README.md.hbs +35 -35
  677. package/templates/stacks/node-nestjs/gitignore +7 -7
  678. package/templates/stacks/node-nestjs/llms.txt.hbs +47 -47
  679. package/templates/stacks/node-nestjs/nest-cli.json +16 -16
  680. package/templates/stacks/node-nestjs/openapi.json.hbs +75 -75
  681. package/templates/stacks/node-nestjs/package.json.hbs +57 -57
  682. package/templates/stacks/node-nestjs/prisma/schema.prisma +25 -25
  683. package/templates/stacks/node-nestjs/prisma/seed.ts.hbs +25 -25
  684. package/templates/stacks/node-nestjs/src/app.module.ts +39 -39
  685. package/templates/stacks/node-nestjs/src/auth/auth.controller.ts +29 -29
  686. package/templates/stacks/node-nestjs/src/auth/auth.module.ts +25 -25
  687. package/templates/stacks/node-nestjs/src/auth/auth.service.ts +36 -36
  688. package/templates/stacks/node-nestjs/src/auth/dto/login-response.dto.ts +9 -9
  689. package/templates/stacks/node-nestjs/src/auth/dto/login.dto.ts +17 -17
  690. package/templates/stacks/node-nestjs/src/auth/jwt.strategy.ts +25 -25
  691. package/templates/stacks/node-nestjs/src/common/filters/problem-details.filter.ts +38 -38
  692. package/templates/stacks/node-nestjs/src/common/interceptors/json-response.interceptor.ts +13 -13
  693. package/templates/stacks/node-nestjs/src/main.ts.hbs +44 -44
  694. package/templates/stacks/node-nestjs/src/prisma/prisma.module.ts +9 -9
  695. package/templates/stacks/node-nestjs/src/prisma/prisma.service.ts +9 -9
  696. package/templates/stacks/node-nestjs/src/users/dto/create-user.dto.ts +22 -22
  697. package/templates/stacks/node-nestjs/src/users/dto/user.dto.ts +15 -15
  698. package/templates/stacks/node-nestjs/src/users/users.controller.ts +41 -41
  699. package/templates/stacks/node-nestjs/src/users/users.module.ts +11 -11
  700. package/templates/stacks/node-nestjs/src/users/users.repository.ts +38 -38
  701. package/templates/stacks/node-nestjs/src/users/users.service.ts +38 -38
  702. package/templates/stacks/node-nestjs/tsconfig.build.json +4 -4
  703. package/templates/stacks/node-nestjs/tsconfig.json +28 -28
  704. package/templates/stacks/php-laravel/.dare/skills.yml +11 -11
  705. package/templates/stacks/php-laravel/.env.example +41 -41
  706. package/templates/stacks/php-laravel/.github/workflows/dare-ci.yml +43 -43
  707. package/templates/stacks/php-laravel/README.md.hbs +36 -36
  708. package/templates/stacks/php-laravel/app/Http/Controllers/Api/AuthController.php +36 -36
  709. package/templates/stacks/php-laravel/app/Http/Controllers/Api/UsersController.php +33 -33
  710. package/templates/stacks/php-laravel/app/Http/Requests/CreateUserRequest.php +26 -26
  711. package/templates/stacks/php-laravel/app/Http/Requests/LoginRequest.php +34 -34
  712. package/templates/stacks/php-laravel/app/Llm/Contracts/LlmProvider.php +12 -12
  713. package/templates/stacks/php-laravel/app/Llm/Providers/DummyProvider.php +13 -13
  714. package/templates/stacks/php-laravel/app/Llm/Providers/OpenAiProvider.php +33 -33
  715. package/templates/stacks/php-laravel/app/Models/User.php +44 -44
  716. package/templates/stacks/php-laravel/app/Repositories/UsersRepository.php +32 -32
  717. package/templates/stacks/php-laravel/app/Services/AuthService.php +37 -37
  718. package/templates/stacks/php-laravel/app/Services/UsersService.php +57 -57
  719. package/templates/stacks/php-laravel/artisan +12 -12
  720. package/templates/stacks/php-laravel/bootstrap/app.php +29 -29
  721. package/templates/stacks/php-laravel/bootstrap/providers.php +5 -5
  722. package/templates/stacks/php-laravel/composer.json.hbs +58 -58
  723. package/templates/stacks/php-laravel/config/l5-swagger.php +41 -41
  724. package/templates/stacks/php-laravel/config/reverb.php +34 -34
  725. package/templates/stacks/php-laravel/config/sanctum.php +15 -15
  726. package/templates/stacks/php-laravel/database/migrations/2026_06_01_000001_create_users_table.php +27 -27
  727. package/templates/stacks/php-laravel/database/seeders/DatabaseSeeder.php +21 -21
  728. package/templates/stacks/php-laravel/gitignore +23 -23
  729. package/templates/stacks/php-laravel/llms.txt.hbs +53 -53
  730. package/templates/stacks/php-laravel/openapi.json.hbs +43 -43
  731. package/templates/stacks/php-laravel/phpstan.neon +9 -9
  732. package/templates/stacks/php-laravel/routes/api.php +13 -13
  733. package/templates/stacks/php-laravel/routes/channels.php +7 -7
  734. package/templates/stacks/php-laravel/tests/Feature/AuthTest.php +35 -35
  735. package/templates/stacks/php-laravel/tests/Feature/UsersTest.php +30 -30
  736. package/templates/stacks/php-laravel/tests/Pest.php +5 -5
  737. package/templates/stacks/python-fastapi/.dare/skills.yml +11 -11
  738. package/templates/stacks/python-fastapi/.env.example +21 -21
  739. package/templates/stacks/python-fastapi/.github/workflows/dare-ci.yml +43 -43
  740. package/templates/stacks/python-fastapi/README.md.j2 +35 -35
  741. package/templates/stacks/python-fastapi/alembic/env.py +46 -46
  742. package/templates/stacks/python-fastapi/alembic/script.py.mako +26 -26
  743. package/templates/stacks/python-fastapi/alembic/versions/0001_create_users.py.j2 +37 -37
  744. package/templates/stacks/python-fastapi/alembic.ini.j2 +39 -39
  745. package/templates/stacks/python-fastapi/app/core/config.py +24 -24
  746. package/templates/stacks/python-fastapi/app/core/security.py +34 -34
  747. package/templates/stacks/python-fastapi/app/db/session.py +22 -22
  748. package/templates/stacks/python-fastapi/app/main.py.j2 +36 -36
  749. package/templates/stacks/python-fastapi/app/models/__init__.py +3 -3
  750. package/templates/stacks/python-fastapi/app/models/user.py +30 -30
  751. package/templates/stacks/python-fastapi/app/repositories/user_repository.py +34 -34
  752. package/templates/stacks/python-fastapi/app/routers/auth.py +37 -37
  753. package/templates/stacks/python-fastapi/app/routers/users.py +46 -46
  754. package/templates/stacks/python-fastapi/app/schemas/user.py +56 -56
  755. package/templates/stacks/python-fastapi/app/services/auth_service.py +22 -22
  756. package/templates/stacks/python-fastapi/app/services/user_service.py +31 -31
  757. package/templates/stacks/python-fastapi/gitignore +12 -12
  758. package/templates/stacks/python-fastapi/llms.txt.j2 +53 -53
  759. package/templates/stacks/python-fastapi/openapi.json.j2 +43 -43
  760. package/templates/stacks/python-fastapi/pyproject.toml.j2 +45 -45
  761. package/templates/stacks/python-fastapi/tests/test_auth.py +22 -22
  762. package/templates/stacks/ruby-rails-8/.dare/skills.yml +50 -50
  763. package/templates/stacks/ruby-rails-8/.env.example +20 -20
  764. package/templates/stacks/ruby-rails-8/.github/workflows/dare-ci.yml +112 -112
  765. package/templates/stacks/ruby-rails-8/Gemfile.erb +61 -61
  766. package/templates/stacks/ruby-rails-8/app/channels/application_cable/channel.rb +11 -11
  767. package/templates/stacks/ruby-rails-8/app/channels/application_cable/connection.rb +34 -34
  768. package/templates/stacks/ruby-rails-8/app/channels/dare_updates_channel.rb +18 -18
  769. package/templates/stacks/ruby-rails-8/app/channels/user_updates_channel.rb +23 -23
  770. package/templates/stacks/ruby-rails-8/app/controllers/application_controller.rb +44 -44
  771. package/templates/stacks/ruby-rails-8/app/controllers/concerns/problem_details.rb +93 -93
  772. package/templates/stacks/ruby-rails-8/app/handlers/summarize_handler.rb +33 -33
  773. package/templates/stacks/ruby-rails-8/app/handlers/users_handler.rb +68 -68
  774. package/templates/stacks/ruby-rails-8/app/llm/cache/llm_cache.rb +44 -44
  775. package/templates/stacks/ruby-rails-8/app/llm/prompts/prompt_loader.rb +54 -54
  776. package/templates/stacks/ruby-rails-8/app/llm/prompts/summarize_v1.jinja2 +12 -12
  777. package/templates/stacks/ruby-rails-8/app/llm/providers/dummy_provider.rb +35 -35
  778. package/templates/stacks/ruby-rails-8/app/llm/providers/llm_provider.rb +67 -67
  779. package/templates/stacks/ruby-rails-8/app/llm/providers/openai_provider.rb +62 -62
  780. package/templates/stacks/ruby-rails-8/app/llm/rate_limit/token_bucket.rb +82 -82
  781. package/templates/stacks/ruby-rails-8/app/llm/validators/summarize_output_schema.json +21 -21
  782. package/templates/stacks/ruby-rails-8/app/llm/validators/validator.rb +52 -52
  783. package/templates/stacks/ruby-rails-8/app/models/user.rb +36 -36
  784. package/templates/stacks/ruby-rails-8/app/presenters/user_presenter.rb +48 -48
  785. package/templates/stacks/ruby-rails-8/app/repositories/document_repository.rb +57 -57
  786. package/templates/stacks/ruby-rails-8/app/repositories/user_repository.rb +73 -73
  787. package/templates/stacks/ruby-rails-8/app/services/create_user_service.rb +67 -67
  788. package/templates/stacks/ruby-rails-8/app/services/realtime_service.rb +53 -53
  789. package/templates/stacks/ruby-rails-8/app/services/summarize_document_service.rb +57 -57
  790. package/templates/stacks/ruby-rails-8/config/dare.yml +42 -42
  791. package/templates/stacks/ruby-rails-8/config/initializers/dare.rb +31 -31
  792. package/templates/stacks/ruby-rails-8/config/initializers/rack_attack.rb +64 -64
  793. package/templates/stacks/ruby-rails-8/config/initializers/rswag_api.rb +12 -12
  794. package/templates/stacks/ruby-rails-8/lib/tasks/dare.rake +159 -159
  795. package/templates/stacks/ruby-rails-8/llms.txt.erb +69 -69
  796. package/templates/stacks/ruby-rails-8/spec/api/summarize_spec.rb +56 -56
  797. package/templates/stacks/ruby-rails-8/spec/api/users_spec.rb +72 -72
  798. package/templates/stacks/ruby-rails-8/spec/channels/dare_updates_channel_spec.rb +61 -61
  799. package/templates/stacks/ruby-rails-8/spec/channels/user_updates_channel_spec.rb +56 -56
  800. package/templates/stacks/ruby-rails-8/spec/factories/users.rb +27 -27
  801. package/templates/stacks/ruby-rails-8/spec/handlers/users_handler_spec.rb +88 -88
  802. package/templates/stacks/ruby-rails-8/spec/rails_helper.rb +31 -31
  803. package/templates/stacks/ruby-rails-8/spec/services/create_user_service_spec.rb +88 -88
  804. package/templates/stacks/ruby-rails-8/spec/services/summarize_document_service_spec.rb +142 -142
  805. package/templates/stacks/ruby-rails-8/spec/swagger_helper.rb +73 -73
  806. package/templates/stacks/rust-axum/.dare/skills.yml +11 -11
  807. package/templates/stacks/rust-axum/.env.example +26 -26
  808. package/templates/stacks/rust-axum/.github/workflows/dare-ci.yml +40 -40
  809. package/templates/stacks/rust-axum/Cargo.toml.tera +53 -53
  810. package/templates/stacks/rust-axum/README.md.tera +37 -37
  811. package/templates/stacks/rust-axum/gitignore +5 -5
  812. package/templates/stacks/rust-axum/llms.txt.tera +54 -54
  813. package/templates/stacks/rust-axum/migrations/0001_create_users.sql +13 -13
  814. package/templates/stacks/rust-axum/openapi.json.tera +46 -46
  815. package/templates/stacks/rust-axum/src/config.rs +45 -45
  816. package/templates/stacks/rust-axum/src/errors.rs +48 -48
  817. package/templates/stacks/rust-axum/src/handlers/auth.rs +48 -48
  818. package/templates/stacks/rust-axum/src/handlers/mod.rs +3 -3
  819. package/templates/stacks/rust-axum/src/handlers/users.rs +81 -81
  820. package/templates/stacks/rust-axum/src/handlers/ws.rs +24 -24
  821. package/templates/stacks/rust-axum/src/lib.rs +19 -19
  822. package/templates/stacks/rust-axum/src/llm/mod.rs +1 -1
  823. package/templates/stacks/rust-axum/src/llm/provider.rs +48 -48
  824. package/templates/stacks/rust-axum/src/main.rs.tera +64 -64
  825. package/templates/stacks/rust-axum/src/middleware/auth.rs +20 -20
  826. package/templates/stacks/rust-axum/src/middleware/mod.rs +2 -2
  827. package/templates/stacks/rust-axum/src/middleware/rate_limit.rs +27 -27
  828. package/templates/stacks/rust-axum/src/models/mod.rs +1 -1
  829. package/templates/stacks/rust-axum/src/models/user.rs +13 -13
  830. package/templates/stacks/rust-axum/src/repositories/mod.rs +1 -1
  831. package/templates/stacks/rust-axum/src/repositories/user_repository.rs +62 -62
  832. package/templates/stacks/rust-axum/src/services/auth_service.rs +50 -50
  833. package/templates/stacks/rust-axum/src/services/mod.rs +2 -2
  834. package/templates/stacks/rust-axum/src/services/user_service.rs +53 -53
  835. package/templates/stacks/rust-axum/tests/integration_test.rs.tera +13 -13
  836. package/dist/commands/new.d.ts +0 -16
  837. package/dist/commands/new.d.ts.map +0 -1
  838. package/dist/commands/new.js +0 -104
  839. package/dist/commands/new.js.map +0 -1
@@ -1,221 +1,221 @@
1
- ---
2
- description: Como construir e executar grafos de tasks (DAG) do método DARE com paralelismo lógico via dare-dag.yaml. O Cursor é o executor; o CLI dare é orquestrador.
3
- globs: DARE/dare-dag.yaml,DARE/EXECUTION/**,DARE/.canvas.md
4
- alwaysApply: false
5
- ---
6
-
7
- # Skill: DAG Task Runner
8
-
9
- ## Quando usar
10
-
11
- - O `BLUEPRINT.md` foi aprovado e você precisa decompor em tasks executáveis
12
- - O usuário pediu para começar a execução do DAG
13
- - Existe `DARE/dare-dag.yaml` e você precisa entender, executar ou modificar
14
- - Aparece o canvas `DARE/.canvas.md` durante uma execução
15
-
16
- ## Quem executa o quê
17
-
18
- > **Você (Cursor) é o executor. O CLI `dare` é orquestrador.**
19
-
20
- - A IDE em que você roda já está autenticada na conta do usuário
21
- - Você lê o `dare-dag.yaml` e as specs em `DARE/EXECUTION/task-*.md`
22
- - Você executa cada task — escreve código, roda testes, faz lint
23
- - Depois de cada task, você chama o CLI para registrar o resultado:
24
- - `dare execute --complete <task-id> --output "<resumo>"`
25
- - `dare execute --fail <task-id> --reason "<mensagem>"`
26
- - O CLI atualiza o canvas e popula o `dare-graph` automaticamente
27
-
28
- **Não há API key. Não há custo extra de tokens. Você usa o plano da IDE.**
29
-
30
- ## O que é o DAG do DARE
31
-
32
- `DARE/dare-dag.yaml` é o **plano de execução**: um grafo direcionado acíclico
33
- em que cada nó é uma task atômica e as arestas são `depends_on`. O CLI ordena
34
- topologicamente (Kahn's algorithm) e indica em que ordem você deve executar.
35
- Tasks no mesmo rank podem rodar em paralelo (logicamente — você decide se
36
- literalmente fan-out ou roda uma após a outra).
37
-
38
- ```
39
- rank 0: task-001 task-002 ← podem rodar juntas (sem depends_on)
40
- rank 1: task-003 (deps: 001, 002) ← só após rank 0
41
- rank 2: task-004 (deps: 003)
42
- ```
43
-
44
- ## Schema canônico do `dare-dag.yaml`
45
-
46
- ```yaml
47
- title: "<Nome do projeto> - Development Tasks"
48
- version: "1.0.0"
49
-
50
- limits:
51
- parent_context_chars: 2000 # snippet de cada output de pai injetado no filho
52
- task_output_chars: 4000 # cap do output capturado por task
53
- timeout_seconds: 600 # apenas referência; quem aborta é você
54
-
55
- # Mapeamento complexity → modelo (referencial — você usa o modelo da sua IDE)
56
- models:
57
- cursor: { HIGH: gpt-5.3-codex, MED: composer-2, LOW: auto-low }
58
- claude: { HIGH: claude-sonnet-4-5, MED: claude-haiku-4, LOW: claude-haiku-4 }
59
- antigravity: { HIGH: gemini-2.5-pro, MED: gemini-2.5-flash, LOW: gemini-2.5-flash }
60
-
61
- tasks:
62
- - id: task-001
63
- title: "Setup project structure"
64
- depends_on: []
65
- complexity: LOW
66
- spec_file: EXECUTION/task-001.md
67
- subtask_prompt: |
68
- <prompt completamente self-contained>
69
- ```
70
-
71
- ## Loop de execução
72
-
73
- ```
74
- 1. dare execute --next
75
- ↓ imprime prompts das tasks ready (rank atual)
76
- 2. Para cada prompt:
77
- - leia spec_file se houver
78
- - implemente
79
- 3. dare execute --complete <id> --output "<resumo + arquivos tocados>"
80
- ↓ o CLI roda o RALPH LOOP automático (build → test → lint)
81
- ↓ se passar: task vira DONE
82
- ↓ se falhar: task vira FAILED com stderr capturado; corrija e retente
83
- 4. Volte ao passo 1 até não haver mais tasks ready
84
- ```
85
-
86
- > **Ralph Loop é AUTOMÁTICO e OBRIGATÓRIO.** Você NÃO roda build/test/lint
87
- > manualmente — o `dare execute --complete` faz isso. Se algum gate falhar,
88
- > a task NÃO vai para DONE; vai para FAILED. Você corrige o código e tenta
89
- > de novo (`dare execute --complete <id>` outra vez, ou `--reset` antes se
90
- > precisar zerar histórico).
91
- >
92
- > **Não existe flag para pular o Ralph Loop.** Toda task passa pelos 3 gates
93
- > da stack do projeto.
94
-
95
- Comandos úteis:
96
-
97
- ```bash
98
- dare execute --next # próximas tasks ready (rank atual)
99
- dare execute --complete task-001 --output "..." # marca DONE
100
- dare execute --fail task-002 --reason "..." # marca FAILED + cascade-skip
101
- dare execute --reset task-002 # volta para PENDING (retry)
102
- dare execute --status # snapshot do canvas
103
- ```
104
-
105
- ## Regras inegociáveis ao construir o DAG
106
-
107
- ### 1. `id` em kebab-case e único
108
- `task-001`, `auth-jwt`, `db-migrations`. Sem espaços nem maiúsculas.
109
-
110
- ### 2. `depends_on` mínimo — maximize paralelismo
111
- Só adicione dependência quando a task filha **literalmente não pode começar**
112
- sem o output da pai (arquivo, schema, decisão exportada).
113
-
114
- | Cenário | Dep? |
115
- |---------|------|
116
- | B precisa do arquivo que A criou | sim |
117
- | B precisa de uma decisão tomada em A | sim |
118
- | B faz coisa similar a A mas independente | não |
119
- | Pesquisa/leitura sem efeito colateral | não — fan out wide |
120
- | Testes do módulo X | sim — depende da implementação |
121
- | Docs do módulo X | sim — depende da implementação |
122
-
123
- Cadeia linear `001 → 002 → 003 → ...` é antipattern. Reanalise.
124
-
125
- ### 3. `complexity` é referência (não custo real para você)
126
- | Nível | Quando usar |
127
- |-------|-------------|
128
- | `LOW` | Setup, scaffolding, docs simples, leitura/pesquisa |
129
- | `MED` | Implementação direta, refactors, testes unitários |
130
- | `HIGH` | Lógica de negócio crítica, segurança, integrações |
131
-
132
- Como você usa o plano da IDE, `complexity` virou principalmente um sinal para
133
- você priorizar atenção/cuidado, não para escolher modelo.
134
-
135
- ### 4. `subtask_prompt` totalmente self-contained
136
- Sua sessão futura recebe o prompt + snippets de até 2000 chars dos outputs
137
- dos pais (via `dare execute --next`). Não vale "como combinamos antes".
138
- Tudo o que precisa estar no prompt ou virá pelos pais.
139
-
140
- ### 5. Output cap de 4000 chars
141
- Se uma task gera muito, escreva em arquivo (permanece no FS) e faça o
142
- `--output` do `dare execute --complete` ser um resumo curto + caminhos dos
143
- arquivos criados.
144
-
145
- ### 6. Cada task tem spec em `EXECUTION/task-<id>.md`
146
- Spec detalhada com: objetivo, arquivos a criar/modificar, validation gates,
147
- testes esperados. O `subtask_prompt` referencia `spec_file` para você ler na
148
- hora de executar.
149
-
150
- ## Geração: o que o `/generate-tasks` deve produzir
151
-
152
- Sempre os **três artefatos juntos**:
153
-
154
- 1. **`DARE/TASKS.md`** — tabela master para humanos
155
- 2. **`DARE/dare-dag.yaml`** — grafo executável
156
- 3. **`DARE/EXECUTION/task-<id>.md`** — uma spec por task
157
-
158
- Os três precisam estar consistentes (mesmos `id`s, mesmos `depends_on`,
159
- mesma `complexity`). Inconsistência aqui quebra a execução.
160
-
161
- ## Canvas ao vivo (`DARE/.canvas.md`)
162
-
163
- O CLI reescreve `DARE/.canvas.md` a cada `dare execute --complete/--fail`:
164
-
165
- ```
166
- | ID | Title | Status | Duration | Tokens |
167
- |----------|--------------------|---------------|----------|--------|
168
- | task-001 | Setup structure | ✅ DONE | 1240ms | 850 |
169
- | task-002 | DB schema | 🔄 RUNNING | - | - |
170
- | task-003 | Core endpoints | ⏳ PENDING | - | - |
171
- ```
172
-
173
- Status: `PENDING` ⏳ · `RUNNING` 🔄 · `DONE` ✅ · `FAILED` ❌ · `SKIPPED` ⏭️
174
-
175
- `SKIPPED` é automático quando uma dependência falha — você não precisa fazer
176
- nada; o CLI cuida do cascade.
177
-
178
- ## Erros comuns ao construir DAG
179
-
180
- | Erro | Sintoma | Como corrigir |
181
- |------|---------|---------------|
182
- | Ciclo em `depends_on` | `Circular dependency detected: <id>` | Reveja, retire a aresta cíclica |
183
- | `id` duplicado | Comportamento indefinido | Renomeie |
184
- | `depends_on` aponta para `id` inexistente | `Task not found: <id>` | Corrija nome |
185
- | Tudo em rank 0 | Conflito de escrita no mesmo arquivo | Adicione `depends_on` quando há contenção |
186
- | Cadeia linear longa | Sem ganho de paralelismo | Reveja se as deps são reais |
187
-
188
- ## Antipatterns que você NÃO deve criar
189
-
190
- - ❌ Task chamada **"Ralph Loop final"**, **"Hardening final"**, **"QA final"**
191
- — Ralph Loop roda automaticamente em cada `--complete`. Não é uma task.
192
- - ❌ Tests com `assertTrue(true)` ou equivalentes — o gate `test` vai rodar
193
- de verdade. Placeholder não engana o CLI; só atrasa o ciclo.
194
- - ❌ "Setup project structure" como primeira task quando o ambiente ainda
195
- não foi containerizado — sem container/runtime, o Ralph Loop não roda.
196
-
197
- ## Ordem recomendada das primeiras tasks
198
-
199
- 1. **Containerize app** (Dockerfile + docker-compose + healthcheck) — sem
200
- isso o Ralph Loop não tem onde rodar
201
- 2. **Database schema** (migrations + factories)
202
- 3. **Core endpoints / componentes**
203
- 4. **Auth / autorização**
204
- 5. **Test suite real** (com assertions de verdade)
205
-
206
- A task de container/compose pode estar em **outra ordem** se o projeto já
207
- vive em um container do monorepo, ou se a stack não precisa de DB. Mas
208
- quase sempre é uma das primeiras — nunca a última.
209
-
210
- ## Checklist antes de aprovar um DAG
211
-
212
- - [ ] Pelo menos 2 tasks no rank 0
213
- - [ ] Cada `subtask_prompt` é executável sem contexto adicional
214
- - [ ] Tasks de teste/doc dependem da implementação correspondente
215
- - [ ] `complexity` reflete o esforço real (não tudo HIGH)
216
- - [ ] `id` em kebab-case e único
217
- - [ ] Sem ciclos
218
- - [ ] **Sem task de "Ralph Loop final"** — Ralph Loop é gate por task
219
- - [ ] **Tests com assertions reais** — placeholder quebra o gate `test`
220
- - [ ] Container/runtime resolvido cedo, não na última task
221
- - [ ] `TASKS.md` + `dare-dag.yaml` + `EXECUTION/task-*.md` consistentes
1
+ ---
2
+ description: Como construir e executar grafos de tasks (DAG) do método DARE com paralelismo lógico via dare-dag.yaml. O Cursor é o executor; o CLI dare é orquestrador.
3
+ globs: DARE/dare-dag.yaml,DARE/EXECUTION/**,DARE/.canvas.md
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Skill: DAG Task Runner
8
+
9
+ ## Quando usar
10
+
11
+ - O `BLUEPRINT.md` foi aprovado e você precisa decompor em tasks executáveis
12
+ - O usuário pediu para começar a execução do DAG
13
+ - Existe `DARE/dare-dag.yaml` e você precisa entender, executar ou modificar
14
+ - Aparece o canvas `DARE/.canvas.md` durante uma execução
15
+
16
+ ## Quem executa o quê
17
+
18
+ > **Você (Cursor) é o executor. O CLI `dare` é orquestrador.**
19
+
20
+ - A IDE em que você roda já está autenticada na conta do usuário
21
+ - Você lê o `dare-dag.yaml` e as specs em `DARE/EXECUTION/task-*.md`
22
+ - Você executa cada task — escreve código, roda testes, faz lint
23
+ - Depois de cada task, você chama o CLI para registrar o resultado:
24
+ - `dare execute --complete <task-id> --output "<resumo>"`
25
+ - `dare execute --fail <task-id> --reason "<mensagem>"`
26
+ - O CLI atualiza o canvas e popula o `dare-graph` automaticamente
27
+
28
+ **Não há API key. Não há custo extra de tokens. Você usa o plano da IDE.**
29
+
30
+ ## O que é o DAG do DARE
31
+
32
+ `DARE/dare-dag.yaml` é o **plano de execução**: um grafo direcionado acíclico
33
+ em que cada nó é uma task atômica e as arestas são `depends_on`. O CLI ordena
34
+ topologicamente (Kahn's algorithm) e indica em que ordem você deve executar.
35
+ Tasks no mesmo rank podem rodar em paralelo (logicamente — você decide se
36
+ literalmente fan-out ou roda uma após a outra).
37
+
38
+ ```
39
+ rank 0: task-001 task-002 ← podem rodar juntas (sem depends_on)
40
+ rank 1: task-003 (deps: 001, 002) ← só após rank 0
41
+ rank 2: task-004 (deps: 003)
42
+ ```
43
+
44
+ ## Schema canônico do `dare-dag.yaml`
45
+
46
+ ```yaml
47
+ title: "<Nome do projeto> - Development Tasks"
48
+ version: "1.0.0"
49
+
50
+ limits:
51
+ parent_context_chars: 2000 # snippet de cada output de pai injetado no filho
52
+ task_output_chars: 4000 # cap do output capturado por task
53
+ timeout_seconds: 600 # apenas referência; quem aborta é você
54
+
55
+ # Mapeamento complexity → modelo (referencial — você usa o modelo da sua IDE)
56
+ models:
57
+ cursor: { HIGH: gpt-5.3-codex, MED: composer-2, LOW: auto-low }
58
+ claude: { HIGH: claude-sonnet-4-5, MED: claude-haiku-4, LOW: claude-haiku-4 }
59
+ antigravity: { HIGH: gemini-2.5-pro, MED: gemini-2.5-flash, LOW: gemini-2.5-flash }
60
+
61
+ tasks:
62
+ - id: task-001
63
+ title: "Setup project structure"
64
+ depends_on: []
65
+ complexity: LOW
66
+ spec_file: EXECUTION/task-001.md
67
+ subtask_prompt: |
68
+ <prompt completamente self-contained>
69
+ ```
70
+
71
+ ## Loop de execução
72
+
73
+ ```
74
+ 1. dare execute --next
75
+ ↓ imprime prompts das tasks ready (rank atual)
76
+ 2. Para cada prompt:
77
+ - leia spec_file se houver
78
+ - implemente
79
+ 3. dare execute --complete <id> --output "<resumo + arquivos tocados>"
80
+ ↓ o CLI roda o RALPH LOOP automático (build → test → lint)
81
+ ↓ se passar: task vira DONE
82
+ ↓ se falhar: task vira FAILED com stderr capturado; corrija e retente
83
+ 4. Volte ao passo 1 até não haver mais tasks ready
84
+ ```
85
+
86
+ > **Ralph Loop é AUTOMÁTICO e OBRIGATÓRIO.** Você NÃO roda build/test/lint
87
+ > manualmente — o `dare execute --complete` faz isso. Se algum gate falhar,
88
+ > a task NÃO vai para DONE; vai para FAILED. Você corrige o código e tenta
89
+ > de novo (`dare execute --complete <id>` outra vez, ou `--reset` antes se
90
+ > precisar zerar histórico).
91
+ >
92
+ > **Não existe flag para pular o Ralph Loop.** Toda task passa pelos 3 gates
93
+ > da stack do projeto.
94
+
95
+ Comandos úteis:
96
+
97
+ ```bash
98
+ dare execute --next # próximas tasks ready (rank atual)
99
+ dare execute --complete task-001 --output "..." # marca DONE
100
+ dare execute --fail task-002 --reason "..." # marca FAILED + cascade-skip
101
+ dare execute --reset task-002 # volta para PENDING (retry)
102
+ dare execute --status # snapshot do canvas
103
+ ```
104
+
105
+ ## Regras inegociáveis ao construir o DAG
106
+
107
+ ### 1. `id` em kebab-case e único
108
+ `task-001`, `auth-jwt`, `db-migrations`. Sem espaços nem maiúsculas.
109
+
110
+ ### 2. `depends_on` mínimo — maximize paralelismo
111
+ Só adicione dependência quando a task filha **literalmente não pode começar**
112
+ sem o output da pai (arquivo, schema, decisão exportada).
113
+
114
+ | Cenário | Dep? |
115
+ |---------|------|
116
+ | B precisa do arquivo que A criou | sim |
117
+ | B precisa de uma decisão tomada em A | sim |
118
+ | B faz coisa similar a A mas independente | não |
119
+ | Pesquisa/leitura sem efeito colateral | não — fan out wide |
120
+ | Testes do módulo X | sim — depende da implementação |
121
+ | Docs do módulo X | sim — depende da implementação |
122
+
123
+ Cadeia linear `001 → 002 → 003 → ...` é antipattern. Reanalise.
124
+
125
+ ### 3. `complexity` é referência (não custo real para você)
126
+ | Nível | Quando usar |
127
+ |-------|-------------|
128
+ | `LOW` | Setup, scaffolding, docs simples, leitura/pesquisa |
129
+ | `MED` | Implementação direta, refactors, testes unitários |
130
+ | `HIGH` | Lógica de negócio crítica, segurança, integrações |
131
+
132
+ Como você usa o plano da IDE, `complexity` virou principalmente um sinal para
133
+ você priorizar atenção/cuidado, não para escolher modelo.
134
+
135
+ ### 4. `subtask_prompt` totalmente self-contained
136
+ Sua sessão futura recebe o prompt + snippets de até 2000 chars dos outputs
137
+ dos pais (via `dare execute --next`). Não vale "como combinamos antes".
138
+ Tudo o que precisa estar no prompt ou virá pelos pais.
139
+
140
+ ### 5. Output cap de 4000 chars
141
+ Se uma task gera muito, escreva em arquivo (permanece no FS) e faça o
142
+ `--output` do `dare execute --complete` ser um resumo curto + caminhos dos
143
+ arquivos criados.
144
+
145
+ ### 6. Cada task tem spec em `EXECUTION/task-<id>.md`
146
+ Spec detalhada com: objetivo, arquivos a criar/modificar, validation gates,
147
+ testes esperados. O `subtask_prompt` referencia `spec_file` para você ler na
148
+ hora de executar.
149
+
150
+ ## Geração: o que o `/generate-tasks` deve produzir
151
+
152
+ Sempre os **três artefatos juntos**:
153
+
154
+ 1. **`DARE/TASKS.md`** — tabela master para humanos
155
+ 2. **`DARE/dare-dag.yaml`** — grafo executável
156
+ 3. **`DARE/EXECUTION/task-<id>.md`** — uma spec por task
157
+
158
+ Os três precisam estar consistentes (mesmos `id`s, mesmos `depends_on`,
159
+ mesma `complexity`). Inconsistência aqui quebra a execução.
160
+
161
+ ## Canvas ao vivo (`DARE/.canvas.md`)
162
+
163
+ O CLI reescreve `DARE/.canvas.md` a cada `dare execute --complete/--fail`:
164
+
165
+ ```
166
+ | ID | Title | Status | Duration | Tokens |
167
+ |----------|--------------------|---------------|----------|--------|
168
+ | task-001 | Setup structure | ✅ DONE | 1240ms | 850 |
169
+ | task-002 | DB schema | 🔄 RUNNING | - | - |
170
+ | task-003 | Core endpoints | ⏳ PENDING | - | - |
171
+ ```
172
+
173
+ Status: `PENDING` ⏳ · `RUNNING` 🔄 · `DONE` ✅ · `FAILED` ❌ · `SKIPPED` ⏭️
174
+
175
+ `SKIPPED` é automático quando uma dependência falha — você não precisa fazer
176
+ nada; o CLI cuida do cascade.
177
+
178
+ ## Erros comuns ao construir DAG
179
+
180
+ | Erro | Sintoma | Como corrigir |
181
+ |------|---------|---------------|
182
+ | Ciclo em `depends_on` | `Circular dependency detected: <id>` | Reveja, retire a aresta cíclica |
183
+ | `id` duplicado | Comportamento indefinido | Renomeie |
184
+ | `depends_on` aponta para `id` inexistente | `Task not found: <id>` | Corrija nome |
185
+ | Tudo em rank 0 | Conflito de escrita no mesmo arquivo | Adicione `depends_on` quando há contenção |
186
+ | Cadeia linear longa | Sem ganho de paralelismo | Reveja se as deps são reais |
187
+
188
+ ## Antipatterns que você NÃO deve criar
189
+
190
+ - ❌ Task chamada **"Ralph Loop final"**, **"Hardening final"**, **"QA final"**
191
+ — Ralph Loop roda automaticamente em cada `--complete`. Não é uma task.
192
+ - ❌ Tests com `assertTrue(true)` ou equivalentes — o gate `test` vai rodar
193
+ de verdade. Placeholder não engana o CLI; só atrasa o ciclo.
194
+ - ❌ "Setup project structure" como primeira task quando o ambiente ainda
195
+ não foi containerizado — sem container/runtime, o Ralph Loop não roda.
196
+
197
+ ## Ordem recomendada das primeiras tasks
198
+
199
+ 1. **Containerize app** (Dockerfile + docker-compose + healthcheck) — sem
200
+ isso o Ralph Loop não tem onde rodar
201
+ 2. **Database schema** (migrations + factories)
202
+ 3. **Core endpoints / componentes**
203
+ 4. **Auth / autorização**
204
+ 5. **Test suite real** (com assertions de verdade)
205
+
206
+ A task de container/compose pode estar em **outra ordem** se o projeto já
207
+ vive em um container do monorepo, ou se a stack não precisa de DB. Mas
208
+ quase sempre é uma das primeiras — nunca a última.
209
+
210
+ ## Checklist antes de aprovar um DAG
211
+
212
+ - [ ] Pelo menos 2 tasks no rank 0
213
+ - [ ] Cada `subtask_prompt` é executável sem contexto adicional
214
+ - [ ] Tasks de teste/doc dependem da implementação correspondente
215
+ - [ ] `complexity` reflete o esforço real (não tudo HIGH)
216
+ - [ ] `id` em kebab-case e único
217
+ - [ ] Sem ciclos
218
+ - [ ] **Sem task de "Ralph Loop final"** — Ralph Loop é gate por task
219
+ - [ ] **Tests com assertions reais** — placeholder quebra o gate `test`
220
+ - [ ] Container/runtime resolvido cedo, não na última task
221
+ - [ ] `TASKS.md` + `dare-dag.yaml` + `EXECUTION/task-*.md` consistentes
@@ -1,63 +1,63 @@
1
- ---
2
- description: Camada semântica da extração de DNA do projeto. Roda depois do comando `dare dna` e transforma os fatos de convenção em regras acionáveis no DARE/PROJECT-DNA.md, para o agente seguir o padrão da casa em projetos legados.
3
- globs: DARE/PROJECT-DNA.md,DARE/dna-facts.json
4
- alwaysApply: false
5
- ---
6
-
7
- # Skill: DNA — Convenções do Projeto (brownfield)
8
-
9
- Camada **semântica** da extração de DNA. Roda **depois** do comando `dare dna`, que já varreu o código
10
- e extraiu os fatos de convenção. Sua função é **transformar fatos em regras acionáveis** — o "como esse
11
- codebase faz as coisas" que uma nova feature deve respeitar.
12
-
13
- > Pré-requisito: rodar `dare dna` antes (gera `DARE/PROJECT-DNA.md` e `DARE/dna-facts.json`).
14
- > Se não existirem, peça para rodar `dare dna` primeiro.
15
-
16
- ## Quando usar
17
-
18
- - Projeto **legado** que vai adotar o DARE para novas features, sem reescrever o existente.
19
- - Acabou de rodar `dare dna` e o `PROJECT-DNA.md` tem seções `<!-- AGENT -->` em aberto.
20
-
21
- ## O que fazer
22
-
23
- ### 1. Carregar os fatos (não re-varrer tudo)
24
- - Leia `DARE/dna-facts.json` — fonte determinística (tooling, naming, camadas, testes, libs, commits).
25
- - Abra **2-5 arquivos representativos por camada** (controller, service, model, teste) para inferir o
26
- que o CLI não detecta (tratamento de erro, validação, estilo de teste).
27
-
28
- ### 2. Preencher `DARE/PROJECT-DNA.md`
29
- Substitua cada `<!-- AGENT: ... -->`:
30
- - **Convenções de Nomenclatura** — confirme o estilo + exceções.
31
- - **Arquitetura & Camadas** — nomeie o padrão (MVC/Layered/Hexagonal) + regras de onde cada coisa mora.
32
- - **Padrões de Teste** — onde ficam, naming, assertions reais, mocks/fixtures.
33
- - **Tratamento de Erros & Validação** — como erros são tratados e inputs validados (exemplos reais).
34
- - **Regras de Ouro** — o que SEMPRE e NUNCA fazer neste codebase.
35
- - **⚠️ Incertezas** — convenções ambíguas que o humano precisa decidir.
36
-
37
- **Não toque** nos fatos determinísticos do CLI (tooling, tabela de naming, libs).
38
-
39
- ### 3. Apresentar ao usuário
40
- Resumo: arquitetura nomeada, regras de ouro, inconsistências. O `PROJECT-DNA.md` vira referência para
41
- `skill-feature-design` e `skill-execute` respeitarem o legado.
42
-
43
- ## Regras de ouro
44
-
45
- 1. **Descritivo, não aspiracional** — como o código É, não como deveria ser.
46
- 2. **Exemplos reais** — cite arquivos/trechos do projeto.
47
- 3. **Sinalize inconsistência** — não invente um padrão único onde o legado mistura.
48
- 4. **Não re-varra** — os fatos já estão em `dna-facts.json`.
49
- 5. **Preserve o determinístico** — não reescreva tooling/naming/libs do CLI.
50
-
51
- ## Antipatterns
52
-
53
- | AP | Antipattern | Por quê |
54
- |---|---|---|
55
- | AP-01 | Documentar o padrão "ideal" em vez do real | Código gerado sai fora do estilo do legado |
56
- | AP-02 | Forçar padrão único onde o legado é inconsistente | Esconde a realidade |
57
- | AP-03 | Reescrever os fatos determinísticos do CLI | Quebra a fonte de verdade |
58
- | AP-04 | Regras vagas ("siga boas práticas") | Inúteis — o valor está no específico |
59
- | AP-05 | Ignorar os testes existentes | Nova feature nasce inconsistente |
60
-
61
- ---
62
-
63
- Skill MIT — parte do DARE Method. DNA do projeto (brownfield). Pareia com o comando `dare dna`.
1
+ ---
2
+ description: Camada semântica da extração de DNA do projeto. Roda depois do comando `dare dna` e transforma os fatos de convenção em regras acionáveis no DARE/PROJECT-DNA.md, para o agente seguir o padrão da casa em projetos legados.
3
+ globs: DARE/PROJECT-DNA.md,DARE/dna-facts.json
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Skill: DNA — Convenções do Projeto (brownfield)
8
+
9
+ Camada **semântica** da extração de DNA. Roda **depois** do comando `dare dna`, que já varreu o código
10
+ e extraiu os fatos de convenção. Sua função é **transformar fatos em regras acionáveis** — o "como esse
11
+ codebase faz as coisas" que uma nova feature deve respeitar.
12
+
13
+ > Pré-requisito: rodar `dare dna` antes (gera `DARE/PROJECT-DNA.md` e `DARE/dna-facts.json`).
14
+ > Se não existirem, peça para rodar `dare dna` primeiro.
15
+
16
+ ## Quando usar
17
+
18
+ - Projeto **legado** que vai adotar o DARE para novas features, sem reescrever o existente.
19
+ - Acabou de rodar `dare dna` e o `PROJECT-DNA.md` tem seções `<!-- AGENT -->` em aberto.
20
+
21
+ ## O que fazer
22
+
23
+ ### 1. Carregar os fatos (não re-varrer tudo)
24
+ - Leia `DARE/dna-facts.json` — fonte determinística (tooling, naming, camadas, testes, libs, commits).
25
+ - Abra **2-5 arquivos representativos por camada** (controller, service, model, teste) para inferir o
26
+ que o CLI não detecta (tratamento de erro, validação, estilo de teste).
27
+
28
+ ### 2. Preencher `DARE/PROJECT-DNA.md`
29
+ Substitua cada `<!-- AGENT: ... -->`:
30
+ - **Convenções de Nomenclatura** — confirme o estilo + exceções.
31
+ - **Arquitetura & Camadas** — nomeie o padrão (MVC/Layered/Hexagonal) + regras de onde cada coisa mora.
32
+ - **Padrões de Teste** — onde ficam, naming, assertions reais, mocks/fixtures.
33
+ - **Tratamento de Erros & Validação** — como erros são tratados e inputs validados (exemplos reais).
34
+ - **Regras de Ouro** — o que SEMPRE e NUNCA fazer neste codebase.
35
+ - **⚠️ Incertezas** — convenções ambíguas que o humano precisa decidir.
36
+
37
+ **Não toque** nos fatos determinísticos do CLI (tooling, tabela de naming, libs).
38
+
39
+ ### 3. Apresentar ao usuário
40
+ Resumo: arquitetura nomeada, regras de ouro, inconsistências. O `PROJECT-DNA.md` vira referência para
41
+ `skill-feature-design` e `skill-execute` respeitarem o legado.
42
+
43
+ ## Regras de ouro
44
+
45
+ 1. **Descritivo, não aspiracional** — como o código É, não como deveria ser.
46
+ 2. **Exemplos reais** — cite arquivos/trechos do projeto.
47
+ 3. **Sinalize inconsistência** — não invente um padrão único onde o legado mistura.
48
+ 4. **Não re-varra** — os fatos já estão em `dna-facts.json`.
49
+ 5. **Preserve o determinístico** — não reescreva tooling/naming/libs do CLI.
50
+
51
+ ## Antipatterns
52
+
53
+ | AP | Antipattern | Por quê |
54
+ |---|---|---|
55
+ | AP-01 | Documentar o padrão "ideal" em vez do real | Código gerado sai fora do estilo do legado |
56
+ | AP-02 | Forçar padrão único onde o legado é inconsistente | Esconde a realidade |
57
+ | AP-03 | Reescrever os fatos determinísticos do CLI | Quebra a fonte de verdade |
58
+ | AP-04 | Regras vagas ("siga boas práticas") | Inúteis — o valor está no específico |
59
+ | AP-05 | Ignorar os testes existentes | Nova feature nasce inconsistente |
60
+
61
+ ---
62
+
63
+ Skill MIT — parte do DARE Method. DNA do projeto (brownfield). Pareia com o comando `dare dna`.
@@ -1,33 +1,33 @@
1
- ---
2
- description: Padrões Globais para Containerização com Docker e Docker Compose
3
- globs: Dockerfile*, docker-compose*.yml, .dockerignore
4
- ---
5
- # Regras Globais do Projeto (Docker e Containerização)
6
-
7
- Você é um engenheiro DevOps Especialista focado em segurança, performance e melhores práticas para criação de containers Docker e orquestração com Docker Compose.
8
-
9
- ## Padrões para Dockerfile
10
- - **Multi-stage Builds:** Sempre utilize multi-stage builds para separar o ambiente de build (onde compiladores e dependências de dev residem) do ambiente de runtime (produção). Isso reduz drasticamente o tamanho final da imagem.
11
- - **Imagens Base:** Utilize imagens base oficiais e preferencialmente as versões Alpine ou distroless para reduzir a superfície de ataque e o tamanho. Especifique tags exatas (ex: `php:8.3-fpm-alpine` em vez de `php:latest`).
12
- - **Usuário Não-Root:** Nunca execute a aplicação como usuário `root` no container final. Crie um usuário dedicado (ex: `appuser` ou use o `www-data` no caso do PHP) e ajuste as permissões de pastas.
13
- - **Cache de Camadas:** Ordene os comandos no Dockerfile do menos mutável para o mais mutável. Copie arquivos de dependência (como `composer.json`, `package.json`, `requirements.txt`, `go.mod`) e instale dependências ANTES de copiar o código fonte da aplicação.
14
- - **Limpeza:** Limpe os caches de gerenciadores de pacotes (`apt-get clean`, `apk cache clean`, `rm -rf /var/lib/apt/lists/*`) na mesma camada `RUN` em que foram instalados.
15
- - **ENTRYPOINT vs CMD:** Use `ENTRYPOINT` para comandos fixos do container e `CMD` para argumentos padrão que podem ser sobrescritos.
16
-
17
- ## Padrões para Docker Compose
18
- - **Versão:** Utilize a especificação Compose atual (não use `version: '3'` pois está depreciado).
19
- - **Serviços Isolados:** Separe a aplicação do banco de dados, cache, e webserver (ex: Nginx e PHP-FPM em containers separados).
20
- - **Volumes Nomeados:** Use volumes nomeados para persistência de dados (banco de dados, uploads, logs).
21
- - **Redes Customizadas:** Defina redes customizadas (`networks`) para isolar a comunicação entre os serviços.
22
- - **Variáveis de Ambiente:** Utilize arquivos `.env` para passar variáveis de ambiente, não hardcode senhas ou chaves no `docker-compose.yml`.
23
- - **Healthchecks:** Adicione `healthcheck` nos serviços de banco de dados e cache para garantir que a aplicação só inicie quando as dependências estiverem prontas (`depends_on` com `condition: service_healthy`).
24
-
25
- ## Especificidades por Stack
26
- - **Laravel/PHP:** Requer um container para PHP-FPM (com extensões necessárias instaladas via `install-php-extensions` ou `docker-php-ext-install`) e outro para o Webserver (Nginx/Apache). O diretório de trabalho padrão deve ser `/var/www/html`. Ajuste permissões para as pastas `storage` e `bootstrap/cache`.
27
- - **Python (FastAPI/Flask):** Use `python:3.11-slim`. Não execute como root. Instale dependências sem cache (`pip install --no-cache-dir`). Exponha a porta correta (geralmente 8000 ou 5000).
28
- - **Go:** O estágio de build deve usar `golang:1.22-alpine` para compilar um binário estático. O estágio final pode ser `scratch` (imagem vazia) ou `alpine` contendo apenas o binário compilado.
29
- - **Vue.js/Frontend:** O estágio de build usa Node.js para gerar os arquivos estáticos (`npm run build`). O estágio final usa Nginx (`nginx:alpine`) para servir a pasta `dist`.
30
-
31
- ## Segurança
32
- - Não copie arquivos desnecessários. Crie sempre um `.dockerignore` bem configurado (ignorando `.git`, `node_modules`, `vendor`, `.env`).
33
- - Não exponha portas de banco de dados (ex: 3306, 5432) para o host (máquina local) em ambiente de produção, apenas na rede interna do Docker.
1
+ ---
2
+ description: Padrões Globais para Containerização com Docker e Docker Compose
3
+ globs: Dockerfile*, docker-compose*.yml, .dockerignore
4
+ ---
5
+ # Regras Globais do Projeto (Docker e Containerização)
6
+
7
+ Você é um engenheiro DevOps Especialista focado em segurança, performance e melhores práticas para criação de containers Docker e orquestração com Docker Compose.
8
+
9
+ ## Padrões para Dockerfile
10
+ - **Multi-stage Builds:** Sempre utilize multi-stage builds para separar o ambiente de build (onde compiladores e dependências de dev residem) do ambiente de runtime (produção). Isso reduz drasticamente o tamanho final da imagem.
11
+ - **Imagens Base:** Utilize imagens base oficiais e preferencialmente as versões Alpine ou distroless para reduzir a superfície de ataque e o tamanho. Especifique tags exatas (ex: `php:8.3-fpm-alpine` em vez de `php:latest`).
12
+ - **Usuário Não-Root:** Nunca execute a aplicação como usuário `root` no container final. Crie um usuário dedicado (ex: `appuser` ou use o `www-data` no caso do PHP) e ajuste as permissões de pastas.
13
+ - **Cache de Camadas:** Ordene os comandos no Dockerfile do menos mutável para o mais mutável. Copie arquivos de dependência (como `composer.json`, `package.json`, `requirements.txt`, `go.mod`) e instale dependências ANTES de copiar o código fonte da aplicação.
14
+ - **Limpeza:** Limpe os caches de gerenciadores de pacotes (`apt-get clean`, `apk cache clean`, `rm -rf /var/lib/apt/lists/*`) na mesma camada `RUN` em que foram instalados.
15
+ - **ENTRYPOINT vs CMD:** Use `ENTRYPOINT` para comandos fixos do container e `CMD` para argumentos padrão que podem ser sobrescritos.
16
+
17
+ ## Padrões para Docker Compose
18
+ - **Versão:** Utilize a especificação Compose atual (não use `version: '3'` pois está depreciado).
19
+ - **Serviços Isolados:** Separe a aplicação do banco de dados, cache, e webserver (ex: Nginx e PHP-FPM em containers separados).
20
+ - **Volumes Nomeados:** Use volumes nomeados para persistência de dados (banco de dados, uploads, logs).
21
+ - **Redes Customizadas:** Defina redes customizadas (`networks`) para isolar a comunicação entre os serviços.
22
+ - **Variáveis de Ambiente:** Utilize arquivos `.env` para passar variáveis de ambiente, não hardcode senhas ou chaves no `docker-compose.yml`.
23
+ - **Healthchecks:** Adicione `healthcheck` nos serviços de banco de dados e cache para garantir que a aplicação só inicie quando as dependências estiverem prontas (`depends_on` com `condition: service_healthy`).
24
+
25
+ ## Especificidades por Stack
26
+ - **Laravel/PHP:** Requer um container para PHP-FPM (com extensões necessárias instaladas via `install-php-extensions` ou `docker-php-ext-install`) e outro para o Webserver (Nginx/Apache). O diretório de trabalho padrão deve ser `/var/www/html`. Ajuste permissões para as pastas `storage` e `bootstrap/cache`.
27
+ - **Python (FastAPI/Flask):** Use `python:3.11-slim`. Não execute como root. Instale dependências sem cache (`pip install --no-cache-dir`). Exponha a porta correta (geralmente 8000 ou 5000).
28
+ - **Go:** O estágio de build deve usar `golang:1.22-alpine` para compilar um binário estático. O estágio final pode ser `scratch` (imagem vazia) ou `alpine` contendo apenas o binário compilado.
29
+ - **Vue.js/Frontend:** O estágio de build usa Node.js para gerar os arquivos estáticos (`npm run build`). O estágio final usa Nginx (`nginx:alpine`) para servir a pasta `dist`.
30
+
31
+ ## Segurança
32
+ - Não copie arquivos desnecessários. Crie sempre um `.dockerignore` bem configurado (ignorando `.git`, `node_modules`, `vendor`, `.env`).
33
+ - Não exponha portas de banco de dados (ex: 3306, 5432) para o host (máquina local) em ambiente de produção, apenas na rede interna do Docker.