@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,728 @@
1
+ # Sentry Flutter SDK
2
+
3
+ Opinionated wizard that scans your Flutter or Dart project and guides you through
4
+ complete Sentry setup — error monitoring, tracing, session replay, logging, profiling,
5
+ and ecosystem integrations.
6
+
7
+ > **Note:** SDK versions and APIs below reflect `sentry_flutter` ≥9.14.0 (current
8
+ > stable, February 2026). Always verify against
9
+ > [docs.sentry.io/platforms/flutter/](https://docs.sentry.io/platforms/flutter/) before
10
+ > implementing.
11
+
12
+ ---
13
+
14
+ ## Phase 1: Detect
15
+
16
+ Run these commands to understand the project before making any recommendations:
17
+
18
+ ```bash
19
+ # Detect Flutter project type and existing Sentry
20
+ cat pubspec.yaml | grep -E '(sentry|flutter|dart)'
21
+
22
+ # Check SDK version
23
+ cat pubspec.yaml | grep -A2 'environment:'
24
+
25
+ # Check for existing Sentry initialization
26
+ grep -r "SentryFlutter.init\|Sentry.init" lib/ 2>/dev/null | head -5
27
+
28
+ # Detect navigation library
29
+ grep -E '(go_router|auto_route|get:|beamer|routemaster)' pubspec.yaml
30
+
31
+ # Detect HTTP client
32
+ grep -E '(dio:|http:|chopper:)' pubspec.yaml
33
+
34
+ # Detect database packages
35
+ grep -E '(sqflite|drift|hive|isar|floor)' pubspec.yaml
36
+
37
+ # Detect state management (for integration patterns)
38
+ grep -E '(flutter_bloc|riverpod|provider:|get:)' pubspec.yaml
39
+
40
+ # Detect GraphQL
41
+ grep -E '(graphql|ferry|gql)' pubspec.yaml
42
+
43
+ # Detect Firebase
44
+ grep -E '(firebase_core|supabase)' pubspec.yaml
45
+
46
+ # Detect backend for cross-link
47
+ ls ../backend/ ../server/ ../api/ 2>/dev/null
48
+ find .. -maxdepth 3 \( -name "go.mod" -o -name "requirements.txt" -o -name "Gemfile" -o -name "*.csproj" \) 2>/dev/null | grep -v flutter | head -10
49
+
50
+ # Detect platform targets
51
+ ls android/ ios/ macos/ linux/ windows/ web/ 2>/dev/null
52
+ ```
53
+
54
+ **What to determine:**
55
+
56
+ | Question | Impact |
57
+ | ------------------------------------------- | ------------------------------------------------------- |
58
+ | `sentry_flutter` already in `pubspec.yaml`? | Skip install, jump to feature config |
59
+ | Dart SDK `>=3.5`? | Required for `sentry_flutter` ≥9.0.0 |
60
+ | `go_router` or `auto_route` present? | Use `SentryNavigatorObserver` — specific patterns apply |
61
+ | `dio` present? | Recommend `sentry_dio` integration |
62
+ | `sqflite`, `drift`, `hive`, `isar` present? | Recommend matching `sentry_*` DB package |
63
+ | Has `android/` and `ios/` directories? | Full mobile feature set available |
64
+ | Has `web/` directory only? | Session Replay and Profiling unavailable |
65
+ | Has `macos/` directory? | Profiling available (alpha) |
66
+ | Backend directory detected? | Trigger Phase 4 cross-link |
67
+
68
+ ---
69
+
70
+ ## Phase 2: Recommend
71
+
72
+ Present a concrete recommendation based on what you found.
73
+ Don’t ask open-ended questions — lead with a proposal:
74
+
75
+ **Recommended (core coverage — always set up these):**
76
+
77
+ - ✅ **Error Monitoring** — captures Dart exceptions, Flutter framework errors, and
78
+ native crashes (iOS + Android)
79
+ - ✅ **Tracing** — auto-instruments navigation, app start, network requests, and UI
80
+ interactions
81
+ - ✅ **Session Replay** — captures widget tree screenshots for debugging (iOS + Android
82
+ only)
83
+
84
+ **Optional (enhanced observability):**
85
+
86
+ - ⚡ **Profiling** — CPU profiling; iOS and macOS only (alpha)
87
+ - ⚡ **Logging** — structured logs via `Sentry.logger.*` and `sentry_logging` integration
88
+ - ⚡ **Metrics** — counters, gauges, distributions (SDK ≥9.11.0)
89
+
90
+ **Platform limitations — be upfront:**
91
+
92
+ | Feature | Platforms | Notes |
93
+ | ------------------ | ------------------- | ------------------------------------------------------------ |
94
+ | Session Replay | iOS, Android | Not available on macOS, Linux, Windows, Web |
95
+ | Profiling | iOS, macOS | Alpha status; not available on Android, Linux, Windows, Web |
96
+ | Native crashes | iOS, Android, macOS | NDK/signal handling; Linux/Windows/Web: Dart exceptions only |
97
+ | App Start metrics | iOS, Android | Not available on desktop/web |
98
+ | Slow/frozen frames | iOS, Android, macOS | Not available on Linux, Windows, Web |
99
+ | Crons | N/A | **Not available** in the Flutter/Dart SDK |
100
+
101
+ Propose: _“For your Flutter app targeting iOS/Android, I recommend Error Monitoring +
102
+ Tracing + Session Replay.
103
+ Want me to also add Logging and Profiling (iOS/macOS alpha)?”_
104
+
105
+ ---
106
+
107
+ ## Phase 3: Guide
108
+
109
+ ### Determine Your Setup Path
110
+
111
+ | Project type | Recommended setup |
112
+ | ----------------------- | ------------------------------------------------- |
113
+ | Any Flutter app | Wizard CLI (handles pubspec, init, symbol upload) |
114
+ | Manual preferred | Path B below — `pubspec.yaml` + `main.dart` |
115
+ | Dart-only (CLI, server) | Path C below — pure `sentry` package |
116
+
117
+ ---
118
+
119
+ ### Path A: Wizard CLI (Recommended)
120
+
121
+ > **You need to run this yourself** — the wizard opens a browser for login and requires
122
+ > interactive input that the agent can’t handle.
123
+ > Copy-paste into your terminal:
124
+ >
125
+ > ```bash
126
+ > brew install getsentry/tools/sentry-wizard && sentry-wizard -i flutter
127
+ > ```
128
+ >
129
+ > It handles org/project selection, adds `sentry_flutter` to `pubspec.yaml`, updates
130
+ > `main.dart`, configures `sentry_dart_plugin` for debug symbol upload, and adds build
131
+ > scripts. Here’s what it creates/modifies:
132
+
133
+ | File | Action | Purpose |
134
+ | -------------------------- | ----------------------------------------------------------- | --------------------------- |
135
+ | `pubspec.yaml` | Adds `sentry_flutter` dependency and `sentry:` config block | SDK + symbol upload config |
136
+ | `lib/main.dart` | Wraps `main()` with `SentryFlutter.init()` | SDK initialization |
137
+ | `android/app/build.gradle` | Adds Proguard config reference | Android obfuscation support |
138
+ | `.sentryclirc` | Auth token and org/project config | Symbol upload credentials |
139
+
140
+ > **Once it finishes, come back and skip to [Verification](#verification).**
141
+
142
+ If the user skips the wizard, proceed with Path B (Manual Setup) below.
143
+
144
+ ---
145
+
146
+ ### Path B: Manual — Flutter App
147
+
148
+ **Step 1 — Install**
149
+
150
+ ```bash
151
+ flutter pub add sentry_flutter
152
+ ```
153
+
154
+ Or add to `pubspec.yaml` manually:
155
+
156
+ ```yaml
157
+ dependencies:
158
+ flutter:
159
+ sdk: flutter
160
+ sentry_flutter: ^9.14.0
161
+ ```
162
+
163
+ Then run:
164
+
165
+ ```bash
166
+ flutter pub get
167
+ ```
168
+
169
+ **Step 2 — Initialize Sentry in `lib/main.dart`**
170
+
171
+ ```dart
172
+ import 'package:flutter/widgets.dart';
173
+ import 'package:sentry_flutter/sentry_flutter.dart';
174
+
175
+ Future<void> main() async {
176
+ await SentryFlutter.init(
177
+ (options) {
178
+ options.dsn = 'YOUR_SENTRY_DSN';
179
+ options.sendDefaultPii = true;
180
+
181
+ // Tracing
182
+ options.tracesSampleRate = 1.0; // lower to 0.1–0.2 in production
183
+
184
+ // Profiling (iOS and macOS only — alpha)
185
+ options.profilesSampleRate = 1.0;
186
+
187
+ // Session Replay (iOS and Android only)
188
+ options.replay.sessionSampleRate = 0.1;
189
+ options.replay.onErrorSampleRate = 1.0;
190
+
191
+ // Structured Logging (SDK ≥9.5.0)
192
+ options.enableLogs = true;
193
+
194
+ options.environment = const bool.fromEnvironment('dart.vm.product')
195
+ ? 'production'
196
+ : 'development';
197
+ },
198
+ // REQUIRED: wrap root widget to enable screenshots, replay, user interaction tracing
199
+ appRunner: () => runApp(SentryWidget(child: MyApp())),
200
+ );
201
+ }
202
+ ```
203
+
204
+ **Step 3 — Add Navigation Observer**
205
+
206
+ Add `SentryNavigatorObserver` to your `MaterialApp` or `CupertinoApp`:
207
+
208
+ ```dart
209
+ import 'package:flutter/material.dart';
210
+ import 'package:sentry_flutter/sentry_flutter.dart';
211
+
212
+ class MyApp extends StatelessWidget {
213
+ @override
214
+ Widget build(BuildContext context) {
215
+ return MaterialApp(
216
+ navigatorObservers: [
217
+ SentryNavigatorObserver(),
218
+ ],
219
+ // Always name your routes for Sentry to track them
220
+ routes: {
221
+ '/': (context) => HomeScreen(),
222
+ '/profile': (context) => ProfileScreen(),
223
+ },
224
+ );
225
+ }
226
+ }
227
+ ```
228
+
229
+ For **GoRouter**:
230
+
231
+ ```dart
232
+ import 'package:go_router/go_router.dart';
233
+ import 'package:sentry_flutter/sentry_flutter.dart';
234
+
235
+ final GoRouter router = GoRouter(
236
+ observers: [SentryNavigatorObserver()],
237
+ routes: [
238
+ GoRoute(
239
+ path: '/',
240
+ name: 'home', // name is REQUIRED for Sentry route tracking
241
+ builder: (context, state) => const HomeScreen(),
242
+ routes: [
243
+ GoRoute(
244
+ path: 'profile/:id',
245
+ name: 'profile', // name is REQUIRED
246
+ builder: (context, state) => ProfileScreen(
247
+ id: state.pathParameters['id']!,
248
+ ),
249
+ ),
250
+ ],
251
+ ),
252
+ ],
253
+ );
254
+ ```
255
+
256
+ **Step 4 — Configure Debug Symbol Upload**
257
+
258
+ Readable stack traces in Sentry require uploading debug symbols when building with
259
+ `--obfuscate`.
260
+
261
+ Add to `pubspec.yaml`:
262
+
263
+ ```yaml
264
+ dev_dependencies:
265
+ sentry_dart_plugin: ^3.2.1
266
+
267
+ sentry:
268
+ project: YOUR_PROJECT_SLUG
269
+ org: YOUR_ORG_SLUG
270
+ auth_token: YOUR_AUTH_TOKEN # prefer SENTRY_AUTH_TOKEN env var instead
271
+ upload_debug_symbols: true
272
+ upload_sources: true
273
+ upload_source_maps: true # for Web
274
+ ```
275
+
276
+ Build and upload:
277
+
278
+ ```bash
279
+ # Android
280
+ flutter build apk \
281
+ --release \
282
+ --obfuscate \
283
+ --split-debug-info=build/debug-info \
284
+ --extra-gen-snapshot-options=--save-obfuscation-map=build/app/obfuscation.map.json
285
+ dart run sentry_dart_plugin
286
+
287
+ # iOS
288
+ flutter build ipa \
289
+ --release \
290
+ --obfuscate \
291
+ --split-debug-info=build/debug-info \
292
+ --extra-gen-snapshot-options=--save-obfuscation-map=build/app/obfuscation.map.json
293
+ dart run sentry_dart_plugin
294
+
295
+ # Web
296
+ flutter build web --release --source-maps
297
+ dart run sentry_dart_plugin
298
+ ```
299
+
300
+ ---
301
+
302
+ ### Path C: Manual — Dart-Only (CLI / Server)
303
+
304
+ ```yaml
305
+ # pubspec.yaml
306
+ dependencies:
307
+ sentry: ^9.14.0
308
+ ```
309
+
310
+ ```dart
311
+ import 'package:sentry/sentry.dart';
312
+
313
+ Future<void> main() async {
314
+ await Sentry.init(
315
+ (options) {
316
+ options.dsn = 'YOUR_SENTRY_DSN';
317
+ options.tracesSampleRate = 1.0;
318
+ options.enableLogs = true;
319
+ },
320
+ appRunner: myApp,
321
+ );
322
+ }
323
+ ```
324
+
325
+ ---
326
+
327
+ ### Quick Reference: Full-Featured `SentryFlutter.init()`
328
+
329
+ ```dart
330
+ import 'package:sentry_flutter/sentry_flutter.dart';
331
+
332
+ Future<void> main() async {
333
+ await SentryFlutter.init(
334
+ (options) {
335
+ options.dsn = 'YOUR_SENTRY_DSN';
336
+ options.sendDefaultPii = true;
337
+
338
+ // Environment — detect release builds via dart.vm.product
339
+ options.environment = const bool.fromEnvironment('dart.vm.product')
340
+ ? 'production'
341
+ : 'development';
342
+
343
+ // Release is auto-set on iOS/Android as "packageName@version+build"
344
+ // Override if needed:
345
+ // options.release = 'my-app@1.0.0+42';
346
+
347
+ // Error sampling — reduce to drop a fraction of errors in high-volume production
348
+ options.sampleRate = 1.0;
349
+
350
+ // Tracing — lower to 0.1–0.2 in high-traffic production
351
+ options.tracesSampleRate = 1.0;
352
+
353
+ // Profiling — iOS and macOS only (alpha); relative to tracesSampleRate
354
+ options.profilesSampleRate = 1.0;
355
+
356
+ // Session Replay — iOS and Android only (SDK ≥9.0.0)
357
+ options.replay.sessionSampleRate = 0.1; // record 10% of all sessions
358
+ options.replay.onErrorSampleRate = 1.0; // always record error sessions
359
+
360
+ // Privacy defaults — all text and images masked
361
+ options.privacy.maskAllText = true;
362
+ options.privacy.maskAllImages = true;
363
+
364
+ // Structured logging (SDK ≥9.5.0)
365
+ options.enableLogs = true;
366
+
367
+ // Attachments
368
+ options.attachScreenshot = true; // screenshot on error
369
+ options.attachViewHierarchy = true; // widget tree on error
370
+
371
+ // HTTP client
372
+ options.captureFailedRequests = true; // auto-capture HTTP errors
373
+ options.maxRequestBodySize = MaxRequestBodySize.small;
374
+
375
+ // Android specifics
376
+ options.anrEnabled = true; // ANR detection
377
+ options.enableNdkScopeSync = true; // sync scope to native
378
+ options.enableTombstone = false; // Android 12+ tombstone (opt-in)
379
+
380
+ // Navigation (Time to Full Display — opt-in)
381
+ options.enableTimeToFullDisplayTracing = true;
382
+ },
383
+ appRunner: () => runApp(SentryWidget(child: MyApp())),
384
+ );
385
+ }
386
+ ```
387
+
388
+ ---
389
+
390
+ ### Navigation: Time to Full Display (TTFD)
391
+
392
+ TTID (Time to Initial Display) is always enabled.
393
+ TTFD is opt-in:
394
+
395
+ ```dart
396
+ // Enable in options:
397
+ options.enableTimeToFullDisplayTracing = true;
398
+ ```
399
+
400
+ Then report when your screen has loaded its data:
401
+
402
+ ```dart
403
+ // Option 1: Widget wrapper (marks TTFD when child first renders)
404
+ SentryDisplayWidget(child: MyWidget())
405
+
406
+ // Option 2: Manual API call (after async data loads)
407
+ await _loadData();
408
+ SentryFlutter.currentDisplay()?.reportFullyDisplayed();
409
+ ```
410
+
411
+ ---
412
+
413
+ ### For Each Agreed Feature
414
+
415
+ Walk through features one at a time.
416
+ Load the reference file for each, follow its steps, then verify before moving on:
417
+
418
+ | Feature | Reference | Load when … |
419
+ | ---------------------- | ----------------------------- | -------------------------------------------------- |
420
+ | Error Monitoring | `./error-monitoring.md` | Always (baseline) |
421
+ | Tracing & Performance | `./tracing.md` | Always — navigation, HTTP, DB spans |
422
+ | Session Replay | `./session-replay.md` | iOS/Android user-facing apps |
423
+ | Profiling | `./profiling.md` | iOS/macOS performance-sensitive apps |
424
+ | Logging | `./logging.md` | Structured logging / log-trace correlation |
425
+ | Metrics | `./metrics.md` | Custom business metrics |
426
+ | Ecosystem Integrations | `./ecosystem-integrations.md` | HTTP clients, databases, GraphQL, state management |
427
+
428
+ For each feature: `Read ./<feature>.md`, follow steps exactly, verify it works.
429
+
430
+ ---
431
+
432
+ ## Configuration Reference
433
+
434
+ ### Core `SentryFlutter.init()` Options
435
+
436
+ | Option | Type | Default | Purpose |
437
+ | --------------------------- | ---------- | ------------------- | ---------------------------------------------------------------- |
438
+ | `dsn` | `string` | — | **Required.** Project DSN. Env: `SENTRY_DSN` via `--dart-define` |
439
+ | `environment` | `string` | — | e.g., `"production"`, `"staging"`. Env: `SENTRY_ENVIRONMENT` |
440
+ | `release` | `string` | Auto on iOS/Android | `"packageName@version+build"`. Env: `SENTRY_RELEASE` |
441
+ | `dist` | `string` | — | Distribution identifier; max 64 chars. Env: `SENTRY_DIST` |
442
+ | `sendDefaultPii` | `bool` | `false` | Include PII: IP address, user labels, widget text in replay |
443
+ | `sampleRate` | `double` | `1.0` | Error event sampling (0.0–1.0) |
444
+ | `maxBreadcrumbs` | `int` | `100` | Max breadcrumbs per event |
445
+ | `attachStacktrace` | `bool` | `true` | Auto-attach stack traces to messages |
446
+ | `attachScreenshot` | `bool` | `false` | Capture screenshot on error (mobile/desktop only) |
447
+ | `screenshotQuality` | enum | `high` | Screenshot quality: `full`, `high`, `medium`, `low` |
448
+ | `attachViewHierarchy` | `bool` | `false` | Attach JSON widget tree as attachment on error |
449
+ | `debug` | `bool` | `true` in debug | Verbose SDK output. **Never force `true` in production** |
450
+ | `diagnosticLevel` | enum | `warning` | Log verbosity: `debug`, `info`, `warning`, `error`, `fatal` |
451
+ | `enabled` | `bool` | `true` | Disable SDK entirely (e.g., for testing) |
452
+ | `maxCacheItems` | `int` | `30` | Max offline-cached envelopes (not supported on Web) |
453
+ | `sendClientReports` | `bool` | `true` | Send SDK health reports (dropped events, etc.) |
454
+ | `reportPackages` | `bool` | `true` | Report `pubspec.yaml` dependency list |
455
+ | `reportSilentFlutterErrors` | `bool` | `false` | Capture `FlutterErrorDetails.silent` errors |
456
+ | `idleTimeout` | `Duration` | `3000ms` | Auto-finish idle user interaction transactions |
457
+
458
+ ### Tracing Options
459
+
460
+ | Option | Type | Default | Purpose |
461
+ | ---------------------------------- | ---------- | ------- | ------------------------------------------------------ |
462
+ | `tracesSampleRate` | `double` | — | Transaction sample rate (0–1). Enable by setting >0 |
463
+ | `tracesSampler` | `function` | — | Per-transaction sampling; overrides `tracesSampleRate` |
464
+ | `tracePropagationTargets` | `List` | — | URLs to attach `sentry-trace` + `baggage` headers |
465
+ | `propagateTraceparent` | `bool` | `false` | Also send W3C `traceparent` header (SDK ≥9.7.0) |
466
+ | `enableTimeToFullDisplayTracing` | `bool` | `false` | Opt-in TTFD tracking per screen |
467
+ | `enableAutoPerformanceTracing` | `bool` | `true` | Auto-enable performance monitoring |
468
+ | `enableUserInteractionTracing` | `bool` | `true` | Create transactions for tap/click/long-press events |
469
+ | `enableUserInteractionBreadcrumbs` | `bool` | `true` | Breadcrumbs for every tracked user interaction |
470
+
471
+ ### Profiling Options
472
+
473
+ | Option | Type | Default | Purpose |
474
+ | -------------------- | -------- | ------- | ----------------------------------------------------------------- |
475
+ | `profilesSampleRate` | `double` | — | Profiling rate relative to `tracesSampleRate`. **iOS/macOS only** |
476
+
477
+ ### Native / Mobile Options
478
+
479
+ | Option | Type | Default | Purpose |
480
+ | ----------------------------------- | -------- | ------- | --------------------------------------------------------------------------- |
481
+ | `autoInitializeNativeSdk` | `bool` | `true` | Auto-initialize native Android/iOS SDK layer |
482
+ | `enableNativeCrashHandling` | `bool` | `true` | Capture native crashes (NDK, signal, Mach exception) |
483
+ | `enableNdkScopeSync` | `bool` | `true` | Sync Dart scope to Android NDK |
484
+ | `enableScopeSync` | `bool` | `true` | Sync scope data to native SDKs |
485
+ | `anrEnabled` | `bool` | `true` | ANR detection (Android) |
486
+ | `anrTimeoutInterval` | `int` | `5000` | ANR timeout in milliseconds (Android) |
487
+ | `enableWatchdogTerminationTracking` | `bool` | `true` | OOM kill tracking (iOS) |
488
+ | `enableTombstone` | `bool` | `false` | Android 12+ native crash info via `ApplicationExitInfo` |
489
+ | `attachThreads` | `bool` | `false` | Attach all threads on crash (Android) |
490
+ | `captureNativeFailedRequests` | `bool` | — | Native HTTP error capture, independent of Dart client (iOS/macOS, v9.11.0+) |
491
+ | `enableAutoNativeAppStart` | `bool` | `true` | App start timing instrumentation (iOS/Android) |
492
+ | `enableFramesTracking` | `bool` | `true` | Slow/frozen frame monitoring (iOS/Android/macOS) |
493
+ | `proguardUuid` | `string` | — | Proguard UUID for Android obfuscation mapping |
494
+
495
+ ### Session & Release Health Options
496
+
497
+ | Option | Type | Default | Purpose |
498
+ | ----------------------------- | ---------- | ------- | ---------------------------------------------------- |
499
+ | `enableAutoSessionTracking` | `bool` | `true` | Session tracking for crash-free user/session metrics |
500
+ | `autoSessionTrackingInterval` | `Duration` | `30s` | Background inactivity before session ends |
501
+
502
+ ### Replay Options (`options.replay`)
503
+
504
+ | Option | Type | Default | Purpose |
505
+ | -------------------------- | -------- | ------- | ----------------------------------- |
506
+ | `replay.sessionSampleRate` | `double` | `0.0` | Fraction of all sessions recorded |
507
+ | `replay.onErrorSampleRate` | `double` | `0.0` | Fraction of error sessions recorded |
508
+
509
+ ### Replay Privacy Options (`options.privacy`)
510
+
511
+ | Option / Method | Default | Purpose |
512
+ | --------------------------- | ------- | ---------------------------------------------- |
513
+ | `privacy.maskAllText` | `true` | Mask all text widget content |
514
+ | `privacy.maskAllImages` | `true` | Mask all image widgets |
515
+ | `privacy.maskAssetImages` | `true` | Mask images from root asset bundle |
516
+ | `privacy.mask<T>()` | — | Mask a specific widget type and all subclasses |
517
+ | `privacy.unmask<T>()` | — | Unmask a specific widget type |
518
+ | `privacy.maskCallback<T>()` | — | Custom masking decision per widget instance |
519
+
520
+ ### HTTP Options
521
+
522
+ | Option | Type | Default | Purpose |
523
+ | -------------------------- | ------ | ---------------- | -------------------------------------------------- |
524
+ | `captureFailedRequests` | `bool` | `true` (Flutter) | Auto-capture HTTP errors |
525
+ | `maxRequestBodySize` | enum | `never` | Body capture: `never`, `small`, `medium`, `always` |
526
+ | `failedRequestStatusCodes` | `List` | `[500–599]` | Status codes treated as failures |
527
+ | `failedRequestTargets` | `List` | `['.*']` | URL patterns to monitor |
528
+
529
+ ### Hook Options
530
+
531
+ | Option | Type | Purpose |
532
+ | ----------------------- | ------------------------------------ | -------------------------------------------------- |
533
+ | `beforeSend` | `(SentryEvent, Hint) → SentryEvent?` | Modify or drop error events. Return `null` to drop |
534
+ | `beforeSendTransaction` | `(SentryEvent) → SentryEvent?` | Modify or drop transaction events |
535
+ | `beforeBreadcrumb` | `(Breadcrumb, Hint) → Breadcrumb?` | Process breadcrumbs before storage |
536
+ | `beforeSendLog` | `(SentryLog) → SentryLog?` | Filter structured logs before sending |
537
+
538
+ ### Environment Variables
539
+
540
+ Pass via `--dart-define` at build time:
541
+
542
+ | Variable | Purpose | Notes |
543
+ | -------------------- | ---------------------- | ---------------------------------------- |
544
+ | `SENTRY_DSN` | Data Source Name | Falls back from `options.dsn` |
545
+ | `SENTRY_ENVIRONMENT` | Deployment environment | Falls back from `options.environment` |
546
+ | `SENTRY_RELEASE` | Release identifier | Falls back from `options.release` |
547
+ | `SENTRY_DIST` | Build distribution | Falls back from `options.dist` |
548
+ | `SENTRY_AUTH_TOKEN` | Upload debug symbols | **Never embed in app — build tool only** |
549
+ | `SENTRY_ORG` | Organization slug | Used by `sentry_dart_plugin` |
550
+ | `SENTRY_PROJECT` | Project slug | Used by `sentry_dart_plugin` |
551
+
552
+ Usage:
553
+
554
+ ```bash
555
+ flutter build apk --release \
556
+ --dart-define=SENTRY_DSN=https://xxx@sentry.io/123 \
557
+ --dart-define=SENTRY_ENVIRONMENT=production
558
+ ```
559
+
560
+ Then in code:
561
+
562
+ ```dart
563
+ options.dsn = const String.fromEnvironment('SENTRY_DSN');
564
+ options.environment = const String.fromEnvironment('SENTRY_ENVIRONMENT', defaultValue: 'development');
565
+ ```
566
+
567
+ ### Production Settings
568
+
569
+ Lower sample rates and harden config before shipping:
570
+
571
+ ```dart
572
+ Future<void> main() async {
573
+ final isProduction = const bool.fromEnvironment('dart.vm.product');
574
+
575
+ await SentryFlutter.init(
576
+ (options) {
577
+ options.dsn = const String.fromEnvironment('SENTRY_DSN');
578
+ options.environment = isProduction ? 'production' : 'development';
579
+
580
+ // Trace 10% of transactions in high-traffic production
581
+ options.tracesSampleRate = isProduction ? 0.1 : 1.0;
582
+
583
+ // Profile 100% of traced transactions (profiling is always a subset)
584
+ options.profilesSampleRate = 1.0;
585
+
586
+ // Replay all error sessions, sample 5% of normal sessions
587
+ options.replay.onErrorSampleRate = 1.0;
588
+ options.replay.sessionSampleRate = isProduction ? 0.05 : 1.0;
589
+
590
+ // Disable debug logging in production
591
+ options.debug = !isProduction;
592
+ },
593
+ appRunner: () => runApp(SentryWidget(child: MyApp())),
594
+ );
595
+ }
596
+ ```
597
+
598
+ ### Default Auto-Enabled Integrations
599
+
600
+ These are active with no extra config when you call `SentryFlutter.init()`:
601
+
602
+ | Integration | What it does |
603
+ | ---------------------------------- | ----------------------------------------------------------- |
604
+ | `FlutterErrorIntegration` | Captures `FlutterError.onError` framework errors |
605
+ | `RunZonedGuardedIntegration` | Catches unhandled Dart exceptions in runZonedGuarded |
606
+ | `NativeAppStartIntegration` | App start timing (iOS/Android) |
607
+ | `FramesTrackingIntegration` | Slow/frozen frames (iOS/Android/macOS) |
608
+ | `NativeUserInteractionIntegration` | User interaction breadcrumbs from native layer |
609
+ | `UserInteractionIntegration` | Dart-layer tap/click transactions (requires `SentryWidget`) |
610
+ | `DeviceContextIntegration` | Device model, OS version, screen resolution |
611
+ | `AppContextIntegration` | App version, build number, bundle ID |
612
+ | `ConnectivityIntegration` | Network connectivity change breadcrumbs |
613
+ | `HttpClientIntegration` | Auto-instrument Dart `http` requests |
614
+ | `SdkIntegration` | SDK metadata tagging |
615
+ | `ReleaseIntegration` | Auto-set release on iOS/Android from package info |
616
+
617
+ ---
618
+
619
+ ## Verification
620
+
621
+ After setup, test that Sentry is receiving events:
622
+
623
+ ```dart
624
+ // Add a test button somewhere visible during development:
625
+ ElevatedButton(
626
+ onPressed: () {
627
+ throw Exception('Sentry test error!');
628
+ },
629
+ child: const Text('Test Sentry Error'),
630
+ )
631
+
632
+ // Or capture manually:
633
+ ElevatedButton(
634
+ onPressed: () {
635
+ Sentry.captureMessage('Sentry test message', level: SentryLevel.info);
636
+ },
637
+ child: const Text('Test Sentry Message'),
638
+ )
639
+
640
+ // Test structured logging:
641
+ ElevatedButton(
642
+ onPressed: () {
643
+ Sentry.logger.info('Test log from Flutter app');
644
+ },
645
+ child: const Text('Test Sentry Log'),
646
+ )
647
+ ```
648
+
649
+ **Check the Sentry dashboard:**
650
+
651
+ - **Issues** → test error should appear within seconds
652
+ - **Traces** → look for a navigation transaction with child spans
653
+ - **Replays** → session recording visible after app interaction (iOS/Android only)
654
+ - **Logs** → structured log entries if `enableLogs: true`
655
+
656
+ > ⚠️ **Platform limitations in debug mode:**
657
+ >
658
+ > - Native crashes, session replay, slow/frozen frames, and app start metrics only fully
659
+ > work in release builds on iOS/Android
660
+ > - Run `flutter run --release` or use a real device/emulator to test native features
661
+ > - Debug mode uses the Dart VM with JIT compilation — some native integrations behave
662
+ > differently
663
+
664
+ ---
665
+
666
+ ## Phase 4: Cross-Link
667
+
668
+ After completing Flutter setup, check for a backend missing Sentry coverage:
669
+
670
+ ```bash
671
+ # Adjacent backend directories
672
+ ls ../backend ../server ../api 2>/dev/null
673
+ cat ../go.mod 2>/dev/null | head -3
674
+ cat ../requirements.txt ../pyproject.toml 2>/dev/null | head -3
675
+ cat ../Gemfile 2>/dev/null | head -3
676
+ ls ../backend/package.json ../server/package.json 2>/dev/null
677
+ ```
678
+
679
+ If a backend exists without Sentry, suggest the matching skill:
680
+
681
+ | Detected | Suggest skill |
682
+ | ----------------------------------------------------- | ------------------------------------------------------------- |
683
+ | Go backend (`go.mod`) | [`go`](../go/index.md) |
684
+ | Python backend (`requirements.txt`, `pyproject.toml`) | [`python`](../python/index.md) |
685
+ | Ruby backend (`Gemfile`) | [`ruby`](../ruby/index.md) |
686
+ | Node.js backend | [`node`](../node/index.md) |
687
+ | .NET backend (`*.csproj`) | [`dotnet`](../dotnet/index.md) |
688
+ | React / Next.js web | [`react`](../react/index.md) / [`nextjs`](../nextjs/index.md) |
689
+
690
+ **Distributed tracing** — if a backend skill is added, configure
691
+ `tracePropagationTargets` in Flutter to propagate trace context to your API:
692
+
693
+ ```dart
694
+ options.tracePropagationTargets = ['api.myapp.com', 'localhost'];
695
+ options.propagateTraceparent = true; // also send W3C traceparent header
696
+ ```
697
+
698
+ This links mobile transactions to backend traces in the Sentry waterfall view.
699
+
700
+ ---
701
+
702
+ ## Troubleshooting
703
+
704
+ | Issue | Solution |
705
+ | ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ |
706
+ | Events not appearing in Sentry | Set `options.debug = true` — SDK logs to Flutter console; verify DSN is correct |
707
+ | `SentryFlutter.init` throws | Ensure `main()` is `async` and you `await SentryFlutter.init(...)` |
708
+ | Stack traces unreadable in Sentry | Upload debug symbols with `sentry_dart_plugin`; build with `--obfuscate --split-debug-info` |
709
+ | Stack traces missing on Web | Build with `--source-maps` and run `dart run sentry_dart_plugin` to upload |
710
+ | Native crashes not captured | Confirm `enableNativeCrashHandling: true`; test in release mode, not debug |
711
+ | Session replay not recording | iOS/Android only; confirm `SentryWidget` wraps root; check `replay.onErrorSampleRate` |
712
+ | Replay shows blank screens | Confirm `SentryWidget(child: MyApp())` is outermost widget; not inside navigator |
713
+ | Profiling not working | iOS and macOS only (alpha); confirm `tracesSampleRate > 0` is set first |
714
+ | Navigation not tracked | Add `SentryNavigatorObserver()` to `navigatorObservers`; name all routes |
715
+ | GoRouter routes unnamed | Add `name:` to all `GoRoute` entries — unnamed routes are tracked as `null` |
716
+ | TTFD never reports | Call `SentryFlutter.currentDisplay()?.reportFullyDisplayed()` after data loads, or wrap with `SentryDisplayWidget` |
717
+ | `sentry_dart_plugin` auth error | Set `SENTRY_AUTH_TOKEN` env var instead of hardcoding in `pubspec.yaml` |
718
+ | Android ProGuard mapping missing | Ensure `--extra-gen-snapshot-options=--save-obfuscation-map=...` flag is set |
719
+ | iOS dSYM not uploaded | `sentry_dart_plugin` handles this; check `upload_debug_symbols: true` in `pubspec.yaml` `sentry:` block |
720
+ | `pub get` fails: Dart SDK too old | `sentry_flutter` ≥9.0.0 requires Dart ≥3.5.0; run `flutter upgrade` |
721
+ | Hot restart crashes on Android debug | Known issue (fixed in SDK ≥9.9.0); upgrade if on older version |
722
+ | ANR detection too aggressive | Increase `anrTimeoutInterval` (default: 5000ms) |
723
+ | Too many transactions in dashboard | Lower `tracesSampleRate` to `0.1` or use `tracesSampler` to drop health checks |
724
+ | `beforeSend` not firing for native crashes | Expected — `beforeSend` intercepts only Dart-layer events; native crashes bypass it |
725
+ | Crons not available | The Flutter/Dart SDK does not support Sentry Crons; use a server-side SDK instead |
726
+ | `SentryWidget` warning in tests | Wrap test widget with `SentryFlutter.init()` in `setUpAll`, or use `enabled: false` |
727
+ | Firebase Remote Config: Linux/Windows | `sentry_firebase_remote_config` not supported on Linux/Windows (Firebase limitation) |
728
+ | Isar tracing on Web | `sentry_isar` does NOT support Web (Isar does not support Web) |