@danieljvdm/dev-kit 1.0.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (330) hide show
  1. package/README.md +6 -6
  2. package/package.json +1 -1
  3. package/skill-sources.jsonc +6 -29
  4. package/skill-sources.lock.json +23 -109
  5. package/skills/animate/LICENSE +21 -0
  6. package/skills/animate/NOTICE +10 -0
  7. package/skills/animate/SKILL.md +34 -0
  8. package/skills/animate/references/gestures.md +27 -0
  9. package/skills/animate/references/glossary.md +136 -0
  10. package/skills/animate/references/implementation.md +22 -0
  11. package/skills/animate/references/opportunities.md +18 -0
  12. package/skills/animate/references/principles.md +48 -0
  13. package/skills/animate/references/review.md +19 -0
  14. package/skills/cloudflare-workers/LICENSE +202 -0
  15. package/skills/cloudflare-workers/NOTICE +9 -0
  16. package/skills/cloudflare-workers/SKILL.md +26 -0
  17. package/skills/cloudflare-workers/references/durable-objects.md +68 -0
  18. package/skills/cloudflare-workers/references/sandbox.md +48 -0
  19. package/skills/cloudflare-workers/references/workers.md +63 -0
  20. package/skills/cloudflare-workers/references/wrangler.md +56 -0
  21. package/skills/design-ui/LICENSE +21 -0
  22. package/skills/design-ui/NOTICE +8 -0
  23. package/skills/design-ui/SKILL.md +29 -0
  24. package/skills/design-ui/references/appearance.md +22 -0
  25. package/skills/design-ui/references/components.md +33 -0
  26. package/skills/design-ui/references/exploration.md +50 -0
  27. package/skills/design-ui/references/libraries.md +39 -0
  28. package/skills/design-ui/references/themes.md +23 -0
  29. package/skills/dev-kit/SKILL.md +19 -38
  30. package/skills/dev-kit/references/cloudflare-worker-api.md +1 -1
  31. package/skills/dev-kit/references/skills.md +2 -2
  32. package/skills/effect-development/SKILL.md +27 -0
  33. package/skills/effect-development/agents/openai.yaml +4 -0
  34. package/skills/effect-development/references/api/index.md +32 -0
  35. package/skills/effect-development/references/api/schema-codecs.md +15 -0
  36. package/skills/{build-effect-apis/references → effect-development/references/api}/verification.md +10 -5
  37. package/skills/{effect-architecture-audit/SKILL.md → effect-development/references/architecture/index.md} +1 -6
  38. package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-client.md +8 -6
  39. package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-testing.md +7 -2
  40. package/skills/effect-development/references/atom/index.md +40 -0
  41. package/skills/{build-effect-clis/references → effect-development/references/cli}/entrypoints-and-testing.md +6 -2
  42. package/skills/effect-development/references/cli/index.md +39 -0
  43. package/skills/effect-development/references/setup.md +15 -0
  44. package/skills/open-pull-request/SKILL.md +11 -115
  45. package/skills/open-pull-request/agents/openai.yaml +3 -3
  46. package/skills/open-pull-request/references/evidence.md +22 -0
  47. package/skills/open-pull-request/references/explanation.md +21 -0
  48. package/skills/open-pull-request/references/publication.md +21 -0
  49. package/skills/sentry/LICENSE +202 -0
  50. package/skills/sentry/LICENSE-UPSTREAM +21 -0
  51. package/skills/sentry/NOTICE +14 -0
  52. package/skills/sentry/SKILL.md +33 -0
  53. package/skills/sentry/references/alert-payloads.md +105 -0
  54. package/skills/sentry/references/alerts.md +17 -0
  55. package/skills/sentry/references/artifacts.md +25 -0
  56. package/skills/sentry/references/auth-token.md +65 -0
  57. package/skills/sentry/references/concepts/ai-monitoring.md +131 -0
  58. package/skills/sentry/references/concepts/choosing-a-signal.md +78 -0
  59. package/skills/sentry/references/concepts/crons.md +50 -0
  60. package/skills/sentry/references/concepts/data-scrubbing.md +43 -0
  61. package/skills/sentry/references/concepts/errors.md +40 -0
  62. package/skills/sentry/references/concepts/logging.md +85 -0
  63. package/skills/sentry/references/concepts/metrics.md +49 -0
  64. package/skills/sentry/references/concepts/monitors.md +78 -0
  65. package/skills/sentry/references/concepts/profiling.md +38 -0
  66. package/skills/sentry/references/concepts/reduce-volume.md +49 -0
  67. package/skills/sentry/references/concepts/releases.md +43 -0
  68. package/skills/sentry/references/concepts/session-replay.md +35 -0
  69. package/skills/sentry/references/concepts/tracing.md +54 -0
  70. package/skills/sentry/references/concepts/user-feedback.md +36 -0
  71. package/skills/sentry/references/debug-artifacts/android.md +68 -0
  72. package/skills/sentry/references/debug-artifacts/apple.md +96 -0
  73. package/skills/sentry/references/debug-artifacts/dotnet.md +70 -0
  74. package/skills/sentry/references/debug-artifacts/flutter.md +65 -0
  75. package/skills/sentry/references/debug-artifacts/index.md +75 -0
  76. package/skills/sentry/references/debug-artifacts/javascript.md +94 -0
  77. package/skills/sentry/references/debug-artifacts/matching.md +73 -0
  78. package/skills/sentry/references/debug-artifacts/react-native.md +75 -0
  79. package/skills/sentry/references/first-error-setup.md +25 -0
  80. package/skills/sentry/references/instrumentation.md +30 -0
  81. package/skills/sentry/references/issues.md +32 -0
  82. package/skills/sentry/references/new-project.md +17 -0
  83. package/skills/sentry/references/otel-exporter.md +30 -0
  84. package/skills/sentry/references/release-workflow.md +31 -0
  85. package/skills/sentry/references/releases/ci-pipeline.md +214 -0
  86. package/skills/sentry/references/releases/index.md +93 -0
  87. package/skills/sentry/references/releases/suspect-commits.md +155 -0
  88. package/skills/sentry/references/releases/tagging.md +131 -0
  89. package/skills/sentry/references/releases/troubleshooting.md +67 -0
  90. package/skills/sentry/references/sdks/android/crons.md +305 -0
  91. package/skills/sentry/references/sdks/android/error-monitoring.md +800 -0
  92. package/skills/sentry/references/sdks/android/index.md +748 -0
  93. package/skills/sentry/references/sdks/android/integrations.md +48 -0
  94. package/skills/sentry/references/sdks/android/logging.md +374 -0
  95. package/skills/sentry/references/sdks/android/metrics.md +288 -0
  96. package/skills/sentry/references/sdks/android/profiling.md +397 -0
  97. package/skills/sentry/references/sdks/android/session-replay.md +406 -0
  98. package/skills/sentry/references/sdks/android/tracing.md +861 -0
  99. package/skills/sentry/references/sdks/browser/error-monitoring.md +861 -0
  100. package/skills/sentry/references/sdks/browser/index.md +714 -0
  101. package/skills/sentry/references/sdks/browser/logging.md +315 -0
  102. package/skills/sentry/references/sdks/browser/profiling.md +236 -0
  103. package/skills/sentry/references/sdks/browser/session-replay.md +586 -0
  104. package/skills/sentry/references/sdks/browser/tracing.md +561 -0
  105. package/skills/sentry/references/sdks/browser/user-feedback.md +354 -0
  106. package/skills/sentry/references/sdks/cloudflare/ai-monitoring.md +661 -0
  107. package/skills/sentry/references/sdks/cloudflare/crons.md +231 -0
  108. package/skills/sentry/references/sdks/cloudflare/durable-objects.md +381 -0
  109. package/skills/sentry/references/sdks/cloudflare/error-monitoring.md +329 -0
  110. package/skills/sentry/references/sdks/cloudflare/index.md +698 -0
  111. package/skills/sentry/references/sdks/cloudflare/logging.md +169 -0
  112. package/skills/sentry/references/sdks/cloudflare/nodejs-compat.md +134 -0
  113. package/skills/sentry/references/sdks/cloudflare/tracing.md +475 -0
  114. package/skills/sentry/references/sdks/cocoa/error-monitoring.md +394 -0
  115. package/skills/sentry/references/sdks/cocoa/index.md +497 -0
  116. package/skills/sentry/references/sdks/cocoa/logging.md +209 -0
  117. package/skills/sentry/references/sdks/cocoa/metrics.md +136 -0
  118. package/skills/sentry/references/sdks/cocoa/profiling.md +223 -0
  119. package/skills/sentry/references/sdks/cocoa/session-replay.md +257 -0
  120. package/skills/sentry/references/sdks/cocoa/tracing.md +524 -0
  121. package/skills/sentry/references/sdks/cocoa/user-feedback.md +310 -0
  122. package/skills/sentry/references/sdks/dotnet/crons.md +465 -0
  123. package/skills/sentry/references/sdks/dotnet/error-monitoring.md +1100 -0
  124. package/skills/sentry/references/sdks/dotnet/index.md +614 -0
  125. package/skills/sentry/references/sdks/dotnet/logging.md +556 -0
  126. package/skills/sentry/references/sdks/dotnet/metrics.md +229 -0
  127. package/skills/sentry/references/sdks/dotnet/profiling.md +296 -0
  128. package/skills/sentry/references/sdks/dotnet/tracing.md +897 -0
  129. package/skills/sentry/references/sdks/elixir/crons.md +371 -0
  130. package/skills/sentry/references/sdks/elixir/error-monitoring.md +335 -0
  131. package/skills/sentry/references/sdks/elixir/index.md +383 -0
  132. package/skills/sentry/references/sdks/elixir/logging.md +239 -0
  133. package/skills/sentry/references/sdks/elixir/tracing.md +233 -0
  134. package/skills/sentry/references/sdks/flutter/ecosystem-integrations.md +70 -0
  135. package/skills/sentry/references/sdks/flutter/error-monitoring.md +312 -0
  136. package/skills/sentry/references/sdks/flutter/index.md +728 -0
  137. package/skills/sentry/references/sdks/flutter/logging.md +387 -0
  138. package/skills/sentry/references/sdks/flutter/metrics.md +310 -0
  139. package/skills/sentry/references/sdks/flutter/profiling.md +214 -0
  140. package/skills/sentry/references/sdks/flutter/session-replay.md +308 -0
  141. package/skills/sentry/references/sdks/flutter/tracing.md +502 -0
  142. package/skills/sentry/references/sdks/go/crons.md +270 -0
  143. package/skills/sentry/references/sdks/go/error-monitoring.md +361 -0
  144. package/skills/sentry/references/sdks/go/index.md +324 -0
  145. package/skills/sentry/references/sdks/go/logging.md +354 -0
  146. package/skills/sentry/references/sdks/go/metrics.md +273 -0
  147. package/skills/sentry/references/sdks/go/profiling.md +46 -0
  148. package/skills/sentry/references/sdks/go/tracing.md +366 -0
  149. package/skills/sentry/references/sdks/index.md +41 -0
  150. package/skills/sentry/references/sdks/nestjs/ai-monitoring.md +410 -0
  151. package/skills/sentry/references/sdks/nestjs/crons.md +268 -0
  152. package/skills/sentry/references/sdks/nestjs/error-monitoring.md +729 -0
  153. package/skills/sentry/references/sdks/nestjs/index.md +699 -0
  154. package/skills/sentry/references/sdks/nestjs/logging.md +174 -0
  155. package/skills/sentry/references/sdks/nestjs/metrics.md +243 -0
  156. package/skills/sentry/references/sdks/nestjs/profiling.md +127 -0
  157. package/skills/sentry/references/sdks/nestjs/tracing.md +762 -0
  158. package/skills/sentry/references/sdks/nextjs/ai-monitoring.md +494 -0
  159. package/skills/sentry/references/sdks/nextjs/crons.md +383 -0
  160. package/skills/sentry/references/sdks/nextjs/error-monitoring.md +974 -0
  161. package/skills/sentry/references/sdks/nextjs/index.md +491 -0
  162. package/skills/sentry/references/sdks/nextjs/logging.md +381 -0
  163. package/skills/sentry/references/sdks/nextjs/metrics.md +411 -0
  164. package/skills/sentry/references/sdks/nextjs/profiling.md +403 -0
  165. package/skills/sentry/references/sdks/nextjs/session-replay.md +462 -0
  166. package/skills/sentry/references/sdks/nextjs/tracing.md +628 -0
  167. package/skills/sentry/references/sdks/node/ai-monitoring.md +303 -0
  168. package/skills/sentry/references/sdks/node/crons.md +432 -0
  169. package/skills/sentry/references/sdks/node/error-monitoring.md +1125 -0
  170. package/skills/sentry/references/sdks/node/index.md +942 -0
  171. package/skills/sentry/references/sdks/node/logging.md +380 -0
  172. package/skills/sentry/references/sdks/node/metrics.md +278 -0
  173. package/skills/sentry/references/sdks/node/profiling.md +373 -0
  174. package/skills/sentry/references/sdks/node/tracing.md +878 -0
  175. package/skills/sentry/references/sdks/php/ai-monitoring.md +310 -0
  176. package/skills/sentry/references/sdks/php/crons.md +265 -0
  177. package/skills/sentry/references/sdks/php/error-monitoring.md +626 -0
  178. package/skills/sentry/references/sdks/php/index.md +362 -0
  179. package/skills/sentry/references/sdks/php/laravel.md +542 -0
  180. package/skills/sentry/references/sdks/php/logging.md +242 -0
  181. package/skills/sentry/references/sdks/php/metrics.md +193 -0
  182. package/skills/sentry/references/sdks/php/profiling.md +115 -0
  183. package/skills/sentry/references/sdks/php/symfony.md +552 -0
  184. package/skills/sentry/references/sdks/php/tracing.md +516 -0
  185. package/skills/sentry/references/sdks/python/ai-monitoring.md +351 -0
  186. package/skills/sentry/references/sdks/python/crons.md +218 -0
  187. package/skills/sentry/references/sdks/python/error-monitoring.md +292 -0
  188. package/skills/sentry/references/sdks/python/index.md +361 -0
  189. package/skills/sentry/references/sdks/python/logging.md +234 -0
  190. package/skills/sentry/references/sdks/python/metrics.md +154 -0
  191. package/skills/sentry/references/sdks/python/profiling.md +120 -0
  192. package/skills/sentry/references/sdks/python/tracing.md +364 -0
  193. package/skills/sentry/references/sdks/react/error-monitoring.md +1607 -0
  194. package/skills/sentry/references/sdks/react/index.md +492 -0
  195. package/skills/sentry/references/sdks/react/logging.md +364 -0
  196. package/skills/sentry/references/sdks/react/profiling.md +322 -0
  197. package/skills/sentry/references/sdks/react/react-features.md +1272 -0
  198. package/skills/sentry/references/sdks/react/session-replay.md +1193 -0
  199. package/skills/sentry/references/sdks/react/tracing.md +1415 -0
  200. package/skills/sentry/references/sdks/react-native/error-monitoring.md +1481 -0
  201. package/skills/sentry/references/sdks/react-native/expo-config-plugin.md +45 -0
  202. package/skills/sentry/references/sdks/react-native/index.md +1030 -0
  203. package/skills/sentry/references/sdks/react-native/logging.md +444 -0
  204. package/skills/sentry/references/sdks/react-native/profiling.md +386 -0
  205. package/skills/sentry/references/sdks/react-native/session-replay.md +704 -0
  206. package/skills/sentry/references/sdks/react-native/tracing.md +1086 -0
  207. package/skills/sentry/references/sdks/react-native/user-feedback.md +815 -0
  208. package/skills/sentry/references/sdks/react-router-framework/error-monitoring.md +127 -0
  209. package/skills/sentry/references/sdks/react-router-framework/index.md +411 -0
  210. package/skills/sentry/references/sdks/react-router-framework/logging.md +66 -0
  211. package/skills/sentry/references/sdks/react-router-framework/profiling.md +57 -0
  212. package/skills/sentry/references/sdks/react-router-framework/react-router-framework-features.md +110 -0
  213. package/skills/sentry/references/sdks/react-router-framework/session-replay.md +67 -0
  214. package/skills/sentry/references/sdks/react-router-framework/tracing.md +96 -0
  215. package/skills/sentry/references/sdks/react-router-framework/user-feedback.md +71 -0
  216. package/skills/sentry/references/sdks/ruby/crons.md +184 -0
  217. package/skills/sentry/references/sdks/ruby/error-monitoring.md +248 -0
  218. package/skills/sentry/references/sdks/ruby/index.md +297 -0
  219. package/skills/sentry/references/sdks/ruby/logging.md +168 -0
  220. package/skills/sentry/references/sdks/ruby/metrics.md +196 -0
  221. package/skills/sentry/references/sdks/ruby/migration.md +321 -0
  222. package/skills/sentry/references/sdks/ruby/profiling.md +107 -0
  223. package/skills/sentry/references/sdks/ruby/tracing.md +388 -0
  224. package/skills/sentry/references/sdks/svelte/error-monitoring.md +456 -0
  225. package/skills/sentry/references/sdks/svelte/index.md +467 -0
  226. package/skills/sentry/references/sdks/svelte/logging.md +344 -0
  227. package/skills/sentry/references/sdks/svelte/session-replay.md +369 -0
  228. package/skills/sentry/references/sdks/svelte/tracing.md +406 -0
  229. package/skills/sentry/references/sdks/tanstack-start/error-monitoring.md +149 -0
  230. package/skills/sentry/references/sdks/tanstack-start/index.md +381 -0
  231. package/skills/sentry/references/sdks/tanstack-start/logging.md +74 -0
  232. package/skills/sentry/references/sdks/tanstack-start/session-replay.md +76 -0
  233. package/skills/sentry/references/sdks/tanstack-start/tanstackstart-features.md +128 -0
  234. package/skills/sentry/references/sdks/tanstack-start/tracing.md +123 -0
  235. package/skills/sentry/references/sdks/tanstack-start/user-feedback.md +81 -0
  236. package/skills/sentry/references/search-query-language.md +226 -0
  237. package/skills/sentry/references/semantics/angular.md +7 -0
  238. package/skills/sentry/references/semantics/app.md +28 -0
  239. package/skills/sentry/references/semantics/art.md +17 -0
  240. package/skills/sentry/references/semantics/aws.md +43 -0
  241. package/skills/sentry/references/semantics/browser.md +34 -0
  242. package/skills/sentry/references/semantics/cache.md +12 -0
  243. package/skills/sentry/references/semantics/client.md +8 -0
  244. package/skills/sentry/references/semantics/cloud.md +12 -0
  245. package/skills/sentry/references/semantics/cloudflare.md +23 -0
  246. package/skills/sentry/references/semantics/code.md +11 -0
  247. package/skills/sentry/references/semantics/culture.md +11 -0
  248. package/skills/sentry/references/semantics/db.md +21 -0
  249. package/skills/sentry/references/semantics/device.md +43 -0
  250. package/skills/sentry/references/semantics/error.md +7 -0
  251. package/skills/sentry/references/semantics/event.md +8 -0
  252. package/skills/sentry/references/semantics/exception.md +10 -0
  253. package/skills/sentry/references/semantics/faas.md +19 -0
  254. package/skills/sentry/references/semantics/file.md +8 -0
  255. package/skills/sentry/references/semantics/flag.md +7 -0
  256. package/skills/sentry/references/semantics/gcp.md +16 -0
  257. package/skills/sentry/references/semantics/gen_ai.md +53 -0
  258. package/skills/sentry/references/semantics/general.md +11 -0
  259. package/skills/sentry/references/semantics/graphql.md +9 -0
  260. package/skills/sentry/references/semantics/grpc.md +19 -0
  261. package/skills/sentry/references/semantics/http.md +34 -0
  262. package/skills/sentry/references/semantics/index.md +63 -0
  263. package/skills/sentry/references/semantics/jsonrpc.md +8 -0
  264. package/skills/sentry/references/semantics/jvm.md +12 -0
  265. package/skills/sentry/references/semantics/koa.md +7 -0
  266. package/skills/sentry/references/semantics/logger.md +7 -0
  267. package/skills/sentry/references/semantics/mcp.md +37 -0
  268. package/skills/sentry/references/semantics/mdc.md +7 -0
  269. package/skills/sentry/references/semantics/messaging.md +23 -0
  270. package/skills/sentry/references/semantics/middleware.md +7 -0
  271. package/skills/sentry/references/semantics/navigation.md +9 -0
  272. package/skills/sentry/references/semantics/nel.md +11 -0
  273. package/skills/sentry/references/semantics/network.md +17 -0
  274. package/skills/sentry/references/semantics/os.md +15 -0
  275. package/skills/sentry/references/semantics/otel.md +10 -0
  276. package/skills/sentry/references/semantics/params.md +7 -0
  277. package/skills/sentry/references/semantics/process.md +14 -0
  278. package/skills/sentry/references/semantics/react.md +7 -0
  279. package/skills/sentry/references/semantics/remix.md +7 -0
  280. package/skills/sentry/references/semantics/resource.md +7 -0
  281. package/skills/sentry/references/semantics/rpc.md +10 -0
  282. package/skills/sentry/references/semantics/score.md +10 -0
  283. package/skills/sentry/references/semantics/sentry.md +69 -0
  284. package/skills/sentry/references/semantics/server.md +8 -0
  285. package/skills/sentry/references/semantics/service.md +8 -0
  286. package/skills/sentry/references/semantics/session.md +7 -0
  287. package/skills/sentry/references/semantics/state.md +7 -0
  288. package/skills/sentry/references/semantics/thread.md +8 -0
  289. package/skills/sentry/references/semantics/timber.md +7 -0
  290. package/skills/sentry/references/semantics/trpc.md +8 -0
  291. package/skills/sentry/references/semantics/ui.md +18 -0
  292. package/skills/sentry/references/semantics/url.md +15 -0
  293. package/skills/sentry/references/semantics/user.md +17 -0
  294. package/skills/sentry/references/semantics/user_agent.md +7 -0
  295. package/skills/sentry/references/semantics/vercel.md +42 -0
  296. package/skills/sentry/references/setup-verification.md +39 -0
  297. package/skills/sentry/references/snapshots/github-actions-fanout.md +206 -0
  298. package/skills/sentry/references/snapshots/github-actions-simple.md +102 -0
  299. package/skills/sentry/references/snapshots/github-actions-swift-snapshot-testing.md +118 -0
  300. package/skills/sentry/references/snapshots/index.md +19 -0
  301. package/skills/sentry/references/snapshots/snapshot-previews.md +100 -0
  302. package/skills/sentry/references/snapshots/snapshots.md +123 -0
  303. package/skills/sentry/references/snapshots/wizard-setup.md +134 -0
  304. package/skills/testing/LICENSE +21 -0
  305. package/skills/testing/NOTICE +7 -0
  306. package/skills/testing/SKILL.md +13 -19
  307. package/skills/testing/agents/openai.yaml +1 -2
  308. package/skills/testing/references/selection.md +23 -0
  309. package/skills/testing/references/tdd.md +19 -0
  310. package/skills/testing/references/test-design.md +17 -0
  311. package/src/catalog.ts +1 -7
  312. package/skills/build-effect-apis/SKILL.md +0 -81
  313. package/skills/build-effect-apis/agents/openai.yaml +0 -4
  314. package/skills/build-effect-clis/SKILL.md +0 -92
  315. package/skills/build-effect-clis/agents/openai.yaml +0 -4
  316. package/skills/effect-architecture-audit/agents/openai.yaml +0 -4
  317. package/skills/effect-atom-state/SKILL.md +0 -97
  318. package/skills/effect-atom-state/agents/openai.yaml +0 -4
  319. package/skills/effect-ts/SKILL.md +0 -35
  320. package/skills/effect-ts/agents/openai.yaml +0 -4
  321. /package/skills/{build-effect-apis/references → effect-development/references/api}/cloudflare-workers.md +0 -0
  322. /package/skills/{build-effect-apis/references → effect-development/references/api}/runtime-assembly.md +0 -0
  323. /package/skills/{build-effect-apis/references → effect-development/references/api}/server-and-middleware.md +0 -0
  324. /package/skills/{build-effect-apis/references → effect-development/references/api}/shared-contracts.md +0 -0
  325. /package/skills/{effect-architecture-audit/references → effect-development/references/architecture}/service-and-boundary-audit.md +0 -0
  326. /package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-lifecycle.md +0 -0
  327. /package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-workflows.md +0 -0
  328. /package/skills/{effect-atom-state/references → effect-development/references/atom}/tanstack-start.md +0 -0
  329. /package/skills/{build-effect-clis/references → effect-development/references/cli}/command-design.md +0 -0
  330. /package/skills/{build-effect-clis/references → effect-development/references/cli}/processes-and-platform.md +0 -0
