@danieljvdm/dev-kit 1.0.2 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (329) hide show
  1. package/README.md +6 -6
  2. package/package.json +1 -1
  3. package/skill-sources.jsonc +2 -33
  4. package/skill-sources.lock.json +15 -117
  5. package/skills/animate/LICENSE +21 -0
  6. package/skills/animate/NOTICE +10 -0
  7. package/skills/animate/SKILL.md +34 -0
  8. package/skills/animate/references/gestures.md +27 -0
  9. package/skills/animate/references/glossary.md +136 -0
  10. package/skills/animate/references/implementation.md +22 -0
  11. package/skills/animate/references/opportunities.md +18 -0
  12. package/skills/animate/references/principles.md +48 -0
  13. package/skills/animate/references/review.md +19 -0
  14. package/skills/cloudflare-workers/LICENSE +202 -0
  15. package/skills/cloudflare-workers/NOTICE +9 -0
  16. package/skills/cloudflare-workers/SKILL.md +26 -0
  17. package/skills/cloudflare-workers/references/durable-objects.md +68 -0
  18. package/skills/cloudflare-workers/references/sandbox.md +48 -0
  19. package/skills/cloudflare-workers/references/workers.md +63 -0
  20. package/skills/cloudflare-workers/references/wrangler.md +56 -0
  21. package/skills/design-ui/LICENSE +21 -0
  22. package/skills/design-ui/NOTICE +8 -0
  23. package/skills/design-ui/SKILL.md +29 -0
  24. package/skills/design-ui/references/appearance.md +22 -0
  25. package/skills/design-ui/references/components.md +33 -0
  26. package/skills/design-ui/references/exploration.md +50 -0
  27. package/skills/design-ui/references/libraries.md +39 -0
  28. package/skills/design-ui/references/themes.md +23 -0
  29. package/skills/dev-kit/SKILL.md +19 -38
  30. package/skills/dev-kit/references/cloudflare-worker-api.md +1 -1
  31. package/skills/dev-kit/references/skills.md +2 -2
  32. package/skills/effect-development/SKILL.md +27 -0
  33. package/skills/effect-development/agents/openai.yaml +4 -0
  34. package/skills/effect-development/references/api/index.md +32 -0
  35. package/skills/effect-development/references/api/schema-codecs.md +15 -0
  36. package/skills/{build-effect-apis/references → effect-development/references/api}/verification.md +10 -5
  37. package/skills/{effect-architecture-audit/SKILL.md → effect-development/references/architecture/index.md} +1 -6
  38. package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-client.md +8 -6
  39. package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-testing.md +7 -2
  40. package/skills/effect-development/references/atom/index.md +40 -0
  41. package/skills/{build-effect-clis/references → effect-development/references/cli}/entrypoints-and-testing.md +6 -2
  42. package/skills/effect-development/references/cli/index.md +39 -0
  43. package/skills/effect-development/references/setup.md +15 -0
  44. package/skills/open-pull-request/SKILL.md +10 -70
  45. package/skills/open-pull-request/references/evidence.md +22 -0
  46. package/skills/open-pull-request/references/explanation.md +21 -0
  47. package/skills/open-pull-request/references/publication.md +21 -0
  48. package/skills/sentry/LICENSE +202 -0
  49. package/skills/sentry/LICENSE-UPSTREAM +21 -0
  50. package/skills/sentry/NOTICE +14 -0
  51. package/skills/sentry/SKILL.md +33 -0
  52. package/skills/sentry/references/alert-payloads.md +105 -0
  53. package/skills/sentry/references/alerts.md +17 -0
  54. package/skills/sentry/references/artifacts.md +25 -0
  55. package/skills/sentry/references/auth-token.md +65 -0
  56. package/skills/sentry/references/concepts/ai-monitoring.md +131 -0
  57. package/skills/sentry/references/concepts/choosing-a-signal.md +78 -0
  58. package/skills/sentry/references/concepts/crons.md +50 -0
  59. package/skills/sentry/references/concepts/data-scrubbing.md +43 -0
  60. package/skills/sentry/references/concepts/errors.md +40 -0
  61. package/skills/sentry/references/concepts/logging.md +85 -0
  62. package/skills/sentry/references/concepts/metrics.md +49 -0
  63. package/skills/sentry/references/concepts/monitors.md +78 -0
  64. package/skills/sentry/references/concepts/profiling.md +38 -0
  65. package/skills/sentry/references/concepts/reduce-volume.md +49 -0
  66. package/skills/sentry/references/concepts/releases.md +43 -0
  67. package/skills/sentry/references/concepts/session-replay.md +35 -0
  68. package/skills/sentry/references/concepts/tracing.md +54 -0
  69. package/skills/sentry/references/concepts/user-feedback.md +36 -0
  70. package/skills/sentry/references/debug-artifacts/android.md +68 -0
  71. package/skills/sentry/references/debug-artifacts/apple.md +96 -0
  72. package/skills/sentry/references/debug-artifacts/dotnet.md +70 -0
  73. package/skills/sentry/references/debug-artifacts/flutter.md +65 -0
  74. package/skills/sentry/references/debug-artifacts/index.md +75 -0
  75. package/skills/sentry/references/debug-artifacts/javascript.md +94 -0
  76. package/skills/sentry/references/debug-artifacts/matching.md +73 -0
  77. package/skills/sentry/references/debug-artifacts/react-native.md +75 -0
  78. package/skills/sentry/references/first-error-setup.md +25 -0
  79. package/skills/sentry/references/instrumentation.md +30 -0
  80. package/skills/sentry/references/issues.md +32 -0
  81. package/skills/sentry/references/new-project.md +17 -0
  82. package/skills/sentry/references/otel-exporter.md +30 -0
  83. package/skills/sentry/references/release-workflow.md +31 -0
  84. package/skills/sentry/references/releases/ci-pipeline.md +214 -0
  85. package/skills/sentry/references/releases/index.md +93 -0
  86. package/skills/sentry/references/releases/suspect-commits.md +155 -0
  87. package/skills/sentry/references/releases/tagging.md +131 -0
  88. package/skills/sentry/references/releases/troubleshooting.md +67 -0
  89. package/skills/sentry/references/sdks/android/crons.md +305 -0
  90. package/skills/sentry/references/sdks/android/error-monitoring.md +800 -0
  91. package/skills/sentry/references/sdks/android/index.md +748 -0
  92. package/skills/sentry/references/sdks/android/integrations.md +48 -0
  93. package/skills/sentry/references/sdks/android/logging.md +374 -0
  94. package/skills/sentry/references/sdks/android/metrics.md +288 -0
  95. package/skills/sentry/references/sdks/android/profiling.md +397 -0
  96. package/skills/sentry/references/sdks/android/session-replay.md +406 -0
  97. package/skills/sentry/references/sdks/android/tracing.md +861 -0
  98. package/skills/sentry/references/sdks/browser/error-monitoring.md +861 -0
  99. package/skills/sentry/references/sdks/browser/index.md +714 -0
  100. package/skills/sentry/references/sdks/browser/logging.md +315 -0
  101. package/skills/sentry/references/sdks/browser/profiling.md +236 -0
  102. package/skills/sentry/references/sdks/browser/session-replay.md +586 -0
  103. package/skills/sentry/references/sdks/browser/tracing.md +561 -0
  104. package/skills/sentry/references/sdks/browser/user-feedback.md +354 -0
  105. package/skills/sentry/references/sdks/cloudflare/ai-monitoring.md +661 -0
  106. package/skills/sentry/references/sdks/cloudflare/crons.md +231 -0
  107. package/skills/sentry/references/sdks/cloudflare/durable-objects.md +381 -0
  108. package/skills/sentry/references/sdks/cloudflare/error-monitoring.md +329 -0
  109. package/skills/sentry/references/sdks/cloudflare/index.md +698 -0
  110. package/skills/sentry/references/sdks/cloudflare/logging.md +169 -0
  111. package/skills/sentry/references/sdks/cloudflare/nodejs-compat.md +134 -0
  112. package/skills/sentry/references/sdks/cloudflare/tracing.md +475 -0
  113. package/skills/sentry/references/sdks/cocoa/error-monitoring.md +394 -0
  114. package/skills/sentry/references/sdks/cocoa/index.md +497 -0
  115. package/skills/sentry/references/sdks/cocoa/logging.md +209 -0
  116. package/skills/sentry/references/sdks/cocoa/metrics.md +136 -0
  117. package/skills/sentry/references/sdks/cocoa/profiling.md +223 -0
  118. package/skills/sentry/references/sdks/cocoa/session-replay.md +257 -0
  119. package/skills/sentry/references/sdks/cocoa/tracing.md +524 -0
  120. package/skills/sentry/references/sdks/cocoa/user-feedback.md +310 -0
  121. package/skills/sentry/references/sdks/dotnet/crons.md +465 -0
  122. package/skills/sentry/references/sdks/dotnet/error-monitoring.md +1100 -0
  123. package/skills/sentry/references/sdks/dotnet/index.md +614 -0
  124. package/skills/sentry/references/sdks/dotnet/logging.md +556 -0
  125. package/skills/sentry/references/sdks/dotnet/metrics.md +229 -0
  126. package/skills/sentry/references/sdks/dotnet/profiling.md +296 -0
  127. package/skills/sentry/references/sdks/dotnet/tracing.md +897 -0
  128. package/skills/sentry/references/sdks/elixir/crons.md +371 -0
  129. package/skills/sentry/references/sdks/elixir/error-monitoring.md +335 -0
  130. package/skills/sentry/references/sdks/elixir/index.md +383 -0
  131. package/skills/sentry/references/sdks/elixir/logging.md +239 -0
  132. package/skills/sentry/references/sdks/elixir/tracing.md +233 -0
  133. package/skills/sentry/references/sdks/flutter/ecosystem-integrations.md +70 -0
  134. package/skills/sentry/references/sdks/flutter/error-monitoring.md +312 -0
  135. package/skills/sentry/references/sdks/flutter/index.md +728 -0
  136. package/skills/sentry/references/sdks/flutter/logging.md +387 -0
  137. package/skills/sentry/references/sdks/flutter/metrics.md +310 -0
  138. package/skills/sentry/references/sdks/flutter/profiling.md +214 -0
  139. package/skills/sentry/references/sdks/flutter/session-replay.md +308 -0
  140. package/skills/sentry/references/sdks/flutter/tracing.md +502 -0
  141. package/skills/sentry/references/sdks/go/crons.md +270 -0
  142. package/skills/sentry/references/sdks/go/error-monitoring.md +361 -0
  143. package/skills/sentry/references/sdks/go/index.md +324 -0
  144. package/skills/sentry/references/sdks/go/logging.md +354 -0
  145. package/skills/sentry/references/sdks/go/metrics.md +273 -0
  146. package/skills/sentry/references/sdks/go/profiling.md +46 -0
  147. package/skills/sentry/references/sdks/go/tracing.md +366 -0
  148. package/skills/sentry/references/sdks/index.md +41 -0
  149. package/skills/sentry/references/sdks/nestjs/ai-monitoring.md +410 -0
  150. package/skills/sentry/references/sdks/nestjs/crons.md +268 -0
  151. package/skills/sentry/references/sdks/nestjs/error-monitoring.md +729 -0
  152. package/skills/sentry/references/sdks/nestjs/index.md +699 -0
  153. package/skills/sentry/references/sdks/nestjs/logging.md +174 -0
  154. package/skills/sentry/references/sdks/nestjs/metrics.md +243 -0
  155. package/skills/sentry/references/sdks/nestjs/profiling.md +127 -0
  156. package/skills/sentry/references/sdks/nestjs/tracing.md +762 -0
  157. package/skills/sentry/references/sdks/nextjs/ai-monitoring.md +494 -0
  158. package/skills/sentry/references/sdks/nextjs/crons.md +383 -0
  159. package/skills/sentry/references/sdks/nextjs/error-monitoring.md +974 -0
  160. package/skills/sentry/references/sdks/nextjs/index.md +491 -0
  161. package/skills/sentry/references/sdks/nextjs/logging.md +381 -0
  162. package/skills/sentry/references/sdks/nextjs/metrics.md +411 -0
  163. package/skills/sentry/references/sdks/nextjs/profiling.md +403 -0
  164. package/skills/sentry/references/sdks/nextjs/session-replay.md +462 -0
  165. package/skills/sentry/references/sdks/nextjs/tracing.md +628 -0
  166. package/skills/sentry/references/sdks/node/ai-monitoring.md +303 -0
  167. package/skills/sentry/references/sdks/node/crons.md +432 -0
  168. package/skills/sentry/references/sdks/node/error-monitoring.md +1125 -0
  169. package/skills/sentry/references/sdks/node/index.md +942 -0
  170. package/skills/sentry/references/sdks/node/logging.md +380 -0
  171. package/skills/sentry/references/sdks/node/metrics.md +278 -0
  172. package/skills/sentry/references/sdks/node/profiling.md +373 -0
  173. package/skills/sentry/references/sdks/node/tracing.md +878 -0
  174. package/skills/sentry/references/sdks/php/ai-monitoring.md +310 -0
  175. package/skills/sentry/references/sdks/php/crons.md +265 -0
  176. package/skills/sentry/references/sdks/php/error-monitoring.md +626 -0
  177. package/skills/sentry/references/sdks/php/index.md +362 -0
  178. package/skills/sentry/references/sdks/php/laravel.md +542 -0
  179. package/skills/sentry/references/sdks/php/logging.md +242 -0
  180. package/skills/sentry/references/sdks/php/metrics.md +193 -0
  181. package/skills/sentry/references/sdks/php/profiling.md +115 -0
  182. package/skills/sentry/references/sdks/php/symfony.md +552 -0
  183. package/skills/sentry/references/sdks/php/tracing.md +516 -0
  184. package/skills/sentry/references/sdks/python/ai-monitoring.md +351 -0
  185. package/skills/sentry/references/sdks/python/crons.md +218 -0
  186. package/skills/sentry/references/sdks/python/error-monitoring.md +292 -0
  187. package/skills/sentry/references/sdks/python/index.md +361 -0
  188. package/skills/sentry/references/sdks/python/logging.md +234 -0
  189. package/skills/sentry/references/sdks/python/metrics.md +154 -0
  190. package/skills/sentry/references/sdks/python/profiling.md +120 -0
  191. package/skills/sentry/references/sdks/python/tracing.md +364 -0
  192. package/skills/sentry/references/sdks/react/error-monitoring.md +1607 -0
  193. package/skills/sentry/references/sdks/react/index.md +492 -0
  194. package/skills/sentry/references/sdks/react/logging.md +364 -0
  195. package/skills/sentry/references/sdks/react/profiling.md +322 -0
  196. package/skills/sentry/references/sdks/react/react-features.md +1272 -0
  197. package/skills/sentry/references/sdks/react/session-replay.md +1193 -0
  198. package/skills/sentry/references/sdks/react/tracing.md +1415 -0
  199. package/skills/sentry/references/sdks/react-native/error-monitoring.md +1481 -0
  200. package/skills/sentry/references/sdks/react-native/expo-config-plugin.md +45 -0
  201. package/skills/sentry/references/sdks/react-native/index.md +1030 -0
  202. package/skills/sentry/references/sdks/react-native/logging.md +444 -0
  203. package/skills/sentry/references/sdks/react-native/profiling.md +386 -0
  204. package/skills/sentry/references/sdks/react-native/session-replay.md +704 -0
  205. package/skills/sentry/references/sdks/react-native/tracing.md +1086 -0
  206. package/skills/sentry/references/sdks/react-native/user-feedback.md +815 -0
  207. package/skills/sentry/references/sdks/react-router-framework/error-monitoring.md +127 -0
  208. package/skills/sentry/references/sdks/react-router-framework/index.md +411 -0
  209. package/skills/sentry/references/sdks/react-router-framework/logging.md +66 -0
  210. package/skills/sentry/references/sdks/react-router-framework/profiling.md +57 -0
  211. package/skills/sentry/references/sdks/react-router-framework/react-router-framework-features.md +110 -0
  212. package/skills/sentry/references/sdks/react-router-framework/session-replay.md +67 -0
  213. package/skills/sentry/references/sdks/react-router-framework/tracing.md +96 -0
  214. package/skills/sentry/references/sdks/react-router-framework/user-feedback.md +71 -0
  215. package/skills/sentry/references/sdks/ruby/crons.md +184 -0
  216. package/skills/sentry/references/sdks/ruby/error-monitoring.md +248 -0
  217. package/skills/sentry/references/sdks/ruby/index.md +297 -0
  218. package/skills/sentry/references/sdks/ruby/logging.md +168 -0
  219. package/skills/sentry/references/sdks/ruby/metrics.md +196 -0
  220. package/skills/sentry/references/sdks/ruby/migration.md +321 -0
  221. package/skills/sentry/references/sdks/ruby/profiling.md +107 -0
  222. package/skills/sentry/references/sdks/ruby/tracing.md +388 -0
  223. package/skills/sentry/references/sdks/svelte/error-monitoring.md +456 -0
  224. package/skills/sentry/references/sdks/svelte/index.md +467 -0
  225. package/skills/sentry/references/sdks/svelte/logging.md +344 -0
  226. package/skills/sentry/references/sdks/svelte/session-replay.md +369 -0
  227. package/skills/sentry/references/sdks/svelte/tracing.md +406 -0
  228. package/skills/sentry/references/sdks/tanstack-start/error-monitoring.md +149 -0
  229. package/skills/sentry/references/sdks/tanstack-start/index.md +381 -0
  230. package/skills/sentry/references/sdks/tanstack-start/logging.md +74 -0
  231. package/skills/sentry/references/sdks/tanstack-start/session-replay.md +76 -0
  232. package/skills/sentry/references/sdks/tanstack-start/tanstackstart-features.md +128 -0
  233. package/skills/sentry/references/sdks/tanstack-start/tracing.md +123 -0
  234. package/skills/sentry/references/sdks/tanstack-start/user-feedback.md +81 -0
  235. package/skills/sentry/references/search-query-language.md +226 -0
  236. package/skills/sentry/references/semantics/angular.md +7 -0
  237. package/skills/sentry/references/semantics/app.md +28 -0
  238. package/skills/sentry/references/semantics/art.md +17 -0
  239. package/skills/sentry/references/semantics/aws.md +43 -0
  240. package/skills/sentry/references/semantics/browser.md +34 -0
  241. package/skills/sentry/references/semantics/cache.md +12 -0
  242. package/skills/sentry/references/semantics/client.md +8 -0
  243. package/skills/sentry/references/semantics/cloud.md +12 -0
  244. package/skills/sentry/references/semantics/cloudflare.md +23 -0
  245. package/skills/sentry/references/semantics/code.md +11 -0
  246. package/skills/sentry/references/semantics/culture.md +11 -0
  247. package/skills/sentry/references/semantics/db.md +21 -0
  248. package/skills/sentry/references/semantics/device.md +43 -0
  249. package/skills/sentry/references/semantics/error.md +7 -0
  250. package/skills/sentry/references/semantics/event.md +8 -0
  251. package/skills/sentry/references/semantics/exception.md +10 -0
  252. package/skills/sentry/references/semantics/faas.md +19 -0
  253. package/skills/sentry/references/semantics/file.md +8 -0
  254. package/skills/sentry/references/semantics/flag.md +7 -0
  255. package/skills/sentry/references/semantics/gcp.md +16 -0
  256. package/skills/sentry/references/semantics/gen_ai.md +53 -0
  257. package/skills/sentry/references/semantics/general.md +11 -0
  258. package/skills/sentry/references/semantics/graphql.md +9 -0
  259. package/skills/sentry/references/semantics/grpc.md +19 -0
  260. package/skills/sentry/references/semantics/http.md +34 -0
  261. package/skills/sentry/references/semantics/index.md +63 -0
  262. package/skills/sentry/references/semantics/jsonrpc.md +8 -0
  263. package/skills/sentry/references/semantics/jvm.md +12 -0
  264. package/skills/sentry/references/semantics/koa.md +7 -0
  265. package/skills/sentry/references/semantics/logger.md +7 -0
  266. package/skills/sentry/references/semantics/mcp.md +37 -0
  267. package/skills/sentry/references/semantics/mdc.md +7 -0
  268. package/skills/sentry/references/semantics/messaging.md +23 -0
  269. package/skills/sentry/references/semantics/middleware.md +7 -0
  270. package/skills/sentry/references/semantics/navigation.md +9 -0
  271. package/skills/sentry/references/semantics/nel.md +11 -0
  272. package/skills/sentry/references/semantics/network.md +17 -0
  273. package/skills/sentry/references/semantics/os.md +15 -0
  274. package/skills/sentry/references/semantics/otel.md +10 -0
  275. package/skills/sentry/references/semantics/params.md +7 -0
  276. package/skills/sentry/references/semantics/process.md +14 -0
  277. package/skills/sentry/references/semantics/react.md +7 -0
  278. package/skills/sentry/references/semantics/remix.md +7 -0
  279. package/skills/sentry/references/semantics/resource.md +7 -0
  280. package/skills/sentry/references/semantics/rpc.md +10 -0
  281. package/skills/sentry/references/semantics/score.md +10 -0
  282. package/skills/sentry/references/semantics/sentry.md +69 -0
  283. package/skills/sentry/references/semantics/server.md +8 -0
  284. package/skills/sentry/references/semantics/service.md +8 -0
  285. package/skills/sentry/references/semantics/session.md +7 -0
  286. package/skills/sentry/references/semantics/state.md +7 -0
  287. package/skills/sentry/references/semantics/thread.md +8 -0
  288. package/skills/sentry/references/semantics/timber.md +7 -0
  289. package/skills/sentry/references/semantics/trpc.md +8 -0
  290. package/skills/sentry/references/semantics/ui.md +18 -0
  291. package/skills/sentry/references/semantics/url.md +15 -0
  292. package/skills/sentry/references/semantics/user.md +17 -0
  293. package/skills/sentry/references/semantics/user_agent.md +7 -0
  294. package/skills/sentry/references/semantics/vercel.md +42 -0
  295. package/skills/sentry/references/setup-verification.md +39 -0
  296. package/skills/sentry/references/snapshots/github-actions-fanout.md +206 -0
  297. package/skills/sentry/references/snapshots/github-actions-simple.md +102 -0
  298. package/skills/sentry/references/snapshots/github-actions-swift-snapshot-testing.md +118 -0
  299. package/skills/sentry/references/snapshots/index.md +19 -0
  300. package/skills/sentry/references/snapshots/snapshot-previews.md +100 -0
  301. package/skills/sentry/references/snapshots/snapshots.md +123 -0
  302. package/skills/sentry/references/snapshots/wizard-setup.md +134 -0
  303. package/skills/testing/LICENSE +21 -0
  304. package/skills/testing/NOTICE +7 -0
  305. package/skills/testing/SKILL.md +13 -19
  306. package/skills/testing/agents/openai.yaml +1 -2
  307. package/skills/testing/references/selection.md +23 -0
  308. package/skills/testing/references/tdd.md +19 -0
  309. package/skills/testing/references/test-design.md +17 -0
  310. package/src/catalog.ts +1 -7
  311. package/skills/build-effect-apis/SKILL.md +0 -81
  312. package/skills/build-effect-apis/agents/openai.yaml +0 -4
  313. package/skills/build-effect-clis/SKILL.md +0 -92
  314. package/skills/build-effect-clis/agents/openai.yaml +0 -4
  315. package/skills/effect-architecture-audit/agents/openai.yaml +0 -4
  316. package/skills/effect-atom-state/SKILL.md +0 -97
  317. package/skills/effect-atom-state/agents/openai.yaml +0 -4
  318. package/skills/effect-ts/SKILL.md +0 -35
  319. package/skills/effect-ts/agents/openai.yaml +0 -4
  320. /package/skills/{build-effect-apis/references → effect-development/references/api}/cloudflare-workers.md +0 -0
  321. /package/skills/{build-effect-apis/references → effect-development/references/api}/runtime-assembly.md +0 -0
  322. /package/skills/{build-effect-apis/references → effect-development/references/api}/server-and-middleware.md +0 -0
  323. /package/skills/{build-effect-apis/references → effect-development/references/api}/shared-contracts.md +0 -0
  324. /package/skills/{effect-architecture-audit/references → effect-development/references/architecture}/service-and-boundary-audit.md +0 -0
  325. /package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-lifecycle.md +0 -0
  326. /package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-workflows.md +0 -0
  327. /package/skills/{effect-atom-state/references → effect-development/references/atom}/tanstack-start.md +0 -0
  328. /package/skills/{build-effect-clis/references → effect-development/references/cli}/command-design.md +0 -0
  329. /package/skills/{build-effect-clis/references → effect-development/references/cli}/processes-and-platform.md +0 -0
