@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,12 +1,12 @@
1
- <!DOCTYPE html>
2
- <html lang="pt-BR">
3
- <head>
4
- <meta charset="UTF-8" />
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
- <title>{{PROJECT_NAME}}</title>
7
- </head>
8
- <body>
9
- <div id="root"></div>
10
- <script type="module" src="/src/main.tsx"></script>
11
- </body>
12
- </html>
1
+ <!DOCTYPE html>
2
+ <html lang="pt-BR">
3
+ <head>
4
+ <meta charset="UTF-8" />
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0" />
6
+ <title>{{PROJECT_NAME}}</title>
7
+ </head>
8
+ <body>
9
+ <div id="root"></div>
10
+ <script type="module" src="/src/main.tsx"></script>
11
+ </body>
12
+ </html>
@@ -1,35 +1,35 @@
1
- {
2
- "name": "{{PROJECT_NAME}}",
3
- "version": "0.1.0",
4
- "type": "module",
5
- "scripts": {
6
- "dev": "vite",
7
- "build": "tsc && vite build",
8
- "preview": "vite preview",
9
- "test": "vitest",
10
- "lint": "eslint src --ext .ts,.tsx"
11
- },
12
- "dependencies": {
13
- "react": "^18.3.0",
14
- "react-dom": "^18.3.0",
15
- "react-router-dom": "^6.26.0",
16
- "@tanstack/react-query": "^5.0.0",
17
- "zustand": "^4.5.0",
18
- "axios": "^1.7.0"
19
- },
20
- "devDependencies": {
21
- "@types/react": "^18.3.0",
22
- "@types/react-dom": "^18.3.0",
23
- "@vitejs/plugin-react": "^4.3.0",
24
- "@typescript-eslint/eslint-plugin": "^6.0.0",
25
- "@typescript-eslint/parser": "^6.0.0",
26
- "eslint": "^8.0.0",
27
- "eslint-plugin-react-hooks": "^4.6.0",
28
- "eslint-plugin-react-refresh": "^0.4.0",
29
- "typescript": "^5.0.0",
30
- "vite": "^5.4.0",
31
- "vitest": "^1.0.0",
32
- "@testing-library/react": "^16.0.0",
33
- "@testing-library/jest-dom": "^6.0.0"
34
- }
35
- }
1
+ {
2
+ "name": "{{PROJECT_NAME}}",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "scripts": {
6
+ "dev": "vite",
7
+ "build": "tsc && vite build",
8
+ "preview": "vite preview",
9
+ "test": "vitest",
10
+ "lint": "eslint src --ext .ts,.tsx"
11
+ },
12
+ "dependencies": {
13
+ "react": "^18.3.0",
14
+ "react-dom": "^18.3.0",
15
+ "react-router-dom": "^6.26.0",
16
+ "@tanstack/react-query": "^5.0.0",
17
+ "zustand": "^4.5.0",
18
+ "axios": "^1.7.0"
19
+ },
20
+ "devDependencies": {
21
+ "@types/react": "^18.3.0",
22
+ "@types/react-dom": "^18.3.0",
23
+ "@vitejs/plugin-react": "^4.3.0",
24
+ "@typescript-eslint/eslint-plugin": "^6.0.0",
25
+ "@typescript-eslint/parser": "^6.0.0",
26
+ "eslint": "^8.0.0",
27
+ "eslint-plugin-react-hooks": "^4.6.0",
28
+ "eslint-plugin-react-refresh": "^0.4.0",
29
+ "typescript": "^5.0.0",
30
+ "vite": "^5.4.0",
31
+ "vitest": "^1.0.0",
32
+ "@testing-library/react": "^16.0.0",
33
+ "@testing-library/jest-dom": "^6.0.0"
34
+ }
35
+ }
@@ -1,25 +1,25 @@
1
- import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
2
- import { BrowserRouter, Routes, Route } from 'react-router-dom';
3
-
4
- const queryClient = new QueryClient();
5
-
6
- function Home() {
7
- return (
8
- <div>
9
- <h1>{{PROJECT_NAME}}</h1>
10
- <p>DARE Framework — React App</p>
11
- </div>
12
- );
13
- }
14
-
15
- export default function App() {
16
- return (
17
- <QueryClientProvider client={queryClient}>
18
- <BrowserRouter>
19
- <Routes>
20
- <Route path="/" element={<Home />} />
21
- </Routes>
22
- </BrowserRouter>
23
- </QueryClientProvider>
24
- );
25
- }
1
+ import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
2
+ import { BrowserRouter, Routes, Route } from 'react-router-dom';
3
+
4
+ const queryClient = new QueryClient();
5
+
6
+ function Home() {
7
+ return (
8
+ <div>
9
+ <h1>{{PROJECT_NAME}}</h1>
10
+ <p>DARE Framework — React App</p>
11
+ </div>
12
+ );
13
+ }
14
+
15
+ export default function App() {
16
+ return (
17
+ <QueryClientProvider client={queryClient}>
18
+ <BrowserRouter>
19
+ <Routes>
20
+ <Route path="/" element={<Home />} />
21
+ </Routes>
22
+ </BrowserRouter>
23
+ </QueryClientProvider>
24
+ );
25
+ }
@@ -1,9 +1,9 @@
1
- import React from 'react';
2
- import ReactDOM from 'react-dom/client';
3
- import App from './App';
4
-
5
- ReactDOM.createRoot(document.getElementById('root')!).render(
6
- <React.StrictMode>
7
- <App />
8
- </React.StrictMode>,
9
- );
1
+ import React from 'react';
2
+ import ReactDOM from 'react-dom/client';
3
+ import App from './App';
4
+
5
+ ReactDOM.createRoot(document.getElementById('root')!).render(
6
+ <React.StrictMode>
7
+ <App />
8
+ </React.StrictMode>,
9
+ );
@@ -1,32 +1,32 @@
1
- {
2
- "name": "{{PROJECT_NAME}}",
3
- "version": "0.1.0",
4
- "type": "module",
5
- "scripts": {
6
- "dev": "vite",
7
- "build": "vue-tsc && vite build",
8
- "preview": "vite preview",
9
- "test": "vitest",
10
- "lint": "eslint src --ext .ts,.vue"
11
- },
12
- "dependencies": {
13
- "vue": "^3.5.0",
14
- "vue-router": "^4.4.0",
15
- "pinia": "^2.2.0",
16
- "axios": "^1.7.0",
17
- "@vueuse/core": "^11.0.0"
18
- },
19
- "devDependencies": {
20
- "@vitejs/plugin-vue": "^5.1.0",
21
- "@vue/test-utils": "^2.4.0",
22
- "@vue/tsconfig": "^0.5.0",
23
- "typescript": "^5.0.0",
24
- "vite": "^5.4.0",
25
- "vitest": "^1.0.0",
26
- "vue-tsc": "^2.0.0",
27
- "@typescript-eslint/eslint-plugin": "^6.0.0",
28
- "@typescript-eslint/parser": "^6.0.0",
29
- "eslint": "^8.0.0",
30
- "eslint-plugin-vue": "^9.0.0"
31
- }
32
- }
1
+ {
2
+ "name": "{{PROJECT_NAME}}",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "scripts": {
6
+ "dev": "vite",
7
+ "build": "vue-tsc && vite build",
8
+ "preview": "vite preview",
9
+ "test": "vitest",
10
+ "lint": "eslint src --ext .ts,.vue"
11
+ },
12
+ "dependencies": {
13
+ "vue": "^3.5.0",
14
+ "vue-router": "^4.4.0",
15
+ "pinia": "^2.2.0",
16
+ "axios": "^1.7.0",
17
+ "@vueuse/core": "^11.0.0"
18
+ },
19
+ "devDependencies": {
20
+ "@vitejs/plugin-vue": "^5.1.0",
21
+ "@vue/test-utils": "^2.4.0",
22
+ "@vue/tsconfig": "^0.5.0",
23
+ "typescript": "^5.0.0",
24
+ "vite": "^5.4.0",
25
+ "vitest": "^1.0.0",
26
+ "vue-tsc": "^2.0.0",
27
+ "@typescript-eslint/eslint-plugin": "^6.0.0",
28
+ "@typescript-eslint/parser": "^6.0.0",
29
+ "eslint": "^8.0.0",
30
+ "eslint-plugin-vue": "^9.0.0"
31
+ }
32
+ }
@@ -1,7 +1,7 @@
1
- <template>
2
- <RouterView />
3
- </template>
4
-
5
- <script setup lang="ts">
6
- import { RouterView } from 'vue-router';
7
- </script>
1
+ <template>
2
+ <RouterView />
3
+ </template>
4
+
5
+ <script setup lang="ts">
6
+ import { RouterView } from 'vue-router';
7
+ </script>
@@ -1,10 +1,10 @@
1
- import { createApp } from 'vue';
2
- import { createPinia } from 'pinia';
3
- import App from './App.vue';
4
- import router from './router';
5
-
6
- const app = createApp(App);
7
-
8
- app.use(createPinia());
9
- app.use(router);
10
- app.mount('#app');
1
+ import { createApp } from 'vue';
2
+ import { createPinia } from 'pinia';
3
+ import App from './App.vue';
4
+ import router from './router';
5
+
6
+ const app = createApp(App);
7
+
8
+ app.use(createPinia());
9
+ app.use(router);
10
+ app.mount('#app');
@@ -1,14 +1,14 @@
1
- import { createRouter, createWebHistory } from 'vue-router';
2
-
3
- const router = createRouter({
4
- history: createWebHistory(import.meta.env.BASE_URL),
5
- routes: [
6
- {
7
- path: '/',
8
- name: 'home',
9
- component: () => import('../views/HomeView.vue'),
10
- },
11
- ],
12
- });
13
-
14
- export default router;
1
+ import { createRouter, createWebHistory } from 'vue-router';
2
+
3
+ const router = createRouter({
4
+ history: createWebHistory(import.meta.env.BASE_URL),
5
+ routes: [
6
+ {
7
+ path: '/',
8
+ name: 'home',
9
+ component: () => import('../views/HomeView.vue'),
10
+ },
11
+ ],
12
+ });
13
+
14
+ export default router;
@@ -1,6 +1,6 @@
1
- <template>
2
- <main>
3
- <h1>{{PROJECT_NAME}}</h1>
4
- <p>DARE Framework — Vue App</p>
5
- </main>
6
- </template>
1
+ <template>
2
+ <main>
3
+ <h1>{{PROJECT_NAME}}</h1>
4
+ <p>DARE Framework — Vue App</p>
5
+ </main>
6
+ </template>
@@ -1,24 +1,24 @@
1
- #!/usr/bin/env sh
2
- # DARE — pre-commit hook
3
- #
4
- # Validates DARE/dare-dag.yaml when it (or any task spec) changes.
5
- # Install: copy this file to .git/hooks/pre-commit and make it executable:
6
- #
7
- # cp packages/cli/templates/hooks/pre-commit-dare-validate .git/hooks/pre-commit
8
- # chmod +x .git/hooks/pre-commit
9
- #
10
- # Or, with husky:
11
- # echo "dare validate --strict" > .husky/pre-commit
12
- # chmod +x .husky/pre-commit
13
-
14
- set -e
15
-
16
- # Only run when DARE artifacts are staged
17
- if git diff --cached --name-only | grep -qE '^(DARE/dare-dag\.yaml|DARE/EXECUTION/.*\.md|DARE/TASKS\.md)$'; then
18
- if ! command -v dare >/dev/null 2>&1; then
19
- echo "⚠ dare CLI not found in PATH. Install with: npm i -g @dewtech/dare-cli"
20
- exit 0
21
- fi
22
- echo "→ Running: dare validate --strict"
23
- dare validate --strict
24
- fi
1
+ #!/usr/bin/env sh
2
+ # DARE — pre-commit hook
3
+ #
4
+ # Validates DARE/dare-dag.yaml when it (or any task spec) changes.
5
+ # Install: copy this file to .git/hooks/pre-commit and make it executable:
6
+ #
7
+ # cp packages/cli/templates/hooks/pre-commit-dare-validate .git/hooks/pre-commit
8
+ # chmod +x .git/hooks/pre-commit
9
+ #
10
+ # Or, with husky:
11
+ # echo "dare validate --strict" > .husky/pre-commit
12
+ # chmod +x .husky/pre-commit
13
+
14
+ set -e
15
+
16
+ # Only run when DARE artifacts are staged
17
+ if git diff --cached --name-only | grep -qE '^(DARE/dare-dag\.yaml|DARE/EXECUTION/.*\.md|DARE/TASKS\.md)$'; then
18
+ if ! command -v dare >/dev/null 2>&1; then
19
+ echo "⚠ dare CLI not found in PATH. Install with: npm i -g @dewtech/dare-cli"
20
+ exit 0
21
+ fi
22
+ echo "→ Running: dare validate --strict"
23
+ dare validate --strict
24
+ fi
@@ -0,0 +1,152 @@
1
+ ---
2
+ name: dare-ax
3
+ 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 para trabalhar sem refactor desnecessário.
4
+ ---
5
+
6
+ # DARE AX Skill (Agent Experience)
7
+
8
+ Você é um especialista em integração entre projetos e agentes de código (Claude Code, Cursor, Antigravity, etc.). Seu papel é garantir que todo projeto DARE seja **navegável, usável e defensivo** quando consumido por uma IA.
9
+
10
+ ## Quando usar esta skill
11
+
12
+ - Está bootstrapando um projeto novo via `dare init` e precisa do baseline AX
13
+ - Está auditando um projeto existente e quer saber se ele é "AX-friendly"
14
+ - Está adicionando uma feature que muda a superfície pública (endpoints HTTP, CLI, docs)
15
+ - Vai integrar o projeto com um agente externo (LangChain, OpenAI Agents, MCP server)
16
+
17
+ ## Os três planos AX
18
+
19
+ ### Plano 1: Discovery — o agente acha o que precisa
20
+
21
+ | Sinal | Onde mora | Conteúdo mínimo |
22
+ |---|---|---|
23
+ | `llms.txt` | raiz do repositório | nome do projeto, descrição em 1 parágrafo, links para docs principais, comandos `make`/`npm run`, endpoints expostos, exemplos |
24
+ | `README.md` | raiz | bootstrap em 5 minutos, link para llms.txt, link para OpenAPI |
25
+ | Estrutura previsível | `src/`, `tests/`, `docs/`, `DARE/` | sem pastas exóticas (`thing/`, `stuff/`) |
26
+
27
+ ### Plano 2: Usage — o agente consegue operar
28
+
29
+ | Sinal | Obrigatório quando |
30
+ |---|---|
31
+ | `openapi.json` em `/openapi.json` ou `public/openapi.json` | projeto expõe HTTP |
32
+ | Flag `--json` em todos os comandos CLI | projeto expõe CLI |
33
+ | `Dockerfile` + `docker-compose.yml` validados | qualquer projeto que toque serviços externos |
34
+ | `.env.example` versionado | qualquer projeto |
35
+
36
+ ### Plano 3: Defense — o agente não pode quebrar produção
37
+
38
+ | Defesa | Implementação típica |
39
+ |---|---|
40
+ | Rate limit | `rack-attack` (Rails), `express-rate-limit` (Node), `tower-governor` (Rust), `slowapi` (FastAPI) |
41
+ | Validação de input | FormRequests (Laravel), Pydantic (FastAPI), Zod (Node), serde + validator (Rust) |
42
+ | Secrets só via env | `.env` no `.gitignore`, `.env.example` sem valores reais |
43
+ | `llms.txt` sem secrets | scan automático no CI bloqueando padrões `api_key=`, `password=`, `DATABASE_URL=` |
44
+
45
+ ## Métricas obrigatórias (todas Tipo A — binárias, verificáveis em CI)
46
+
47
+ | ID | Métrica | Como medir |
48
+ |---|---|---|
49
+ | M-01 | `llms.txt` existe e é válido (sem secrets, seções obrigatórias presentes) | grep + parse do arquivo |
50
+ | M-02 | `public/openapi.json` ou `openapi.json` existe | `test -f` |
51
+ | M-03 | CLI suporta `--json` | rodar `cli --help \| grep '\-\-json'` |
52
+ | M-04 | Rate limit configurado | grep por `rack-attack \| express-rate-limit \| tower-governor \| slowapi` |
53
+
54
+ Se M-01 ou M-04 falhar em produção, falha o pipeline.
55
+
56
+ ## Antipatterns explícitos
57
+
58
+ | ID | Antipattern | Por que evitar |
59
+ |---|---|---|
60
+ | AP-01 | Docs fora do código | Divergem rapidamente |
61
+ | AP-02 | OpenAPI escrito à mão | Fica desatualizado; sempre auto-gerar |
62
+ | AP-03 | CLI sem `--json` | Agentes precisam de parsing regex — brittle |
63
+ | AP-04 | Rate limit em dev, esquecido em prod | Produção vira target de abuse |
64
+ | AP-05 | `llms.txt` com secrets | Expõe credenciais no repositório público |
65
+ | AP-06 | CORS wildcard (`*`) em produção | Permite qualquer origem |
66
+ | AP-07 | Validação só em API, esquecida em CLI | Agentes usam ambos |
67
+ | AP-08 | Configs opcionais sem default | Agentes precisam de defaults previsíveis |
68
+
69
+ ## Template `llms.txt` (gerar sempre)
70
+
71
+ ```
72
+ # <nome-do-projeto>
73
+
74
+ > <descricao em 1-2 frases>
75
+
76
+ ## Stack
77
+
78
+ - <linguagem + framework>
79
+ - <banco de dados>
80
+ - <cache, fila, etc.>
81
+
82
+ ## Bootstrap
83
+
84
+ - `make setup` — instala deps + sobe Postgres/Redis
85
+ - `make dev` — sobe aplicação em modo dev
86
+ - `make test` — roda suite completa
87
+
88
+ ## Endpoints
89
+
90
+ - `GET /healthz` — liveness
91
+ - `GET /openapi.json` — spec OpenAPI completa
92
+ - `POST /api/login` — autenticação
93
+ - ...
94
+
95
+ ## Docs
96
+
97
+ - DARE/DESIGN.md — requisitos
98
+ - DARE/BLUEPRINT.md — arquitetura
99
+ - docs/RUNBOOK.md — operações
100
+ ```
101
+
102
+ ## Como aplicar passo a passo
103
+
104
+ ### Passo 1: Auditar o projeto
105
+
106
+ Rode mentalmente o checklist:
107
+ - [ ] `llms.txt` existe na raiz?
108
+ - [ ] `openapi.json` é gerado a cada build?
109
+ - [ ] Todos os comandos CLI aceitam `--json`?
110
+ - [ ] Existe rate limit em endpoints públicos?
111
+ - [ ] `.env.example` está versionado e sem valores reais?
112
+
113
+ ### Passo 2: Gerar `llms.txt` se faltar
114
+
115
+ Use o template acima. Liste **apenas** comandos e endpoints que realmente existem — não invente.
116
+
117
+ ### Passo 3: Validar OpenAPI
118
+
119
+ Se a stack for:
120
+ - **Node/NestJS** — `@nestjs/swagger` decorators + `OpenAPIModule.createDocument`
121
+ - **FastAPI** — automático via Pydantic, exposto em `/openapi.json`
122
+ - **Rails/Grape** — `grape-swagger` ou `rswag`
123
+ - **Rust/Axum** — `utoipa` + `utoipa-swagger-ui`
124
+ - **Laravel** — `darkaonline/l5-swagger`
125
+
126
+ ### Passo 4: Validar CLI --json
127
+
128
+ Em qualquer CLI do projeto, `--json` deve:
129
+ - Imprimir JSON puro em stdout (sem cores ANSI, sem prompt)
130
+ - Manter exit code = 0 em sucesso, ≠ 0 em erro
131
+ - Schema documentado no `llms.txt`
132
+
133
+ ### Passo 5: Validar rate limit
134
+
135
+ Procurar por gem/package específico da stack. Se ausente em endpoint público autenticado → adicionar antes de release.
136
+
137
+ ## Boas práticas
138
+
139
+ 1. **AX como cidadão de primeira classe** — não é "feature opcional", é parte do design
140
+ 2. **Single source of truth** — OpenAPI gerado a partir do código, nunca manual
141
+ 3. **Defaults previsíveis** — agentes precisam adivinhar menos
142
+ 4. **Logs estruturados (JSON)** — facilita debug por agente que lê output
143
+
144
+ ## Dicas para melhor resultado
145
+
146
+ - **Consulte** `docs/design/skills/dare-ax/DESIGN.md` para o "porquê" detalhado
147
+ - **Use** a skill `dare-security` em conjunto — AX e segurança são primos próximos
148
+ - **Antes de release**, rode os 4 checks de M-01 a M-04 em CI
149
+
150
+ ---
151
+
152
+ Esta skill é parte do DARE Method e está sob licença MIT.