@cubis/foundry 0.3.34 → 0.3.35

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 (590) hide show
  1. package/README.md +56 -11
  2. package/bin/cubis.js +2809 -965
  3. package/mcp/.dockerignore +5 -0
  4. package/mcp/Dockerfile +19 -0
  5. package/mcp/README.md +550 -11
  6. package/mcp/config.json +18 -0
  7. package/mcp/dist/index.d.ts +1 -0
  8. package/mcp/dist/index.js +1488 -0
  9. package/mcp/package.json +36 -0
  10. package/mcp/src/cbxConfig/index.ts +23 -0
  11. package/mcp/src/cbxConfig/paths.ts +45 -0
  12. package/mcp/src/cbxConfig/reader.ts +149 -0
  13. package/mcp/src/cbxConfig/readerWriter.test.ts +147 -0
  14. package/mcp/src/cbxConfig/serviceConfig.test.ts +42 -0
  15. package/mcp/src/cbxConfig/serviceConfig.ts +157 -0
  16. package/mcp/src/cbxConfig/types.ts +44 -0
  17. package/mcp/src/cbxConfig/writer.ts +90 -0
  18. package/mcp/src/config/index.test.ts +81 -0
  19. package/mcp/src/config/index.ts +45 -0
  20. package/mcp/src/config/schema.ts +55 -0
  21. package/mcp/src/gateway/catalog.ts +37 -0
  22. package/mcp/src/gateway/config.ts +247 -0
  23. package/mcp/src/gateway/manager.ts +255 -0
  24. package/mcp/src/gateway/types.ts +54 -0
  25. package/mcp/src/gateway/upstreamClient.ts +80 -0
  26. package/mcp/src/index.ts +211 -0
  27. package/mcp/src/server.ts +219 -0
  28. package/mcp/src/tools/configTools.test.ts +166 -0
  29. package/mcp/src/tools/future/README.md +21 -0
  30. package/mcp/src/tools/future/index.ts +8 -0
  31. package/mcp/src/tools/index.ts +76 -0
  32. package/mcp/src/tools/mcpGateway.ts +44 -0
  33. package/mcp/src/tools/postmanGetMode.ts +82 -0
  34. package/mcp/src/tools/postmanGetStatus.ts +65 -0
  35. package/mcp/src/tools/postmanModes.ts +28 -0
  36. package/mcp/src/tools/postmanSetMode.ts +71 -0
  37. package/mcp/src/tools/skillBrowseCategory.ts +54 -0
  38. package/mcp/src/tools/skillGet.ts +43 -0
  39. package/mcp/src/tools/skillListCategories.ts +40 -0
  40. package/mcp/src/tools/skillSearch.ts +72 -0
  41. package/mcp/src/tools/skillTools.test.ts +126 -0
  42. package/mcp/src/tools/stitchGetMode.ts +58 -0
  43. package/mcp/src/tools/stitchGetStatus.ts +70 -0
  44. package/mcp/src/tools/stitchSetProfile.ts +82 -0
  45. package/mcp/src/transports/stdio.ts +9 -0
  46. package/mcp/src/transports/streamableHttp.ts +43 -0
  47. package/mcp/src/upstream/passthrough.ts +273 -0
  48. package/mcp/src/utils/errors.ts +38 -0
  49. package/mcp/src/utils/logger.ts +63 -0
  50. package/mcp/src/vault/manifest.test.ts +126 -0
  51. package/mcp/src/vault/manifest.ts +99 -0
  52. package/mcp/src/vault/scanner.test.ts +70 -0
  53. package/mcp/src/vault/scanner.ts +145 -0
  54. package/mcp/src/vault/types.ts +21 -0
  55. package/package.json +9 -2
  56. package/workflows/scripts/generate-powers.mjs +27 -18
  57. package/workflows/skills/skills_index.json +0 -102
  58. package/workflows/workflows/agent-environment-setup/manifest.json +0 -24
  59. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/nextjs-react-expert/SKILL.md +1 -1
  60. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/skills_index.json +0 -102
  61. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/nextjs-react-expert/SKILL.md +1 -1
  62. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/skills_index.json +0 -102
  63. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/nextjs-react-expert/SKILL.md +1 -1
  64. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/skills_index.json +0 -102
  65. package/mcp/catalogs/default.json +0 -14
  66. package/mcp/powers/atlassian-mcp/POWER.md +0 -91
  67. package/mcp/powers/atlassian-mcp/SKILL.md +0 -88
  68. package/mcp/powers/atlassian-mcp/steering/authentication-patterns.md +0 -520
  69. package/mcp/powers/atlassian-mcp/steering/common-workflows.md +0 -660
  70. package/mcp/powers/atlassian-mcp/steering/confluence-operations.md +0 -528
  71. package/mcp/powers/atlassian-mcp/steering/jira-queries.md +0 -421
  72. package/mcp/powers/atlassian-mcp/steering/mcp-server-setup.md +0 -292
  73. package/mcp/powers/building-mcp-server-on-cloudflare/POWER.md +0 -261
  74. package/mcp/powers/building-mcp-server-on-cloudflare/SKILL.md +0 -258
  75. package/mcp/powers/building-mcp-server-on-cloudflare/steering/examples.md +0 -115
  76. package/mcp/powers/building-mcp-server-on-cloudflare/steering/oauth-setup.md +0 -338
  77. package/mcp/powers/building-mcp-server-on-cloudflare/steering/troubleshooting.md +0 -317
  78. package/mcp/powers/datadog-automation/POWER.md +0 -238
  79. package/mcp/powers/datadog-automation/SKILL.md +0 -235
  80. package/mcp/powers/github-automation/POWER.md +0 -230
  81. package/mcp/powers/github-automation/SKILL.md +0 -227
  82. package/mcp/powers/mcp-builder/LICENSE.txt +0 -202
  83. package/mcp/powers/mcp-builder/POWER.md +0 -179
  84. package/mcp/powers/mcp-builder/SKILL.md +0 -176
  85. package/mcp/powers/mcp-builder/reference/evaluation.md +0 -602
  86. package/mcp/powers/mcp-builder/reference/mcp_best_practices.md +0 -915
  87. package/mcp/powers/mcp-builder/reference/node_mcp_server.md +0 -916
  88. package/mcp/powers/mcp-builder/reference/python_mcp_server.md +0 -752
  89. package/mcp/powers/mcp-builder/scripts/connections.py +0 -151
  90. package/mcp/powers/mcp-builder/scripts/evaluation.py +0 -373
  91. package/mcp/powers/mcp-builder/scripts/example_evaluation.xml +0 -22
  92. package/mcp/powers/mcp-builder/scripts/requirements.txt +0 -2
  93. package/mcp/powers/mcp-developer/POWER.md +0 -88
  94. package/mcp/powers/mcp-developer/SKILL.md +0 -85
  95. package/mcp/powers/mcp-developer/steering/protocol.md +0 -244
  96. package/mcp/powers/mcp-developer/steering/python-sdk.md +0 -367
  97. package/mcp/powers/mcp-developer/steering/resources.md +0 -554
  98. package/mcp/powers/mcp-developer/steering/tools.md +0 -480
  99. package/mcp/powers/mcp-developer/steering/typescript-sdk.md +0 -350
  100. package/mcp/powers/postman/POWER.md +0 -243
  101. package/mcp/powers/postman/SKILL.md +0 -240
  102. package/mcp/powers/postman/flutter-expert/POWER.md +0 -89
  103. package/mcp/powers/postman/flutter-expert/SKILL.md +0 -77
  104. package/mcp/powers/postman/flutter-expert/steering/bloc-state.md +0 -259
  105. package/mcp/powers/postman/flutter-expert/steering/engineering-principles.md +0 -82
  106. package/mcp/powers/postman/flutter-expert/steering/gorouter-navigation.md +0 -157
  107. package/mcp/powers/postman/flutter-expert/steering/performance.md +0 -99
  108. package/mcp/powers/postman/flutter-expert/steering/project-structure.md +0 -77
  109. package/mcp/powers/postman/flutter-expert/steering/riverpod-state.md +0 -404
  110. package/mcp/powers/postman/flutter-expert/steering/widget-patterns.md +0 -123
  111. package/mcp/powers/postman/flutter-security-reviewer/POWER.md +0 -204
  112. package/mcp/powers/postman/flutter-security-reviewer/SKILL.md +0 -180
  113. package/mcp/powers/postman/flutter-security-reviewer/steering/log_redaction.md +0 -17
  114. package/mcp/powers/postman/flutter-security-reviewer/steering/network_hardening.md +0 -13
  115. package/mcp/powers/postman/flutter-security-reviewer/steering/secret-scanning.md +0 -123
  116. package/mcp/powers/postman/flutter-security-reviewer/steering/secure_storage_policy.md +0 -16
  117. package/mcp/powers/postman/flutter-security-reviewer/steering/vulnerability-patterns.md +0 -189
  118. package/mcp/powers/postman/flutter-security-reviewer/templates/security_review_response.md +0 -31
  119. package/mcp/powers/postman/flutter-test-master/POWER.md +0 -527
  120. package/mcp/powers/postman/flutter-test-master/SKILL.md +0 -513
  121. package/mcp/powers/postman/flutter-test-master/steering/golden-testing.md +0 -444
  122. package/mcp/powers/postman/flutter-test-master/steering/integration-testing.md +0 -688
  123. package/mcp/powers/postman/flutter-test-master/steering/property-testing.md +0 -408
  124. package/mcp/powers/postman/flutter-test-master/steering/riverpod-testing.md +0 -606
  125. package/mcp/powers/postman/flutter-test-master/steering/test-utilities.md +0 -566
  126. package/mcp/powers/postman/flutter-test-master/steering/unit-testing.md +0 -511
  127. package/mcp/powers/postman/flutter-test-master/steering/widget-testing.md +0 -601
  128. package/mcp/powers/postman/git-commit/POWER.md +0 -47
  129. package/mcp/powers/postman/git-commit/SKILL.md +0 -46
  130. package/mcp/powers/postman/gorouter-restoration/POWER.md +0 -227
  131. package/mcp/powers/postman/gorouter-restoration/SKILL.md +0 -217
  132. package/mcp/powers/postman/gorouter-restoration/steering/guard_patterns.md +0 -14
  133. package/mcp/powers/postman/gorouter-restoration/steering/tab_preservation.md +0 -12
  134. package/mcp/powers/postman/gorouter-restoration/templates/guard_redirect.md +0 -30
  135. package/mcp/powers/postman/gorouter-restoration/templates/stateful_shell_skeleton.md +0 -40
  136. package/mcp/powers/postman/mcp.json +0 -11
  137. package/mcp/powers/postman/microservices-architect/POWER.md +0 -109
  138. package/mcp/powers/postman/microservices-architect/SKILL.md +0 -93
  139. package/mcp/powers/postman/microservices-architect/steering/communication.md +0 -499
  140. package/mcp/powers/postman/microservices-architect/steering/data.md +0 -721
  141. package/mcp/powers/postman/microservices-architect/steering/decomposition.md +0 -344
  142. package/mcp/powers/postman/microservices-architect/steering/observability.md +0 -805
  143. package/mcp/powers/postman/microservices-architect/steering/patterns.md +0 -603
  144. package/mcp/powers/postman/nestjs-expert/POWER.md +0 -130
  145. package/mcp/powers/postman/nestjs-expert/SKILL.md +0 -114
  146. package/mcp/powers/postman/nestjs-expert/steering/authentication.md +0 -461
  147. package/mcp/powers/postman/nestjs-expert/steering/controllers-routing.md +0 -114
  148. package/mcp/powers/postman/nestjs-expert/steering/dtos-validation.md +0 -156
  149. package/mcp/powers/postman/nestjs-expert/steering/migration-from-express.md +0 -1240
  150. package/mcp/powers/postman/nestjs-expert/steering/secure-sessions.md +0 -56
  151. package/mcp/powers/postman/nestjs-expert/steering/services-di.md +0 -143
  152. package/mcp/powers/postman/nestjs-expert/steering/strangler-fig-pattern.md +0 -47
  153. package/mcp/powers/postman/nestjs-expert/steering/testing-patterns.md +0 -189
  154. package/mcp/powers/postman/oneup-design/POWER.md +0 -72
  155. package/mcp/powers/postman/oneup-design/SKILL.md +0 -71
  156. package/mcp/powers/postman/oneup-design/steering/colors.md +0 -41
  157. package/mcp/powers/postman/oneup-design/steering/components.md +0 -53
  158. package/mcp/powers/postman/oneup-design/steering/spacing.md +0 -84
  159. package/mcp/powers/postman/openapi-docs/POWER.md +0 -78
  160. package/mcp/powers/postman/openapi-docs/SKILL.md +0 -68
  161. package/mcp/powers/postman/openapi-docs/steering/crud-templates.md +0 -43
  162. package/mcp/powers/postman/openapi-docs/steering/framework-express.md +0 -19
  163. package/mcp/powers/postman/openapi-docs/steering/framework-fastapi.md +0 -20
  164. package/mcp/powers/postman/openapi-docs/steering/framework-nestjs.md +0 -20
  165. package/mcp/powers/postman/openapi-docs/steering/framework-raw-openapi.md +0 -14
  166. package/mcp/powers/postman/openapi-docs/steering/openapi-checklist.md +0 -33
  167. package/mcp/powers/postman/openapi-docs/steering/stoplight-ui.md +0 -21
  168. package/mcp/powers/postman/steering/steering.md +0 -26
  169. package/mcp/powers/sentry-automation/POWER.md +0 -235
  170. package/mcp/powers/sentry-automation/SKILL.md +0 -232
  171. package/mcp/skills/atlassian-mcp/SKILL.md +0 -88
  172. package/mcp/skills/atlassian-mcp/references/authentication-patterns.md +0 -520
  173. package/mcp/skills/atlassian-mcp/references/common-workflows.md +0 -660
  174. package/mcp/skills/atlassian-mcp/references/confluence-operations.md +0 -528
  175. package/mcp/skills/atlassian-mcp/references/jira-queries.md +0 -421
  176. package/mcp/skills/atlassian-mcp/references/mcp-server-setup.md +0 -292
  177. package/mcp/skills/building-mcp-server-on-cloudflare/SKILL.md +0 -258
  178. package/mcp/skills/building-mcp-server-on-cloudflare/references/examples.md +0 -115
  179. package/mcp/skills/building-mcp-server-on-cloudflare/references/oauth-setup.md +0 -338
  180. package/mcp/skills/building-mcp-server-on-cloudflare/references/tool-patterns.md +0 -29
  181. package/mcp/skills/building-mcp-server-on-cloudflare/references/troubleshooting.md +0 -317
  182. package/mcp/skills/datadog-automation/SKILL.md +0 -235
  183. package/mcp/skills/github-automation/SKILL.md +0 -227
  184. package/mcp/skills/mcp-builder/LICENSE.txt +0 -202
  185. package/mcp/skills/mcp-builder/SKILL.md +0 -176
  186. package/mcp/skills/mcp-builder/reference/evaluation.md +0 -602
  187. package/mcp/skills/mcp-builder/reference/mcp_best_practices.md +0 -915
  188. package/mcp/skills/mcp-builder/reference/node_mcp_server.md +0 -916
  189. package/mcp/skills/mcp-builder/reference/python_mcp_server.md +0 -752
  190. package/mcp/skills/mcp-builder/scripts/connections.py +0 -151
  191. package/mcp/skills/mcp-builder/scripts/evaluation.py +0 -373
  192. package/mcp/skills/mcp-builder/scripts/example_evaluation.xml +0 -22
  193. package/mcp/skills/mcp-builder/scripts/requirements.txt +0 -2
  194. package/mcp/skills/mcp-developer/SKILL.md +0 -85
  195. package/mcp/skills/mcp-developer/references/protocol.md +0 -244
  196. package/mcp/skills/mcp-developer/references/python-sdk.md +0 -367
  197. package/mcp/skills/mcp-developer/references/resources.md +0 -554
  198. package/mcp/skills/mcp-developer/references/tools.md +0 -480
  199. package/mcp/skills/mcp-developer/references/typescript-sdk.md +0 -350
  200. package/mcp/skills/postman/POWER.md +0 -242
  201. package/mcp/skills/postman/SKILL.md +0 -240
  202. package/mcp/skills/postman/flutter-expert/POWER.md +0 -89
  203. package/mcp/skills/postman/flutter-expert/SKILL.md +0 -77
  204. package/mcp/skills/postman/flutter-expert/references/bloc-state.md +0 -259
  205. package/mcp/skills/postman/flutter-expert/references/engineering-principles.md +0 -82
  206. package/mcp/skills/postman/flutter-expert/references/gorouter-navigation.md +0 -157
  207. package/mcp/skills/postman/flutter-expert/references/performance.md +0 -99
  208. package/mcp/skills/postman/flutter-expert/references/project-structure.md +0 -77
  209. package/mcp/skills/postman/flutter-expert/references/riverpod-state.md +0 -404
  210. package/mcp/skills/postman/flutter-expert/references/widget-patterns.md +0 -123
  211. package/mcp/skills/postman/flutter-security-reviewer/POWER.md +0 -204
  212. package/mcp/skills/postman/flutter-security-reviewer/SKILL.md +0 -180
  213. package/mcp/skills/postman/flutter-security-reviewer/references/log_redaction.md +0 -17
  214. package/mcp/skills/postman/flutter-security-reviewer/references/network_hardening.md +0 -13
  215. package/mcp/skills/postman/flutter-security-reviewer/references/secret-scanning.md +0 -123
  216. package/mcp/skills/postman/flutter-security-reviewer/references/secure_storage_policy.md +0 -16
  217. package/mcp/skills/postman/flutter-security-reviewer/references/vulnerability-patterns.md +0 -189
  218. package/mcp/skills/postman/flutter-security-reviewer/templates/security_review_response.md +0 -31
  219. package/mcp/skills/postman/flutter-test-master/POWER.md +0 -527
  220. package/mcp/skills/postman/flutter-test-master/SKILL.md +0 -513
  221. package/mcp/skills/postman/flutter-test-master/references/golden-testing.md +0 -444
  222. package/mcp/skills/postman/flutter-test-master/references/integration-testing.md +0 -688
  223. package/mcp/skills/postman/flutter-test-master/references/property-testing.md +0 -408
  224. package/mcp/skills/postman/flutter-test-master/references/riverpod-testing.md +0 -606
  225. package/mcp/skills/postman/flutter-test-master/references/test-utilities.md +0 -566
  226. package/mcp/skills/postman/flutter-test-master/references/unit-testing.md +0 -511
  227. package/mcp/skills/postman/flutter-test-master/references/widget-testing.md +0 -601
  228. package/mcp/skills/postman/git-commit/POWER.md +0 -47
  229. package/mcp/skills/postman/git-commit/SKILL.md +0 -46
  230. package/mcp/skills/postman/gorouter-restoration/POWER.md +0 -227
  231. package/mcp/skills/postman/gorouter-restoration/SKILL.md +0 -217
  232. package/mcp/skills/postman/gorouter-restoration/references/guard_patterns.md +0 -14
  233. package/mcp/skills/postman/gorouter-restoration/references/tab_preservation.md +0 -12
  234. package/mcp/skills/postman/gorouter-restoration/templates/guard_redirect.md +0 -30
  235. package/mcp/skills/postman/gorouter-restoration/templates/stateful_shell_skeleton.md +0 -40
  236. package/mcp/skills/postman/mcp.json +0 -11
  237. package/mcp/skills/postman/microservices-architect/POWER.md +0 -109
  238. package/mcp/skills/postman/microservices-architect/SKILL.md +0 -93
  239. package/mcp/skills/postman/microservices-architect/references/communication.md +0 -499
  240. package/mcp/skills/postman/microservices-architect/references/data.md +0 -721
  241. package/mcp/skills/postman/microservices-architect/references/decomposition.md +0 -344
  242. package/mcp/skills/postman/microservices-architect/references/observability.md +0 -805
  243. package/mcp/skills/postman/microservices-architect/references/patterns.md +0 -603
  244. package/mcp/skills/postman/nestjs-expert/POWER.md +0 -130
  245. package/mcp/skills/postman/nestjs-expert/SKILL.md +0 -114
  246. package/mcp/skills/postman/nestjs-expert/references/authentication.md +0 -461
  247. package/mcp/skills/postman/nestjs-expert/references/controllers-routing.md +0 -114
  248. package/mcp/skills/postman/nestjs-expert/references/dtos-validation.md +0 -156
  249. package/mcp/skills/postman/nestjs-expert/references/migration-from-express.md +0 -1240
  250. package/mcp/skills/postman/nestjs-expert/references/secure-sessions.md +0 -56
  251. package/mcp/skills/postman/nestjs-expert/references/services-di.md +0 -143
  252. package/mcp/skills/postman/nestjs-expert/references/strangler-fig-pattern.md +0 -47
  253. package/mcp/skills/postman/nestjs-expert/references/testing-patterns.md +0 -189
  254. package/mcp/skills/postman/oneup-design/POWER.md +0 -72
  255. package/mcp/skills/postman/oneup-design/SKILL.md +0 -71
  256. package/mcp/skills/postman/oneup-design/references/colors.md +0 -41
  257. package/mcp/skills/postman/oneup-design/references/components.md +0 -53
  258. package/mcp/skills/postman/oneup-design/references/spacing.md +0 -84
  259. package/mcp/skills/postman/openapi-docs/POWER.md +0 -78
  260. package/mcp/skills/postman/openapi-docs/SKILL.md +0 -68
  261. package/mcp/skills/postman/openapi-docs/references/crud-templates.md +0 -43
  262. package/mcp/skills/postman/openapi-docs/references/framework-express.md +0 -19
  263. package/mcp/skills/postman/openapi-docs/references/framework-fastapi.md +0 -20
  264. package/mcp/skills/postman/openapi-docs/references/framework-nestjs.md +0 -20
  265. package/mcp/skills/postman/openapi-docs/references/framework-raw-openapi.md +0 -14
  266. package/mcp/skills/postman/openapi-docs/references/openapi-checklist.md +0 -33
  267. package/mcp/skills/postman/openapi-docs/references/stoplight-ui.md +0 -21
  268. package/mcp/skills/postman/references/steering.md +0 -26
  269. package/mcp/skills/sentry-automation/SKILL.md +0 -232
  270. package/workflows/powers/atlassian-mcp/POWER.md +0 -21
  271. package/workflows/powers/atlassian-mcp/SKILL.md +0 -18
  272. package/workflows/powers/building-mcp-server-on-cloudflare/POWER.md +0 -21
  273. package/workflows/powers/building-mcp-server-on-cloudflare/SKILL.md +0 -18
  274. package/workflows/powers/datadog-automation/POWER.md +0 -21
  275. package/workflows/powers/datadog-automation/SKILL.md +0 -18
  276. package/workflows/powers/github-automation/POWER.md +0 -21
  277. package/workflows/powers/github-automation/SKILL.md +0 -18
  278. package/workflows/powers/mcp-builder/POWER.md +0 -21
  279. package/workflows/powers/mcp-builder/SKILL.md +0 -18
  280. package/workflows/powers/mcp-developer/POWER.md +0 -21
  281. package/workflows/powers/mcp-developer/SKILL.md +0 -18
  282. package/workflows/powers/postman/POWER.md +0 -21
  283. package/workflows/powers/postman/SKILL.md +0 -18
  284. package/workflows/powers/sentry-automation/POWER.md +0 -21
  285. package/workflows/powers/sentry-automation/SKILL.md +0 -18
  286. package/workflows/skills/atlassian-mcp/SKILL.md +0 -18
  287. package/workflows/skills/building-mcp-server-on-cloudflare/SKILL.md +0 -18
  288. package/workflows/skills/datadog-automation/SKILL.md +0 -18
  289. package/workflows/skills/github-automation/SKILL.md +0 -18
  290. package/workflows/skills/mcp-builder/SKILL.md +0 -18
  291. package/workflows/skills/mcp-developer/SKILL.md +0 -18
  292. package/workflows/skills/postman/SKILL.md +0 -18
  293. package/workflows/skills/sentry-automation/SKILL.md +0 -18
  294. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/atlassian-mcp/SKILL.md +0 -88
  295. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/atlassian-mcp/references/authentication-patterns.md +0 -520
  296. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/atlassian-mcp/references/common-workflows.md +0 -660
  297. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/atlassian-mcp/references/confluence-operations.md +0 -528
  298. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/atlassian-mcp/references/jira-queries.md +0 -421
  299. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/atlassian-mcp/references/mcp-server-setup.md +0 -292
  300. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/building-mcp-server-on-cloudflare/SKILL.md +0 -258
  301. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/building-mcp-server-on-cloudflare/references/examples.md +0 -115
  302. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/building-mcp-server-on-cloudflare/references/oauth-setup.md +0 -338
  303. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/building-mcp-server-on-cloudflare/references/tool-patterns.md +0 -29
  304. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/building-mcp-server-on-cloudflare/references/troubleshooting.md +0 -317
  305. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/datadog-automation/SKILL.md +0 -235
  306. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/github-automation/SKILL.md +0 -227
  307. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/mcp-builder/LICENSE.txt +0 -202
  308. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/mcp-builder/SKILL.md +0 -176
  309. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/mcp-builder/reference/evaluation.md +0 -602
  310. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/mcp-builder/reference/mcp_best_practices.md +0 -915
  311. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/mcp-builder/reference/node_mcp_server.md +0 -916
  312. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/mcp-builder/reference/python_mcp_server.md +0 -752
  313. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/mcp-builder/scripts/connections.py +0 -151
  314. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/mcp-builder/scripts/evaluation.py +0 -373
  315. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/mcp-builder/scripts/example_evaluation.xml +0 -22
  316. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/mcp-builder/scripts/requirements.txt +0 -2
  317. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/mcp-developer/SKILL.md +0 -85
  318. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/mcp-developer/references/protocol.md +0 -244
  319. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/mcp-developer/references/python-sdk.md +0 -367
  320. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/mcp-developer/references/resources.md +0 -554
  321. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/mcp-developer/references/tools.md +0 -480
  322. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/mcp-developer/references/typescript-sdk.md +0 -350
  323. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/POWER.md +0 -242
  324. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/SKILL.md +0 -240
  325. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-expert/POWER.md +0 -89
  326. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-expert/SKILL.md +0 -77
  327. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-expert/references/bloc-state.md +0 -259
  328. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-expert/references/engineering-principles.md +0 -82
  329. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-expert/references/gorouter-navigation.md +0 -157
  330. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-expert/references/performance.md +0 -99
  331. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-expert/references/project-structure.md +0 -77
  332. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-expert/references/riverpod-state.md +0 -404
  333. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-expert/references/widget-patterns.md +0 -123
  334. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-security-reviewer/POWER.md +0 -204
  335. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-security-reviewer/SKILL.md +0 -180
  336. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-security-reviewer/references/log_redaction.md +0 -17
  337. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-security-reviewer/references/network_hardening.md +0 -13
  338. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-security-reviewer/references/secret-scanning.md +0 -123
  339. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-security-reviewer/references/secure_storage_policy.md +0 -16
  340. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-security-reviewer/references/vulnerability-patterns.md +0 -189
  341. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-security-reviewer/templates/security_review_response.md +0 -31
  342. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-test-master/POWER.md +0 -527
  343. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-test-master/SKILL.md +0 -513
  344. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-test-master/references/golden-testing.md +0 -444
  345. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-test-master/references/integration-testing.md +0 -688
  346. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-test-master/references/property-testing.md +0 -408
  347. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-test-master/references/riverpod-testing.md +0 -606
  348. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-test-master/references/test-utilities.md +0 -566
  349. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-test-master/references/unit-testing.md +0 -511
  350. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/flutter-test-master/references/widget-testing.md +0 -601
  351. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/git-commit/POWER.md +0 -47
  352. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/git-commit/SKILL.md +0 -46
  353. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/gorouter-restoration/POWER.md +0 -227
  354. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/gorouter-restoration/SKILL.md +0 -217
  355. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/gorouter-restoration/references/guard_patterns.md +0 -14
  356. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/gorouter-restoration/references/tab_preservation.md +0 -12
  357. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/gorouter-restoration/templates/guard_redirect.md +0 -30
  358. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/gorouter-restoration/templates/stateful_shell_skeleton.md +0 -40
  359. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/mcp.json +0 -11
  360. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/microservices-architect/POWER.md +0 -109
  361. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/microservices-architect/SKILL.md +0 -93
  362. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/microservices-architect/references/communication.md +0 -499
  363. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/microservices-architect/references/data.md +0 -721
  364. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/microservices-architect/references/decomposition.md +0 -344
  365. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/microservices-architect/references/observability.md +0 -805
  366. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/microservices-architect/references/patterns.md +0 -603
  367. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/nestjs-expert/POWER.md +0 -130
  368. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/nestjs-expert/SKILL.md +0 -114
  369. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/nestjs-expert/references/authentication.md +0 -461
  370. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/nestjs-expert/references/controllers-routing.md +0 -114
  371. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/nestjs-expert/references/dtos-validation.md +0 -156
  372. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/nestjs-expert/references/migration-from-express.md +0 -1240
  373. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/nestjs-expert/references/secure-sessions.md +0 -56
  374. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/nestjs-expert/references/services-di.md +0 -143
  375. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/nestjs-expert/references/strangler-fig-pattern.md +0 -47
  376. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/nestjs-expert/references/testing-patterns.md +0 -189
  377. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/oneup-design/POWER.md +0 -72
  378. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/oneup-design/SKILL.md +0 -71
  379. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/oneup-design/references/colors.md +0 -41
  380. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/oneup-design/references/components.md +0 -53
  381. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/oneup-design/references/spacing.md +0 -84
  382. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/openapi-docs/POWER.md +0 -78
  383. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/openapi-docs/SKILL.md +0 -68
  384. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/openapi-docs/references/crud-templates.md +0 -43
  385. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/openapi-docs/references/framework-express.md +0 -19
  386. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/openapi-docs/references/framework-fastapi.md +0 -20
  387. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/openapi-docs/references/framework-nestjs.md +0 -20
  388. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/openapi-docs/references/framework-raw-openapi.md +0 -14
  389. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/openapi-docs/references/openapi-checklist.md +0 -33
  390. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/openapi-docs/references/stoplight-ui.md +0 -21
  391. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/postman/references/steering.md +0 -26
  392. package/workflows/workflows/agent-environment-setup/platforms/copilot/skills/sentry-automation/SKILL.md +0 -232
  393. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/atlassian-mcp/SKILL.md +0 -88
  394. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/atlassian-mcp/references/authentication-patterns.md +0 -520
  395. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/atlassian-mcp/references/common-workflows.md +0 -660
  396. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/atlassian-mcp/references/confluence-operations.md +0 -528
  397. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/atlassian-mcp/references/jira-queries.md +0 -421
  398. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/atlassian-mcp/references/mcp-server-setup.md +0 -292
  399. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/building-mcp-server-on-cloudflare/SKILL.md +0 -258
  400. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/building-mcp-server-on-cloudflare/references/examples.md +0 -115
  401. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/building-mcp-server-on-cloudflare/references/oauth-setup.md +0 -338
  402. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/building-mcp-server-on-cloudflare/references/tool-patterns.md +0 -29
  403. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/building-mcp-server-on-cloudflare/references/troubleshooting.md +0 -317
  404. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/datadog-automation/SKILL.md +0 -235
  405. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/github-automation/SKILL.md +0 -227
  406. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/mcp-builder/LICENSE.txt +0 -202
  407. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/mcp-builder/SKILL.md +0 -176
  408. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/mcp-builder/reference/evaluation.md +0 -602
  409. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/mcp-builder/reference/mcp_best_practices.md +0 -915
  410. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/mcp-builder/reference/node_mcp_server.md +0 -916
  411. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/mcp-builder/reference/python_mcp_server.md +0 -752
  412. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/mcp-builder/scripts/connections.py +0 -151
  413. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/mcp-builder/scripts/evaluation.py +0 -373
  414. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/mcp-builder/scripts/example_evaluation.xml +0 -22
  415. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/mcp-builder/scripts/requirements.txt +0 -2
  416. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/mcp-developer/SKILL.md +0 -85
  417. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/mcp-developer/references/protocol.md +0 -244
  418. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/mcp-developer/references/python-sdk.md +0 -367
  419. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/mcp-developer/references/resources.md +0 -554
  420. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/mcp-developer/references/tools.md +0 -480
  421. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/mcp-developer/references/typescript-sdk.md +0 -350
  422. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/POWER.md +0 -242
  423. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/SKILL.md +0 -240
  424. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-expert/POWER.md +0 -89
  425. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-expert/SKILL.md +0 -77
  426. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-expert/references/bloc-state.md +0 -259
  427. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-expert/references/engineering-principles.md +0 -82
  428. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-expert/references/gorouter-navigation.md +0 -157
  429. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-expert/references/performance.md +0 -99
  430. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-expert/references/project-structure.md +0 -77
  431. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-expert/references/riverpod-state.md +0 -404
  432. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-expert/references/widget-patterns.md +0 -123
  433. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-security-reviewer/POWER.md +0 -204
  434. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-security-reviewer/SKILL.md +0 -180
  435. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-security-reviewer/references/log_redaction.md +0 -17
  436. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-security-reviewer/references/network_hardening.md +0 -13
  437. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-security-reviewer/references/secret-scanning.md +0 -123
  438. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-security-reviewer/references/secure_storage_policy.md +0 -16
  439. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-security-reviewer/references/vulnerability-patterns.md +0 -189
  440. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-security-reviewer/templates/security_review_response.md +0 -31
  441. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-test-master/POWER.md +0 -527
  442. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-test-master/SKILL.md +0 -513
  443. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-test-master/references/golden-testing.md +0 -444
  444. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-test-master/references/integration-testing.md +0 -688
  445. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-test-master/references/property-testing.md +0 -408
  446. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-test-master/references/riverpod-testing.md +0 -606
  447. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-test-master/references/test-utilities.md +0 -566
  448. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-test-master/references/unit-testing.md +0 -511
  449. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/flutter-test-master/references/widget-testing.md +0 -601
  450. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/git-commit/POWER.md +0 -47
  451. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/git-commit/SKILL.md +0 -46
  452. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/gorouter-restoration/POWER.md +0 -227
  453. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/gorouter-restoration/SKILL.md +0 -217
  454. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/gorouter-restoration/references/guard_patterns.md +0 -14
  455. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/gorouter-restoration/references/tab_preservation.md +0 -12
  456. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/gorouter-restoration/templates/guard_redirect.md +0 -30
  457. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/gorouter-restoration/templates/stateful_shell_skeleton.md +0 -40
  458. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/mcp.json +0 -11
  459. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/microservices-architect/POWER.md +0 -109
  460. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/microservices-architect/SKILL.md +0 -93
  461. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/microservices-architect/references/communication.md +0 -499
  462. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/microservices-architect/references/data.md +0 -721
  463. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/microservices-architect/references/decomposition.md +0 -344
  464. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/microservices-architect/references/observability.md +0 -805
  465. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/microservices-architect/references/patterns.md +0 -603
  466. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/nestjs-expert/POWER.md +0 -130
  467. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/nestjs-expert/SKILL.md +0 -114
  468. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/nestjs-expert/references/authentication.md +0 -461
  469. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/nestjs-expert/references/controllers-routing.md +0 -114
  470. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/nestjs-expert/references/dtos-validation.md +0 -156
  471. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/nestjs-expert/references/migration-from-express.md +0 -1240
  472. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/nestjs-expert/references/secure-sessions.md +0 -56
  473. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/nestjs-expert/references/services-di.md +0 -143
  474. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/nestjs-expert/references/strangler-fig-pattern.md +0 -47
  475. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/nestjs-expert/references/testing-patterns.md +0 -189
  476. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/oneup-design/POWER.md +0 -72
  477. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/oneup-design/SKILL.md +0 -71
  478. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/oneup-design/references/colors.md +0 -41
  479. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/oneup-design/references/components.md +0 -53
  480. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/oneup-design/references/spacing.md +0 -84
  481. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/openapi-docs/POWER.md +0 -78
  482. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/openapi-docs/SKILL.md +0 -68
  483. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/openapi-docs/references/crud-templates.md +0 -43
  484. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/openapi-docs/references/framework-express.md +0 -19
  485. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/openapi-docs/references/framework-fastapi.md +0 -20
  486. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/openapi-docs/references/framework-nestjs.md +0 -20
  487. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/openapi-docs/references/framework-raw-openapi.md +0 -14
  488. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/openapi-docs/references/openapi-checklist.md +0 -33
  489. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/openapi-docs/references/stoplight-ui.md +0 -21
  490. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/postman/references/steering.md +0 -26
  491. package/workflows/workflows/agent-environment-setup/platforms/cursor/skills/sentry-automation/SKILL.md +0 -232
  492. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/atlassian-mcp/SKILL.md +0 -88
  493. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/atlassian-mcp/references/authentication-patterns.md +0 -520
  494. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/atlassian-mcp/references/common-workflows.md +0 -660
  495. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/atlassian-mcp/references/confluence-operations.md +0 -528
  496. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/atlassian-mcp/references/jira-queries.md +0 -421
  497. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/atlassian-mcp/references/mcp-server-setup.md +0 -292
  498. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/building-mcp-server-on-cloudflare/SKILL.md +0 -258
  499. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/building-mcp-server-on-cloudflare/references/examples.md +0 -115
  500. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/building-mcp-server-on-cloudflare/references/oauth-setup.md +0 -338
  501. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/building-mcp-server-on-cloudflare/references/tool-patterns.md +0 -29
  502. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/building-mcp-server-on-cloudflare/references/troubleshooting.md +0 -317
  503. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/datadog-automation/SKILL.md +0 -235
  504. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/github-automation/SKILL.md +0 -227
  505. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/mcp-builder/LICENSE.txt +0 -202
  506. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/mcp-builder/SKILL.md +0 -176
  507. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/mcp-builder/reference/evaluation.md +0 -602
  508. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/mcp-builder/reference/mcp_best_practices.md +0 -915
  509. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/mcp-builder/reference/node_mcp_server.md +0 -916
  510. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/mcp-builder/reference/python_mcp_server.md +0 -752
  511. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/mcp-builder/scripts/connections.py +0 -151
  512. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/mcp-builder/scripts/evaluation.py +0 -373
  513. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/mcp-builder/scripts/example_evaluation.xml +0 -22
  514. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/mcp-builder/scripts/requirements.txt +0 -2
  515. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/mcp-developer/SKILL.md +0 -85
  516. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/mcp-developer/references/protocol.md +0 -244
  517. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/mcp-developer/references/python-sdk.md +0 -367
  518. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/mcp-developer/references/resources.md +0 -554
  519. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/mcp-developer/references/tools.md +0 -480
  520. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/mcp-developer/references/typescript-sdk.md +0 -350
  521. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/POWER.md +0 -242
  522. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/SKILL.md +0 -240
  523. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-expert/POWER.md +0 -89
  524. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-expert/SKILL.md +0 -77
  525. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-expert/references/bloc-state.md +0 -259
  526. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-expert/references/engineering-principles.md +0 -82
  527. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-expert/references/gorouter-navigation.md +0 -157
  528. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-expert/references/performance.md +0 -99
  529. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-expert/references/project-structure.md +0 -77
  530. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-expert/references/riverpod-state.md +0 -404
  531. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-expert/references/widget-patterns.md +0 -123
  532. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-security-reviewer/POWER.md +0 -204
  533. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-security-reviewer/SKILL.md +0 -180
  534. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-security-reviewer/references/log_redaction.md +0 -17
  535. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-security-reviewer/references/network_hardening.md +0 -13
  536. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-security-reviewer/references/secret-scanning.md +0 -123
  537. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-security-reviewer/references/secure_storage_policy.md +0 -16
  538. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-security-reviewer/references/vulnerability-patterns.md +0 -189
  539. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-security-reviewer/templates/security_review_response.md +0 -31
  540. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-test-master/POWER.md +0 -527
  541. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-test-master/SKILL.md +0 -513
  542. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-test-master/references/golden-testing.md +0 -444
  543. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-test-master/references/integration-testing.md +0 -688
  544. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-test-master/references/property-testing.md +0 -408
  545. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-test-master/references/riverpod-testing.md +0 -606
  546. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-test-master/references/test-utilities.md +0 -566
  547. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-test-master/references/unit-testing.md +0 -511
  548. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/flutter-test-master/references/widget-testing.md +0 -601
  549. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/git-commit/POWER.md +0 -47
  550. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/git-commit/SKILL.md +0 -46
  551. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/gorouter-restoration/POWER.md +0 -227
  552. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/gorouter-restoration/SKILL.md +0 -217
  553. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/gorouter-restoration/references/guard_patterns.md +0 -14
  554. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/gorouter-restoration/references/tab_preservation.md +0 -12
  555. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/gorouter-restoration/templates/guard_redirect.md +0 -30
  556. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/gorouter-restoration/templates/stateful_shell_skeleton.md +0 -40
  557. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/mcp.json +0 -11
  558. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/microservices-architect/POWER.md +0 -109
  559. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/microservices-architect/SKILL.md +0 -93
  560. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/microservices-architect/references/communication.md +0 -499
  561. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/microservices-architect/references/data.md +0 -721
  562. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/microservices-architect/references/decomposition.md +0 -344
  563. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/microservices-architect/references/observability.md +0 -805
  564. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/microservices-architect/references/patterns.md +0 -603
  565. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/nestjs-expert/POWER.md +0 -130
  566. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/nestjs-expert/SKILL.md +0 -114
  567. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/nestjs-expert/references/authentication.md +0 -461
  568. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/nestjs-expert/references/controllers-routing.md +0 -114
  569. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/nestjs-expert/references/dtos-validation.md +0 -156
  570. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/nestjs-expert/references/migration-from-express.md +0 -1240
  571. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/nestjs-expert/references/secure-sessions.md +0 -56
  572. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/nestjs-expert/references/services-di.md +0 -143
  573. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/nestjs-expert/references/strangler-fig-pattern.md +0 -47
  574. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/nestjs-expert/references/testing-patterns.md +0 -189
  575. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/oneup-design/POWER.md +0 -72
  576. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/oneup-design/SKILL.md +0 -71
  577. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/oneup-design/references/colors.md +0 -41
  578. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/oneup-design/references/components.md +0 -53
  579. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/oneup-design/references/spacing.md +0 -84
  580. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/openapi-docs/POWER.md +0 -78
  581. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/openapi-docs/SKILL.md +0 -68
  582. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/openapi-docs/references/crud-templates.md +0 -43
  583. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/openapi-docs/references/framework-express.md +0 -19
  584. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/openapi-docs/references/framework-fastapi.md +0 -20
  585. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/openapi-docs/references/framework-nestjs.md +0 -20
  586. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/openapi-docs/references/framework-raw-openapi.md +0 -14
  587. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/openapi-docs/references/openapi-checklist.md +0 -33
  588. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/openapi-docs/references/stoplight-ui.md +0 -21
  589. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/postman/references/steering.md +0 -26
  590. package/workflows/workflows/agent-environment-setup/platforms/windsurf/skills/sentry-automation/SKILL.md +0 -232