@@ -0,0 +1,614 @@
1
+ # Sentry .NET SDK
2
+
3
+ Opinionated wizard that scans your .NET project and guides you through complete Sentry
4
+ setup: error monitoring, distributed tracing, profiling, structured logging, and cron
5
+ monitoring across all major .NET frameworks.
6
+
7
+ > **Note:** SDK version and APIs below reflect `Sentry` NuGet packages ≥6.1.0 (OTLP
8
+ > export requires ≥6.5.0). Always verify against
9
+ > [docs.sentry.io/platforms/dotnet/](https://docs.sentry.io/platforms/dotnet/) before
10
+ > implementing.
11
+
12
+ ---
13
+
14
+ ## Phase 1: Detect
15
+
16
+ Run these commands to understand the project before making any recommendations:
17
+
18
+ ```bash
19
+ # Detect framework type — find all .csproj files
20
+ find . -name "*.csproj" | head -20
21
+
22
+ # Detect framework targets
23
+ grep -r "TargetFramework\|Project Sdk" --include="*.csproj" .
24
+
25
+ # Check for existing Sentry packages
26
+ grep -r "Sentry" --include="*.csproj" . | grep "PackageReference"
27
+
28
+ # Check startup files
29
+ ls Program.cs src/Program.cs App.xaml.cs MauiProgram.cs 2>/dev/null
30
+
31
+ # Check for appsettings
32
+ ls appsettings.json src/appsettings.json 2>/dev/null
33
+
34
+ # Check for logging libraries
35
+ grep -r "Serilog\|NLog\|log4net" --include="*.csproj" .
36
+
37
+ # Check for companion frontend
38
+ ls ../frontend ../client ../web 2>/dev/null
39
+ cat ../package.json 2>/dev/null | grep -E '"next"|"react"|"vue"' | head -3
40
+ ```
41
+
42
+ **What to determine:**
43
+
44
+ | Question | Impact |
45
+ | ----------------------------------------- | ----------------------------------------------------------- |
46
+ | Framework type? | Determines correct package and init pattern |
47
+ | .NET version? | .NET 8+ recommended; .NET Framework 4.6.2+ supported |
48
+ | Sentry already installed? | Skip install, go to feature config |
49
+ | Logging library (Serilog, NLog, log4net)? | Recommend matching Sentry sink/target |
50
+ | Async/hosted app (ASP.NET Core)? | `UseSentry()` on `WebHost`; no `IsGlobalModeEnabled` needed |
51
+ | Desktop app (WPF, WinForms, WinUI)? | Must set `IsGlobalModeEnabled = true` |
52
+ | Serverless (Azure Functions, Lambda)? | Must set `FlushOnCompletedRequest = true` |
53
+ | Frontend directory found? | Trigger Phase 4 cross-link |
54
+
55
+ **Framework → Package mapping:**
56
+
57
+ | Detected | Package to install |
58
+ | -------------------------------------------------------------------- | ------------------------------------------------------------- |
59
+ | `Sdk="Microsoft.NET.Sdk.Web"` (ASP.NET Core) | `Sentry.AspNetCore` |
60
+ | `App.xaml.cs` with `Application` base | `Sentry` (WPF) |
61
+ | `[STAThread]` in `Program.cs` | `Sentry` (WinForms) |
62
+ | `MauiProgram.cs` | `Sentry.Maui` |
63
+ | `WebAssemblyHostBuilder` | `Sentry.AspNetCore.Blazor.WebAssembly` |
64
+ | Azure Functions isolated worker (`ConfigureFunctionsWorkerDefaults`) | `Sentry.Extensions.Logging` + `Sentry.OpenTelemetry.Exporter` |
65
+ | `HttpApplication` / `Global.asax` | `Sentry.AspNet` (+ `Sentry.EntityFramework` if using EF6) |
66
+ | Generic host / Worker Service | `Sentry.Extensions.Logging` |
67
+
68
+ ---
69
+
70
+ ## Phase 2: Recommend
71
+
72
+ Present a concrete recommendation based on what you found.
73
+ Lead with a proposal — don’t ask open-ended questions.
74
+
75
+ **Recommended (core coverage):**
76
+
77
+ - ✅ **Error Monitoring** — always; captures unhandled exceptions, structured captures,
78
+ scope enrichment
79
+ - ✅ **Tracing** — always for ASP.NET Core and hosted apps; auto-instruments HTTP
80
+ requests and EF Core queries
81
+ - ✅ **Logging** — recommended for all apps; routes ILogger / Serilog / NLog entries to
82
+ Sentry as breadcrumbs and events
83
+
84
+ **Optional (enhanced observability):**
85
+
86
+ - ⚡ **Profiling** — CPU profiling; recommend for performance-critical services running
87
+ on .NET 6+
88
+ - ⚡ **Metrics** — counters, gauges, distributions linked to traces; recommend for apps
89
+ that need custom business metrics
90
+ - ⚡ **Crons** — detect missed/failed scheduled jobs; recommend when Hangfire,
91
+ Quartz.NET, or scheduled endpoints detected
92
+
93
+ **Recommendation logic:**
94
+
95
+ | Feature | Recommend when … |
96
+ | ---------------- | -------------------------------------------------------------------------------------------- |
97
+ | Error Monitoring | **Always** — non-negotiable baseline |
98
+ | Tracing | **Always for ASP.NET Core** — request traces, EF Core spans, HttpClient spans are high-value |
99
+ | Logging | App uses `ILogger<T>`, Serilog, NLog, or log4net |
100
+ | Profiling | Performance-critical service on .NET 6+ |
101
+ | Metrics | App needs custom business metrics (request counts, queue depths, response times) |
102
+ | Crons | App uses Hangfire, Quartz.NET, or scheduled Azure Functions |
103
+
104
+ Propose: _“I recommend setting up Error Monitoring + Tracing + Logging.
105
+ Want me to also add Profiling or Crons?”_
106
+
107
+ ---
108
+
109
+ ## Phase 3: Guide
110
+
111
+ ### Option 1: Wizard (Recommended)
112
+
113
+ > **You need to run this yourself** — the wizard opens a browser for login and requires
114
+ > interactive input that the agent can’t handle.
115
+ > Copy-paste into your terminal:
116
+ >
117
+ > ```
118
+ > npx @sentry/wizard@latest -i dotnet
119
+ > ```
120
+ >
121
+ > It handles login, org/project selection, DSN configuration, and MSBuild symbol upload
122
+ > setup for readable stack traces in production.
123
+ >
124
+ > **Once it finishes, come back and skip to [Verification](#verification).**
125
+
126
+ If the user skips the wizard, proceed with Option 2 (Manual Setup) below.
127
+
128
+ ---
129
+
130
+ ### Option 2: Manual Setup
131
+
132
+ #### Install the right package
133
+
134
+ ```bash
135
+ # ASP.NET Core
136
+ dotnet add package Sentry.AspNetCore
137
+
138
+ # WPF or WinForms or Console
139
+ dotnet add package Sentry
140
+
141
+ # .NET MAUI
142
+ dotnet add package Sentry.Maui
143
+
144
+ # Blazor WebAssembly
145
+ dotnet add package Sentry.AspNetCore.Blazor.WebAssembly
146
+
147
+ # Azure Functions (Isolated Worker) — OTLP export needs the Exporter package (≥6.5.0)
148
+ dotnet add package Sentry.Extensions.Logging
149
+ dotnet add package Sentry.OpenTelemetry.Exporter
150
+
151
+ # Classic ASP.NET (System.Web / .NET Framework)
152
+ dotnet add package Sentry.AspNet
153
+ dotnet add package Sentry.EntityFramework # only if you call options.AddEntityFramework() (EF6)
154
+ ```
155
+
156
+ ---
157
+
158
+ #### ASP.NET Core — `Program.cs`
159
+
160
+ ```csharp
161
+ var builder = WebApplication.CreateBuilder(args);
162
+
163
+ builder.WebHost.UseSentry(options =>
164
+ {
165
+ options.Dsn = Environment.GetEnvironmentVariable("SENTRY_DSN")
166
+ ?? "___YOUR_DSN___";
167
+ options.Debug = true; // disable in production
168
+ options.SendDefaultPii = true; // captures user IP, name, email
169
+ options.MaxRequestBodySize = RequestSize.Always;
170
+ options.MinimumBreadcrumbLevel = LogLevel.Debug;
171
+ options.MinimumEventLevel = LogLevel.Warning;
172
+ options.TracesSampleRate = 1.0; // tune to 0.1–0.2 in production
173
+ options.SetBeforeSend((@event, hint) =>
174
+ {
175
+ @event.ServerName = null; // scrub hostname from events
176
+ return @event;
177
+ });
178
+ });
179
+
180
+ var app = builder.Build();
181
+ app.Run();
182
+ ```
183
+
184
+ **`appsettings.json` (alternative configuration):**
185
+
186
+ ```json
187
+ {
188
+ "Sentry": {
189
+ "Dsn": "___YOUR_DSN___",
190
+ "SendDefaultPii": true,
191
+ "MaxRequestBodySize": "Always",
192
+ "MinimumBreadcrumbLevel": "Debug",
193
+ "MinimumEventLevel": "Warning",
194
+ "AttachStacktrace": true,
195
+ "Debug": true,
196
+ "TracesSampleRate": 1.0,
197
+ "Environment": "production",
198
+ "Release": "my-app@1.0.0"
199
+ }
200
+ }
201
+ ```
202
+
203
+ **Environment variables (double underscore as separator):**
204
+
205
+ ```bash
206
+ export Sentry__Dsn="https://examplePublicKey@o0.ingest.sentry.io/0"
207
+ export Sentry__TracesSampleRate="0.1"
208
+ export Sentry__Environment="staging"
209
+ ```
210
+
211
+ ---
212
+
213
+ #### WPF — `App.xaml.cs`
214
+
215
+ > ⚠️ **Critical:** Initialize in the **constructor**, NOT in `OnStartup()`. The
216
+ > constructor fires earlier, catching more failure modes.
217
+
218
+ ```csharp
219
+ using System.Windows;
220
+ using Sentry;
221
+
222
+ public partial class App : Application
223
+ {
224
+ public App()
225
+ {
226
+ SentrySdk.Init(options =>
227
+ {
228
+ options.Dsn = "___YOUR_DSN___";
229
+ options.Debug = true;
230
+ options.SendDefaultPii = true;
231
+ options.TracesSampleRate = 1.0;
232
+ options.IsGlobalModeEnabled = true; // required for all desktop apps
233
+ });
234
+
235
+ // Capture WPF UI-thread exceptions before WPF's crash dialog appears
236
+ DispatcherUnhandledException += App_DispatcherUnhandledException;
237
+ }
238
+
239
+ private void App_DispatcherUnhandledException(
240
+ object sender,
241
+ System.Windows.Threading.DispatcherUnhandledExceptionEventArgs e)
242
+ {
243
+ SentrySdk.CaptureException(e.Exception);
244
+ // Set e.Handled = true to prevent crash dialog and keep app running
245
+ }
246
+ }
247
+ ```
248
+
249
+ ---
250
+
251
+ #### WinForms — `Program.cs`
252
+
253
+ ```csharp
254
+ using System;
255
+ using System.Windows.Forms;
256
+ using Sentry;
257
+
258
+ static class Program
259
+ {
260
+ [STAThread]
261
+ static void Main()
262
+ {
263
+ Application.EnableVisualStyles();
264
+ Application.SetCompatibleTextRenderingDefault(false);
265
+
266
+ // Required: allows Sentry to see unhandled WinForms exceptions
267
+ Application.SetUnhandledExceptionMode(UnhandledExceptionMode.ThrowException);
268
+
269
+ using (SentrySdk.Init(new SentryOptions
270
+ {
271
+ Dsn = "___YOUR_DSN___",
272
+ Debug = true,
273
+ TracesSampleRate = 1.0,
274
+ IsGlobalModeEnabled = true, // required for desktop apps
275
+ }))
276
+ {
277
+ Application.Run(new MainForm());
278
+ } // Disposing flushes all pending events
279
+ }
280
+ }
281
+ ```
282
+
283
+ ---
284
+
285
+ #### .NET MAUI — `MauiProgram.cs`
286
+
287
+ ```csharp
288
+ public static class MauiProgram
289
+ {
290
+ public static MauiApp CreateMauiApp()
291
+ {
292
+ var builder = MauiApp.CreateBuilder();
293
+ builder
294
+ .UseMauiApp<App>()
295
+ .UseSentry(options =>
296
+ {
297
+ options.Dsn = "___YOUR_DSN___";
298
+ options.Debug = true;
299
+ options.SendDefaultPii = true;
300
+ options.TracesSampleRate = 1.0;
301
+ // MAUI-specific: opt-in breadcrumbs (off by default — PII risk)
302
+ options.IncludeTextInBreadcrumbs = false;
303
+ options.IncludeTitleInBreadcrumbs = false;
304
+ options.IncludeBackgroundingStateInBreadcrumbs = false;
305
+ });
306
+
307
+ return builder.Build();
308
+ }
309
+ }
310
+ ```
311
+
312
+ ---
313
+
314
+ #### Blazor WebAssembly — `Program.cs`
315
+
316
+ ```csharp
317
+ var builder = WebAssemblyHostBuilder.CreateDefault(args);
318
+
319
+ builder.UseSentry(options =>
320
+ {
321
+ options.Dsn = "___YOUR_DSN___";
322
+ options.Debug = true;
323
+ options.SendDefaultPii = true;
324
+ options.TracesSampleRate = 0.1;
325
+ });
326
+
327
+ // Hook logging pipeline without re-initializing the SDK
328
+ builder.Logging.AddSentry(o => o.InitializeSdk = false);
329
+
330
+ await builder.Build().RunAsync();
331
+ ```
332
+
333
+ ---
334
+
335
+ #### Azure Functions (Isolated Worker) — `Program.cs`
336
+
337
+ > **Recommended:** Install `Sentry.OpenTelemetry.Exporter` (≥6.5.0) for OTLP export.
338
+ > Alternatively, use `Sentry.OpenTelemetry` for the bridge pattern.
339
+
340
+ ```csharp
341
+ using Microsoft.Extensions.Hosting;
342
+ using Microsoft.Extensions.Logging;
343
+ using OpenTelemetry.Trace;
344
+
345
+ // Package: Sentry.OpenTelemetry.Exporter
346
+ var host = new HostBuilder()
347
+ .ConfigureFunctionsWorkerDefaults()
348
+ .ConfigureLogging(logging =>
349
+ {
350
+ logging.AddSentry(options =>
351
+ {
352
+ options.Dsn = "___YOUR_DSN___";
353
+ options.Debug = true;
354
+ options.TracesSampleRate = 1.0;
355
+ options.UseOtlp(); // send OTel spans via OTLP (requires 6.5.0+)
356
+ options.DisableSentryHttpMessageHandler = true;
357
+ });
358
+ })
359
+ .ConfigureServices(services =>
360
+ {
361
+ services.AddOpenTelemetry().WithTracing(builder =>
362
+ {
363
+ builder
364
+ .AddHttpClientInstrumentation()
365
+ .AddSentryOtlpExporter("___YOUR_DSN___"); // route spans to Sentry OTLP endpoint
366
+ });
367
+ })
368
+ .Build();
369
+
370
+ await host.RunAsync();
371
+ ```
372
+
373
+ ---
374
+
375
+ #### AWS Lambda — `LambdaEntryPoint.cs`
376
+
377
+ ```csharp
378
+ public class LambdaEntryPoint : APIGatewayProxyFunction
379
+ {
380
+ protected override void Init(IWebHostBuilder builder)
381
+ {
382
+ builder
383
+ .UseSentry(options =>
384
+ {
385
+ options.Dsn = "___YOUR_DSN___";
386
+ options.TracesSampleRate = 1.0;
387
+ options.FlushOnCompletedRequest = true; // REQUIRED for Lambda
388
+ })
389
+ .UseStartup<Startup>();
390
+ }
391
+ }
392
+ ```
393
+
394
+ ---
395
+
396
+ #### Classic ASP.NET — `Global.asax.cs`
397
+
398
+ ```csharp
399
+ public class MvcApplication : HttpApplication
400
+ {
401
+ private IDisposable _sentry;
402
+
403
+ protected void Application_Start()
404
+ {
405
+ _sentry = SentrySdk.Init(options =>
406
+ {
407
+ options.Dsn = "___YOUR_DSN___";
408
+ options.TracesSampleRate = 1.0;
409
+ options.AddEntityFramework(); // EF6 query breadcrumbs
410
+ options.AddAspNet(); // Classic ASP.NET integration
411
+ });
412
+ }
413
+
414
+ protected void Application_Error() => Server.CaptureLastError();
415
+
416
+ protected void Application_BeginRequest() => Context.StartSentryTransaction();
417
+ protected void Application_EndRequest() => Context.FinishSentryTransaction();
418
+
419
+ protected void Application_End() => _sentry?.Dispose();
420
+ }
421
+ ```
422
+
423
+ ---
424
+
425
+ ### Symbol Upload (Readable Stack Traces)
426
+
427
+ Without debug symbols, stack traces show only method names — no file names or line
428
+ numbers. The SDK uploads PDB files (and optionally sources) via MSBuild properties on
429
+ Release builds:
430
+
431
+ ```xml
432
+ <PropertyGroup Condition="'$(Configuration)' == 'Release'">
433
+ <SentryOrg>___ORG_SLUG___</SentryOrg>
434
+ <SentryProject>___PROJECT_SLUG___</SentryProject>
435
+ <SentryUploadSymbols>true</SentryUploadSymbols>
436
+ <SentryUploadSources>true</SentryUploadSources>
437
+ <SentryCreateRelease>true</SentryCreateRelease>
438
+ <SentrySetCommits>true</SentrySetCommits>
439
+ </PropertyGroup>
440
+ ```
441
+
442
+ Upload needs a `SENTRY_AUTH_TOKEN` set in CI (a secret).
443
+ The `SentryCreateRelease` / `SentrySetCommits` properties also create a release with
444
+ suspect commits.
445
+
446
+ ---
447
+
448
+ ### For Each Agreed Feature
449
+
450
+ Load the corresponding reference file and follow its steps:
451
+
452
+ | Feature | Reference file | Load when … |
453
+ | ---------------- | ----------------------- | -------------------------------------------------------------------------------------- |
454
+ | Error Monitoring | `./error-monitoring.md` | Always — `CaptureException`, scopes, enrichment, filtering |
455
+ | Tracing | `./tracing.md` | Server apps, distributed tracing, EF Core spans, custom instrumentation |
456
+ | Profiling | `./profiling.md` | Performance-critical apps on .NET 6+ |
457
+ | Logging | `./logging.md` | `ILogger<T>`, Serilog, NLog, log4net integration |
458
+ | Metrics | `./metrics.md` | Custom counters, gauges, distributions; `EmitCounter`, `EmitGauge`, `EmitDistribution` |
459
+ | Crons | `./crons.md` | Hangfire, Quartz.NET, or scheduled function monitoring |
460
+
461
+ For each feature: read the reference file, follow its steps exactly, and verify before
462
+ moving on.
463
+
464
+ ---
465
+
466
+ ## Configuration Reference
467
+
468
+ ### Core `SentryOptions`
469
+
470
+ | Option | Type | Default | Env Var | Notes |
471
+ | ---------------------------- | ------------------------------------------- | -------------------- | -------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
472
+ | `Dsn` | `string` | — | `SENTRY_DSN` | Required. SDK disabled if unset. |
473
+ | `Debug` | `bool` | `false` | — | SDK diagnostic output. Disable in production. |
474
+ | `DiagnosticLevel` | `SentryLevel` | `Debug` | — | `Debug`, `Info`, `Warning`, `Error`, `Fatal` |
475
+ | `Release` | `string` | auto | `SENTRY_RELEASE` | Auto-detected from assembly version + git SHA |
476
+ | `Environment` | `string` | `"production"` | `SENTRY_ENVIRONMENT` | `"debug"` when debugger attached |
477
+ | `Distribution` | `string` | — | — | Build variant / distribution identifier. |
478
+ | `SampleRate` | `float?` | `null` (sends 100%) | — | Error event sampling rate 0.0–1.0 |
479
+ | `TracesSampleRate` | `double?` | `null` (tracing off) | — | Transaction sampling. Must be `> 0` to enable. |
480
+ | `TracesSampler` | `Func<TransactionSamplingContext, double?>` | — | — | Per-transaction dynamic sampler; overrides `TracesSampleRate` |
481
+ | `ProfilesSampleRate` | `double?` | `null` | — | Fraction of traced transactions to profile. Requires `Sentry.Profiling`. |
482
+ | `SendDefaultPii` | `bool` | `false` | — | Include user IP, name, email |
483
+ | `AttachStacktrace` | `bool` | `true` | — | Attach stack trace to all messages |
484
+ | `MaxBreadcrumbs` | `int` | `100` | — | Max breadcrumbs stored per event |
485
+ | `IsGlobalModeEnabled` | `bool` | `false`* | — | *Auto-`true` for MAUI, Blazor WASM. **Must** be `true` for WPF, WinForms, Console. |
486
+ | `AutoSessionTracking` | `bool` | `false`* | — | *Auto-`true` for MAUI. Enable for Release Health. |
487
+ | `CaptureFailedRequests` | `bool` | `true` | — | Auto-capture HTTP client errors |
488
+ | `CacheDirectoryPath` | `string` | — | — | Offline event caching directory |
489
+ | `ShutdownTimeout` | `TimeSpan` | — | — | Max wait for event flush on shutdown |
490
+ | `HttpProxy` | `string` | — | — | Proxy URL for Sentry requests |
491
+ | `EnableBackpressureHandling` | `bool` | `true` | — | Auto-reduce sample rates on delivery failures |
492
+ | `TraceIgnoreStatusCodes` | `IList<HttpStatusCodeRange>` | `[]` | — | Drop transactions whose HTTP response status matches any range; e.g., `[404]` or `[(500, 599)]` |
493
+ | `StrictTraceContinuation` | `bool` | `false` | — | When `true`, starts a new trace if exactly one side (SDK or incoming `sentry-org_id` baggage) has an org ID. A full mismatch (both present but different) always starts a new trace regardless of this setting. (requires ≥6.6.0) |
494
+ | `OrgId` | `string` | auto | — | Organization ID for trace validation; auto-parsed from DSN subdomain (e.g., `o123.ingest.sentry.io` → `"123"`). Recommended to set explicitly for self-hosted Sentry, local Relay, or custom domains (requires ≥6.6.0) |
495
+
496
+ ### ASP.NET Core Extended Options (`SentryAspNetCoreOptions`)
497
+
498
+ | Option | Type | Default | Notes |
499
+ | ------------------------- | ------------- | ------------- | ---------------------------------------------------- |
500
+ | `MaxRequestBodySize` | `RequestSize` | `None` | `None`, `Small` (~4 KB), `Medium` (~10 KB), `Always` |
501
+ | `MinimumBreadcrumbLevel` | `LogLevel` | `Information` | Min log level for breadcrumbs |
502
+ | `MinimumEventLevel` | `LogLevel` | `Error` | Min log level to send as Sentry event |
503
+ | `CaptureBlockingCalls` | `bool` | `false` | Detect `.Wait()` / `.Result` threadpool starvation |
504
+ | `FlushOnCompletedRequest` | `bool` | `false` | **Required for Lambda / serverless** |
505
+ | `IncludeActivityData` | `bool` | `false` | Capture `System.Diagnostics.Activity` values |
506
+
507
+ ### MAUI Extended Options (`SentryMauiOptions`)
508
+
509
+ | Option | Type | Default | Notes |
510
+ | ---------------------------------------- | ------ | ------- | ----------------------------------------------------------- |
511
+ | `IncludeTextInBreadcrumbs` | `bool` | `false` | Text from `Button`, `Label`, `Entry` elements. ⚠️ PII risk. |
512
+ | `IncludeTitleInBreadcrumbs` | `bool` | `false` | Titles from `Window`, `Page` elements. ⚠️ PII risk. |
513
+ | `IncludeBackgroundingStateInBreadcrumbs` | `bool` | `false` | `Window.Backgrounding` event state. ⚠️ PII risk. |
514
+
515
+ ### Environment Variables
516
+
517
+ | Variable | Purpose |
518
+ | -------------------- | ----------------------------------------------- |
519
+ | `SENTRY_DSN` | Project DSN |
520
+ | `SENTRY_RELEASE` | App version (e.g. `my-app@1.2.3`) |
521
+ | `SENTRY_ENVIRONMENT` | Deployment environment name |
522
+ | `SENTRY_AUTH_TOKEN` | MSBuild / `sentry-cli` symbol upload auth token |
523
+
524
+ **ASP.NET Core:** use double underscore `__` as hierarchy separator:
525
+
526
+ ```bash
527
+ export Sentry__Dsn="https://..."
528
+ export Sentry__TracesSampleRate="0.1"
529
+ ```
530
+
531
+ ### MSBuild Symbol Upload Properties
532
+
533
+ | Property | Type | Default | Description |
534
+ | --------------------- | -------- | ------- | ------------------------------------------------- |
535
+ | `SentryOrg` | `string` | — | Sentry organization slug |
536
+ | `SentryProject` | `string` | — | Sentry project slug |
537
+ | `SentryUploadSymbols` | `bool` | `false` | Upload PDB files for line numbers in stack traces |
538
+ | `SentryUploadSources` | `bool` | `false` | Upload source files for source context |
539
+ | `SentryCreateRelease` | `bool` | `false` | Auto-create a Sentry release during build |
540
+ | `SentrySetCommits` | `bool` | `false` | Associate git commits with the release |
541
+ | `SentryUrl` | `string` | — | Self-hosted Sentry URL |
542
+
543
+ ---
544
+
545
+ ## Verification
546
+
547
+ After wizard or manual setup, add a test throw and remove it after verifying:
548
+
549
+ ```csharp
550
+ // ASP.NET Core: add a temporary endpoint
551
+ app.MapGet("/sentry-test", () =>
552
+ {
553
+ throw new Exception("Sentry test error — delete me");
554
+ });
555
+
556
+ // Or capture explicitly anywhere
557
+ SentrySdk.CaptureException(new Exception("Sentry test error — delete me"));
558
+ ```
559
+
560
+ Then check your [Sentry Issues dashboard](https://sentry.io/issues/) — the error should
561
+ appear within ~30 seconds.
562
+
563
+ **Verification checklist:**
564
+
565
+ | Check | How |
566
+ | --------------------- | -------------------------------------------------------------------- |
567
+ | Exceptions captured | Throw a test exception, verify in Sentry Issues |
568
+ | Stack traces readable | Check that file names and line numbers appear |
569
+ | Tracing active | Check Performance tab for transactions |
570
+ | Logging wired | Log an error via `ILogger`, check it appears as Sentry breadcrumb |
571
+ | Symbol upload working | Stack trace shows `Controllers/HomeController.cs:42` not `<unknown>` |
572
+
573
+ ---
574
+
575
+ ## Phase 4: Cross-Link
576
+
577
+ After completing .NET setup, check for companion frontend projects:
578
+
579
+ ```bash
580
+ # Check for frontend in adjacent directories
581
+ ls ../frontend ../client ../web ../app 2>/dev/null
582
+
583
+ # Check for JavaScript framework indicators
584
+ cat ../package.json 2>/dev/null | grep -E '"next"|"react"|"vue"|"nuxt"' | head -3
585
+ ```
586
+
587
+ If a frontend is found, suggest the matching SDK skill:
588
+
589
+ | Frontend detected | Suggest skill |
590
+ | -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------ |
591
+ | Next.js (`"next"` in `package.json`) | [`nextjs`](../nextjs/index.md) |
592
+ | React SPA (`"react"` without `"next"`) | `@sentry/react` — see [docs.sentry.io/platforms/javascript/guides/react/](https://docs.sentry.io/platforms/javascript/guides/react/) |
593
+ | Vue.js | `@sentry/vue` — see [docs.sentry.io/platforms/javascript/guides/vue/](https://docs.sentry.io/platforms/javascript/guides/vue/) |
594
+ | Nuxt | `@sentry/nuxt` — see [docs.sentry.io/platforms/javascript/guides/nuxt/](https://docs.sentry.io/platforms/javascript/guides/nuxt/) |
595
+
596
+ Connecting frontend and backend with the same Sentry project enables **distributed
597
+ tracing** — a single trace view spanning browser, .NET server, and any downstream APIs.
598
+
599
+ ---
600
+
601
+ ## Troubleshooting
602
+
603
+ | Issue | Cause | Solution |
604
+ | --------------------------------------- | ---------------------------------------- | ---------------------------------------------------------------------------- |
605
+ | Events not appearing | DSN misconfigured | Set `Debug = true` and check console output for SDK diagnostic messages |
606
+ | Stack traces show no file/line | PDB files not uploaded | Add `SentryUploadSymbols=true` to `.csproj`; set `SENTRY_AUTH_TOKEN` in CI |
607
+ | WPF/WinForms exceptions missing | `IsGlobalModeEnabled` not set | Set `options.IsGlobalModeEnabled = true` in `SentrySdk.Init()` |
608
+ | Lambda/serverless events lost | Container freezes before flush | Set `options.FlushOnCompletedRequest = true` |
609
+ | WPF UI-thread exceptions missing | `DispatcherUnhandledException` not wired | Register `App.DispatcherUnhandledException` in constructor (not `OnStartup`) |
610
+ | Duplicate HTTP spans in Azure Functions | Both Sentry and OTel instrument HTTP | Set `options.DisableSentryHttpMessageHandler = true` |
611
+ | `TracesSampleRate` has no effect | Rate is unset (`null`, the default) | Set `TracesSampleRate > 0` to enable tracing |
612
+ | `appsettings.json` values ignored | Config key format wrong | Use flat key `"Sentry:Dsn"` or env var `Sentry__Dsn` (double underscore) |
613
+ | `BeforeSend` drops all events | Hook returns `null` unconditionally | Verify your filter logic; return `null` only for events you want to drop |
614
+ | MAUI native crashes not captured | Wrong package | Confirm `Sentry.Maui` is installed (not just `Sentry`) |