@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,43 @@
1
+ # Releases — What & Why
2
+
3
+ A **release** is a version of your code deployed to an environment.
4
+ Tying every event to its exact version unlocks:
5
+
6
+ - **Regression detection** — when an issue first appeared and whether it came back in a
7
+ later release.
8
+ - **Crash-free rates / release health** — error-free sessions and users per release
9
+ (session tracking is on by default in most modern SDKs).
10
+ - **Suspect commits** — the specific commit(s) likely responsible for an issue, surfaced
11
+ on the issue with a suggested assignee.
12
+ - **Resolve-in-next-release** and **`Fixes SENTRY-XXX`** — resolve an issue and let
13
+ Sentry track whether it stays fixed in the version that ships the fix.
14
+
15
+ ## While debugging
16
+
17
+ Releases let you pin the exact code that was running when an issue was produced — diff
18
+ against that revision rather than assuming `main` matches — and **suspect commits** on
19
+ the issue are the fastest “what changed.”
20
+ Suspect commits need the source-control integration below; without it you still get
21
+ release-scoped regression and health, just not the culprit commit.
22
+
23
+ ## Setup essentials — two ingredients
24
+
25
+ 1. **The `release` (and `environment`) tag on events** — set in the SDK `init` (or
26
+ `SENTRY_RELEASE`). Without it every event is “unknown release” and regression/health
27
+ features can’t work.
28
+ 2. **The release object + commits + deploy, created in CI** — via `sentry-cli` or the
29
+ GitHub Action. **Associating commits is what powers suspect commits**, and that
30
+ association needs a **source-control integration** (GitHub/GitLab) connected in
31
+ Sentry’s UI (an OAuth step the agent can’t do).
32
+ The **release name must match** between the SDK tag and the CI-created release, or
33
+ events won’t attribute.
34
+
35
+ Use a meaningful, unique version (a commit SHA or semver), set `environment` so staging
36
+ noise doesn’t pollute prod health, and finalize the release + record the deploy at
37
+ deploy time.
38
+
39
+ ## Related
40
+
41
+ - [`monitors.md`](monitors.md) — release-health / crash-rate monitors build on this.
42
+ - [`search-query-language.md`](../search-query-language.md) — `release`, `firstRelease`,
43
+ `release.stage`.
@@ -0,0 +1,35 @@
1
+ # Session Replay — What & Why
2
+
3
+ A reconstruction of a user session around an error or UX problem.
4
+ On **web** it’s rebuilt from DOM snapshots and events (rrweb — _not_ a screen
5
+ recording), so it’s lightweight; on **mobile** it’s a view-hierarchy reconstruction plus
6
+ periodic screenshots, with more aggressive default redaction.
7
+ Replays link to the errors, traces, and rage/dead clicks in the same session.
8
+ It’s a **frontend/mobile** signal — there’s nothing to replay on a backend.
9
+
10
+ ## What a replay adds over a stack trace
11
+
12
+ A replay is the _user’s path_, timestamp-synced to everything else in the session — the
13
+ clicks, navigations, network calls, and console output that led to the error, not just
14
+ the frame where it threw.
15
+ Two UX signals live here that never surface as exceptions: a **dead click** (a click
16
+ that produces no response within ~7s) and a **rage click** (the repeated-click subset) —
17
+ and these are promoted to their own **issues**, so a real UX problem can exist with no
18
+ exception behind it.
19
+
20
+ ## Setup essentials
21
+
22
+ - **Two sample rates, asymmetric:** keep `replaysOnErrorSampleRate` **high** (often
23
+ `1.0` — you want a replay for any session that errored) and `replaysSessionSampleRate`
24
+ **low** (a few percent — capturing every healthy session is expensive).
25
+ - **Privacy.** Defaults **mask all text and block media** — start there; use mask/block
26
+ selectors to redact sensitive fields before unmasking anything globally, and treat
27
+ network request/response **body capture as opt-in**. Mobile redacts more aggressively
28
+ by default; still review sensitive screens.
29
+
30
+ ## Related
31
+
32
+ - [`data-scrubbing.md`](data-scrubbing.md)
33
+ - [`reduce-volume.md`](reduce-volume.md)
34
+ - [`search-query-language.md`](../search-query-language.md) — replay properties
35
+ (`count_rage_clicks`, `click.*`, `count_errors`, …).
@@ -0,0 +1,54 @@
1
+ # Tracing & Performance — What & Why
2
+
3
+ ## What it is
4
+
5
+ Distributed tracing reconstructs one request as it flows across frontend, backend, and
6
+ downstream services.
7
+ A trace is a tree of **spans** — each a timed operation (an HTTP request, a DB query, a
8
+ function call) with a name, duration, parent, and attributes.
9
+ The root span is the **transaction**. Tracing answers _why_ something is slow, and it’s
10
+ the substrate Sentry uses to **automatically detect performance issues** — N+1 queries,
11
+ slow DB calls, render-blocking assets, consecutive HTTP calls (detection requires
12
+ tracing on).
13
+
14
+ ## What a trace shows
15
+
16
+ A trace is a waterfall of spans nested by ancestry, and the shape _is_ the diagnosis:
17
+ the widest span — or a gap between spans — is where the time went (a slow query, a
18
+ blocking upstream call), which the stack trace alone can’t tell you.
19
+ A trace is also a cross-issue view: an error inside it links to its issue, and the real
20
+ root cause can be a _different_ issue in the same request — a frontend exception, say,
21
+ driven by a failing span in the backend service upstream.
22
+ Two shapes to read correctly — a dashed/orphan span means a transaction is **missing**
23
+ (unsent, sampled out, rate-limited), usually from a low sample rate rather than a real
24
+ gap; multiple roots usually means a custom-instrumentation trace-ID bug.
25
+ A span also carries its profile, the bridge down to the function level.
26
+
27
+ ## Setup essentials
28
+
29
+ - **Sampling is the main cost/signal lever** (trace volume dwarfs errors).
30
+ `tracesSampleRate` is a flat fraction (start 5–20% in prod); `tracesSampler` is a
31
+ function returning a per-transaction rate — use it to sample _down_ noise (health
32
+ checks) and _up_ the paths you care about.
33
+ **`tracesSampleRate: 0` does not disable tracing** — it keeps tracing enabled but
34
+ samples nothing; omit the sampling config entirely to truly disable.
35
+ The head-of-trace sampling decision propagates downstream, so you capture whole
36
+ traces, not fragments.
37
+ - **Cross-service:** add your API domains to `tracePropagationTargets` so the SDK
38
+ attaches trace headers (`sentry-trace`, `baggage`, and the newer `traceparent`) on
39
+ outbound requests, and allow those headers via CORS — or propagation silently fails
40
+ and you get two disconnected traces.
41
+ - **Instrument boundaries first** (incoming/outbound HTTP, DB / cache / queue — mostly
42
+ auto-instrumented), add custom spans for meaningful business operations, and keep span
43
+ names **low-cardinality and templated** (`GET /users/:id`, not `/users/12345`) with
44
+ searchable attributes rather than baking values into the name.
45
+ Follow Sentry’s semantic conventions for span and attribute names.
46
+ The instrument skill lists the domain references under Semantic conventions; open only
47
+ the one you need (for example `references/semantics/http.md`).
48
+
49
+ ## Related
50
+
51
+ - [`profiling.md`](profiling.md)
52
+ - [`reduce-volume.md`](reduce-volume.md) — sampling is the main lever.
53
+ - [`search-query-language.md`](../search-query-language.md) — span properties for
54
+ querying traces.
@@ -0,0 +1,36 @@
1
+ # User Feedback — What & Why
2
+
3
+ Qualitative reports from real users, linked to Sentry context — the surrounding error,
4
+ replay, trace, release, and user.
5
+ The one signal that captures _what the human thinks went wrong_, which the machine
6
+ signals can’t tell you.
7
+
8
+ ## What a feedback entry is worth
9
+
10
+ Its value is the **linked context**, not the prose.
11
+ A feedback entry carries a pivot to the moment it’s about: a widget submission attaches
12
+ the user’s replay (roughly the minute before they hit submit) and the page URL; a
13
+ crash-report submission links straight to the **issue**. So feedback is a way _into_ the
14
+ machine signals from the human side — and it surfaces as its own issue category
15
+ (`Feedback`) rather than living in a separate silo.
16
+
17
+ ## Setup essentials — three mechanisms
18
+
19
+ - **Feedback widget** (browser only) — an embeddable, auto-injectable button/form with
20
+ an optional screenshot.
21
+ The default for web.
22
+ - **`captureFeedback` API** — programmatic; the cross-platform path
23
+ (mobile/desktop/backend) and when you want control over your own UI.
24
+ - **Crash-report modal** — prompts for detail right after an error fires; the practical
25
+ option where there’s no persistent UI to host a widget.
26
+
27
+ Decide required fields and screenshots up front (more fields = fewer but richer
28
+ submissions), **route feedback somewhere actionable** (Slack / Jira / an alert) so it
29
+ isn’t a black hole, and apply replay-grade masking to screenshots — they capture
30
+ whatever is on screen.
31
+
32
+ ## Related
33
+
34
+ - [`session-replay.md`](session-replay.md)
35
+ - [`data-scrubbing.md`](data-scrubbing.md)
36
+ - [`search-query-language.md`](../search-query-language.md) — user-feedback properties.
@@ -0,0 +1,68 @@
1
+ # Debug files — Android (ProGuard/R8, NDK)
2
+
3
+ Two independent artifact families, and a release build usually needs both:
4
+
5
+ - **ProGuard/R8 mapping** — undoes name obfuscation in Kotlin/Java frames (`a.b.c()` →
6
+ real names).
7
+ - **Native symbols (`.so`)** — symbolicates NDK/C++ frames.
8
+ Only relevant if the app ships native code.
9
+
10
+ ## Path A — the Sentry Gradle plugin (preferred)
11
+
12
+ The plugin uploads on release builds, so it can’t be forgotten at release time.
13
+ The plugin id and the dependency wiring live in `sdks/android/index.md`; the
14
+ upload-related options in the `sentry {}` block are:
15
+
16
+ ```groovy
17
+ sentry {
18
+ org = "YOUR_ORG_SLUG"
19
+ projectName = "YOUR_PROJECT_SLUG"
20
+ authToken = System.getenv("SENTRY_AUTH_TOKEN")
21
+
22
+ // Kotlin/Java deobfuscation
23
+ autoUploadProguardMapping = true
24
+
25
+ // Code context next to frames
26
+ includeSourceContext = true
27
+ }
28
+ ```
29
+
30
+ For an app with native code, also enable native symbol upload (`uploadNativeSymbols`,
31
+ plus the matching include-sources option for native).
32
+ Check the plugin’s own documentation for the current option names before adding them —
33
+ the native options have changed across plugin majors, and a wrong name is silently
34
+ ignored rather than failing the build.
35
+
36
+ `authToken` from `System.getenv` keeps the secret out of the build file.
37
+ A gitignored `sentry.properties` also works.
38
+
39
+ ## Path B — the wizard
40
+
41
+ ```
42
+ npx @sentry/wizard@latest -i android
43
+ ```
44
+
45
+ Interactive, so the **user** runs it.
46
+ It handles login, org/project selection, the Gradle plugin, the DSN, and ProGuard/R8
47
+ mapping upload.
48
+
49
+ ## Path C — manual `sentry-cli`
50
+
51
+ For builds the plugin can’t be added to.
52
+ The mapping file is produced by R8 at `app/build/outputs/mapping/<variant>/mapping.txt`,
53
+ and it must be uploaded with the **UUID that the app reports**, so the plugin path is
54
+ strongly preferred — doing this by hand means managing that UUID in
55
+ `AndroidManifest.xml` yourself and keeping it in sync with each upload.
56
+ Reach for it only when Gradle-plugin adoption is genuinely blocked, and read the current
57
+ sentry-cli docs for the exact `debug-files upload` invocation for mappings.
58
+
59
+ ## Traps
60
+
61
+ | Symptom | Cause | Fix |
62
+ | --------------------------------------------- | --------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- |
63
+ | Frames still obfuscated after a release build | `autoUploadProguardMapping` not enabled, or minification runs in a variant the plugin doesn’t cover | Enable it; confirm the release variant is the one shipped |
64
+ | Debug builds look fine, release doesn’t | Expected — obfuscation only runs for release | Always test symbolication on a release build |
65
+ | Kotlin frames readable, native frames not | Only the mapping was uploaded | Enable native symbol upload |
66
+ | Nothing uploads, build green | Token unset — see `../auth-token.md` | Add `SENTRY_AUTH_TOKEN` to the build environment |
67
+ | Worked, then stopped after a version bump | Plugin option renamed across a major, now silently ignored | Re-check option names against the plugin docs for your version |
68
+ | Frames readable, no code context | `includeSourceContext` off | Enable it and re-check a new event |
@@ -0,0 +1,96 @@
1
+ # Debug files — Apple (iOS, macOS, tvOS, watchOS, visionOS)
2
+
3
+ Native crashes arrive as addresses.
4
+ Symbolication needs the **dSYM** bundle produced by the build that shipped — a different
5
+ dSYM won’t do, because the UUID must match.
6
+
7
+ ## Prerequisite: the build must produce dSYMs
8
+
9
+ Xcode only emits them when the build setting is right:
10
+
11
+ - **`DEBUG_INFORMATION_FORMAT`** = `DWARF with dSYM File`. This is the default for
12
+ **Release** only — a Debug-configuration build produces no dSYM, so a crash from it
13
+ can’t be symbolicated this way.
14
+ - **`ENABLE_USER_SCRIPT_SANDBOXING`** = `NO`, or an upload build phase can’t read the
15
+ dSYM directory.
16
+
17
+ ## Path A — the wizard (preferred)
18
+
19
+ ```
20
+ brew install getsentry/tools/sentry-wizard && sentry-wizard -i ios
21
+ ```
22
+
23
+ Interactive (browser login), so the **user** runs it.
24
+ It sets up the auth token, the SDK, and the dSYM upload build phase — which is the part
25
+ that’s easy to get wrong by hand.
26
+
27
+ ## Path B — an Xcode Run Script build phase
28
+
29
+ Add a Run Script phase after the compile/archive steps:
30
+
31
+ ```bash
32
+ sentry-cli debug-files upload --include-sources "$DWARF_DSYM_FOLDER_PATH"
33
+ ```
34
+
35
+ - `$DWARF_DSYM_FOLDER_PATH` is provided by Xcode and points at the dSYMs for this build.
36
+ - `--include-sources` bundles source snippets so Sentry can show code context next to
37
+ native frames. Omit it if your source can’t leave the build machine.
38
+ - Supply `SENTRY_ORG`, `SENTRY_PROJECT`, and `SENTRY_AUTH_TOKEN` to the phase’s
39
+ environment (or a gitignored `sentry.properties`).
40
+ - Add `--force-foreground` while debugging the phase — the upload otherwise backgrounds
41
+ itself and its output can be lost from the build log.
42
+
43
+ For the phase’s input file list, the per-executable dSYM path is:
44
+
45
+ ```
46
+ ${DWARF_DSYM_FOLDER_PATH}/${DWARF_DSYM_FILE_NAME}/Contents/Resources/DWARF/${EXECUTABLE_NAME}
47
+ ```
48
+
49
+ ## Path C — Fastlane
50
+
51
+ If the project already uses Fastlane, upload there instead of in Xcode:
52
+
53
+ ```ruby
54
+ sentry_debug_files_upload(
55
+ auth_token: ENV["SENTRY_AUTH_TOKEN"],
56
+ org_slug: "your-org",
57
+ project_slug: "your-project",
58
+ include_sources: true
59
+ )
60
+ ```
61
+
62
+ Self-hosted Sentry: export `SENTRY_URL`, or pass `url:` to the Fastlane action.
63
+
64
+ ## Path D — after the fact, from App Store Connect
65
+
66
+ When Apple processes the build (or the shipped dSYMs were never uploaded), fetch them
67
+ and upload separately.
68
+ Fastlane’s `download_dsyms` handles the fetch; then run the same
69
+ `sentry-cli debug-files upload` against the downloaded path.
70
+
71
+ Uploading alone does not change the crash you’re already looking at — symbolication runs
72
+ at ingest, so the stored event keeps the frames it was processed with.
73
+ Unlike source maps, though, native events can be **reprocessed**: trigger it from the
74
+ issue and Sentry re-runs symbolication against the debug files it now has.
75
+ Three things to know before you do — wait at least an hour after the upload (the
76
+ internal caches must expire first), reprocessed events count against quota a second
77
+ time, and issue alerts don’t fire for them.
78
+ See [Reprocessing](https://docs.sentry.io/product/issues/reprocessing/).
79
+
80
+ ## Verifying the artifact side
81
+
82
+ `sentry-cli debug-files` can confirm what Sentry has before you re-run the app.
83
+ Sentry’s issue view also lists the debug images an event needed and whether each was
84
+ found — that list, not the build log, is the authority on whether the right UUID
85
+ arrived.
86
+
87
+ ## Traps
88
+
89
+ | Symptom | Cause | Fix |
90
+ | ---------------------------------------------------- | -------------------------------------------------------------------- | ----------------------------------------------------------- |
91
+ | No dSYM anywhere in the build output | Debug configuration, or `DEBUG_INFORMATION_FORMAT` set to DWARF-only | Set `DWARF with dSYM File`; symbolicate release builds |
92
+ | Build phase fails reading the dSYM dir | User script sandboxing on | `ENABLE_USER_SCRIPT_SANDBOXING = NO` |
93
+ | Uploads succeed, crash still unsymbolicated | UUID mismatch — a rebuild produced a new binary after the upload | Upload from the archive that shipped; don’t rebuild between |
94
+ | Frames symbolicated, no source lines | `--include-sources` not used | Add it, re-upload, check a new event |
95
+ | Works locally, not on CI/Xcode Cloud | Token or org/project env missing in the CI build environment | Add them as CI secrets |
96
+ | Only your code is unsymbolicated; system frames fine | Sentry symbolicates OS frames itself; yours need your dSYM | Nothing about system symbols to fix — chase your own upload |
@@ -0,0 +1,70 @@
1
+ # Debug files — .NET (Portable PDB)
2
+
3
+ .NET fails differently from JavaScript and native, and the difference matters for
4
+ triage: method names survive.
5
+ What goes missing is the **file name and line number**. A frame that reads
6
+ `MyApp.Services.Checkout.Charge()` with no `Checkout.cs:118` after it is this problem —
7
+ the trace isn’t unreadable, it’s unlocatable.
8
+ Don’t go looking for a minification story that doesn’t exist.
9
+
10
+ The artifact is the **PDB** the build already produces — Portable PDB on modern .NET,
11
+ supported by Sentry since 22.11.0 (sentry-cli 2.8.0).
12
+
13
+ ## Path A — MSBuild (preferred)
14
+
15
+ The Sentry NuGet package bundles sentry-cli and can upload during the build.
16
+ Both upload properties default to **`false`**, so a project that installed the SDK and
17
+ did nothing else uploads nothing — this is the normal starting state, not a broken
18
+ config.
19
+
20
+ ```xml
21
+ <PropertyGroup Condition="'$(Configuration)' == 'Release'">
22
+ <SentryOrg>YOUR_ORG_SLUG</SentryOrg>
23
+ <SentryProject>YOUR_PROJECT_SLUG</SentryProject>
24
+ <SentryUploadSymbols>true</SentryUploadSymbols>
25
+ <SentryUploadSources>true</SentryUploadSources>
26
+ </PropertyGroup>
27
+ ```
28
+
29
+ - `SentryUploadSources` is the source-context switch — file/line without it, surrounding
30
+ code with it. Omit it if your source can’t leave the build machine.
31
+ - Condition on `Release`. An unconditional block uploads on every local Debug build.
32
+ - `UseSentryCLI` (default `true`) disables the bundled CLI outright; if something in the
33
+ build sets it to `false`, nothing uploads regardless of the properties above.
34
+
35
+ The wider property block — release creation and commit association — lives in
36
+ `sdks/dotnet/index.md` as ordinary SDK config.
37
+ This file covers the upload itself.
38
+
39
+ ## Path B — sentry-cli directly
40
+
41
+ For a publish pipeline that doesn’t run the Sentry MSBuild targets:
42
+
43
+ ```bash
44
+ sentry-cli debug-files upload --include-sources <path-to-build-output>
45
+ ```
46
+
47
+ Same command as every other native platform — to sentry-cli a PDB is just another
48
+ debug-file format.
49
+
50
+ ## Auth
51
+
52
+ Don’t inline the token in the project file.
53
+ `SentryAuthToken` exists as an MSBuild property but is discouraged for exactly that
54
+ reason.
55
+
56
+ - **Workstation:** `sentry-cli login` stores credentials in `~/.sentryclirc`.
57
+ - **CI:** set `SENTRY_AUTH_TOKEN` from the platform’s secret store.
58
+ - **Docker:** BuildKit’s `--secret`, so the token never persists into an image layer.
59
+
60
+ Details in [`../auth-token.md`](../auth-token.md).
61
+
62
+ ## Traps
63
+
64
+ | Symptom | Cause | Fix |
65
+ | --------------------------------------- | ------------------------------------------------------------------- | ---------------------------------------------------------------------------- |
66
+ | Method names present, no file/line | Symbols never uploaded — both properties default to `false` | Set `SentryUploadSymbols`; this is the default state, not a misconfiguration |
67
+ | File/line present, no surrounding code | `SentryUploadSources` off | Turn it on, then check a **new** event |
68
+ | Build log shows no upload and no error | `SentryOrg`/`SentryProject` unset, or `UseSentryCLI=false` | Supply both slugs — the upload is silent when it has nowhere to send |
69
+ | No `.pdb` in the build output to upload | `DebugType` is `none`, or `embedded` (which emits no separate file) | Confirm what the build actually produces before debugging the upload |
70
+ | Works locally, not on CI | `SENTRY_AUTH_TOKEN` missing from the CI environment | Add it as a CI secret |
@@ -0,0 +1,65 @@
1
+ # Debug files — Flutter / Dart
2
+
3
+ Unreadable Dart frames come from **obfuscation**, and the fix is to keep the artifacts
4
+ that undo it — the split debug info and the obfuscation map — then upload them with
5
+ `sentry_dart_plugin`. A Flutter app that also ships native code needs the platform debug
6
+ files too.
7
+
8
+ ## Step 1 — Build so the artifacts exist
9
+
10
+ Obfuscation and debug info are opt-in build flags, and the plugin can only upload what
11
+ the build wrote:
12
+
13
+ ```bash
14
+ # Android
15
+ flutter build apk \
16
+ --release \
17
+ --obfuscate \
18
+ --split-debug-info=build/debug-info \
19
+ --extra-gen-snapshot-options=--save-obfuscation-map=build/app/obfuscation.map.json
20
+ dart run sentry_dart_plugin
21
+
22
+ # iOS
23
+ flutter build ipa \
24
+ --release \
25
+ --obfuscate \
26
+ --split-debug-info=build/debug-info \
27
+ --extra-gen-snapshot-options=--save-obfuscation-map=build/app/obfuscation.map.json
28
+ dart run sentry_dart_plugin
29
+
30
+ # Web
31
+ flutter build web --release --source-maps
32
+ dart run sentry_dart_plugin
33
+ ```
34
+
35
+ If you are **not** obfuscating, Dart frames are generally readable already and this
36
+ whole path is unnecessary — confirm that before adding flags.
37
+
38
+ ## Step 2 — Configure and run `sentry_dart_plugin`
39
+
40
+ The plugin is configured from `pubspec.yaml` (a `sentry:` section carrying org, project,
41
+ and the upload toggles) and reads `SENTRY_AUTH_TOKEN` from the environment.
42
+ Consult the plugin’s own docs for the current key names before writing that block — they
43
+ differ across plugin majors, and a misspelled key is ignored rather than reported.
44
+
45
+ Run it **after** each build, as shown above.
46
+ That ordering is the whole contract: the build writes `build/debug-info` and the
47
+ obfuscation map, the plugin uploads them.
48
+
49
+ ## Native layers
50
+
51
+ Flutter apps with native code inherit the platform pipelines: `apple.md` for dSYM,
52
+ `android.md` for ProGuard/R8 and NDK symbols.
53
+ The Dart obfuscation map does not symbolicate a native crash, and native debug files do
54
+ not de-obfuscate Dart frames.
55
+
56
+ ## Traps
57
+
58
+ | Symptom | Cause | Fix |
59
+ | --------------------------------------------------- | --------------------------------------------------------------------------- | -------------------------------------------------- |
60
+ | Dart frames unreadable on release, fine in debug | Release build obfuscates | Build with the flags above and run the plugin |
61
+ | Plugin runs, uploads nothing | Build didn’t emit debug info — missing `--split-debug-info` / `--obfuscate` | Add the flags; re-run the plugin after the build |
62
+ | Uploads happen, frames unchanged | Plugin ran against a different build than the one shipped | Build and upload in the same CI job, in that order |
63
+ | Dart frames fixed, native crash still raw addresses | Native debug files not uploaded | Follow `apple.md` / `android.md` |
64
+ | Web frames minified | Built without `--source-maps` | Rebuild with it, re-run the plugin |
65
+ | Config edits have no effect | Key name wrong for the installed plugin version | Check the plugin docs for your version |
@@ -0,0 +1,75 @@
1
+ # Debug artifacts — making stack traces readable
2
+
3
+ Frames that read `chunk-4f2a.js:1:28471` or `0x00000001045a2f10` cost you the thing
4
+ Sentry is for.
5
+ Fixing them means uploading the artifact that maps compiled output back to
6
+ source. Two families:
7
+
8
+ - **Source maps** — JavaScript/TypeScript, minified or bundled by a build step.
9
+ - **Debug files** — native and mobile: dSYM (Apple), ProGuard/R8 mappings (Android),
10
+ `.so` symbols (NDK), Dart obfuscation maps (Flutter).
11
+
12
+ This group is read from three directions: while setting Sentry up for the first time (so
13
+ real-user traces are readable, not just the local test error), while adding
14
+ instrumentation, and when someone arrives with an unreadable trace already in hand.
15
+ Start here, route to the platform file.
16
+
17
+ ## First: which failure is it?
18
+
19
+ Three different problems look identical in a stack trace and have different fixes.
20
+ If an event already exists, read it before touching build config.
21
+
22
+ | What you see | What it means | Go to |
23
+ | ---------------------------------------------------------------------------------------------- | ------------------------------------------------------------ | --------------------------------------- |
24
+ | Minified/obfuscated frames, hex addresses, nothing uploaded for this build | No artifacts exist | the platform file below |
25
+ | Sentry found artifacts but frames stay unreadable; missing Debug ID or mismatched release/dist | Artifacts don’t match the event | [`matching.md`](matching.md) |
26
+ | Some frames readable, others not — often native frames inside an otherwise fine trace | A second artifact family is missing | the platform file for _that_ family |
27
+ | Readable file/line but no surrounding code shown | Source context wasn’t uploaded (separate from symbolication) | the platform file’s source-context note |
28
+ | Method names read fine, but no file names or line numbers | .NET without PDBs — a different failure from minification | [`dotnet.md`](dotnet.md) |
29
+
30
+ Two facts that change the answer, worth establishing early:
31
+
32
+ - **Was the event from a release build?** Dev builds are usually readable already —
33
+ don’t send someone after source maps for a local `next dev` trace.
34
+ - **Did the upload happen before the event?** Artifacts uploaded afterward do not
35
+ retroactively fix a stored event on their own — confirm any fix on a **new** event.
36
+ The one exception is native/Apple events, which can be
37
+ [reprocessed](https://docs.sentry.io/product/issues/reprocessing/) to apply debug
38
+ files after the fact.
39
+ Source maps have no equivalent.
40
+
41
+ ## Platform routing
42
+
43
+ | Platform | Family | Read |
44
+ | ------------------------------------------------------------------------------------- | -------------------------------------------------------- | ------------------------------------ |
45
+ | Browser, Node, Next.js, React, Svelte, Nest, Cloudflare, TanStack Start, React Router | Source maps | [`javascript.md`](javascript.md) |
46
+ | Apple — iOS, macOS, tvOS, watchOS, visionOS | dSYM | [`apple.md`](apple.md) |
47
+ | Android — Kotlin/Java, NDK | ProGuard/R8 mapping, `.so` symbols | [`android.md`](android.md) |
48
+ | React Native / Expo | **Both** — JS source maps _and_ native debug files | [`react-native.md`](react-native.md) |
49
+ | Flutter / Dart | Obfuscation map + native debug files (+ web source maps) | [`flutter.md`](flutter.md) |
50
+ | .NET — ASP.NET Core, MAUI, WPF, WinForms, Azure Functions | Portable PDB | [`dotnet.md`](dotnet.md) |
51
+ | Python, Ruby, PHP, Go, Elixir | Usually none — frames come from readable source | see below |
52
+
53
+ Every path needs an auth token: [`../auth-token.md`](../auth-token.md).
54
+ It is the single most common reason a correct-looking setup uploads nothing.
55
+
56
+ For the last row, unreadable frames are rarely an artifact problem.
57
+ Check that the deployed code matches what you’re reading, that the app isn’t running
58
+ from a stripped or packed build (PyInstaller, Go built with `-ldflags "-s -w"`), and
59
+ that source context is enabled.
60
+ Don’t invent a source-map step for a language that doesn’t have one.
61
+
62
+ ## Where the build-tool config lives
63
+
64
+ The bundler-plugin options, the Gradle `sentry {}` block, and the wizard invocations are
65
+ documented per platform in that platform’s `sdks/<slug>/index.md`, as ordinary SDK
66
+ configuration. Use it for the config; use this group for what it doesn’t cover — the
67
+ token, artifact matching, native upload mechanics, and CI placement.
68
+
69
+ ## Confirming a fix
70
+
71
+ Symbolication is proven only by a **new** event from a build that had upload wired in:
72
+ build and deploy, trigger a fresh error, then check the frames.
73
+ Re-reading the old event will show it still minified, which is correct and not a failure
74
+ of the fix — reprocessing, where it’s available, is a separate step you have to ask for.
75
+ The loop is in [`setup-verification.md`](../setup-verification.md).
@@ -0,0 +1,94 @@
1
+ # Source maps — JavaScript / TypeScript
2
+
3
+ Applies to browser, Node, and every JS framework SDK. The per-framework plugin config
4
+ lives in that platform’s `sdks/<slug>/index.md`; this file covers what the build has to
5
+ produce, the CI-friendly fallback, and the traps.
6
+
7
+ ## Two things must both be true
8
+
9
+ 1. **The build emits source maps.** No maps, nothing to upload.
10
+ Bundlers disable them in production by default.
11
+ 2. **The maps reach Sentry, tied to the built files.** Modern SDKs do this with **Debug
12
+ IDs** — a unique id injected into both the minified file and its map, so matching
13
+ doesn’t depend on release names, paths, or URLs.
14
+
15
+ Emitting maps is a per-bundler setting (`build.sourcemap` in Vite, `devtool` in webpack,
16
+ `productionBrowserSourceMaps` / framework plugin defaults in Next.js).
17
+ Prefer **hidden** maps for browser builds — generated and uploaded, but without the
18
+ `//# sourceMappingURL` comment that points browsers at them:
19
+
20
+ ```typescript
21
+ // vite.config.ts
22
+ export default defineConfig({
23
+ build: { sourcemap: "hidden" },
24
+ });
25
+ ```
26
+
27
+ ## Path A — the bundler plugin (preferred)
28
+
29
+ `@sentry/vite-plugin`, `@sentry/webpack-plugin`, `@sentry/rollup-plugin`,
30
+ `@sentry/esbuild-plugin`, or the framework wrapper that embeds one (`withSentryConfig`
31
+ for Next.js, the SvelteKit and Nuxt plugins).
32
+ The plugin injects Debug IDs, uploads on production builds, and can delete the maps
33
+ afterward so they don’t ship to users.
34
+ Read the platform’s `index.md` for the exact snippet; all of them take the same three
35
+ values from the environment — `SENTRY_ORG`, `SENTRY_PROJECT`, `SENTRY_AUTH_TOKEN`.
36
+
37
+ Two options worth setting deliberately:
38
+
39
+ - **Delete maps after upload** — keeps `.map` files out of the deployed bundle while
40
+ still uploading them.
41
+ Do this for public web apps.
42
+ - **Widen the upload** (Next.js `widenClientFileUpload: true`) — uploads more client
43
+ files, which fixes frames that otherwise land in framework-internal chunks.
44
+
45
+ ## Path B — `sentry-cli` (CI, custom builds, plain Node)
46
+
47
+ When there’s no supported bundler or the build is bespoke.
48
+ Two steps, in order — inject first, then upload:
49
+
50
+ ```bash
51
+ sentry-cli sourcemaps inject ./dist
52
+ sentry-cli sourcemaps upload ./dist
53
+ ```
54
+
55
+ `inject` writes the Debug IDs; `upload` sends the files.
56
+ Running `upload` alone still works but falls back to legacy release/path matching, which
57
+ is far more fragile.
58
+ Wire both into the build script so they can’t drift apart:
59
+
60
+ ```json
61
+ {
62
+ "scripts": {
63
+ "build": "tsc && sentry-cli sourcemaps inject ./dist && sentry-cli sourcemaps upload ./dist"
64
+ }
65
+ }
66
+ ```
67
+
68
+ ## Path C — the wizard
69
+
70
+ ```
71
+ npx @sentry/wizard@latest -i sourcemaps
72
+ ```
73
+
74
+ Detects the bundler, installs the right plugin, and sets up the token.
75
+ It is interactive (browser login), so the **user** runs it, not the agent.
76
+ Note it configures upload only — it does not initialize the SDK.
77
+
78
+ ## Node specifics
79
+
80
+ Server-side frames need the maps for the _compiled output that runs_ (`./dist`,
81
+ `.next/server`), not the TypeScript sources.
82
+ If you run TypeScript directly (`tsx`, `ts-node`, Bun), frames are usually already
83
+ readable and no upload is needed — confirm that before adding a build step nobody needs.
84
+
85
+ ## Traps
86
+
87
+ | Symptom | Cause | Fix |
88
+ | ----------------------------------- | ---------------------------------------------------------------------- | ------------------------------------------------------------ |
89
+ | Nothing uploaded, build green | Maps not emitted, or token unset | Enable `sourcemap` in the bundler; see `../auth-token.md` |
90
+ | Uploaded, frames still minified | Upload ran without `inject`, so no Debug IDs | Add `sourcemaps inject` before `upload` |
91
+ | Only _some_ frames readable | Partial upload — a chunk or the framework’s own bundle wasn’t included | Widen the upload path / `widenClientFileUpload` |
92
+ | Was fine, broke after a deploy | Upload happens after deploy, or a build cache reused stale maps | Move upload into the build, before deploy |
93
+ | `.map` files served to users | Maps emitted with `sourceMappingURL` and not deleted | Use `hidden` maps + delete-after-upload |
94
+ | Frames readable but no code context | Only maps uploaded; source content missing from them | Ensure the bundler embeds `sourcesContent` (usually default) |