@danieljvdm/dev-kit 1.0.1 → 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 (330) hide show
  1. package/README.md +6 -6
  2. package/package.json +1 -1
  3. package/skill-sources.jsonc +6 -29
  4. package/skill-sources.lock.json +23 -109
  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 +11 -115
  45. package/skills/open-pull-request/agents/openai.yaml +3 -3
  46. package/skills/open-pull-request/references/evidence.md +22 -0
  47. package/skills/open-pull-request/references/explanation.md +21 -0
  48. package/skills/open-pull-request/references/publication.md +21 -0
  49. package/skills/sentry/LICENSE +202 -0
  50. package/skills/sentry/LICENSE-UPSTREAM +21 -0
  51. package/skills/sentry/NOTICE +14 -0
  52. package/skills/sentry/SKILL.md +33 -0
  53. package/skills/sentry/references/alert-payloads.md +105 -0
  54. package/skills/sentry/references/alerts.md +17 -0
  55. package/skills/sentry/references/artifacts.md +25 -0
  56. package/skills/sentry/references/auth-token.md +65 -0
  57. package/skills/sentry/references/concepts/ai-monitoring.md +131 -0
  58. package/skills/sentry/references/concepts/choosing-a-signal.md +78 -0
  59. package/skills/sentry/references/concepts/crons.md +50 -0
  60. package/skills/sentry/references/concepts/data-scrubbing.md +43 -0
  61. package/skills/sentry/references/concepts/errors.md +40 -0
  62. package/skills/sentry/references/concepts/logging.md +85 -0
  63. package/skills/sentry/references/concepts/metrics.md +49 -0
  64. package/skills/sentry/references/concepts/monitors.md +78 -0
  65. package/skills/sentry/references/concepts/profiling.md +38 -0
  66. package/skills/sentry/references/concepts/reduce-volume.md +49 -0
  67. package/skills/sentry/references/concepts/releases.md +43 -0
  68. package/skills/sentry/references/concepts/session-replay.md +35 -0
  69. package/skills/sentry/references/concepts/tracing.md +54 -0
  70. package/skills/sentry/references/concepts/user-feedback.md +36 -0
  71. package/skills/sentry/references/debug-artifacts/android.md +68 -0
  72. package/skills/sentry/references/debug-artifacts/apple.md +96 -0
  73. package/skills/sentry/references/debug-artifacts/dotnet.md +70 -0
  74. package/skills/sentry/references/debug-artifacts/flutter.md +65 -0
  75. package/skills/sentry/references/debug-artifacts/index.md +75 -0
  76. package/skills/sentry/references/debug-artifacts/javascript.md +94 -0
  77. package/skills/sentry/references/debug-artifacts/matching.md +73 -0
  78. package/skills/sentry/references/debug-artifacts/react-native.md +75 -0
  79. package/skills/sentry/references/first-error-setup.md +25 -0
  80. package/skills/sentry/references/instrumentation.md +30 -0
  81. package/skills/sentry/references/issues.md +32 -0
  82. package/skills/sentry/references/new-project.md +17 -0
  83. package/skills/sentry/references/otel-exporter.md +30 -0
  84. package/skills/sentry/references/release-workflow.md +31 -0
  85. package/skills/sentry/references/releases/ci-pipeline.md +214 -0
  86. package/skills/sentry/references/releases/index.md +93 -0
  87. package/skills/sentry/references/releases/suspect-commits.md +155 -0
  88. package/skills/sentry/references/releases/tagging.md +131 -0
  89. package/skills/sentry/references/releases/troubleshooting.md +67 -0
  90. package/skills/sentry/references/sdks/android/crons.md +305 -0
  91. package/skills/sentry/references/sdks/android/error-monitoring.md +800 -0
  92. package/skills/sentry/references/sdks/android/index.md +748 -0
  93. package/skills/sentry/references/sdks/android/integrations.md +48 -0
  94. package/skills/sentry/references/sdks/android/logging.md +374 -0
  95. package/skills/sentry/references/sdks/android/metrics.md +288 -0
  96. package/skills/sentry/references/sdks/android/profiling.md +397 -0
  97. package/skills/sentry/references/sdks/android/session-replay.md +406 -0
  98. package/skills/sentry/references/sdks/android/tracing.md +861 -0
  99. package/skills/sentry/references/sdks/browser/error-monitoring.md +861 -0
  100. package/skills/sentry/references/sdks/browser/index.md +714 -0
  101. package/skills/sentry/references/sdks/browser/logging.md +315 -0
  102. package/skills/sentry/references/sdks/browser/profiling.md +236 -0
  103. package/skills/sentry/references/sdks/browser/session-replay.md +586 -0
  104. package/skills/sentry/references/sdks/browser/tracing.md +561 -0
  105. package/skills/sentry/references/sdks/browser/user-feedback.md +354 -0
  106. package/skills/sentry/references/sdks/cloudflare/ai-monitoring.md +661 -0
  107. package/skills/sentry/references/sdks/cloudflare/crons.md +231 -0
  108. package/skills/sentry/references/sdks/cloudflare/durable-objects.md +381 -0
  109. package/skills/sentry/references/sdks/cloudflare/error-monitoring.md +329 -0
  110. package/skills/sentry/references/sdks/cloudflare/index.md +698 -0
  111. package/skills/sentry/references/sdks/cloudflare/logging.md +169 -0
  112. package/skills/sentry/references/sdks/cloudflare/nodejs-compat.md +134 -0
  113. package/skills/sentry/references/sdks/cloudflare/tracing.md +475 -0
  114. package/skills/sentry/references/sdks/cocoa/error-monitoring.md +394 -0
  115. package/skills/sentry/references/sdks/cocoa/index.md +497 -0
  116. package/skills/sentry/references/sdks/cocoa/logging.md +209 -0
  117. package/skills/sentry/references/sdks/cocoa/metrics.md +136 -0
  118. package/skills/sentry/references/sdks/cocoa/profiling.md +223 -0
  119. package/skills/sentry/references/sdks/cocoa/session-replay.md +257 -0
  120. package/skills/sentry/references/sdks/cocoa/tracing.md +524 -0
  121. package/skills/sentry/references/sdks/cocoa/user-feedback.md +310 -0
  122. package/skills/sentry/references/sdks/dotnet/crons.md +465 -0
  123. package/skills/sentry/references/sdks/dotnet/error-monitoring.md +1100 -0
  124. package/skills/sentry/references/sdks/dotnet/index.md +614 -0
  125. package/skills/sentry/references/sdks/dotnet/logging.md +556 -0
  126. package/skills/sentry/references/sdks/dotnet/metrics.md +229 -0
  127. package/skills/sentry/references/sdks/dotnet/profiling.md +296 -0
  128. package/skills/sentry/references/sdks/dotnet/tracing.md +897 -0
  129. package/skills/sentry/references/sdks/elixir/crons.md +371 -0
  130. package/skills/sentry/references/sdks/elixir/error-monitoring.md +335 -0
  131. package/skills/sentry/references/sdks/elixir/index.md +383 -0
  132. package/skills/sentry/references/sdks/elixir/logging.md +239 -0
  133. package/skills/sentry/references/sdks/elixir/tracing.md +233 -0
  134. package/skills/sentry/references/sdks/flutter/ecosystem-integrations.md +70 -0
  135. package/skills/sentry/references/sdks/flutter/error-monitoring.md +312 -0
  136. package/skills/sentry/references/sdks/flutter/index.md +728 -0
  137. package/skills/sentry/references/sdks/flutter/logging.md +387 -0
  138. package/skills/sentry/references/sdks/flutter/metrics.md +310 -0
  139. package/skills/sentry/references/sdks/flutter/profiling.md +214 -0
  140. package/skills/sentry/references/sdks/flutter/session-replay.md +308 -0
  141. package/skills/sentry/references/sdks/flutter/tracing.md +502 -0
  142. package/skills/sentry/references/sdks/go/crons.md +270 -0
  143. package/skills/sentry/references/sdks/go/error-monitoring.md +361 -0
  144. package/skills/sentry/references/sdks/go/index.md +324 -0
  145. package/skills/sentry/references/sdks/go/logging.md +354 -0
  146. package/skills/sentry/references/sdks/go/metrics.md +273 -0
  147. package/skills/sentry/references/sdks/go/profiling.md +46 -0
  148. package/skills/sentry/references/sdks/go/tracing.md +366 -0
  149. package/skills/sentry/references/sdks/index.md +41 -0
  150. package/skills/sentry/references/sdks/nestjs/ai-monitoring.md +410 -0
  151. package/skills/sentry/references/sdks/nestjs/crons.md +268 -0
  152. package/skills/sentry/references/sdks/nestjs/error-monitoring.md +729 -0
  153. package/skills/sentry/references/sdks/nestjs/index.md +699 -0
  154. package/skills/sentry/references/sdks/nestjs/logging.md +174 -0
  155. package/skills/sentry/references/sdks/nestjs/metrics.md +243 -0
  156. package/skills/sentry/references/sdks/nestjs/profiling.md +127 -0
  157. package/skills/sentry/references/sdks/nestjs/tracing.md +762 -0
  158. package/skills/sentry/references/sdks/nextjs/ai-monitoring.md +494 -0
  159. package/skills/sentry/references/sdks/nextjs/crons.md +383 -0
  160. package/skills/sentry/references/sdks/nextjs/error-monitoring.md +974 -0
  161. package/skills/sentry/references/sdks/nextjs/index.md +491 -0
  162. package/skills/sentry/references/sdks/nextjs/logging.md +381 -0
  163. package/skills/sentry/references/sdks/nextjs/metrics.md +411 -0
  164. package/skills/sentry/references/sdks/nextjs/profiling.md +403 -0
  165. package/skills/sentry/references/sdks/nextjs/session-replay.md +462 -0
  166. package/skills/sentry/references/sdks/nextjs/tracing.md +628 -0
  167. package/skills/sentry/references/sdks/node/ai-monitoring.md +303 -0
  168. package/skills/sentry/references/sdks/node/crons.md +432 -0
  169. package/skills/sentry/references/sdks/node/error-monitoring.md +1125 -0
  170. package/skills/sentry/references/sdks/node/index.md +942 -0
  171. package/skills/sentry/references/sdks/node/logging.md +380 -0
  172. package/skills/sentry/references/sdks/node/metrics.md +278 -0
  173. package/skills/sentry/references/sdks/node/profiling.md +373 -0
  174. package/skills/sentry/references/sdks/node/tracing.md +878 -0
  175. package/skills/sentry/references/sdks/php/ai-monitoring.md +310 -0
  176. package/skills/sentry/references/sdks/php/crons.md +265 -0
  177. package/skills/sentry/references/sdks/php/error-monitoring.md +626 -0
  178. package/skills/sentry/references/sdks/php/index.md +362 -0
  179. package/skills/sentry/references/sdks/php/laravel.md +542 -0
  180. package/skills/sentry/references/sdks/php/logging.md +242 -0
  181. package/skills/sentry/references/sdks/php/metrics.md +193 -0
  182. package/skills/sentry/references/sdks/php/profiling.md +115 -0
  183. package/skills/sentry/references/sdks/php/symfony.md +552 -0
  184. package/skills/sentry/references/sdks/php/tracing.md +516 -0
  185. package/skills/sentry/references/sdks/python/ai-monitoring.md +351 -0
  186. package/skills/sentry/references/sdks/python/crons.md +218 -0
  187. package/skills/sentry/references/sdks/python/error-monitoring.md +292 -0
  188. package/skills/sentry/references/sdks/python/index.md +361 -0
  189. package/skills/sentry/references/sdks/python/logging.md +234 -0
  190. package/skills/sentry/references/sdks/python/metrics.md +154 -0
  191. package/skills/sentry/references/sdks/python/profiling.md +120 -0
  192. package/skills/sentry/references/sdks/python/tracing.md +364 -0
  193. package/skills/sentry/references/sdks/react/error-monitoring.md +1607 -0
  194. package/skills/sentry/references/sdks/react/index.md +492 -0
  195. package/skills/sentry/references/sdks/react/logging.md +364 -0
  196. package/skills/sentry/references/sdks/react/profiling.md +322 -0
  197. package/skills/sentry/references/sdks/react/react-features.md +1272 -0
  198. package/skills/sentry/references/sdks/react/session-replay.md +1193 -0
  199. package/skills/sentry/references/sdks/react/tracing.md +1415 -0
  200. package/skills/sentry/references/sdks/react-native/error-monitoring.md +1481 -0
  201. package/skills/sentry/references/sdks/react-native/expo-config-plugin.md +45 -0
  202. package/skills/sentry/references/sdks/react-native/index.md +1030 -0
  203. package/skills/sentry/references/sdks/react-native/logging.md +444 -0
  204. package/skills/sentry/references/sdks/react-native/profiling.md +386 -0
  205. package/skills/sentry/references/sdks/react-native/session-replay.md +704 -0
  206. package/skills/sentry/references/sdks/react-native/tracing.md +1086 -0
  207. package/skills/sentry/references/sdks/react-native/user-feedback.md +815 -0
  208. package/skills/sentry/references/sdks/react-router-framework/error-monitoring.md +127 -0
  209. package/skills/sentry/references/sdks/react-router-framework/index.md +411 -0
  210. package/skills/sentry/references/sdks/react-router-framework/logging.md +66 -0
  211. package/skills/sentry/references/sdks/react-router-framework/profiling.md +57 -0
  212. package/skills/sentry/references/sdks/react-router-framework/react-router-framework-features.md +110 -0
  213. package/skills/sentry/references/sdks/react-router-framework/session-replay.md +67 -0
  214. package/skills/sentry/references/sdks/react-router-framework/tracing.md +96 -0
  215. package/skills/sentry/references/sdks/react-router-framework/user-feedback.md +71 -0
  216. package/skills/sentry/references/sdks/ruby/crons.md +184 -0
  217. package/skills/sentry/references/sdks/ruby/error-monitoring.md +248 -0
  218. package/skills/sentry/references/sdks/ruby/index.md +297 -0
  219. package/skills/sentry/references/sdks/ruby/logging.md +168 -0
  220. package/skills/sentry/references/sdks/ruby/metrics.md +196 -0
  221. package/skills/sentry/references/sdks/ruby/migration.md +321 -0
  222. package/skills/sentry/references/sdks/ruby/profiling.md +107 -0
  223. package/skills/sentry/references/sdks/ruby/tracing.md +388 -0
  224. package/skills/sentry/references/sdks/svelte/error-monitoring.md +456 -0
  225. package/skills/sentry/references/sdks/svelte/index.md +467 -0
  226. package/skills/sentry/references/sdks/svelte/logging.md +344 -0
  227. package/skills/sentry/references/sdks/svelte/session-replay.md +369 -0
  228. package/skills/sentry/references/sdks/svelte/tracing.md +406 -0
  229. package/skills/sentry/references/sdks/tanstack-start/error-monitoring.md +149 -0
  230. package/skills/sentry/references/sdks/tanstack-start/index.md +381 -0
  231. package/skills/sentry/references/sdks/tanstack-start/logging.md +74 -0
  232. package/skills/sentry/references/sdks/tanstack-start/session-replay.md +76 -0
  233. package/skills/sentry/references/sdks/tanstack-start/tanstackstart-features.md +128 -0
  234. package/skills/sentry/references/sdks/tanstack-start/tracing.md +123 -0
  235. package/skills/sentry/references/sdks/tanstack-start/user-feedback.md +81 -0
  236. package/skills/sentry/references/search-query-language.md +226 -0
  237. package/skills/sentry/references/semantics/angular.md +7 -0
  238. package/skills/sentry/references/semantics/app.md +28 -0
  239. package/skills/sentry/references/semantics/art.md +17 -0
  240. package/skills/sentry/references/semantics/aws.md +43 -0
  241. package/skills/sentry/references/semantics/browser.md +34 -0
  242. package/skills/sentry/references/semantics/cache.md +12 -0
  243. package/skills/sentry/references/semantics/client.md +8 -0
  244. package/skills/sentry/references/semantics/cloud.md +12 -0
  245. package/skills/sentry/references/semantics/cloudflare.md +23 -0
  246. package/skills/sentry/references/semantics/code.md +11 -0
  247. package/skills/sentry/references/semantics/culture.md +11 -0
  248. package/skills/sentry/references/semantics/db.md +21 -0
  249. package/skills/sentry/references/semantics/device.md +43 -0
  250. package/skills/sentry/references/semantics/error.md +7 -0
  251. package/skills/sentry/references/semantics/event.md +8 -0
  252. package/skills/sentry/references/semantics/exception.md +10 -0
  253. package/skills/sentry/references/semantics/faas.md +19 -0
  254. package/skills/sentry/references/semantics/file.md +8 -0
  255. package/skills/sentry/references/semantics/flag.md +7 -0
  256. package/skills/sentry/references/semantics/gcp.md +16 -0
  257. package/skills/sentry/references/semantics/gen_ai.md +53 -0
  258. package/skills/sentry/references/semantics/general.md +11 -0
  259. package/skills/sentry/references/semantics/graphql.md +9 -0
  260. package/skills/sentry/references/semantics/grpc.md +19 -0
  261. package/skills/sentry/references/semantics/http.md +34 -0
  262. package/skills/sentry/references/semantics/index.md +63 -0
  263. package/skills/sentry/references/semantics/jsonrpc.md +8 -0
  264. package/skills/sentry/references/semantics/jvm.md +12 -0
  265. package/skills/sentry/references/semantics/koa.md +7 -0
  266. package/skills/sentry/references/semantics/logger.md +7 -0
  267. package/skills/sentry/references/semantics/mcp.md +37 -0
  268. package/skills/sentry/references/semantics/mdc.md +7 -0
  269. package/skills/sentry/references/semantics/messaging.md +23 -0
  270. package/skills/sentry/references/semantics/middleware.md +7 -0
  271. package/skills/sentry/references/semantics/navigation.md +9 -0
  272. package/skills/sentry/references/semantics/nel.md +11 -0
  273. package/skills/sentry/references/semantics/network.md +17 -0
  274. package/skills/sentry/references/semantics/os.md +15 -0
  275. package/skills/sentry/references/semantics/otel.md +10 -0
  276. package/skills/sentry/references/semantics/params.md +7 -0
  277. package/skills/sentry/references/semantics/process.md +14 -0
  278. package/skills/sentry/references/semantics/react.md +7 -0
  279. package/skills/sentry/references/semantics/remix.md +7 -0
  280. package/skills/sentry/references/semantics/resource.md +7 -0
  281. package/skills/sentry/references/semantics/rpc.md +10 -0
  282. package/skills/sentry/references/semantics/score.md +10 -0
  283. package/skills/sentry/references/semantics/sentry.md +69 -0
  284. package/skills/sentry/references/semantics/server.md +8 -0
  285. package/skills/sentry/references/semantics/service.md +8 -0
  286. package/skills/sentry/references/semantics/session.md +7 -0
  287. package/skills/sentry/references/semantics/state.md +7 -0
  288. package/skills/sentry/references/semantics/thread.md +8 -0
  289. package/skills/sentry/references/semantics/timber.md +7 -0
  290. package/skills/sentry/references/semantics/trpc.md +8 -0
  291. package/skills/sentry/references/semantics/ui.md +18 -0
  292. package/skills/sentry/references/semantics/url.md +15 -0
  293. package/skills/sentry/references/semantics/user.md +17 -0
  294. package/skills/sentry/references/semantics/user_agent.md +7 -0
  295. package/skills/sentry/references/semantics/vercel.md +42 -0
  296. package/skills/sentry/references/setup-verification.md +39 -0
  297. package/skills/sentry/references/snapshots/github-actions-fanout.md +206 -0
  298. package/skills/sentry/references/snapshots/github-actions-simple.md +102 -0
  299. package/skills/sentry/references/snapshots/github-actions-swift-snapshot-testing.md +118 -0
  300. package/skills/sentry/references/snapshots/index.md +19 -0
  301. package/skills/sentry/references/snapshots/snapshot-previews.md +100 -0
  302. package/skills/sentry/references/snapshots/snapshots.md +123 -0
  303. package/skills/sentry/references/snapshots/wizard-setup.md +134 -0
  304. package/skills/testing/LICENSE +21 -0
  305. package/skills/testing/NOTICE +7 -0
  306. package/skills/testing/SKILL.md +13 -19
  307. package/skills/testing/agents/openai.yaml +1 -2
  308. package/skills/testing/references/selection.md +23 -0
  309. package/skills/testing/references/tdd.md +19 -0
  310. package/skills/testing/references/test-design.md +17 -0
  311. package/src/catalog.ts +1 -7
  312. package/skills/build-effect-apis/SKILL.md +0 -81
  313. package/skills/build-effect-apis/agents/openai.yaml +0 -4
  314. package/skills/build-effect-clis/SKILL.md +0 -92
  315. package/skills/build-effect-clis/agents/openai.yaml +0 -4
  316. package/skills/effect-architecture-audit/agents/openai.yaml +0 -4
  317. package/skills/effect-atom-state/SKILL.md +0 -97
  318. package/skills/effect-atom-state/agents/openai.yaml +0 -4
  319. package/skills/effect-ts/SKILL.md +0 -35
  320. package/skills/effect-ts/agents/openai.yaml +0 -4
  321. /package/skills/{build-effect-apis/references → effect-development/references/api}/cloudflare-workers.md +0 -0
  322. /package/skills/{build-effect-apis/references → effect-development/references/api}/runtime-assembly.md +0 -0
  323. /package/skills/{build-effect-apis/references → effect-development/references/api}/server-and-middleware.md +0 -0
  324. /package/skills/{build-effect-apis/references → effect-development/references/api}/shared-contracts.md +0 -0
  325. /package/skills/{effect-architecture-audit/references → effect-development/references/architecture}/service-and-boundary-audit.md +0 -0
  326. /package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-lifecycle.md +0 -0
  327. /package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-workflows.md +0 -0
  328. /package/skills/{effect-atom-state/references → effect-development/references/atom}/tanstack-start.md +0 -0
  329. /package/skills/{build-effect-clis/references → effect-development/references/cli}/command-design.md +0 -0
  330. /package/skills/{build-effect-clis/references → effect-development/references/cli}/processes-and-platform.md +0 -0
