@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,373 @@
1
+ # Profiling — Sentry Node.js SDK
2
+
3
+ > Node.js profiling: `@sentry/profiling-node` — must match your `@sentry/node` version
4
+ > exactly\
5
+ > **Bun and Deno are NOT supported.** The profiler is a native C++ addon (`node-gyp`)
6
+ > that only runs in Node.js.
7
+
8
+ ---
9
+
10
+ ## Overview
11
+
12
+ Profiling captures V8 CPU call stacks at ~100 samples/second alongside your traces.
13
+ Profiles attach to spans, giving you flame graphs to identify hot paths directly from a
14
+ slow trace.
15
+
16
+ Profiling is **Node.js only**:
17
+
18
+ | Runtime | Profiling | Notes |
19
+ | ----------- | --------- | ----------------------------------------- |
20
+ | Node.js ≥18 | ✅ | Full support via `@sentry/profiling-node` |
21
+ | Bun | ❌ | Native addon not supported |
22
+ | Deno | ❌ | Native addon not supported |
23
+
24
+ ---
25
+
26
+ ## How Profiling Relates to Tracing
27
+
28
+ Profiles attach to **spans** — they require tracing to be enabled:
29
+
30
+ 1. `tracesSampleRate` / `tracesSampler` decides whether a request is traced at all
31
+ 2. `profileSessionSampleRate` decides whether the session opts into profiling
32
+ 3. A profile is only collected when **both** sampling decisions are “yes”
33
+
34
+ ```
35
+ tracesSampleRate: 0.1 + profileSessionSampleRate: 0.5
36
+ → ~5% of requests will have both a trace AND a profile attached
37
+ ```
38
+
39
+ In `trace` lifecycle mode, you can drill from a slow span in the Performance UI directly
40
+ into a flame graph:
41
+
42
+ ```
43
+ Trace: "POST /api/checkout" (850ms)
44
+ ├── "validateCart" (45ms) → [Profile attached] → shows DB driver hot paths
45
+ ├── "processPayment" (620ms)
46
+ └── "updateInventory" (185ms) → [Profile attached] → shows ORM overhead
47
+ ```
48
+
49
+ ---
50
+
51
+ ## Installation
52
+
53
+ ```bash
54
+ npm install @sentry/profiling-node --save
55
+ ```
56
+
57
+ > ⚠️ **Version pinning is required.** `@sentry/profiling-node` must exactly match your
58
+ > `@sentry/node` version.
59
+ > Mismatched versions cause silent failures or startup crashes.
60
+
61
+ ```bash
62
+ # Both must be the same version
63
+ npm install @sentry/node@latest @sentry/profiling-node@latest
64
+ ```
65
+
66
+ ---
67
+
68
+ ## SDK Configuration
69
+
70
+ ### Trace Mode (Recommended)
71
+
72
+ Profiles auto-attach to all sampled spans with no additional code:
73
+
74
+ ```typescript
75
+ import * as Sentry from "@sentry/node";
76
+ import { nodeProfilingIntegration } from "@sentry/profiling-node";
77
+
78
+ Sentry.init({
79
+ dsn: process.env.SENTRY_DSN,
80
+
81
+ integrations: [nodeProfilingIntegration()],
82
+
83
+ tracesSampleRate: 1.0,
84
+
85
+ // Session-level sampling: decision made once at process startup
86
+ profileSessionSampleRate: process.env.NODE_ENV === "production" ? 0.1 : 1.0,
87
+
88
+ // "trace" = profiles auto-attach to every sampled span
89
+ profileLifecycle: "trace",
90
+ });
91
+ ```
92
+
93
+ ### Manual Mode
94
+
95
+ Start and stop profiling around specific code paths:
96
+
97
+ ```typescript
98
+ import * as Sentry from "@sentry/node";
99
+ import { nodeProfilingIntegration } from "@sentry/profiling-node";
100
+
101
+ Sentry.init({
102
+ dsn: process.env.SENTRY_DSN,
103
+ integrations: [nodeProfilingIntegration()],
104
+ tracesSampleRate: 1.0,
105
+ profileSessionSampleRate: 1.0,
106
+ profileLifecycle: "manual",
107
+ });
108
+
109
+ // Explicit start/stop around critical code:
110
+ Sentry.profiler.startProfiler();
111
+ await heavyComputation();
112
+ Sentry.profiler.stopProfiler();
113
+ ```
114
+
115
+ ---
116
+
117
+ ## Continuous Profiling
118
+
119
+ For long-running processes, batch jobs, or background workers that don’t map cleanly to
120
+ request spans, use the profiler API directly:
121
+
122
+ ```typescript
123
+ import * as Sentry from "@sentry/node";
124
+ import { nodeProfilingIntegration } from "@sentry/profiling-node";
125
+
126
+ Sentry.init({
127
+ dsn: process.env.SENTRY_DSN,
128
+ integrations: [nodeProfilingIntegration()],
129
+ });
130
+
131
+ // Start profiling at process startup
132
+ Sentry.profiler.startProfiler();
133
+
134
+ // Profile is chunked automatically into ~60-second intervals and uploaded
135
+ // All spans created during this window have profile data attached
136
+
137
+ // Stop when done (e.g. graceful shutdown)
138
+ process.on("SIGTERM", () => {
139
+ Sentry.profiler.stopProfiler();
140
+ process.exit(0);
141
+ });
142
+ ```
143
+
144
+ ### Profile Chunk Architecture
145
+
146
+ The V2 profiler divides data into 60-second chunks that upload automatically:
147
+
148
+ ```
149
+ Process lifetime:
150
+ ┌─── 60 seconds ───┬─── 60 seconds ───┬─── 60 seconds ───┐
151
+ │ Chunk 1 │ Chunk 2 │ Chunk 3 │
152
+ │ Spans: [...] │ Spans: [...] │ Spans: [...] │
153
+ │ Sent at 60s │ Sent at 120s │ Sent at 180s │
154
+ └──────────────────┴──────────────────┴──────────────────┘
155
+ ```
156
+
157
+ This means there’s no 30-second max like in the legacy V1 API — the profiler runs as
158
+ long as your process does.
159
+
160
+ ---
161
+
162
+ ## Profiler API Reference
163
+
164
+ ### `Sentry.profiler.startProfiler()`
165
+
166
+ Starts the V8 CpuProfiler.
167
+ Call this once at process startup or before the code you want to profile.
168
+
169
+ ```typescript
170
+ Sentry.profiler.startProfiler();
171
+ ```
172
+
173
+ - No-ops gracefully if already running
174
+ - Takes effect immediately
175
+ - Overhead is low; safe to call at startup in production
176
+
177
+ ### `Sentry.profiler.stopProfiler()`
178
+
179
+ Stops the profiler and flushes remaining profile data to Sentry.
180
+
181
+ ```typescript
182
+ Sentry.profiler.stopProfiler();
183
+ ```
184
+
185
+ - Flushes the current in-progress chunk
186
+ - Call on graceful shutdown to avoid losing the last partial chunk
187
+
188
+ ### Manual Start/Stop Pattern
189
+
190
+ ```typescript
191
+ // Profile a specific batch job, not the entire process
192
+ async function runNightlyBatch() {
193
+ Sentry.profiler.startProfiler();
194
+ try {
195
+ await Sentry.startSpan({ op: "batch", name: "nightly-sync" }, async () => {
196
+ await syncUsers();
197
+ await syncOrders();
198
+ await syncInventory();
199
+ });
200
+ } finally {
201
+ Sentry.profiler.stopProfiler();
202
+ }
203
+ }
204
+ ```
205
+
206
+ ---
207
+
208
+ ## Configuration Reference
209
+
210
+ | Parameter | Type | Description |
211
+ | ---------------------------- | --------------------- | ------------------------------------------------------------------------------------------ |
212
+ | `profileSessionSampleRate` | `0.0–1.0` | Session-level sampling. Decision made once at process startup. |
213
+ | `profileLifecycle` | `"trace" \| "manual"` | `"trace"` = auto-attach to spans; `"manual"` = explicit `startProfiler()`/`stopProfiler()` |
214
+ | `nodeProfilingIntegration()` | integration | Enables V8 CpuProfiler. Must be in `integrations` array. |
215
+
216
+ ### `profileSessionSampleRate` Semantics
217
+
218
+ The profiling sampling decision is made **once per process startup** — not per request.
219
+
220
+ A “profiling session” either opts in or opts out for its entire lifetime.
221
+ Within a profiling session, every traced span gets a profile attached (in `trace` mode).
222
+
223
+ ```typescript
224
+ // 10% of Node.js processes will profile all their requests
225
+ profileSessionSampleRate: 0.1;
226
+ ```
227
+
228
+ ### `profileLifecycle` Modes
229
+
230
+ | Mode | Trigger | Best for |
231
+ | ---------- | ------------------------------------ | ----------------------------------------- |
232
+ | `"trace"` | Auto-attached to every sampled span | Broad production coverage, web servers |
233
+ | `"manual"` | `startProfiler()` / `stopProfiler()` | Batch jobs, specific hot paths, CLI tools |
234
+
235
+ ---
236
+
237
+ ## Supported Platforms
238
+
239
+ Precompiled native binaries are available for:
240
+
241
+ | OS | Architecture | Node.js |
242
+ | ------------------- | --------------------- | ------- |
243
+ | macOS | x64 (Intel) | 18–24 |
244
+ | macOS | ARM64 (Apple Silicon) | 18–24 |
245
+ | Linux (glibc) | x64 | 18–24 |
246
+ | Linux (glibc) | ARM64 | 18–24 |
247
+ | Linux (musl/Alpine) | x64 | 18–24 |
248
+ | Linux (musl/Alpine) | ARM64 | 18–24 |
249
+ | Windows | x64 | 18–24 |
250
+
251
+ > ❌ **FreeBSD, 32-bit systems, Bun, and Deno are not supported.**\
252
+ > The native addon requires Node.js — it cannot run in other runtimes.
253
+
254
+ ### Alpine Linux / Docker
255
+
256
+ The musl libc variant is included automatically.
257
+ If you see missing binary errors on Alpine:
258
+
259
+ ```dockerfile
260
+ # Ensure you're installing native dependencies
261
+ RUN npm install --include=optional
262
+ ```
263
+
264
+ Or rebuild from source:
265
+
266
+ ```dockerfile
267
+ RUN apk add --no-cache python3 make g++ && npm rebuild @sentry/profiling-node
268
+ ```
269
+
270
+ ---
271
+
272
+ ## Environment Variables
273
+
274
+ ```bash
275
+ # Override profiler binary path (for custom builds or non-standard environments)
276
+ SENTRY_PROFILER_BINARY_PATH=/custom/path/sentry_cpu_profiler.node
277
+
278
+ # Override binary directory
279
+ SENTRY_PROFILER_BINARY_DIR=/path/to/dir
280
+
281
+ # Profiler logging mode:
282
+ # "eager" (default) — faster startProfiler calls, slightly more CPU overhead
283
+ # "lazy" — lower CPU overhead, slightly slower startProfiler
284
+ SENTRY_PROFILER_LOGGING_MODE=lazy node server.js
285
+ ```
286
+
287
+ ---
288
+
289
+ ## Production Recommendations
290
+
291
+ ```typescript
292
+ Sentry.init({
293
+ integrations: [nodeProfilingIntegration()],
294
+ tracesSampleRate: process.env.NODE_ENV === "production" ? 0.1 : 1.0,
295
+ profileSessionSampleRate: process.env.NODE_ENV === "production" ? 0.1 : 1.0,
296
+ profileLifecycle: "trace",
297
+ });
298
+ ```
299
+
300
+ **Performance impact notes:**
301
+
302
+ - **Sampling rate (~100Hz):** The V8 CpuProfiler adds CPU overhead.
303
+ Test with realistic load before deploying `profileSessionSampleRate: 1.0` to
304
+ high-traffic production.
305
+ - **Memory:** Each 60-second chunk uses ~10–20 MB of buffer.
306
+ Capped at 50 chunks (~100 MB max).
307
+ - **Network:** One profiling upload per 60-second window per process.
308
+
309
+ > “For high-throughput environments, we recommend testing prior to deployment to ensure
310
+ > that your service’s performance characteristics maintain expectations.”
311
+ > — Sentry docs
312
+
313
+ For high-traffic servers, start conservative:
314
+
315
+ ```typescript
316
+ // Start at 1–5% and increase after measuring overhead
317
+ profileSessionSampleRate: 0.01;
318
+ ```
319
+
320
+ ---
321
+
322
+ ## Complete Setup Example
323
+
324
+ ```typescript
325
+ // instrument.ts (loaded before app code)
326
+ import * as Sentry from "@sentry/node";
327
+ import { nodeProfilingIntegration } from "@sentry/profiling-node";
328
+
329
+ Sentry.init({
330
+ dsn: process.env.SENTRY_DSN,
331
+
332
+ integrations: [nodeProfilingIntegration()],
333
+
334
+ tracesSampleRate: process.env.NODE_ENV === "development" ? 1.0 : 0.1,
335
+ profileSessionSampleRate: process.env.NODE_ENV === "development" ? 1.0 : 0.1,
336
+ profileLifecycle: "trace",
337
+ });
338
+ ```
339
+
340
+ ```typescript
341
+ // app.ts
342
+ import "./instrument"; // Must be first import
343
+ import express from "express";
344
+ import * as Sentry from "@sentry/node";
345
+
346
+ const app = express();
347
+
348
+ app.get("/api/users", async (req, res) => {
349
+ // Automatically traced + profiled (in profiling sessions)
350
+ const users = await db.query("SELECT * FROM users");
351
+ res.json(users);
352
+ });
353
+
354
+ Sentry.setupExpressErrorHandler(app);
355
+ app.listen(3000);
356
+ ```
357
+
358
+ ---
359
+
360
+ ## Troubleshooting
361
+
362
+ | Issue | Solution |
363
+ | --------------------------------------------- | ---------------------------------------------------------------------------------------------------------------- |
364
+ | No profiles appearing in Sentry | Verify `@sentry/profiling-node` version exactly matches `@sentry/node` version (`npm ls @sentry/profiling-node`) |
365
+ | `Cannot find module '@sentry/profiling-node'` | Run `npm install @sentry/profiling-node` and confirm it’s in `dependencies` (not `devDependencies`) |
366
+ | Native addon fails to load | Check you’re on Node.js ≥18; check OS/arch is in the supported platforms table |
367
+ | Profiles not linked to spans | Confirm `profileLifecycle: "trace"` is set and `tracesSampleRate` > 0; both are required |
368
+ | High CPU usage | Lower `profileSessionSampleRate`; use `SENTRY_PROFILER_LOGGING_MODE=lazy` |
369
+ | Alpine/musl Linux binary error | Run `npm rebuild @sentry/profiling-node` after installing build tools (`apk add python3 make g++`) |
370
+ | Profiling works locally but not in Docker | Ensure `npm install --include=optional` runs in the Docker build; musl variant must be present |
371
+ | Flame graphs show minified names | Upload source maps via `authToken` in Sentry config; use `NODE_OPTIONS=--enable-source-maps` |
372
+ | Last ~60s of data lost on shutdown | Call `Sentry.profiler.stopProfiler()` in your SIGTERM/SIGINT handler before `process.exit()` |
373
+ | Bun or Deno profiling doesn’t work | Native addon only supports Node.js — profiling is not available in Bun or Deno |