@@ -1,1240 +0,0 @@
1
- # Express to NestJS Migration Guide
2
-
3
- > Reference for: NestJS Expert
4
- > Load when: Express migration, Express to NestJS, converting Express app, porting Node.js API, migrating from Express, rewriting Express application
5
-
6
- ---
7
-
8
- ## When to Use This Guide
9
-
10
- **Use when:**
11
- - Migrating existing Express.js applications to NestJS
12
- - Modernizing legacy Node.js APIs with structured architecture
13
- - Adding TypeScript and dependency injection to Express codebases
14
- - Scaling Express applications requiring better organization
15
- - Team needs enforced architectural patterns and conventions
16
- - Application complexity justifies framework overhead
17
-
18
- **When NOT to Use:**
19
-
20
- - Simple CRUD APIs with < 10 endpoints (Express may be sufficient)
21
- - Serverless functions requiring minimal cold start time
22
- - Prototypes or MVPs where speed > structure
23
- - Team lacks TypeScript experience and timeline is tight
24
- - Performance-critical microservices where framework overhead matters
25
- - Projects with unique architectural requirements conflicting with NestJS patterns
26
-
27
- ---
28
-
29
- ## Concept Mapping: Express → NestJS
30
-
31
- | Express Concept | NestJS Equivalent | Key Difference |
32
- |----------------|-------------------|----------------|
33
- | `app.get('/path', handler)` | `@Get('/path')` decorator | Declarative vs imperative |
34
- | Middleware functions | Guards, Interceptors, Pipes | Specialized by purpose |
35
- | `req.params`, `req.body` | `@Param()`, `@Body()` decorators | Automatic injection |
36
- | Manual `require()` | Dependency Injection | IoC container managed |
37
- | `express.Router()` | Controller classes | Object-oriented grouping |
38
- | `app.use(express.json())` | Built-in body parsing | Automatic configuration |
39
- | Error handling middleware | Exception Filters | Class-based with inheritance |
40
- | `app.listen(3000)` | `NestFactory.create()` | Bootstrap pattern |
41
- | Custom validation | `class-validator` pipes | Decorator-based validation |
42
- | Manual service instances | Provider registration | Singleton by default |
43
-
44
- ---
45
-
46
- ## Architecture Comparison
47
-
48
- ### Express Application Structure
49
-
50
- ```
51
- src/
52
- ├── routes/
53
- │ ├── users.js
54
- │ └── posts.js
55
- ├── controllers/
56
- │ ├── userController.js
57
- │ └── postController.js
58
- ├── services/
59
- │ ├── userService.js
60
- │ └── postService.js
61
- ├── middleware/
62
- │ ├── auth.js
63
- │ └── errorHandler.js
64
- └── app.js
65
- ```
66
-
67
- ### NestJS Application Structure
68
-
69
- ```
70
- src/
71
- ├── users/
72
- │ ├── users.controller.ts
73
- │ ├── users.service.ts
74
- │ ├── users.module.ts
75
- │ ├── dto/
76
- │ │ ├── create-user.dto.ts
77
- │ │ └── update-user.dto.ts
78
- │ └── entities/
79
- │ └── user.entity.ts
80
- ├── posts/
81
- │ ├── posts.controller.ts
82
- │ ├── posts.service.ts
83
- │ └── posts.module.ts
84
- ├── common/
85
- │ ├── guards/
86
- │ ├── interceptors/
87
- │ └── filters/
88
- ├── app.module.ts
89
- └── main.ts
90
- ```
91
-
92
- ---
93
-
94
- ## Migration Pattern: Route Handler → Controller
95
-
96
- ### Before: Express Route Handler
97
-
98
- ```typescript
99
- // routes/users.js
100
- const express = require('express');
101
- const router = express.Router();
102
- const UserService = require('../services/userService');
103
-
104
- const userService = new UserService();
105
-
106
- router.get('/', async (req, res, next) => {
107
- try {
108
- const page = parseInt(req.query.page) || 1;
109
- const limit = parseInt(req.query.limit) || 10;
110
-
111
- const users = await userService.findAll(page, limit);
112
- res.json({
113
- success: true,
114
- data: users,
115
- page,
116
- limit
117
- });
118
- } catch (error) {
119
- next(error);
120
- }
121
- });
122
-
123
- router.get('/:id', async (req, res, next) => {
124
- try {
125
- const user = await userService.findById(req.params.id);
126
- if (!user) {
127
- return res.status(404).json({
128
- success: false,
129
- message: 'User not found'
130
- });
131
- }
132
- res.json({ success: true, data: user });
133
- } catch (error) {
134
- next(error);
135
- }
136
- });
137
-
138
- router.post('/', async (req, res, next) => {
139
- try {
140
- const { email, name } = req.body;
141
-
142
- // Manual validation
143
- if (!email || !name) {
144
- return res.status(400).json({
145
- success: false,
146
- message: 'Email and name are required'
147
- });
148
- }
149
-
150
- const user = await userService.create({ email, name });
151
- res.status(201).json({ success: true, data: user });
152
- } catch (error) {
153
- next(error);
154
- }
155
- });
156
-
157
- module.exports = router;
158
- ```
159
-
160
- ### After: NestJS Controller
161
-
162
- ```typescript
163
- // users/dto/create-user.dto.ts
164
- import { IsEmail, IsNotEmpty, IsString, MinLength } from 'class-validator';
165
-
166
- export class CreateUserDto {
167
- @IsEmail()
168
- @IsNotEmpty()
169
- email: string;
170
-
171
- @IsString()
172
- @MinLength(2)
173
- name: string;
174
- }
175
-
176
- // users/dto/pagination-query.dto.ts
177
- import { IsOptional, IsInt, Min, Max } from 'class-validator';
178
- import { Type } from 'class-transformer';
179
-
180
- export class PaginationQueryDto {
181
- @IsOptional()
182
- @Type(() => Number)
183
- @IsInt()
184
- @Min(1)
185
- page?: number = 1;
186
-
187
- @IsOptional()
188
- @Type(() => Number)
189
- @IsInt()
190
- @Min(1)
191
- @Max(100)
192
- limit?: number = 10;
193
- }
194
-
195
- // users/users.controller.ts
196
- import {
197
- Controller,
198
- Get,
199
- Post,
200
- Body,
201
- Param,
202
- Query,
203
- HttpCode,
204
- HttpStatus,
205
- ParseIntPipe,
206
- } from '@nestjs/common';
207
- import { UsersService } from './users.service';
208
- import { CreateUserDto } from './dto/create-user.dto';
209
- import { PaginationQueryDto } from './dto/pagination-query.dto';
210
-
211
- @Controller('users')
212
- export class UsersController {
213
- constructor(private readonly usersService: UsersService) {}
214
-
215
- @Get()
216
- async findAll(@Query() query: PaginationQueryDto) {
217
- const users = await this.usersService.findAll(query.page, query.limit);
218
- return {
219
- success: true,
220
- data: users,
221
- page: query.page,
222
- limit: query.limit,
223
- };
224
- }
225
-
226
- @Get(':id')
227
- async findOne(@Param('id', ParseIntPipe) id: number) {
228
- const user = await this.usersService.findById(id);
229
- return { success: true, data: user };
230
- }
231
-
232
- @Post()
233
- @HttpCode(HttpStatus.CREATED)
234
- async create(@Body() createUserDto: CreateUserDto) {
235
- const user = await this.usersService.create(createUserDto);
236
- return { success: true, data: user };
237
- }
238
- }
239
- ```
240
-
241
- ---
242
-
243
- ## Migration Pattern: Middleware → Guards/Interceptors
244
-
245
- ### Before: Express Authentication Middleware
246
-
247
- ```typescript
248
- // middleware/auth.js
249
- const jwt = require('jsonwebtoken');
250
-
251
- function authMiddleware(req, res, next) {
252
- const token = req.headers.authorization?.split(' ')[1];
253
-
254
- if (!token) {
255
- return res.status(401).json({
256
- success: false,
257
- message: 'No token provided'
258
- });
259
- }
260
-
261
- try {
262
- const decoded = jwt.verify(token, process.env.JWT_SECRET);
263
- req.user = decoded;
264
- next();
265
- } catch (error) {
266
- return res.status(401).json({
267
- success: false,
268
- message: 'Invalid token'
269
- });
270
- }
271
- }
272
-
273
- // Usage in routes
274
- router.get('/profile', authMiddleware, async (req, res) => {
275
- const user = await userService.findById(req.user.id);
276
- res.json({ success: true, data: user });
277
- });
278
- ```
279
-
280
- ### After: NestJS Guard
281
-
282
- ```typescript
283
- // common/guards/jwt-auth.guard.ts
284
- import {
285
- Injectable,
286
- CanActivate,
287
- ExecutionContext,
288
- UnauthorizedException,
289
- } from '@nestjs/common';
290
- import { JwtService } from '@nestjs/jwt';
291
- import { Request } from 'express';
292
-
293
- @Injectable()
294
- export class JwtAuthGuard implements CanActivate {
295
- constructor(private jwtService: JwtService) {}
296
-
297
- async canActivate(context: ExecutionContext): Promise<boolean> {
298
- const request = context.switchToHttp().getRequest<Request>();
299
- const token = this.extractTokenFromHeader(request);
300
-
301
- if (!token) {
302
- throw new UnauthorizedException('No token provided');
303
- }
304
-
305
- try {
306
- const payload = await this.jwtService.verifyAsync(token);
307
- request['user'] = payload;
308
- } catch {
309
- throw new UnauthorizedException('Invalid token');
310
- }
311
-
312
- return true;
313
- }
314
-
315
- private extractTokenFromHeader(request: Request): string | undefined {
316
- const [type, token] = request.headers.authorization?.split(' ') ?? [];
317
- return type === 'Bearer' ? token : undefined;
318
- }
319
- }
320
-
321
- // Usage in controller
322
- import { UseGuards } from '@nestjs/common';
323
- import { JwtAuthGuard } from '../common/guards/jwt-auth.guard';
324
-
325
- @Controller('users')
326
- export class UsersController {
327
- @Get('profile')
328
- @UseGuards(JwtAuthGuard)
329
- async getProfile(@Request() req) {
330
- return this.usersService.findById(req.user.id);
331
- }
332
- }
333
- ```
334
-
335
- ### Before: Express Logging Middleware
336
-
337
- ```typescript
338
- // middleware/logger.js
339
- function loggerMiddleware(req, res, next) {
340
- const start = Date.now();
341
-
342
- res.on('finish', () => {
343
- const duration = Date.now() - start;
344
- console.log(`${req.method} ${req.path} - ${res.statusCode} - ${duration}ms`);
345
- });
346
-
347
- next();
348
- }
349
-
350
- // app.js
351
- app.use(loggerMiddleware);
352
- ```
353
-
354
- ### After: NestJS Interceptor
355
-
356
- ```typescript
357
- // common/interceptors/logging.interceptor.ts
358
- import {
359
- Injectable,
360
- NestInterceptor,
361
- ExecutionContext,
362
- CallHandler,
363
- Logger,
364
- } from '@nestjs/common';
365
- import { Observable } from 'rxjs';
366
- import { tap } from 'rxjs/operators';
367
-
368
- @Injectable()
369
- export class LoggingInterceptor implements NestInterceptor {
370
- private readonly logger = new Logger(LoggingInterceptor.name);
371
-
372
- intercept(context: ExecutionContext, next: CallHandler): Observable<any> {
373
- const request = context.switchToHttp().getRequest();
374
- const { method, url } = request;
375
- const start = Date.now();
376
-
377
- return next.handle().pipe(
378
- tap(() => {
379
- const response = context.switchToHttp().getResponse();
380
- const duration = Date.now() - start;
381
- this.logger.log(
382
- `${method} ${url} - ${response.statusCode} - ${duration}ms`,
383
- );
384
- }),
385
- );
386
- }
387
- }
388
-
389
- // main.ts - Apply globally
390
- import { NestFactory } from '@nestjs/core';
391
- import { AppModule } from './app.module';
392
- import { LoggingInterceptor } from './common/interceptors/logging.interceptor';
393
-
394
- async function bootstrap() {
395
- const app = await NestFactory.create(AppModule);
396
- app.useGlobalInterceptors(new LoggingInterceptor());
397
- await app.listen(3000);
398
- }
399
- bootstrap();
400
- ```
401
-
402
- ---
403
-
404
- ## Migration Pattern: Dependency Injection
405
-
406
- ### Before: Express Manual Instantiation
407
-
408
- ```typescript
409
- // services/userService.js
410
- const UserRepository = require('../repositories/userRepository');
411
- const EmailService = require('./emailService');
412
-
413
- class UserService {
414
- constructor() {
415
- this.userRepository = new UserRepository();
416
- this.emailService = new EmailService();
417
- }
418
-
419
- async create(userData) {
420
- const user = await this.userRepository.create(userData);
421
- await this.emailService.sendWelcomeEmail(user.email);
422
- return user;
423
- }
424
- }
425
-
426
- module.exports = UserService;
427
-
428
- // controllers/userController.js
429
- const UserService = require('../services/userService');
430
- const userService = new UserService();
431
-
432
- async function createUser(req, res) {
433
- const user = await userService.create(req.body);
434
- res.json({ success: true, data: user });
435
- }
436
- ```
437
-
438
- ### After: NestJS Dependency Injection
439
-
440
- ```typescript
441
- // users/users.repository.ts
442
- import { Injectable } from '@nestjs/common';
443
- import { InjectRepository } from '@nestjs/typeorm';
444
- import { Repository } from 'typeorm';
445
- import { User } from './entities/user.entity';
446
-
447
- @Injectable()
448
- export class UsersRepository {
449
- constructor(
450
- @InjectRepository(User)
451
- private readonly repository: Repository<User>,
452
- ) {}
453
-
454
- async create(userData: Partial<User>): Promise<User> {
455
- const user = this.repository.create(userData);
456
- return this.repository.save(user);
457
- }
458
-
459
- async findById(id: number): Promise<User | null> {
460
- return this.repository.findOne({ where: { id } });
461
- }
462
- }
463
-
464
- // email/email.service.ts
465
- import { Injectable, Logger } from '@nestjs/common';
466
-
467
- @Injectable()
468
- export class EmailService {
469
- private readonly logger = new Logger(EmailService.name);
470
-
471
- async sendWelcomeEmail(email: string): Promise<void> {
472
- this.logger.log(`Sending welcome email to ${email}`);
473
- // Email sending logic
474
- }
475
- }
476
-
477
- // users/users.service.ts
478
- import { Injectable, NotFoundException } from '@nestjs/common';
479
- import { UsersRepository } from './users.repository';
480
- import { EmailService } from '../email/email.service';
481
- import { CreateUserDto } from './dto/create-user.dto';
482
- import { User } from './entities/user.entity';
483
-
484
- @Injectable()
485
- export class UsersService {
486
- constructor(
487
- private readonly usersRepository: UsersRepository,
488
- private readonly emailService: EmailService,
489
- ) {}
490
-
491
- async create(createUserDto: CreateUserDto): Promise<User> {
492
- const user = await this.usersRepository.create(createUserDto);
493
- await this.emailService.sendWelcomeEmail(user.email);
494
- return user;
495
- }
496
-
497
- async findById(id: number): Promise<User> {
498
- const user = await this.usersRepository.findById(id);
499
- if (!user) {
500
- throw new NotFoundException(`User with ID ${id} not found`);
501
- }
502
- return user;
503
- }
504
- }
505
-
506
- // users/users.module.ts
507
- import { Module } from '@nestjs/common';
508
- import { TypeOrmModule } from '@nestjs/typeorm';
509
- import { UsersController } from './users.controller';
510
- import { UsersService } from './users.service';
511
- import { UsersRepository } from './users.repository';
512
- import { User } from './entities/user.entity';
513
- import { EmailModule } from '../email/email.module';
514
-
515
- @Module({
516
- imports: [TypeOrmModule.forFeature([User]), EmailModule],
517
- controllers: [UsersController],
518
- providers: [UsersService, UsersRepository],
519
- exports: [UsersService],
520
- })
521
- export class UsersModule {}
522
- ```
523
-
524
- ---
525
-
526
- ## Migration Pattern: Error Handling
527
-
528
- ### Before: Express Error Middleware
529
-
530
- ```typescript
531
- // middleware/errorHandler.js
532
- function errorHandler(err, req, res, next) {
533
- console.error(err.stack);
534
-
535
- if (err.name === 'ValidationError') {
536
- return res.status(400).json({
537
- success: false,
538
- message: 'Validation failed',
539
- errors: err.errors
540
- });
541
- }
542
-
543
- if (err.name === 'UnauthorizedError') {
544
- return res.status(401).json({
545
- success: false,
546
- message: 'Unauthorized'
547
- });
548
- }
549
-
550
- res.status(500).json({
551
- success: false,
552
- message: 'Internal server error'
553
- });
554
- }
555
-
556
- // app.js
557
- app.use(errorHandler);
558
- ```
559
-
560
- ### After: NestJS Exception Filter
561
-
562
- ```typescript
563
- // common/filters/http-exception.filter.ts
564
- import {
565
- ExceptionFilter,
566
- Catch,
567
- ArgumentsHost,
568
- HttpException,
569
- HttpStatus,
570
- Logger,
571
- } from '@nestjs/common';
572
- import { Request, Response } from 'express';
573
-
574
- @Catch()
575
- export class HttpExceptionFilter implements ExceptionFilter {
576
- private readonly logger = new Logger(HttpExceptionFilter.name);
577
-
578
- catch(exception: unknown, host: ArgumentsHost) {
579
- const ctx = host.switchToHttp();
580
- const response = ctx.getResponse<Response>();
581
- const request = ctx.getRequest<Request>();
582
-
583
- let status = HttpStatus.INTERNAL_SERVER_ERROR;
584
- let message = 'Internal server error';
585
- let errors: any = undefined;
586
-
587
- if (exception instanceof HttpException) {
588
- status = exception.getStatus();
589
- const exceptionResponse = exception.getResponse();
590
-
591
- if (typeof exceptionResponse === 'object') {
592
- message = (exceptionResponse as any).message || message;
593
- errors = (exceptionResponse as any).errors;
594
- } else {
595
- message = exceptionResponse;
596
- }
597
- } else if (exception instanceof Error) {
598
- message = exception.message;
599
- this.logger.error(exception.stack);
600
- }
601
-
602
- response.status(status).json({
603
- success: false,
604
- statusCode: status,
605
- message,
606
- errors,
607
- timestamp: new Date().toISOString(),
608
- path: request.url,
609
- });
610
- }
611
- }
612
-
613
- // main.ts
614
- import { NestFactory } from '@nestjs/core';
615
- import { AppModule } from './app.module';
616
- import { HttpExceptionFilter } from './common/filters/http-exception.filter';
617
-
618
- async function bootstrap() {
619
- const app = await NestFactory.create(AppModule);
620
- app.useGlobalFilters(new HttpExceptionFilter());
621
- await app.listen(3000);
622
- }
623
- bootstrap();
624
- ```
625
-
626
- ---
627
-
628
- ## Migration Pattern: Validation
629
-
630
- ### Before: Express with express-validator
631
-
632
- ```typescript
633
- // routes/users.js
634
- const { body, validationResult } = require('express-validator');
635
-
636
- router.post(
637
- '/',
638
- [
639
- body('email').isEmail().normalizeEmail(),
640
- body('name').trim().isLength({ min: 2, max: 50 }),
641
- body('age').optional().isInt({ min: 0, max: 120 }),
642
- ],
643
- async (req, res, next) => {
644
- const errors = validationResult(req);
645
- if (!errors.isEmpty()) {
646
- return res.status(400).json({
647
- success: false,
648
- errors: errors.array()
649
- });
650
- }
651
-
652
- try {
653
- const user = await userService.create(req.body);
654
- res.status(201).json({ success: true, data: user });
655
- } catch (error) {
656
- next(error);
657
- }
658
- }
659
- );
660
- ```
661
-
662
- ### After: NestJS with class-validator
663
-
664
- ```typescript
665
- // users/dto/create-user.dto.ts
666
- import {
667
- IsEmail,
668
- IsNotEmpty,
669
- IsString,
670
- MinLength,
671
- MaxLength,
672
- IsOptional,
673
- IsInt,
674
- Min,
675
- Max,
676
- } from 'class-validator';
677
- import { Transform } from 'class-transformer';
678
-
679
- export class CreateUserDto {
680
- @IsEmail()
681
- @IsNotEmpty()
682
- @Transform(({ value }) => value.toLowerCase().trim())
683
- email: string;
684
-
685
- @IsString()
686
- @MinLength(2)
687
- @MaxLength(50)
688
- @Transform(({ value }) => value.trim())
689
- name: string;
690
-
691
- @IsOptional()
692
- @IsInt()
693
- @Min(0)
694
- @Max(120)
695
- age?: number;
696
- }
697
-
698
- // users/users.controller.ts
699
- import { Controller, Post, Body, ValidationPipe } from '@nestjs/common';
700
- import { UsersService } from './users.service';
701
- import { CreateUserDto } from './dto/create-user.dto';
702
-
703
- @Controller('users')
704
- export class UsersController {
705
- constructor(private readonly usersService: UsersService) {}
706
-
707
- @Post()
708
- async create(@Body(ValidationPipe) createUserDto: CreateUserDto) {
709
- const user = await this.usersService.create(createUserDto);
710
- return { success: true, data: user };
711
- }
712
- }
713
-
714
- // main.ts - Global validation pipe
715
- import { ValidationPipe } from '@nestjs/common';
716
-
717
- async function bootstrap() {
718
- const app = await NestFactory.create(AppModule);
719
- app.useGlobalPipes(
720
- new ValidationPipe({
721
- whitelist: true, // Strip non-whitelisted properties
722
- forbidNonWhitelisted: true, // Throw error for non-whitelisted
723
- transform: true, // Auto-transform payloads to DTO instances
724
- transformOptions: {
725
- enableImplicitConversion: true,
726
- },
727
- }),
728
- );
729
- await app.listen(3000);
730
- }
731
- ```
732
-
733
- ---
734
-
735
- ## Migration Pattern: Testing
736
-
737
- ### Before: Express with Mocha/Chai
738
-
739
- ```typescript
740
- // test/users.test.js
741
- const request = require('supertest');
742
- const { expect } = require('chai');
743
- const app = require('../src/app');
744
-
745
- describe('Users API', () => {
746
- describe('POST /users', () => {
747
- it('should create a new user', async () => {
748
- const userData = {
749
- email: 'test@example.com',
750
- name: 'Test User'
751
- };
752
-
753
- const response = await request(app)
754
- .post('/users')
755
- .send(userData)
756
- .expect(201);
757
-
758
- expect(response.body.success).to.be.true;
759
- expect(response.body.data).to.have.property('id');
760
- expect(response.body.data.email).to.equal(userData.email);
761
- });
762
-
763
- it('should return 400 for invalid email', async () => {
764
- const response = await request(app)
765
- .post('/users')
766
- .send({ email: 'invalid', name: 'Test' })
767
- .expect(400);
768
-
769
- expect(response.body.success).to.be.false;
770
- });
771
- });
772
- });
773
- ```
774
-
775
- ### After: NestJS with Jest
776
-
777
- ```typescript
778
- // users/users.controller.spec.ts
779
- import { Test, TestingModule } from '@nestjs/testing';
780
- import { UsersController } from './users.controller';
781
- import { UsersService } from './users.service';
782
- import { CreateUserDto } from './dto/create-user.dto';
783
-
784
- describe('UsersController', () => {
785
- let controller: UsersController;
786
- let service: UsersService;
787
-
788
- const mockUsersService = {
789
- create: jest.fn(),
790
- findById: jest.fn(),
791
- findAll: jest.fn(),
792
- };
793
-
794
- beforeEach(async () => {
795
- const module: TestingModule = await Test.createTestingModule({
796
- controllers: [UsersController],
797
- providers: [
798
- {
799
- provide: UsersService,
800
- useValue: mockUsersService,
801
- },
802
- ],
803
- }).compile();
804
-
805
- controller = module.get<UsersController>(UsersController);
806
- service = module.get<UsersService>(UsersService);
807
- });
808
-
809
- afterEach(() => {
810
- jest.clearAllMocks();
811
- });
812
-
813
- describe('create', () => {
814
- it('should create a new user', async () => {
815
- const createUserDto: CreateUserDto = {
816
- email: 'test@example.com',
817
- name: 'Test User',
818
- };
819
-
820
- const expectedUser = {
821
- id: 1,
822
- ...createUserDto,
823
- createdAt: new Date(),
824
- };
825
-
826
- mockUsersService.create.mockResolvedValue(expectedUser);
827
-
828
- const result = await controller.create(createUserDto);
829
-
830
- expect(result.success).toBe(true);
831
- expect(result.data).toEqual(expectedUser);
832
- expect(service.create).toHaveBeenCalledWith(createUserDto);
833
- expect(service.create).toHaveBeenCalledTimes(1);
834
- });
835
- });
836
-
837
- describe('findOne', () => {
838
- it('should return a user by id', async () => {
839
- const userId = 1;
840
- const expectedUser = {
841
- id: userId,
842
- email: 'test@example.com',
843
- name: 'Test User',
844
- };
845
-
846
- mockUsersService.findById.mockResolvedValue(expectedUser);
847
-
848
- const result = await controller.findOne(userId);
849
-
850
- expect(result.data).toEqual(expectedUser);
851
- expect(service.findById).toHaveBeenCalledWith(userId);
852
- });
853
- });
854
- });
855
-
856
- // users/users.service.spec.ts
857
- import { Test, TestingModule } from '@nestjs/testing';
858
- import { NotFoundException } from '@nestjs/common';
859
- import { UsersService } from './users.service';
860
- import { UsersRepository } from './users.repository';
861
- import { EmailService } from '../email/email.service';
862
-
863
- describe('UsersService', () => {
864
- let service: UsersService;
865
- let repository: UsersRepository;
866
- let emailService: EmailService;
867
-
868
- const mockUsersRepository = {
869
- create: jest.fn(),
870
- findById: jest.fn(),
871
- };
872
-
873
- const mockEmailService = {
874
- sendWelcomeEmail: jest.fn(),
875
- };
876
-
877
- beforeEach(async () => {
878
- const module: TestingModule = await Test.createTestingModule({
879
- providers: [
880
- UsersService,
881
- {
882
- provide: UsersRepository,
883
- useValue: mockUsersRepository,
884
- },
885
- {
886
- provide: EmailService,
887
- useValue: mockEmailService,
888
- },
889
- ],
890
- }).compile();
891
-
892
- service = module.get<UsersService>(UsersService);
893
- repository = module.get<UsersRepository>(UsersRepository);
894
- emailService = module.get<EmailService>(EmailService);
895
- });
896
-
897
- describe('create', () => {
898
- it('should create user and send welcome email', async () => {
899
- const createUserDto = {
900
- email: 'test@example.com',
901
- name: 'Test User',
902
- };
903
-
904
- const createdUser = { id: 1, ...createUserDto };
905
-
906
- mockUsersRepository.create.mockResolvedValue(createdUser);
907
- mockEmailService.sendWelcomeEmail.mockResolvedValue(undefined);
908
-
909
- const result = await service.create(createUserDto);
910
-
911
- expect(result).toEqual(createdUser);
912
- expect(repository.create).toHaveBeenCalledWith(createUserDto);
913
- expect(emailService.sendWelcomeEmail).toHaveBeenCalledWith(
914
- createUserDto.email,
915
- );
916
- });
917
- });
918
-
919
- describe('findById', () => {
920
- it('should throw NotFoundException when user not found', async () => {
921
- mockUsersRepository.findById.mockResolvedValue(null);
922
-
923
- await expect(service.findById(999)).rejects.toThrow(NotFoundException);
924
- await expect(service.findById(999)).rejects.toThrow(
925
- 'User with ID 999 not found',
926
- );
927
- });
928
- });
929
- });
930
-
931
- // E2E Testing
932
- // test/users.e2e-spec.ts
933
- import { Test, TestingModule } from '@nestjs/testing';
934
- import { INestApplication, ValidationPipe } from '@nestjs/common';
935
- import * as request from 'supertest';
936
- import { AppModule } from '../src/app.module';
937
-
938
- describe('UsersController (e2e)', () => {
939
- let app: INestApplication;
940
-
941
- beforeAll(async () => {
942
- const moduleFixture: TestingModule = await Test.createTestingModule({
943
- imports: [AppModule],
944
- }).compile();
945
-
946
- app = moduleFixture.createNestApplication();
947
- app.useGlobalPipes(new ValidationPipe());
948
- await app.init();
949
- });
950
-
951
- afterAll(async () => {
952
- await app.close();
953
- });
954
-
955
- describe('/users (POST)', () => {
956
- it('should create a new user', () => {
957
- return request(app.getHttpServer())
958
- .post('/users')
959
- .send({
960
- email: 'test@example.com',
961
- name: 'Test User',
962
- })
963
- .expect(201)
964
- .expect((res) => {
965
- expect(res.body.success).toBe(true);
966
- expect(res.body.data).toHaveProperty('id');
967
- expect(res.body.data.email).toBe('test@example.com');
968
- });
969
- });
970
-
971
- it('should return 400 for invalid email', () => {
972
- return request(app.getHttpServer())
973
- .post('/users')
974
- .send({
975
- email: 'invalid-email',
976
- name: 'Test',
977
- })
978
- .expect(400);
979
- });
980
- });
981
- });
982
- ```
983
-
984
- ---
985
-
986
- ## Incremental Migration Strategy
987
-
988
- ### Strategy 1: Strangler Fig Pattern (Recommended)
989
-
990
- Gradually replace Express routes with NestJS while both run simultaneously.
991
-
992
- **Cross-reference:** See `steering/strangler-fig-pattern.md` for detailed implementation.
993
-
994
- ```typescript
995
- // main.ts - Running both Express and NestJS
996
- import { NestFactory } from '@nestjs/core';
997
- import { AppModule } from './app.module';
998
- import * as express from 'express';
999
- import { expressApp } from './legacy/express-app';
1000
-
1001
- async function bootstrap() {
1002
- const nestApp = await NestFactory.create(AppModule);
1003
-
1004
- // Proxy middleware to route between NestJS and Express
1005
- const app = express();
1006
-
1007
- // NestJS routes (new implementation)
1008
- app.use('/api/v2', nestApp.getHttpAdapter().getInstance());
1009
-
1010
- // Express routes (legacy)
1011
- app.use('/api', expressApp);
1012
-
1013
- await app.listen(3000);
1014
- }
1015
- bootstrap();
1016
- ```
1017
-
1018
- **Migration steps:**
1019
- 1. Set up NestJS alongside Express
1020
- 2. Migrate one module at a time to NestJS
1021
- 3. Route new endpoints to NestJS, old to Express
1022
- 4. Update frontend/clients to use new endpoints
1023
- 5. Remove Express routes once fully migrated
1024
- 6. Decommission Express app
1025
-
1026
- ### Strategy 2: Module-by-Module Migration
1027
-
1028
- Migrate complete feature modules sequentially.
1029
-
1030
- ```
1031
- Phase 1: Authentication (Week 1-2)
1032
- - Migrate auth middleware → Guards
1033
- - Migrate JWT handling → @nestjs/jwt
1034
- - Test authentication flows
1035
- - Deploy with feature flag
1036
-
1037
- Phase 2: Users Module (Week 3-4)
1038
- - Migrate user routes → Controllers
1039
- - Migrate user service → Providers
1040
- - Add validation with DTOs
1041
- - Write tests
1042
-
1043
- Phase 3: Posts Module (Week 5-6)
1044
- ...
1045
- ```
1046
-
1047
- ### Strategy 3: Adapter Pattern for Gradual DI Migration
1048
-
1049
- Wrap Express services in NestJS providers during transition.
1050
-
1051
- ```typescript
1052
- // Adapter for legacy Express service
1053
- import { Injectable } from '@nestjs/common';
1054
- const LegacyUserService = require('../legacy/services/userService');
1055
-
1056
- @Injectable()
1057
- export class UserServiceAdapter {
1058
- private legacyService = new LegacyUserService();
1059
-
1060
- async findAll(): Promise<any[]> {
1061
- return this.legacyService.findAll();
1062
- }
1063
-
1064
- async create(data: any): Promise<any> {
1065
- return this.legacyService.create(data);
1066
- }
1067
- }
1068
-
1069
- // Use in NestJS controller while migrating
1070
- @Controller('users')
1071
- export class UsersController {
1072
- constructor(private readonly userService: UserServiceAdapter) {}
1073
-
1074
- @Get()
1075
- async findAll() {
1076
- return this.userService.findAll();
1077
- }
1078
- }
1079
- ```
1080
-
1081
- ---
1082
-
1083
- ## Common Pitfalls
1084
-
1085
- ### 1. Over-engineering Simple Applications
1086
-
1087
- **Problem:** Migrating a 500-line Express app to full NestJS with modules, DTOs, repositories, guards, etc.
1088
-
1089
- **Solution:** Evaluate if NestJS complexity is justified. Consider keeping simple APIs in Express.
1090
-
1091
- ### 2. Not Understanding Dependency Injection Lifecycle
1092
-
1093
- **Problem:**
1094
- ```typescript
1095
- // WRONG - Creates new instance, bypassing DI
1096
- @Injectable()
1097
- export class UsersService {
1098
- constructor() {
1099
- this.emailService = new EmailService(); // Don't do this!
1100
- }
1101
- }
1102
- ```
1103
-
1104
- **Solution:**
1105
- ```typescript
1106
- // CORRECT - Let NestJS inject dependencies
1107
- @Injectable()
1108
- export class UsersService {
1109
- constructor(private readonly emailService: EmailService) {}
1110
- }
1111
- ```
1112
-
1113
- ### 3. Mixing Middleware and Guards Incorrectly
1114
-
1115
- **Problem:** Using Express middleware for authentication instead of Guards, losing NestJS benefits.
1116
-
1117
- **Solution:** Use Guards for authentication/authorization, Interceptors for logging/transformation, Middleware only for Express-specific needs.
1118
-
1119
- ### 4. Ignoring Validation Pipes
1120
-
1121
- **Problem:** Manual validation in controllers like Express.
1122
-
1123
- ```typescript
1124
- // WRONG - Manual validation
1125
- @Post()
1126
- async create(@Body() body: any) {
1127
- if (!body.email) {
1128
- throw new BadRequestException('Email required');
1129
- }
1130
- // ...
1131
- }
1132
- ```
1133
-
1134
- **Solution:**
1135
- ```typescript
1136
- // CORRECT - Use DTOs with class-validator
1137
- @Post()
1138
- async create(@Body() createUserDto: CreateUserDto) {
1139
- // Validation happens automatically
1140
- return this.usersService.create(createUserDto);
1141
- }
1142
- ```
1143
-
1144
- ### 5. Not Leveraging Module Imports/Exports
1145
-
1146
- **Problem:** Circular dependencies and tightly coupled modules.
1147
-
1148
- **Solution:** Properly structure module imports/exports. Use forwardRef() for circular dependencies.
1149
-
1150
- ```typescript
1151
- @Module({
1152
- imports: [TypeOrmModule.forFeature([User]), EmailModule],
1153
- providers: [UsersService, UsersRepository],
1154
- exports: [UsersService], // Export for other modules
1155
- })
1156
- export class UsersModule {}
1157
- ```
1158
-
1159
- ### 6. Forgetting to Enable CORS
1160
-
1161
- **Problem:** CORS working in Express but failing in NestJS.
1162
-
1163
- **Solution:**
1164
- ```typescript
1165
- // main.ts
1166
- const app = await NestFactory.create(AppModule);
1167
- app.enableCors({
1168
- origin: process.env.ALLOWED_ORIGINS?.split(','),
1169
- credentials: true,
1170
- });
1171
- ```
1172
-
1173
- ### 7. Incorrect Exception Handling
1174
-
1175
- **Problem:** Using Express error middleware patterns.
1176
-
1177
- **Solution:** Use NestJS built-in exceptions and filters.
1178
-
1179
- ```typescript
1180
- // Throw NestJS exceptions
1181
- throw new NotFoundException('User not found');
1182
- throw new BadRequestException('Invalid input');
1183
- throw new UnauthorizedException('Invalid credentials');
1184
- ```
1185
-
1186
- ### 8. Not Configuring ValidationPipe Globally
1187
-
1188
- **Problem:** Validation inconsistent across endpoints.
1189
-
1190
- **Solution:**
1191
- ```typescript
1192
- // main.ts
1193
- app.useGlobalPipes(
1194
- new ValidationPipe({
1195
- whitelist: true,
1196
- forbidNonWhitelisted: true,
1197
- transform: true,
1198
- }),
1199
- );
1200
- ```
1201
-
1202
- ---
1203
-
1204
- ## Migration Checklist
1205
-
1206
- **Pre-Migration:**
1207
- - [ ] Audit existing Express codebase structure
1208
- - [ ] Document all routes and dependencies
1209
- - [ ] Identify shared services and utilities
1210
- - [ ] Plan module boundaries
1211
- - [ ] Set up NestJS project structure
1212
-
1213
- **During Migration:**
1214
- - [ ] Migrate DTOs and validation rules
1215
- - [ ] Convert route handlers to controllers
1216
- - [ ] Refactor services for dependency injection
1217
- - [ ] Implement guards for authentication
1218
- - [ ] Create interceptors for cross-cutting concerns
1219
- - [ ] Add exception filters
1220
- - [ ] Write unit tests for each component
1221
- - [ ] Write e2e tests for critical flows
1222
-
1223
- **Post-Migration:**
1224
- - [ ] Performance testing and optimization
1225
- - [ ] Update API documentation
1226
- - [ ] Configure logging and monitoring
1227
- - [ ] Set up CI/CD for NestJS
1228
- - [ ] Train team on NestJS patterns
1229
- - [ ] Remove Express dependencies
1230
- - [ ] Refactor for NestJS best practices
1231
-
1232
- ---
1233
-
1234
- ## Additional Resources
1235
-
1236
- - NestJS Official Documentation: https://docs.nestjs.com
1237
- - NestJS Migration Guide: https://docs.nestjs.com/migration-guide
1238
- - class-validator Decorators: https://github.com/typestack/class-validator
1239
- - TypeORM with NestJS: https://docs.nestjs.com/techniques/database
1240
- - Testing Guide: https://docs.nestjs.com/fundamentals/testing