@@ -0,0 +1,324 @@
1
+ # Sentry Go SDK
2
+
3
+ Opinionated wizard that scans your Go project and guides you through complete Sentry
4
+ setup.
5
+
6
+ > **Note:** SDK versions and APIs below reflect Sentry docs at time of writing
7
+ > (sentry-go v0.43.0+). As of v0.33.0+, the SDK requires **Go 1.25 or later** (supports
8
+ > the two most recent Go major versions).
9
+ > Always verify against
10
+ > [docs.sentry.io/platforms/go/](https://docs.sentry.io/platforms/go/) before
11
+ > implementing.
12
+
13
+ ---
14
+
15
+ ## Phase 1: Detect
16
+
17
+ Run these commands to understand the project before making any recommendations:
18
+
19
+ ```bash
20
+ # Check existing Sentry dependency
21
+ grep -i sentry go.mod 2>/dev/null
22
+
23
+ # Detect web framework
24
+ grep -E "gin-gonic/gin|labstack/echo|gofiber/fiber|valyala/fasthttp|kataras/iris|urfave/negroni" go.mod 2>/dev/null
25
+
26
+ # Detect gRPC
27
+ grep "google.golang.org/grpc" go.mod 2>/dev/null
28
+
29
+ # Detect logging libraries
30
+ grep -E "sirupsen/logrus|go.uber.org/zap|rs/zerolog|log/slog" go.mod go.sum 2>/dev/null
31
+
32
+ # Detect cron / scheduler patterns
33
+ grep -E "robfig/cron|go-co-op/gocron|jasonlvhit/gocron" go.mod 2>/dev/null
34
+
35
+ # Detect OpenTelemetry usage
36
+ grep "go.opentelemetry.io" go.mod 2>/dev/null
37
+
38
+ # Check for companion frontend
39
+ ls frontend/ web/ client/ ui/ 2>/dev/null
40
+ ```
41
+
42
+ **What to note:**
43
+
44
+ - Is `sentry-go` already in `go.mod`? If yes, skip to Phase 2 (configure features).
45
+ - Which framework is used?
46
+ (Determines which sub-package and middleware to install.)
47
+ - Which logging library?
48
+ (Enables automatic log capture.)
49
+ - Are cron/scheduler patterns present?
50
+ (Triggers Crons recommendation.)
51
+ - Is there a companion frontend directory?
52
+ (Triggers Phase 4 cross-link.)
53
+
54
+ ---
55
+
56
+ ## Phase 2: Recommend
57
+
58
+ Based on what you found, present a concrete recommendation.
59
+ Don’t ask open-ended questions — lead with a proposal:
60
+
61
+ **Recommended (core coverage):**
62
+
63
+ - ✅ **Error Monitoring** — always; captures panics and unhandled errors
64
+ - ✅ **Tracing** — if HTTP handlers, gRPC, or DB calls are detected
65
+ - ✅ **Logging** — if logrus, zap, zerolog, or slog is detected
66
+
67
+ **Optional (enhanced observability):**
68
+
69
+ - ⚡ **Metrics** — custom counters and gauges for business KPIs / SLOs
70
+ - ⚡ **Crons** — detect silent failures in scheduled jobs
71
+ - ⚠️ **Profiling** — removed in sentry-go v0.31.0; see `./profiling.md` for alternatives
72
+
73
+ **Recommendation logic:**
74
+
75
+ | Feature | Recommend when … |
76
+ | ---------------- | ------------------------------------------------------------------ |
77
+ | Error Monitoring | **Always** — non-negotiable baseline |
78
+ | Tracing | `net/http`, gin, echo, fiber, gRPC, or DB calls detected |
79
+ | Logging | logrus, zap, zerolog, or `log/slog` imports detected |
80
+ | Metrics | Business events, SLO tracking, or counters needed |
81
+ | Crons | `robfig/cron`, `gocron`, or scheduled job patterns detected |
82
+ | Profiling | ⚠️ **Removed in v0.31.0** — do not recommend; see `./profiling.md` |
83
+
84
+ Propose: _“I recommend setting up Error Monitoring + Tracing [+ Logging if applicable].
85
+ Want me to also add Metrics or Crons?”_
86
+
87
+ ---
88
+
89
+ ## Phase 3: Guide
90
+
91
+ ### Install
92
+
93
+ ```bash
94
+ # Core SDK (always required)
95
+ go get github.com/getsentry/sentry-go
96
+
97
+ # Framework sub-package — install only what matches detected framework:
98
+ go get github.com/getsentry/sentry-go/http # net/http
99
+ go get github.com/getsentry/sentry-go/gin # Gin
100
+ go get github.com/getsentry/sentry-go/echo # Echo
101
+ go get github.com/getsentry/sentry-go/fiber # Fiber
102
+ go get github.com/getsentry/sentry-go/fasthttp # FastHTTP
103
+
104
+ # Logging sub-packages — install only what matches detected logging lib:
105
+ go get github.com/getsentry/sentry-go/logrus # Logrus
106
+ go get github.com/getsentry/sentry-go/slog # slog (stdlib, Go 1.21+)
107
+ go get github.com/getsentry/sentry-go/zap # Zap
108
+ go get github.com/getsentry/sentry-go/zerolog # Zerolog
109
+
110
+ # gRPC interceptors (only if google.golang.org/grpc is detected):
111
+ go get github.com/getsentry/sentry-go/grpc
112
+
113
+ # OpenTelemetry bridge (only if OTel is already in use):
114
+ go get github.com/getsentry/sentry-go/otel
115
+ ```
116
+
117
+ ### Quick Start — Recommended Init
118
+
119
+ Add to `main()` before any other code.
120
+ This config enables the most features with sensible defaults:
121
+
122
+ ```go
123
+ import (
124
+ "log"
125
+ "os"
126
+ "time"
127
+ "github.com/getsentry/sentry-go"
128
+ )
129
+
130
+ err := sentry.Init(sentry.ClientOptions{
131
+ Dsn: os.Getenv("SENTRY_DSN"),
132
+ Environment: os.Getenv("SENTRY_ENVIRONMENT"), // "production", "staging", etc.
133
+ Release: release, // inject via -ldflags at build time
134
+ SendDefaultPII: true,
135
+ AttachStacktrace: true,
136
+
137
+ // Tracing (adjust sample rate for production)
138
+ EnableTracing: true,
139
+ TracesSampleRate: 1.0, // lower to 0.1–0.2 in high-traffic production
140
+
141
+ // Logs
142
+ EnableLogs: true,
143
+ })
144
+ if err != nil {
145
+ log.Fatalf("sentry.Init: %s", err)
146
+ }
147
+ defer sentry.Flush(2 * time.Second)
148
+ ```
149
+
150
+ **Injecting `Release` at build time (recommended):**
151
+
152
+ ```go
153
+ var release string // set by -ldflags
154
+
155
+ // go build -ldflags="-X main.release=my-app@$(git describe --tags)"
156
+ ```
157
+
158
+ ### Framework Middleware
159
+
160
+ After `sentry.Init`, register the Sentry middleware for your framework:
161
+
162
+ | Framework | Import path | Middleware call | `Repanic` | `WaitForDelivery` |
163
+ | ---------- | ------------------------ | ------------------------------------ | --------- | ----------------- |
164
+ | `net/http` | `.../sentry-go/http` | `sentryhttp.New(opts).Handle(h)` | `true` | `false` |
165
+ | Gin | `.../sentry-go/gin` | `router.Use(sentrygin.New(opts))` | `true` | `false` |
166
+ | Echo | `.../sentry-go/echo` | `e.Use(sentryecho.New(opts))` | `true` | `false` |
167
+ | Fiber | `.../sentry-go/fiber` | `app.Use(sentryfiber.New(opts))` | `false` | `true` |
168
+ | FastHTTP | `.../sentry-go/fasthttp` | `sentryfasthttp.New(opts).Handle(h)` | `false` | `true` |
169
+ | Iris | `.../sentry-go/iris` | `app.Use(sentryiris.New(opts))` | `true` | `false` |
170
+ | Negroni | `.../sentry-go/negroni` | `n.Use(sentrynegroni.New(opts))` | `true` | `false` |
171
+
172
+ > **Note:** Fiber and FastHTTP are built on `valyala/fasthttp` which has no built-in
173
+ > recovery. Use `Repanic: false, WaitForDelivery: true` for those.
174
+
175
+ **Hub access in handlers:**
176
+
177
+ ```go
178
+ // net/http, Negroni:
179
+ hub := sentry.GetHubFromContext(r.Context())
180
+
181
+ // Gin:
182
+ hub := sentrygin.GetHubFromContext(c)
183
+
184
+ // Echo:
185
+ hub := sentryecho.GetHubFromContext(c)
186
+
187
+ // Fiber:
188
+ hub := sentryfiber.GetHubFromContext(c)
189
+ ```
190
+
191
+ ### gRPC Integration
192
+
193
+ For gRPC servers and clients, use the `sentrygrpc` interceptors instead:
194
+
195
+ ```go
196
+ import sentrygrpc "github.com/getsentry/sentry-go/grpc"
197
+
198
+ // Server: register interceptors when creating the gRPC server
199
+ server := grpc.NewServer(
200
+ grpc.UnaryInterceptor(sentrygrpc.UnaryServerInterceptor()),
201
+ grpc.StreamInterceptor(sentrygrpc.StreamServerInterceptor()),
202
+ )
203
+
204
+ // Client: register interceptors when dialing
205
+ conn, err := grpc.NewClient(
206
+ address,
207
+ grpc.WithUnaryInterceptor(sentrygrpc.UnaryClientInterceptor()),
208
+ grpc.WithStreamInterceptor(sentrygrpc.StreamClientInterceptor()),
209
+ )
210
+
211
+ // Hub access inside a gRPC handler:
212
+ hub := sentry.GetHubFromContext(ctx)
213
+ ```
214
+
215
+ ### For Each Agreed Feature
216
+
217
+ Walk through features one at a time.
218
+ Load the reference file for each, follow its steps, and verify before moving to the
219
+ next:
220
+
221
+ | Feature | Reference file | Load when … |
222
+ | ---------------- | ----------------------- | ------------------------------------------------------------------------------------------------------------- |
223
+ | Error Monitoring | `./error-monitoring.md` | Always (baseline) |
224
+ | Tracing | `./tracing.md` | HTTP handlers / distributed tracing |
225
+ | Profiling | `./profiling.md` | ⚠️ Not available — removed in v0.31.0; do not set up. Read the file only for pprof / third-party alternatives |
226
+ | Logging | `./logging.md` | logrus / zap / zerolog / slog detected |
227
+ | Metrics | `./metrics.md` | Business KPIs / SLO tracking |
228
+ | Crons | `./crons.md` | Scheduler / cron job patterns detected |
229
+
230
+ For each feature: `Read ./<feature>.md`, follow steps exactly, verify it works.
231
+
232
+ ---
233
+
234
+ ## Configuration Reference
235
+
236
+ ### Key `ClientOptions` Fields
237
+
238
+ | Option | Type | Default | Purpose |
239
+ | ----------------------- | --------------- | ------- | ------------------------------------------------ |
240
+ | `Dsn` | `string` | `""` | SDK disabled if empty; env: `SENTRY_DSN` |
241
+ | `Environment` | `string` | `""` | e.g., `"production"`; env: `SENTRY_ENVIRONMENT` |
242
+ | `Release` | `string` | `""` | e.g., `"my-app@1.0.0"`; env: `SENTRY_RELEASE` |
243
+ | `SendDefaultPII` | `bool` | `false` | Include IP, request headers |
244
+ | `AttachStacktrace` | `bool` | `false` | Stack traces on `CaptureMessage` calls |
245
+ | `SampleRate` | `float64` | `1.0` | Error event sample rate (0.0 treated as 1.0) |
246
+ | `EnableTracing` | `bool` | `false` | Enable performance tracing |
247
+ | `TracesSampleRate` | `float64` | `0.0` | Transaction sample rate |
248
+ | `TracesSampler` | `TracesSampler` | `nil` | Custom per-transaction sampling (overrides rate) |
249
+ | `EnableLogs` | `bool` | `false` | Enable Sentry Logs feature |
250
+ | `MaxBreadcrumbs` | `int` | `100` | Max breadcrumbs per event |
251
+ | `MaxErrorDepth` | `int` | `100` | Max depth for unwrapping error chains |
252
+ | `Debug` | `bool` | `false` | Verbose SDK debug output |
253
+ | `BeforeSend` | `func` | `nil` | Hook to mutate/drop error events |
254
+ | `BeforeSendTransaction` | `func` | `nil` | Hook to mutate/drop transaction events |
255
+ | `IgnoreErrors` | `[]string` | `nil` | Regex patterns for errors to drop |
256
+ | `IgnoreTransactions` | `[]string` | `nil` | Regex patterns for transactions to drop |
257
+
258
+ ### Environment Variables
259
+
260
+ | Variable | Maps to | Purpose |
261
+ | ---------------------------- | -------------------------- | ---------------------------------- |
262
+ | `SENTRY_DSN` | `Dsn` | Data Source Name |
263
+ | `SENTRY_RELEASE` | `Release` | App version (e.g., `my-app@1.0.0`) |
264
+ | `SENTRY_ENVIRONMENT` | `Environment` | Deployment environment |
265
+ | `HTTP_PROXY` / `HTTPS_PROXY` | `HTTPProxy` / `HTTPSProxy` | Outbound proxy |
266
+
267
+ Options set in `ClientOptions` **override** environment variables.
268
+
269
+ ---
270
+
271
+ ## Verification
272
+
273
+ Test that Sentry is receiving events:
274
+
275
+ ```go
276
+ // In a handler or test — triggers a real error event:
277
+ sentry.CaptureMessage("Sentry Go SDK test")
278
+
279
+ // Or trigger a captured panic (with recovery middleware in place):
280
+ panic("sentry test panic")
281
+ ```
282
+
283
+ Check the Sentry dashboard within a few seconds.
284
+ If nothing appears:
285
+
286
+ 1. Set `Debug: true` in `ClientOptions` — prints SDK internals to stdout
287
+ 2. Verify the DSN is correct and the project exists
288
+ 3. Ensure `sentry.Flush(2 * time.Second)` is called (events are async by default)
289
+
290
+ ---
291
+
292
+ ## Phase 4: Cross-Link
293
+
294
+ After completing Go setup, check for a companion frontend missing Sentry coverage:
295
+
296
+ ```bash
297
+ ls frontend/ web/ client/ ui/ 2>/dev/null
298
+ cat frontend/package.json web/package.json 2>/dev/null | grep -E '"react"|"svelte"|"vue"|"next"'
299
+ ```
300
+
301
+ If a frontend directory exists without Sentry configured, suggest the matching skill:
302
+
303
+ | Frontend detected | Suggest skill |
304
+ | ------------------ | ---------------------------------------------------------------------------------------------------------------------------------- |
305
+ | React / Next.js | [`react`](../react/index.md) |
306
+ | Svelte / SvelteKit | [`svelte`](../svelte/index.md) |
307
+ | Vue | Use `@sentry/vue` — see [docs.sentry.io/platforms/javascript/guides/vue/](https://docs.sentry.io/platforms/javascript/guides/vue/) |
308
+ | Other JS/TS | [`react`](../react/index.md) (covers generic browser JS patterns) |
309
+
310
+ ---
311
+
312
+ ## Troubleshooting
313
+
314
+ | Issue | Solution |
315
+ | ------------------------------------ | --------------------------------------------------------------------------------------------- |
316
+ | Events not appearing | Set `Debug: true`, check DSN, verify `sentry.Flush()` is called |
317
+ | `sentry.Init` returns error | Malformed DSN — check format: `https://<key>@o<org>.ingest.sentry.io/<project>` |
318
+ | Panics not captured | Ensure framework middleware is registered before handlers |
319
+ | `defer sentry.Flush` not running | `os.Exit()` skips `defer` — call `sentry.Flush()` explicitly before `os.Exit()` |
320
+ | Missing stack traces | Set `AttachStacktrace: true` for `CaptureMessage`; works automatically for `CaptureException` |
321
+ | Goroutine events missing context | Clone hub before spawning goroutine: `hub := sentry.CurrentHub().Clone()` |
322
+ | Too many transactions | Lower `TracesSampleRate` or use `TracesSampler` to drop health checks / metrics endpoints |
323
+ | Fiber/FastHTTP not recovering | Use `Repanic: false, WaitForDelivery: true` for fasthttp-based frameworks |
324
+ | `SampleRate: 0.0` sending all events | `0.0` is treated as `1.0`; to drop all, set `Dsn: ""` instead |
@@ -0,0 +1,354 @@
1
+ # Logging — Sentry Go SDK
2
+
3
+ > Minimum SDK: `github.com/getsentry/sentry-go` v0.33.0+\
4
+ > Minimum SDK for zap integration: v0.43.0+
5
+
6
+ ## Configuration
7
+
8
+ Enable Sentry Logs in `sentry.Init`:
9
+
10
+ ```go
11
+ sentry.Init(sentry.ClientOptions{
12
+ Dsn: os.Getenv("SENTRY_DSN"),
13
+ EnableLogs: true, // REQUIRED — logs are off by default
14
+ })
15
+ ```
16
+
17
+ | Option | Type | Default | Purpose |
18
+ | --------------- | ----------------- | ------- | ----------------------------------------- |
19
+ | `EnableLogs` | `bool` | `false` | Enable Sentry Logs feature |
20
+ | `BeforeSendLog` | `func(*Log) *Log` | `nil` | Mutate or drop log entries before sending |
21
+
22
+ > If `EnableLogs` is `false`, `sentry.NewLogger(ctx)` returns a **no-op logger** — all
23
+ > calls are silently discarded.
24
+
25
+ ## Code Examples
26
+
27
+ ### Native Sentry logger
28
+
29
+ ```go
30
+ import (
31
+ "context"
32
+ "time"
33
+ "github.com/getsentry/sentry-go"
34
+ "github.com/getsentry/sentry-go/attribute"
35
+ )
36
+
37
+ func main() {
38
+ sentry.Init(sentry.ClientOptions{
39
+ Dsn: os.Getenv("SENTRY_DSN"),
40
+ EnableLogs: true,
41
+ })
42
+ defer sentry.Flush(2 * time.Second)
43
+
44
+ ctx := context.Background()
45
+ logger := sentry.NewLogger(ctx)
46
+
47
+ // Basic logging
48
+ logger.Info().Emit("server started")
49
+ logger.Warn().Emitf("queue depth: %d", 42)
50
+ logger.Error().Emit("database connection lost")
51
+
52
+ // Per-entry attributes (chained, non-persistent)
53
+ logger.Info().
54
+ String("request.id", "abc-123").
55
+ Int("status.code", 200).
56
+ Bool("cache.hit", true).
57
+ Float64("latency.ms", 12.3).
58
+ Emitf("request completed: %s", r.URL.Path)
59
+
60
+ // Permanent logger-level attributes (all subsequent entries include these)
61
+ logger.SetAttributes(
62
+ attribute.String("service", "payment-api"),
63
+ attribute.String("version", "2.1.0"),
64
+ )
65
+
66
+ // Switch context on a single entry (for trace correlation)
67
+ logger.Info().WithCtx(requestCtx).Emit("handling request")
68
+ }
69
+ ```
70
+
71
+ ### Log levels
72
+
73
+ | Method | OTel Severity | Use for |
74
+ | ----------------- | ------------- | ------------------------------------ |
75
+ | `logger.Trace()` | 1 | Very detailed debugging |
76
+ | `logger.Debug()` | 5 | Development debugging |
77
+ | `logger.Info()` | 9 | Informational events |
78
+ | `logger.Warn()` | 13 | Warnings, recoverable issues |
79
+ | `logger.Error()` | 17 | Errors requiring attention |
80
+ | `logger.Fatal()` | 21 | Fatal — logs then calls `os.Exit(1)` |
81
+ | `logger.Panic()` | 21 | Fatal — logs then panics |
82
+ | `logger.LFatal()` | 21 | Logs at fatal level without exiting |
83
+
84
+ ### BeforeSendLog — filtering logs
85
+
86
+ ```go
87
+ sentry.Init(sentry.ClientOptions{
88
+ Dsn: os.Getenv("SENTRY_DSN"),
89
+ EnableLogs: true,
90
+ BeforeSendLog: func(log *sentry.Log) *sentry.Log {
91
+ // Drop trace and debug logs
92
+ if log.Severity <= sentry.LogSeverityDebug {
93
+ return nil
94
+ }
95
+ // Drop logs from noisy subsystem
96
+ if v, ok := log.Attributes["service"]; ok && v.String() == "health-checker" {
97
+ return nil
98
+ }
99
+ return log
100
+ },
101
+ })
102
+ ```
103
+
104
+ `sentry.Log` struct fields: `Timestamp`, `TraceID`, `SpanID`, `Level`, `Severity` (int),
105
+ `Body`, `Attributes`.
106
+
107
+ ### Auto-attached attributes
108
+
109
+ The SDK automatically appends these to every log entry:
110
+
111
+ | Attribute | Source |
112
+ | ------------------------------------ | --------------------------------------------- |
113
+ | `sentry.release` | `ClientOptions.Release` |
114
+ | `sentry.environment` | `ClientOptions.Environment` |
115
+ | `sentry.server.address` | `ClientOptions.ServerName` or `os.Hostname()` |
116
+ | `sentry.sdk.name` / `.version` | SDK identifier |
117
+ | `sentry.message.template` | Set when `Emitf()` is used |
118
+ | `sentry.message.parameters.0`, `.1`… | Parameters passed to `Emitf()` |
119
+ | `user.id`, `user.name`, `user.email` | Set if user is in scope |
120
+
121
+ ## Logging Integrations
122
+
123
+ ### Logrus
124
+
125
+ ```bash
126
+ go get github.com/getsentry/sentry-go/logrus
127
+ ```
128
+
129
+ Two hook modes — use them independently or together:
130
+
131
+ ```go
132
+ import (
133
+ "github.com/sirupsen/logrus"
134
+ "github.com/getsentry/sentry-go"
135
+ sentrylogrus "github.com/getsentry/sentry-go/logrus"
136
+ )
137
+
138
+ logger := logrus.New()
139
+
140
+ // Log hook: sends logrus entries as Sentry Log entries (requires EnableLogs: true)
141
+ logHook, _ := sentrylogrus.NewLogHook(
142
+ []logrus.Level{logrus.InfoLevel, logrus.WarnLevel},
143
+ sentry.ClientOptions{Dsn: os.Getenv("SENTRY_DSN"), EnableLogs: true},
144
+ )
145
+ defer logHook.Flush(5 * time.Second)
146
+
147
+ // Event hook: sends logrus entries as Sentry Events (issues/errors)
148
+ eventHook, _ := sentrylogrus.NewEventHook(
149
+ []logrus.Level{logrus.ErrorLevel, logrus.FatalLevel, logrus.PanicLevel},
150
+ sentry.ClientOptions{Dsn: os.Getenv("SENTRY_DSN")},
151
+ )
152
+ defer eventHook.Flush(5 * time.Second)
153
+
154
+ logger.AddHook(logHook)
155
+ logger.AddHook(eventHook)
156
+
157
+ // Flush before os.Exit on logger.Fatal()
158
+ logrus.RegisterExitHandler(func() {
159
+ logHook.Flush(5 * time.Second)
160
+ eventHook.Flush(5 * time.Second)
161
+ })
162
+
163
+ logger.Info("service started")
164
+ logger.WithField("user", sentry.User{ID: "u1"}).Error("payment failed")
165
+ ```
166
+
167
+ **Logrus level mapping:**
168
+
169
+ | Logrus level | Sentry level |
170
+ | ------------ | ------------ |
171
+ | Trace, Debug | `debug` |
172
+ | Info | `info` |
173
+ | Warn | `warning` |
174
+ | Error | `error` |
175
+ | Fatal, Panic | `fatal` |
176
+
177
+ **Special field names** (auto-mapped to Sentry metadata):
178
+
179
+ | Field | Type | Maps to |
180
+ | --------------- | --------------- | -------------------- |
181
+ | `"request"` | `*http.Request` | `sentry.Request` |
182
+ | `"user"` | `sentry.User` | scope user |
183
+ | `"transaction"` | `string` | event transaction ID |
184
+ | `"fingerprint"` | `[]string` | event fingerprint |
185
+
186
+ ### slog (Go 1.21+)
187
+
188
+ ```bash
189
+ go get github.com/getsentry/sentry-go/slog
190
+ ```
191
+
192
+ ```go
193
+ import (
194
+ "context"
195
+ "log/slog"
196
+ "github.com/getsentry/sentry-go"
197
+ sentryslog "github.com/getsentry/sentry-go/slog"
198
+ )
199
+
200
+ sentry.Init(sentry.ClientOptions{
201
+ Dsn: os.Getenv("SENTRY_DSN"),
202
+ EnableLogs: true,
203
+ })
204
+ defer sentry.Flush(5 * time.Second)
205
+
206
+ ctx := context.Background()
207
+ handler := sentryslog.Option{
208
+ // These levels are sent as Sentry Events (issues)
209
+ EventLevel: []slog.Level{slog.LevelError, sentryslog.LevelFatal},
210
+ // These levels are sent as Sentry Log entries
211
+ LogLevel: []slog.Level{slog.LevelInfo, slog.LevelWarn, slog.LevelError},
212
+ AddSource: true, // include file:line in events
213
+ }.NewSentryHandler(ctx)
214
+
215
+ logger := slog.New(handler)
216
+ logger.Info("server started", "port", 8080)
217
+ logger.Warn("rate limit approaching", "requests", 950)
218
+ logger.Error("database connection failed", "host", "db.example.com")
219
+ ```
220
+
221
+ **slog level mapping:**
222
+
223
+ | slog.Level range | Sentry method |
224
+ | --------------------- | ------------- |
225
+ | `< -4` | `Trace` |
226
+ | `-4` to `-1` | `Debug` |
227
+ | `0` to `3` | `Info` |
228
+ | `4` to `7` | `Warn` |
229
+ | `8` to `11` | `Error` |
230
+ | `≥ 12` (`LevelFatal`) | `Fatal` |
231
+
232
+ `sentryslog.LevelFatal` is defined as `slog.Level(12)`.
233
+
234
+ ### zerolog
235
+
236
+ ```bash
237
+ go get github.com/getsentry/sentry-go/zerolog
238
+ ```
239
+
240
+ > **Note:** The zerolog integration sends as **Sentry Events** (issues), not Sentry Log
241
+ > entries. It does not support structured logs.
242
+
243
+ ```go
244
+ import (
245
+ "github.com/rs/zerolog"
246
+ "github.com/getsentry/sentry-go"
247
+ sentryzerolog "github.com/getsentry/sentry-go/zerolog"
248
+ )
249
+
250
+ writer, _ := sentryzerolog.New(sentryzerolog.Config{
251
+ ClientOptions: sentry.ClientOptions{Dsn: os.Getenv("SENTRY_DSN")},
252
+ Options: sentryzerolog.Options{
253
+ Levels: []zerolog.Level{zerolog.ErrorLevel, zerolog.FatalLevel},
254
+ WithBreadcrumbs: true, // non-error logs become breadcrumbs
255
+ FlushTimeout: 3 * time.Second,
256
+ },
257
+ })
258
+ defer writer.Close()
259
+
260
+ logger := zerolog.New(writer).With().Timestamp().Logger()
261
+ logger.Info().Msg("breadcrumb only")
262
+ logger.Error().Str("user", "u1").Msg("captured as Sentry event")
263
+ ```
264
+
265
+ **Special field names** (same as logrus, auto-mapped): `"request"` → `*http.Request`,
266
+ `"user"` → `sentry.User`, `"transaction"` → string, `"fingerprint"` → `[]string`
267
+
268
+ ### zap (v0.43.0+)
269
+
270
+ ```bash
271
+ go get github.com/getsentry/sentry-go/zap
272
+ ```
273
+
274
+ ```go
275
+ import (
276
+ "context"
277
+ "github.com/getsentry/sentry-go"
278
+ sentryzap "github.com/getsentry/sentry-go/zap"
279
+ "go.uber.org/zap"
280
+ "go.uber.org/zap/zapcore"
281
+ "os"
282
+ )
283
+
284
+ sentry.Init(sentry.ClientOptions{
285
+ Dsn: os.Getenv("SENTRY_DSN"),
286
+ EnableLogs: true,
287
+ })
288
+ defer sentry.Flush(2 * time.Second)
289
+
290
+ ctx := context.Background()
291
+ sentryCore := sentryzap.NewSentryCore(ctx, sentryzap.Option{
292
+ Level: []zapcore.Level{zapcore.InfoLevel, zapcore.WarnLevel, zapcore.ErrorLevel},
293
+ AddCaller: true,
294
+ })
295
+
296
+ // Tee with console output
297
+ consoleCore := zapcore.NewCore(
298
+ zapcore.NewConsoleEncoder(zap.NewProductionEncoderConfig()),
299
+ zapcore.AddSync(os.Stdout),
300
+ zapcore.DebugLevel,
301
+ )
302
+ logger := zap.New(zapcore.NewTee(consoleCore, sentryCore), zap.AddCaller())
303
+
304
+ // Attach trace context to log entries
305
+ span := sentry.StartSpan(ctx, "my-operation")
306
+ defer span.Finish()
307
+ logger.With(sentryzap.Context(span.Context())).Info("within span",
308
+ zap.String("version", "1.0"),
309
+ zap.Float64("cpu", 0.42),
310
+ )
311
+ ```
312
+
313
+ **zap level mapping:**
314
+
315
+ | zap level | Sentry method |
316
+ | ------------- | -------------------------------------------- |
317
+ | Debug | `Debug` |
318
+ | Info | `Info` |
319
+ | Warn | `Warn` |
320
+ | Error, DPanic | `Error` |
321
+ | Panic, Fatal | `LFatal` (zap handles the actual exit/panic) |
322
+
323
+ ## Integration Comparison
324
+
325
+ | Library | Package | Sends as | `EnableLogs` required |
326
+ | ------------------- | ------------------- | --------------------------- | --------------------- |
327
+ | Native | `sentry-go` | Sentry Logs | ✅ Yes |
328
+ | logrus (log hook) | `sentry-go/logrus` | Sentry Logs | ✅ Yes |
329
+ | logrus (event hook) | `sentry-go/logrus` | Sentry Events | ❌ No |
330
+ | slog | `sentry-go/slog` | Both (configurable) | ✅ For logs |
331
+ | zerolog | `sentry-go/zerolog` | Sentry Events + Breadcrumbs | ❌ No |
332
+ | zap | `sentry-go/zap` | Sentry Logs | ✅ Yes |
333
+
334
+ ## Best Practices
335
+
336
+ - Enable both a log hook and an event hook for logrus — logs for visibility, events for
337
+ alerting
338
+ - For slog, configure `EventLevel` to `[slog.LevelError, LevelFatal]` and `LogLevel` for
339
+ the rest
340
+ - Call `hook.Flush()` (logrus) or `writer.Close()` (zerolog) before program exit
341
+ - Use `WithCtx(requestCtx)` on log entries inside HTTP handlers for trace correlation
342
+ - Set `sentry.LogSeverityInfo` as the minimum in `BeforeSendLog` to avoid sending noisy
343
+ debug logs
344
+
345
+ ## Troubleshooting
346
+
347
+ | Issue | Solution |
348
+ | ----------------------------- | --------------------------------------------------------------------- |
349
+ | Logs not appearing in Sentry | Ensure `EnableLogs: true` in `ClientOptions` |
350
+ | `NewLogger` returns no-op | `EnableLogs` is false or no client is bound to the hub |
351
+ | Logrus `Fatal` not flushing | Register `logrus.RegisterExitHandler` to flush hooks before exit |
352
+ | zerolog entries not appearing | zerolog sends Events, not Logs — check the Issues section, not Logs |
353
+ | Logs missing trace context | Use `logger.Info().WithCtx(spanCtx).Emit(...)` to attach span context |
354
+ | Too many logs in Sentry | Use `BeforeSendLog` to filter by severity or attribute |