@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,502 @@
1
+ # Tracing & Performance — Flutter SDK Reference
2
+
3
+ > **Minimum SDK version:** `sentry_flutter` ≥ 9.1.0 (routing TTID/TTFD), ≥ 6.17.0 (user
4
+ > interaction tracing) **Platforms:** Most features — all platforms.
5
+ > Platform-specific caveats noted per feature.
6
+
7
+ ## Setup
8
+
9
+ Enable tracing by setting `tracesSampleRate` in `SentryFlutter.init()`:
10
+
11
+ ```dart
12
+ await SentryFlutter.init(
13
+ (options) {
14
+ options.dsn = 'YOUR_SENTRY_DSN';
15
+
16
+ // Option A: Uniform sample rate (use 1.0 during development)
17
+ options.tracesSampleRate = 1.0;
18
+
19
+ // Option B: Dynamic sampler (takes precedence over tracesSampleRate)
20
+ options.tracesSampler = (samplingContext) {
21
+ final name = samplingContext.transactionContext?.name ?? '';
22
+ if (name.contains('checkout')) return 1.0; // always trace checkout
23
+ if (name.contains('health')) return 0.0; // never trace health checks
24
+ return 0.1; // 10% of everything else
25
+ };
26
+ },
27
+ appRunner: () => runApp(SentryWidget(child: MyApp())),
28
+ );
29
+ ```
30
+
31
+ **Sampling precedence** (highest to lowest):
32
+
33
+ 1. Explicit `sampled: true/false` on the transaction
34
+ 2. `tracesSampler` return value
35
+ 3. Parent transaction sampling decision (distributed tracing)
36
+ 4. `tracesSampleRate` static value
37
+
38
+ ---
39
+
40
+ ## Navigation Instrumentation
41
+
42
+ Add `SentryNavigatorObserver` to automatically create a transaction per screen with Time
43
+ to Initial Display (TTID) spans:
44
+
45
+ ### Standard MaterialApp / CupertinoApp
46
+
47
+ ```dart
48
+ import 'package:sentry_flutter/sentry_flutter.dart';
49
+
50
+ MaterialApp(
51
+ navigatorObservers: [
52
+ SentryNavigatorObserver(
53
+ // Auto-finish idle transactions after this duration (default: 3s)
54
+ autoFinishAfter: const Duration(seconds: 3),
55
+ // Routes to exclude from tracking (default: [])
56
+ ignoreRoutes: ['/splash', '/loading'],
57
+ // Use route name as the Sentry transaction name (default: false)
58
+ setRouteNameAsTransaction: false,
59
+ // Generate a fresh trace on each push/pop/replace (default: false).
60
+ // Changed from true → false in sentry_flutter 9.19.0.
61
+ // Set to true to restore the previous opt-out behavior.
62
+ enableNewTraceOnNavigation: false,
63
+ ),
64
+ ],
65
+ routes: {
66
+ '/': (context) => HomeScreen(),
67
+ '/profile': (context) => ProfileScreen(),
68
+ },
69
+ )
70
+
71
+ // For anonymous routes — always provide a name:
72
+ Navigator.push(
73
+ context,
74
+ MaterialPageRoute(
75
+ settings: const RouteSettings(name: 'ProductDetail'), // REQUIRED
76
+ builder: (context) => ProductDetailScreen(),
77
+ ),
78
+ );
79
+ ```
80
+
81
+ > ⚠️ Routes **must have names** for TTID/TTFD spans and navigation breadcrumbs to be
82
+ > created. Unnamed routes show as `null` in Sentry.
83
+
84
+ ### GoRouter
85
+
86
+ ```dart
87
+ import 'package:go_router/go_router.dart';
88
+ import 'package:sentry_flutter/sentry_flutter.dart';
89
+
90
+ final GoRouter router = GoRouter(
91
+ observers: [SentryNavigatorObserver()],
92
+ routes: [
93
+ GoRoute(
94
+ path: '/',
95
+ name: 'home', // name is REQUIRED
96
+ builder: (context, state) => const HomeScreen(),
97
+ routes: [
98
+ GoRoute(
99
+ path: 'profile/:id',
100
+ name: 'profile', // name is REQUIRED
101
+ builder: (context, state) => ProfileScreen(
102
+ id: state.pathParameters['id']!,
103
+ ),
104
+ ),
105
+ ],
106
+ ),
107
+ ],
108
+ );
109
+ ```
110
+
111
+ > **Known limitation:** GoRouter does not propagate navigator observers across
112
+ > same-level tab transitions.
113
+ > Bottom-tab navigation events may not be tracked.
114
+
115
+ ### Auto Route (Community Pattern)
116
+
117
+ ```dart
118
+ import 'package:auto_route/auto_route.dart';
119
+ import 'package:sentry_flutter/sentry_flutter.dart';
120
+
121
+ MaterialApp.router(
122
+ routerConfig: _router.config(
123
+ navigatorObservers: () => [SentryNavigatorObserver()],
124
+ ),
125
+ )
126
+ ```
127
+
128
+ > **Known limitation:** Tab-based nested navigation is not captured (tracked issue
129
+ > getsentry/sentry-dart#2123).
130
+
131
+ ---
132
+
133
+ ## Time to Full Display (TTFD)
134
+
135
+ TTID (Time to Initial Display) is **always enabled** — measures to the first rendered
136
+ frame. TTFD measures to when your screen is fully ready (data loaded, async work done).
137
+ TTFD is **opt-in**:
138
+
139
+ ```dart
140
+ // Enable in options
141
+ options.enableTimeToFullDisplayTracing = true;
142
+ ```
143
+
144
+ Then report when the screen is fully ready:
145
+
146
+ ```dart
147
+ // Option 1: Widget wrapper (marks TTFD when child's build() completes)
148
+ // For StatelessWidget — TTFD is auto-reported when build() returns.
149
+ // For StatefulWidget — call reportFullyDisplayed() manually in a wrapper:
150
+ Navigator.push(
151
+ context,
152
+ MaterialPageRoute(
153
+ settings: const RouteSettings(name: 'ProductScreen'),
154
+ builder: (context) => SentryDisplayWidget(child: ProductScreen()),
155
+ ),
156
+ );
157
+
158
+ // Inside ProductScreen (StatefulWidget):
159
+ @override
160
+ void initState() {
161
+ super.initState();
162
+ _loadData().then((_) {
163
+ if (mounted) {
164
+ SentryDisplayWidget.of(context).reportFullyDisplayed();
165
+ }
166
+ });
167
+ }
168
+
169
+ // Option 2: Direct API call (from anywhere in the widget)
170
+ await _loadData();
171
+ SentryFlutter.currentDisplay()?.reportFullyDisplayed();
172
+ ```
173
+
174
+ TTFD auto-expires at **30 seconds** with `SpanStatus.DEADLINE_EXCEEDED` if
175
+ `reportFullyDisplayed()` is never called.
176
+
177
+ ---
178
+
179
+ ## User Interaction Tracing
180
+
181
+ Automatically creates transactions for taps, clicks, and long presses.
182
+ Requires `SentryWidget` at the root:
183
+
184
+ ```dart
185
+ appRunner: () => runApp(SentryWidget(child: MyApp()))
186
+ ```
187
+
188
+ Widgets **must have a `Key`** to be tracked:
189
+
190
+ ```dart
191
+ ElevatedButton(
192
+ key: const Key('submit_payment_button'), // REQUIRED for tracking
193
+ onPressed: _submitPayment,
194
+ child: const Text('Pay Now'),
195
+ )
196
+ ```
197
+
198
+ Transactions are named `ButtonWidget key[submit_payment_button]` with operation
199
+ `ui.action.click`. Empty transactions (no child spans within `idleTimeout`) are silently
200
+ dropped.
201
+
202
+ Configuration:
203
+
204
+ ```dart
205
+ options.enableUserInteractionTracing = true; // default: true
206
+ options.enableUserInteractionBreadcrumbs = true; // default: true
207
+ options.sendDefaultPii = false; // set true to include widget text as labels
208
+ options.idleTimeout = const Duration(milliseconds: 3000); // default
209
+ ```
210
+
211
+ ---
212
+
213
+ ## HTTP Tracing
214
+
215
+ ### Standard `http` package (built into `sentry_flutter`)
216
+
217
+ ```dart
218
+ import 'package:sentry/sentry.dart';
219
+
220
+ // Wrap any active transaction with an HTTP client for automatic spans
221
+ final transaction = Sentry.startTransaction('api-call', 'request', bindToScope: true);
222
+
223
+ final client = SentryHttpClient(
224
+ captureFailedRequests: true,
225
+ failedRequestStatusCodes: [SentryStatusCode.range(400, 599)],
226
+ failedRequestTargets: ['api.example.com'],
227
+ );
228
+
229
+ try {
230
+ final response = await client.get(Uri.parse('https://api.example.com/users'));
231
+ } finally {
232
+ client.close();
233
+ await transaction.finish(status: SpanStatus.ok());
234
+ }
235
+ ```
236
+
237
+ ### Dio (`sentry_dio`)
238
+
239
+ `dio.addSentry()` **must be the last step** in Dio setup:
240
+
241
+ ```dart
242
+ import 'package:sentry_dio/sentry_dio.dart';
243
+
244
+ final dio = Dio();
245
+ dio.interceptors.add(MyAuthInterceptor()); // your interceptors first
246
+ dio.addSentry( // addSentry() always last
247
+ captureFailedRequests: true,
248
+ failedRequestStatusCodes: [SentryStatusCode.range(400, 599)],
249
+ );
250
+
251
+ // Spans only appear if a transaction is on scope
252
+ final transaction = Sentry.startTransaction('api-work', 'request', bindToScope: true);
253
+ await dio.get('https://api.example.com/products');
254
+ await transaction.finish(status: SpanStatus.ok());
255
+ ```
256
+
257
+ ### Distributed Tracing
258
+
259
+ Propagate trace context to your backend (links mobile spans to server spans in the
260
+ waterfall view):
261
+
262
+ ```dart
263
+ options.tracePropagationTargets = ['api.myapp.com', 'localhost'];
264
+ options.propagateTraceparent = true; // also send W3C traceparent header (SDK ≥9.7.0)
265
+ ```
266
+
267
+ ---
268
+
269
+ ## App Start Instrumentation
270
+
271
+ **Platforms: iOS and Android only.** Automatically enabled — no config needed.
272
+
273
+ Measures from earliest native process init to first Flutter frame.
274
+ Creates:
275
+
276
+ - `ui.load` transaction
277
+ - `app.start.cold` or `app.start.warm` span
278
+
279
+ > ⚠️ Does not work accurately in Flutter add-to-app scenarios.
280
+
281
+ Disable if needed:
282
+
283
+ ```dart
284
+ import 'package:sentry_flutter/src/integrations/native_app_start_integration.dart';
285
+
286
+ options.integrations.removeWhere((i) => i is NativeAppStartIntegration);
287
+ ```
288
+
289
+ ---
290
+
291
+ ## Slow and Frozen Frames
292
+
293
+ **Platforms: iOS, Android, macOS.** Auto-enabled when Sentry initializes before
294
+ `WidgetsFlutterBinding`.
295
+
296
+ Thresholds:
297
+
298
+ - **Slow frame:** > 16ms render time (misses 60 FPS target)
299
+ - **Frozen frame:** > 700ms render time
300
+
301
+ If you need to call `WidgetsFlutterBinding.ensureInitialized()` before Sentry (e.g., for
302
+ plugin setup), use:
303
+
304
+ ```dart
305
+ // Replace WidgetsFlutterBinding.ensureInitialized() with:
306
+ SentryWidgetsFlutterBinding.ensureInitialized();
307
+ ```
308
+
309
+ Disable:
310
+
311
+ ```dart
312
+ options.enableFramesTracking = false;
313
+ ```
314
+
315
+ ---
316
+
317
+ ## Custom Instrumentation
318
+
319
+ ### Manual Transaction
320
+
321
+ ```dart
322
+ final transaction = Sentry.startTransaction(
323
+ 'processOrderBatch()', // name
324
+ 'task', // operation
325
+ bindToScope: true, // links auto-captured errors to this transaction
326
+ );
327
+
328
+ try {
329
+ await processOrderBatch();
330
+ transaction.status = const SpanStatus.ok();
331
+ } catch (exception, stackTrace) {
332
+ transaction.throwable = exception;
333
+ transaction.status = const SpanStatus.internalError();
334
+ await Sentry.captureException(exception, stackTrace: stackTrace);
335
+ } finally {
336
+ await transaction.finish();
337
+ }
338
+ ```
339
+
340
+ ### Nested Spans
341
+
342
+ ```dart
343
+ final span = Sentry.getSpan()?.startChild(
344
+ 'db.query',
345
+ description: 'SELECT * FROM orders WHERE user_id = ?',
346
+ ) ?? Sentry.startTransaction('fallback', 'task', bindToScope: true);
347
+
348
+ try {
349
+ final orders = await db.getOrdersForUser(userId);
350
+ span.status = const SpanStatus.ok();
351
+ return orders;
352
+ } catch (e, st) {
353
+ span.throwable = e;
354
+ span.status = const SpanStatus.notFound();
355
+ rethrow;
356
+ } finally {
357
+ await span.finish();
358
+ }
359
+ ```
360
+
361
+ ### Attach Data to Spans
362
+
363
+ ```dart
364
+ transaction.setData('user_id', userId);
365
+ transaction.setData('items_count', 42);
366
+ transaction.setData('currency', 'USD');
367
+ // Supported types: String, int, double, bool, List
368
+ ```
369
+
370
+ ### Dynamic Sampling with Context
371
+
372
+ ```dart
373
+ final transaction = Sentry.startTransaction(
374
+ 'processPayment()',
375
+ 'task',
376
+ customSamplingContext: {
377
+ 'payment.amount': amount,
378
+ 'payment.currency': currency,
379
+ 'user.tier': userTier,
380
+ },
381
+ );
382
+
383
+ // In tracesSampler:
384
+ options.tracesSampler = (ctx) {
385
+ final tier = ctx.customSamplingContext?['user.tier'];
386
+ if (tier == 'enterprise') return 1.0; // always trace enterprise
387
+ return 0.1;
388
+ };
389
+ ```
390
+
391
+ ---
392
+
393
+ ## Database Tracing
394
+
395
+ All DB integrations require an **active transaction on scope** to generate spans.
396
+
397
+ ### sqflite (`sentry_sqflite`) — Android, iOS, macOS only
398
+
399
+ ```dart
400
+ import 'package:sentry_sqflite/sentry_sqflite.dart';
401
+
402
+ // Global: instruments ALL databases
403
+ databaseFactory = SentrySqfliteDatabaseFactory();
404
+
405
+ // Per-database (recommended)
406
+ final db = await openDatabaseWithSentry('my.db');
407
+ ```
408
+
409
+ ### Drift (`sentry_drift`) — All platforms
410
+
411
+ ```dart
412
+ import 'package:sentry_drift/sentry_drift.dart';
413
+
414
+ final executor = driftDatabase(name: 'app').interceptWith(
415
+ SentryQueryInterceptor(databaseName: 'app'),
416
+ );
417
+ final db = AppDatabase(executor);
418
+ ```
419
+
420
+ ### Hive (`sentry_hive`) — All platforms
421
+
422
+ ```dart
423
+ import 'package:sentry_hive/sentry_hive.dart';
424
+
425
+ // Use SentryHive instead of Hive
426
+ SentryHive.init(appDir.path);
427
+ final box = await SentryHive.openBox<Person>('people');
428
+ ```
429
+
430
+ ### Isar (`sentry_isar`) — Android, iOS, macOS, Linux, Windows (no Web)
431
+
432
+ ```dart
433
+ import 'package:sentry_isar/sentry_isar.dart';
434
+
435
+ // Use SentryIsar.open() instead of Isar.open()
436
+ final isar = await SentryIsar.open([UserSchema], directory: dir.path);
437
+ ```
438
+
439
+ ---
440
+
441
+ ## Asset Bundle Instrumentation
442
+
443
+ Traces asset loading in your app (built into `sentry_flutter`):
444
+
445
+ ```dart
446
+ runApp(
447
+ DefaultAssetBundle(
448
+ bundle: SentryAssetBundle(enableStructuredDataTracing: true),
449
+ child: MyApp(),
450
+ ),
451
+ )
452
+ ```
453
+
454
+ ---
455
+
456
+ ## Production Configuration
457
+
458
+ ```dart
459
+ final isProduction = const bool.fromEnvironment('dart.vm.product');
460
+
461
+ await SentryFlutter.init(
462
+ (options) {
463
+ options.dsn = const String.fromEnvironment('SENTRY_DSN');
464
+
465
+ // 10% sampling in production, 100% in dev
466
+ options.tracesSampleRate = isProduction ? 0.1 : 1.0;
467
+
468
+ // Trace all checkout flows, drop health checks
469
+ options.tracesSampler = (ctx) {
470
+ final name = ctx.transactionContext?.name ?? '';
471
+ if (name.contains('checkout') || name.contains('payment')) return 1.0;
472
+ if (name.contains('health') || name.contains('ping')) return 0.0;
473
+ return isProduction ? 0.1 : 1.0;
474
+ };
475
+
476
+ // Connect traces to backend
477
+ options.tracePropagationTargets = ['api.myapp.com'];
478
+ },
479
+ appRunner: () => runApp(SentryWidget(child: MyApp())),
480
+ );
481
+ ```
482
+
483
+ ---
484
+
485
+ ## Troubleshooting
486
+
487
+ | Issue | Solution |
488
+ | --------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------- |
489
+ | No transactions in Sentry | Confirm `tracesSampleRate > 0`; set to `1.0` to see all during debugging |
490
+ | Navigation not tracked | Add `SentryNavigatorObserver()` to `navigatorObservers`; name all routes |
491
+ | Traces not being connected across navigations | `enableNewTraceOnNavigation` defaults to `false` since 9.19.0 — set it to `true` to generate a fresh trace on each navigation event |
492
+ | TTID/TTFD spans missing | SDK ≥ 9.1.0 required; routes must have names |
493
+ | TTFD never reports | Call `SentryFlutter.currentDisplay()?.reportFullyDisplayed()` or use `SentryDisplayWidget` |
494
+ | GoRouter tabs not tracked | Known Flutter limitation — tab transitions don’t trigger standard navigator callbacks |
495
+ | User interaction transactions empty | Widget must have a `Key`; spans need child work before `idleTimeout` |
496
+ | Dio spans not appearing | Confirm `bindToScope: true` on the parent transaction; `dio.addSentry()` must be last |
497
+ | HTTP spans not appearing | Wrap requests with a scope-bound transaction; `SentryHttpClient` only creates spans in a transaction context |
498
+ | App start metrics missing | iOS/Android only; not available in add-to-app; disable with `NativeAppStartIntegration` removal |
499
+ | Slow/frozen frames not tracked | Sentry must init before `WidgetsFlutterBinding`; use `SentryWidgetsFlutterBinding.ensureInitialized()` |
500
+ | `tracesSampler` not being called | Only called once per transaction creation — check that transactions are being started |
501
+ | gRPC requests slow on Windows | Known issue (getsentry/sentry-dart#2760) — `startTransaction` overhead; avoid or use async span creation |
502
+ | Too many transactions in dashboard | Lower `tracesSampleRate` or use `tracesSampler` to drop noisy endpoints |