@dewtech/dare-cli 3.3.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 (582) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +764 -764
  3. package/dist/__tests__/confidence.test.js +13 -13
  4. package/dist/__tests__/dag-converter.test.js +56 -56
  5. package/dist/__tests__/mcp-server/server.test.js +3 -16
  6. package/dist/__tests__/mcp-server/server.test.js.map +1 -1
  7. package/dist/__tests__/project-generator.test.js +2 -2
  8. package/dist/__tests__/project-generator.test.js.map +1 -1
  9. package/dist/__tests__/refine.test.js +49 -49
  10. package/dist/__tests__/reverse-collection.test.js +6 -6
  11. package/dist/__tests__/review.test.js +38 -38
  12. package/dist/__tests__/security-hardening.test.d.ts +2 -0
  13. package/dist/__tests__/security-hardening.test.d.ts.map +1 -0
  14. package/dist/__tests__/security-hardening.test.js +101 -0
  15. package/dist/__tests__/security-hardening.test.js.map +1 -0
  16. package/dist/__tests__/validate.test.js +65 -65
  17. package/dist/bin/dare.js +0 -0
  18. package/dist/commands/__tests__/init-validation.test.d.ts +2 -0
  19. package/dist/commands/__tests__/init-validation.test.d.ts.map +1 -0
  20. package/dist/commands/__tests__/init-validation.test.js +81 -0
  21. package/dist/commands/__tests__/init-validation.test.js.map +1 -0
  22. package/dist/commands/__tests__/init.integration.spec.js +6 -4
  23. package/dist/commands/__tests__/init.integration.spec.js.map +1 -1
  24. package/dist/commands/__tests__/init.spec.d.ts +2 -0
  25. package/dist/commands/__tests__/init.spec.d.ts.map +1 -0
  26. package/dist/commands/__tests__/init.spec.js +88 -0
  27. package/dist/commands/__tests__/init.spec.js.map +1 -0
  28. package/dist/commands/blueprint.js +122 -122
  29. package/dist/commands/design.js +20 -20
  30. package/dist/commands/init-validation.d.ts +22 -0
  31. package/dist/commands/init-validation.d.ts.map +1 -0
  32. package/dist/commands/init-validation.js +54 -0
  33. package/dist/commands/init-validation.js.map +1 -0
  34. package/dist/commands/init.d.ts.map +1 -1
  35. package/dist/commands/init.js +26 -10
  36. package/dist/commands/init.js.map +1 -1
  37. package/dist/graphrag/graph-rag.js +24 -24
  38. package/dist/mcp-server/__tests__/auth.test.d.ts +2 -0
  39. package/dist/mcp-server/__tests__/auth.test.d.ts.map +1 -0
  40. package/dist/mcp-server/__tests__/auth.test.js +72 -0
  41. package/dist/mcp-server/__tests__/auth.test.js.map +1 -0
  42. package/dist/mcp-server/__tests__/boot-config.test.d.ts +2 -0
  43. package/dist/mcp-server/__tests__/boot-config.test.d.ts.map +1 -0
  44. package/dist/mcp-server/__tests__/boot-config.test.js +29 -0
  45. package/dist/mcp-server/__tests__/boot-config.test.js.map +1 -0
  46. package/dist/mcp-server/__tests__/error-sanitize.test.d.ts +2 -0
  47. package/dist/mcp-server/__tests__/error-sanitize.test.d.ts.map +1 -0
  48. package/dist/mcp-server/__tests__/error-sanitize.test.js +66 -0
  49. package/dist/mcp-server/__tests__/error-sanitize.test.js.map +1 -0
  50. package/dist/mcp-server/__tests__/path-confinement.test.d.ts +2 -0
  51. package/dist/mcp-server/__tests__/path-confinement.test.d.ts.map +1 -0
  52. package/dist/mcp-server/__tests__/path-confinement.test.js +135 -0
  53. package/dist/mcp-server/__tests__/path-confinement.test.js.map +1 -0
  54. package/dist/mcp-server/bin/server.js +18 -6
  55. package/dist/mcp-server/bin/server.js.map +1 -1
  56. package/dist/mcp-server/boot-config.d.ts +6 -0
  57. package/dist/mcp-server/boot-config.d.ts.map +1 -0
  58. package/dist/mcp-server/boot-config.js +17 -0
  59. package/dist/mcp-server/boot-config.js.map +1 -0
  60. package/dist/mcp-server/middleware/auth.d.ts +10 -0
  61. package/dist/mcp-server/middleware/auth.d.ts.map +1 -0
  62. package/dist/mcp-server/middleware/auth.js +44 -0
  63. package/dist/mcp-server/middleware/auth.js.map +1 -0
  64. package/dist/mcp-server/middleware/cors.d.ts +6 -0
  65. package/dist/mcp-server/middleware/cors.d.ts.map +1 -0
  66. package/dist/mcp-server/middleware/cors.js +30 -0
  67. package/dist/mcp-server/middleware/cors.js.map +1 -0
  68. package/dist/mcp-server/middleware/error-handler.d.ts +11 -0
  69. package/dist/mcp-server/middleware/error-handler.d.ts.map +1 -0
  70. package/dist/mcp-server/middleware/error-handler.js +14 -0
  71. package/dist/mcp-server/middleware/error-handler.js.map +1 -0
  72. package/dist/mcp-server/server.d.ts +7 -2
  73. package/dist/mcp-server/server.d.ts.map +1 -1
  74. package/dist/mcp-server/server.js +185 -105
  75. package/dist/mcp-server/server.js.map +1 -1
  76. package/dist/skills/registry-mock.json +109 -109
  77. package/dist/skills/tests/manifest.spec.js +20 -20
  78. package/dist/stacks/__tests__/dna-emitter.spec.js +6 -6
  79. package/dist/stacks/dna-emitter.js +69 -69
  80. package/dist/stacks/ruby-rails-8/scaffold.js +15 -15
  81. package/dist/utils/project-generator.d.ts.map +1 -1
  82. package/dist/utils/project-generator.js +254 -252
  83. package/dist/utils/project-generator.js.map +1 -1
  84. package/dist/utils/stack-bootstrap.js +371 -371
  85. package/dist/utils/templates.js +394 -394
  86. package/dist/verification/__tests__/anti-tamper.test.js +13 -13
  87. package/package.json +96 -93
  88. package/templates/DARE-dag-example.yaml +280 -280
  89. package/templates/UPDATE-MANIFEST.json +68 -68
  90. package/templates/backend/node-nestjs/.env.example +9 -9
  91. package/templates/backend/node-nestjs/nest-cli.json +8 -8
  92. package/templates/backend/node-nestjs/package.json +50 -50
  93. package/templates/backend/node-nestjs/src/app.controller.ts +12 -12
  94. package/templates/backend/node-nestjs/src/app.module.ts +15 -15
  95. package/templates/backend/node-nestjs/src/app.service.ts +8 -8
  96. package/templates/backend/node-nestjs/src/main.ts +24 -24
  97. package/templates/backend/node-nestjs/tsconfig.json +21 -21
  98. package/templates/backend/php-laravel/.env.example +22 -22
  99. package/templates/backend/php-laravel/app/Http/Controllers/HealthController.php +15 -15
  100. package/templates/backend/php-laravel/composer.json +40 -40
  101. package/templates/backend/python-fastapi/.env.example +4 -4
  102. package/templates/backend/python-fastapi/app/api/router.py +8 -8
  103. package/templates/backend/python-fastapi/app/core/config.py +20 -20
  104. package/templates/backend/python-fastapi/main.py +35 -35
  105. package/templates/backend/python-fastapi/requirements.txt +13 -13
  106. package/templates/backend/rust-axum/.env.example +3 -3
  107. package/templates/backend/rust-axum/Cargo.toml +23 -23
  108. package/templates/backend/rust-axum/src/errors.rs +30 -30
  109. package/templates/backend/rust-axum/src/main.rs +32 -32
  110. package/templates/backend/rust-axum/src/routes.rs +6 -6
  111. package/templates/frontend/leptos-csr/.cargo/config.toml +2 -2
  112. package/templates/frontend/leptos-csr/Cargo.toml +16 -16
  113. package/templates/frontend/leptos-csr/Trunk.toml +10 -10
  114. package/templates/frontend/leptos-csr/index.html +11 -11
  115. package/templates/frontend/leptos-csr/src/lib.rs +20 -20
  116. package/templates/frontend/leptos-csr/style/main.scss +19 -19
  117. package/templates/frontend/leptos-fullstack/.cargo/config.toml +4 -4
  118. package/templates/frontend/leptos-fullstack/Cargo.toml +56 -56
  119. package/templates/frontend/leptos-fullstack/src/app.rs +49 -49
  120. package/templates/frontend/leptos-fullstack/src/lib.rs +9 -9
  121. package/templates/frontend/leptos-fullstack/src/main.rs +29 -29
  122. package/templates/frontend/leptos-fullstack/style/main.scss +19 -19
  123. package/templates/frontend/react/index.html +12 -12
  124. package/templates/frontend/react/package.json +35 -35
  125. package/templates/frontend/react/src/App.tsx +25 -25
  126. package/templates/frontend/react/src/main.tsx +9 -9
  127. package/templates/frontend/vue/package.json +32 -32
  128. package/templates/frontend/vue/src/App.vue +7 -7
  129. package/templates/frontend/vue/src/main.ts +10 -10
  130. package/templates/frontend/vue/src/router/index.ts +14 -14
  131. package/templates/frontend/vue/src/views/HomeView.vue +6 -6
  132. package/templates/hooks/pre-commit-dare-validate +24 -24
  133. package/templates/ide/antigravity/.agents/skills/dare-ax/SKILL.md +152 -152
  134. package/templates/ide/antigravity/.agents/skills/dare-bench/SKILL.md +21 -21
  135. package/templates/ide/antigravity/.agents/skills/dare-blueprint/SKILL.md +368 -368
  136. package/templates/ide/antigravity/.agents/skills/dare-bootstrap/SKILL.md +32 -32
  137. package/templates/ide/antigravity/.agents/skills/dare-bugfix-design/SKILL.md +76 -76
  138. package/templates/ide/antigravity/.agents/skills/dare-dag/SKILL.md +32 -32
  139. package/templates/ide/antigravity/.agents/skills/dare-dag-build/SKILL.md +154 -154
  140. package/templates/ide/antigravity/.agents/skills/dare-dag-run/SKILL.md +130 -130
  141. package/templates/ide/antigravity/.agents/skills/dare-dag-runner/SKILL.md +203 -203
  142. package/templates/ide/antigravity/.agents/skills/dare-design/SKILL.md +180 -180
  143. package/templates/ide/antigravity/.agents/skills/dare-discover/SKILL.md +33 -33
  144. package/templates/ide/antigravity/.agents/skills/dare-dna/SKILL.md +63 -63
  145. package/templates/ide/antigravity/.agents/skills/dare-docker/SKILL.md +315 -315
  146. package/templates/ide/antigravity/.agents/skills/dare-execute/SKILL.md +264 -264
  147. package/templates/ide/antigravity/.agents/skills/dare-feature-design/SKILL.md +74 -74
  148. package/templates/ide/antigravity/.agents/skills/dare-frontend-design/SKILL.md +192 -192
  149. package/templates/ide/antigravity/.agents/skills/dare-graph/SKILL.md +35 -35
  150. package/templates/ide/antigravity/.agents/skills/dare-info/SKILL.md +31 -31
  151. package/templates/ide/antigravity/.agents/skills/dare-init/SKILL.md +35 -35
  152. package/templates/ide/antigravity/.agents/skills/dare-laravel-api/SKILL.md +337 -337
  153. package/templates/ide/antigravity/.agents/skills/dare-layered-design/SKILL.md +166 -166
  154. package/templates/ide/antigravity/.agents/skills/dare-llm-integration/SKILL.md +217 -217
  155. package/templates/ide/antigravity/.agents/skills/dare-migrate/SKILL.md +61 -61
  156. package/templates/ide/antigravity/.agents/skills/dare-quality-telemetry/SKILL.md +187 -187
  157. package/templates/ide/antigravity/.agents/skills/dare-realtime/SKILL.md +217 -217
  158. package/templates/ide/antigravity/.agents/skills/dare-refine/SKILL.md +114 -114
  159. package/templates/ide/antigravity/.agents/skills/dare-reverse/SKILL.md +108 -108
  160. package/templates/ide/antigravity/.agents/skills/dare-review/SKILL.md +111 -111
  161. package/templates/ide/antigravity/.agents/skills/dare-rust-leptos/SKILL.md +263 -263
  162. package/templates/ide/antigravity/.agents/skills/dare-rust-workspace/SKILL.md +275 -275
  163. package/templates/ide/antigravity/.agents/skills/dare-security/SKILL.md +274 -274
  164. package/templates/ide/antigravity/.agents/skills/dare-skill/SKILL.md +35 -35
  165. package/templates/ide/antigravity/.agents/skills/dare-tasks/SKILL.md +265 -265
  166. package/templates/ide/antigravity/.agents/skills/dare-telemetry/SKILL.md +188 -188
  167. package/templates/ide/antigravity/.agents/skills/dare-update/SKILL.md +33 -33
  168. package/templates/ide/antigravity/.agents/skills/dare-validate/SKILL.md +33 -33
  169. package/templates/ide/antigravity/.agents/skills/dare-welcome/SKILL.md +30 -30
  170. package/templates/ide/antigravity/.agents/skills/skill-fastapi-api/SKILL.md +343 -343
  171. package/templates/ide/antigravity/.agents/skills/skill-go-gin-api/SKILL.md +377 -377
  172. package/templates/ide/antigravity/.agents/skills/skill-mcp-server/SKILL.md +382 -382
  173. package/templates/ide/antigravity/.agents/skills/skill-nestjs-api/SKILL.md +326 -326
  174. package/templates/ide/antigravity/.agents/skills/skill-rails-api/SKILL.md +393 -393
  175. package/templates/ide/antigravity/templates/BLUEPRINT-template.md +193 -193
  176. package/templates/ide/antigravity/templates/DESIGN-template.md +129 -129
  177. package/templates/ide/antigravity/templates/TASK-SPEC-template.md +141 -141
  178. package/templates/ide/antigravity/templates/TASKS-template.md +26 -26
  179. package/templates/ide/antigravity/templates/TELEMETRY-template.md +125 -125
  180. package/templates/ide/claude/.claude/commands/dare-ax.md +131 -131
  181. package/templates/ide/claude/.claude/commands/dare-bench.md +18 -18
  182. package/templates/ide/claude/.claude/commands/dare-blueprint.md +134 -134
  183. package/templates/ide/claude/.claude/commands/dare-bootstrap.md +27 -27
  184. package/templates/ide/claude/.claude/commands/dare-bugfix-design.md +119 -119
  185. package/templates/ide/claude/.claude/commands/dare-dag-build.md +151 -151
  186. package/templates/ide/claude/.claude/commands/dare-dag-run.md +109 -109
  187. package/templates/ide/claude/.claude/commands/dare-dag-runner.md +117 -117
  188. package/templates/ide/claude/.claude/commands/dare-dag-viz.md +197 -197
  189. package/templates/ide/claude/.claude/commands/dare-dag.md +27 -27
  190. package/templates/ide/claude/.claude/commands/dare-design.md +69 -69
  191. package/templates/ide/claude/.claude/commands/dare-discover.md +28 -28
  192. package/templates/ide/claude/.claude/commands/dare-dna.md +75 -75
  193. package/templates/ide/claude/.claude/commands/dare-docker.md +207 -207
  194. package/templates/ide/claude/.claude/commands/dare-execute.md +152 -152
  195. package/templates/ide/claude/.claude/commands/dare-feature-design.md +147 -147
  196. package/templates/ide/claude/.claude/commands/dare-frontend-design.md +149 -149
  197. package/templates/ide/claude/.claude/commands/dare-graph.md +30 -30
  198. package/templates/ide/claude/.claude/commands/dare-info.md +26 -26
  199. package/templates/ide/claude/.claude/commands/dare-init.md +30 -30
  200. package/templates/ide/claude/.claude/commands/dare-laravel-api.md +211 -211
  201. package/templates/ide/claude/.claude/commands/dare-layered-design.md +124 -124
  202. package/templates/ide/claude/.claude/commands/dare-llm-integration.md +148 -148
  203. package/templates/ide/claude/.claude/commands/dare-migrate.md +72 -72
  204. package/templates/ide/claude/.claude/commands/dare-quality-telemetry.md +166 -166
  205. package/templates/ide/claude/.claude/commands/dare-realtime.md +159 -159
  206. package/templates/ide/claude/.claude/commands/dare-refine.md +145 -145
  207. package/templates/ide/claude/.claude/commands/dare-reverse.md +139 -139
  208. package/templates/ide/claude/.claude/commands/dare-review.md +113 -113
  209. package/templates/ide/claude/.claude/commands/dare-rust-leptos.md +269 -269
  210. package/templates/ide/claude/.claude/commands/dare-rust-workspace.md +209 -209
  211. package/templates/ide/claude/.claude/commands/dare-security.md +232 -232
  212. package/templates/ide/claude/.claude/commands/dare-skill.md +30 -30
  213. package/templates/ide/claude/.claude/commands/dare-tasks.md +70 -70
  214. package/templates/ide/claude/.claude/commands/dare-telemetry.md +132 -132
  215. package/templates/ide/claude/.claude/commands/dare-update.md +28 -28
  216. package/templates/ide/claude/.claude/commands/dare-validate.md +28 -28
  217. package/templates/ide/claude/.claude/commands/dare-welcome.md +25 -25
  218. package/templates/ide/claude/.claude/commands/skill-fastapi-api.md +205 -205
  219. package/templates/ide/claude/.claude/commands/skill-go-gin-api.md +232 -232
  220. package/templates/ide/claude/.claude/commands/skill-mcp-server.md +228 -228
  221. package/templates/ide/claude/.claude/commands/skill-nestjs-api.md +210 -210
  222. package/templates/ide/claude/.claude/commands/skill-rails-api.md +236 -236
  223. package/templates/ide/claude/.claude/settings.example.json +35 -35
  224. package/templates/ide/claude/CLAUDE.md +146 -146
  225. package/templates/ide/claude/templates/BLUEPRINT-template.md +193 -193
  226. package/templates/ide/claude/templates/DESIGN-template.md +129 -129
  227. package/templates/ide/claude/templates/TASK-SPEC-template.md +141 -141
  228. package/templates/ide/claude/templates/TASKS-template.md +26 -26
  229. package/templates/ide/claude/templates/TELEMETRY-template.md +125 -125
  230. package/templates/ide/cursor/.cursor/commands/dare-bench.md +18 -18
  231. package/templates/ide/cursor/.cursor/commands/dare-blueprint.md +86 -86
  232. package/templates/ide/cursor/.cursor/commands/dare-bootstrap.md +27 -27
  233. package/templates/ide/cursor/.cursor/commands/dare-bugfix-design.md +64 -64
  234. package/templates/ide/cursor/.cursor/commands/dare-dag-run.md +110 -110
  235. package/templates/ide/cursor/.cursor/commands/dare-dag-viz.md +139 -139
  236. package/templates/ide/cursor/.cursor/commands/dare-dag.md +27 -27
  237. package/templates/ide/cursor/.cursor/commands/dare-design.md +35 -35
  238. package/templates/ide/cursor/.cursor/commands/dare-discover.md +28 -28
  239. package/templates/ide/cursor/.cursor/commands/dare-dna.md +75 -75
  240. package/templates/ide/cursor/.cursor/commands/dare-docker-compose.md +18 -18
  241. package/templates/ide/cursor/.cursor/commands/dare-dockerfile.md +17 -17
  242. package/templates/ide/cursor/.cursor/commands/dare-execute.md +19 -19
  243. package/templates/ide/cursor/.cursor/commands/dare-feature-design.md +64 -64
  244. package/templates/ide/cursor/.cursor/commands/dare-graph.md +30 -30
  245. package/templates/ide/cursor/.cursor/commands/dare-info.md +26 -26
  246. package/templates/ide/cursor/.cursor/commands/dare-init.md +30 -30
  247. package/templates/ide/cursor/.cursor/commands/dare-migrate.md +72 -72
  248. package/templates/ide/cursor/.cursor/commands/dare-refine.md +107 -107
  249. package/templates/ide/cursor/.cursor/commands/dare-reverse.md +139 -139
  250. package/templates/ide/cursor/.cursor/commands/dare-review.md +91 -91
  251. package/templates/ide/cursor/.cursor/commands/dare-skill.md +30 -30
  252. package/templates/ide/cursor/.cursor/commands/dare-tasks.md +184 -184
  253. package/templates/ide/cursor/.cursor/commands/dare-telemetry.md +42 -42
  254. package/templates/ide/cursor/.cursor/commands/dare-update.md +28 -28
  255. package/templates/ide/cursor/.cursor/commands/dare-validate.md +28 -28
  256. package/templates/ide/cursor/.cursor/commands/dare-welcome.md +25 -25
  257. package/templates/ide/cursor/.cursor/rules/skill-ax.mdc +263 -263
  258. package/templates/ide/cursor/.cursor/rules/skill-bugfix-design.mdc +51 -51
  259. package/templates/ide/cursor/.cursor/rules/skill-dag-build.mdc +173 -173
  260. package/templates/ide/cursor/.cursor/rules/skill-dag-run.mdc +134 -134
  261. package/templates/ide/cursor/.cursor/rules/skill-dag-runner.mdc +221 -221
  262. package/templates/ide/cursor/.cursor/rules/skill-dna.mdc +63 -63
  263. package/templates/ide/cursor/.cursor/rules/skill-docker.mdc +33 -33
  264. package/templates/ide/cursor/.cursor/rules/skill-fastapi-api.mdc +352 -352
  265. package/templates/ide/cursor/.cursor/rules/skill-feature-design.mdc +43 -43
  266. package/templates/ide/cursor/.cursor/rules/skill-frontend-design.mdc +244 -244
  267. package/templates/ide/cursor/.cursor/rules/skill-go-gin-api.mdc +371 -371
  268. package/templates/ide/cursor/.cursor/rules/skill-laravel-api.mdc +44 -44
  269. package/templates/ide/cursor/.cursor/rules/skill-layered-design.mdc +266 -266
  270. package/templates/ide/cursor/.cursor/rules/skill-llm-integration.mdc +295 -295
  271. package/templates/ide/cursor/.cursor/rules/skill-mcp-server.mdc +367 -367
  272. package/templates/ide/cursor/.cursor/rules/skill-migrate.mdc +58 -58
  273. package/templates/ide/cursor/.cursor/rules/skill-nestjs-api.mdc +346 -346
  274. package/templates/ide/cursor/.cursor/rules/skill-quality-telemetry.mdc +248 -248
  275. package/templates/ide/cursor/.cursor/rules/skill-rails-api.mdc +400 -400
  276. package/templates/ide/cursor/.cursor/rules/skill-realtime.mdc +262 -262
  277. package/templates/ide/cursor/.cursor/rules/skill-reverse.mdc +107 -107
  278. package/templates/ide/cursor/.cursor/rules/skill-rust-leptos.mdc +281 -281
  279. package/templates/ide/cursor/.cursor/rules/skill-rust-workspace.mdc +312 -312
  280. package/templates/ide/cursor/.cursor/rules/skill-security.mdc +245 -245
  281. package/templates/ide/cursor/.cursor/rules/skill-telemetry.mdc +156 -156
  282. package/templates/ide/cursor/templates/BLUEPRINT-template.md +193 -193
  283. package/templates/ide/cursor/templates/DESIGN-template.md +129 -129
  284. package/templates/ide/cursor/templates/TASK-SPEC-template.md +141 -141
  285. package/templates/ide/cursor/templates/TASKS-template.md +26 -26
  286. package/templates/ide/cursor/templates/TELEMETRY-template.md +125 -125
  287. package/templates/shared/docker-compose.yml +41 -41
  288. package/templates/stacks/go-gin/.dare/skills.yml +11 -11
  289. package/templates/stacks/go-gin/.env.example +24 -24
  290. package/templates/stacks/go-gin/.github/workflows/dare-ci.yml +42 -42
  291. package/templates/stacks/go-gin/README.md.tpl +38 -38
  292. package/templates/stacks/go-gin/cmd/server/main.go.tpl +78 -78
  293. package/templates/stacks/go-gin/db/migrations/0001_create_users.down.sql +2 -2
  294. package/templates/stacks/go-gin/db/migrations/0001_create_users.up.sql +12 -12
  295. package/templates/stacks/go-gin/db/queries/users.sql +23 -23
  296. package/templates/stacks/go-gin/gitignore +7 -7
  297. package/templates/stacks/go-gin/go.mod.tpl +17 -17
  298. package/templates/stacks/go-gin/internal/config/config.go +41 -41
  299. package/templates/stacks/go-gin/internal/db/postgres.go.tpl +25 -25
  300. package/templates/stacks/go-gin/internal/handler/auth_handler.go.tpl +72 -72
  301. package/templates/stacks/go-gin/internal/handler/users_handler.go.tpl +72 -72
  302. package/templates/stacks/go-gin/internal/handler/ws_handler.go +37 -37
  303. package/templates/stacks/go-gin/internal/llm/dummy.go +14 -14
  304. package/templates/stacks/go-gin/internal/llm/provider.go +8 -8
  305. package/templates/stacks/go-gin/internal/middleware/jwt.go.tpl +58 -58
  306. package/templates/stacks/go-gin/internal/middleware/rate_limit.go +55 -55
  307. package/templates/stacks/go-gin/internal/model/user.go +17 -17
  308. package/templates/stacks/go-gin/internal/repository/users_repository.go.tpl +79 -79
  309. package/templates/stacks/go-gin/internal/service/auth_service.go.tpl +55 -55
  310. package/templates/stacks/go-gin/internal/service/users_service.go.tpl +53 -53
  311. package/templates/stacks/go-gin/llms.txt.tpl +54 -54
  312. package/templates/stacks/go-gin/openapi.json.tpl +46 -46
  313. package/templates/stacks/go-gin/sqlc.yaml +14 -14
  314. package/templates/stacks/go-gin/tests/smoke_test.go.tpl +22 -22
  315. package/templates/stacks/go-stdlib/.dare/skills.yml +11 -11
  316. package/templates/stacks/go-stdlib/.env.example +24 -24
  317. package/templates/stacks/go-stdlib/.github/workflows/dare-ci.yml +42 -42
  318. package/templates/stacks/go-stdlib/README.md.tpl +41 -41
  319. package/templates/stacks/go-stdlib/cmd/server/main.go.tpl +82 -82
  320. package/templates/stacks/go-stdlib/db/migrations/0001_create_users.down.sql +2 -2
  321. package/templates/stacks/go-stdlib/db/migrations/0001_create_users.up.sql +12 -12
  322. package/templates/stacks/go-stdlib/db/queries/users.sql +23 -23
  323. package/templates/stacks/go-stdlib/gitignore +6 -6
  324. package/templates/stacks/go-stdlib/go.mod.tpl +15 -15
  325. package/templates/stacks/go-stdlib/internal/config/config.go +41 -41
  326. package/templates/stacks/go-stdlib/internal/db/postgres.go.tpl +24 -24
  327. package/templates/stacks/go-stdlib/internal/handler/auth_handler.go.tpl +71 -71
  328. package/templates/stacks/go-stdlib/internal/handler/users_handler.go.tpl +84 -84
  329. package/templates/stacks/go-stdlib/internal/handler/ws_handler.go +36 -36
  330. package/templates/stacks/go-stdlib/internal/httpx/json.go +32 -32
  331. package/templates/stacks/go-stdlib/internal/llm/dummy.go +14 -14
  332. package/templates/stacks/go-stdlib/internal/llm/provider.go +8 -8
  333. package/templates/stacks/go-stdlib/internal/middleware/chain.go +21 -21
  334. package/templates/stacks/go-stdlib/internal/middleware/cors.go +27 -27
  335. package/templates/stacks/go-stdlib/internal/middleware/jwt.go.tpl +51 -51
  336. package/templates/stacks/go-stdlib/internal/middleware/rate_limit.go +81 -81
  337. package/templates/stacks/go-stdlib/internal/model/user.go +17 -17
  338. package/templates/stacks/go-stdlib/internal/repository/users_repository.go.tpl +75 -75
  339. package/templates/stacks/go-stdlib/internal/service/auth_service.go.tpl +55 -55
  340. package/templates/stacks/go-stdlib/internal/service/users_service.go.tpl +53 -53
  341. package/templates/stacks/go-stdlib/llms.txt.tpl +60 -60
  342. package/templates/stacks/go-stdlib/openapi.json.tpl +46 -46
  343. package/templates/stacks/go-stdlib/sqlc.yaml +14 -14
  344. package/templates/stacks/go-stdlib/tests/smoke_test.go.tpl +45 -45
  345. package/templates/stacks/mcp-go/.dare/skills.yml +8 -8
  346. package/templates/stacks/mcp-go/.env.example +14 -14
  347. package/templates/stacks/mcp-go/.github/workflows/dare-ci.yml +42 -42
  348. package/templates/stacks/mcp-go/README.md.tpl +50 -50
  349. package/templates/stacks/mcp-go/cmd/server/main.go.tpl +62 -62
  350. package/templates/stacks/mcp-go/gitignore +6 -6
  351. package/templates/stacks/mcp-go/go.mod.tpl +9 -9
  352. package/templates/stacks/mcp-go/internal/prompts/summarize.go +9 -9
  353. package/templates/stacks/mcp-go/internal/server/server.go.tpl +80 -80
  354. package/templates/stacks/mcp-go/internal/tools/echo.go +15 -15
  355. package/templates/stacks/mcp-go/internal/transports/http.go.tpl +21 -21
  356. package/templates/stacks/mcp-go/internal/transports/sse.go.tpl +17 -17
  357. package/templates/stacks/mcp-go/internal/transports/stdio.go.tpl +14 -14
  358. package/templates/stacks/mcp-go/llms.txt.tpl +60 -60
  359. package/templates/stacks/mcp-go/openapi.json.tpl +31 -31
  360. package/templates/stacks/mcp-go/tests/echo_test.go.tpl +37 -37
  361. package/templates/stacks/mcp-node-ts/.dare/skills.yml +8 -8
  362. package/templates/stacks/mcp-node-ts/.env.example +16 -16
  363. package/templates/stacks/mcp-node-ts/.github/workflows/dare-ci.yml +54 -54
  364. package/templates/stacks/mcp-node-ts/README.md.hbs +49 -49
  365. package/templates/stacks/mcp-node-ts/gitignore +7 -7
  366. package/templates/stacks/mcp-node-ts/llms.txt.hbs +61 -61
  367. package/templates/stacks/mcp-node-ts/openapi.json.hbs +39 -39
  368. package/templates/stacks/mcp-node-ts/package.json.hbs +35 -35
  369. package/templates/stacks/mcp-node-ts/src/cli.ts.hbs +71 -71
  370. package/templates/stacks/mcp-node-ts/src/prompts/index.ts +36 -36
  371. package/templates/stacks/mcp-node-ts/src/server.ts.hbs +45 -45
  372. package/templates/stacks/mcp-node-ts/src/tools/echo.ts +23 -23
  373. package/templates/stacks/mcp-node-ts/src/tools/index.ts +18 -18
  374. package/templates/stacks/mcp-node-ts/src/transports/http.ts +68 -68
  375. package/templates/stacks/mcp-node-ts/src/transports/sse.ts +58 -58
  376. package/templates/stacks/mcp-node-ts/src/transports/stdio.ts +5 -5
  377. package/templates/stacks/mcp-node-ts/tests/echo.test.ts +50 -50
  378. package/templates/stacks/mcp-node-ts/tsconfig.json +17 -17
  379. package/templates/stacks/mcp-python/.dare/skills.yml +8 -8
  380. package/templates/stacks/mcp-python/.env.example +14 -14
  381. package/templates/stacks/mcp-python/.github/workflows/dare-ci.yml +42 -42
  382. package/templates/stacks/mcp-python/README.md.j2 +49 -49
  383. package/templates/stacks/mcp-python/gitignore +12 -12
  384. package/templates/stacks/mcp-python/llms.txt.j2 +56 -56
  385. package/templates/stacks/mcp-python/openapi.json.j2 +33 -33
  386. package/templates/stacks/mcp-python/pyproject.toml.j2 +37 -37
  387. package/templates/stacks/mcp-python/src/cli.py.j2 +68 -68
  388. package/templates/stacks/mcp-python/src/prompts/summarize.py +10 -10
  389. package/templates/stacks/mcp-python/src/server.py.j2 +28 -28
  390. package/templates/stacks/mcp-python/src/tools/echo.py +12 -12
  391. package/templates/stacks/mcp-python/src/transports/http.py +12 -12
  392. package/templates/stacks/mcp-python/src/transports/sse.py +13 -13
  393. package/templates/stacks/mcp-python/src/transports/stdio.py +6 -6
  394. package/templates/stacks/mcp-python/tests/test_echo.py +28 -28
  395. package/templates/stacks/mcp-rust/.dare/skills.yml +8 -8
  396. package/templates/stacks/mcp-rust/.env.example +14 -14
  397. package/templates/stacks/mcp-rust/.github/workflows/dare-ci.yml +38 -38
  398. package/templates/stacks/mcp-rust/Cargo.toml.tera +35 -35
  399. package/templates/stacks/mcp-rust/README.md.tera +50 -50
  400. package/templates/stacks/mcp-rust/gitignore +5 -5
  401. package/templates/stacks/mcp-rust/llms.txt.tera +60 -60
  402. package/templates/stacks/mcp-rust/openapi.json.tera +31 -31
  403. package/templates/stacks/mcp-rust/src/cli.rs.tera +33 -33
  404. package/templates/stacks/mcp-rust/src/lib.rs +6 -6
  405. package/templates/stacks/mcp-rust/src/main.rs.tera +30 -30
  406. package/templates/stacks/mcp-rust/src/prompts/mod.rs +1 -1
  407. package/templates/stacks/mcp-rust/src/prompts/summarize.rs +5 -5
  408. package/templates/stacks/mcp-rust/src/server.rs.tera +38 -38
  409. package/templates/stacks/mcp-rust/src/tools/echo.rs +18 -18
  410. package/templates/stacks/mcp-rust/src/tools/mod.rs +22 -22
  411. package/templates/stacks/mcp-rust/src/transports/http.rs +27 -27
  412. package/templates/stacks/mcp-rust/src/transports/mod.rs +3 -3
  413. package/templates/stacks/mcp-rust/src/transports/sse.rs +33 -33
  414. package/templates/stacks/mcp-rust/src/transports/stdio.rs +14 -14
  415. package/templates/stacks/mcp-rust/tests/echo_test.rs.tera +27 -27
  416. package/templates/stacks/node-nestjs/.dare/skills.yml +11 -11
  417. package/templates/stacks/node-nestjs/.env.example +21 -21
  418. package/templates/stacks/node-nestjs/.github/workflows/dare-ci.yml +54 -54
  419. package/templates/stacks/node-nestjs/README.md.hbs +35 -35
  420. package/templates/stacks/node-nestjs/gitignore +7 -7
  421. package/templates/stacks/node-nestjs/llms.txt.hbs +47 -47
  422. package/templates/stacks/node-nestjs/nest-cli.json +16 -16
  423. package/templates/stacks/node-nestjs/openapi.json.hbs +75 -75
  424. package/templates/stacks/node-nestjs/package.json.hbs +57 -57
  425. package/templates/stacks/node-nestjs/prisma/schema.prisma +25 -25
  426. package/templates/stacks/node-nestjs/prisma/seed.ts.hbs +25 -25
  427. package/templates/stacks/node-nestjs/src/app.module.ts +39 -39
  428. package/templates/stacks/node-nestjs/src/auth/auth.controller.ts +29 -29
  429. package/templates/stacks/node-nestjs/src/auth/auth.module.ts +25 -25
  430. package/templates/stacks/node-nestjs/src/auth/auth.service.ts +36 -36
  431. package/templates/stacks/node-nestjs/src/auth/dto/login-response.dto.ts +9 -9
  432. package/templates/stacks/node-nestjs/src/auth/dto/login.dto.ts +17 -17
  433. package/templates/stacks/node-nestjs/src/auth/jwt.strategy.ts +25 -25
  434. package/templates/stacks/node-nestjs/src/common/filters/problem-details.filter.ts +38 -38
  435. package/templates/stacks/node-nestjs/src/common/interceptors/json-response.interceptor.ts +13 -13
  436. package/templates/stacks/node-nestjs/src/main.ts.hbs +44 -44
  437. package/templates/stacks/node-nestjs/src/prisma/prisma.module.ts +9 -9
  438. package/templates/stacks/node-nestjs/src/prisma/prisma.service.ts +9 -9
  439. package/templates/stacks/node-nestjs/src/users/dto/create-user.dto.ts +22 -22
  440. package/templates/stacks/node-nestjs/src/users/dto/user.dto.ts +15 -15
  441. package/templates/stacks/node-nestjs/src/users/users.controller.ts +41 -41
  442. package/templates/stacks/node-nestjs/src/users/users.module.ts +11 -11
  443. package/templates/stacks/node-nestjs/src/users/users.repository.ts +38 -38
  444. package/templates/stacks/node-nestjs/src/users/users.service.ts +38 -38
  445. package/templates/stacks/node-nestjs/tsconfig.build.json +4 -4
  446. package/templates/stacks/node-nestjs/tsconfig.json +28 -28
  447. package/templates/stacks/php-laravel/.dare/skills.yml +11 -11
  448. package/templates/stacks/php-laravel/.env.example +41 -41
  449. package/templates/stacks/php-laravel/.github/workflows/dare-ci.yml +43 -43
  450. package/templates/stacks/php-laravel/README.md.hbs +36 -36
  451. package/templates/stacks/php-laravel/app/Http/Controllers/Api/AuthController.php +36 -36
  452. package/templates/stacks/php-laravel/app/Http/Controllers/Api/UsersController.php +33 -33
  453. package/templates/stacks/php-laravel/app/Http/Requests/CreateUserRequest.php +26 -26
  454. package/templates/stacks/php-laravel/app/Http/Requests/LoginRequest.php +34 -34
  455. package/templates/stacks/php-laravel/app/Llm/Contracts/LlmProvider.php +12 -12
  456. package/templates/stacks/php-laravel/app/Llm/Providers/DummyProvider.php +13 -13
  457. package/templates/stacks/php-laravel/app/Llm/Providers/OpenAiProvider.php +33 -33
  458. package/templates/stacks/php-laravel/app/Models/User.php +44 -44
  459. package/templates/stacks/php-laravel/app/Repositories/UsersRepository.php +32 -32
  460. package/templates/stacks/php-laravel/app/Services/AuthService.php +37 -37
  461. package/templates/stacks/php-laravel/app/Services/UsersService.php +57 -57
  462. package/templates/stacks/php-laravel/artisan +12 -12
  463. package/templates/stacks/php-laravel/bootstrap/app.php +29 -29
  464. package/templates/stacks/php-laravel/bootstrap/providers.php +5 -5
  465. package/templates/stacks/php-laravel/composer.json.hbs +58 -58
  466. package/templates/stacks/php-laravel/config/l5-swagger.php +41 -41
  467. package/templates/stacks/php-laravel/config/reverb.php +34 -34
  468. package/templates/stacks/php-laravel/config/sanctum.php +15 -15
  469. package/templates/stacks/php-laravel/database/migrations/2026_06_01_000001_create_users_table.php +27 -27
  470. package/templates/stacks/php-laravel/database/seeders/DatabaseSeeder.php +21 -21
  471. package/templates/stacks/php-laravel/gitignore +23 -23
  472. package/templates/stacks/php-laravel/llms.txt.hbs +53 -53
  473. package/templates/stacks/php-laravel/openapi.json.hbs +43 -43
  474. package/templates/stacks/php-laravel/phpstan.neon +9 -9
  475. package/templates/stacks/php-laravel/routes/api.php +13 -13
  476. package/templates/stacks/php-laravel/routes/channels.php +7 -7
  477. package/templates/stacks/php-laravel/tests/Feature/AuthTest.php +35 -35
  478. package/templates/stacks/php-laravel/tests/Feature/UsersTest.php +30 -30
  479. package/templates/stacks/php-laravel/tests/Pest.php +5 -5
  480. package/templates/stacks/python-fastapi/.dare/skills.yml +11 -11
  481. package/templates/stacks/python-fastapi/.env.example +21 -21
  482. package/templates/stacks/python-fastapi/.github/workflows/dare-ci.yml +43 -43
  483. package/templates/stacks/python-fastapi/README.md.j2 +35 -35
  484. package/templates/stacks/python-fastapi/alembic/env.py +46 -46
  485. package/templates/stacks/python-fastapi/alembic/script.py.mako +26 -26
  486. package/templates/stacks/python-fastapi/alembic/versions/0001_create_users.py.j2 +37 -37
  487. package/templates/stacks/python-fastapi/alembic.ini.j2 +39 -39
  488. package/templates/stacks/python-fastapi/app/core/config.py +24 -24
  489. package/templates/stacks/python-fastapi/app/core/security.py +34 -34
  490. package/templates/stacks/python-fastapi/app/db/session.py +22 -22
  491. package/templates/stacks/python-fastapi/app/main.py.j2 +36 -36
  492. package/templates/stacks/python-fastapi/app/models/__init__.py +3 -3
  493. package/templates/stacks/python-fastapi/app/models/user.py +30 -30
  494. package/templates/stacks/python-fastapi/app/repositories/user_repository.py +34 -34
  495. package/templates/stacks/python-fastapi/app/routers/auth.py +37 -37
  496. package/templates/stacks/python-fastapi/app/routers/users.py +46 -46
  497. package/templates/stacks/python-fastapi/app/schemas/user.py +56 -56
  498. package/templates/stacks/python-fastapi/app/services/auth_service.py +22 -22
  499. package/templates/stacks/python-fastapi/app/services/user_service.py +31 -31
  500. package/templates/stacks/python-fastapi/gitignore +12 -12
  501. package/templates/stacks/python-fastapi/llms.txt.j2 +53 -53
  502. package/templates/stacks/python-fastapi/openapi.json.j2 +43 -43
  503. package/templates/stacks/python-fastapi/pyproject.toml.j2 +45 -45
  504. package/templates/stacks/python-fastapi/tests/test_auth.py +22 -22
  505. package/templates/stacks/ruby-rails-8/.dare/skills.yml +50 -50
  506. package/templates/stacks/ruby-rails-8/.env.example +20 -20
  507. package/templates/stacks/ruby-rails-8/.github/workflows/dare-ci.yml +112 -112
  508. package/templates/stacks/ruby-rails-8/Gemfile.erb +61 -61
  509. package/templates/stacks/ruby-rails-8/app/channels/application_cable/channel.rb +11 -11
  510. package/templates/stacks/ruby-rails-8/app/channels/application_cable/connection.rb +34 -34
  511. package/templates/stacks/ruby-rails-8/app/channels/dare_updates_channel.rb +18 -18
  512. package/templates/stacks/ruby-rails-8/app/channels/user_updates_channel.rb +23 -23
  513. package/templates/stacks/ruby-rails-8/app/controllers/application_controller.rb +44 -44
  514. package/templates/stacks/ruby-rails-8/app/controllers/concerns/problem_details.rb +93 -93
  515. package/templates/stacks/ruby-rails-8/app/handlers/summarize_handler.rb +33 -33
  516. package/templates/stacks/ruby-rails-8/app/handlers/users_handler.rb +68 -68
  517. package/templates/stacks/ruby-rails-8/app/llm/cache/llm_cache.rb +44 -44
  518. package/templates/stacks/ruby-rails-8/app/llm/prompts/prompt_loader.rb +54 -54
  519. package/templates/stacks/ruby-rails-8/app/llm/prompts/summarize_v1.jinja2 +12 -12
  520. package/templates/stacks/ruby-rails-8/app/llm/providers/dummy_provider.rb +35 -35
  521. package/templates/stacks/ruby-rails-8/app/llm/providers/llm_provider.rb +67 -67
  522. package/templates/stacks/ruby-rails-8/app/llm/providers/openai_provider.rb +62 -62
  523. package/templates/stacks/ruby-rails-8/app/llm/rate_limit/token_bucket.rb +82 -82
  524. package/templates/stacks/ruby-rails-8/app/llm/validators/summarize_output_schema.json +21 -21
  525. package/templates/stacks/ruby-rails-8/app/llm/validators/validator.rb +52 -52
  526. package/templates/stacks/ruby-rails-8/app/models/user.rb +36 -36
  527. package/templates/stacks/ruby-rails-8/app/presenters/user_presenter.rb +48 -48
  528. package/templates/stacks/ruby-rails-8/app/repositories/document_repository.rb +57 -57
  529. package/templates/stacks/ruby-rails-8/app/repositories/user_repository.rb +73 -73
  530. package/templates/stacks/ruby-rails-8/app/services/create_user_service.rb +67 -67
  531. package/templates/stacks/ruby-rails-8/app/services/realtime_service.rb +53 -53
  532. package/templates/stacks/ruby-rails-8/app/services/summarize_document_service.rb +57 -57
  533. package/templates/stacks/ruby-rails-8/config/dare.yml +42 -42
  534. package/templates/stacks/ruby-rails-8/config/initializers/dare.rb +31 -31
  535. package/templates/stacks/ruby-rails-8/config/initializers/rack_attack.rb +64 -64
  536. package/templates/stacks/ruby-rails-8/config/initializers/rswag_api.rb +12 -12
  537. package/templates/stacks/ruby-rails-8/lib/tasks/dare.rake +159 -159
  538. package/templates/stacks/ruby-rails-8/llms.txt.erb +69 -69
  539. package/templates/stacks/ruby-rails-8/spec/api/summarize_spec.rb +56 -56
  540. package/templates/stacks/ruby-rails-8/spec/api/users_spec.rb +72 -72
  541. package/templates/stacks/ruby-rails-8/spec/channels/dare_updates_channel_spec.rb +61 -61
  542. package/templates/stacks/ruby-rails-8/spec/channels/user_updates_channel_spec.rb +56 -56
  543. package/templates/stacks/ruby-rails-8/spec/factories/users.rb +27 -27
  544. package/templates/stacks/ruby-rails-8/spec/handlers/users_handler_spec.rb +88 -88
  545. package/templates/stacks/ruby-rails-8/spec/rails_helper.rb +31 -31
  546. package/templates/stacks/ruby-rails-8/spec/services/create_user_service_spec.rb +88 -88
  547. package/templates/stacks/ruby-rails-8/spec/services/summarize_document_service_spec.rb +142 -142
  548. package/templates/stacks/ruby-rails-8/spec/swagger_helper.rb +73 -73
  549. package/templates/stacks/rust-axum/.dare/skills.yml +11 -11
  550. package/templates/stacks/rust-axum/.env.example +26 -26
  551. package/templates/stacks/rust-axum/.github/workflows/dare-ci.yml +40 -40
  552. package/templates/stacks/rust-axum/Cargo.toml.tera +53 -53
  553. package/templates/stacks/rust-axum/README.md.tera +37 -37
  554. package/templates/stacks/rust-axum/gitignore +5 -5
  555. package/templates/stacks/rust-axum/llms.txt.tera +54 -54
  556. package/templates/stacks/rust-axum/migrations/0001_create_users.sql +13 -13
  557. package/templates/stacks/rust-axum/openapi.json.tera +46 -46
  558. package/templates/stacks/rust-axum/src/config.rs +45 -45
  559. package/templates/stacks/rust-axum/src/errors.rs +48 -48
  560. package/templates/stacks/rust-axum/src/handlers/auth.rs +48 -48
  561. package/templates/stacks/rust-axum/src/handlers/mod.rs +3 -3
  562. package/templates/stacks/rust-axum/src/handlers/users.rs +81 -81
  563. package/templates/stacks/rust-axum/src/handlers/ws.rs +24 -24
  564. package/templates/stacks/rust-axum/src/lib.rs +19 -19
  565. package/templates/stacks/rust-axum/src/llm/mod.rs +1 -1
  566. package/templates/stacks/rust-axum/src/llm/provider.rs +48 -48
  567. package/templates/stacks/rust-axum/src/main.rs.tera +64 -64
  568. package/templates/stacks/rust-axum/src/middleware/auth.rs +20 -20
  569. package/templates/stacks/rust-axum/src/middleware/mod.rs +2 -2
  570. package/templates/stacks/rust-axum/src/middleware/rate_limit.rs +27 -27
  571. package/templates/stacks/rust-axum/src/models/mod.rs +1 -1
  572. package/templates/stacks/rust-axum/src/models/user.rs +13 -13
  573. package/templates/stacks/rust-axum/src/repositories/mod.rs +1 -1
  574. package/templates/stacks/rust-axum/src/repositories/user_repository.rs +62 -62
  575. package/templates/stacks/rust-axum/src/services/auth_service.rs +50 -50
  576. package/templates/stacks/rust-axum/src/services/mod.rs +2 -2
  577. package/templates/stacks/rust-axum/src/services/user_service.rs +53 -53
  578. package/templates/stacks/rust-axum/tests/integration_test.rs.tera +13 -13
  579. package/dist/commands/new.d.ts +0 -16
  580. package/dist/commands/new.d.ts.map +0 -1
  581. package/dist/commands/new.js +0 -104
  582. package/dist/commands/new.js.map +0 -1
