@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,62 +1,62 @@
1
- // {{projectName}} — MCP server entrypoint.
2
- package main
3
-
4
- import (
5
- "encoding/json"
6
- "flag"
7
- "fmt"
8
- "os"
9
-
10
- "github.com/joho/godotenv"
11
-
12
- "{{moduleName}}/internal/server"
13
- "{{moduleName}}/internal/transports"
14
- )
15
-
16
- func main() {
17
- _ = godotenv.Load()
18
-
19
- defaultTransport := os.Getenv("MCP_TRANSPORT")
20
- if defaultTransport == "" {
21
- defaultTransport = "{{defaultTransport}}"
22
- }
23
-
24
- transport := flag.String("transport", defaultTransport, "stdio | sse | http")
25
- jsonOut := flag.Bool("json", false, "emit JSON output (use with --list-tools)")
26
- listTools := flag.Bool("list-tools", false, "list registered tools as JSON and exit")
27
- flag.Parse()
28
-
29
- // --json --list-tools short-circuits before starting any transport (M-03).
30
- if *listTools && *jsonOut {
31
- out, _ := json.MarshalIndent(server.InventoryJSON(), "", " ")
32
- fmt.Println(string(out))
33
- return
34
- }
35
-
36
- host := envOr("MCP_HOST", "0.0.0.0")
37
- port := envOr("MCP_PORT", "3001")
38
-
39
- var err error
40
- switch *transport {
41
- case "stdio":
42
- err = transports.RunStdio()
43
- case "sse":
44
- err = transports.RunSSE(host, port)
45
- case "http":
46
- err = transports.RunHTTP(host, port)
47
- default:
48
- fmt.Fprintf(os.Stderr, "invalid transport %q (valid: stdio, sse, http)\n", *transport)
49
- os.Exit(1)
50
- }
51
- if err != nil {
52
- fmt.Fprintf(os.Stderr, "[mcp] fatal: %v\n", err)
53
- os.Exit(1)
54
- }
55
- }
56
-
57
- func envOr(key, def string) string {
58
- if v := os.Getenv(key); v != "" {
59
- return v
60
- }
61
- return def
62
- }
1
+ // {{projectName}} — MCP server entrypoint.
2
+ package main
3
+
4
+ import (
5
+ "encoding/json"
6
+ "flag"
7
+ "fmt"
8
+ "os"
9
+
10
+ "github.com/joho/godotenv"
11
+
12
+ "{{moduleName}}/internal/server"
13
+ "{{moduleName}}/internal/transports"
14
+ )
15
+
16
+ func main() {
17
+ _ = godotenv.Load()
18
+
19
+ defaultTransport := os.Getenv("MCP_TRANSPORT")
20
+ if defaultTransport == "" {
21
+ defaultTransport = "{{defaultTransport}}"
22
+ }
23
+
24
+ transport := flag.String("transport", defaultTransport, "stdio | sse | http")
25
+ jsonOut := flag.Bool("json", false, "emit JSON output (use with --list-tools)")
26
+ listTools := flag.Bool("list-tools", false, "list registered tools as JSON and exit")
27
+ flag.Parse()
28
+
29
+ // --json --list-tools short-circuits before starting any transport (M-03).
30
+ if *listTools && *jsonOut {
31
+ out, _ := json.MarshalIndent(server.InventoryJSON(), "", " ")
32
+ fmt.Println(string(out))
33
+ return
34
+ }
35
+
36
+ host := envOr("MCP_HOST", "0.0.0.0")
37
+ port := envOr("MCP_PORT", "3001")
38
+
39
+ var err error
40
+ switch *transport {
41
+ case "stdio":
42
+ err = transports.RunStdio()
43
+ case "sse":
44
+ err = transports.RunSSE(host, port)
45
+ case "http":
46
+ err = transports.RunHTTP(host, port)
47
+ default:
48
+ fmt.Fprintf(os.Stderr, "invalid transport %q (valid: stdio, sse, http)\n", *transport)
49
+ os.Exit(1)
50
+ }
51
+ if err != nil {
52
+ fmt.Fprintf(os.Stderr, "[mcp] fatal: %v\n", err)
53
+ os.Exit(1)
54
+ }
55
+ }
56
+
57
+ func envOr(key, def string) string {
58
+ if v := os.Getenv(key); v != "" {
59
+ return v
60
+ }
61
+ return def
62
+ }
@@ -1,6 +1,6 @@
1
- /bin/
2
- /vendor/
3
- .env
4
- .env.local
5
- *.log
6
- .DS_Store
1
+ /bin/
2
+ /vendor/
3
+ .env
4
+ .env.local
5
+ *.log
6
+ .DS_Store
@@ -1,9 +1,9 @@
1
- module {{moduleName}}
2
-
3
- go 1.23
4
-
5
- require (
6
- github.com/mark3labs/mcp-go v0.54.1
7
- github.com/joho/godotenv v1.5.1
8
- github.com/stretchr/testify v1.9.0
9
- )
1
+ module {{moduleName}}
2
+
3
+ go 1.23
4
+
5
+ require (
6
+ github.com/mark3labs/mcp-go v0.54.1
7
+ github.com/joho/godotenv v1.5.1
8
+ github.com/stretchr/testify v1.9.0
9
+ )
@@ -1,9 +1,9 @@
1
- // Package prompts holds pure prompt builders.
2
- package prompts
3
-
4
- import "fmt"
5
-
6
- // Summarize returns the user-message body for a summarize prompt.
7
- func Summarize(text string) string {
8
- return fmt.Sprintf("Summarize the following text in 1-2 sentences.\n\n%s", text)
9
- }
1
+ // Package prompts holds pure prompt builders.
2
+ package prompts
3
+
4
+ import "fmt"
5
+
6
+ // Summarize returns the user-message body for a summarize prompt.
7
+ func Summarize(text string) string {
8
+ return fmt.Sprintf("Summarize the following text in 1-2 sentences.\n\n%s", text)
9
+ }
@@ -1,80 +1,80 @@
1
- // Package server builds the mcp-go server with tools and prompts.
2
- //
3
- // NOTE: mark3labs/mcp-go is pre-1.0. The registration calls below match the
4
- // v0.8.x surface; adjust here if an upstream bump changes the API. Business
5
- // logic lives in internal/tools and internal/prompts (pure, unit-tested) so a
6
- // breaking SDK change only touches this file.
7
- package server
8
-
9
- import (
10
- "context"
11
-
12
- "github.com/mark3labs/mcp-go/mcp"
13
- "github.com/mark3labs/mcp-go/server"
14
-
15
- "{{moduleName}}/internal/prompts"
16
- "{{moduleName}}/internal/tools"
17
- )
18
-
19
- // New builds and returns a configured MCP server.
20
- func New() *server.MCPServer {
21
- s := server.NewMCPServer(
22
- "{{projectName}}",
23
- "0.1.0",
24
- server.WithToolCapabilities(true),
25
- server.WithPromptCapabilities(true),
26
- )
27
-
28
- echoTool := mcp.NewTool("echo",
29
- mcp.WithDescription("Returns its input. Canonical smoke test for an MCP server."),
30
- mcp.WithString("text",
31
- mcp.Required(),
32
- mcp.Description("Text to echo back"),
33
- ),
34
- )
35
- s.AddTool(echoTool, func(_ context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
36
- // v0.54: tool arguments are accessed via GetArguments() (returns map[string]any).
37
- text, _ := req.GetArguments()["text"].(string)
38
- out, err := tools.Echo(text)
39
- if err != nil {
40
- return mcp.NewToolResultError(err.Error()), nil
41
- }
42
- return mcp.NewToolResultText(out), nil
43
- })
44
-
45
- summarizePrompt := mcp.NewPrompt("summarize",
46
- mcp.WithPromptDescription("Summarize the given text in 1-2 sentences."),
47
- mcp.WithArgument("text", mcp.ArgumentDescription("Text to summarize"), mcp.RequiredArgument()),
48
- )
49
- s.AddPrompt(summarizePrompt, func(_ context.Context, req mcp.GetPromptRequest) (*mcp.GetPromptResult, error) {
50
- text := req.Params.Arguments["text"]
51
- body := prompts.Summarize(text)
52
- return mcp.NewGetPromptResult(
53
- "summarize",
54
- []mcp.PromptMessage{
55
- mcp.NewPromptMessage(mcp.RoleUser, mcp.NewTextContent(body)),
56
- },
57
- ), nil
58
- })
59
-
60
- return s
61
- }
62
-
63
- // InventoryJSON returns a machine-readable tool inventory for --list-tools (M-03).
64
- func InventoryJSON() map[string]any {
65
- return map[string]any{
66
- "tools": []map[string]any{
67
- {
68
- "name": "echo",
69
- "description": "Returns its input. Canonical smoke test for an MCP server.",
70
- "inputSchema": map[string]any{
71
- "type": "object",
72
- "required": []string{"text"},
73
- "properties": map[string]any{
74
- "text": map[string]any{"type": "string", "minLength": 1},
75
- },
76
- },
77
- },
78
- },
79
- }
80
- }
1
+ // Package server builds the mcp-go server with tools and prompts.
2
+ //
3
+ // NOTE: mark3labs/mcp-go is pre-1.0. The registration calls below match the
4
+ // v0.8.x surface; adjust here if an upstream bump changes the API. Business
5
+ // logic lives in internal/tools and internal/prompts (pure, unit-tested) so a
6
+ // breaking SDK change only touches this file.
7
+ package server
8
+
9
+ import (
10
+ "context"
11
+
12
+ "github.com/mark3labs/mcp-go/mcp"
13
+ "github.com/mark3labs/mcp-go/server"
14
+
15
+ "{{moduleName}}/internal/prompts"
16
+ "{{moduleName}}/internal/tools"
17
+ )
18
+
19
+ // New builds and returns a configured MCP server.
20
+ func New() *server.MCPServer {
21
+ s := server.NewMCPServer(
22
+ "{{projectName}}",
23
+ "0.1.0",
24
+ server.WithToolCapabilities(true),
25
+ server.WithPromptCapabilities(true),
26
+ )
27
+
28
+ echoTool := mcp.NewTool("echo",
29
+ mcp.WithDescription("Returns its input. Canonical smoke test for an MCP server."),
30
+ mcp.WithString("text",
31
+ mcp.Required(),
32
+ mcp.Description("Text to echo back"),
33
+ ),
34
+ )
35
+ s.AddTool(echoTool, func(_ context.Context, req mcp.CallToolRequest) (*mcp.CallToolResult, error) {
36
+ // v0.54: tool arguments are accessed via GetArguments() (returns map[string]any).
37
+ text, _ := req.GetArguments()["text"].(string)
38
+ out, err := tools.Echo(text)
39
+ if err != nil {
40
+ return mcp.NewToolResultError(err.Error()), nil
41
+ }
42
+ return mcp.NewToolResultText(out), nil
43
+ })
44
+
45
+ summarizePrompt := mcp.NewPrompt("summarize",
46
+ mcp.WithPromptDescription("Summarize the given text in 1-2 sentences."),
47
+ mcp.WithArgument("text", mcp.ArgumentDescription("Text to summarize"), mcp.RequiredArgument()),
48
+ )
49
+ s.AddPrompt(summarizePrompt, func(_ context.Context, req mcp.GetPromptRequest) (*mcp.GetPromptResult, error) {
50
+ text := req.Params.Arguments["text"]
51
+ body := prompts.Summarize(text)
52
+ return mcp.NewGetPromptResult(
53
+ "summarize",
54
+ []mcp.PromptMessage{
55
+ mcp.NewPromptMessage(mcp.RoleUser, mcp.NewTextContent(body)),
56
+ },
57
+ ), nil
58
+ })
59
+
60
+ return s
61
+ }
62
+
63
+ // InventoryJSON returns a machine-readable tool inventory for --list-tools (M-03).
64
+ func InventoryJSON() map[string]any {
65
+ return map[string]any{
66
+ "tools": []map[string]any{
67
+ {
68
+ "name": "echo",
69
+ "description": "Returns its input. Canonical smoke test for an MCP server.",
70
+ "inputSchema": map[string]any{
71
+ "type": "object",
72
+ "required": []string{"text"},
73
+ "properties": map[string]any{
74
+ "text": map[string]any{"type": "string", "minLength": 1},
75
+ },
76
+ },
77
+ },
78
+ },
79
+ }
80
+ }
@@ -1,15 +1,15 @@
1
- // Package tools holds pure tool implementations, testable without the SDK.
2
- package tools
3
-
4
- import "errors"
5
-
6
- // ErrEmpty is returned when echo is given an empty string.
7
- var ErrEmpty = errors.New("text must be a non-empty string")
8
-
9
- // Echo returns its input verbatim.
10
- func Echo(text string) (string, error) {
11
- if text == "" {
12
- return "", ErrEmpty
13
- }
14
- return text, nil
15
- }
1
+ // Package tools holds pure tool implementations, testable without the SDK.
2
+ package tools
3
+
4
+ import "errors"
5
+
6
+ // ErrEmpty is returned when echo is given an empty string.
7
+ var ErrEmpty = errors.New("text must be a non-empty string")
8
+
9
+ // Echo returns its input verbatim.
10
+ func Echo(text string) (string, error) {
11
+ if text == "" {
12
+ return "", ErrEmpty
13
+ }
14
+ return text, nil
15
+ }
@@ -1,21 +1,21 @@
1
- package transports
2
-
3
- import (
4
- "fmt"
5
-
6
- mcpserver "github.com/mark3labs/mcp-go/server"
7
-
8
- srv "{{moduleName}}/internal/server"
9
- )
10
-
11
- // RunHTTP serves the MCP server over Streamable HTTP.
12
- //
13
- // NOTE: the streamable-http constructor name may vary across mark3labs/mcp-go
14
- // releases. If `go build` fails after an SDK bump, check the server package
15
- // for the current streamable HTTP server type.
16
- func RunHTTP(host, port string) error {
17
- s := srv.New()
18
- addr := fmt.Sprintf("%s:%s", host, port)
19
- httpServer := mcpserver.NewStreamableHTTPServer(s)
20
- return httpServer.Start(addr)
21
- }
1
+ package transports
2
+
3
+ import (
4
+ "fmt"
5
+
6
+ mcpserver "github.com/mark3labs/mcp-go/server"
7
+
8
+ srv "{{moduleName}}/internal/server"
9
+ )
10
+
11
+ // RunHTTP serves the MCP server over Streamable HTTP.
12
+ //
13
+ // NOTE: the streamable-http constructor name may vary across mark3labs/mcp-go
14
+ // releases. If `go build` fails after an SDK bump, check the server package
15
+ // for the current streamable HTTP server type.
16
+ func RunHTTP(host, port string) error {
17
+ s := srv.New()
18
+ addr := fmt.Sprintf("%s:%s", host, port)
19
+ httpServer := mcpserver.NewStreamableHTTPServer(s)
20
+ return httpServer.Start(addr)
21
+ }
@@ -1,17 +1,17 @@
1
- package transports
2
-
3
- import (
4
- "fmt"
5
-
6
- mcpserver "github.com/mark3labs/mcp-go/server"
7
-
8
- srv "{{moduleName}}/internal/server"
9
- )
10
-
11
- // RunSSE serves the MCP server over SSE-over-HTTP.
12
- func RunSSE(host, port string) error {
13
- s := srv.New()
14
- addr := fmt.Sprintf("%s:%s", host, port)
15
- sse := mcpserver.NewSSEServer(s)
16
- return sse.Start(addr)
17
- }
1
+ package transports
2
+
3
+ import (
4
+ "fmt"
5
+
6
+ mcpserver "github.com/mark3labs/mcp-go/server"
7
+
8
+ srv "{{moduleName}}/internal/server"
9
+ )
10
+
11
+ // RunSSE serves the MCP server over SSE-over-HTTP.
12
+ func RunSSE(host, port string) error {
13
+ s := srv.New()
14
+ addr := fmt.Sprintf("%s:%s", host, port)
15
+ sse := mcpserver.NewSSEServer(s)
16
+ return sse.Start(addr)
17
+ }
@@ -1,14 +1,14 @@
1
- // Package transports — one runner per MCP transport.
2
- package transports
3
-
4
- import (
5
- mcpserver "github.com/mark3labs/mcp-go/server"
6
-
7
- srv "{{moduleName}}/internal/server"
8
- )
9
-
10
- // RunStdio serves over stdin/stdout — the default for local agents.
11
- func RunStdio() error {
12
- s := srv.New()
13
- return mcpserver.ServeStdio(s)
14
- }
1
+ // Package transports — one runner per MCP transport.
2
+ package transports
3
+
4
+ import (
5
+ mcpserver "github.com/mark3labs/mcp-go/server"
6
+
7
+ srv "{{moduleName}}/internal/server"
8
+ )
9
+
10
+ // RunStdio serves over stdin/stdout — the default for local agents.
11
+ func RunStdio() error {
12
+ s := srv.New()
13
+ return mcpserver.ServeStdio(s)
14
+ }
@@ -1,60 +1,60 @@
1
- # {{projectName}}
2
-
3
- DARE-shaped MCP server (Go, mark3labs/mcp-go). Default transport: **{{defaultTransport}}**. BETA.
4
-
5
- ## Setup
6
-
7
- ```bash
8
- cp .env.example .env
9
- go mod tidy
10
- go run ./cmd/server
11
- ```
12
-
13
- ## Commands
14
-
15
- - `go run ./cmd/server` — start server (transport via --transport or MCP_TRANSPORT env)
16
- - `go test ./...` — tests
17
- - `golangci-lint run` — lint
18
- - `govulncheck ./...` — vuln scan
19
- - `npx @modelcontextprotocol/inspector go run ./cmd/server` — MCP Inspector
20
-
21
- ## Tools (registered in internal/server/server.go)
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).
39
- - `http` — Streamable HTTP on MCP_PORT (default 3001).
40
-
41
- ## Architecture
42
-
43
- - `cmd/server/main.go` — entrypoint, flag parsing, transport dispatch.
44
- - `internal/server/server.go` — builds the mcp-go server with tools + prompts.
45
- - `internal/tools/`, `internal/prompts/` — pure functions, unit-tested.
46
- - `internal/transports/` — one runner per transport.
47
-
48
- ## CLI inventory
49
-
50
- `go run ./cmd/server --json --list-tools` prints the tool registry as JSON (M-03).
51
-
52
- ## Note on beta status
53
-
54
- `mark3labs/mcp-go` is community-led. If Anthropic ships an official Go SDK,
55
- migrate `internal/server` + `internal/transports` to it; the pure
56
- tools/prompts functions stay unchanged.
57
-
58
- ## DARE skills
59
-
60
- See `.dare/skills.yml`.
1
+ # {{projectName}}
2
+
3
+ DARE-shaped MCP server (Go, mark3labs/mcp-go). Default transport: **{{defaultTransport}}**. BETA.
4
+
5
+ ## Setup
6
+
7
+ ```bash
8
+ cp .env.example .env
9
+ go mod tidy
10
+ go run ./cmd/server
11
+ ```
12
+
13
+ ## Commands
14
+
15
+ - `go run ./cmd/server` — start server (transport via --transport or MCP_TRANSPORT env)
16
+ - `go test ./...` — tests
17
+ - `golangci-lint run` — lint
18
+ - `govulncheck ./...` — vuln scan
19
+ - `npx @modelcontextprotocol/inspector go run ./cmd/server` — MCP Inspector
20
+
21
+ ## Tools (registered in internal/server/server.go)
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).
39
+ - `http` — Streamable HTTP on MCP_PORT (default 3001).
40
+
41
+ ## Architecture
42
+
43
+ - `cmd/server/main.go` — entrypoint, flag parsing, transport dispatch.
44
+ - `internal/server/server.go` — builds the mcp-go server with tools + prompts.
45
+ - `internal/tools/`, `internal/prompts/` — pure functions, unit-tested.
46
+ - `internal/transports/` — one runner per transport.
47
+
48
+ ## CLI inventory
49
+
50
+ `go run ./cmd/server --json --list-tools` prints the tool registry as JSON (M-03).
51
+
52
+ ## Note on beta status
53
+
54
+ `mark3labs/mcp-go` is community-led. If Anthropic ships an official Go SDK,
55
+ migrate `internal/server` + `internal/transports` to it; the pure
56
+ tools/prompts functions stay unchanged.
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
+ }