@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,233 @@
1
+ # Tracing — Sentry Elixir SDK
2
+
3
+ > Minimum SDK: `sentry` v11.0.0+ (beta); v12.0.0+ for distributed tracing and LiveView
4
+ > spans
5
+
6
+ Tracing in the Elixir SDK is implemented via **OpenTelemetry**. Sentry ships three OTel
7
+ components: a `SpanProcessor`, a `Sampler`, and a `Propagator`. These integrate with the
8
+ OpenTelemetry Elixir ecosystem so you can use any OTel-compatible instrumentation
9
+ library (Phoenix, Ecto, Finch, etc.)
10
+ and have all spans forwarded to Sentry.
11
+
12
+ ## Configuration
13
+
14
+ ### Dependencies
15
+
16
+ ```elixir
17
+ # mix.exs
18
+ defp deps do
19
+ [
20
+ {:sentry, "~> 12.0"},
21
+ {:finch, "~> 0.21"},
22
+ # OpenTelemetry core
23
+ {:opentelemetry, "~> 1.5"},
24
+ {:opentelemetry_api, "~> 1.4"},
25
+ {:opentelemetry_exporter, "~> 1.0"},
26
+ {:opentelemetry_semantic_conventions, "~> 1.27"},
27
+ # Optional: Phoenix and Ecto auto-instrumentation
28
+ {:opentelemetry_phoenix, "~> 2.0"},
29
+ {:opentelemetry_ecto, "~> 1.2"}
30
+ ]
31
+ end
32
+ ```
33
+
34
+ ### Sentry config
35
+
36
+ Any non-nil value for `:traces_sample_rate` enables tracing.
37
+ Start with `1.0` for development, lower for production:
38
+
39
+ ```elixir
40
+ # config/config.exs
41
+ config :sentry,
42
+ dsn: System.get_env("SENTRY_DSN"),
43
+ traces_sample_rate: 1.0 # lower to 0.1 in high-traffic production
44
+ ```
45
+
46
+ ### OpenTelemetry config
47
+
48
+ Wire Sentry’s SpanProcessor and Sampler into the OTel pipeline:
49
+
50
+ ```elixir
51
+ # config/config.exs
52
+ config :opentelemetry,
53
+ span_processor: {Sentry.OpenTelemetry.SpanProcessor, []},
54
+ sampler: {Sentry.OpenTelemetry.Sampler, []}
55
+ ```
56
+
57
+ ### Distributed tracing (since v12.0.0)
58
+
59
+ Enable Sentry’s propagator to inject and extract `sentry-trace` and `baggage` headers:
60
+
61
+ ```elixir
62
+ # config/config.exs
63
+ config :opentelemetry,
64
+ span_processor: {Sentry.OpenTelemetry.SpanProcessor, []},
65
+ sampler: {Sentry.OpenTelemetry.Sampler, []},
66
+ text_map_propagators: [
67
+ :trace_context,
68
+ :baggage,
69
+ Sentry.OpenTelemetry.Propagator
70
+ ]
71
+ ```
72
+
73
+ > **Note:** Add `Sentry.OpenTelemetry.Propagator` **after** the standard
74
+ > `:trace_context` and `:baggage` propagators.
75
+ > It reads and writes the Sentry-specific `sentry-trace` and `baggage` headers so spans
76
+ > from Elixir connect to browser and backend spans from other Sentry SDKs.
77
+
78
+ ## Sampling
79
+
80
+ ### Uniform sample rate
81
+
82
+ ```elixir
83
+ config :sentry,
84
+ traces_sample_rate: 0.1 # 10% of all root spans
85
+ ```
86
+
87
+ ### Custom sampler function
88
+
89
+ Use `:traces_sampler` to apply per-operation logic.
90
+ Overrides `:traces_sample_rate` when set:
91
+
92
+ ```elixir
93
+ config :sentry,
94
+ traces_sampler: fn sampling_context ->
95
+ case sampling_context.transaction_context.op do
96
+ "http.server" -> 0.1 # 10% of HTTP requests
97
+ "db.query" -> 0.01 # 1% of DB queries
98
+ _ -> false # drop everything else
99
+ end
100
+ end
101
+ ```
102
+
103
+ ### Drop specific transaction names
104
+
105
+ Use the built-in `drop` option of `Sentry.OpenTelemetry.Sampler`:
106
+
107
+ ```elixir
108
+ config :opentelemetry,
109
+ sampler: {Sentry.OpenTelemetry.Sampler, [drop: ["health_check", "liveness_check"]]}
110
+ ```
111
+
112
+ ## Phoenix Auto-Instrumentation
113
+
114
+ `opentelemetry_phoenix` automatically creates spans for each Phoenix request.
115
+ Setup in `Application.start/2`:
116
+
117
+ ```elixir
118
+ # lib/my_app/application.ex
119
+ def start(_type, _args) do
120
+ Logger.add_handlers(:my_app)
121
+ OpentelemetryPhoenix.setup() # instruments Phoenix controllers and LiveView (requires opentelemetry_phoenix)
122
+ OpentelemetryEcto.setup([:my_app, :repo]) # instruments Ecto queries (requires opentelemetry_ecto)
123
+
124
+ children = [
125
+ MyApp.Repo,
126
+ MyAppWeb.Endpoint
127
+ ]
128
+
129
+ Supervisor.start_link(children, strategy: :one_for_one)
130
+ end
131
+ ```
132
+
133
+ ## How Spans Map to Sentry
134
+
135
+ | OTel span type | Sentry object |
136
+ | --------------------------------------------------------- | -------------------------------------------- |
137
+ | Root span (no local parent) | `Transaction` |
138
+ | Child span (has local parent) | `Span` within that transaction |
139
+ | Distributed span (remote parent, HTTP server or LiveView) | New `Transaction` root (linked via trace ID) |
140
+
141
+ Root spans are created when:
142
+
143
+ - An HTTP request arrives with no `sentry-trace` parent (or sampling says yes)
144
+ - A LiveView mounts (since v12.0.0)
145
+ - You manually start a root-level OTel span
146
+
147
+ ## Custom Spans
148
+
149
+ Use the standard OpenTelemetry API for custom instrumentation:
150
+
151
+ ```elixir
152
+ require OpenTelemetry.Tracer, as: Tracer
153
+
154
+ def process_order(order_id) do
155
+ Tracer.with_span "process_order", %{attributes: [{"order.id", order_id}]} do
156
+ # All work done inside this block is a child span
157
+ validate_order(order_id)
158
+ charge_payment(order_id)
159
+ send_confirmation(order_id)
160
+ end
161
+ end
162
+
163
+ def validate_order(order_id) do
164
+ Tracer.with_span "validate_order", %{kind: :internal} do
165
+ # Nested child span
166
+ # ...
167
+ end
168
+ end
169
+ ```
170
+
171
+ ### Setting span attributes
172
+
173
+ ```elixir
174
+ Tracer.with_span "db.query" do
175
+ Tracer.set_attributes([
176
+ {"db.system", "postgresql"},
177
+ {"db.statement", "SELECT * FROM orders WHERE id = $1"},
178
+ {"db.rows_affected", 1}
179
+ ])
180
+ # run query
181
+ end
182
+ ```
183
+
184
+ ### Propagating context through async code
185
+
186
+ OTel context must be explicitly propagated when crossing process boundaries:
187
+
188
+ ```elixir
189
+ # Capture current context before spawning
190
+ ctx = OpenTelemetry.Ctx.get_current()
191
+
192
+ Task.start(fn ->
193
+ # Attach parent context in the new process
194
+ OpenTelemetry.Ctx.attach(ctx)
195
+
196
+ Tracer.with_span "async.work" do
197
+ perform_work()
198
+ end
199
+ end)
200
+ ```
201
+
202
+ ## OpenTelemetry Components Reference
203
+
204
+ | Module | OTel behaviour | Purpose |
205
+ | ------------------------------------ | --------------------------- | ------------------------------------------------------------- |
206
+ | `Sentry.OpenTelemetry.SpanProcessor` | `:otel_span_processor` | Converts finished OTel spans into Sentry transactions/spans |
207
+ | `Sentry.OpenTelemetry.Sampler` | `:otel_sampler` | Applies `traces_sample_rate` / `traces_sampler` to root spans |
208
+ | `Sentry.OpenTelemetry.Propagator` | `:otel_propagator_text_map` | Injects/extracts `sentry-trace` and `baggage` headers |
209
+
210
+ ## Best Practices
211
+
212
+ - Set `traces_sample_rate: 1.0` in development and `0.1–0.2` in production; adjust per
213
+ route with `traces_sampler`
214
+ - Use the `drop:` option in `Sentry.OpenTelemetry.Sampler` to exclude health check
215
+ endpoints from tracing
216
+ - Always call `OpentelemetryPhoenix.setup()` and `OpentelemetryEcto.setup/1` in
217
+ `Application.start/2` before the supervision tree starts
218
+ - Propagate OTel context explicitly when spawning tasks or sending messages to other
219
+ processes
220
+ - Add `Sentry.OpenTelemetry.Propagator` for distributed tracing across services —
221
+ without it, backend traces won’t link to browser Sentry events
222
+
223
+ ## Troubleshooting
224
+
225
+ | Issue | Solution |
226
+ | ----------------------------- | --------------------------------------------------------------------------------------------------------------- |
227
+ | No transactions in Sentry | Verify `traces_sample_rate` is set (non-nil); confirm `span_processor` is configured in `:opentelemetry` config |
228
+ | Phoenix spans missing | Call `OpentelemetryPhoenix.setup()` in `Application.start/2` before the supervision tree |
229
+ | Ecto query spans missing | Call `OpentelemetryEcto.setup([:my_app, :repo])` in `Application.start/2` |
230
+ | Distributed trace not linking | Add `Sentry.OpenTelemetry.Propagator` to `text_map_propagators`; requires v12.0.0+ |
231
+ | LiveView spans not appearing | Requires v12.0.0+ and `opentelemetry_phoenix ~> 2.0` |
232
+ | Context lost in async `Task` | Capture `OpenTelemetry.Ctx.get_current()` before spawning; call `OpenTelemetry.Ctx.attach(ctx)` inside the task |
233
+ | Too many DB spans | Use `traces_sampler` to lower sample rate for `"db.query"` operations |
@@ -0,0 +1,70 @@
1
+ # Ecosystem Integrations — Sentry Flutter SDK
2
+
3
+ Add these packages alongside `sentry_flutter` for deeper instrumentation:
4
+
5
+ ### HTTP Clients
6
+
7
+ **Standard `http` package** — built into `sentry_flutter`, no extra install:
8
+
9
+ ```dart
10
+ import 'package:sentry/sentry.dart';
11
+
12
+ // Wrap your http client
13
+ final client = SentryHttpClient(
14
+ captureFailedRequests: true,
15
+ failedRequestStatusCodes: [SentryStatusCode.range(400, 599)],
16
+ );
17
+ try {
18
+ final response = await client.get(Uri.parse('https://api.example.com/users'));
19
+ } finally {
20
+ client.close();
21
+ }
22
+ ```
23
+
24
+ **Dio** — install `sentry_dio`:
25
+
26
+ ```bash
27
+ flutter pub add sentry_dio
28
+ ```
29
+
30
+ ```dart
31
+ import 'package:dio/dio.dart';
32
+ import 'package:sentry_dio/sentry_dio.dart';
33
+
34
+ final dio = Dio();
35
+ // Add your interceptors first, THEN addSentry() last
36
+ dio.addSentry(
37
+ captureFailedRequests: true,
38
+ failedRequestStatusCodes: [SentryStatusCode.range(400, 599)],
39
+ );
40
+ ```
41
+
42
+ ### Databases
43
+
44
+ | Package | Install | Setup |
45
+ | ---------------- | -------------------------------- | ------------------------------------------------------------ |
46
+ | `sentry_sqflite` | `flutter pub add sentry_sqflite` | `databaseFactory = SentrySqfliteDatabaseFactory();` |
47
+ | `sentry_drift` | `flutter pub add sentry_drift` | `.interceptWith(SentryQueryInterceptor(databaseName: 'db'))` |
48
+ | `sentry_hive` | `flutter pub add sentry_hive` | Use `SentryHive` instead of `Hive` |
49
+ | `sentry_isar` | `flutter pub add sentry_isar` | Use `SentryIsar.open()` instead of `Isar.open()` |
50
+
51
+ ### Other
52
+
53
+ | Package | Install | Purpose |
54
+ | ------------------------------- | ----------------------------------------------- | -------------------------------------------------- |
55
+ | `sentry_logging` | `flutter pub add sentry_logging` | Dart `logging` package → Sentry breadcrumbs/events |
56
+ | `sentry_link` | `flutter pub add sentry_link` | GraphQL (gql, graphql_flutter, ferry) tracing |
57
+ | `sentry_supabase` | `flutter pub add sentry_supabase` | Supabase query tracing (SDK ≥9.9.0) |
58
+ | `sentry_firebase_remote_config` | `flutter pub add sentry_firebase_remote_config` | Feature flag tracking |
59
+ | `sentry_file` | `flutter pub add sentry_file` | File I/O tracing via `.sentryTrace()` extension |
60
+
61
+ ### State Management Patterns
62
+
63
+ No official packages — wire Sentry via observer APIs:
64
+
65
+ | Framework | Hook point | Pattern |
66
+ | --------------------------- | ---------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- |
67
+ | **BLoC/Cubit** | `BlocObserver.onError` | `Sentry.captureException(error, stackTrace: stackTrace)` inside `onError`; set `Bloc.observer = SentryBlocObserver()` before init |
68
+ | **Riverpod** | `ProviderObserver.providerDidFail` | Fires for `FutureProvider`/`StreamProvider` failures; wrap app with `ProviderScope(observers: [SentryProviderObserver()])` |
69
+ | **Provider/ChangeNotifier** | `try/catch` in `notifyListeners` callers | Manually call `Sentry.captureException(e, stackTrace: stack)` in catch blocks |
70
+ | **GetX** | `GetMaterialApp.onError` | `GetMaterialApp(onError: (details) => Sentry.captureException(...))` |
@@ -0,0 +1,312 @@
1
+ # Error Monitoring — Flutter SDK Reference
2
+
3
+ > **Minimum SDK version:** `sentry_flutter` ≥ 7.0.0 (all features), ≥ 9.14.0 (tombstone,
4
+ > trace sync) **Platforms:** All (Android, iOS, macOS, Linux, Windows, Web —
5
+ > platform-specific caveats noted)
6
+
7
+ ## What’s Auto-Captured
8
+
9
+ When `SentryFlutter.init()` runs, the SDK installs these handlers automatically:
10
+
11
+ | Handler | Captures | Platforms |
12
+ | ------------------------------------- | ---------------------------------------------------------------- | ----------------------------------- |
13
+ | `FlutterError.onError` | Widget build errors, rendering errors, gesture errors | All |
14
+ | `PlatformDispatcher.instance.onError` | Uncaught Dart async errors (root zone) | All (Flutter ≥ 3.3) |
15
+ | Android SDK (bundled) | Java/Kotlin JVM exceptions, NDK native crashes | Android |
16
+ | iOS/macOS SDK (bundled) | ObjC `NSException`, Swift errors, POSIX signals, Mach exceptions | iOS, macOS |
17
+ | `WidgetsBindingObserver` | App lifecycle breadcrumbs | Linux, Windows, Web (no native SDK) |
18
+
19
+ Silent framework errors (`FlutterErrorDetails.silent == true`) are excluded unless you
20
+ opt in:
21
+
22
+ ```dart
23
+ options.reportSilentFlutterErrors = true;
24
+ ```
25
+
26
+ ---
27
+
28
+ ## Manual Capture APIs
29
+
30
+ ### Capture Exception
31
+
32
+ Always pass `stackTrace` — without it Sentry can’t show the correct call stack:
33
+
34
+ ```dart
35
+ import 'package:sentry/sentry.dart';
36
+
37
+ try {
38
+ await riskyOperation();
39
+ } catch (e, stackTrace) {
40
+ await Sentry.captureException(e, stackTrace: stackTrace);
41
+ }
42
+ ```
43
+
44
+ With a one-off local scope (doesn’t affect subsequent events):
45
+
46
+ ```dart
47
+ await Sentry.captureException(
48
+ e,
49
+ stackTrace: stackTrace,
50
+ withScope: (scope) {
51
+ scope.setTag('feature', 'checkout');
52
+ scope.setTag('step', 'payment');
53
+ scope.level = SentryLevel.fatal;
54
+ scope.setExtra('orderId', orderId);
55
+ },
56
+ );
57
+ ```
58
+
59
+ ### Capture Message
60
+
61
+ ```dart
62
+ await Sentry.captureMessage(
63
+ 'Rate limit threshold exceeded',
64
+ level: SentryLevel.warning,
65
+ );
66
+
67
+ // Available levels:
68
+ // SentryLevel.debug | info | warning | error | fatal
69
+ ```
70
+
71
+ ### Capture User Feedback
72
+
73
+ ```dart
74
+ final eventId = await Sentry.captureException(e, stackTrace: st);
75
+
76
+ await Sentry.captureFeedback(
77
+ SentryFeedback(
78
+ message: 'App froze after uploading the photo.',
79
+ contactEmail: 'user@example.com',
80
+ name: 'Jane Doe',
81
+ associatedEventId: eventId,
82
+ ),
83
+ );
84
+ ```
85
+
86
+ ---
87
+
88
+ ## Scope — Enrich All Events
89
+
90
+ ### Global Scope (persists across events)
91
+
92
+ ```dart
93
+ import 'package:sentry/sentry.dart';
94
+
95
+ // Set user on login
96
+ Sentry.configureScope((scope) => scope.setUser(SentryUser(
97
+ id: 'user-123',
98
+ username: 'jdoe',
99
+ email: 'jane@example.com',
100
+ name: 'Jane Doe',
101
+ data: {'subscription_tier': 'pro'},
102
+ )));
103
+
104
+ // Clear user on logout
105
+ Sentry.configureScope((scope) => scope.setUser(null));
106
+
107
+ // Tags — indexed, searchable (key max 32 chars, value max 200 chars)
108
+ Sentry.configureScope((scope) {
109
+ scope.setTag('app.flavor', 'enterprise');
110
+ scope.setTag('locale', 'pt-BR');
111
+ });
112
+
113
+ // Contexts — non-searchable structured data (visible in Sentry UI)
114
+ Sentry.configureScope((scope) => scope.setContexts('cart', {
115
+ 'items_count': 3,
116
+ 'total_usd': 149.99,
117
+ }));
118
+
119
+ // Attributes (SDK ≥9.9.0) — apply to logs, metrics, and spans too
120
+ Sentry.setAttributes({'user_tier': SentryAttribute.string('premium')});
121
+ Sentry.removeAttribute('user_tier');
122
+ ```
123
+
124
+ ### Scope Sync to Native (Android/iOS)
125
+
126
+ When `options.enableScopeSync = true` (default), these methods sync to the native SDK
127
+ layer so native crash reports include your Dart context:
128
+
129
+ - `scope.setUser()` / `scope.setContexts()` / `scope.setTag()` / `scope.setExtra()`
130
+ - `scope.addBreadcrumb()` / `scope.clearBreadcrumbs()`
131
+
132
+ ---
133
+
134
+ ## Breadcrumbs
135
+
136
+ Manual breadcrumbs build an audit trail leading to each error:
137
+
138
+ ```dart
139
+ Sentry.addBreadcrumb(Breadcrumb(
140
+ message: 'User tapped checkout button',
141
+ category: 'ui.action',
142
+ type: 'user',
143
+ level: SentryLevel.info,
144
+ data: {'screen': 'CartScreen', 'cart_total': 149.99},
145
+ ));
146
+ ```
147
+
148
+ Filter or modify breadcrumbs before storage:
149
+
150
+ ```dart
151
+ options.beforeBreadcrumb = (breadcrumb, hint) {
152
+ // Drop noisy analytics calls
153
+ if (breadcrumb.data?['url']?.contains('analytics') == true) {
154
+ return null; // null = drop
155
+ }
156
+ // Strip auth headers from HTTP breadcrumbs
157
+ if (breadcrumb.type == 'http') {
158
+ final data = Map<String, dynamic>.from(breadcrumb.data ?? {})
159
+ ..remove('Authorization');
160
+ return breadcrumb.copyWith(data: data);
161
+ }
162
+ return breadcrumb;
163
+ };
164
+ ```
165
+
166
+ Increase capacity if needed (default: 100):
167
+
168
+ ```dart
169
+ options.maxBreadcrumbs = 150;
170
+ ```
171
+
172
+ ---
173
+
174
+ ## Event Filtering
175
+
176
+ Drop or modify events before they’re sent:
177
+
178
+ ```dart
179
+ options.beforeSend = (event, hint) async {
180
+ // Drop database connection errors (too noisy)
181
+ if (event.throwable is DatabaseConnectionException) return null;
182
+
183
+ // Group similar payment failures
184
+ if (event.throwable is PaymentException) {
185
+ event.fingerprint = ['payment-failure'];
186
+ }
187
+
188
+ // Strip server name for privacy
189
+ event.serverName = '';
190
+ return event;
191
+ };
192
+ ```
193
+
194
+ > ⚠️ `beforeSend` intercepts **Dart-layer events only**. Native crashes from Android NDK
195
+ > or iOS bypass it.
196
+
197
+ Error sampling (drop a fraction of errors — not recommended unless volume is very high):
198
+
199
+ ```dart
200
+ options.sampleRate = 0.5; // send only 50% of errors
201
+ ```
202
+
203
+ ---
204
+
205
+ ## Isolate Error Capture
206
+
207
+ Errors in non-root Dart isolates aren’t automatically captured.
208
+ Forward them explicitly:
209
+
210
+ ```dart
211
+ import 'dart:isolate';
212
+ import 'package:sentry/sentry.dart';
213
+
214
+ final isolate = await Isolate.spawn(myIsolateEntry, someData);
215
+ isolate.addSentryErrorListener(); // forwards uncaught errors to Sentry
216
+ ```
217
+
218
+ > ⚠️ Isolate errors are NOT captured on Web (no Isolate API in browser).
219
+
220
+ ---
221
+
222
+ ## Attachments
223
+
224
+ Automatically attach screenshots and widget hierarchy to error events:
225
+
226
+ ```dart
227
+ options.attachScreenshot = true; // screenshot at time of error
228
+ options.screenshotQuality = ScreenshotQuality.high; // full/high/medium/low
229
+ options.attachViewHierarchy = true; // JSON widget tree snapshot
230
+ ```
231
+
232
+ Requires `SentryWidget(child: MyApp())` as the app root.
233
+ Not available on Web.
234
+
235
+ Attach files manually via scope:
236
+
237
+ ```dart
238
+ import 'package:sentry/sentry_io.dart';
239
+
240
+ final attachment = IoSentryAttachment.fromPath('/path/to/debug.log');
241
+ Sentry.configureScope((scope) => scope.addAttachment(attachment));
242
+ ```
243
+
244
+ ---
245
+
246
+ ## Android Native Crash Options
247
+
248
+ ```dart
249
+ // Android 12+ tombstone crash info via ApplicationExitInfo (SDK ≥9.14.0, opt-in)
250
+ options.enableTombstone = true;
251
+
252
+ // Sync Java/Kotlin scope to NDK
253
+ options.enableNdkScopeSync = true; // default: true
254
+
255
+ // Attach all threads to crash report
256
+ options.attachThreads = true; // default: false
257
+
258
+ // ANR detection
259
+ options.anrEnabled = true; // default: true
260
+ options.anrTimeoutInterval = 5000; // ms; increase if too many false positives
261
+ ```
262
+
263
+ ---
264
+
265
+ ## iOS/macOS Native Crash Options
266
+
267
+ ```dart
268
+ // Watchdog termination (OOM kill) tracking
269
+ options.enableWatchdogTerminationTracking = true; // default: true
270
+
271
+ // Native HTTP failures independent of Dart client (SDK ≥9.11.0)
272
+ options.captureNativeFailedRequests = true;
273
+ ```
274
+
275
+ ---
276
+
277
+ ## Release Health
278
+
279
+ Session tracking is on by default — gives you crash-free user and session metrics in the
280
+ Sentry dashboard:
281
+
282
+ ```dart
283
+ // Disable if not needed
284
+ options.enableAutoSessionTracking = false;
285
+
286
+ // Tune session expiry (how long in background before a new session starts)
287
+ options.autoSessionTrackingInterval = const Duration(seconds: 60); // default: 30s
288
+ ```
289
+
290
+ Release is auto-set on iOS/Android as `"packageName@versionName+versionCode"`. Override
291
+ if needed:
292
+
293
+ ```dart
294
+ options.release = 'my-app@2.1.0+105';
295
+ ```
296
+
297
+ ---
298
+
299
+ ## Troubleshooting
300
+
301
+ | Issue | Solution |
302
+ | ------------------------------------------ | ------------------------------------------------------------------------------------------------------ |
303
+ | Events not appearing in Sentry | Set `options.debug = true`, check Flutter console for SDK errors; verify DSN |
304
+ | Stack traces unreadable | Build with `--obfuscate --split-debug-info` and upload with `sentry_dart_plugin` |
305
+ | Native crashes not captured | Confirm `enableNativeCrashHandling: true`; test in release mode (not debug) |
306
+ | `beforeSend` not firing for native crashes | Expected — `beforeSend` only intercepts Dart-layer events |
307
+ | Silent Flutter errors missed | Set `options.reportSilentFlutterErrors = true` |
308
+ | Isolate errors not captured | Call `isolate.addSentryErrorListener()` on each spawned isolate |
309
+ | Attachments missing from events | Confirm `SentryWidget(child: MyApp())` is the root widget |
310
+ | ANR false positives on slow devices | Increase `anrTimeoutInterval` above 5000ms |
311
+ | Events missing user/tag context | Set context before error occurs via `Sentry.configureScope()`; native crashes read scope at crash time |
312
+ | Too many events in dashboard | Lower `sampleRate` (last resort) or use `beforeSend` to drop low-value errors |