@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,107 @@
1
+ # Profiling — Sentry Ruby SDK
2
+
3
+ > ⚠️ **Beta** — profiling is in beta and may have bugs.
4
+ > Minimum SDK: `sentry-ruby` v5.9.0+ (StackProf), v5.21.0+ (Vernier)
5
+
6
+ Profiling attaches CPU/memory samples to Sentry transactions.
7
+ It requires tracing to be enabled first — `profiles_sample_rate` is relative to
8
+ `traces_sample_rate`.
9
+
10
+ ## Contents
11
+
12
+ - [Choosing a profiler](#choosing-a-profiler)
13
+ - [StackProf setup](#stackprof-setup)
14
+ - [Vernier setup](#vernier-setup)
15
+ - [Configuration](#configuration)
16
+ - [Best Practices](#best-practices)
17
+ - [Troubleshooting](#troubleshooting)
18
+
19
+ ## Choosing a Profiler
20
+
21
+ | Profiler | Gem | Min sentry-ruby | Min Ruby | Notes |
22
+ | --------- | ----------- | --------------- | -------- | -------------------------- |
23
+ | StackProf | `stackprof` | v5.9.0 | Any | Wall-clock or CPU sampling |
24
+ | Vernier | `vernier` | v5.21.0 | 3.2.1+ | Lower overhead; GVL-aware |
25
+
26
+ Vernier is preferred for Ruby 3.2.1+ applications.
27
+ Use StackProf for older Ruby versions.
28
+
29
+ ### GVL-aware profiling (Vernier)
30
+
31
+ Ruby’s Global VM Lock (GVL) means only one thread executes Ruby code at a time.
32
+ StackProf only samples the thread holding the GVL, so multi-threaded apps (Puma,
33
+ Sidekiq) show incomplete profiles.
34
+ Vernier is GVL-aware — it tracks all threads including those waiting on I/O or the GVL,
35
+ giving a complete picture of where time is spent across the entire process.
36
+
37
+ ### Production overhead
38
+
39
+ Both profilers use sampling (not tracing), so overhead is low.
40
+ Expect ~2-5% CPU overhead per profiled transaction.
41
+ Use `profiles_sample_rate` to control how many transactions are profiled — start with
42
+ `0.1` in production and adjust based on your performance budget.
43
+
44
+ ## StackProf Setup
45
+
46
+ ```ruby
47
+ # Gemfile
48
+ gem "sentry-ruby"
49
+ gem "sentry-rails" # if Rails
50
+ gem "stackprof"
51
+ ```
52
+
53
+ ```ruby
54
+ # config/initializers/sentry.rb (Rails) or Sentry.init block
55
+ Sentry.init do |config|
56
+ config.dsn = ENV["SENTRY_DSN"]
57
+ config.traces_sample_rate = 1.0 # tracing must be enabled
58
+ config.profiles_sample_rate = 1.0 # relative to traces_sample_rate
59
+ end
60
+ ```
61
+
62
+ ## Vernier Setup
63
+
64
+ ```ruby
65
+ # Gemfile
66
+ gem "sentry-ruby"
67
+ gem "sentry-rails" # if Rails
68
+ gem "vernier"
69
+ ```
70
+
71
+ ```ruby
72
+ Sentry.init do |config|
73
+ config.dsn = ENV["SENTRY_DSN"]
74
+ config.traces_sample_rate = 1.0
75
+ config.profiles_sample_rate = 1.0
76
+ config.profiler_class = Sentry::Vernier::Profiler # opt into Vernier
77
+ end
78
+ ```
79
+
80
+ ## Configuration
81
+
82
+ | Option | Type | Default | Purpose |
83
+ | ---------------------- | ----- | ------------------ | ----------------------------------------------------------------- |
84
+ | `profiles_sample_rate` | Float | `nil` | Fraction of sampled transactions that include a profile [0.0–1.0] |
85
+ | `profiler_class` | Class | StackProf profiler | Set to `Sentry::Vernier::Profiler` to use Vernier |
86
+
87
+ `profiles_sample_rate` is **relative** to `traces_sample_rate`. With
88
+ `traces_sample_rate = 0.1` and `profiles_sample_rate = 0.5`, 5% of total transactions
89
+ include a profile.
90
+
91
+ ## Best Practices
92
+
93
+ - Start with `profiles_sample_rate = 1.0` in development to verify profiles appear in
94
+ Sentry
95
+ - Lower to `0.1`–`0.5` in production — profiling adds overhead per sampled transaction
96
+ - Prefer Vernier on Ruby 3.2.1+ for lower overhead and GVL visibility
97
+ - Profiling without tracing is not supported — ensure `traces_sample_rate > 0`
98
+
99
+ ## Troubleshooting
100
+
101
+ | Issue | Solution |
102
+ | ------------------------------------- | -------------------------------------------------------------------------------------------------------------- |
103
+ | No profiles in Sentry | Verify `traces_sample_rate > 0` — profiling requires tracing to be active |
104
+ | `Sentry::Vernier::Profiler` not found | Ensure `vernier` gem is installed and `sentry-ruby` ≥ 5.21.0 |
105
+ | StackProf missing constant error | Add `gem "stackprof"` to Gemfile and run `bundle install` |
106
+ | Profiles on some requests only | Expected — `profiles_sample_rate` is a fraction of sampled transactions, not all requests |
107
+ | Beta instability | Check [sentry-ruby releases](https://github.com/getsentry/sentry-ruby/releases) for fixes; report issues there |
@@ -0,0 +1,388 @@
1
+ # Tracing — Sentry Ruby SDK
2
+
3
+ > Minimum SDK: `sentry-ruby` v5.10.0+ for distributed tracing out of the box
4
+
5
+ ## Contents
6
+
7
+ - [Configuration](#configuration)
8
+ - [Automatic Instrumentation](#automatic-instrumentation)
9
+ - [Custom Instrumentation](#custom-instrumentation)
10
+ - [Distributed Tracing](#distributed-tracing)
11
+ - [`before_send_transaction` hook](#before_send_transaction-hook)
12
+ - [OpenTelemetry — OTLP Integration](#opentelemetry--otlp-integration)
13
+ - [Framework Auto-Instrumentation Summary](#framework-auto-instrumentation-summary)
14
+ - [Request Queue Time](#request-queue-time)
15
+ - [Best Practices](#best-practices)
16
+ - [Troubleshooting](#troubleshooting)
17
+
18
+ ## Configuration
19
+
20
+ | Option | Type | Default | Purpose |
21
+ | --------------------------- | ------- | -------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
22
+ | `traces_sample_rate` | Float | `nil` | Uniform sample rate [0.0–1.0]; `nil` disables tracing |
23
+ | `traces_sampler` | Lambda | `nil` | Custom per-transaction sampling; overrides `traces_sample_rate` |
24
+ | `trace_propagation_targets` | Array | `[/.*/]` | URLs to inject `sentry-trace` + `baggage` headers into |
25
+ | `propagate_traces` | Boolean | `true` | Propagate trace headers on outbound Net::HTTP requests |
26
+ | `capture_queue_time` | Boolean | `true` | Record request queue time from `X-Request-Start` header (v6.4.0+, Rails fixed in v6.4.1) |
27
+ | `org_id` | String | `nil` | Explicit organization ID; overrides the value auto-extracted from the DSN. Set this for self-hosted or Relay setups where DSN-based parsing may not work (v6.5.0+) |
28
+ | `strict_trace_continuation` | Boolean | `false` | When `true`, only continue an incoming trace if the `sentry-org_id` baggage matches the SDK’s effective org ID; if either is missing the trace is **not** continued. Prevents inadvertent trace stitching from unknown third-party services (v6.5.0+) |
29
+
30
+ ```ruby
31
+ Sentry.init do |config|
32
+ config.traces_sample_rate = 1.0 # set to 0.05–0.2 in production
33
+
34
+ # — or — per-transaction dynamic sampling:
35
+ config.traces_sampler = lambda do |sampling_context|
36
+ tc = sampling_context[:transaction_context]
37
+ case tc[:op]
38
+ when /http/
39
+ case tc[:name]
40
+ when /health/ then 0.0 # drop health checks
41
+ else 0.1
42
+ end
43
+ when /sidekiq/ then 0.01
44
+ else 0.0
45
+ end
46
+ end
47
+ end
48
+ ```
49
+
50
+ ## Automatic Instrumentation
51
+
52
+ ### Rails (via `sentry-rails`)
53
+
54
+ No extra code needed.
55
+ The following are auto-instrumented:
56
+
57
+ - `ActionController` — one transaction per request
58
+ - `ActiveRecord` — SQL queries as child spans
59
+ - `ActionMailer` — mail delivery as child spans
60
+ - `ActiveJob` — job execution as child spans
61
+ - `Net::HTTP` outbound calls — child spans with trace header propagation
62
+
63
+ ### Rack / Sinatra (via `Sentry::Rack::CaptureExceptions`)
64
+
65
+ ```ruby
66
+ use Sentry::Rack::CaptureExceptions
67
+ ```
68
+
69
+ Wraps each Rack request in a transaction.
70
+
71
+ ### Sidekiq (via `sentry-sidekiq`)
72
+
73
+ No extra code. Each worker execution becomes a transaction, inheriting distributed trace
74
+ context from the enqueuing request.
75
+
76
+ ## Custom Instrumentation
77
+
78
+ ### Wrap a block in a child span (preferred)
79
+
80
+ ```ruby
81
+ Sentry.with_child_span(op: "process_items", description: "processing order items") do |span|
82
+ span&.set_data(:item_count, items.length)
83
+ span&.set_data(:order_id, order.id)
84
+ order.process_items
85
+ end
86
+ ```
87
+
88
+ `with_child_span` yields `nil` when not sampling — always guard data calls with
89
+ `span&.set_data`.
90
+
91
+ ### Child span on an existing transaction
92
+
93
+ ```ruby
94
+ transaction = Sentry.get_current_scope.get_transaction
95
+ transaction&.with_child_span(op: "cache.fetch", description: "fetch user cache") do |span|
96
+ span&.set_data("cache.key", cache_key)
97
+ Rails.cache.fetch(cache_key) { User.find(user_id) }
98
+ end
99
+ ```
100
+
101
+ ### Manual transaction (only when no automatic transaction wraps the code)
102
+
103
+ ```ruby
104
+ transaction = Sentry.start_transaction(
105
+ name: "ProcessBatch",
106
+ op: "background_job",
107
+ sampled: true
108
+ )
109
+ Sentry.get_current_scope.set_span(transaction)
110
+
111
+ begin
112
+ process_batch(records)
113
+ transaction.set_status("ok")
114
+ rescue => e
115
+ transaction.set_status("internal_error")
116
+ Sentry.capture_exception(e)
117
+ raise
118
+ ensure
119
+ transaction.finish
120
+ end
121
+ ```
122
+
123
+ ### Span data conventions
124
+
125
+ ```ruby
126
+ Sentry.with_child_span(op: "http.client") do |span|
127
+ span&.set_data("http.method", "POST")
128
+ span&.set_data("http.url", endpoint)
129
+ response = http_client.post(endpoint, body)
130
+ span&.set_data("http.status_code", response.status)
131
+ response
132
+ end
133
+ ```
134
+
135
+ ## Distributed Tracing
136
+
137
+ Distributed tracing works out of the box for same-process `Net::HTTP` calls — Sentry
138
+ patches Net::HTTP to inject `sentry-trace` and `baggage` headers automatically.
139
+
140
+ ### Manual header propagation (custom HTTP clients)
141
+
142
+ ```ruby
143
+ headers = Sentry.get_trace_propagation_headers
144
+ # => { "sentry-trace" => "abc...xyz-1", "baggage" => "sentry-trace_id=abc..." }
145
+
146
+ faraday_conn.get("/api/orders") do |req|
147
+ headers.each { |k, v| req.headers[k] = v }
148
+ end
149
+ ```
150
+
151
+ ### Frontend trace stitching (Ruby backend → JS frontend)
152
+
153
+ Inject Sentry trace metadata into your HTML `<head>` so the browser SDK can continue the
154
+ same trace:
155
+
156
+ **Rails (`app/views/layouts/application.html.erb`):**
157
+
158
+ ```erb
159
+ <head>
160
+ <%= Sentry.get_trace_propagation_meta.html_safe %>
161
+ ...
162
+ </head>
163
+ ```
164
+
165
+ This renders two `<meta>` tags that `@sentry/browser` (and framework SDKs like
166
+ `@sentry/react`, [`svelte`](../svelte/index.md)) automatically read on page load.
167
+ Requires `browserTracingIntegration` on the frontend SDK.
168
+
169
+ ### Inbound trace propagation (accepting from upstream)
170
+
171
+ Rails and Rack middleware automatically read incoming `sentry-trace` and `baggage`
172
+ headers and continue the trace — no configuration required.
173
+
174
+ ### Strict trace continuation (v6.5.0+)
175
+
176
+ By default the SDK continues any incoming trace regardless of which organization sent
177
+ it.
178
+ Enable `strict_trace_continuation` to reject traces from services outside your Sentry
179
+ organization:
180
+
181
+ ```ruby
182
+ Sentry.init do |config|
183
+ config.dsn = ENV["SENTRY_DSN"]
184
+ # Reject traces where the incoming sentry-org_id baggage doesn't match this SDK's org.
185
+ # The org ID is normally extracted from the DSN automatically.
186
+ # For self-hosted or Relay setups where the DSN host doesn't embed an org ID, set it explicitly:
187
+ # config.org_id = "123456"
188
+ config.strict_trace_continuation = true
189
+ end
190
+ ```
191
+
192
+ **Decision matrix:**
193
+
194
+ | Incoming `sentry-org_id` | SDK org ID | `strict_trace_continuation` | Result |
195
+ | ------------------------ | ------------ | --------------------------- | ------------------- |
196
+ | matches | matches | `false` | Continue trace |
197
+ | missing | present | `false` | Continue trace |
198
+ | present | missing | `false` | Continue trace |
199
+ | missing | missing | `false` | Continue trace |
200
+ | **mismatch** | **mismatch** | **`false`** | **Start new trace** |
201
+ | matches | matches | `true` | Continue trace |
202
+ | missing | present | `true` | **Start new trace** |
203
+ | present | missing | `true` | **Start new trace** |
204
+ | missing | missing | `true` | Continue trace |
205
+ | mismatch | mismatch | `true` | Start new trace |
206
+
207
+ Use `strict_trace_continuation` when your service receives requests from third-party
208
+ systems that also use Sentry — without it, their trace IDs can accidentally appear in
209
+ your dashboards.
210
+
211
+ ## `before_send_transaction` hook
212
+
213
+ ```ruby
214
+ config.before_send_transaction = lambda do |event, _hint|
215
+ # Drop health check transactions
216
+ if event.transaction&.match?(%r{/health(z|check)?$})
217
+ next nil
218
+ end
219
+
220
+ # Scrub sensitive data from DB spans
221
+ event.spans.each do |span|
222
+ if span[:op]&.start_with?("db") && span[:description]&.include?("password")
223
+ span[:description] = "<filtered>"
224
+ end
225
+ end
226
+
227
+ event
228
+ end
229
+ ```
230
+
231
+ ## OpenTelemetry — OTLP Integration
232
+
233
+ > Minimum SDK: `sentry-ruby` v6.4.0+ with `sentry-opentelemetry` v6.4.0+
234
+
235
+ If the project already uses OpenTelemetry for tracing, **use the OTLP integration
236
+ instead of Sentry’s native tracing**. Sentry ingests OTel spans directly via its OTLP
237
+ endpoint — no span conversion, no dual instrumentation.
238
+
239
+ **When to use this path:** OTel tracing gems (`opentelemetry-sdk`,
240
+ `opentelemetry-instrumentation-*`) detected in the Gemfile, or
241
+ `OpenTelemetry::SDK.configure` found in source.
242
+
243
+ **When NOT to use this path:** No OpenTelemetry in the project — use Sentry’s native
244
+ `traces_sample_rate` instead.
245
+
246
+ ### Setup
247
+
248
+ ```ruby
249
+ # Gemfile — add alongside existing opentelemetry gems:
250
+ gem "sentry-opentelemetry"
251
+ gem "opentelemetry-exporter-otlp" # required for OTLP export
252
+ ```
253
+
254
+ ```ruby
255
+ # config/initializers/sentry.rb
256
+ Sentry.init do |config|
257
+ config.dsn = ENV["SENTRY_DSN"]
258
+ config.send_default_pii = true
259
+ config.otlp.enabled = true
260
+ # config.otlp.collector_url = "http://localhost:4318/v1/traces" # set if sending spans to an OTel Collector
261
+ config.enable_logs = true
262
+
263
+ # Do NOT set traces_sample_rate — tracing is handled by OTel
264
+ # Errors, Logs, Crons, and Metrics are still captured natively by Sentry
265
+ # and automatically linked to the active OTel trace
266
+ end
267
+ ```
268
+
269
+ ```ruby
270
+ # config/initializers/opentelemetry.rb — keep your existing OTel setup:
271
+ OpenTelemetry::SDK.configure do |c|
272
+ c.use_all # or specific instrumentations
273
+ # Sentry auto-adds its OTLP exporter and propagator —
274
+ # no manual SpanProcessor or Propagator wiring needed
275
+ end
276
+ ```
277
+
278
+ ### How it works
279
+
280
+ - Sentry derives an OTLP endpoint from your DSN and registers a `BatchSpanProcessor`
281
+ with the existing `TracerProvider` — your other exporters (Jaeger, Zipkin, Collector)
282
+ continue working
283
+ - A propagator injects `sentry-trace` + `baggage` headers for distributed tracing with
284
+ other Sentry-instrumented services
285
+ - Errors captured via `Sentry.capture_exception` are automatically linked to the active
286
+ OTel trace/span via shared `trace_id`
287
+
288
+ ### OTLP configuration options
289
+
290
+ | Option | Default | Purpose |
291
+ | ---------------------------------------- | ------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
292
+ | `config.otlp.enabled` | `false` | Master switch |
293
+ | `config.otlp.collector_url` | `nil` | OTLP HTTP endpoint of an OTel Collector (e.g., `http://localhost:4318/v1/traces`); when set, spans are sent to the collector instead of directly to Sentry |
294
+ | `config.otlp.setup_otlp_traces_exporter` | `true` | Auto-configure exporter; set `false` if you send to your own Collector |
295
+ | `config.otlp.setup_propagator` | `true` | Auto-configure propagator; set `false` if you manage propagation yourself |
296
+
297
+ ### Important
298
+
299
+ **Do not combine OTLP with native Sentry tracing.** When `config.otlp.enabled = true`:
300
+
301
+ - Do **not** set `traces_sample_rate` or `traces_sampler`
302
+ - Do **not** set `config.instrumenter = :otel` (that is the legacy SpanProcessor
303
+ approach)
304
+ - Do **not** call `Sentry.with_child_span` or `Sentry.start_transaction` — use OTel’s
305
+ `tracer.in_span` instead
306
+
307
+ ## Framework Auto-Instrumentation Summary
308
+
309
+ | Framework / Library | Gem Required | What’s Instrumented |
310
+ | ------------------- | -------------------- | ------------------------------------------------------ |
311
+ | Rails controllers | `sentry-rails` | Requests → transactions; actions → spans |
312
+ | ActiveRecord | `sentry-rails` | SQL queries → spans |
313
+ | ActionMailer | `sentry-rails` | Mail delivery → spans |
314
+ | ActiveJob | `sentry-rails` | Job execution → spans |
315
+ | Sidekiq workers | `sentry-sidekiq` | Worker execution → transactions |
316
+ | Resque workers | `sentry-resque` | Worker execution → transactions |
317
+ | DelayedJob | `sentry-delayed_job` | Job execution → transactions |
318
+ | Net::HTTP | `sentry-ruby` | Outbound HTTP → spans + header propagation |
319
+ | Redis | `sentry-ruby` | Redis commands → spans (needs `:redis_logger`) |
320
+ | GraphQL | `sentry-ruby` | Queries → transactions (enable with `enabled_patches`) |
321
+
322
+ ## Request Queue Time
323
+
324
+ > Minimum SDK: `sentry-ruby` v6.4.0+. Enabled by default (`capture_queue_time = true`).
325
+
326
+ Sentry automatically reads the `X-Request-Start` header and records how long the request
327
+ waited in the server queue before a worker thread picked it up.
328
+ The value is stored as `http.server.request.time_in_queue` (milliseconds) on the
329
+ transaction.
330
+
331
+ When running behind Puma, the SDK subtracts `puma.request_body_wait` (time Puma spent
332
+ receiving the request body from a slow client) to isolate actual queue time from upload
333
+ time.
334
+
335
+ ### Proxy configuration required
336
+
337
+ Your reverse proxy must set the header.
338
+ Without it, no queue time is recorded.
339
+
340
+ **Nginx:**
341
+
342
+ ```nginx
343
+ proxy_set_header X-Request-Start "t=${msec}";
344
+ ```
345
+
346
+ **Heroku:** Sets `X-Request-Start` automatically — no configuration needed.
347
+
348
+ **HAProxy:**
349
+
350
+ ```
351
+ http-request set-header X-Request-Start t=%[date()]%[date_us()]
352
+ ```
353
+
354
+ ### Disable
355
+
356
+ ```ruby
357
+ config.capture_queue_time = false
358
+ ```
359
+
360
+ ### Why this matters
361
+
362
+ High queue time means Puma workers are saturated — requests are waiting for a free
363
+ thread. This is a key indicator for scaling decisions.
364
+ Sentry surfaces it in the transaction waterfall so you can distinguish “the app is slow”
365
+ from “the app was waiting for a worker.”
366
+
367
+ ## Best Practices
368
+
369
+ - Set `traces_sample_rate = 1.0` in development/staging; use `0.05`–`0.2` in production
370
+ - Use `traces_sampler` to exclude health checks and low-value endpoints
371
+ - Set `op` to a semantic value: `"http.server"`, `"db.query"`, `"queue.process"`,
372
+ `"cache.get"`
373
+ - Prefer `with_child_span` over manual transaction management — it handles errors and
374
+ finishing automatically
375
+ - Always guard span calls with `span&.set_data` — `with_child_span` yields `nil` when
376
+ not sampling
377
+
378
+ ## Troubleshooting
379
+
380
+ | Issue | Solution |
381
+ | --------------------------------------- | --------------------------------------------------------------------------------- |
382
+ | No transactions in dashboard | Set `traces_sample_rate > 0`; ensure `sentry-rails` or Rack middleware is present |
383
+ | Sidekiq jobs not traced | Add `sentry-sidekiq` gem; no other config needed |
384
+ | Missing DB spans | Ensure `sentry-rails` is loaded (it patches ActiveRecord) |
385
+ | Distributed trace not stitching | Verify `sentry-trace` + `baggage` headers are forwarded by all services |
386
+ | Frontend trace not linking | Add `<%= Sentry.get_trace_propagation_meta.html_safe %>` to your HTML `<head>` |
387
+ | Health check transactions flooding | Use `traces_sampler` to return `0.0` for health check transaction names |
388
+ | `before_send_transaction` not filtering | Return `nil` (not `false`) to drop the event |