@@ -0,0 +1,174 @@
1
+ # Logging — Sentry NestJS SDK
2
+
3
+ > Minimum SDK: `@sentry/nestjs` 9.41.0+ for structured Sentry Logs (`enableLogs: true`)
4
+
5
+ ## Two Logging Systems
6
+
7
+ | System | Produces | Requires |
8
+ | -------------------------- | ---------------------------------------------- | -------------------------------------- |
9
+ | **Sentry Structured Logs** | Searchable log records in Sentry Logs UI | `enableLogs: true` + `Sentry.logger.*` |
10
+ | **Framework integrations** | Bridge NestJS/Pino/Winston logs to Sentry Logs | Integration-specific setup |
11
+
12
+ ## Configuration
13
+
14
+ ```typescript
15
+ import * as Sentry from "@sentry/nestjs";
16
+
17
+ Sentry.init({
18
+ dsn: "https://<key>@<org>.ingest.sentry.io/<project>",
19
+ enableLogs: true, // required — without this, all Sentry.logger.* calls are no-ops
20
+ });
21
+ ```
22
+
23
+ ## Code Examples
24
+
25
+ ### Sentry Structured Logs — direct API
26
+
27
+ ```typescript
28
+ import * as Sentry from "@sentry/nestjs";
29
+
30
+ // All six log levels
31
+ Sentry.logger.trace("Starting database connection {database}", { database: "users" });
32
+ Sentry.logger.debug("Cache miss for user {userId}", { userId: 123 });
33
+ Sentry.logger.info("User signed in");
34
+ Sentry.logger.warn("Rate limit reached for endpoint {endpoint}", { endpoint: "/api/results" });
35
+ Sentry.logger.error("Failed to process payment for order {orderId}", { orderId: "or_2342" });
36
+ Sentry.logger.fatal("Database {database} connection pool exhausted", { database: "users" });
37
+ ```
38
+
39
+ **Available levels:** `trace`, `debug`, `info`, `warn`, `error`, `fatal`
40
+
41
+ ### Tagged template for parameterized messages
42
+
43
+ Use `Sentry.logger.fmt` to create structured, searchable messages where each placeholder
44
+ becomes an individually queryable attribute in the Sentry Logs UI:
45
+
46
+ ```typescript
47
+ import * as Sentry from "@sentry/nestjs";
48
+
49
+ Sentry.logger.info(Sentry.logger.fmt`User ${"userId"} signed in from ${"region"}`, {
50
+ userId: 42,
51
+ region: "eu-west-1",
52
+ });
53
+ ```
54
+
55
+ ### NestJS ConsoleLogger integration
56
+
57
+ To route NestJS’s built-in `ConsoleLogger` output to Sentry Logs, use
58
+ `consoleLoggingIntegration` with `forceConsole: true`:
59
+
60
+ ```typescript
61
+ import * as Sentry from "@sentry/nestjs";
62
+ import { consoleLoggingIntegration } from "@sentry/nestjs";
63
+
64
+ Sentry.init({
65
+ dsn: "...",
66
+ enableLogs: true,
67
+ integrations: [consoleLoggingIntegration({ forceConsole: true })],
68
+ });
69
+ ```
70
+
71
+ Then use NestJS’s built-in logger as usual — all output is captured:
72
+
73
+ ```typescript
74
+ import { Injectable, Logger } from "@nestjs/common";
75
+
76
+ @Injectable()
77
+ export class AppService {
78
+ private readonly logger = new Logger(AppService.name);
79
+
80
+ doSomething() {
81
+ this.logger.log("Processing request"); // → Sentry Logs: info
82
+ this.logger.warn("Unusual payload size"); // → Sentry Logs: warn
83
+ this.logger.error("Payment failed"); // → Sentry Logs: error
84
+ }
85
+ }
86
+ ```
87
+
88
+ ### Pino integration (SDK 10.18.0+)
89
+
90
+ ```bash
91
+ npm install pino
92
+ ```
93
+
94
+ ```typescript
95
+ import * as Sentry from "@sentry/nestjs";
96
+ import { pinoIntegration } from "@sentry/nestjs";
97
+
98
+ Sentry.init({
99
+ dsn: "...",
100
+ enableLogs: true,
101
+ integrations: [pinoIntegration()],
102
+ });
103
+ ```
104
+
105
+ ### Winston integration
106
+
107
+ ```bash
108
+ npm install winston
109
+ ```
110
+
111
+ ```typescript
112
+ import * as Sentry from "@sentry/nestjs";
113
+ import { createSentryWinstonTransport } from "@sentry/nestjs";
114
+ import winston from "winston";
115
+
116
+ Sentry.init({ dsn: "...", enableLogs: true });
117
+
118
+ const logger = winston.createLogger({
119
+ transports: [
120
+ new winston.transports.Console(),
121
+ createSentryWinstonTransport({ minLevel: "info" }),
122
+ ],
123
+ });
124
+ ```
125
+
126
+ > **Bunyan is not supported.** Use Pino or Winston if you need a framework logger
127
+ > bridge.
128
+
129
+ ### `beforeSendLog` hook — filter and sanitize
130
+
131
+ ```typescript
132
+ import * as Sentry from "@sentry/nestjs";
133
+
134
+ Sentry.init({
135
+ dsn: "...",
136
+ enableLogs: true,
137
+ beforeSendLog(log) {
138
+ // Drop debug logs to reduce volume
139
+ if (log.level === "debug") return null;
140
+
141
+ // Redact sensitive fields
142
+ if (log.attributes?.["user.email"]) {
143
+ log.attributes["user.email"] = "[redacted]";
144
+ }
145
+
146
+ return log;
147
+ },
148
+ });
149
+ ```
150
+
151
+ ## Log-to-Trace Correlation
152
+
153
+ Log entries are automatically correlated to the active trace — no configuration
154
+ required. When a log is emitted inside an instrumented request or span, Sentry links it
155
+ to the corresponding transaction in the Traces UI.
156
+
157
+ ## Decision Table
158
+
159
+ | Goal | Tool |
160
+ | ----------------------------------------------- | --------------------------------------------------- |
161
+ | Searchable structured records in Sentry Logs UI | `Sentry.logger.*` + `enableLogs: true` |
162
+ | Bridge NestJS `ConsoleLogger` to Sentry Logs | `consoleLoggingIntegration({ forceConsole: true })` |
163
+ | Bridge Pino to Sentry Logs | `pinoIntegration()` (SDK 10.18.0+) |
164
+ | Bridge Winston to Sentry Logs | `createSentryWinstonTransport()` |
165
+ | Drop or modify a log before sending | `beforeSendLog` callback |
166
+
167
+ ## Troubleshooting
168
+
169
+ | Issue | Solution |
170
+ | ------------------------------------------- | ----------------------------------------------------------- |
171
+ | `Sentry.logger.*` calls have no effect | Ensure `enableLogs: true` is set in `Sentry.init()` |
172
+ | NestJS `ConsoleLogger` output not appearing | Add `consoleLoggingIntegration({ forceConsole: true })` |
173
+ | Pino logs not appearing | Requires `@sentry/nestjs` 10.18.0+; add `pinoIntegration()` |
174
+ | Too many log records hitting quota | Use `beforeSendLog` to filter by level or attribute |
@@ -0,0 +1,243 @@
1
+ # Metrics — Sentry NestJS SDK
2
+
3
+ > Minimum SDK: `@sentry/nestjs` 10.25.0+
4
+
5
+ ## Overview
6
+
7
+ `Sentry.metrics` provides custom counters, gauges, and distributions.
8
+ Metrics are enabled by default — no extra `init()` flag needed.
9
+
10
+ ## Metric Types
11
+
12
+ | Type | API | Use for |
13
+ | ------------ | ------------------------------- | ----------------------------------------------------------- |
14
+ | Counter | `Sentry.metrics.count()` | Event occurrences, request counts |
15
+ | Distribution | `Sentry.metrics.distribution()` | Latencies, sizes — supports p50/p90/p95/p99 |
16
+ | Gauge | `Sentry.metrics.gauge()` | Current values (min, max, avg, sum, count — no percentiles) |
17
+
18
+ ## Configuration
19
+
20
+ ```typescript
21
+ import "./instrument"; // Sentry init must run before anything else
22
+ import { NestFactory } from "@nestjs/core";
23
+ import { AppModule } from "./app.module";
24
+
25
+ async function bootstrap() {
26
+ const app = await NestFactory.create(AppModule);
27
+ await app.listen(3000);
28
+ }
29
+ bootstrap();
30
+ ```
31
+
32
+ No extra flags required — metrics are on by default once `Sentry.init()` is called.
33
+
34
+ Optional `beforeSendMetric` hook:
35
+
36
+ ```typescript
37
+ import * as Sentry from "@sentry/nestjs";
38
+
39
+ Sentry.init({
40
+ dsn: "https://<key>@<org>.ingest.sentry.io/<project>",
41
+ beforeSendMetric(metric) {
42
+ if (metric.name === "noisy-metric") {
43
+ return null; // drop this metric
44
+ }
45
+ metric.attributes["env"] = "prod"; // add attribute
46
+ return metric;
47
+ },
48
+ });
49
+ ```
50
+
51
+ ## Code Examples
52
+
53
+ ### Counter — event occurrences
54
+
55
+ ```typescript
56
+ import * as Sentry from '@sentry/nestjs';
57
+
58
+ // In a controller
59
+ @Controller('orders')
60
+ export class OrdersController {
61
+ @Post()
62
+ async createOrder(@Body() dto: CreateOrderDto) {
63
+ Sentry.metrics.count('orders.created', 1, {
64
+ attributes: {
65
+ type: dto.type,
66
+ region: dto.region,
67
+ },
68
+ });
69
+ return this.ordersService.create(dto);
70
+ }
71
+ }
72
+
73
+ // Count per route/method
74
+ @Get(':id')
75
+ async getOrder(@Param('id') id: string) {
76
+ Sentry.metrics.count('http.requests', 1, {
77
+ attributes: {
78
+ route: '/orders/:id',
79
+ method: 'GET',
80
+ },
81
+ });
82
+ return this.ordersService.findOne(id);
83
+ }
84
+ ```
85
+
86
+ ### Distribution — percentile analysis
87
+
88
+ Best for latencies, response sizes, durations where p50/p90/p99 matter:
89
+
90
+ ```typescript
91
+ import * as Sentry from "@sentry/nestjs";
92
+
93
+ @Injectable()
94
+ export class OrdersService {
95
+ async processOrder(order: Order): Promise<void> {
96
+ const start = Date.now();
97
+
98
+ await this.doProcessing(order);
99
+
100
+ Sentry.metrics.distribution("orders.processing_time", Date.now() - start, {
101
+ unit: "millisecond",
102
+ attributes: {
103
+ "order.type": order.type,
104
+ region: order.region,
105
+ },
106
+ });
107
+ }
108
+ }
109
+ ```
110
+
111
+ Database query timing:
112
+
113
+ ```typescript
114
+ @Injectable()
115
+ export class UsersRepository {
116
+ async findByEmail(email: string) {
117
+ const start = Date.now();
118
+ const result = await this.db.users.findOne({ email });
119
+
120
+ Sentry.metrics.distribution("db.query_time", Date.now() - start, {
121
+ unit: "millisecond",
122
+ attributes: { table: "users", operation: "findOne" },
123
+ });
124
+
125
+ return result;
126
+ }
127
+ }
128
+ ```
129
+
130
+ ### Gauge — current state
131
+
132
+ Use for values that fluctuate over time; no percentile support:
133
+
134
+ ```typescript
135
+ import * as Sentry from "@sentry/nestjs";
136
+
137
+ // Bull/BullMQ queue depth
138
+ @Injectable()
139
+ export class QueueMonitorService {
140
+ constructor(@InjectQueue("email") private emailQueue: Queue) {}
141
+
142
+ @Cron(CronExpression.EVERY_MINUTE)
143
+ async reportQueueDepth() {
144
+ const waiting = await this.emailQueue.getWaitingCount();
145
+ const active = await this.emailQueue.getActiveCount();
146
+
147
+ Sentry.metrics.gauge("queue.depth", waiting, {
148
+ attributes: { queue: "email", state: "waiting" },
149
+ });
150
+
151
+ Sentry.metrics.gauge("queue.depth", active, {
152
+ attributes: { queue: "email", state: "active" },
153
+ });
154
+ }
155
+ }
156
+ ```
157
+
158
+ ### Business event counting
159
+
160
+ ```typescript
161
+ @Injectable()
162
+ export class PaymentsService {
163
+ async chargeCard(dto: ChargeDto): Promise<Charge> {
164
+ try {
165
+ const charge = await this.stripe.charges.create(dto);
166
+
167
+ Sentry.metrics.count("payments.charged", 1, {
168
+ attributes: {
169
+ currency: dto.currency,
170
+ success: true,
171
+ },
172
+ });
173
+
174
+ return charge;
175
+ } catch (err) {
176
+ Sentry.metrics.count("payments.charged", 1, {
177
+ attributes: {
178
+ currency: dto.currency,
179
+ success: false,
180
+ "error.type": err.type ?? "unknown",
181
+ },
182
+ });
183
+ throw err;
184
+ }
185
+ }
186
+ }
187
+ ```
188
+
189
+ ### Attribute value types
190
+
191
+ ```typescript
192
+ Sentry.metrics.count("api.request", 1, {
193
+ attributes: {
194
+ endpoint: "/v2/users", // string
195
+ method: "POST",
196
+ success: true, // boolean
197
+ status_code: 201, // number
198
+ latency: 0.042, // number (float)
199
+ },
200
+ });
201
+ ```
202
+
203
+ ### Unit strings
204
+
205
+ | Category | Values |
206
+ | ------------- | ----------------------------------------------------------------------------------------------------- |
207
+ | Time | `"nanosecond"`, `"microsecond"`, `"millisecond"`, `"second"`, `"minute"`, `"hour"`, `"day"`, `"week"` |
208
+ | Data | `"bit"`, `"byte"`, `"kilobyte"`, `"megabyte"`, `"gigabyte"`, `"terabyte"` |
209
+ | Fractions | `"ratio"`, `"percent"` |
210
+ | Dimensionless | `"none"` (default when omitted) |
211
+
212
+ ### `beforeSendMetric` — metric object schema
213
+
214
+ | Key | Type | Description |
215
+ | ------------ | --------------------------------------------- | ------------------------------------------ |
216
+ | `name` | `string` | Metric identifier |
217
+ | `type` | `string` | `"counter"` / `"gauge"` / `"distribution"` |
218
+ | `value` | `number` | Numeric measurement |
219
+ | `unit` | `string \| undefined` | Unit string |
220
+ | `attributes` | `Record<string, string \| number \| boolean>` | Custom key-value pairs |
221
+ | `timestamp` | `number` | Epoch seconds |
222
+ | `traceId` | `string \| undefined` | Associated trace ID |
223
+ | `spanId` | `string \| undefined` | Active span ID |
224
+
225
+ ## Best Practices
226
+
227
+ - Keep attribute cardinality low — avoid user IDs, UUIDs, or timestamps as attribute
228
+ values
229
+ - Use `distribution` over `gauge` when you need percentile analysis
230
+ - Prefix metric names with your service name: `"payments.charge_time"` not
231
+ `"charge_time"`
232
+ - Use standard unit strings — Sentry renders them in the UI with proper labels
233
+ - Each metric consumes up to 2 KB — avoid unbounded attribute value sets
234
+ - Metrics are buffered and flushed periodically — not suitable for sub-second alerting
235
+
236
+ ## Troubleshooting
237
+
238
+ | Issue | Solution |
239
+ | --------------------------- | --------------------------------------------------------------------------- |
240
+ | Metrics not appearing | Verify `@sentry/nestjs` ≥ 10.25.0; check `debug: true` output |
241
+ | Metric dropped silently | Check `beforeSendMetric` hook; verify metric name has no special characters |
242
+ | High cardinality warning | Reduce attribute values — avoid per-user or per-request identifiers |
243
+ | No percentiles in Sentry UI | Switch from `gauge` to `distribution` — gauges do not support percentiles |
@@ -0,0 +1,127 @@
1
+ # Profiling — Sentry NestJS SDK
2
+
3
+ > Requires `@sentry/profiling-node` (version must **exactly match** `@sentry/nestjs`)
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @sentry/profiling-node --save
9
+ ```
10
+
11
+ ## Configuration
12
+
13
+ | Option | Purpose |
14
+ | -------------------------------------------- | ------------------------------------------------------------------ |
15
+ | `integrations: [nodeProfilingIntegration()]` | Enable the V8 CPU profiler |
16
+ | `profileSessionSampleRate` | Fraction of processes/pods to profile (evaluated **once at init**) |
17
+ | `profileLifecycle` | `'trace'` = auto-managed; `'manual'` = explicit start/stop |
18
+ | `tracesSampleRate` | Must be `> 0` — profiling requires tracing to be active |
19
+
20
+ ## Mode Comparison
21
+
22
+ | | Trace lifecycle (`'trace'`) | Manual (`'manual'`) |
23
+ | ----------------- | ------------------------------- | --------------------------------- |
24
+ | **Start trigger** | First active span | `Sentry.profiler.startProfiler()` |
25
+ | **Stop trigger** | Last span ends | `Sentry.profiler.stopProfiler()` |
26
+ | **Coverage** | All code during active spans | Only between explicit start/stop |
27
+ | **Use case** | General profiling (recommended) | Targeted hot paths |
28
+ | **Setup** | Zero — fully automatic | Manual call sites required |
29
+
30
+ ## Code Examples
31
+
32
+ ### Trace lifecycle — recommended
33
+
34
+ Add `nodeProfilingIntegration()` to the `integrations` array in `instrument.ts`:
35
+
36
+ ```typescript
37
+ // instrument.ts (must be the first file loaded — see main skill)
38
+ import * as Sentry from "@sentry/nestjs";
39
+ import { nodeProfilingIntegration } from "@sentry/profiling-node";
40
+
41
+ Sentry.init({
42
+ dsn: process.env.SENTRY_DSN,
43
+ integrations: [nodeProfilingIntegration()],
44
+ tracesSampleRate: 1.0,
45
+ profileSessionSampleRate: 1.0, // profile 100% of process sessions
46
+ profileLifecycle: "trace", // SDK auto-manages profiler lifetime
47
+ });
48
+ ```
49
+
50
+ All HTTP requests, lifecycle spans, `@OnEvent` handlers, and custom spans are profiled
51
+ automatically.
52
+
53
+ ### Manual mode — targeted profiling
54
+
55
+ ```typescript
56
+ import * as Sentry from "@sentry/nestjs";
57
+ import { nodeProfilingIntegration } from "@sentry/profiling-node";
58
+
59
+ Sentry.init({
60
+ dsn: process.env.SENTRY_DSN,
61
+ integrations: [nodeProfilingIntegration()],
62
+ tracesSampleRate: 1.0,
63
+ profileSessionSampleRate: 1.0,
64
+ profileLifecycle: "manual",
65
+ });
66
+
67
+ // Somewhere in application code:
68
+ Sentry.profiler.startProfiler();
69
+ await expensiveOperation();
70
+ Sentry.profiler.stopProfiler();
71
+ ```
72
+
73
+ ### Production fleet sampling
74
+
75
+ `profileSessionSampleRate` is decided **once at process startup** — use it to sample a
76
+ fraction of pods/containers rather than per-request:
77
+
78
+ ```typescript
79
+ Sentry.init({
80
+ dsn: process.env.SENTRY_DSN,
81
+ integrations: [nodeProfilingIntegration()],
82
+ tracesSampleRate: 0.1, // sample 10% of requests for traces
83
+ profileSessionSampleRate: 0.25, // profile 25% of pods/instances
84
+ profileLifecycle: "trace",
85
+ });
86
+ ```
87
+
88
+ ## Technical Details
89
+
90
+ - Uses **V8’s `CpuProfiler`** native C++ add-on — ~100 Hz sampling (10 ms interval)
91
+ - Precompiled binaries available for:
92
+ - macOS x64 / ARM64
93
+ - Linux x64 glibc / ARM64 musl
94
+ - Windows x64
95
+ - Node.js 18, 20, 22, 24
96
+ - **Not supported** in Deno or Bun
97
+
98
+ ## Environment Variables
99
+
100
+ | Variable | Purpose |
101
+ | ------------------------------ | ------------------------------------------------- |
102
+ | `SENTRY_PROFILER_BINARY_PATH` | Override full path to `profiler.node` binary |
103
+ | `SENTRY_PROFILER_BINARY_DIR` | Override directory containing `profiler.node` |
104
+ | `SENTRY_PROFILER_LOGGING_MODE` | `eager` (default) or `lazy` (starts on first use) |
105
+
106
+ **Eager mode (default):** Profiler always running — lower latency to first profile, uses
107
+ CPU between requests.\
108
+ **Lazy mode:** Starts on first use — lower baseline CPU overhead, small latency on first
109
+ profile.
110
+
111
+ ## Performance Overhead
112
+
113
+ - 100 Hz sampling has minimal per-sample cost
114
+ - Eager mode consumes some CPU even between requests
115
+ - Load test before enabling in high-throughput production services
116
+ - Start with a low `profileSessionSampleRate` (e.g., `0.1`) and increase based on
117
+ observed overhead
118
+
119
+ ## Troubleshooting
120
+
121
+ | Issue | Solution |
122
+ | ----------------------------------- | ----------------------------------------------------------------------------------------------------- |
123
+ | No profiles appearing | Verify `tracesSampleRate > 0` and both `profileSessionSampleRate` + `profileLifecycle` are set |
124
+ | Native binary fails to load | Check Node.js version is 18–24 and platform is supported; set `SENTRY_PROFILER_BINARY_PATH` if needed |
125
+ | Version mismatch error | `@sentry/profiling-node` version must exactly match `@sentry/nestjs` |
126
+ | Profiler not stopping (manual mode) | Ensure `Sentry.profiler.stopProfiler()` is called on shutdown / after the target code |
127
+ | High CPU in idle | Switch to `SENTRY_PROFILER_LOGGING_MODE=lazy` or reduce `profileSessionSampleRate` |