@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,462 @@
1
+ # Session Replay — Sentry Next.js SDK
2
+
3
+ > Minimum SDK: `@sentry/nextjs` ≥7.27.0+\
4
+ > `replayCanvasIntegration()`: requires ≥7.98.0+
5
+
6
+ > ⚠️ **Browser-only feature.** Add `replayIntegration()` **only** in
7
+ > `instrumentation-client.ts`. Never in `sentry.server.config.ts` or
8
+ > `sentry.edge.config.ts`.
9
+
10
+ ---
11
+
12
+ ## Setup
13
+
14
+ Session Replay is bundled in `@sentry/nextjs` — no separate package needed.
15
+
16
+ ```typescript
17
+ // instrumentation-client.ts ← client-side only
18
+ import * as Sentry from "@sentry/nextjs";
19
+
20
+ Sentry.init({
21
+ dsn: process.env.NEXT_PUBLIC_SENTRY_DSN,
22
+
23
+ // Sample rates live at init level, NOT inside replayIntegration()
24
+ replaysSessionSampleRate: 0.1, // record 10% of all sessions from start
25
+ replaysOnErrorSampleRate: 1.0, // record 100% of sessions that hit an error
26
+
27
+ integrations: [
28
+ Sentry.replayIntegration({
29
+ maskAllText: true, // default: true
30
+ blockAllMedia: true, // default: true
31
+ }),
32
+ ],
33
+ });
34
+ ```
35
+
36
+ > **Dev tip:** Set `replaysSessionSampleRate: 1.0` during development to capture every
37
+ > session.
38
+
39
+ ### Where NOT to Add Replay
40
+
41
+ | Config file | Why |
42
+ | ------------------------------------- | ----------------------- |
43
+ | `sentry.server.config.ts` | Server runtime — no DOM |
44
+ | `sentry.edge.config.ts` | Edge runtime — no DOM |
45
+ | `instrumentation.ts` (server section) | Server-side code |
46
+ | Any Route Handler or Server Action | Server-side code |
47
+
48
+ ---
49
+
50
+ ## Sample Rates
51
+
52
+ | Option | Type | Default | Behavior |
53
+ | -------------------------- | -------------- | ------- | ----------------------------------------------------------------------------------------------------- |
54
+ | `replaysSessionSampleRate` | `number` (0–1) | `0` | Fraction of all sessions recorded continuously from start |
55
+ | `replaysOnErrorSampleRate` | `number` (0–1) | `0` | Fraction of sessions captured when an error occurs — flushes ~60s of buffer, then continues recording |
56
+
57
+ **Recommended production sample rates by traffic:**
58
+
59
+ | Daily Sessions | `replaysSessionSampleRate` | `replaysOnErrorSampleRate` |
60
+ | -------------- | -------------------------- | -------------------------- |
61
+ | 100,000+ | `0.01` (1%) | `1.0` |
62
+ | 10,000–100,000 | `0.10` (10%) | `1.0` |
63
+ | Under 10,000 | `0.25` (25%) | `1.0` |
64
+
65
+ Always keep `replaysOnErrorSampleRate: 1.0` — error replays provide the most debugging
66
+ value.
67
+
68
+ ### How Sampling Works
69
+
70
+ 1. When a session starts, `replaysSessionSampleRate` is checked.
71
+ - **Sampled → Session Mode:** Recording is sent to Sentry in real-time chunks.
72
+ - **Not sampled → Buffer Mode:** Last ~60 seconds are kept in memory only.
73
+ Nothing is sent unless an error occurs.
74
+ 2. If an error occurs in a buffered session, `replaysOnErrorSampleRate` is checked.
75
+ - **Sampled:** The 60-second buffer plus all subsequent data is sent to Sentry.
76
+ - **Not sampled:** Buffer is discarded; nothing is sent.
77
+
78
+ ---
79
+
80
+ ## Session Lifecycle
81
+
82
+ - **Starts:** When the SDK first loads/initializes.
83
+ - **Ends:** After **15 minutes of inactivity** OR after a **maximum of 60 minutes**
84
+ total.
85
+ - **Tab close:** Ends the session immediately.
86
+ - **Page refreshes/navigations** within the same domain and tab are captured within the
87
+ same session.
88
+
89
+ ---
90
+
91
+ ## `replayIntegration()` Options Reference
92
+
93
+ All options go inside `Sentry.replayIntegration({})`:
94
+
95
+ ### General Options
96
+
97
+ | Key | Type | Default | Description |
98
+ | -------------------------- | -------------------------- | ------------ | ---------------------------------------------------------------------------------------- |
99
+ | `stickySession` | `boolean` | `true` | Tracks a user across page refreshes. One tab = one session. |
100
+ | `mutationLimit` | `number` | `10000` | Max DOM mutations before recording stops (performance protection). |
101
+ | `mutationBreadcrumbLimit` | `number` | `750` | Threshold for sending a warning breadcrumb about large mutations. |
102
+ | `minReplayDuration` | `number` | `5000` ms | Min replay length before sending. Max: 15000. Only applies to session sampling. |
103
+ | `maxReplayDuration` | `number` | `3600000` ms | Maximum replay length. Capped at 1 hour. |
104
+ | `workerUrl` | `string` | `undefined` | URL to a self-hosted compression worker (avoids inline worker in bundle). |
105
+ | `beforeAddRecordingEvent` | `(event) => event \| null` | identity fn | Hook to filter/modify recording events before they leave the browser. |
106
+ | `beforeErrorSampling` | `(event) => boolean` | `() => true` | Called in buffer mode only. Return `false` to prevent this error from triggering upload. |
107
+ | `slowClickIgnoreSelectors` | `string[]` | `[]` | CSS selectors exempt from slow/rage click detection. |
108
+
109
+ ### Network Capture Options
110
+
111
+ | Key | Type | Default | Description |
112
+ | ------------------------ | ---------------------- | ------- | ------------------------------------------------------------------------------------ |
113
+ | `networkDetailAllowUrls` | `(string \| RegExp)[]` | `[]` | URLs for which to capture request/response headers and bodies. |
114
+ | `networkDetailDenyUrls` | `(string \| RegExp)[]` | `[]` | URLs to never capture details for. Takes precedence over allow list. |
115
+ | `networkCaptureBodies` | `boolean` | `true` | Whether to capture request/response bodies for allowed URLs. |
116
+ | `networkRequestHeaders` | `string[]` | `[]` | Additional request headers to capture (beyond Content-Type, Content-Length, Accept). |
117
+ | `networkResponseHeaders` | `string[]` | `[]` | Additional response headers to capture. |
118
+
119
+ ---
120
+
121
+ ## Privacy Masking
122
+
123
+ **All masking/blocking happens on the client before any data is sent to Sentry’s
124
+ servers.**
125
+
126
+ ### Default Privacy Behavior
127
+
128
+ | Setting | Default | Effect |
129
+ | --------------- | ------- | ------------------------------------------------------------------------------------------------------- |
130
+ | `maskAllText` | `true` | Every text character replaced with `*` |
131
+ | `maskAllInputs` | `true` | All `<input>` values masked |
132
+ | `blockAllMedia` | `true` | `img`, `svg`, `video`, `object`, `picture`, `embed`, `map`, `audio` replaced with same-size placeholder |
133
+
134
+ ### Privacy Options in `replayIntegration({})`
135
+
136
+ | Key | Type | Default | Description |
137
+ | --------------- | -------------------------- | -------------------------------------------- | -------------------------------------------------------------------- |
138
+ | `mask` | `string[]` | `['.sentry-mask', '[data-sentry-mask]']` | Additional selectors to mask. |
139
+ | `maskAllText` | `boolean` | `true` | Mask all text via `maskFn`. |
140
+ | `maskAllInputs` | `boolean` | `true` | Mask all input values. |
141
+ | `maskFn` | `(text: string) => string` | `(s) => '*'.repeat(s.length)` | Custom masking function. |
142
+ | `block` | `string[]` | `['.sentry-block', '[data-sentry-block]']` | Additional selectors to block (replaced with a blank same-size box). |
143
+ | `blockAllMedia` | `boolean` | `true` | Block all media elements. |
144
+ | `ignore` | `string[]` | `['.sentry-ignore', '[data-sentry-ignore]']` | Input events on matching elements are ignored entirely. |
145
+ | `unblock` | `string[]` | `[]` | Selectors to un-block from `blockAllMedia`. |
146
+ | `unmask` | `string[]` | `[]` | Selectors to un-mask from `maskAllText`. |
147
+
148
+ ### Three Privacy Mechanisms Compared
149
+
150
+ | Mechanism | What It Does | HTML Attribute | CSS Class |
151
+ | ---------- | -------------------------------------- | -------------------- | --------------- |
152
+ | **Mask** | Replaces text chars with `*` | `data-sentry-mask` | `sentry-mask` |
153
+ | **Block** | Replaces entire element with blank box | `data-sentry-block` | `sentry-block` |
154
+ | **Ignore** | Suppresses input events on the element | `data-sentry-ignore` | `sentry-ignore` |
155
+
156
+ ### Code Examples
157
+
158
+ **Opt-out of all masking (for non-PII sites):**
159
+
160
+ ```typescript
161
+ Sentry.replayIntegration({
162
+ // Only use if your site has NO sensitive data
163
+ maskAllText: false,
164
+ blockAllMedia: false,
165
+ });
166
+ ```
167
+
168
+ **Custom masking selectors:**
169
+
170
+ ```typescript
171
+ Sentry.replayIntegration({
172
+ mask: [".sensitive-field", "[data-pii]"],
173
+ unmask: [".safe-to-show"],
174
+ block: [".user-avatar", "#credit-card-form"],
175
+ unblock: [".public-image"],
176
+ ignore: ["#search-input"],
177
+ });
178
+ ```
179
+
180
+ **HTML-level masking (no JS config needed):**
181
+
182
+ ```html
183
+ <!-- Block this form entirely -->
184
+ <form data-sentry-block>...</form>
185
+
186
+ <!-- Mask text in this element -->
187
+ <div class="sentry-mask">Sensitive content</div>
188
+
189
+ <!-- Ignore events on this input -->
190
+ <input class="sentry-ignore" type="text" />
191
+ ```
192
+
193
+ > ⚠️ **v8 Breaking Change:** In SDK v8+, `unblock` and `unmask` no longer automatically
194
+ > add `sentry-unblock`/`sentry-unmask` class selectors.
195
+ > To restore v7 behavior:
196
+ >
197
+ > ```typescript
198
+ > Sentry.replayIntegration({
199
+ > unblock: [".sentry-unblock, [data-sentry-unblock]"],
200
+ > unmask: [".sentry-unmask, [data-sentry-unmask]"],
201
+ > });
202
+ > ```
203
+
204
+ ---
205
+
206
+ ## Network Request/Response Capture
207
+
208
+ By default, Replay captures only: URL, body size, method, status code.
209
+ SDK ≥7.50.0 required for headers/bodies.
210
+
211
+ ```typescript
212
+ Sentry.replayIntegration({
213
+ // Capture details for all same-origin requests
214
+ networkDetailAllowUrls: [
215
+ window.location.origin,
216
+ "api.example.com",
217
+ /^https:\/\/api\.example\.com/,
218
+ ],
219
+
220
+ // Exclude PII-heavy endpoints
221
+ networkDetailDenyUrls: ["/api/auth", /\/users\/\d+\/private/],
222
+
223
+ networkCaptureBodies: true,
224
+ networkRequestHeaders: ["Cache-Control", "X-Request-ID"],
225
+ networkResponseHeaders: ["X-RateLimit-Remaining"],
226
+ });
227
+ ```
228
+
229
+ **Limits:**
230
+
231
+ - Bodies truncated to **150k characters** max.
232
+ - Only text-based bodies captured: JSON, XML, FormData.
233
+ Binary/media excluded.
234
+ - Sentry applies server-side PII scrubbing (credit cards, SSNs, private keys) on
235
+ ingested data.
236
+
237
+ ---
238
+
239
+ ## Tree-Shaking Replay out of Server Bundles
240
+
241
+ **Critical for Next.js:** Session Replay is browser-only.
242
+ Prevent it from being bundled into server-side or edge bundles:
243
+
244
+ ```javascript
245
+ // next.config.js
246
+ const { withSentryConfig } = require("@sentry/nextjs");
247
+
248
+ module.exports = withSentryConfig(nextConfig, {
249
+ webpack: {
250
+ treeshake: {
251
+ removeDebugLogging: true, // Strip SDK internal debug logs
252
+ excludeReplayIframe: false, // Set to true to remove iframe content capture
253
+ excludeReplayShadowDOM: false, // Set to true to remove shadow DOM capture
254
+ excludeReplayCompressionWorker: false, // Remove if using custom workerUrl
255
+ },
256
+ },
257
+ });
258
+ ```
259
+
260
+ | Option | Type | Default | Description |
261
+ | -------------------------------- | --------- | ------- | -------------------------------------------------------------------------- |
262
+ | `removeDebugLogging` | `boolean` | `false` | Strips SDK internal `console.log` calls. Safe to enable in production. |
263
+ | `removeTracing` | `boolean` | `false` | Removes ALL tracing code. Never call `Sentry.startSpan()` etc. if enabled. |
264
+ | `excludeReplayIframe` | `boolean` | `false` | Removes iframe content capture from Replay bundle. |
265
+ | `excludeReplayShadowDOM` | `boolean` | `false` | Removes shadow DOM capture from Replay bundle. |
266
+ | `excludeReplayCompressionWorker` | `boolean` | `false` | Removes built-in compression worker. Requires providing `workerUrl`. |
267
+
268
+ > ⚠️ Tree-shaking only works with **webpack** builds.
269
+ > **Turbopack is not supported.**
270
+
271
+ ---
272
+
273
+ ## Canvas Recording
274
+
275
+ > ⚠️ **There is currently NO PII scrubbing in canvas recordings.** Use with caution.
276
+
277
+ Canvas recording is opt-in and requires SDK ≥7.98.0:
278
+
279
+ ```typescript
280
+ // instrumentation-client.ts
281
+ Sentry.init({
282
+ dsn: process.env.NEXT_PUBLIC_SENTRY_DSN,
283
+ replaysSessionSampleRate: 0.1,
284
+ replaysOnErrorSampleRate: 1.0,
285
+ integrations: [
286
+ Sentry.replayIntegration(),
287
+ Sentry.replayCanvasIntegration(), // adds canvas support
288
+ ],
289
+ });
290
+ ```
291
+
292
+ **For WebGL/3D canvases** (manual snapshot mode):
293
+
294
+ ```typescript
295
+ Sentry.replayCanvasIntegration({
296
+ enableManualSnapshot: true,
297
+ });
298
+
299
+ function paint() {
300
+ // ... your rendering commands ...
301
+
302
+ const canvasEl = document.querySelector<HTMLCanvasElement>("#my-canvas");
303
+ Sentry.getClient()
304
+ ?.getIntegrationByName("ReplayCanvas")
305
+ // @ts-ignore
306
+ ?.snapshot(canvasEl);
307
+ }
308
+ ```
309
+
310
+ ---
311
+
312
+ ## Lazy Loading Replay
313
+
314
+ To reduce initial bundle size, add `replayIntegration()` dynamically after the page
315
+ loads:
316
+
317
+ ```typescript
318
+ // instrumentation-client.ts
319
+
320
+ Sentry.init({
321
+ dsn: process.env.NEXT_PUBLIC_SENTRY_DSN,
322
+ replaysSessionSampleRate: 0.1,
323
+ replaysOnErrorSampleRate: 1.0,
324
+ integrations: [], // Replay NOT included here
325
+ });
326
+
327
+ // Later — after route change, user interaction, or feature flag check
328
+ import("@sentry/nextjs").then((lazySentry) => {
329
+ Sentry.addIntegration(lazySentry.replayIntegration());
330
+ });
331
+ ```
332
+
333
+ ---
334
+
335
+ ## Programmatic Replay Control
336
+
337
+ ```typescript
338
+ const replay = Sentry.getReplay();
339
+
340
+ replay.start(); // Start in session mode (sends continuously)
341
+ replay.startBuffering(); // Start in buffer mode (only sends on error)
342
+ await replay.stop(); // End the current session
343
+ await replay.flush(); // Force upload any pending buffered data
344
+ ```
345
+
346
+ Use cases:
347
+
348
+ - **User-based sampling:** Check authentication, then call `flush()` for premium users.
349
+ - **Route-based sampling:** Call `start()` only on high-value pages.
350
+ - **Error filtering:** Use `beforeErrorSampling` to prevent certain error types from
351
+ triggering upload:
352
+
353
+ ```typescript
354
+ Sentry.replayIntegration({
355
+ beforeErrorSampling: (event) => {
356
+ // Prevent console.error from triggering replay upload
357
+ if (event.logger === "console") return false;
358
+ return true;
359
+ },
360
+ });
361
+ ```
362
+
363
+ ---
364
+
365
+ ## Custom Compression Worker
366
+
367
+ Host the compression worker yourself to reduce bundle size and comply with strict CSP
368
+ policies:
369
+
370
+ ```typescript
371
+ // Step 1: Download worker.min.js from:
372
+ // https://github.com/getsentry/sentry-javascript/blob/develop/packages/replay-worker/examples/worker.min.js
373
+ // Host at /public/worker.min.js → served at /worker.min.js
374
+
375
+ // Step 2: Configure
376
+ Sentry.replayIntegration({
377
+ workerUrl: "/assets/worker.min.js",
378
+ });
379
+ ```
380
+
381
+ ```javascript
382
+ // next.config.js — remove built-in worker from bundle
383
+ module.exports = withSentryConfig(nextConfig, {
384
+ webpack: {
385
+ treeshake: {
386
+ excludeReplayCompressionWorker: true, // since you're hosting your own
387
+ },
388
+ },
389
+ });
390
+ ```
391
+
392
+ ---
393
+
394
+ ## Content Security Policy (CSP)
395
+
396
+ Session Replay uses a Web Worker for off-thread compression.
397
+ Required CSP directives:
398
+
399
+ ```
400
+ worker-src 'self' blob:
401
+ child-src 'self' blob: ← Required for Safari ≤ 15.4
402
+ ```
403
+
404
+ Also add `sentry.io` to your CORS policy so the Sentry replay iframe can fetch CSS,
405
+ fonts, and images.
406
+
407
+ **For Next.js, set headers in `next.config.js`:**
408
+
409
+ ```javascript
410
+ // next.config.js
411
+ module.exports = {
412
+ async headers() {
413
+ return [
414
+ {
415
+ source: "/(.*)",
416
+ headers: [
417
+ {
418
+ key: "Content-Security-Policy",
419
+ value: "default-src 'self'; worker-src 'self' blob:; child-src 'self' blob:;",
420
+ },
421
+ ],
422
+ },
423
+ ];
424
+ },
425
+ };
426
+ ```
427
+
428
+ ---
429
+
430
+ ## Performance Impact
431
+
432
+ - **Bundle size:** ~**50KB gzipped** added to browser bundle.
433
+ - **Compression:** Off-thread in a Web Worker — does not block the main thread.
434
+ - **Mutation protection:** Recording auto-stops if DOM mutations exceed `mutationLimit`
435
+ (default 10,000).
436
+ - **Large lists:** Virtualize or paginate long lists to avoid mutation limit triggers.
437
+
438
+ **Rage/slow click false positives** (Download/Print buttons that don’t mutate DOM):
439
+
440
+ ```typescript
441
+ Sentry.replayIntegration({
442
+ slowClickIgnoreSelectors: [".download-btn", 'a[label*="download" i]', "#print-button"],
443
+ });
444
+ ```
445
+
446
+ ---
447
+
448
+ ## Troubleshooting
449
+
450
+ | Problem | Cause | Solution |
451
+ | -------------------------------------------- | -------------------------------------- | ---------------------------------------------------------------------- |
452
+ | Replay data missing | CSP blocking blob: workers | Add `worker-src 'self' blob:` |
453
+ | CSS/fonts missing in replay | CORS blocking Sentry iframe | Add `sentry.io` to CORS policy |
454
+ | Replay not recording | Added to wrong config file | Move to `instrumentation-client.ts` only |
455
+ | Click positions misaligned | Custom variable-width fonts | Add `Access-Control-Allow-Origin` headers for fonts |
456
+ | Too many rage clicks | Non-mutating buttons (Download, Print) | Use `slowClickIgnoreSelectors` |
457
+ | Replay stops early | Too many DOM mutations | Virtualize lists; adjust `mutationLimit` |
458
+ | `captureConsoleIntegration` triggers replays | `console.error` counted as error | Use `beforeErrorSampling` to return `false` for console events |
459
+ | iframe content not masked | `srcdoc` attribute bypasses masking | Add `block: ["iframe"]` to block iframes entirely |
460
+ | Canvas not recording | Not using `replayCanvasIntegration()` | Add `Sentry.replayCanvasIntegration()` alongside `replayIntegration()` |
461
+ | Build error about browser globals in server | Replay leaking into server bundle | Use tree-shaking options in `withSentryConfig` |
462
+ | `replayCanvasIntegration` not available | SDK version too old | Upgrade to ≥7.98.0 |