@dewtech/dare-cli 2.16.0 → 3.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (408) hide show
  1. package/README.md +196 -3
  2. package/dist/__tests__/confidence.test.d.ts +2 -0
  3. package/dist/__tests__/confidence.test.d.ts.map +1 -0
  4. package/dist/__tests__/confidence.test.js +73 -0
  5. package/dist/__tests__/confidence.test.js.map +1 -0
  6. package/dist/__tests__/datamodel.test.d.ts +2 -0
  7. package/dist/__tests__/datamodel.test.d.ts.map +1 -0
  8. package/dist/__tests__/datamodel.test.js +131 -0
  9. package/dist/__tests__/datamodel.test.js.map +1 -0
  10. package/dist/__tests__/dna-detector.test.d.ts +2 -0
  11. package/dist/__tests__/dna-detector.test.d.ts.map +1 -0
  12. package/dist/__tests__/dna-detector.test.js +97 -0
  13. package/dist/__tests__/dna-detector.test.js.map +1 -0
  14. package/dist/__tests__/dna-facts.test.d.ts +2 -0
  15. package/dist/__tests__/dna-facts.test.d.ts.map +1 -0
  16. package/dist/__tests__/dna-facts.test.js +44 -0
  17. package/dist/__tests__/dna-facts.test.js.map +1 -0
  18. package/dist/__tests__/graph-renderer.test.d.ts +2 -0
  19. package/dist/__tests__/graph-renderer.test.d.ts.map +1 -0
  20. package/dist/__tests__/graph-renderer.test.js +85 -0
  21. package/dist/__tests__/graph-renderer.test.js.map +1 -0
  22. package/dist/__tests__/migration.test.d.ts +2 -0
  23. package/dist/__tests__/migration.test.d.ts.map +1 -0
  24. package/dist/__tests__/migration.test.js +77 -0
  25. package/dist/__tests__/migration.test.js.map +1 -0
  26. package/dist/__tests__/module-detector.test.d.ts +2 -0
  27. package/dist/__tests__/module-detector.test.d.ts.map +1 -0
  28. package/dist/__tests__/module-detector.test.js +83 -0
  29. package/dist/__tests__/module-detector.test.js.map +1 -0
  30. package/dist/__tests__/refine.test.d.ts +2 -0
  31. package/dist/__tests__/refine.test.d.ts.map +1 -0
  32. package/dist/__tests__/refine.test.js +186 -0
  33. package/dist/__tests__/refine.test.js.map +1 -0
  34. package/dist/__tests__/reverse-facts.test.d.ts +2 -0
  35. package/dist/__tests__/reverse-facts.test.d.ts.map +1 -0
  36. package/dist/__tests__/reverse-facts.test.js +78 -0
  37. package/dist/__tests__/reverse-facts.test.js.map +1 -0
  38. package/dist/__tests__/review.test.d.ts +2 -0
  39. package/dist/__tests__/review.test.d.ts.map +1 -0
  40. package/dist/__tests__/review.test.js +242 -0
  41. package/dist/__tests__/review.test.js.map +1 -0
  42. package/dist/__tests__/update.test.d.ts +2 -0
  43. package/dist/__tests__/update.test.d.ts.map +1 -0
  44. package/dist/__tests__/update.test.js +150 -0
  45. package/dist/__tests__/update.test.js.map +1 -0
  46. package/dist/__tests__/validate.test.js +65 -65
  47. package/dist/bin/dare.js +38 -3
  48. package/dist/bin/dare.js.map +1 -1
  49. package/dist/commands/blueprint.js +122 -122
  50. package/dist/commands/dag.d.ts.map +1 -1
  51. package/dist/commands/dag.js +43 -79
  52. package/dist/commands/dag.js.map +1 -1
  53. package/dist/commands/dna.d.ts +3 -0
  54. package/dist/commands/dna.d.ts.map +1 -0
  55. package/dist/commands/dna.js +69 -0
  56. package/dist/commands/dna.js.map +1 -0
  57. package/dist/commands/execute.d.ts.map +1 -1
  58. package/dist/commands/execute.js +76 -0
  59. package/dist/commands/execute.js.map +1 -1
  60. package/dist/commands/migrate.d.ts +3 -0
  61. package/dist/commands/migrate.d.ts.map +1 -0
  62. package/dist/commands/migrate.js +101 -0
  63. package/dist/commands/migrate.js.map +1 -0
  64. package/dist/commands/new.d.ts +16 -0
  65. package/dist/commands/new.d.ts.map +1 -0
  66. package/dist/commands/new.js +103 -0
  67. package/dist/commands/new.js.map +1 -0
  68. package/dist/commands/refine.d.ts +16 -0
  69. package/dist/commands/refine.d.ts.map +1 -0
  70. package/dist/commands/refine.js +167 -0
  71. package/dist/commands/refine.js.map +1 -0
  72. package/dist/commands/reverse.d.ts +3 -0
  73. package/dist/commands/reverse.d.ts.map +1 -0
  74. package/dist/commands/reverse.js +201 -0
  75. package/dist/commands/reverse.js.map +1 -0
  76. package/dist/commands/review.d.ts +16 -0
  77. package/dist/commands/review.d.ts.map +1 -0
  78. package/dist/commands/review.js +106 -0
  79. package/dist/commands/review.js.map +1 -0
  80. package/dist/commands/update.d.ts +13 -0
  81. package/dist/commands/update.d.ts.map +1 -0
  82. package/dist/commands/update.js +149 -0
  83. package/dist/commands/update.js.map +1 -0
  84. package/dist/commands/welcome.d.ts +14 -0
  85. package/dist/commands/welcome.d.ts.map +1 -0
  86. package/dist/commands/welcome.js +29 -0
  87. package/dist/commands/welcome.js.map +1 -0
  88. package/dist/skills/commands/add.d.ts +23 -0
  89. package/dist/skills/commands/add.d.ts.map +1 -0
  90. package/dist/skills/commands/add.js +206 -0
  91. package/dist/skills/commands/add.js.map +1 -0
  92. package/dist/skills/commands/info.d.ts +14 -0
  93. package/dist/skills/commands/info.d.ts.map +1 -0
  94. package/dist/skills/commands/info.js +99 -0
  95. package/dist/skills/commands/info.js.map +1 -0
  96. package/dist/skills/commands/list.d.ts +19 -0
  97. package/dist/skills/commands/list.d.ts.map +1 -0
  98. package/dist/skills/commands/list.js +163 -0
  99. package/dist/skills/commands/list.js.map +1 -0
  100. package/dist/skills/commands/publish.d.ts +56 -0
  101. package/dist/skills/commands/publish.d.ts.map +1 -0
  102. package/dist/skills/commands/publish.js +272 -0
  103. package/dist/skills/commands/publish.js.map +1 -0
  104. package/dist/skills/commands/remove.d.ts +19 -0
  105. package/dist/skills/commands/remove.d.ts.map +1 -0
  106. package/dist/skills/commands/remove.js +96 -0
  107. package/dist/skills/commands/remove.js.map +1 -0
  108. package/dist/skills/commands/update.d.ts +31 -0
  109. package/dist/skills/commands/update.d.ts.map +1 -0
  110. package/dist/skills/commands/update.js +132 -0
  111. package/dist/skills/commands/update.js.map +1 -0
  112. package/dist/skills/index.d.ts +22 -0
  113. package/dist/skills/index.d.ts.map +1 -0
  114. package/dist/skills/index.js +33 -0
  115. package/dist/skills/index.js.map +1 -0
  116. package/dist/skills/manifest.d.ts +54 -0
  117. package/dist/skills/manifest.d.ts.map +1 -0
  118. package/dist/skills/manifest.js +162 -0
  119. package/dist/skills/manifest.js.map +1 -0
  120. package/dist/skills/registry-local.d.ts +67 -0
  121. package/dist/skills/registry-local.d.ts.map +1 -0
  122. package/dist/skills/registry-local.js +130 -0
  123. package/dist/skills/registry-local.js.map +1 -0
  124. package/dist/skills/registry-mock.json +109 -0
  125. package/dist/skills/registry-remote.d.ts +110 -0
  126. package/dist/skills/registry-remote.d.ts.map +1 -0
  127. package/dist/skills/registry-remote.js +246 -0
  128. package/dist/skills/registry-remote.js.map +1 -0
  129. package/dist/skills/registry.d.ts +49 -0
  130. package/dist/skills/registry.d.ts.map +1 -0
  131. package/dist/skills/registry.js +94 -0
  132. package/dist/skills/registry.js.map +1 -0
  133. package/dist/skills/tests/manifest.spec.d.ts +8 -0
  134. package/dist/skills/tests/manifest.spec.d.ts.map +1 -0
  135. package/dist/skills/tests/manifest.spec.js +176 -0
  136. package/dist/skills/tests/manifest.spec.js.map +1 -0
  137. package/dist/skills/tests/publish.spec.d.ts +12 -0
  138. package/dist/skills/tests/publish.spec.d.ts.map +1 -0
  139. package/dist/skills/tests/publish.spec.js +276 -0
  140. package/dist/skills/tests/publish.spec.js.map +1 -0
  141. package/dist/skills/tests/registry-local.spec.d.ts +8 -0
  142. package/dist/skills/tests/registry-local.spec.d.ts.map +1 -0
  143. package/dist/skills/tests/registry-local.spec.js +231 -0
  144. package/dist/skills/tests/registry-local.spec.js.map +1 -0
  145. package/dist/skills/tests/registry.spec.d.ts +7 -0
  146. package/dist/skills/tests/registry.spec.d.ts.map +1 -0
  147. package/dist/skills/tests/registry.spec.js +58 -0
  148. package/dist/skills/tests/registry.spec.js.map +1 -0
  149. package/dist/skills/tests/remote-registry.spec.d.ts +9 -0
  150. package/dist/skills/tests/remote-registry.spec.d.ts.map +1 -0
  151. package/dist/skills/tests/remote-registry.spec.js +357 -0
  152. package/dist/skills/tests/remote-registry.spec.js.map +1 -0
  153. package/dist/skills/tests/update.spec.d.ts +9 -0
  154. package/dist/skills/tests/update.spec.d.ts.map +1 -0
  155. package/dist/skills/tests/update.spec.js +166 -0
  156. package/dist/skills/tests/update.spec.js.map +1 -0
  157. package/dist/types/Refine.types.d.ts +96 -0
  158. package/dist/types/Refine.types.d.ts.map +1 -0
  159. package/dist/types/Refine.types.js +19 -0
  160. package/dist/types/Refine.types.js.map +1 -0
  161. package/dist/types/Review.types.d.ts +86 -0
  162. package/dist/types/Review.types.d.ts.map +1 -0
  163. package/dist/types/Review.types.js +15 -0
  164. package/dist/types/Review.types.js.map +1 -0
  165. package/dist/types/UpdateManifest.types.d.ts +91 -0
  166. package/dist/types/UpdateManifest.types.d.ts.map +1 -0
  167. package/dist/types/UpdateManifest.types.js +13 -0
  168. package/dist/types/UpdateManifest.types.js.map +1 -0
  169. package/dist/utils/ReviewRunner.d.ts +42 -0
  170. package/dist/utils/ReviewRunner.d.ts.map +1 -0
  171. package/dist/utils/ReviewRunner.js +175 -0
  172. package/dist/utils/ReviewRunner.js.map +1 -0
  173. package/dist/utils/UpdateApplier.d.ts +42 -0
  174. package/dist/utils/UpdateApplier.d.ts.map +1 -0
  175. package/dist/utils/UpdateApplier.js +207 -0
  176. package/dist/utils/UpdateApplier.js.map +1 -0
  177. package/dist/utils/UpdateDetector.d.ts +56 -0
  178. package/dist/utils/UpdateDetector.d.ts.map +1 -0
  179. package/dist/utils/UpdateDetector.js +164 -0
  180. package/dist/utils/UpdateDetector.js.map +1 -0
  181. package/dist/utils/banner.d.ts +28 -0
  182. package/dist/utils/banner.d.ts.map +1 -0
  183. package/dist/utils/banner.js +77 -0
  184. package/dist/utils/banner.js.map +1 -0
  185. package/dist/utils/banner.spec.d.ts +5 -0
  186. package/dist/utils/banner.spec.d.ts.map +1 -0
  187. package/dist/utils/banner.spec.js +253 -0
  188. package/dist/utils/banner.spec.js.map +1 -0
  189. package/dist/utils/complexity-analyzer.d.ts +60 -0
  190. package/dist/utils/complexity-analyzer.d.ts.map +1 -0
  191. package/dist/utils/complexity-analyzer.js +292 -0
  192. package/dist/utils/complexity-analyzer.js.map +1 -0
  193. package/dist/utils/confidence.d.ts +41 -0
  194. package/dist/utils/confidence.d.ts.map +1 -0
  195. package/dist/utils/confidence.js +101 -0
  196. package/dist/utils/confidence.js.map +1 -0
  197. package/dist/utils/datamodel.d.ts +41 -0
  198. package/dist/utils/datamodel.d.ts.map +1 -0
  199. package/dist/utils/datamodel.js +535 -0
  200. package/dist/utils/datamodel.js.map +1 -0
  201. package/dist/utils/dna-detector.d.ts +61 -0
  202. package/dist/utils/dna-detector.d.ts.map +1 -0
  203. package/dist/utils/dna-detector.js +354 -0
  204. package/dist/utils/dna-detector.js.map +1 -0
  205. package/dist/utils/dna-facts.d.ts +13 -0
  206. package/dist/utils/dna-facts.d.ts.map +1 -0
  207. package/dist/utils/dna-facts.js +109 -0
  208. package/dist/utils/dna-facts.js.map +1 -0
  209. package/dist/utils/excalidraw-renderer.d.ts +11 -71
  210. package/dist/utils/excalidraw-renderer.d.ts.map +1 -1
  211. package/dist/utils/excalidraw-renderer.js +29 -162
  212. package/dist/utils/excalidraw-renderer.js.map +1 -1
  213. package/dist/utils/graph-renderer.d.ts +115 -0
  214. package/dist/utils/graph-renderer.d.ts.map +1 -0
  215. package/dist/utils/graph-renderer.js +216 -0
  216. package/dist/utils/graph-renderer.js.map +1 -0
  217. package/dist/utils/migration.d.ts +64 -0
  218. package/dist/utils/migration.d.ts.map +1 -0
  219. package/dist/utils/migration.js +183 -0
  220. package/dist/utils/migration.js.map +1 -0
  221. package/dist/utils/module-detector.d.ts +46 -0
  222. package/dist/utils/module-detector.d.ts.map +1 -0
  223. package/dist/utils/module-detector.js +348 -0
  224. package/dist/utils/module-detector.js.map +1 -0
  225. package/dist/utils/project-generator.d.ts.map +1 -1
  226. package/dist/utils/project-generator.js +273 -254
  227. package/dist/utils/project-generator.js.map +1 -1
  228. package/dist/utils/reverse-facts.d.ts +50 -0
  229. package/dist/utils/reverse-facts.d.ts.map +1 -0
  230. package/dist/utils/reverse-facts.js +291 -0
  231. package/dist/utils/reverse-facts.js.map +1 -0
  232. package/dist/utils/stack-bootstrap.js +371 -371
  233. package/dist/utils/static-analyzer.d.ts +29 -0
  234. package/dist/utils/static-analyzer.d.ts.map +1 -0
  235. package/dist/utils/static-analyzer.js +390 -0
  236. package/dist/utils/static-analyzer.js.map +1 -0
  237. package/dist/utils/version-compare.d.ts +27 -0
  238. package/dist/utils/version-compare.d.ts.map +1 -0
  239. package/dist/utils/version-compare.js +47 -0
  240. package/dist/utils/version-compare.js.map +1 -0
  241. package/package.json +8 -3
  242. package/templates/DARE-dag-example.yaml +280 -280
  243. package/templates/UPDATE-MANIFEST.json +48 -0
  244. package/templates/backend/node-nestjs/.env.example +9 -9
  245. package/templates/backend/node-nestjs/nest-cli.json +8 -8
  246. package/templates/backend/node-nestjs/package.json +50 -50
  247. package/templates/backend/node-nestjs/src/app.controller.ts +12 -12
  248. package/templates/backend/node-nestjs/src/app.module.ts +15 -15
  249. package/templates/backend/node-nestjs/src/app.service.ts +8 -8
  250. package/templates/backend/node-nestjs/src/main.ts +24 -24
  251. package/templates/backend/node-nestjs/tsconfig.json +21 -21
  252. package/templates/backend/php-laravel/.env.example +22 -22
  253. package/templates/backend/php-laravel/app/Http/Controllers/HealthController.php +15 -15
  254. package/templates/backend/php-laravel/composer.json +40 -40
  255. package/templates/backend/python-fastapi/.env.example +4 -4
  256. package/templates/backend/python-fastapi/app/api/router.py +8 -8
  257. package/templates/backend/python-fastapi/app/core/config.py +20 -20
  258. package/templates/backend/python-fastapi/main.py +35 -35
  259. package/templates/backend/python-fastapi/requirements.txt +13 -13
  260. package/templates/backend/rust-axum/.env.example +3 -3
  261. package/templates/backend/rust-axum/Cargo.toml +23 -23
  262. package/templates/backend/rust-axum/src/errors.rs +30 -30
  263. package/templates/backend/rust-axum/src/main.rs +32 -32
  264. package/templates/backend/rust-axum/src/routes.rs +6 -6
  265. package/templates/frontend/leptos-csr/.cargo/config.toml +2 -2
  266. package/templates/frontend/leptos-csr/Cargo.toml +16 -16
  267. package/templates/frontend/leptos-csr/Trunk.toml +10 -10
  268. package/templates/frontend/leptos-csr/index.html +11 -11
  269. package/templates/frontend/leptos-csr/src/lib.rs +20 -20
  270. package/templates/frontend/leptos-csr/style/main.scss +19 -19
  271. package/templates/frontend/leptos-fullstack/.cargo/config.toml +4 -4
  272. package/templates/frontend/leptos-fullstack/Cargo.toml +56 -56
  273. package/templates/frontend/leptos-fullstack/src/app.rs +49 -49
  274. package/templates/frontend/leptos-fullstack/src/lib.rs +9 -9
  275. package/templates/frontend/leptos-fullstack/src/main.rs +29 -29
  276. package/templates/frontend/leptos-fullstack/style/main.scss +19 -19
  277. package/templates/frontend/react/index.html +12 -12
  278. package/templates/frontend/react/package.json +35 -35
  279. package/templates/frontend/react/src/App.tsx +25 -25
  280. package/templates/frontend/react/src/main.tsx +9 -9
  281. package/templates/frontend/vue/package.json +32 -32
  282. package/templates/frontend/vue/src/App.vue +7 -7
  283. package/templates/frontend/vue/src/main.ts +10 -10
  284. package/templates/frontend/vue/src/router/index.ts +14 -14
  285. package/templates/frontend/vue/src/views/HomeView.vue +6 -6
  286. package/templates/hooks/pre-commit-dare-validate +24 -24
  287. package/templates/ide/antigravity/.agents/skills/dare-ax/SKILL.md +152 -0
  288. package/templates/ide/antigravity/.agents/skills/dare-blueprint/SKILL.md +180 -36
  289. package/templates/ide/antigravity/.agents/skills/dare-dag-build/SKILL.md +154 -0
  290. package/templates/ide/antigravity/.agents/skills/dare-dag-run/SKILL.md +130 -0
  291. package/templates/ide/antigravity/.agents/skills/dare-dag-runner/SKILL.md +203 -203
  292. package/templates/ide/antigravity/.agents/skills/dare-dna/SKILL.md +63 -0
  293. package/templates/ide/antigravity/.agents/skills/dare-docker/SKILL.md +315 -0
  294. package/templates/ide/antigravity/.agents/skills/dare-frontend-design/SKILL.md +192 -0
  295. package/templates/ide/antigravity/.agents/skills/dare-laravel-api/SKILL.md +337 -0
  296. package/templates/ide/antigravity/.agents/skills/dare-layered-design/SKILL.md +166 -0
  297. package/templates/ide/antigravity/.agents/skills/dare-llm-integration/SKILL.md +217 -0
  298. package/templates/ide/antigravity/.agents/skills/dare-migrate/SKILL.md +61 -0
  299. package/templates/ide/antigravity/.agents/skills/dare-quality-telemetry/SKILL.md +187 -0
  300. package/templates/ide/antigravity/.agents/skills/dare-realtime/SKILL.md +217 -0
  301. package/templates/ide/antigravity/.agents/skills/dare-refine/SKILL.md +114 -0
  302. package/templates/ide/antigravity/.agents/skills/dare-reverse/SKILL.md +108 -0
  303. package/templates/ide/antigravity/.agents/skills/dare-review/SKILL.md +111 -0
  304. package/templates/ide/antigravity/.agents/skills/dare-rust-leptos/SKILL.md +263 -0
  305. package/templates/ide/antigravity/.agents/skills/dare-rust-workspace/SKILL.md +275 -275
  306. package/templates/ide/antigravity/.agents/skills/dare-security/SKILL.md +274 -0
  307. package/templates/ide/antigravity/.agents/skills/dare-tasks/SKILL.md +265 -224
  308. package/templates/ide/antigravity/.agents/skills/dare-telemetry/SKILL.md +188 -0
  309. package/templates/ide/antigravity/.agents/skills/skill-fastapi-api/SKILL.md +343 -0
  310. package/templates/ide/antigravity/.agents/skills/skill-go-gin-api/SKILL.md +377 -0
  311. package/templates/ide/antigravity/.agents/skills/skill-mcp-server/SKILL.md +382 -0
  312. package/templates/ide/antigravity/.agents/skills/skill-nestjs-api/SKILL.md +326 -0
  313. package/templates/ide/antigravity/.agents/skills/skill-rails-api/SKILL.md +393 -0
  314. package/templates/ide/antigravity/templates/BLUEPRINT-template.md +193 -193
  315. package/templates/ide/antigravity/templates/DESIGN-template.md +129 -129
  316. package/templates/ide/antigravity/templates/TASK-SPEC-template.md +141 -100
  317. package/templates/ide/claude/.claude/commands/dare-ax.md +131 -0
  318. package/templates/ide/claude/.claude/commands/dare-blueprint.md +134 -78
  319. package/templates/ide/claude/.claude/commands/dare-bugfix-design.md +119 -0
  320. package/templates/ide/claude/.claude/commands/dare-dag-build.md +151 -110
  321. package/templates/ide/claude/.claude/commands/dare-dag-run.md +109 -109
  322. package/templates/ide/claude/.claude/commands/dare-dag-runner.md +117 -0
  323. package/templates/ide/claude/.claude/commands/dare-dag-viz.md +197 -197
  324. package/templates/ide/claude/.claude/commands/dare-design.md +69 -69
  325. package/templates/ide/claude/.claude/commands/dare-dna.md +75 -0
  326. package/templates/ide/claude/.claude/commands/dare-docker.md +207 -0
  327. package/templates/ide/claude/.claude/commands/dare-execute.md +152 -152
  328. package/templates/ide/claude/.claude/commands/dare-feature-design.md +147 -0
  329. package/templates/ide/claude/.claude/commands/dare-frontend-design.md +149 -0
  330. package/templates/ide/claude/.claude/commands/dare-laravel-api.md +211 -0
  331. package/templates/ide/claude/.claude/commands/dare-layered-design.md +124 -0
  332. package/templates/ide/claude/.claude/commands/dare-llm-integration.md +148 -0
  333. package/templates/ide/claude/.claude/commands/dare-migrate.md +72 -0
  334. package/templates/ide/claude/.claude/commands/dare-quality-telemetry.md +166 -0
  335. package/templates/ide/claude/.claude/commands/dare-realtime.md +159 -0
  336. package/templates/ide/claude/.claude/commands/dare-refine.md +145 -0
  337. package/templates/ide/claude/.claude/commands/dare-reverse.md +139 -0
  338. package/templates/ide/claude/.claude/commands/dare-review.md +113 -0
  339. package/templates/ide/claude/.claude/commands/dare-rust-leptos.md +269 -269
  340. package/templates/ide/claude/.claude/commands/dare-rust-workspace.md +209 -209
  341. package/templates/ide/claude/.claude/commands/dare-security.md +232 -232
  342. package/templates/ide/claude/.claude/commands/dare-tasks.md +70 -70
  343. package/templates/ide/claude/.claude/commands/dare-telemetry.md +132 -0
  344. package/templates/ide/claude/.claude/commands/skill-fastapi-api.md +205 -0
  345. package/templates/ide/claude/.claude/commands/skill-go-gin-api.md +232 -0
  346. package/templates/ide/claude/.claude/commands/skill-mcp-server.md +228 -0
  347. package/templates/ide/claude/.claude/commands/skill-nestjs-api.md +210 -0
  348. package/templates/ide/claude/.claude/commands/skill-rails-api.md +236 -0
  349. package/templates/ide/claude/.claude/settings.example.json +35 -35
  350. package/templates/ide/claude/CLAUDE.md +146 -146
  351. package/templates/ide/claude/templates/BLUEPRINT-template.md +193 -193
  352. package/templates/ide/claude/templates/DESIGN-template.md +129 -129
  353. package/templates/ide/claude/templates/TASK-SPEC-template.md +141 -100
  354. package/templates/ide/cursor/.cursor/commands/dag-viz.md +139 -0
  355. package/templates/ide/cursor/.cursor/commands/generate-blueprint.md +86 -41
  356. package/templates/ide/cursor/.cursor/commands/generate-design.md +35 -35
  357. package/templates/ide/cursor/.cursor/commands/generate-tasks.md +184 -142
  358. package/templates/ide/cursor/.cursor/commands/refine-task.md +107 -0
  359. package/templates/ide/cursor/.cursor/commands/review-task.md +91 -0
  360. package/templates/ide/cursor/.cursor/commands/run-dag.md +110 -110
  361. package/templates/ide/cursor/.cursor/rules/skill-ax.mdc +263 -0
  362. package/templates/ide/cursor/.cursor/rules/skill-dag-build.mdc +173 -0
  363. package/templates/ide/cursor/.cursor/rules/skill-dag-run.mdc +134 -0
  364. package/templates/ide/cursor/.cursor/rules/skill-dag-runner.mdc +221 -221
  365. package/templates/ide/cursor/.cursor/rules/skill-dna.mdc +63 -0
  366. package/templates/ide/cursor/.cursor/rules/skill-fastapi-api.mdc +352 -0
  367. package/templates/ide/cursor/.cursor/rules/skill-frontend-design.mdc +244 -0
  368. package/templates/ide/cursor/.cursor/rules/skill-go-gin-api.mdc +371 -0
  369. package/templates/ide/cursor/.cursor/rules/skill-layered-design.mdc +266 -0
  370. package/templates/ide/cursor/.cursor/rules/skill-llm-integration.mdc +295 -0
  371. package/templates/ide/cursor/.cursor/rules/skill-mcp-server.mdc +367 -0
  372. package/templates/ide/cursor/.cursor/rules/skill-migrate.mdc +58 -0
  373. package/templates/ide/cursor/.cursor/rules/skill-nestjs-api.mdc +346 -0
  374. package/templates/ide/cursor/.cursor/rules/skill-quality-telemetry.mdc +248 -0
  375. package/templates/ide/cursor/.cursor/rules/skill-rails-api.mdc +400 -0
  376. package/templates/ide/cursor/.cursor/rules/skill-realtime.mdc +262 -0
  377. package/templates/ide/cursor/.cursor/rules/skill-reverse.mdc +107 -0
  378. package/templates/ide/cursor/.cursor/rules/skill-rust-leptos.mdc +281 -0
  379. package/templates/ide/cursor/.cursor/rules/skill-rust-workspace.mdc +312 -312
  380. package/templates/ide/cursor/.cursor/rules/skill-security.mdc +245 -245
  381. package/templates/ide/cursor/templates/BLUEPRINT-template.md +193 -193
  382. package/templates/ide/cursor/templates/DESIGN-template.md +129 -129
  383. package/templates/ide/cursor/templates/TASK-SPEC-template.md +141 -100
  384. package/templates/shared/docker-compose.yml +41 -41
  385. package/dist/__tests__/dag-runner/adapters.test.d.ts +0 -2
  386. package/dist/__tests__/dag-runner/adapters.test.d.ts.map +0 -1
  387. package/dist/__tests__/dag-runner/adapters.test.js +0 -134
  388. package/dist/__tests__/dag-runner/adapters.test.js.map +0 -1
  389. package/dist/dag-runner/adapters/antigravity.d.ts +0 -6
  390. package/dist/dag-runner/adapters/antigravity.d.ts.map +0 -1
  391. package/dist/dag-runner/adapters/antigravity.js +0 -54
  392. package/dist/dag-runner/adapters/antigravity.js.map +0 -1
  393. package/dist/dag-runner/adapters/claude.d.ts +0 -6
  394. package/dist/dag-runner/adapters/claude.d.ts.map +0 -1
  395. package/dist/dag-runner/adapters/claude.js +0 -48
  396. package/dist/dag-runner/adapters/claude.js.map +0 -1
  397. package/dist/dag-runner/adapters/cursor.d.ts +0 -6
  398. package/dist/dag-runner/adapters/cursor.d.ts.map +0 -1
  399. package/dist/dag-runner/adapters/cursor.js +0 -58
  400. package/dist/dag-runner/adapters/cursor.js.map +0 -1
  401. package/dist/dag-runner/adapters/index.d.ts +0 -46
  402. package/dist/dag-runner/adapters/index.d.ts.map +0 -1
  403. package/dist/dag-runner/adapters/index.js +0 -55
  404. package/dist/dag-runner/adapters/index.js.map +0 -1
  405. package/dist/dag-runner/utils/timeout.d.ts +0 -27
  406. package/dist/dag-runner/utils/timeout.d.ts.map +0 -1
  407. package/dist/dag-runner/utils/timeout.js +0 -55
  408. package/dist/dag-runner/utils/timeout.js.map +0 -1