@@ -1,245 +1,245 @@
1
- ---
2
- description: Diretrizes de Segurança — OWASP Top 10, Supply Chain, Segredos e Dependências Vulneráveis para todas as fases do DARE
3
- globs: *.md, *.php, *.py, *.go, *.vue, *.js, *.ts, *.rs, *.toml, *.yaml, *.yml
4
- ---
5
-
6
- # Diretrizes de Segurança DARE
7
-
8
- Você é um Especialista em AppSec. Garanta que **Design → Blueprint → Tasks → Execução** sigam rigorosamente as práticas a seguir.
9
-
10
- ---
11
-
12
- ## Aplicação nas Fases do DARE
13
-
14
- ### Fase 1 — Design (`/generate-design` / `/dare-design`)
15
-
16
- - **Requisitos de segurança obrigatórios** (seção RS-*):
17
- - RS-01: validação de entrada (OWASP A03)
18
- - RS-02: hash de senhas / proteção de dados sensíveis (OWASP A02)
19
- - RS-03: controle de acesso por recurso (OWASP A01)
20
- - RS-04: auditoria de dependências sem CVE HIGH/CRITICAL (OWASP A06)
21
- - RS-05: secrets via variáveis de ambiente — nunca em código
22
- - Identifique vetores de ataque na ideia inicial e adicione mitigações em **Riscos**
23
-
24
- ### Fase 2 — Architect (`/generate-blueprint` / `/dare-blueprint`)
25
-
26
- - Endpoints da API: inclua coluna `Auth` (JWT/apiKey/público) e middleware de rate limiting
27
- - Modelo de dados: marque campos sensíveis (PII, tokens, hashes) e como são protegidos
28
- - Fases do plano: inclua **Fase N-1 = Auditoria de Segurança e Dependências** com critério de DONE explícito
29
- - Validation gates por stack devem incluir o comando de auditoria de dependências
30
-
31
- ### Fase 3 — Tasks (`/generate-tasks`)
32
-
33
- - Toda task que adiciona dependência externa → validation gate inclui `npm audit` / `cargo audit` / `pip-audit` / `composer audit`
34
- - Crie task dedicada para: headers de segurança HTTP, rate limiting, scan de secrets
35
- - Seção "Considerações de Segurança" obrigatória em cada `EXECUTION/task-*.md`
36
-
37
- ### Fase 4 — Execute (`/execute-task`)
38
-
39
- Aplique as proteções abaixo ao implementar qualquer código.
40
-
41
- ---
42
-
43
- ## OWASP Top 10 — Implementação
44
-
45
- ### A01 — Broken Access Control
46
-
47
- - Verifique permissão no **recurso**, não só na rota: `user.can('update', post)` / `authorize('update', $post)` / `check_permission(user, resource)`
48
- - Princípio do menor privilégio: tokens têm escopos mínimos necessários
49
- - Nunca exponha IDs sequenciais em URLs para recursos privados — use UUID ou ULID
50
- - Multi-tenant: **sempre** filtre por `tenant_id` / `org_id` em toda query
51
-
52
- ```ts
53
- // ✅ certo — verifica ownership antes de retornar
54
- const post = await db.post.findFirst({ where: { id, authorId: session.userId } });
55
- if (!post) throw new ForbiddenError();
56
-
57
- // ❌ errado — qualquer usuário autenticado acessa qualquer post
58
- const post = await db.post.findUnique({ where: { id } });
59
- ```
60
-
61
- ### A02 — Cryptographic Failures
62
-
63
- - Senhas: **Argon2id** (preferido) ou Bcrypt (min cost 12) — nunca MD5/SHA1/SHA256 para senhas
64
- - Dados sensíveis em repouso: criptografar PII com AES-256-GCM
65
- - Dados em trânsito: HTTPS obrigatório; HSTS header em produção
66
- - Nunca logue senha, token, chave de API, número de cartão, CPF completo
67
- - JWT: assine com RS256 (chave assimétrica) para tokens públicos; HS256 + segredo forte (≥ 256 bits) para internos
68
-
69
- ```rust
70
- // ✅ Rust — Argon2 via argon2 crate
71
- use argon2::{Argon2, PasswordHash, PasswordHasher, PasswordVerifier};
72
- let hash = Argon2::default().hash_password(password.as_bytes(), &salt)?;
73
- ```
74
-
75
- ### A03 — Injection
76
-
77
- **SQL Injection:**
78
- ```python
79
- # ✅ SQLAlchemy — parametrizado
80
- result = db.execute(select(User).where(User.email == email))
81
-
82
- # ❌ nunca
83
- db.execute(f"SELECT * FROM users WHERE email = '{email}'")
84
- ```
85
-
86
- **Command Injection:**
87
- ```go
88
- // ✅ Go — lista de args, não shell string
89
- cmd := exec.Command("convert", inputFile, outputFile)
90
-
91
- // ❌ nunca
92
- exec.Command("sh", "-c", "convert "+userInput)
93
- ```
94
-
95
- **XSS:** escape de saída no frontend; `Content-Security-Policy` no backend; evite `innerHTML` / `dangerouslySetInnerHTML` com dados do usuário.
96
-
97
- **Prompt Injection (IA):** se o projeto processa entradas de usuários em prompts LLM:
98
- - Separe instrução do sistema e dados do usuário por delimitadores claros
99
- - Valide e sanitize a entrada antes de inserir no prompt
100
- - Nunca confie em output do LLM como código a ser executado sem sandboxing
101
-
102
- ### A04 — Insecure Design
103
-
104
- - Valide **no servidor** sempre, mesmo que o frontend já valide
105
- - Allowlists > blocklists para validação de campos, tipos de arquivo, domínios
106
- - Implemente rate limiting antes de qualquer lógica de negócio em endpoints públicos
107
-
108
- ### A05 — Security Misconfiguration
109
-
110
- - Stack traces e erros detalhados: **apenas em desenvolvimento** — produção retorna mensagem genérica
111
- - Headers de segurança obrigatórios em produção:
112
- ```
113
- Strict-Transport-Security: max-age=31536000; includeSubDomains
114
- X-Frame-Options: DENY
115
- X-Content-Type-Options: nosniff
116
- Content-Security-Policy: default-src 'self'
117
- Referrer-Policy: strict-origin-when-cross-origin
118
- Permissions-Policy: camera=(), microphone=(), geolocation=()
119
- ```
120
- - CORS: nunca `Access-Control-Allow-Origin: *` para endpoints autenticados
121
- - Desabilite métodos HTTP desnecessários (TRACE, OPTIONS em APIs simples)
122
-
123
- ### A06 — Vulnerable and Outdated Components ← **crítico para Ralph Loop**
124
-
125
- **Comandos de auditoria por stack:**
126
-
127
- ```bash
128
- # Node.js / npm — rodar antes de todo commit com novas deps
129
- npm audit --audit-level=high
130
- npm audit fix # corrige automaticamente quando possível
131
-
132
- # Rust / Cargo
133
- cargo install cargo-audit # uma vez
134
- cargo audit # detecta CVEs no RustSec Advisory DB
135
- cargo update # bumpa versões compatíveis
136
-
137
- # Python
138
- pip install pip-audit
139
- pip-audit # CVEs via OSV + PyPI
140
- pip-audit --fix # auto-fix quando possível
141
-
142
- # PHP / Composer
143
- composer audit # nativo desde Composer 2.4
144
- composer update --with-all-dependencies [pacote] # fix pontual
145
-
146
- # Go
147
- go list -json -m all | nancy sleuth # ou govulncheck
148
- govulncheck ./... # ferramenta oficial Google
149
-
150
- # Docker images
151
- docker scout cves [imagem] # se Docker Scout disponível
152
- ```
153
-
154
- **Critério inegociável:** nenhuma dependência com CVE de nível **HIGH** ou **CRITICAL** pode entrar em produção sem justificativa documentada e plano de upgrade.
155
-
156
- ### A07 — Authentication Failures
157
-
158
- - Rate limiting no endpoint de login: máx 5 tentativas / 15 min por IP + por usuário
159
- - Tokens JWT: `exp` máx 15 min para access token; refresh token com rotação
160
- - Logout: invalide refresh token no servidor (não confie só no lado cliente)
161
- - Senhas: mínimo 12 caracteres; bloquear senhas da lista HaveIBeenPwned
162
- - MFA: ofereça TOTP (RFC 6238) para contas com acesso a dados sensíveis
163
-
164
- ### A08 — Software and Data Integrity
165
-
166
- - Valide assinatura / checksum de artefatos externos antes de usar
167
- - Nunca confie em dados enviados pelo cliente para decisões de autorização
168
- - CI/CD: pins de versão em actions (`actions/checkout@v4` não `@main`)
169
- - Lockfiles (`package-lock.json`, `Cargo.lock`, `poetry.lock`) devem ser commitados
170
-
171
- ### A09 — Security Logging and Monitoring
172
-
173
- Logue (estruturado JSON, sem dados sensíveis):
174
- - Autenticação: login OK/FAIL, logout, refresh, MFA challenge
175
- - Autorização: acesso negado (403) com recurso e userId
176
- - Erros 5xx em produção com trace-id (sem stack trace completo)
177
- - Operações destrutivas: delete, disable, role change
178
-
179
- Nunca logue: senhas, tokens, chaves de API, números de cartão, CPF/SSN completo.
180
-
181
- ### A10 — SSRF
182
-
183
- - Se a aplicação faz requisições para URLs fornecidas pelo usuário:
184
- - Valide contra allowlist de domínios
185
- - Bloqueie IPs privados (`127.x`, `10.x`, `172.16-31.x`, `192.168.x`, `169.254.x`)
186
- - Bloqueie acesso a metadados de cloud (`169.254.169.254`)
187
- - Use timeout agressivo (máx 5s) e sem redirects automáticos
188
-
189
- ---
190
-
191
- ## Segredos e Supply Chain
192
-
193
- ### Nunca em código
194
-
195
- ```bash
196
- # Padrões proibidos em commits — configure pre-commit hook ou git-secrets:
197
- password = "..."
198
- api_key = "..."
199
- secret_key = "..."
200
- AWS_SECRET_ACCESS_KEY = "..."
201
- DATABASE_URL = "postgres://user:password@..."
202
- ```
203
-
204
- ### Gestão de segredos
205
-
206
- - Desenvolvimento: arquivo `.env` (no `.gitignore`) com `.env.example` sem valores reais
207
- - CI/CD: variáveis de ambiente ou secrets do pipeline (GitHub Actions Secrets, etc.)
208
- - Produção: vault (HashiCorp Vault, AWS Secrets Manager, GCP Secret Manager)
209
- - Rotação: tokens de serviço rotacionados a cada 90 dias
210
-
211
- ### Verificação pre-commit (recomendado)
212
-
213
- ```bash
214
- # Instalar detect-secrets
215
- pip install detect-secrets
216
- detect-secrets scan > .secrets.baseline
217
- detect-secrets audit .secrets.baseline
218
-
219
- # Ou git-secrets
220
- git secrets --install
221
- git secrets --register-aws
222
- ```
223
-
224
- ---
225
-
226
- ## Validation Gates de Segurança no Ralph Loop
227
-
228
- Adicione ao ciclo de cada task que mexe em dependências ou configuração:
229
-
230
- ```bash
231
- # 1. Auditoria de dependências (obrigatório se houve mudança em deps)
232
- npm audit --audit-level=high # Node
233
- cargo audit # Rust
234
- pip-audit # Python
235
- composer audit # PHP
236
-
237
- # 2. Scan de secrets (obrigatório em tasks de config/infra/CI)
238
- detect-secrets scan --baseline .secrets.baseline
239
-
240
- # 3. Headers de segurança (para tasks de configuração de servidor)
241
- # Verificar manualmente ou com curl:
242
- curl -I https://staging.example.com | grep -E "Strict-Transport|X-Frame|X-Content|Content-Security"
243
- ```
244
-
245
- > **Gate obrigatório:** CVE HIGH/CRITICAL nas dependências = task **FAILED** até corrigi-las.
1
+ ---
2
+ description: Diretrizes de Segurança — OWASP Top 10, Supply Chain, Segredos e Dependências Vulneráveis para todas as fases do DARE
3
+ globs: *.md, *.php, *.py, *.go, *.vue, *.js, *.ts, *.rs, *.toml, *.yaml, *.yml
4
+ ---
5
+
6
+ # Diretrizes de Segurança DARE
7
+
8
+ Você é um Especialista em AppSec. Garanta que **Design → Blueprint → Tasks → Execução** sigam rigorosamente as práticas a seguir.
9
+
10
+ ---
11
+
12
+ ## Aplicação nas Fases do DARE
13
+
14
+ ### Fase 1 — Design (`/generate-design` / `/dare-design`)
15
+
16
+ - **Requisitos de segurança obrigatórios** (seção RS-*):
17
+ - RS-01: validação de entrada (OWASP A03)
18
+ - RS-02: hash de senhas / proteção de dados sensíveis (OWASP A02)
19
+ - RS-03: controle de acesso por recurso (OWASP A01)
20
+ - RS-04: auditoria de dependências sem CVE HIGH/CRITICAL (OWASP A06)
21
+ - RS-05: secrets via variáveis de ambiente — nunca em código
22
+ - Identifique vetores de ataque na ideia inicial e adicione mitigações em **Riscos**
23
+
24
+ ### Fase 2 — Architect (`/generate-blueprint` / `/dare-blueprint`)
25
+
26
+ - Endpoints da API: inclua coluna `Auth` (JWT/apiKey/público) e middleware de rate limiting
27
+ - Modelo de dados: marque campos sensíveis (PII, tokens, hashes) e como são protegidos
28
+ - Fases do plano: inclua **Fase N-1 = Auditoria de Segurança e Dependências** com critério de DONE explícito
29
+ - Validation gates por stack devem incluir o comando de auditoria de dependências
30
+
31
+ ### Fase 3 — Tasks (`/generate-tasks`)
32
+
33
+ - Toda task que adiciona dependência externa → validation gate inclui `npm audit` / `cargo audit` / `pip-audit` / `composer audit`
34
+ - Crie task dedicada para: headers de segurança HTTP, rate limiting, scan de secrets
35
+ - Seção "Considerações de Segurança" obrigatória em cada `EXECUTION/task-*.md`
36
+
37
+ ### Fase 4 — Execute (`/execute-task`)
38
+
39
+ Aplique as proteções abaixo ao implementar qualquer código.
40
+
41
+ ---
42
+
43
+ ## OWASP Top 10 — Implementação
44
+
45
+ ### A01 — Broken Access Control
46
+
47
+ - Verifique permissão no **recurso**, não só na rota: `user.can('update', post)` / `authorize('update', $post)` / `check_permission(user, resource)`
48
+ - Princípio do menor privilégio: tokens têm escopos mínimos necessários
49
+ - Nunca exponha IDs sequenciais em URLs para recursos privados — use UUID ou ULID
50
+ - Multi-tenant: **sempre** filtre por `tenant_id` / `org_id` em toda query
51
+
52
+ ```ts
53
+ // ✅ certo — verifica ownership antes de retornar
54
+ const post = await db.post.findFirst({ where: { id, authorId: session.userId } });
55
+ if (!post) throw new ForbiddenError();
56
+
57
+ // ❌ errado — qualquer usuário autenticado acessa qualquer post
58
+ const post = await db.post.findUnique({ where: { id } });
59
+ ```
60
+
61
+ ### A02 — Cryptographic Failures
62
+
63
+ - Senhas: **Argon2id** (preferido) ou Bcrypt (min cost 12) — nunca MD5/SHA1/SHA256 para senhas
64
+ - Dados sensíveis em repouso: criptografar PII com AES-256-GCM
65
+ - Dados em trânsito: HTTPS obrigatório; HSTS header em produção
66
+ - Nunca logue senha, token, chave de API, número de cartão, CPF completo
67
+ - JWT: assine com RS256 (chave assimétrica) para tokens públicos; HS256 + segredo forte (≥ 256 bits) para internos
68
+
69
+ ```rust
70
+ // ✅ Rust — Argon2 via argon2 crate
71
+ use argon2::{Argon2, PasswordHash, PasswordHasher, PasswordVerifier};
72
+ let hash = Argon2::default().hash_password(password.as_bytes(), &salt)?;
73
+ ```
74
+
75
+ ### A03 — Injection
76
+
77
+ **SQL Injection:**
78
+ ```python
79
+ # ✅ SQLAlchemy — parametrizado
80
+ result = db.execute(select(User).where(User.email == email))
81
+
82
+ # ❌ nunca
83
+ db.execute(f"SELECT * FROM users WHERE email = '{email}'")
84
+ ```
85
+
86
+ **Command Injection:**
87
+ ```go
88
+ // ✅ Go — lista de args, não shell string
89
+ cmd := exec.Command("convert", inputFile, outputFile)
90
+
91
+ // ❌ nunca
92
+ exec.Command("sh", "-c", "convert "+userInput)
93
+ ```
94
+
95
+ **XSS:** escape de saída no frontend; `Content-Security-Policy` no backend; evite `innerHTML` / `dangerouslySetInnerHTML` com dados do usuário.
96
+
97
+ **Prompt Injection (IA):** se o projeto processa entradas de usuários em prompts LLM:
98
+ - Separe instrução do sistema e dados do usuário por delimitadores claros
99
+ - Valide e sanitize a entrada antes de inserir no prompt
100
+ - Nunca confie em output do LLM como código a ser executado sem sandboxing
101
+
102
+ ### A04 — Insecure Design
103
+
104
+ - Valide **no servidor** sempre, mesmo que o frontend já valide
105
+ - Allowlists > blocklists para validação de campos, tipos de arquivo, domínios
106
+ - Implemente rate limiting antes de qualquer lógica de negócio em endpoints públicos
107
+
108
+ ### A05 — Security Misconfiguration
109
+
110
+ - Stack traces e erros detalhados: **apenas em desenvolvimento** — produção retorna mensagem genérica
111
+ - Headers de segurança obrigatórios em produção:
112
+ ```
113
+ Strict-Transport-Security: max-age=31536000; includeSubDomains
114
+ X-Frame-Options: DENY
115
+ X-Content-Type-Options: nosniff
116
+ Content-Security-Policy: default-src 'self'
117
+ Referrer-Policy: strict-origin-when-cross-origin
118
+ Permissions-Policy: camera=(), microphone=(), geolocation=()
119
+ ```
120
+ - CORS: nunca `Access-Control-Allow-Origin: *` para endpoints autenticados
121
+ - Desabilite métodos HTTP desnecessários (TRACE, OPTIONS em APIs simples)
122
+
123
+ ### A06 — Vulnerable and Outdated Components ← **crítico para Ralph Loop**
124
+
125
+ **Comandos de auditoria por stack:**
126
+
127
+ ```bash
128
+ # Node.js / npm — rodar antes de todo commit com novas deps
129
+ npm audit --audit-level=high
130
+ npm audit fix # corrige automaticamente quando possível
131
+
132
+ # Rust / Cargo
133
+ cargo install cargo-audit # uma vez
134
+ cargo audit # detecta CVEs no RustSec Advisory DB
135
+ cargo update # bumpa versões compatíveis
136
+
137
+ # Python
138
+ pip install pip-audit
139
+ pip-audit # CVEs via OSV + PyPI
140
+ pip-audit --fix # auto-fix quando possível
141
+
142
+ # PHP / Composer
143
+ composer audit # nativo desde Composer 2.4
144
+ composer update --with-all-dependencies [pacote] # fix pontual
145
+
146
+ # Go
147
+ go list -json -m all | nancy sleuth # ou govulncheck
148
+ govulncheck ./... # ferramenta oficial Google
149
+
150
+ # Docker images
151
+ docker scout cves [imagem] # se Docker Scout disponível
152
+ ```
153
+
154
+ **Critério inegociável:** nenhuma dependência com CVE de nível **HIGH** ou **CRITICAL** pode entrar em produção sem justificativa documentada e plano de upgrade.
155
+
156
+ ### A07 — Authentication Failures
157
+
158
+ - Rate limiting no endpoint de login: máx 5 tentativas / 15 min por IP + por usuário
159
+ - Tokens JWT: `exp` máx 15 min para access token; refresh token com rotação
160
+ - Logout: invalide refresh token no servidor (não confie só no lado cliente)
161
+ - Senhas: mínimo 12 caracteres; bloquear senhas da lista HaveIBeenPwned
162
+ - MFA: ofereça TOTP (RFC 6238) para contas com acesso a dados sensíveis
163
+
164
+ ### A08 — Software and Data Integrity
165
+
166
+ - Valide assinatura / checksum de artefatos externos antes de usar
167
+ - Nunca confie em dados enviados pelo cliente para decisões de autorização
168
+ - CI/CD: pins de versão em actions (`actions/checkout@v4` não `@main`)
169
+ - Lockfiles (`package-lock.json`, `Cargo.lock`, `poetry.lock`) devem ser commitados
170
+
171
+ ### A09 — Security Logging and Monitoring
172
+
173
+ Logue (estruturado JSON, sem dados sensíveis):
174
+ - Autenticação: login OK/FAIL, logout, refresh, MFA challenge
175
+ - Autorização: acesso negado (403) com recurso e userId
176
+ - Erros 5xx em produção com trace-id (sem stack trace completo)
177
+ - Operações destrutivas: delete, disable, role change
178
+
179
+ Nunca logue: senhas, tokens, chaves de API, números de cartão, CPF/SSN completo.
180
+
181
+ ### A10 — SSRF
182
+
183
+ - Se a aplicação faz requisições para URLs fornecidas pelo usuário:
184
+ - Valide contra allowlist de domínios
185
+ - Bloqueie IPs privados (`127.x`, `10.x`, `172.16-31.x`, `192.168.x`, `169.254.x`)
186
+ - Bloqueie acesso a metadados de cloud (`169.254.169.254`)
187
+ - Use timeout agressivo (máx 5s) e sem redirects automáticos
188
+
189
+ ---
190
+
191
+ ## Segredos e Supply Chain
192
+
193
+ ### Nunca em código
194
+
195
+ ```bash
196
+ # Padrões proibidos em commits — configure pre-commit hook ou git-secrets:
197
+ password = "..."
198
+ api_key = "..."
199
+ secret_key = "..."
200
+ AWS_SECRET_ACCESS_KEY = "..."
201
+ DATABASE_URL = "postgres://user:password@..."
202
+ ```
203
+
204
+ ### Gestão de segredos
205
+
206
+ - Desenvolvimento: arquivo `.env` (no `.gitignore`) com `.env.example` sem valores reais
207
+ - CI/CD: variáveis de ambiente ou secrets do pipeline (GitHub Actions Secrets, etc.)
208
+ - Produção: vault (HashiCorp Vault, AWS Secrets Manager, GCP Secret Manager)
209
+ - Rotação: tokens de serviço rotacionados a cada 90 dias
210
+
211
+ ### Verificação pre-commit (recomendado)
212
+
213
+ ```bash
214
+ # Instalar detect-secrets
215
+ pip install detect-secrets
216
+ detect-secrets scan > .secrets.baseline
217
+ detect-secrets audit .secrets.baseline
218
+
219
+ # Ou git-secrets
220
+ git secrets --install
221
+ git secrets --register-aws
222
+ ```
223
+
224
+ ---
225
+
226
+ ## Validation Gates de Segurança no Ralph Loop
227
+
228
+ Adicione ao ciclo de cada task que mexe em dependências ou configuração:
229
+
230
+ ```bash
231
+ # 1. Auditoria de dependências (obrigatório se houve mudança em deps)
232
+ npm audit --audit-level=high # Node
233
+ cargo audit # Rust
234
+ pip-audit # Python
235
+ composer audit # PHP
236
+
237
+ # 2. Scan de secrets (obrigatório em tasks de config/infra/CI)
238
+ detect-secrets scan --baseline .secrets.baseline
239
+
240
+ # 3. Headers de segurança (para tasks de configuração de servidor)
241
+ # Verificar manualmente ou com curl:
242
+ curl -I https://staging.example.com | grep -E "Strict-Transport|X-Frame|X-Content|Content-Security"
243
+ ```
244
+
245
+ > **Gate obrigatório:** CVE HIGH/CRITICAL nas dependências = task **FAILED** até corrigi-las.