@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,354 @@
1
+ # User Feedback — Sentry Browser SDK
2
+
3
+ > Minimum SDK: `@sentry/browser` ≥7.85.0 for `feedbackIntegration()`\
4
+ > Screenshot capture: requires ≥8.0.0\
5
+ > Self-hosted Sentry: requires version ≥24.4.2
6
+
7
+ ---
8
+
9
+ ## Two Approaches
10
+
11
+ | Approach | When to Use |
12
+ | ------------------------------------ | -------------------------------------------------------------------------------- |
13
+ | **`feedbackIntegration()` widget** | Collect feedback anywhere — no error required; embeds a button in the UI |
14
+ | **`showReportDialog()` crash modal** | Triggered after an error is captured; prompts the user to describe what happened |
15
+
16
+ Both approaches can be used together.
17
+ The widget is general-purpose; the crash modal is specifically for error-linked
18
+ feedback.
19
+
20
+ ---
21
+
22
+ ## Approach 1: Feedback Widget (`feedbackIntegration`)
23
+
24
+ ### Basic Setup
25
+
26
+ ```javascript
27
+ import * as Sentry from "@sentry/browser";
28
+
29
+ Sentry.init({
30
+ dsn: "___PUBLIC_DSN___",
31
+ integrations: [
32
+ Sentry.feedbackIntegration({
33
+ colorScheme: "system", // "light" | "dark" | "system"
34
+ }),
35
+ ],
36
+ });
37
+ ```
38
+
39
+ A “Report a Bug” button appears in the bottom-right corner by default.
40
+ Clicking it opens a modal form.
41
+
42
+ ### Lazy Loading via Loader Script
43
+
44
+ ```javascript
45
+ window.sentryOnLoad = function () {
46
+ Sentry.init({ dsn: "___PUBLIC_DSN___" });
47
+
48
+ Sentry.lazyLoadIntegration("feedbackIntegration")
49
+ .then((feedbackIntegration) => {
50
+ Sentry.addIntegration(
51
+ feedbackIntegration({
52
+ colorScheme: "system",
53
+ }),
54
+ );
55
+ })
56
+ .catch(() => {
57
+ // Network error — User Feedback widget not loaded
58
+ });
59
+ };
60
+ ```
61
+
62
+ ### CDN Bundle Options
63
+
64
+ ```html
65
+ <!-- Feedback only (lightest bundle) -->
66
+ <script
67
+ src="https://browser.sentry-cdn.com/10.42.0/bundle.feedback.min.js"
68
+ crossorigin="anonymous"
69
+ ></script>
70
+
71
+ <!-- With tracing and replay -->
72
+ <script
73
+ src="https://browser.sentry-cdn.com/10.42.0/bundle.tracing.replay.feedback.min.js"
74
+ crossorigin="anonymous"
75
+ ></script>
76
+ ```
77
+
78
+ ### Configuration Options
79
+
80
+ #### Appearance
81
+
82
+ | Option | Type | Default | Description |
83
+ | ------------------- | ----------------------------------- | ------------------- | ------------------------------------------------ |
84
+ | `colorScheme` | `'light'` \| `'dark'` \| `'system'` | `'system'` | Widget color theme. |
85
+ | `buttonLabel` | `string` | `"Report a Bug"` | Text on the trigger button. |
86
+ | `submitButtonLabel` | `string` | `"Send Bug Report"` | Text on the form’s submit button. |
87
+ | `cancelButtonLabel` | `string` | `"Cancel"` | Text on the cancel button. |
88
+ | `formTitle` | `string` | `"Report a Bug"` | Title displayed in the feedback form. |
89
+ | `showBranding` | `boolean` | `true` | Show “Powered by Sentry” branding in the widget. |
90
+
91
+ #### Form Fields
92
+
93
+ | Option | Type | Default | Description |
94
+ | -------------------- | --------- | -------------------------- | ------------------------------ |
95
+ | `showName` | `boolean` | `true` | Show the name input field. |
96
+ | `showEmail` | `boolean` | `true` | Show the email input field. |
97
+ | `isNameRequired` | `boolean` | `false` | Make name field required. |
98
+ | `isEmailRequired` | `boolean` | `false` | Make email field required. |
99
+ | `namePlaceholder` | `string` | `"Your Name"` | Placeholder for name field. |
100
+ | `emailPlaceholder` | `string` | `"your.email@example.org"` | Placeholder for email field. |
101
+ | `messagePlaceholder` | `string` | `"What's the bug? ..."` | Placeholder for message field. |
102
+
103
+ #### Positioning
104
+
105
+ | Option | Type | Default | Description |
106
+ | ---------- | -------------------------------------------------------------------- | ---------------- | ------------------------------------- |
107
+ | `position` | `'bottom-right'` \| `'bottom-left'` \| `'top-right'` \| `'top-left'` | `'bottom-right'` | Where to position the trigger button. |
108
+
109
+ #### Behaviour
110
+
111
+ | Option | Type | Default | Description |
112
+ | ------------------ | ------------------------ | ------- | ------------------------------------------------------------------------------------------------ |
113
+ | `autoInject` | `boolean` | `true` | Automatically inject the trigger button into the DOM. Set `false` to control placement manually. |
114
+ | `enableScreenshot` | `boolean` | `true` | Allow users to attach a screenshot. Requires SDK ≥8.0.0. |
115
+ | `tags` | `Record<string, string>` | `{}` | Additional tags to attach to every submitted feedback event. |
116
+
117
+ ### Pre-fill User Information
118
+
119
+ ```javascript
120
+ Sentry.init({
121
+ dsn: "___PUBLIC_DSN___",
122
+ integrations: [
123
+ Sentry.feedbackIntegration({
124
+ // Pre-fill form with logged-in user's details
125
+ }),
126
+ ],
127
+ });
128
+
129
+ // After authentication
130
+ Sentry.setUser({
131
+ email: "user@example.com",
132
+ name: "Jane Smith",
133
+ });
134
+ ```
135
+
136
+ When `Sentry.setUser()` is called, the feedback form auto-populates name and email
137
+ fields.
138
+
139
+ ### Manual Widget Control (Custom Button)
140
+
141
+ Disable auto-inject and open the widget programmatically from your own button:
142
+
143
+ ```javascript
144
+ Sentry.init({
145
+ dsn: "___PUBLIC_DSN___",
146
+ integrations: [
147
+ Sentry.feedbackIntegration({
148
+ autoInject: false, // Don't render Sentry's trigger button
149
+ }),
150
+ ],
151
+ });
152
+
153
+ // Open the widget from your own UI element
154
+ document.getElementById("my-feedback-btn").addEventListener("click", () => {
155
+ const feedback = Sentry.getFeedback();
156
+ if (feedback) {
157
+ feedback.openDialog();
158
+ }
159
+ });
160
+ ```
161
+
162
+ ---
163
+
164
+ ## Approach 2: Programmatic Feedback (`captureFeedback`)
165
+
166
+ Use a completely custom form UI and submit feedback via the API:
167
+
168
+ ```javascript
169
+ // Minimal — only message is required
170
+ Sentry.captureFeedback({
171
+ name: "Jane Smith",
172
+ email: "jane@example.com",
173
+ message: "The checkout button doesn't work on mobile.",
174
+ });
175
+ ```
176
+
177
+ ### With Tags and Attachments
178
+
179
+ ```javascript
180
+ // Attach a screenshot as a file
181
+ const screenshotDataUrl = "data:image/jpeg;base64,...";
182
+ const res = await fetch(screenshotDataUrl);
183
+ const buffer = await res.arrayBuffer();
184
+
185
+ Sentry.captureFeedback(
186
+ {
187
+ name: "Jane Smith",
188
+ email: "jane@example.com",
189
+ message: "The checkout button doesn't work on mobile.",
190
+ },
191
+ {
192
+ captureContext: {
193
+ tags: { page: "checkout", device: "mobile" },
194
+ },
195
+ attachments: [
196
+ {
197
+ filename: "screenshot.png",
198
+ data: new Uint8Array(buffer),
199
+ },
200
+ ],
201
+ },
202
+ );
203
+ ```
204
+
205
+ ### Linking Feedback to a Specific Error
206
+
207
+ ```javascript
208
+ try {
209
+ await submitOrder();
210
+ } catch (err) {
211
+ const eventId = Sentry.captureException(err);
212
+
213
+ Sentry.captureFeedback({
214
+ message: "Something went wrong during checkout.",
215
+ associatedEventId: eventId, // Links this feedback to the captured error
216
+ });
217
+ }
218
+ ```
219
+
220
+ ### `captureFeedback` Parameters
221
+
222
+ | Parameter | Required | Description |
223
+ | ------------------- | -------- | ---------------------------------------------------------------------------------------------------------------- |
224
+ | `message` | ✅ | The feedback text from the user |
225
+ | `name` | ❌ | User’s name |
226
+ | `email` | ❌ | User’s email |
227
+ | `associatedEventId` | ❌ | Links feedback to a specific Sentry event (use `Sentry.lastEventId()` or the return value of `captureException`) |
228
+
229
+ ---
230
+
231
+ ## Approach 3: Crash-Report Modal (`showReportDialog`)
232
+
233
+ Show a modal prompting users to describe what happened when an error occurs.
234
+ Ideal for “something went wrong” pages or after unhandled errors.
235
+
236
+ ### Basic Setup
237
+
238
+ ```javascript
239
+ Sentry.init({
240
+ dsn: "___PUBLIC_DSN___",
241
+ beforeSend(event) {
242
+ if (event.exception && event.event_id) {
243
+ Sentry.showReportDialog({ eventId: event.event_id });
244
+ }
245
+ return event;
246
+ },
247
+ });
248
+ ```
249
+
250
+ ### On a 500 Error Page
251
+
252
+ ```html
253
+ <script>
254
+ Sentry.init({ dsn: "___PUBLIC_DSN___" });
255
+ </script>
256
+
257
+ <script>
258
+ // eventId is provided by your server-side Sentry SDK after capturing the error
259
+ Sentry.showReportDialog({ eventId: "{{ sentry_event_id }}" });
260
+ </script>
261
+ ```
262
+
263
+ ### After Manual `captureException`
264
+
265
+ ```javascript
266
+ try {
267
+ await riskyOperation();
268
+ } catch (err) {
269
+ const eventId = Sentry.captureException(err);
270
+ Sentry.showReportDialog({ eventId });
271
+ }
272
+ ```
273
+
274
+ ### `showReportDialog` Options
275
+
276
+ | Option | Required | Description |
277
+ | ------------- | -------- | -------------------------------------------------- |
278
+ | `eventId` | ✅ | The Sentry event ID to associate the feedback with |
279
+ | `user.name` | ❌ | Pre-fill user’s name |
280
+ | `user.email` | ❌ | Pre-fill user’s email |
281
+ | `lang` | ❌ | Dialog language code (e.g., `"de"`, `"fr"`) |
282
+ | `title` | ❌ | Override dialog title |
283
+ | `subtitle` | ❌ | Override dialog subtitle |
284
+ | `subtitle2` | ❌ | Override second subtitle line |
285
+ | `labelSubmit` | ❌ | Override submit button label |
286
+
287
+ The modal collects: **user name, email, and a description** — paired with the original
288
+ captured error event.
289
+
290
+ ---
291
+
292
+ ## Screenshot Capture
293
+
294
+ - Available on SDK **v8.0.0+**
295
+ - Enabled by default via `enableScreenshot: true` on `feedbackIntegration()`
296
+ - Auto-hidden on mobile devices
297
+ - Screenshots count against your **attachment quota** (1GB standard)
298
+
299
+ ```javascript
300
+ Sentry.feedbackIntegration({
301
+ enableScreenshot: true, // default — can set false to disable
302
+ });
303
+ ```
304
+
305
+ ---
306
+
307
+ ## Session Replay Integration
308
+
309
+ When Session Replay is configured alongside User Feedback, submitted feedback links to
310
+ the user’s replay:
311
+
312
+ ```javascript
313
+ Sentry.init({
314
+ dsn: "___PUBLIC_DSN___",
315
+ replaysOnErrorSampleRate: 1.0, // Buffer replays for error sessions
316
+ integrations: [Sentry.replayIntegration(), Sentry.feedbackIntegration({ colorScheme: "system" })],
317
+ });
318
+ ```
319
+
320
+ The system buffers up to **30 seconds** when the feedback widget opens.
321
+ This enables viewing the replay alongside the submitted feedback in Sentry.
322
+
323
+ ---
324
+
325
+ ## Best Practices
326
+
327
+ - **Use `feedbackIntegration()` for proactive collection** — don’t wait for errors; a
328
+ persistent feedback button catches issues that never throw exceptions
329
+ - **Pre-fill user info** — call `Sentry.setUser()` after login so users don’t have to
330
+ type their email each time
331
+ - **Combine crash modal with `beforeSend`** — automatic prompting after errors maximizes
332
+ feedback capture
333
+ - **Link programmatic feedback to events** — use `associatedEventId` so feedback appears
334
+ alongside error context in Sentry
335
+ - **Set `autoInject: false`** for branded UI — implement your own trigger button to
336
+ match your design system
337
+ - **Keep `showReportDialog` for 500 pages** — server-rendered error pages are the
338
+ primary use case; pass the server-side event ID to the client
339
+
340
+ ---
341
+
342
+ ## Troubleshooting
343
+
344
+ | Issue | Solution |
345
+ | --------------------------------------------------------- | ---------------------------------------------------------------------------------------------- |
346
+ | Widget doesn’t appear | Check that `feedbackIntegration()` is in the `integrations` array and SDK ≥7.85.0 |
347
+ | Widget appears but form won’t submit | Verify DSN is correct; check browser network tab for blocked requests |
348
+ | Screenshots not showing | Requires SDK ≥8.0.0; check `enableScreenshot` is not set to `false` |
349
+ | `showReportDialog` shows but feedback not linked to error | Ensure `eventId` is passed; use `captureException()` return value or `Sentry.lastEventId()` |
350
+ | Crash modal not appearing after error | `showReportDialog` must be called with a valid `eventId`; check `beforeSend` hook is executing |
351
+ | Feedback not appearing in Sentry | Check attachment quota; ensure self-hosted Sentry is version ≥24.4.2 |
352
+ | Form fields are empty (no pre-fill) | Call `Sentry.setUser({ name, email })` before the widget is opened |
353
+ | Replay not linked to feedback | Set `replaysOnErrorSampleRate > 0`; replay must be active when feedback is submitted |
354
+ | Widget conflicts with page z-index | Widget uses Shadow DOM — if still conflicting, use `autoInject: false` and position manually |