@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,394 @@
1
+ # Error Monitoring — Sentry Cocoa SDK
2
+
3
+ > Minimum SDK: `sentry-cocoa` v7.0.0+ Swift Error improvements: v8.7.0+ HTTP client
4
+ > error capture: v8.0.0+
5
+
6
+ ## Configuration
7
+
8
+ | Option | Type | Default | Description |
9
+ | -------------------------------------- | ----------------------- | ----------- | ------------------------------------------------------------------------- |
10
+ | `enableCrashHandler` | `Bool` | `true` | Master switch for crash reporting (signal handlers, Mach exceptions, C++) |
11
+ | `sampleRate` | `Float` (0.0–1.0) | `1.0` | Percentage of error events sent |
12
+ | `attachStacktrace` | `Bool` | `true` | Attach stack traces to all captured messages |
13
+ | `attachAllThreads` | `Bool` | `false` | Attach full stack traces for all threads (SDK 9.9+) |
14
+ | `maxBreadcrumbs` | `Int` | `100` | Max breadcrumbs per event |
15
+ | `enableAppHangTracking` | `Bool` | `true` | Detect main thread unresponsiveness |
16
+ | `appHangTimeoutInterval` | `Double` | `2.0` | Seconds before a hang is reported |
17
+ | `enableReportNonFullyBlockingAppHangs` | `Bool` | `true` | Include non-fully-blocking hangs where V2 is supported |
18
+ | `enableWatchdogTerminationTracking` | `Bool` | `true` | Track OS watchdog kills via heuristics |
19
+ | `enableCaptureFailedRequests` | `Bool` | `true` | Auto-capture HTTP client errors as Sentry events |
20
+ | `failedRequestStatusCodes` | `[HttpStatusCodeRange]` | `[500–599]` | Status code ranges that trigger error capture |
21
+ | `failedRequestTargets` | `[String]` | `[".*"]` | Hosts/regex patterns to monitor for HTTP errors |
22
+ | `attachScreenshot` | `Bool` | `false` | Capture screenshot when an error event fires |
23
+ | `attachViewHierarchy` | `Bool` | `false` | Capture view hierarchy when an error event fires |
24
+ | `sendDefaultPii` | `Bool` | `false` | Include PII (IP address, username) in events |
25
+
26
+ ## Code Examples
27
+
28
+ ### SDK initialization
29
+
30
+ ```swift
31
+ import Sentry
32
+
33
+ SentrySDK.start { options in
34
+ options.dsn = "https://examplePublicKey@o0.ingest.sentry.io/0"
35
+ options.environment = "production"
36
+ options.releaseName = "my-app@2.0.0+123"
37
+ options.enableCrashHandler = true // default; explicit for clarity
38
+ options.attachScreenshot = true
39
+ options.attachViewHierarchy = true
40
+ }
41
+ ```
42
+
43
+ ### Capture a message
44
+
45
+ ```swift
46
+ SentrySDK.capture(message: "Something noteworthy happened")
47
+ ```
48
+
49
+ ### Capture a Swift Error / NSError
50
+
51
+ ```swift
52
+ do {
53
+ try riskyOperation()
54
+ } catch {
55
+ SentrySDK.capture(error: error)
56
+ }
57
+ ```
58
+
59
+ ### Capture a custom SentryEvent
60
+
61
+ ```swift
62
+ let event = Event(level: .warning)
63
+ event.message = SentryMessage(formatted: "Checkout flow aborted")
64
+ event.tags = ["feature": "checkout"]
65
+ event.extra = ["cart_items": 3]
66
+ SentrySDK.capture(event: event)
67
+ ```
68
+
69
+ ### Swift Error enum — human-readable titles (v8.7.0+)
70
+
71
+ By default, Swift error enum cases appear as `LoginError - Code: 1`. To get readable
72
+ titles, conform to `CustomNSError`:
73
+
74
+ ```swift
75
+ enum LoginError: Error {
76
+ case wrongUser(id: String)
77
+ case wrongPassword
78
+ }
79
+
80
+ extension LoginError: CustomNSError {
81
+ var errorUserInfo: [String: Any] {
82
+ [NSDebugDescriptionErrorKey: debugDescription]
83
+ }
84
+
85
+ private var debugDescription: String {
86
+ switch self {
87
+ case .wrongUser(let id): return "Wrong user (id: \(id))"
88
+ case .wrongPassword: return "Wrong password"
89
+ }
90
+ }
91
+ }
92
+
93
+ // Captures "LoginError - Wrong user (id: 12345)" as the issue title
94
+ SentrySDK.capture(error: LoginError.wrongUser(id: "12345"))
95
+ ```
96
+
97
+ > Use `NSDebugDescriptionErrorKey`, NOT `NSLocalizedDescriptionKey`. Localized strings
98
+ > vary by device locale and create duplicate issues.
99
+
100
+ ### Capture with per-event scope
101
+
102
+ The scope callback receives an isolated copy — changes don’t affect global state:
103
+
104
+ ```swift
105
+ SentrySDK.capture(error: error) { scope in
106
+ scope.setTag(value: "checkout", key: "feature")
107
+ scope.setContext(value: ["amount": 99.99, "currency": "USD"], key: "payment")
108
+ }
109
+
110
+ SentrySDK.capture(message: "Payment declined") { scope in
111
+ scope.setLevel(.fatal)
112
+ scope.setTag(value: "stripe", key: "payment_provider")
113
+ }
114
+ ```
115
+
116
+ ### App hang detection
117
+
118
+ ```swift
119
+ SentrySDK.start { options in
120
+ options.dsn = "___PUBLIC_DSN___"
121
+ options.enableAppHangTracking = true
122
+ options.appHangTimeoutInterval = 2.0 // default; avoid values < 0.1
123
+
124
+ // V2 is the default in v9+ where supported; this option controls whether
125
+ // less-actionable non-fully-blocking hangs are reported.
126
+ options.enableReportNonFullyBlockingAppHangs = true
127
+ }
128
+
129
+ // Pause tracking during expected blocking operations (e.g., permission dialogs)
130
+ SentrySDK.pauseAppHangTracking()
131
+ // ... system dialog ...
132
+ SentrySDK.resumeAppHangTracking()
133
+ ```
134
+
135
+ V2 exception types:
136
+
137
+ | Type | Meaning |
138
+ | ---------------------------------- | ----------------------------------------------- |
139
+ | `App Hang Fully Blocked` | Main thread completely frozen |
140
+ | `App Hang Non Fully Blocked` | App stuck but still renders some frames |
141
+ | `Fatal App Hang Fully Blocked` | Force-quit / watchdog kill during full block |
142
+ | `Fatal App Hang Non Fully Blocked` | Force-quit / watchdog kill during partial block |
143
+
144
+ ### HTTP client error capture
145
+
146
+ ```swift
147
+ SentrySDK.start { options in
148
+ options.dsn = "___PUBLIC_DSN___"
149
+ options.enableCaptureFailedRequests = true
150
+
151
+ // Capture 4xx and 5xx
152
+ options.failedRequestStatusCodes = [
153
+ HttpStatusCodeRange(min: 400, max: 599)
154
+ ]
155
+
156
+ // Only monitor your own backend
157
+ options.failedRequestTargets = [
158
+ "api.myapp.com",
159
+ ".*\\.myapp\\.com" // regex supported
160
+ ]
161
+ }
162
+ ```
163
+
164
+ ### Scope management
165
+
166
+ ```swift
167
+ // Global scope — persists across all events
168
+ SentrySDK.configureScope { scope in
169
+ scope.setTag(value: "premium", key: "subscription")
170
+ scope.setExtra(value: 42, key: "retry_count")
171
+
172
+ let user = User()
173
+ user.email = "user@example.com"
174
+ user.userId = "abc123"
175
+ scope.setUser(user)
176
+
177
+ scope.setContext(value: [
178
+ "version": "2.1",
179
+ "platform": "ios"
180
+ ], key: "app_info")
181
+ }
182
+
183
+ // Clear a specific value
184
+ SentrySDK.configureScope { scope in
185
+ scope.removeTag(key: "subscription")
186
+ scope.setUser(nil) // clear user on logout
187
+ }
188
+
189
+ // Clear everything
190
+ SentrySDK.configureScope { $0.clear() }
191
+ ```
192
+
193
+ ### Set user identity
194
+
195
+ ```swift
196
+ let user = User()
197
+ user.userId = "user-abc-123"
198
+ user.email = "john.doe@example.com"
199
+ user.username = "johndoe"
200
+ user.data = ["plan": "premium"]
201
+ SentrySDK.setUser(user)
202
+
203
+ // On logout
204
+ SentrySDK.setUser(nil)
205
+ ```
206
+
207
+ ### Breadcrumbs
208
+
209
+ ```swift
210
+ let crumb = Breadcrumb()
211
+ crumb.level = .info
212
+ crumb.category = "auth"
213
+ crumb.type = "user"
214
+ crumb.message = "User logged in"
215
+ crumb.data = ["method": "oauth", "provider": "google"]
216
+ SentrySDK.addBreadcrumb(crumb)
217
+ ```
218
+
219
+ Filter breadcrumbs via `beforeBreadcrumb`:
220
+
221
+ ```swift
222
+ SentrySDK.start { options in
223
+ options.beforeBreadcrumb = { crumb in
224
+ if crumb.message?.contains("password") == true { return nil }
225
+ return crumb
226
+ }
227
+ }
228
+ ```
229
+
230
+ ### beforeSend hook — filter and modify events
231
+
232
+ ```swift
233
+ SentrySDK.start { options in
234
+ options.beforeSend = { event in
235
+ // Drop events from internal testers
236
+ if event.user?.email?.hasSuffix("@mycompany.com") == true {
237
+ return nil
238
+ }
239
+ // Suppress app hang events
240
+ // V1/macOS may use "App Hanging"; V2 uses the more specific values
241
+ // listed above. Inspect event.exceptions?.first?.type in beforeSend.
242
+ if event.exceptions?.first?.type?.contains("App Hang") == true {
243
+ return nil
244
+ }
245
+ // Scrub sensitive data
246
+ event.request?.cookies = nil
247
+ // Add global tag
248
+ event.tags?["processed_by"] = "beforeSend"
249
+ return event
250
+ }
251
+ }
252
+ ```
253
+
254
+ ### Screenshot and view hierarchy attachments
255
+
256
+ ```swift
257
+ SentrySDK.start { options in
258
+ options.attachScreenshot = true
259
+ options.screenshot.maskAllText = true // default: true
260
+ options.screenshot.maskAllImages = true // default: true
261
+ options.screenshot.maskedViewClasses = [MySecretView.self]
262
+ options.screenshot.unmaskedViewClasses = [MyLogoView.self]
263
+
264
+ options.attachViewHierarchy = true
265
+ options.reportAccessibilityIdentifier = true // disable if identifiers contain PII
266
+
267
+ // Conditional capture
268
+ options.beforeCaptureScreenshot = { event in event.level == .fatal }
269
+ options.beforeCaptureViewHierarchy = { _ in true }
270
+ }
271
+ ```
272
+
273
+ ### Fingerprinting and custom grouping
274
+
275
+ ```swift
276
+ // Per-event fingerprint via scope
277
+ SentrySDK.capture(error: error) { scope in
278
+ scope.fingerprint = ["payment-service-timeout", "stripe"]
279
+ }
280
+
281
+ // Pattern-based in beforeSend — extend default grouping
282
+ SentrySDK.start { options in
283
+ options.beforeSend = { event in
284
+ if let error = event.error as NSError?,
285
+ error.domain == NSURLErrorDomain,
286
+ let url = error.userInfo[NSURLErrorFailingURLErrorKey] as? String {
287
+ event.fingerprint = ["{{ default }}", url, String(error.code)]
288
+ }
289
+ return event
290
+ }
291
+ }
292
+
293
+ // Aggressive grouping — all SQLite errors → one issue
294
+ SentrySDK.start { options in
295
+ options.beforeSend = { event in
296
+ if let error = event.error as NSError?,
297
+ error.domain == NSSQLiteErrorDomain {
298
+ event.fingerprint = ["database-connection-error"]
299
+ }
300
+ return event
301
+ }
302
+ }
303
+ ```
304
+
305
+ `"{{ default }}"` substitutes Sentry’s standard hash, allowing you to _extend_ rather
306
+ than fully replace default grouping.
307
+
308
+ ### onLastRunStatusDetermined callback
309
+
310
+ ```swift
311
+ SentrySDK.start { options in
312
+ options.dsn = "___PUBLIC_DSN___"
313
+ options.onLastRunStatusDetermined = { status, crashEvent in
314
+ // Called once after init when the previous run's crash status is determined.
315
+ // Keep this minimal — complex logic can cascade into another crash.
316
+ if status == .didCrash {
317
+ UserDefaults.standard.set(true, forKey: "didCrashLastRun")
318
+ }
319
+ }
320
+ }
321
+ ```
322
+
323
+ ## Automatic Crash Reporting
324
+
325
+ When `enableCrashHandler = true` (default), the SDK installs:
326
+
327
+ - **Signal handlers** — SIGABRT, SIGBUS, SIGFPE, SIGILL, SIGSEGV, SIGTRAP
328
+ - **Mach exception handlers** — low-level kernel exceptions
329
+ - **C++ exception handlers** — `std::terminate` interception
330
+ - **Objective-C uncaught exception handler** — `NSSetUncaughtExceptionHandler`
331
+
332
+ > Warning: Always test crash reporting **without a debugger attached**. The debugger
333
+ > intercepts signals and prevents the SDK from capturing crashes.
334
+
335
+ ### macOS — uncaught NSException reporting
336
+
337
+ ```swift
338
+ SentrySDK.start { options in
339
+ options.dsn = "___PUBLIC_DSN___"
340
+ options.enableUncaughtNSExceptionReporting = true
341
+ }
342
+ ```
343
+
344
+ ### SIGTERM reporting (v8.27.0+)
345
+
346
+ ```swift
347
+ options.enableSigtermReporting = true // report background task timeouts
348
+ ```
349
+
350
+ ## Scope API Quick Reference
351
+
352
+ ```swift
353
+ SentrySDK.configureScope { scope in
354
+ scope.setTag(value: "v2", key: "api_version")
355
+ scope.removeTag(key: "api_version")
356
+ scope.setExtra(value: someObject, key: "debug_info")
357
+ scope.removeExtra(key: "debug_info")
358
+ scope.setContext(value: ["key": "value"], key: "my_context")
359
+ scope.removeContext(key: "my_context")
360
+ scope.setUser(User(userId: "12345"))
361
+ scope.setUser(nil)
362
+ scope.setLevel(.error)
363
+ scope.fingerprint = ["my-group-key"]
364
+ scope.addBreadcrumb(crumb)
365
+ scope.clear()
366
+ }
367
+ ```
368
+
369
+ ## Best Practices
370
+
371
+ - Set `releaseName` to a consistent value (e.g.,
372
+ `CFBundleShortVersionString + "+" + CFBundleVersion`) for regression tracking between
373
+ deployments
374
+ - Use `NSDebugDescriptionErrorKey` — not `NSLocalizedDescriptionKey` — for error user
375
+ info to avoid locale-based duplicate issues
376
+ - Use `beforeSend` to strip PII (`event.request?.cookies = nil`) when
377
+ `sendDefaultPii = false`
378
+ - Use `onLastRunStatusDetermined` only for lightweight operations (flag writes); heavy
379
+ logic risks a cascading crash
380
+ - Disable app hang tracking for **Widgets and Live Activities** to avoid false positives
381
+ - Use `initialScope` to set global context before the first event fires
382
+
383
+ ## Troubleshooting
384
+
385
+ | Issue | Solution |
386
+ | ------------------------------------------------- | ------------------------------------------------------------------------------------------------- |
387
+ | Crashes not appearing in Sentry | Test without debugger attached; debugger intercepts signals |
388
+ | Swift errors show “Code: 1” | Conform to `CustomNSError` and provide `NSDebugDescriptionErrorKey` in `errorUserInfo` |
389
+ | Duplicate issues from localization | Use `NSDebugDescriptionErrorKey`, not `NSLocalizedDescriptionKey` |
390
+ | App hang events too noisy | Raise `appHangTimeoutInterval`; or filter in `beforeSend` by exception type |
391
+ | HTTP errors not captured | Verify `enableCaptureFailedRequests = true` and `failedRequestStatusCodes` covers the status code |
392
+ | Screenshots contain PII | Enable `screenshot.maskAllText = true` and `screenshot.maskAllImages = true` (both default) |
393
+ | Events missing from `beforeSend` for transactions | `beforeSend` is for error/message events only; use `beforeSendSpan` for spans |
394
+ | `onLastRunStatusDetermined` not firing | SDK must be initialized on main thread; check `enableCrashHandler = true` |