@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,5 +1,5 @@
1
- /target
2
- .env
3
- .env.local
4
- *.log
5
- .DS_Store
1
+ /target
2
+ .env
3
+ .env.local
4
+ *.log
5
+ .DS_Store
@@ -1,60 +1,60 @@
1
- # {{ projectName }}
2
-
3
- DARE-shaped MCP server (Rust, rmcp SDK). Default transport: **{{ defaultTransport }}**. BETA.
4
-
5
- ## Setup
6
-
7
- ```bash
8
- cp .env.example .env
9
- cargo build
10
- cargo run
11
- ```
12
-
13
- ## Commands
14
-
15
- - `cargo run` — start server (transport via --transport or MCP_TRANSPORT env)
16
- - `cargo test` — tests
17
- - `cargo clippy -- -D warnings` — lint
18
- - `cargo audit` — RustSec advisory audit
19
- - `npx @modelcontextprotocol/inspector cargo run` — MCP Inspector
20
-
21
- ## Tools (registered in src/server.rs)
22
-
23
- | Name | Input | Output | Description |
24
- |---|---|---|---|
25
- | `echo` | `text: String` | `String` | Returns input verbatim. Smoke test. |
26
-
27
- ## Prompts
28
-
29
- | Name | Args | Description |
30
- |---|---|---|
31
- | `summarize` | `text` | Summarize the input text. Placeholder. |
32
-
33
- ## Transports
34
-
35
- Choose with `--transport stdio|sse|http` or `MCP_TRANSPORT`:
36
-
37
- - `stdio` (default) — local agents. No port.
38
- - `sse` — SSE-over-HTTP on MCP_PORT (default 3001), served by axum.
39
- - `http` — Streamable HTTP on MCP_PORT, served by axum.
40
-
41
- ## Architecture
42
-
43
- - `src/main.rs` — tokio entrypoint, parses args, dispatches transport.
44
- - `src/server.rs` — builds the rmcp service with tools + prompts.
45
- - `src/cli.rs` — clap arg parser + Transport enum + --list-tools.
46
- - `src/transports/{stdio,sse,http}.rs` — one runner per transport.
47
- - `src/tools/`, `src/prompts/` — pure functions, unit-tested.
48
-
49
- ## CLI inventory
50
-
51
- `cargo run -- --json --list-tools` prints the tool registry as JSON (M-03).
52
-
53
- ## Note on beta status
54
-
55
- `rmcp` is the official Rust MCP SDK but its API is pre-1.0. If a `cargo build`
56
- fails after a dependency update, pin `rmcp` to a known-good version in Cargo.toml.
57
-
58
- ## DARE skills
59
-
60
- See `.dare/skills.yml`.
1
+ # {{ projectName }}
2
+
3
+ DARE-shaped MCP server (Rust, rmcp SDK). Default transport: **{{ defaultTransport }}**. BETA.
4
+
5
+ ## Setup
6
+
7
+ ```bash
8
+ cp .env.example .env
9
+ cargo build
10
+ cargo run
11
+ ```
12
+
13
+ ## Commands
14
+
15
+ - `cargo run` — start server (transport via --transport or MCP_TRANSPORT env)
16
+ - `cargo test` — tests
17
+ - `cargo clippy -- -D warnings` — lint
18
+ - `cargo audit` — RustSec advisory audit
19
+ - `npx @modelcontextprotocol/inspector cargo run` — MCP Inspector
20
+
21
+ ## Tools (registered in src/server.rs)
22
+
23
+ | Name | Input | Output | Description |
24
+ |---|---|---|---|
25
+ | `echo` | `text: String` | `String` | Returns input verbatim. Smoke test. |
26
+
27
+ ## Prompts
28
+
29
+ | Name | Args | Description |
30
+ |---|---|---|
31
+ | `summarize` | `text` | Summarize the input text. Placeholder. |
32
+
33
+ ## Transports
34
+
35
+ Choose with `--transport stdio|sse|http` or `MCP_TRANSPORT`:
36
+
37
+ - `stdio` (default) — local agents. No port.
38
+ - `sse` — SSE-over-HTTP on MCP_PORT (default 3001), served by axum.
39
+ - `http` — Streamable HTTP on MCP_PORT, served by axum.
40
+
41
+ ## Architecture
42
+
43
+ - `src/main.rs` — tokio entrypoint, parses args, dispatches transport.
44
+ - `src/server.rs` — builds the rmcp service with tools + prompts.
45
+ - `src/cli.rs` — clap arg parser + Transport enum + --list-tools.
46
+ - `src/transports/{stdio,sse,http}.rs` — one runner per transport.
47
+ - `src/tools/`, `src/prompts/` — pure functions, unit-tested.
48
+
49
+ ## CLI inventory
50
+
51
+ `cargo run -- --json --list-tools` prints the tool registry as JSON (M-03).
52
+
53
+ ## Note on beta status
54
+
55
+ `rmcp` is the official Rust MCP SDK but its API is pre-1.0. If a `cargo build`
56
+ fails after a dependency update, pin `rmcp` to a known-good version in Cargo.toml.
57
+
58
+ ## DARE skills
59
+
60
+ See `.dare/skills.yml`.
@@ -1,31 +1,31 @@
1
- {
2
- "openapi": "3.1.0",
3
- "info": {
4
- "title": "{{ projectName }}",
5
- "version": "0.1.0",
6
- "description": "MCP server JSON-RPC surface. MCP is not REST; this describes the HTTP/SSE transport envelopes only."
7
- },
8
- "paths": {
9
- "/sse": {
10
- "get": {
11
- "summary": "SSE event stream",
12
- "responses": { "200": { "description": "text/event-stream with MCP JSON-RPC frames" } }
13
- }
14
- },
15
- "/messages": {
16
- "post": {
17
- "summary": "MCP JSON-RPC message (HTTP / SSE post-back)",
18
- "requestBody": {
19
- "required": true,
20
- "content": { "application/json": { "schema": { "type": "object" } } }
21
- },
22
- "responses": {
23
- "200": {
24
- "description": "JSON-RPC 2.0 response",
25
- "content": { "application/json": { "schema": { "type": "object" } } }
26
- }
27
- }
28
- }
29
- }
30
- }
31
- }
1
+ {
2
+ "openapi": "3.1.0",
3
+ "info": {
4
+ "title": "{{ projectName }}",
5
+ "version": "0.1.0",
6
+ "description": "MCP server JSON-RPC surface. MCP is not REST; this describes the HTTP/SSE transport envelopes only."
7
+ },
8
+ "paths": {
9
+ "/sse": {
10
+ "get": {
11
+ "summary": "SSE event stream",
12
+ "responses": { "200": { "description": "text/event-stream with MCP JSON-RPC frames" } }
13
+ }
14
+ },
15
+ "/messages": {
16
+ "post": {
17
+ "summary": "MCP JSON-RPC message (HTTP / SSE post-back)",
18
+ "requestBody": {
19
+ "required": true,
20
+ "content": { "application/json": { "schema": { "type": "object" } } }
21
+ },
22
+ "responses": {
23
+ "200": {
24
+ "description": "JSON-RPC 2.0 response",
25
+ "content": { "application/json": { "schema": { "type": "object" } } }
26
+ }
27
+ }
28
+ }
29
+ }
30
+ }
31
+ }
@@ -1,33 +1,33 @@
1
- //! CLI argument parsing — transport selection + tool inventory.
2
- use clap::{Parser, ValueEnum};
3
-
4
- #[derive(Debug, Clone, Copy, ValueEnum)]
5
- pub enum Transport {
6
- Stdio,
7
- Sse,
8
- Http,
9
- }
10
-
11
- #[derive(Debug, Parser)]
12
- #[command(name = "{{ projectName }}", version, about = "DARE-shaped MCP server")]
13
- pub struct Cli {
14
- /// Transport to serve on. Overridden by MCP_TRANSPORT env if that is set.
15
- #[arg(long, value_enum, default_value = "{{ defaultTransport }}", env = "MCP_TRANSPORT")]
16
- pub transport: Transport,
17
-
18
- /// Bind host for sse/http transports.
19
- #[arg(long, default_value = "0.0.0.0", env = "MCP_HOST")]
20
- pub host: String,
21
-
22
- /// Bind port for sse/http transports.
23
- #[arg(long, default_value_t = 3001, env = "MCP_PORT")]
24
- pub port: u16,
25
-
26
- /// Emit machine-readable JSON (use with --list-tools).
27
- #[arg(long)]
28
- pub json: bool,
29
-
30
- /// List registered tools as JSON and exit (M-03).
31
- #[arg(long)]
32
- pub list_tools: bool,
33
- }
1
+ //! CLI argument parsing — transport selection + tool inventory.
2
+ use clap::{Parser, ValueEnum};
3
+
4
+ #[derive(Debug, Clone, Copy, ValueEnum)]
5
+ pub enum Transport {
6
+ Stdio,
7
+ Sse,
8
+ Http,
9
+ }
10
+
11
+ #[derive(Debug, Parser)]
12
+ #[command(name = "{{ projectName }}", version, about = "DARE-shaped MCP server")]
13
+ pub struct Cli {
14
+ /// Transport to serve on. Overridden by MCP_TRANSPORT env if that is set.
15
+ #[arg(long, value_enum, default_value = "{{ defaultTransport }}", env = "MCP_TRANSPORT")]
16
+ pub transport: Transport,
17
+
18
+ /// Bind host for sse/http transports.
19
+ #[arg(long, default_value = "0.0.0.0", env = "MCP_HOST")]
20
+ pub host: String,
21
+
22
+ /// Bind port for sse/http transports.
23
+ #[arg(long, default_value_t = 3001, env = "MCP_PORT")]
24
+ pub port: u16,
25
+
26
+ /// Emit machine-readable JSON (use with --list-tools).
27
+ #[arg(long)]
28
+ pub json: bool,
29
+
30
+ /// List registered tools as JSON and exit (M-03).
31
+ #[arg(long)]
32
+ pub list_tools: bool,
33
+ }
@@ -1,6 +1,6 @@
1
- //! Public crate surface — re-exported for tests and the bin.
2
- pub mod cli;
3
- pub mod prompts;
4
- pub mod server;
5
- pub mod tools;
6
- pub mod transports;
1
+ //! Public crate surface — re-exported for tests and the bin.
2
+ pub mod cli;
3
+ pub mod prompts;
4
+ pub mod server;
5
+ pub mod tools;
6
+ pub mod transports;
@@ -1,30 +1,30 @@
1
- //! {{ projectName }} — MCP server entrypoint.
2
- use clap::Parser;
3
- use tracing_subscriber::EnvFilter;
4
-
5
- use {{ crateName }}::cli::{Cli, Transport};
6
- use {{ crateName }}::tools;
7
- use {{ crateName }}::transports;
8
-
9
- #[tokio::main]
10
- async fn main() -> anyhow::Result<()> {
11
- let cli = Cli::parse();
12
-
13
- // --json --list-tools short-circuits before starting any transport (M-03).
14
- if cli.list_tools && cli.json {
15
- let inventory = tools::inventory_json();
16
- println!("{}", serde_json::to_string_pretty(&inventory)?);
17
- return Ok(());
18
- }
19
-
20
- tracing_subscriber::fmt()
21
- .with_env_filter(EnvFilter::from_default_env())
22
- .with_writer(std::io::stderr)
23
- .init();
24
-
25
- match cli.transport {
26
- Transport::Stdio => transports::stdio::run().await,
27
- Transport::Sse => transports::sse::run(&cli.host, cli.port).await,
28
- Transport::Http => transports::http::run(&cli.host, cli.port).await,
29
- }
30
- }
1
+ //! {{ projectName }} — MCP server entrypoint.
2
+ use clap::Parser;
3
+ use tracing_subscriber::EnvFilter;
4
+
5
+ use {{ crateName }}::cli::{Cli, Transport};
6
+ use {{ crateName }}::tools;
7
+ use {{ crateName }}::transports;
8
+
9
+ #[tokio::main]
10
+ async fn main() -> anyhow::Result<()> {
11
+ let cli = Cli::parse();
12
+
13
+ // --json --list-tools short-circuits before starting any transport (M-03).
14
+ if cli.list_tools && cli.json {
15
+ let inventory = tools::inventory_json();
16
+ println!("{}", serde_json::to_string_pretty(&inventory)?);
17
+ return Ok(());
18
+ }
19
+
20
+ tracing_subscriber::fmt()
21
+ .with_env_filter(EnvFilter::from_default_env())
22
+ .with_writer(std::io::stderr)
23
+ .init();
24
+
25
+ match cli.transport {
26
+ Transport::Stdio => transports::stdio::run().await,
27
+ Transport::Sse => transports::sse::run(&cli.host, cli.port).await,
28
+ Transport::Http => transports::http::run(&cli.host, cli.port).await,
29
+ }
30
+ }
@@ -1 +1 @@
1
- pub mod summarize;
1
+ pub mod summarize;
@@ -1,5 +1,5 @@
1
- //! Summarize prompt — returns the templated user-message body.
2
-
3
- pub fn summarize(text: &str) -> String {
4
- format!("Summarize the following text in 1-2 sentences.\n\n{text}")
5
- }
1
+ //! Summarize prompt — returns the templated user-message body.
2
+
3
+ pub fn summarize(text: &str) -> String {
4
+ format!("Summarize the following text in 1-2 sentences.\n\n{text}")
5
+ }
@@ -1,38 +1,38 @@
1
- //! MCP service definition — wires tools + prompts via the rmcp SDK.
2
- //!
3
- //! NOTE: the rmcp API is pre-1.0; the exact handler-registration surface may
4
- //! shift between releases. The structure below keeps the SDK glue thin and the
5
- //! business logic in `tools::` / `prompts::` (pure, unit-tested) so a breaking
6
- //! rmcp change only touches this file.
7
- use rmcp::{
8
- handler::server::ServerHandler,
9
- model::{ServerCapabilities, ServerInfo},
10
- };
11
-
12
- use crate::tools;
13
-
14
- #[derive(Clone, Default)]
15
- pub struct DareMcpService;
16
-
17
- impl ServerHandler for DareMcpService {
18
- fn get_info(&self) -> ServerInfo {
19
- ServerInfo {
20
- instructions: Some(
21
- "DARE-shaped MCP server ({{ projectName }}). Tools: echo. Prompts: summarize."
22
- .into(),
23
- ),
24
- capabilities: ServerCapabilities::builder()
25
- .enable_tools()
26
- .enable_prompts()
27
- .build(),
28
- ..Default::default()
29
- }
30
- }
31
- }
32
-
33
- /// Convenience constructor used by every transport.
34
- pub fn build_service() -> DareMcpService {
35
- // Touch the tool inventory so a missing tool module is a compile error.
36
- let _ = tools::inventory_json();
37
- DareMcpService
38
- }
1
+ //! MCP service definition — wires tools + prompts via the rmcp SDK.
2
+ //!
3
+ //! NOTE: the rmcp API is pre-1.0; the exact handler-registration surface may
4
+ //! shift between releases. The structure below keeps the SDK glue thin and the
5
+ //! business logic in `tools::` / `prompts::` (pure, unit-tested) so a breaking
6
+ //! rmcp change only touches this file.
7
+ use rmcp::{
8
+ handler::server::ServerHandler,
9
+ model::{ServerCapabilities, ServerInfo},
10
+ };
11
+
12
+ use crate::tools;
13
+
14
+ #[derive(Clone, Default)]
15
+ pub struct DareMcpService;
16
+
17
+ impl ServerHandler for DareMcpService {
18
+ fn get_info(&self) -> ServerInfo {
19
+ ServerInfo {
20
+ instructions: Some(
21
+ "DARE-shaped MCP server ({{ projectName }}). Tools: echo. Prompts: summarize."
22
+ .into(),
23
+ ),
24
+ capabilities: ServerCapabilities::builder()
25
+ .enable_tools()
26
+ .enable_prompts()
27
+ .build(),
28
+ ..Default::default()
29
+ }
30
+ }
31
+ }
32
+
33
+ /// Convenience constructor used by every transport.
34
+ pub fn build_service() -> DareMcpService {
35
+ // Touch the tool inventory so a missing tool module is a compile error.
36
+ let _ = tools::inventory_json();
37
+ DareMcpService
38
+ }
@@ -1,18 +1,18 @@
1
- //! Echo tool — pure function, unit-tested independently of the SDK.
2
-
3
- /// Returns its input verbatim.
4
- ///
5
- /// # Errors
6
- /// Returns `Err` when `text` is empty.
7
- pub fn echo(text: &str) -> Result<String, EchoError> {
8
- if text.is_empty() {
9
- return Err(EchoError::Empty);
10
- }
11
- Ok(text.to_string())
12
- }
13
-
14
- #[derive(Debug, thiserror::Error, PartialEq, Eq)]
15
- pub enum EchoError {
16
- #[error("text must be a non-empty string")]
17
- Empty,
18
- }
1
+ //! Echo tool — pure function, unit-tested independently of the SDK.
2
+
3
+ /// Returns its input verbatim.
4
+ ///
5
+ /// # Errors
6
+ /// Returns `Err` when `text` is empty.
7
+ pub fn echo(text: &str) -> Result<String, EchoError> {
8
+ if text.is_empty() {
9
+ return Err(EchoError::Empty);
10
+ }
11
+ Ok(text.to_string())
12
+ }
13
+
14
+ #[derive(Debug, thiserror::Error, PartialEq, Eq)]
15
+ pub enum EchoError {
16
+ #[error("text must be a non-empty string")]
17
+ Empty,
18
+ }
@@ -1,22 +1,22 @@
1
- pub mod echo;
2
-
3
- use serde_json::{json, Value};
4
-
5
- /// Machine-readable tool inventory for `--json --list-tools` (M-03).
6
- pub fn inventory_json() -> Value {
7
- json!({
8
- "tools": [
9
- {
10
- "name": "echo",
11
- "description": "Returns its input. Canonical smoke test for an MCP server.",
12
- "inputSchema": {
13
- "type": "object",
14
- "required": ["text"],
15
- "properties": {
16
- "text": { "type": "string", "minLength": 1 }
17
- }
18
- }
19
- }
20
- ]
21
- })
22
- }
1
+ pub mod echo;
2
+
3
+ use serde_json::{json, Value};
4
+
5
+ /// Machine-readable tool inventory for `--json --list-tools` (M-03).
6
+ pub fn inventory_json() -> Value {
7
+ json!({
8
+ "tools": [
9
+ {
10
+ "name": "echo",
11
+ "description": "Returns its input. Canonical smoke test for an MCP server.",
12
+ "inputSchema": {
13
+ "type": "object",
14
+ "required": ["text"],
15
+ "properties": {
16
+ "text": { "type": "string", "minLength": 1 }
17
+ }
18
+ }
19
+ }
20
+ ]
21
+ })
22
+ }
@@ -1,27 +1,27 @@
1
- //! Streamable HTTP transport.
2
- //!
3
- //! rmcp exposes a streamable-http server behind a feature flag in recent
4
- //! releases (pre-1.0). This wrapper centralizes the bind logic; swap the route
5
- //! bodies for rmcp's StreamableHttpService integration for your version.
6
- use std::net::SocketAddr;
7
-
8
- use crate::server::build_service;
9
-
10
- pub async fn run(host: &str, port: u16) -> anyhow::Result<()> {
11
- let addr: SocketAddr = format!("{host}:{port}").parse()?;
12
- tracing::info!("mcp/http listening on {addr}");
13
-
14
- let _service = build_service();
15
-
16
- let app = axum::Router::new()
17
- .route(
18
- "/messages",
19
- axum::routing::post(|| async { "MCP streamable-http endpoint — wire rmcp here" })
20
- .get(|| async { "MCP streamable-http endpoint — wire rmcp here" }),
21
- )
22
- .layer(tower_http::cors::CorsLayer::permissive());
23
-
24
- let listener = tokio::net::TcpListener::bind(addr).await?;
25
- axum::serve(listener, app).await?;
26
- Ok(())
27
- }
1
+ //! Streamable HTTP transport.
2
+ //!
3
+ //! rmcp exposes a streamable-http server behind a feature flag in recent
4
+ //! releases (pre-1.0). This wrapper centralizes the bind logic; swap the route
5
+ //! bodies for rmcp's StreamableHttpService integration for your version.
6
+ use std::net::SocketAddr;
7
+
8
+ use crate::server::build_service;
9
+
10
+ pub async fn run(host: &str, port: u16) -> anyhow::Result<()> {
11
+ let addr: SocketAddr = format!("{host}:{port}").parse()?;
12
+ tracing::info!("mcp/http listening on {addr}");
13
+
14
+ let _service = build_service();
15
+
16
+ let app = axum::Router::new()
17
+ .route(
18
+ "/messages",
19
+ axum::routing::post(|| async { "MCP streamable-http endpoint — wire rmcp here" })
20
+ .get(|| async { "MCP streamable-http endpoint — wire rmcp here" }),
21
+ )
22
+ .layer(tower_http::cors::CorsLayer::permissive());
23
+
24
+ let listener = tokio::net::TcpListener::bind(addr).await?;
25
+ axum::serve(listener, app).await?;
26
+ Ok(())
27
+ }
@@ -1,3 +1,3 @@
1
- pub mod http;
2
- pub mod sse;
3
- pub mod stdio;
1
+ pub mod http;
2
+ pub mod sse;
3
+ pub mod stdio;
@@ -1,33 +1,33 @@
1
- //! SSE-over-HTTP transport.
2
- //!
3
- //! rmcp exposes an SSE server behind the `transport-sse-server` feature in
4
- //! recent releases; the surface is pre-1.0. This wrapper keeps the bind logic
5
- //! in one place. If the SDK feature name or constructor changes, only this
6
- //! file needs editing.
7
- use std::net::SocketAddr;
8
-
9
- use crate::server::build_service;
10
-
11
- pub async fn run(host: &str, port: u16) -> anyhow::Result<()> {
12
- let addr: SocketAddr = format!("{host}:{port}").parse()?;
13
- tracing::info!("mcp/sse listening on {addr}");
14
-
15
- // Build the service so capabilities are validated even if the concrete
16
- // SSE wiring below is adjusted for your rmcp version.
17
- let _service = build_service();
18
-
19
- // Minimal axum app that documents where the SSE endpoints live. Replace
20
- // the route bodies with rmcp's SSE server integration for your version
21
- // (e.g. rmcp::transport::sse_server::SseServer::serve(addr)).
22
- let app = axum::Router::new()
23
- .route("/sse", axum::routing::get(|| async { "MCP SSE endpoint — wire rmcp SseServer here" }))
24
- .route(
25
- "/messages",
26
- axum::routing::post(|| async { "MCP message endpoint — wire rmcp SseServer here" }),
27
- )
28
- .layer(tower_http::cors::CorsLayer::permissive());
29
-
30
- let listener = tokio::net::TcpListener::bind(addr).await?;
31
- axum::serve(listener, app).await?;
32
- Ok(())
33
- }
1
+ //! SSE-over-HTTP transport.
2
+ //!
3
+ //! rmcp exposes an SSE server behind the `transport-sse-server` feature in
4
+ //! recent releases; the surface is pre-1.0. This wrapper keeps the bind logic
5
+ //! in one place. If the SDK feature name or constructor changes, only this
6
+ //! file needs editing.
7
+ use std::net::SocketAddr;
8
+
9
+ use crate::server::build_service;
10
+
11
+ pub async fn run(host: &str, port: u16) -> anyhow::Result<()> {
12
+ let addr: SocketAddr = format!("{host}:{port}").parse()?;
13
+ tracing::info!("mcp/sse listening on {addr}");
14
+
15
+ // Build the service so capabilities are validated even if the concrete
16
+ // SSE wiring below is adjusted for your rmcp version.
17
+ let _service = build_service();
18
+
19
+ // Minimal axum app that documents where the SSE endpoints live. Replace
20
+ // the route bodies with rmcp's SSE server integration for your version
21
+ // (e.g. rmcp::transport::sse_server::SseServer::serve(addr)).
22
+ let app = axum::Router::new()
23
+ .route("/sse", axum::routing::get(|| async { "MCP SSE endpoint — wire rmcp SseServer here" }))
24
+ .route(
25
+ "/messages",
26
+ axum::routing::post(|| async { "MCP message endpoint — wire rmcp SseServer here" }),
27
+ )
28
+ .layer(tower_http::cors::CorsLayer::permissive());
29
+
30
+ let listener = tokio::net::TcpListener::bind(addr).await?;
31
+ axum::serve(listener, app).await?;
32
+ Ok(())
33
+ }