@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,310 @@
1
+ # User Feedback — Sentry Cocoa SDK
2
+
3
+ > Minimum SDK: `sentry-cocoa` v8.46.0+ Self-hosted Sentry server: 24.4.2+
4
+
5
+ ## Configuration
6
+
7
+ | Option | Type | Default | Description |
8
+ | ------------------------ | ---------------------------------------------- | ------- | ------------------------------------------------- |
9
+ | `configureUserFeedback` | `((SentryUserFeedbackConfiguration) -> Void)?` | `nil` | Configure the feedback widget and form |
10
+ | `autoInject` | `Bool` | `true` | Auto-show floating “Report a Bug” button |
11
+ | `useShakeGesture` | `Bool` | `false` | Open the form on device shake |
12
+ | `showFormForScreenshots` | `Bool` | `false` | Auto-open form when user takes a screenshot |
13
+ | `animations` | `Bool` | `true` | Enable present/dismiss animations |
14
+ | `useSentryUser` | `Bool` | `true` | Pre-fill name/email from `SentrySDK.setUser(...)` |
15
+ | `isNameRequired` | `Bool` | `false` | Require name field before submission |
16
+ | `isEmailRequired` | `Bool` | `false` | Require email field before submission |
17
+ | `showName` | `Bool` | `true` | Show the name field |
18
+ | `showEmail` | `Bool` | `true` | Show the email field |
19
+
20
+ ## Code Examples
21
+
22
+ ### Basic widget setup (auto-inject mode)
23
+
24
+ By default (`autoInject = true`), the SDK injects a floating “Report a Bug” button:
25
+
26
+ ```swift
27
+ import Sentry
28
+
29
+ SentrySDK.start { options in
30
+ options.dsn = "___PUBLIC_DSN___"
31
+ options.configureUserFeedback = { config in
32
+ config.onSubmitSuccess = { data in
33
+ // data keys: "message", "name", "email", "attachments"
34
+ print("Feedback submitted: \(data["message"] ?? "")")
35
+ }
36
+ config.onSubmitError = { error in
37
+ print("Submission failed: \(error)")
38
+ }
39
+ }
40
+ }
41
+ ```
42
+
43
+ ### Programmatic widget control
44
+
45
+ ```swift
46
+ // Show the floating widget button programmatically
47
+ SentrySDK.feedback.showWidget()
48
+
49
+ // Hide the widget button
50
+ SentrySDK.feedback.hideWidget()
51
+ ```
52
+
53
+ > `SentrySDK.feedback` is of type `SentryFeedbackAPI`. There is no
54
+ > `showUserFeedbackForm()` method — always use `showWidget()` to trigger the UI.
55
+
56
+ ### SwiftUI integration
57
+
58
+ The feedback widget is UIKit-based.
59
+ In a SwiftUI app, inject it via `.onAppear` on the root view:
60
+
61
+ ```swift
62
+ import SwiftUI
63
+ import Sentry
64
+
65
+ @main
66
+ struct MyApp: App {
67
+ var body: some Scene {
68
+ WindowGroup {
69
+ ContentView()
70
+ .onAppear {
71
+ SentrySDK.feedback.showWidget()
72
+ }
73
+ }
74
+ }
75
+ }
76
+ ```
77
+
78
+ Or via a `UISceneDelegate`:
79
+
80
+ ```swift
81
+ func sceneDidBecomeActive(_ scene: UIScene) {
82
+ SentrySDK.feedback.showWidget()
83
+ }
84
+ ```
85
+
86
+ ### Bind to a custom UIButton
87
+
88
+ ```swift
89
+ SentrySDK.start { options in
90
+ options.configureUserFeedback = { config in
91
+ config.customButton = myButton // tapping this button opens the form
92
+ }
93
+ }
94
+ ```
95
+
96
+ ### Trigger via shake gesture or screenshot
97
+
98
+ ```swift
99
+ options.configureUserFeedback = { config in
100
+ config.useShakeGesture = true // shake to open form
101
+ config.showFormForScreenshots = true // auto-open after screenshot
102
+ }
103
+ ```
104
+
105
+ ### Programmatic feedback capture (no widget, custom UI)
106
+
107
+ Use `SentrySDK.capture(feedback:)` to send feedback from your own UI without any Sentry
108
+ widget:
109
+
110
+ ```swift
111
+ import Sentry
112
+
113
+ SentrySDK.capture(feedback: .init(
114
+ message: "The checkout button doesn't respond after adding a promo code.",
115
+ name: "Jane Doe",
116
+ email: "jane@example.org",
117
+ source: .custom,
118
+ attachments: nil // pass [Attachment] to include screenshots or files; nil for none
119
+ ))
120
+ ```
121
+
122
+ ### Link feedback to an error event
123
+
124
+ To associate a feedback submission with a specific Sentry issue, capture the error first
125
+ and use the resulting event ID:
126
+
127
+ ```swift
128
+ let eventId = SentrySDK.capture(error: error)
129
+
130
+ SentrySDK.capture(feedback: .init(
131
+ message: "App crashed on the checkout screen.",
132
+ name: "User",
133
+ email: "user@example.com",
134
+ associatedEventId: eventId
135
+ ))
136
+ ```
137
+
138
+ ### Form customisation
139
+
140
+ ```swift
141
+ options.configureUserFeedback = { config in
142
+ config.configureForm = { form in
143
+ form.formTitle = "Share Your Feedback"
144
+ form.submitButtonLabel = "Send Feedback"
145
+ form.cancelButtonLabel = "Never Mind"
146
+ form.messagePlaceholder = "What went wrong? What did you expect?"
147
+ form.isNameRequired = true
148
+ form.isEmailRequired = true
149
+ form.showBranding = false
150
+ form.useSentryUser = true // pre-fill from SentrySDK.setUser(...)
151
+ }
152
+ }
153
+ ```
154
+
155
+ ### Widget placement and labels
156
+
157
+ ```swift
158
+ options.configureUserFeedback = { config in
159
+ config.configureWidget = { widget in
160
+ widget.labelText = "Give Feedback"
161
+ widget.location = [.bottom, .trailing] // anchor edges
162
+ widget.showIcon = true
163
+ widget.layoutUIOffset = UIOffset(horizontal: -16, vertical: -32)
164
+ }
165
+ }
166
+ ```
167
+
168
+ ### Theme customisation
169
+
170
+ ```swift
171
+ options.configureUserFeedback = { config in
172
+ config.configureTheme = { theme in
173
+ theme.submitBackground = .systemBlue
174
+ theme.fontFamily = "SF Pro Rounded"
175
+ }
176
+ config.configureDarkTheme = { theme in
177
+ theme.background = .black
178
+ theme.submitBackground = .systemPurple
179
+ }
180
+ }
181
+ ```
182
+
183
+ Theme properties:
184
+
185
+ | Property | Light Default | Dark Default |
186
+ | ------------------ | ------------------------ | ------------------ |
187
+ | `background` | `rgb(255,255,255)` | `rgb(41,35,47)` |
188
+ | `foreground` | `rgb(43,34,51)` | `rgb(235,230,239)` |
189
+ | `submitBackground` | `rgb(88,74,192)` | `rgb(88,74,192)` |
190
+ | `submitForeground` | `rgb(255,255,255)` | `rgb(255,255,255)` |
191
+ | `errorColor` | `rgb(223,51,56)` | `rgb(245,84,89)` |
192
+ | `font` | `UIFontTextStyleCallout` | — |
193
+ | `headerFont` | `UIFontTextStyleTitle1` | — |
194
+ | `fontFamily` | `nil` (system font) | — |
195
+
196
+ ### Session Replay integration
197
+
198
+ When a user opens the feedback form and Session Replay is enabled, the SDK automatically
199
+ buffers up to **30 seconds** of the session.
200
+ On submission, that replay clip is sent alongside the feedback event — no extra
201
+ configuration needed.
202
+
203
+ ### Full configuration example
204
+
205
+ ```swift
206
+ import Sentry
207
+
208
+ SentrySDK.start { options in
209
+ options.dsn = "___PUBLIC_DSN___"
210
+
211
+ options.configureUserFeedback = { config in
212
+ config.showFormForScreenshots = true
213
+ config.useShakeGesture = false
214
+ config.animations = true
215
+
216
+ config.configureForm = { form in
217
+ form.formTitle = "Report a Bug"
218
+ form.submitButtonLabel = "Send Bug Report"
219
+ form.isNameRequired = true
220
+ form.isEmailRequired = false
221
+ form.showBranding = false
222
+ form.useSentryUser = true
223
+ }
224
+
225
+ config.configureWidget = { widget in
226
+ widget.labelText = "Report a Bug"
227
+ widget.location = [.bottom, .trailing]
228
+ widget.autoInject = true
229
+ }
230
+
231
+ config.configureTheme = { theme in
232
+ theme.submitBackground = .systemBlue
233
+ }
234
+ config.configureDarkTheme = { theme in
235
+ theme.background = .black
236
+ }
237
+
238
+ config.onFormOpen = { print("Feedback form opened") }
239
+ config.onFormClose = { print("Feedback form closed") }
240
+ config.onSubmitSuccess = { data in
241
+ print("Feedback: \(data["message"] ?? "")")
242
+ }
243
+ config.onSubmitError = { error in
244
+ print("Submission failed: \(error)")
245
+ }
246
+ }
247
+ }
248
+ ```
249
+
250
+ ## SentryUserFeedbackWidgetConfiguration Reference
251
+
252
+ | Property | Type | Default |
253
+ | -------------------------- | ------------------------- | ---------------------- |
254
+ | `autoInject` | `Bool` | `true` |
255
+ | `location` | `[NSDirectionalRectEdge]` | `[.bottom, .trailing]` |
256
+ | `layoutUIOffset` | `UIOffset` | `.zero` |
257
+ | `windowLevel` | `UIWindow.Level` | `normal + 1` |
258
+ | `showIcon` | `Bool` | `true` |
259
+ | `labelText` | `String?` | `"Report a Bug"` |
260
+ | `widgetAccessibilityLabel` | `String` | `labelText` |
261
+
262
+ `customButton` is on `SentryUserFeedbackConfiguration`, not
263
+ `SentryUserFeedbackWidgetConfiguration`. If it is set, `configureWidget` is ignored.
264
+
265
+ ## SentryUserFeedbackFormConfiguration Reference
266
+
267
+ | Property | Type | Default |
268
+ | -------------------- | -------- | ---------------------------------------- |
269
+ | `formTitle` | `String` | `"Report a Bug"` |
270
+ | `showBranding` | `Bool` | `true` |
271
+ | `submitButtonLabel` | `String` | `"Send Bug Report"` |
272
+ | `cancelButtonLabel` | `String` | `"Cancel"` |
273
+ | `messagePlaceholder` | `String` | `"What's the bug? What did you expect?"` |
274
+ | `isNameRequired` | `Bool` | `false` |
275
+ | `showName` | `Bool` | `true` |
276
+ | `nameLabel` | `String` | `"Name"` |
277
+ | `namePlaceholder` | `String` | `"Your Name"` |
278
+ | `isEmailRequired` | `Bool` | `false` |
279
+ | `showEmail` | `Bool` | `true` |
280
+ | `emailLabel` | `String` | `"Email"` |
281
+ | `emailPlaceholder` | `String` | `"your.email@example.org"` |
282
+ | `useSentryUser` | `Bool` | `true` |
283
+
284
+ ## Best Practices
285
+
286
+ - Set `useSentryUser = true` (default) and call `SentrySDK.setUser(...)` so the form
287
+ pre-fills name and email — reduces friction
288
+ - Enable `showFormForScreenshots = true` — users often take screenshots when something
289
+ goes wrong; it’s a natural trigger
290
+ - Disable `autoInject` for SwiftUI, or set `config.customButton = myButton` to bind the
291
+ form to your own UIKit button
292
+ - Use `config.onSubmitSuccess` to show a native confirmation (toast/alert) after the
293
+ Sentry form dismisses
294
+ - If collecting feedback from a known event ID, use `associatedEventId` to link the
295
+ feedback to the specific issue in Sentry
296
+ - Add `tags` on the configuration to automatically tag all feedback events with context
297
+ (e.g., app version, screen name)
298
+
299
+ ## Troubleshooting
300
+
301
+ | Issue | Solution |
302
+ | ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
303
+ | Widget not appearing | Verify `autoInject = true`; in SwiftUI apps call `SentrySDK.feedback.showWidget()` in `.onAppear` |
304
+ | Form not opening on shake | Set `useShakeGesture = true`; verify the device is not muted (shake may be overridden by system) |
305
+ | Name/email fields not pre-filled | Ensure `useSentryUser = true` (default) and `SentrySDK.setUser(...)` was called before the form opens |
306
+ | Submission error | Check network connectivity; verify DSN is correct; inspect `onSubmitError` callback for the error |
307
+ | Feedback not linked to an issue | Use `associatedEventId` parameter with the event ID from `SentrySDK.capture(error:)` |
308
+ | Screenshot not attached | Wrap PNG `Data` in an `Attachment` and pass via `SentryFeedback.init(attachments:)`; ensure the data is non-nil and valid |
309
+ | Widget floating behind other UI | Raise `widget.windowLevel` above your custom windows |
310
+ | `configureUserFeedback` not available | Requires v8.46.0+; check your SPM/CocoaPods version |