@@ -1,110 +1,110 @@
1
- # Comando: /run-dag
2
-
3
- ## Descrição
4
-
5
- Executa o grafo de tasks definido em `DARE/dare-dag.yaml` usando o **Cursor
6
- como executor** e o CLI `dare` como orquestrador. O canvas ao vivo fica em
7
- `DARE/.canvas.md`.
8
-
9
- > **Sem API keys.** Você (Cursor) usa o plano da IDE em que o usuário já está
10
- > logado. O CLI apenas coordena estado, monta prompts e atualiza canvas.
11
-
12
- ## Pré-requisitos
13
-
14
- - `DARE/dare-dag.yaml` existe e foi aprovado pelo usuário
15
- - Specs em `DARE/EXECUTION/task-<id>.md` geradas
16
- - `dare` disponível no PATH (`npm i -g @dewtech/dare-cli`)
17
-
18
- ## Instruções para o Cursor Composer
19
-
20
- ### 1. Validar pré-condições
21
-
22
- - Confirme que `DARE/dare-dag.yaml` existe. Se não, oriente o usuário a rodar
23
- `/generate-tasks` primeiro
24
- - Leia o YAML e verifique:
25
- - Sem ciclos
26
- - Pelo menos 2 tasks no rank 0 (paralelismo lógico)
27
- - Cada task tem `id` único, `complexity`, `subtask_prompt`
28
-
29
- ### 2. Pegar próximas tasks
30
-
31
- ```bash
32
- dare execute --next
33
- ```
34
-
35
- O CLI imprime as tasks ready do rank atual com o prompt completo (já com
36
- snippets dos outputs dos pais costurados). Use exatamente esses prompts.
37
-
38
- ### 3. Sugerir abrir o canvas
39
-
40
- Antes de começar, peça ao usuário abrir `DARE/.canvas.md` em uma aba para
41
- acompanhar o progresso ao vivo.
42
-
43
- ### 4. Executar cada task
44
-
45
- Para cada task ready:
46
-
47
- 1. Leia `spec_file` se houver
48
- 2. Implemente conforme o prompt
49
- 3. Rode Ralph Loop: build → test → lint
50
- 4. Registre o resultado:
51
-
52
- ```bash
53
- # Sucesso
54
- dare execute --complete task-001 --output "Resumo + arquivos criados/modificados (paths)"
55
-
56
- # Falha
57
- dare execute --fail task-002 --reason "Mensagem clara da falha"
58
- ```
59
-
60
- ### 5. Avançar de rank
61
-
62
- Após registrar todos os `--complete`/`--fail` do rank atual:
63
-
64
- ```bash
65
- dare execute --next
66
- ```
67
-
68
- Se aparece `✅ All tasks resolved`, todas as tasks terminaram. Caso contrário,
69
- continue executando o próximo rank.
70
-
71
- ### 6. Pós-execução
72
-
73
- Ao terminar:
74
-
75
- - Rode `dare execute --status` para ver o sumário final
76
- - Se houver FAILED: leia `DARE/EXECUTION/task-<id>.md` da que falhou,
77
- corrija a spec ou o prompt, depois:
78
-
79
- ```bash
80
- dare execute --reset task-002 # volta para PENDING
81
- dare execute --next # tente novamente
82
- ```
83
-
84
- ## Comandos disponíveis
85
-
86
- | Comando | Função |
87
- |---------|--------|
88
- | `dare execute --next` | Imprime tasks ready do rank atual com prompts |
89
- | `dare execute --complete <id> --output "…"` | Marca DONE |
90
- | `dare execute --fail <id> --reason "…"` | Marca FAILED + cascade-skip |
91
- | `dare execute --reset <id>` | Volta para PENDING (retry) |
92
- | `dare execute --status` | Snapshot do canvas + sumário |
93
-
94
- ## Erros comuns
95
-
96
- | Sintoma | Causa | Correção |
97
- |---------|-------|----------|
98
- | `dare-dag.yaml not found` | Não foi gerado | Rode `/generate-tasks` |
99
- | Cascata de SKIPPED | Pai falhou | Corrija pai → `--reset` → `--next` |
100
- | Output truncado em 4000 chars | Cap normal | Faça a task escrever em arquivo, retorne resumo |
101
- | Tudo no rank 0 disputa o mesmo arquivo | Ausência de deps reais | Edite `dare-dag.yaml` adicionando `depends_on` |
102
-
103
- ## Referências
104
-
105
- - Skill: `.cursor/rules/skill-dag-runner.mdc`
106
- - Schema: `DARE/dare-dag.yaml`
107
- - Canvas: `DARE/.canvas.md`
108
- - Specs: `DARE/EXECUTION/task-*.md`
109
-
110
- $ARGUMENTS
1
+ # Comando: /run-dag
2
+
3
+ ## Descrição
4
+
5
+ Executa o grafo de tasks definido em `DARE/dare-dag.yaml` usando o **Cursor
6
+ como executor** e o CLI `dare` como orquestrador. O canvas ao vivo fica em
7
+ `DARE/.canvas.md`.
8
+
9
+ > **Sem API keys.** Você (Cursor) usa o plano da IDE em que o usuário já está
10
+ > logado. O CLI apenas coordena estado, monta prompts e atualiza canvas.
11
+
12
+ ## Pré-requisitos
13
+
14
+ - `DARE/dare-dag.yaml` existe e foi aprovado pelo usuário
15
+ - Specs em `DARE/EXECUTION/task-<id>.md` geradas
16
+ - `dare` disponível no PATH (`npm i -g @dewtech/dare-cli`)
17
+
18
+ ## Instruções para o Cursor Composer
19
+
20
+ ### 1. Validar pré-condições
21
+
22
+ - Confirme que `DARE/dare-dag.yaml` existe. Se não, oriente o usuário a rodar
23
+ `/generate-tasks` primeiro
24
+ - Leia o YAML e verifique:
25
+ - Sem ciclos
26
+ - Pelo menos 2 tasks no rank 0 (paralelismo lógico)
27
+ - Cada task tem `id` único, `complexity`, `subtask_prompt`
28
+
29
+ ### 2. Pegar próximas tasks
30
+
31
+ ```bash
32
+ dare execute --next
33
+ ```
34
+
35
+ O CLI imprime as tasks ready do rank atual com o prompt completo (já com
36
+ snippets dos outputs dos pais costurados). Use exatamente esses prompts.
37
+
38
+ ### 3. Sugerir abrir o canvas
39
+
40
+ Antes de começar, peça ao usuário abrir `DARE/.canvas.md` em uma aba para
41
+ acompanhar o progresso ao vivo.
42
+
43
+ ### 4. Executar cada task
44
+
45
+ Para cada task ready:
46
+
47
+ 1. Leia `spec_file` se houver
48
+ 2. Implemente conforme o prompt
49
+ 3. Rode Ralph Loop: build → test → lint
50
+ 4. Registre o resultado:
51
+
52
+ ```bash
53
+ # Sucesso
54
+ dare execute --complete task-001 --output "Resumo + arquivos criados/modificados (paths)"
55
+
56
+ # Falha
57
+ dare execute --fail task-002 --reason "Mensagem clara da falha"
58
+ ```
59
+
60
+ ### 5. Avançar de rank
61
+
62
+ Após registrar todos os `--complete`/`--fail` do rank atual:
63
+
64
+ ```bash
65
+ dare execute --next
66
+ ```
67
+
68
+ Se aparece `✅ All tasks resolved`, todas as tasks terminaram. Caso contrário,
69
+ continue executando o próximo rank.
70
+
71
+ ### 6. Pós-execução
72
+
73
+ Ao terminar:
74
+
75
+ - Rode `dare execute --status` para ver o sumário final
76
+ - Se houver FAILED: leia `DARE/EXECUTION/task-<id>.md` da que falhou,
77
+ corrija a spec ou o prompt, depois:
78
+
79
+ ```bash
80
+ dare execute --reset task-002 # volta para PENDING
81
+ dare execute --next # tente novamente
82
+ ```
83
+
84
+ ## Comandos disponíveis
85
+
86
+ | Comando | Função |
87
+ |---------|--------|
88
+ | `dare execute --next` | Imprime tasks ready do rank atual com prompts |
89
+ | `dare execute --complete <id> --output "…"` | Marca DONE |
90
+ | `dare execute --fail <id> --reason "…"` | Marca FAILED + cascade-skip |
91
+ | `dare execute --reset <id>` | Volta para PENDING (retry) |
92
+ | `dare execute --status` | Snapshot do canvas + sumário |
93
+
94
+ ## Erros comuns
95
+
96
+ | Sintoma | Causa | Correção |
97
+ |---------|-------|----------|
98
+ | `dare-dag.yaml not found` | Não foi gerado | Rode `/generate-tasks` |
99
+ | Cascata de SKIPPED | Pai falhou | Corrija pai → `--reset` → `--next` |
100
+ | Output truncado em 4000 chars | Cap normal | Faça a task escrever em arquivo, retorne resumo |
101
+ | Tudo no rank 0 disputa o mesmo arquivo | Ausência de deps reais | Edite `dare-dag.yaml` adicionando `depends_on` |
102
+
103
+ ## Referências
104
+
105
+ - Skill: `.cursor/rules/skill-dag-runner.mdc`
106
+ - Schema: `DARE/dare-dag.yaml`
107
+ - Canvas: `DARE/.canvas.md`
108
+ - Specs: `DARE/EXECUTION/task-*.md`
109
+
110
+ $ARGUMENTS
@@ -0,0 +1,263 @@
1
+ ---
2
+ description: Agent Experience (AX) — codifica padrões para desenvolvimento assistido por IA em três planos (Discovery, Usage, Defense). Garante que todo projeto DARE exponha sinais estruturados (llms.txt, OpenAPI, --json, rate limit) que agentes de código precisam.
3
+ globs: llms.txt,openapi.json,public/openapi.json,README.md,.env.example,DARE/DESIGN.md
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Skill: Agent Experience (AX) DARE
8
+
9
+ Você é um especialista em integração entre projetos e agentes de código (Claude Code, Cursor, Antigravity, MCP servers). Esta skill define o **padrão AX DARE** que todo projeto novo deve seguir e contra o qual todo projeto existente deve ser auditado.
10
+
11
+ ## Por que AX é design-first
12
+
13
+ Projetos podem ter código correto e arquitetura limpa mas **carecer de sinais estruturados** para agentes:
14
+ - Sem `llms.txt`, o agente precisa adivinhar a estrutura
15
+ - Sem OpenAPI, o agente faz parsing regex de docs HTML
16
+ - Sem `--json` no CLI, o agente lida com tabelas ASCII coloridas
17
+ - Sem rate limit, um prompt mal feito vira DDoS
18
+
19
+ A skill `dare-ax` codifica três planos:
20
+
21
+ | Plano | Pergunta que responde |
22
+ |---|---|
23
+ | **Discovery** | "Como o agente acha o que precisa?" |
24
+ | **Usage** | "Como o agente opera sem refactor desnecessário?" |
25
+ | **Defense** | "Como o projeto resiste a prompts ruins?" |
26
+
27
+ ---
28
+
29
+ ## Plano 1 — Discovery
30
+
31
+ ### `llms.txt` na raiz (obrigatório)
32
+
33
+ Arquivo público com a "ficha técnica" do projeto. Formato livre mas seções fixas:
34
+
35
+ ```
36
+ # <nome-do-projeto>
37
+
38
+ > <descrição em 1-2 frases — o que é, qual problema resolve>
39
+
40
+ ## Stack
41
+ - <linguagem + framework>
42
+ - <banco>
43
+ - <cache, fila, etc.>
44
+
45
+ ## Bootstrap
46
+ - `make setup` — instala deps + sobe Postgres/Redis local
47
+ - `make dev` — sobe aplicação
48
+ - `make test` — roda suite
49
+
50
+ ## Endpoints
51
+ - `GET /healthz` — liveness
52
+ - `GET /openapi.json` — spec completa
53
+ - `POST /api/login` — autenticação
54
+ ...
55
+
56
+ ## CLI (se aplicável)
57
+ - `<bin> users create --email <e> --json`
58
+ - `<bin> migrate run --json`
59
+
60
+ ## Docs internas
61
+ - DARE/DESIGN.md — requisitos
62
+ - DARE/BLUEPRINT.md — arquitetura
63
+ - docs/RUNBOOK.md — operações
64
+ ```
65
+
66
+ **Critério objetivo:** o arquivo deve ser navegável em < 2 minutos por um agente.
67
+
68
+ ### Estrutura previsível
69
+
70
+ | Pasta | Conteúdo |
71
+ |---|---|
72
+ | `src/` ou `crates/<projeto>-*/` | código de produção |
73
+ | `tests/` | testes (mirror de `src/` quando possível) |
74
+ | `docs/` | documentação humana extensa |
75
+ | `DARE/` | DESIGN.md, BLUEPRINT.md, EXECUTION/, dare-dag.yaml |
76
+ | `infra/` ou `deploy/` | Dockerfile, compose, k8s manifests |
77
+
78
+ Nomes esotéricos (`thing/`, `stuff/`, `misc/`) — proibidos.
79
+
80
+ ---
81
+
82
+ ## Plano 2 — Usage
83
+
84
+ ### `openapi.json` (HTTP)
85
+
86
+ Toda API HTTP deve expor spec OpenAPI 3.x em `/openapi.json` ou `public/openapi.json`.
87
+
88
+ | Stack | Como gerar |
89
+ |---|---|
90
+ | FastAPI | Automático (Pydantic models) |
91
+ | NestJS | `@nestjs/swagger` decorators |
92
+ | Laravel | `darkaonline/l5-swagger` |
93
+ | Rails | `grape-swagger` ou `rswag` |
94
+ | Rust/Axum | `utoipa` + `utoipa-swagger-ui` |
95
+ | Go/Gin | `swaggo/swag` |
96
+
97
+ **Antipattern:** escrever OpenAPI à mão em YAML — desatualiza no primeiro PR.
98
+
99
+ ### CLI com `--json`
100
+
101
+ Todo comando de CLI exposto a humanos deve ter alternativa machine-readable:
102
+
103
+ ```bash
104
+ # Para humanos
105
+ $ dare metrics
106
+ ┌──────┬──────────┐
107
+ │ ID │ Status │
108
+ ├──────┼──────────┤
109
+ │ M-01 │ PASS │
110
+ └──────┴──────────┘
111
+
112
+ # Para agentes
113
+ $ dare metrics --json
114
+ {"metrics":[{"id":"M-01","status":"PASS","value":1.0}]}
115
+ ```
116
+
117
+ Regras:
118
+ - JSON puro em stdout, sem cores ANSI, sem prompt
119
+ - Exit code 0 em sucesso, ≠ 0 em erro
120
+ - Schema documentado em `llms.txt`
121
+
122
+ ### `.env.example` versionado
123
+
124
+ Sempre commitado, com **chaves e tipos**, sem valores reais:
125
+
126
+ ```
127
+ DATABASE_URL=postgres://user:password@localhost:5432/dbname
128
+ REDIS_URL=redis://localhost:6379/0
129
+ JWT_SECRET=replace-with-256-bit-random-string
130
+ STRIPE_SECRET_KEY=sk_test_xxx
131
+ ```
132
+
133
+ `.env` real fica no `.gitignore`.
134
+
135
+ ---
136
+
137
+ ## Plano 3 — Defense
138
+
139
+ ### Rate limit
140
+
141
+ Endpoint público sem rate limit = vulnerável. Use o middleware da stack:
142
+
143
+ | Stack | Middleware típico |
144
+ |---|---|
145
+ | Rails | `rack-attack` |
146
+ | Node/Express | `express-rate-limit` |
147
+ | NestJS | `@nestjs/throttler` |
148
+ | FastAPI | `slowapi` |
149
+ | Rust/Axum | `tower-governor` |
150
+ | Go/Gin | `gin-contrib/limit` ou middleware custom |
151
+ | Laravel | `ThrottleRequests` middleware (nativo) |
152
+
153
+ **Padrão recomendado:**
154
+ - Login: 5 req / 15 min por IP + por usuário
155
+ - API autenticada geral: 100 req / min por usuário
156
+ - API pública: 30 req / min por IP
157
+
158
+ ### Validação de input
159
+
160
+ Sempre no servidor, mesmo que o frontend valide:
161
+
162
+ | Stack | Tooling |
163
+ |---|---|
164
+ | Laravel | FormRequest classes |
165
+ | FastAPI | Pydantic models |
166
+ | Node | Zod, class-validator |
167
+ | Rust/Axum | `serde` + `validator` crate |
168
+ | Rails | strong params + ActiveModel validations |
169
+ | Go | `go-playground/validator` |
170
+
171
+ ### Secrets só via env
172
+
173
+ Nada de `password = "..."` no código. Configure scanner no CI:
174
+
175
+ ```bash
176
+ pip install detect-secrets
177
+ detect-secrets scan > .secrets.baseline
178
+ ```
179
+
180
+ ### `llms.txt` sem secrets
181
+
182
+ `llms.txt` é público — o scanner do CI deve bloquear commits onde apareçam:
183
+ - `api_key=`, `password=`, `DATABASE_URL=postgres://user:pwd@`
184
+ - `Bearer ...`, `Authorization: ...`
185
+ - Chaves PEM, AWS access keys, GCP service account JSON inline
186
+
187
+ ---
188
+
189
+ ## Métricas obrigatórias (CI)
190
+
191
+ | ID | Métrica | Comando de validação |
192
+ |---|---|---|
193
+ | M-01 | `llms.txt` existe e é válido (sem secrets, seções obrigatórias) | `dare ax validate --llms` |
194
+ | M-02 | `openapi.json` ou `public/openapi.json` existe | `test -f public/openapi.json \|\| test -f openapi.json` |
195
+ | M-03 | CLI suporta `--json` | `cli --help \| grep -- '--json'` |
196
+ | M-04 | Rate limit configurado | grep pelo middleware da stack |
197
+
198
+ Falha M-01 ou M-04 em produção = release bloqueado.
199
+
200
+ ---
201
+
202
+ ## Antipatterns
203
+
204
+ | AP | Antipattern | Por que evitar |
205
+ |---|---|---|
206
+ | AP-01 | Docs fora do código | Divergem rapidamente |
207
+ | AP-02 | OpenAPI escrito à mão | Desatualiza no primeiro PR |
208
+ | AP-03 | CLI sem `--json` | Agentes fazem regex no output, frágil |
209
+ | AP-04 | Rate limit em dev, faltando em prod | Endpoint vira target de abuse |
210
+ | AP-05 | `llms.txt` com secrets | Credenciais em repositório público |
211
+ | AP-06 | CORS `*` em produção | Origem qualquer permitida |
212
+ | AP-07 | Validação só em API, esquecida em CLI | Agentes usam ambos |
213
+ | AP-08 | Configs opcionais sem default | Agentes precisam de defaults previsíveis |
214
+
215
+ ---
216
+
217
+ ## Aplicação por fase DARE
218
+
219
+ ### Design (`/generate-design`)
220
+
221
+ DESIGN.md deve ter seção **## Agent Experience (AX)** com:
222
+ - Como o projeto será descoberto por agentes
223
+ - Quais CLIs/endpoints expostos terão `--json`/OpenAPI
224
+ - Estratégia de rate limit para endpoints públicos
225
+
226
+ ### Blueprint (`/generate-blueprint`)
227
+
228
+ BLUEPRINT.md deve listar:
229
+ - Geração automática de OpenAPI (qual tooling)
230
+ - Middleware de rate limit por endpoint
231
+ - Estratégia de logging estruturado (JSON)
232
+
233
+ ### Tasks (`/generate-tasks`)
234
+
235
+ Crie tasks dedicadas:
236
+ - "Gerar `llms.txt`"
237
+ - "Expor OpenAPI em /openapi.json"
238
+ - "Adicionar `--json` ao CLI"
239
+ - "Configurar rate limit em endpoints públicos"
240
+
241
+ ### Execute (`/execute-task`)
242
+
243
+ Em qualquer task que mexa em endpoint HTTP ou comando CLI, valide:
244
+ - OpenAPI atualizado?
245
+ - `--json` disponível?
246
+ - Rate limit aplicado?
247
+
248
+ ---
249
+
250
+ ## Checklist final
251
+
252
+ - [ ] `llms.txt` na raiz com seções obrigatórias
253
+ - [ ] OpenAPI 3.x gerado a partir do código
254
+ - [ ] Todos os CLIs aceitam `--json`
255
+ - [ ] Rate limit em todos os endpoints públicos
256
+ - [ ] `.env.example` versionado sem valores reais
257
+ - [ ] Scanner de secrets no CI
258
+ - [ ] Seção AX em DESIGN.md
259
+ - [ ] Métricas M-01 a M-04 verificáveis em CI
260
+
261
+ ---
262
+
263
+ Skill licenciada MIT — parte do DARE Method v3.
@@ -0,0 +1,173 @@
1
+ ---
2
+ description: Regenera APENAS o DARE/dare-dag.yaml a partir do BLUEPRINT.md já existente — sem refazer o blueprint nem as specs. Use quando o BLUEPRINT mudou pouco mas o grafo precisa refletir o novo estado, ou para experimentar uma decomposição diferente.
3
+ globs: DARE/BLUEPRINT.md,DARE/dare-dag.yaml,DARE/EXECUTION/**
4
+ alwaysApply: false
5
+ ---
6
+
7
+ # Skill: DAG Build — Regerar o grafo
8
+
9
+ Esta skill regenera **apenas** o `DARE/dare-dag.yaml` a partir do BLUEPRINT
10
+ existente. Não refaz o blueprint, não refaz specs, não executa nada.
11
+
12
+ > Para **executar** o grafo, use a skill `skill-dag-runner` (rule) ou o
13
+ > comando `/run-dag`.
14
+ > Para **visualizar** o grafo, use o comando `/dag-viz`.
15
+ > Para **build + run num único passo**, use `skill-dag-runner` que cobre
16
+ > ambos.
17
+
18
+ ## Quando usar
19
+
20
+ - O BLUEPRINT foi ajustado e o grafo precisa refletir
21
+ - Você quer experimentar uma decomposição diferente sem refazer o blueprint
22
+ - O `dare-dag.yaml` ficou inconsistente com `EXECUTION/task-*.md`
23
+ - Precisa adicionar/remover/reordenar tasks no grafo
24
+ - A complexidade ou as dependências de tasks mudaram
25
+
26
+ ## Pré-requisitos
27
+
28
+ - `DARE/BLUEPRINT.md` existe e está aprovado
29
+ - (Opcional) `DARE/EXECUTION/task-*.md` específicas serão preservadas se não
30
+ forem mencionadas
31
+
32
+ ## Procedimento
33
+
34
+ ### 1. Ler `DARE/BLUEPRINT.md`
35
+
36
+ Obrigatório. Se faltar, peça ao usuário rodar `/generate-blueprint` antes.
37
+
38
+ ### 2. Ler `DARE/dare-dag.yaml` atual (se existir)
39
+
40
+ Para preservar `id`s já em uso e não confundir o usuário com renomeações
41
+ desnecessárias.
42
+
43
+ ### 3. Gerar o novo `dare-dag.yaml`
44
+
45
+ Schema canônico:
46
+
47
+ ```yaml
48
+ title: "<Nome do Projeto> - Development Tasks"
49
+ version: "1.0.0"
50
+
51
+ limits:
52
+ parent_context_chars: 2000
53
+ task_output_chars: 4000
54
+ timeout_seconds: 600
55
+
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: "..."
64
+ depends_on: []
65
+ complexity: LOW
66
+ spec_file: EXECUTION/task-001.md
67
+ subtask_prompt: |
68
+ <self-contained>
69
+ ```
70
+
71
+ **Regras inegociáveis:**
72
+
73
+ - `id` em kebab-case e único
74
+ - `depends_on` mínimo — só quando filha *literalmente* precisa do output do pai
75
+ - `subtask_prompt` self-contained
76
+ - Pelo menos **2 tasks no rank 0** (paralelismo desde o início)
77
+ - Cadeia linear é antipattern — quebre dependências sempre que possível
78
+ - `complexity` honesta — não inflar nem deflar
79
+
80
+ ### 4. ANTI-STUB CONTRACT (inegociável)
81
+
82
+ Tasks geradas com `subtask_prompt` ou spec genéricos forçam o agente a
83
+ inventar — e ele vai produzir mock, stub ou esqueleto. O comando
84
+ `/review-task` (ou `dare review <id>`) detecta isso e marca a task como
85
+ FAILED.
86
+
87
+ Cada `subtask_prompt` e `EXECUTION/task-<id>.md` deve atender este contrato:
88
+
89
+ **O `subtask_prompt` precisa ser auto-suficiente.** O subagente recebe
90
+ **apenas** o `subtask_prompt` + snippets de 2000 chars dos pais. Inclua:
91
+
92
+ - Caminho exato dos arquivos a criar/modificar
93
+ - Assinaturas exatas das funções/endpoints
94
+ - Schema de request/response com tipos
95
+ - Validações específicas (não "validar input" — `email: regex /^.../`)
96
+ - Edge cases enumerados
97
+ - Lista de testes esperados com nome + comportamento
98
+
99
+ **A `spec_file` precisa ter Definition of Done anti-stub:**
100
+
101
+ ```markdown
102
+ ## Definition of Done (ANTI-STUB)
103
+
104
+ - [ ] Nenhum TODO, FIXME, XXX ou HACK em arquivos modificados
105
+ - [ ] Nenhuma função vazia
106
+ - [ ] Nenhum `throw new Error('not implemented')`, `unimplemented!()`, `todo!()`, `NotImplementedError`
107
+ - [ ] Nenhum return null/undefined/{} como única statement de função pública
108
+ - [ ] Mocks SOMENTE em *.test.*, *.spec.*, __tests__/, tests/, spec/
109
+ - [ ] Todos os endpoints retornam dados reais (não hardcoded)
110
+ - [ ] Cada validação produz erro real com status code correto (testado)
111
+ - [ ] Cada edge case tem teste demonstrando comportamento
112
+ ```
113
+
114
+ **Sinais de spec rasa (auto-validar antes de salvar):**
115
+
116
+ - ❌ "Implementar X" — sem assinatura, sem retorno, sem validações
117
+ - ❌ "Tratar erros adequadamente" — quais erros? como? que código?
118
+ - ❌ "Adicionar validações" — quais regras?
119
+ - ✅ "Implementar `POST /auth/login` retornando `{ token, refresh }` com 200 se válido, 401 se inválido, 429 se rate limit"
120
+
121
+ ### 5. Validar consistência com `EXECUTION/task-*.md`
122
+
123
+ Se uma spec existe em `DARE/EXECUTION/task-<id>.md`:
124
+ - Mantenha o mesmo `id` no YAML
125
+ - Aponte `spec_file: EXECUTION/task-<id>.md`
126
+ - Se a `complexity` ou `depends_on` mudou, atualize **também** a spec e o `TASKS.md`
127
+
128
+ Se uma task nova entrou no YAML mas não tem spec:
129
+ - Crie a spec correspondente em `EXECUTION/task-<id>.md`
130
+
131
+ Se uma task saiu do YAML mas a spec ficou:
132
+ - Pergunte ao usuário: arquivar (mover para `EXECUTION/_archived/`) ou apagar?
133
+
134
+ ### 6. Validar grafo
135
+
136
+ - Sem ciclos
137
+ - Todos os `depends_on` apontam para `id`s existentes
138
+ - `id`s únicos
139
+ - Pelo menos 2 tasks no rank 0
140
+
141
+ ### 7. Atualizar `DARE/TASKS.md`
142
+
143
+ Reflita o novo grafo na tabela master.
144
+
145
+ ### 8. Mensagem ao usuário
146
+
147
+ > `dare-dag.yaml` regenerado:
148
+ > - Total de tasks: N
149
+ > - Ranks paralelos: N
150
+ > - Adicionadas: [...]
151
+ > - Removidas: [...]
152
+ > - Modificadas: [...]
153
+ >
154
+ > Revise e aprove. Para executar: `/run-dag`.
155
+
156
+ ## Quando NÃO usar
157
+
158
+ - Se você nunca rodou `/generate-blueprint` antes — use ele primeiro
159
+ - Se o BLUEPRINT está desatualizado — atualize o BLUEPRINT primeiro
160
+ - Se você só quer executar o grafo já aprovado — use `skill-dag-runner` ou `/run-dag`
161
+ - Se você quer build + run num único passo — `skill-dag-runner` cobre
162
+
163
+ ## Referências
164
+
165
+ - Schema: `DARE/dare-dag.yaml`
166
+ - Specs: `DARE/EXECUTION/task-*.md`
167
+ - Status: `DARE/TASKS.md`
168
+
169
+ ---
170
+
171
+ ## Licença
172
+
173
+ Esta skill é parte do DARE Method e está sob licença MIT (D-001).