@danieljvdm/dev-kit 1.0.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (330) hide show
  1. package/README.md +6 -6
  2. package/package.json +1 -1
  3. package/skill-sources.jsonc +6 -29
  4. package/skill-sources.lock.json +23 -109
  5. package/skills/animate/LICENSE +21 -0
  6. package/skills/animate/NOTICE +10 -0
  7. package/skills/animate/SKILL.md +34 -0
  8. package/skills/animate/references/gestures.md +27 -0
  9. package/skills/animate/references/glossary.md +136 -0
  10. package/skills/animate/references/implementation.md +22 -0
  11. package/skills/animate/references/opportunities.md +18 -0
  12. package/skills/animate/references/principles.md +48 -0
  13. package/skills/animate/references/review.md +19 -0
  14. package/skills/cloudflare-workers/LICENSE +202 -0
  15. package/skills/cloudflare-workers/NOTICE +9 -0
  16. package/skills/cloudflare-workers/SKILL.md +26 -0
  17. package/skills/cloudflare-workers/references/durable-objects.md +68 -0
  18. package/skills/cloudflare-workers/references/sandbox.md +48 -0
  19. package/skills/cloudflare-workers/references/workers.md +63 -0
  20. package/skills/cloudflare-workers/references/wrangler.md +56 -0
  21. package/skills/design-ui/LICENSE +21 -0
  22. package/skills/design-ui/NOTICE +8 -0
  23. package/skills/design-ui/SKILL.md +29 -0
  24. package/skills/design-ui/references/appearance.md +22 -0
  25. package/skills/design-ui/references/components.md +33 -0
  26. package/skills/design-ui/references/exploration.md +50 -0
  27. package/skills/design-ui/references/libraries.md +39 -0
  28. package/skills/design-ui/references/themes.md +23 -0
  29. package/skills/dev-kit/SKILL.md +19 -38
  30. package/skills/dev-kit/references/cloudflare-worker-api.md +1 -1
  31. package/skills/dev-kit/references/skills.md +2 -2
  32. package/skills/effect-development/SKILL.md +27 -0
  33. package/skills/effect-development/agents/openai.yaml +4 -0
  34. package/skills/effect-development/references/api/index.md +32 -0
  35. package/skills/effect-development/references/api/schema-codecs.md +15 -0
  36. package/skills/{build-effect-apis/references → effect-development/references/api}/verification.md +10 -5
  37. package/skills/{effect-architecture-audit/SKILL.md → effect-development/references/architecture/index.md} +1 -6
  38. package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-client.md +8 -6
  39. package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-testing.md +7 -2
  40. package/skills/effect-development/references/atom/index.md +40 -0
  41. package/skills/{build-effect-clis/references → effect-development/references/cli}/entrypoints-and-testing.md +6 -2
  42. package/skills/effect-development/references/cli/index.md +39 -0
  43. package/skills/effect-development/references/setup.md +15 -0
  44. package/skills/open-pull-request/SKILL.md +11 -115
  45. package/skills/open-pull-request/agents/openai.yaml +3 -3
  46. package/skills/open-pull-request/references/evidence.md +22 -0
  47. package/skills/open-pull-request/references/explanation.md +21 -0
  48. package/skills/open-pull-request/references/publication.md +21 -0
  49. package/skills/sentry/LICENSE +202 -0
  50. package/skills/sentry/LICENSE-UPSTREAM +21 -0
  51. package/skills/sentry/NOTICE +14 -0
  52. package/skills/sentry/SKILL.md +33 -0
  53. package/skills/sentry/references/alert-payloads.md +105 -0
  54. package/skills/sentry/references/alerts.md +17 -0
  55. package/skills/sentry/references/artifacts.md +25 -0
  56. package/skills/sentry/references/auth-token.md +65 -0
  57. package/skills/sentry/references/concepts/ai-monitoring.md +131 -0
  58. package/skills/sentry/references/concepts/choosing-a-signal.md +78 -0
  59. package/skills/sentry/references/concepts/crons.md +50 -0
  60. package/skills/sentry/references/concepts/data-scrubbing.md +43 -0
  61. package/skills/sentry/references/concepts/errors.md +40 -0
  62. package/skills/sentry/references/concepts/logging.md +85 -0
  63. package/skills/sentry/references/concepts/metrics.md +49 -0
  64. package/skills/sentry/references/concepts/monitors.md +78 -0
  65. package/skills/sentry/references/concepts/profiling.md +38 -0
  66. package/skills/sentry/references/concepts/reduce-volume.md +49 -0
  67. package/skills/sentry/references/concepts/releases.md +43 -0
  68. package/skills/sentry/references/concepts/session-replay.md +35 -0
  69. package/skills/sentry/references/concepts/tracing.md +54 -0
  70. package/skills/sentry/references/concepts/user-feedback.md +36 -0
  71. package/skills/sentry/references/debug-artifacts/android.md +68 -0
  72. package/skills/sentry/references/debug-artifacts/apple.md +96 -0
  73. package/skills/sentry/references/debug-artifacts/dotnet.md +70 -0
  74. package/skills/sentry/references/debug-artifacts/flutter.md +65 -0
  75. package/skills/sentry/references/debug-artifacts/index.md +75 -0
  76. package/skills/sentry/references/debug-artifacts/javascript.md +94 -0
  77. package/skills/sentry/references/debug-artifacts/matching.md +73 -0
  78. package/skills/sentry/references/debug-artifacts/react-native.md +75 -0
  79. package/skills/sentry/references/first-error-setup.md +25 -0
  80. package/skills/sentry/references/instrumentation.md +30 -0
  81. package/skills/sentry/references/issues.md +32 -0
  82. package/skills/sentry/references/new-project.md +17 -0
  83. package/skills/sentry/references/otel-exporter.md +30 -0
  84. package/skills/sentry/references/release-workflow.md +31 -0
  85. package/skills/sentry/references/releases/ci-pipeline.md +214 -0
  86. package/skills/sentry/references/releases/index.md +93 -0
  87. package/skills/sentry/references/releases/suspect-commits.md +155 -0
  88. package/skills/sentry/references/releases/tagging.md +131 -0
  89. package/skills/sentry/references/releases/troubleshooting.md +67 -0
  90. package/skills/sentry/references/sdks/android/crons.md +305 -0
  91. package/skills/sentry/references/sdks/android/error-monitoring.md +800 -0
  92. package/skills/sentry/references/sdks/android/index.md +748 -0
  93. package/skills/sentry/references/sdks/android/integrations.md +48 -0
  94. package/skills/sentry/references/sdks/android/logging.md +374 -0
  95. package/skills/sentry/references/sdks/android/metrics.md +288 -0
  96. package/skills/sentry/references/sdks/android/profiling.md +397 -0
  97. package/skills/sentry/references/sdks/android/session-replay.md +406 -0
  98. package/skills/sentry/references/sdks/android/tracing.md +861 -0
  99. package/skills/sentry/references/sdks/browser/error-monitoring.md +861 -0
  100. package/skills/sentry/references/sdks/browser/index.md +714 -0
  101. package/skills/sentry/references/sdks/browser/logging.md +315 -0
  102. package/skills/sentry/references/sdks/browser/profiling.md +236 -0
  103. package/skills/sentry/references/sdks/browser/session-replay.md +586 -0
  104. package/skills/sentry/references/sdks/browser/tracing.md +561 -0
  105. package/skills/sentry/references/sdks/browser/user-feedback.md +354 -0
  106. package/skills/sentry/references/sdks/cloudflare/ai-monitoring.md +661 -0
  107. package/skills/sentry/references/sdks/cloudflare/crons.md +231 -0
  108. package/skills/sentry/references/sdks/cloudflare/durable-objects.md +381 -0
  109. package/skills/sentry/references/sdks/cloudflare/error-monitoring.md +329 -0
  110. package/skills/sentry/references/sdks/cloudflare/index.md +698 -0
  111. package/skills/sentry/references/sdks/cloudflare/logging.md +169 -0
  112. package/skills/sentry/references/sdks/cloudflare/nodejs-compat.md +134 -0
  113. package/skills/sentry/references/sdks/cloudflare/tracing.md +475 -0
  114. package/skills/sentry/references/sdks/cocoa/error-monitoring.md +394 -0
  115. package/skills/sentry/references/sdks/cocoa/index.md +497 -0
  116. package/skills/sentry/references/sdks/cocoa/logging.md +209 -0
  117. package/skills/sentry/references/sdks/cocoa/metrics.md +136 -0
  118. package/skills/sentry/references/sdks/cocoa/profiling.md +223 -0
  119. package/skills/sentry/references/sdks/cocoa/session-replay.md +257 -0
  120. package/skills/sentry/references/sdks/cocoa/tracing.md +524 -0
  121. package/skills/sentry/references/sdks/cocoa/user-feedback.md +310 -0
  122. package/skills/sentry/references/sdks/dotnet/crons.md +465 -0
  123. package/skills/sentry/references/sdks/dotnet/error-monitoring.md +1100 -0
  124. package/skills/sentry/references/sdks/dotnet/index.md +614 -0
  125. package/skills/sentry/references/sdks/dotnet/logging.md +556 -0
  126. package/skills/sentry/references/sdks/dotnet/metrics.md +229 -0
  127. package/skills/sentry/references/sdks/dotnet/profiling.md +296 -0
  128. package/skills/sentry/references/sdks/dotnet/tracing.md +897 -0
  129. package/skills/sentry/references/sdks/elixir/crons.md +371 -0
  130. package/skills/sentry/references/sdks/elixir/error-monitoring.md +335 -0
  131. package/skills/sentry/references/sdks/elixir/index.md +383 -0
  132. package/skills/sentry/references/sdks/elixir/logging.md +239 -0
  133. package/skills/sentry/references/sdks/elixir/tracing.md +233 -0
  134. package/skills/sentry/references/sdks/flutter/ecosystem-integrations.md +70 -0
  135. package/skills/sentry/references/sdks/flutter/error-monitoring.md +312 -0
  136. package/skills/sentry/references/sdks/flutter/index.md +728 -0
  137. package/skills/sentry/references/sdks/flutter/logging.md +387 -0
  138. package/skills/sentry/references/sdks/flutter/metrics.md +310 -0
  139. package/skills/sentry/references/sdks/flutter/profiling.md +214 -0
  140. package/skills/sentry/references/sdks/flutter/session-replay.md +308 -0
  141. package/skills/sentry/references/sdks/flutter/tracing.md +502 -0
  142. package/skills/sentry/references/sdks/go/crons.md +270 -0
  143. package/skills/sentry/references/sdks/go/error-monitoring.md +361 -0
  144. package/skills/sentry/references/sdks/go/index.md +324 -0
  145. package/skills/sentry/references/sdks/go/logging.md +354 -0
  146. package/skills/sentry/references/sdks/go/metrics.md +273 -0
  147. package/skills/sentry/references/sdks/go/profiling.md +46 -0
  148. package/skills/sentry/references/sdks/go/tracing.md +366 -0
  149. package/skills/sentry/references/sdks/index.md +41 -0
  150. package/skills/sentry/references/sdks/nestjs/ai-monitoring.md +410 -0
  151. package/skills/sentry/references/sdks/nestjs/crons.md +268 -0
  152. package/skills/sentry/references/sdks/nestjs/error-monitoring.md +729 -0
  153. package/skills/sentry/references/sdks/nestjs/index.md +699 -0
  154. package/skills/sentry/references/sdks/nestjs/logging.md +174 -0
  155. package/skills/sentry/references/sdks/nestjs/metrics.md +243 -0
  156. package/skills/sentry/references/sdks/nestjs/profiling.md +127 -0
  157. package/skills/sentry/references/sdks/nestjs/tracing.md +762 -0
  158. package/skills/sentry/references/sdks/nextjs/ai-monitoring.md +494 -0
  159. package/skills/sentry/references/sdks/nextjs/crons.md +383 -0
  160. package/skills/sentry/references/sdks/nextjs/error-monitoring.md +974 -0
  161. package/skills/sentry/references/sdks/nextjs/index.md +491 -0
  162. package/skills/sentry/references/sdks/nextjs/logging.md +381 -0
  163. package/skills/sentry/references/sdks/nextjs/metrics.md +411 -0
  164. package/skills/sentry/references/sdks/nextjs/profiling.md +403 -0
  165. package/skills/sentry/references/sdks/nextjs/session-replay.md +462 -0
  166. package/skills/sentry/references/sdks/nextjs/tracing.md +628 -0
  167. package/skills/sentry/references/sdks/node/ai-monitoring.md +303 -0
  168. package/skills/sentry/references/sdks/node/crons.md +432 -0
  169. package/skills/sentry/references/sdks/node/error-monitoring.md +1125 -0
  170. package/skills/sentry/references/sdks/node/index.md +942 -0
  171. package/skills/sentry/references/sdks/node/logging.md +380 -0
  172. package/skills/sentry/references/sdks/node/metrics.md +278 -0
  173. package/skills/sentry/references/sdks/node/profiling.md +373 -0
  174. package/skills/sentry/references/sdks/node/tracing.md +878 -0
  175. package/skills/sentry/references/sdks/php/ai-monitoring.md +310 -0
  176. package/skills/sentry/references/sdks/php/crons.md +265 -0
  177. package/skills/sentry/references/sdks/php/error-monitoring.md +626 -0
  178. package/skills/sentry/references/sdks/php/index.md +362 -0
  179. package/skills/sentry/references/sdks/php/laravel.md +542 -0
  180. package/skills/sentry/references/sdks/php/logging.md +242 -0
  181. package/skills/sentry/references/sdks/php/metrics.md +193 -0
  182. package/skills/sentry/references/sdks/php/profiling.md +115 -0
  183. package/skills/sentry/references/sdks/php/symfony.md +552 -0
  184. package/skills/sentry/references/sdks/php/tracing.md +516 -0
  185. package/skills/sentry/references/sdks/python/ai-monitoring.md +351 -0
  186. package/skills/sentry/references/sdks/python/crons.md +218 -0
  187. package/skills/sentry/references/sdks/python/error-monitoring.md +292 -0
  188. package/skills/sentry/references/sdks/python/index.md +361 -0
  189. package/skills/sentry/references/sdks/python/logging.md +234 -0
  190. package/skills/sentry/references/sdks/python/metrics.md +154 -0
  191. package/skills/sentry/references/sdks/python/profiling.md +120 -0
  192. package/skills/sentry/references/sdks/python/tracing.md +364 -0
  193. package/skills/sentry/references/sdks/react/error-monitoring.md +1607 -0
  194. package/skills/sentry/references/sdks/react/index.md +492 -0
  195. package/skills/sentry/references/sdks/react/logging.md +364 -0
  196. package/skills/sentry/references/sdks/react/profiling.md +322 -0
  197. package/skills/sentry/references/sdks/react/react-features.md +1272 -0
  198. package/skills/sentry/references/sdks/react/session-replay.md +1193 -0
  199. package/skills/sentry/references/sdks/react/tracing.md +1415 -0
  200. package/skills/sentry/references/sdks/react-native/error-monitoring.md +1481 -0
  201. package/skills/sentry/references/sdks/react-native/expo-config-plugin.md +45 -0
  202. package/skills/sentry/references/sdks/react-native/index.md +1030 -0
  203. package/skills/sentry/references/sdks/react-native/logging.md +444 -0
  204. package/skills/sentry/references/sdks/react-native/profiling.md +386 -0
  205. package/skills/sentry/references/sdks/react-native/session-replay.md +704 -0
  206. package/skills/sentry/references/sdks/react-native/tracing.md +1086 -0
  207. package/skills/sentry/references/sdks/react-native/user-feedback.md +815 -0
  208. package/skills/sentry/references/sdks/react-router-framework/error-monitoring.md +127 -0
  209. package/skills/sentry/references/sdks/react-router-framework/index.md +411 -0
  210. package/skills/sentry/references/sdks/react-router-framework/logging.md +66 -0
  211. package/skills/sentry/references/sdks/react-router-framework/profiling.md +57 -0
  212. package/skills/sentry/references/sdks/react-router-framework/react-router-framework-features.md +110 -0
  213. package/skills/sentry/references/sdks/react-router-framework/session-replay.md +67 -0
  214. package/skills/sentry/references/sdks/react-router-framework/tracing.md +96 -0
  215. package/skills/sentry/references/sdks/react-router-framework/user-feedback.md +71 -0
  216. package/skills/sentry/references/sdks/ruby/crons.md +184 -0
  217. package/skills/sentry/references/sdks/ruby/error-monitoring.md +248 -0
  218. package/skills/sentry/references/sdks/ruby/index.md +297 -0
  219. package/skills/sentry/references/sdks/ruby/logging.md +168 -0
  220. package/skills/sentry/references/sdks/ruby/metrics.md +196 -0
  221. package/skills/sentry/references/sdks/ruby/migration.md +321 -0
  222. package/skills/sentry/references/sdks/ruby/profiling.md +107 -0
  223. package/skills/sentry/references/sdks/ruby/tracing.md +388 -0
  224. package/skills/sentry/references/sdks/svelte/error-monitoring.md +456 -0
  225. package/skills/sentry/references/sdks/svelte/index.md +467 -0
  226. package/skills/sentry/references/sdks/svelte/logging.md +344 -0
  227. package/skills/sentry/references/sdks/svelte/session-replay.md +369 -0
  228. package/skills/sentry/references/sdks/svelte/tracing.md +406 -0
  229. package/skills/sentry/references/sdks/tanstack-start/error-monitoring.md +149 -0
  230. package/skills/sentry/references/sdks/tanstack-start/index.md +381 -0
  231. package/skills/sentry/references/sdks/tanstack-start/logging.md +74 -0
  232. package/skills/sentry/references/sdks/tanstack-start/session-replay.md +76 -0
  233. package/skills/sentry/references/sdks/tanstack-start/tanstackstart-features.md +128 -0
  234. package/skills/sentry/references/sdks/tanstack-start/tracing.md +123 -0
  235. package/skills/sentry/references/sdks/tanstack-start/user-feedback.md +81 -0
  236. package/skills/sentry/references/search-query-language.md +226 -0
  237. package/skills/sentry/references/semantics/angular.md +7 -0
  238. package/skills/sentry/references/semantics/app.md +28 -0
  239. package/skills/sentry/references/semantics/art.md +17 -0
  240. package/skills/sentry/references/semantics/aws.md +43 -0
  241. package/skills/sentry/references/semantics/browser.md +34 -0
  242. package/skills/sentry/references/semantics/cache.md +12 -0
  243. package/skills/sentry/references/semantics/client.md +8 -0
  244. package/skills/sentry/references/semantics/cloud.md +12 -0
  245. package/skills/sentry/references/semantics/cloudflare.md +23 -0
  246. package/skills/sentry/references/semantics/code.md +11 -0
  247. package/skills/sentry/references/semantics/culture.md +11 -0
  248. package/skills/sentry/references/semantics/db.md +21 -0
  249. package/skills/sentry/references/semantics/device.md +43 -0
  250. package/skills/sentry/references/semantics/error.md +7 -0
  251. package/skills/sentry/references/semantics/event.md +8 -0
  252. package/skills/sentry/references/semantics/exception.md +10 -0
  253. package/skills/sentry/references/semantics/faas.md +19 -0
  254. package/skills/sentry/references/semantics/file.md +8 -0
  255. package/skills/sentry/references/semantics/flag.md +7 -0
  256. package/skills/sentry/references/semantics/gcp.md +16 -0
  257. package/skills/sentry/references/semantics/gen_ai.md +53 -0
  258. package/skills/sentry/references/semantics/general.md +11 -0
  259. package/skills/sentry/references/semantics/graphql.md +9 -0
  260. package/skills/sentry/references/semantics/grpc.md +19 -0
  261. package/skills/sentry/references/semantics/http.md +34 -0
  262. package/skills/sentry/references/semantics/index.md +63 -0
  263. package/skills/sentry/references/semantics/jsonrpc.md +8 -0
  264. package/skills/sentry/references/semantics/jvm.md +12 -0
  265. package/skills/sentry/references/semantics/koa.md +7 -0
  266. package/skills/sentry/references/semantics/logger.md +7 -0
  267. package/skills/sentry/references/semantics/mcp.md +37 -0
  268. package/skills/sentry/references/semantics/mdc.md +7 -0
  269. package/skills/sentry/references/semantics/messaging.md +23 -0
  270. package/skills/sentry/references/semantics/middleware.md +7 -0
  271. package/skills/sentry/references/semantics/navigation.md +9 -0
  272. package/skills/sentry/references/semantics/nel.md +11 -0
  273. package/skills/sentry/references/semantics/network.md +17 -0
  274. package/skills/sentry/references/semantics/os.md +15 -0
  275. package/skills/sentry/references/semantics/otel.md +10 -0
  276. package/skills/sentry/references/semantics/params.md +7 -0
  277. package/skills/sentry/references/semantics/process.md +14 -0
  278. package/skills/sentry/references/semantics/react.md +7 -0
  279. package/skills/sentry/references/semantics/remix.md +7 -0
  280. package/skills/sentry/references/semantics/resource.md +7 -0
  281. package/skills/sentry/references/semantics/rpc.md +10 -0
  282. package/skills/sentry/references/semantics/score.md +10 -0
  283. package/skills/sentry/references/semantics/sentry.md +69 -0
  284. package/skills/sentry/references/semantics/server.md +8 -0
  285. package/skills/sentry/references/semantics/service.md +8 -0
  286. package/skills/sentry/references/semantics/session.md +7 -0
  287. package/skills/sentry/references/semantics/state.md +7 -0
  288. package/skills/sentry/references/semantics/thread.md +8 -0
  289. package/skills/sentry/references/semantics/timber.md +7 -0
  290. package/skills/sentry/references/semantics/trpc.md +8 -0
  291. package/skills/sentry/references/semantics/ui.md +18 -0
  292. package/skills/sentry/references/semantics/url.md +15 -0
  293. package/skills/sentry/references/semantics/user.md +17 -0
  294. package/skills/sentry/references/semantics/user_agent.md +7 -0
  295. package/skills/sentry/references/semantics/vercel.md +42 -0
  296. package/skills/sentry/references/setup-verification.md +39 -0
  297. package/skills/sentry/references/snapshots/github-actions-fanout.md +206 -0
  298. package/skills/sentry/references/snapshots/github-actions-simple.md +102 -0
  299. package/skills/sentry/references/snapshots/github-actions-swift-snapshot-testing.md +118 -0
  300. package/skills/sentry/references/snapshots/index.md +19 -0
  301. package/skills/sentry/references/snapshots/snapshot-previews.md +100 -0
  302. package/skills/sentry/references/snapshots/snapshots.md +123 -0
  303. package/skills/sentry/references/snapshots/wizard-setup.md +134 -0
  304. package/skills/testing/LICENSE +21 -0
  305. package/skills/testing/NOTICE +7 -0
  306. package/skills/testing/SKILL.md +13 -19
  307. package/skills/testing/agents/openai.yaml +1 -2
  308. package/skills/testing/references/selection.md +23 -0
  309. package/skills/testing/references/tdd.md +19 -0
  310. package/skills/testing/references/test-design.md +17 -0
  311. package/src/catalog.ts +1 -7
  312. package/skills/build-effect-apis/SKILL.md +0 -81
  313. package/skills/build-effect-apis/agents/openai.yaml +0 -4
  314. package/skills/build-effect-clis/SKILL.md +0 -92
  315. package/skills/build-effect-clis/agents/openai.yaml +0 -4
  316. package/skills/effect-architecture-audit/agents/openai.yaml +0 -4
  317. package/skills/effect-atom-state/SKILL.md +0 -97
  318. package/skills/effect-atom-state/agents/openai.yaml +0 -4
  319. package/skills/effect-ts/SKILL.md +0 -35
  320. package/skills/effect-ts/agents/openai.yaml +0 -4
  321. /package/skills/{build-effect-apis/references → effect-development/references/api}/cloudflare-workers.md +0 -0
  322. /package/skills/{build-effect-apis/references → effect-development/references/api}/runtime-assembly.md +0 -0
  323. /package/skills/{build-effect-apis/references → effect-development/references/api}/server-and-middleware.md +0 -0
  324. /package/skills/{build-effect-apis/references → effect-development/references/api}/shared-contracts.md +0 -0
  325. /package/skills/{effect-architecture-audit/references → effect-development/references/architecture}/service-and-boundary-audit.md +0 -0
  326. /package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-lifecycle.md +0 -0
  327. /package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-workflows.md +0 -0
  328. /package/skills/{effect-atom-state/references → effect-development/references/atom}/tanstack-start.md +0 -0
  329. /package/skills/{build-effect-clis/references → effect-development/references/cli}/command-design.md +0 -0
  330. /package/skills/{build-effect-clis/references → effect-development/references/cli}/processes-and-platform.md +0 -0
@@ -0,0 +1,465 @@
1
+ # Crons — Sentry .NET SDK
2
+
3
+ > Minimum SDK: `Sentry` ≥ 4.2.0
4
+
5
+ ---
6
+
7
+ ## Overview
8
+
9
+ Sentry Cron Monitoring detects:
10
+
11
+ - **Missed check-ins** — job didn’t run at the expected time
12
+ - **Runtime failures** — job ran but encountered an error
13
+ - **Timeouts** — job exceeded `MaxRuntime` without completing
14
+
15
+ ---
16
+
17
+ ## `CaptureCheckIn()` API
18
+
19
+ ```csharp
20
+ // Signature
21
+ SentryId CaptureCheckIn(
22
+ string monitorSlug,
23
+ CheckInStatus status,
24
+ SentryId? sentryId = null,
25
+ TimeSpan? duration = null,
26
+ Scope? scope = null,
27
+ Action<SentryMonitorOptions>? configureMonitorOptions = null
28
+ )
29
+ ```
30
+
31
+ ### Check-In Status Values
32
+
33
+ | Status | When to use |
34
+ | -------------------------- | --------------------------------- |
35
+ | `CheckInStatus.InProgress` | Job has started, work is underway |
36
+ | `CheckInStatus.Ok` | Job completed successfully |
37
+ | `CheckInStatus.Error` | Job failed — an error occurred |
38
+
39
+ ---
40
+
41
+ ## Pattern A: Two-Signal Check-Ins (Recommended)
42
+
43
+ Sends two signals: `InProgress` at start and `Ok`/`Error` at end.\
44
+ Enables detection of both **missed jobs** and **timeout violations**.
45
+
46
+ ```csharp
47
+ // Mark job as started — save the checkInId for correlation
48
+ var checkInId = SentrySdk.CaptureCheckIn("my-monitor-slug", CheckInStatus.InProgress);
49
+
50
+ try
51
+ {
52
+ DoWork();
53
+
54
+ // Mark as successful
55
+ SentrySdk.CaptureCheckIn("my-monitor-slug", CheckInStatus.Ok, checkInId);
56
+ }
57
+ catch (Exception ex)
58
+ {
59
+ // Mark as failed
60
+ SentrySdk.CaptureCheckIn("my-monitor-slug", CheckInStatus.Error, checkInId);
61
+ throw;
62
+ }
63
+ ```
64
+
65
+ ---
66
+
67
+ ## Pattern B: Heartbeat Check-In (Simpler)
68
+
69
+ Sends a single check-in **after** execution.
70
+ Detects **missed jobs** only — cannot detect timeouts.
71
+
72
+ ```csharp
73
+ try
74
+ {
75
+ DoWork();
76
+ SentrySdk.CaptureCheckIn("my-monitor-slug", CheckInStatus.Ok);
77
+ }
78
+ catch
79
+ {
80
+ SentrySdk.CaptureCheckIn("my-monitor-slug", CheckInStatus.Error);
81
+ throw;
82
+ }
83
+ ```
84
+
85
+ Optionally report the actual runtime duration:
86
+
87
+ ```csharp
88
+ var sw = Stopwatch.StartNew();
89
+ DoWork();
90
+ sw.Stop();
91
+
92
+ SentrySdk.CaptureCheckIn(
93
+ "my-monitor-slug",
94
+ CheckInStatus.Ok,
95
+ duration: sw.Elapsed
96
+ );
97
+ ```
98
+
99
+ ---
100
+
101
+ ## Programmatic Monitor Configuration (Upsert)
102
+
103
+ Create or update a monitor directly from code via `configureMonitorOptions`. This is
104
+ sent with the **first** check-in and is idempotent — safe to call on every run.
105
+
106
+ ### Crontab Schedule
107
+
108
+ ```csharp
109
+ var checkInId = SentrySdk.CaptureCheckIn(
110
+ "my-scheduled-job",
111
+ CheckInStatus.InProgress,
112
+ configureMonitorOptions: options =>
113
+ {
114
+ options.Interval("0 2 * * *"); // 2 AM daily (crontab expression)
115
+ options.CheckInMargin = TimeSpan.FromMinutes(5); // 5 min grace period before "missed"
116
+ options.MaxRuntime = TimeSpan.FromMinutes(30); // alert if running longer than 30 min
117
+ options.TimeZone = "America/New_York"; // IANA timezone
118
+ options.FailureIssueThreshold = 2; // create issue after 2 consecutive failures
119
+ options.RecoveryThreshold = 1; // resolve issue after 1 consecutive success
120
+ }
121
+ );
122
+ ```
123
+
124
+ ### Interval-Based Schedule
125
+
126
+ ```csharp
127
+ var checkInId = SentrySdk.CaptureCheckIn(
128
+ "my-interval-job",
129
+ CheckInStatus.InProgress,
130
+ configureMonitorOptions: options =>
131
+ {
132
+ options.Interval(6, SentryMonitorInterval.Hour); // every 6 hours
133
+ options.CheckInMargin = TimeSpan.FromMinutes(30);
134
+ options.MaxRuntime = TimeSpan.FromMinutes(120);
135
+ options.TimeZone = "UTC";
136
+ options.FailureIssueThreshold = 1;
137
+ options.RecoveryThreshold = 3;
138
+ }
139
+ );
140
+ ```
141
+
142
+ ### `SentryMonitorInterval` Values
143
+
144
+ | Value | Description |
145
+ | ------------------------------ | ------------------- |
146
+ | `SentryMonitorInterval.Minute` | Per-minute interval |
147
+ | `SentryMonitorInterval.Hour` | Per-hour interval |
148
+ | `SentryMonitorInterval.Day` | Per-day interval |
149
+ | `SentryMonitorInterval.Week` | Per-week interval |
150
+ | `SentryMonitorInterval.Month` | Per-month interval |
151
+ | `SentryMonitorInterval.Year` | Per-year interval |
152
+
153
+ ---
154
+
155
+ ## Monitor Configuration Reference
156
+
157
+ | Option | Type | Description |
158
+ | -------------------------- | ---------- | ------------------------------------------------------- |
159
+ | `Interval(crontab)` | method | Standard crontab expression (e.g., `"*/15 * * * *"`) |
160
+ | `Interval(interval, unit)` | method | alternative interval-based schedule |
161
+ | `CheckInMargin` | `TimeSpan` | Grace period before a missing check-in is flagged |
162
+ | `MaxRuntime` | `TimeSpan` | Maximum allowed runtime before a timeout alert |
163
+ | `TimeZone` | `string` | IANA timezone name (e.g., `"UTC"`, `"America/Chicago"`) |
164
+ | `FailureIssueThreshold` | `int` | Consecutive failures before a Sentry issue is opened |
165
+ | `RecoveryThreshold` | `int` | Consecutive successes before a Sentry issue is closed |
166
+
167
+ ---
168
+
169
+ ## ASP.NET Core — BackgroundService / IHostedService
170
+
171
+ The most common .NET pattern for scheduled jobs is a `BackgroundService`. Pair it with
172
+ `CaptureCheckIn` for full monitoring:
173
+
174
+ ```csharp
175
+ using Microsoft.Extensions.Hosting;
176
+ using Microsoft.Extensions.Logging;
177
+ using Sentry;
178
+
179
+ public class NightlyReportJob : BackgroundService
180
+ {
181
+ private readonly ILogger<NightlyReportJob> _logger;
182
+ private const string MonitorSlug = "nightly-report";
183
+
184
+ public NightlyReportJob(ILogger<NightlyReportJob> logger)
185
+ => _logger = logger;
186
+
187
+ protected override async Task ExecuteAsync(CancellationToken stoppingToken)
188
+ {
189
+ while (!stoppingToken.IsCancellationRequested)
190
+ {
191
+ // Wait until next scheduled time (e.g., 2 AM)
192
+ await WaitUntilNextRunAsync(stoppingToken);
193
+
194
+ var checkInId = SentrySdk.CaptureCheckIn(
195
+ MonitorSlug,
196
+ CheckInStatus.InProgress,
197
+ configureMonitorOptions: o =>
198
+ {
199
+ o.Interval("0 2 * * *"); // 2 AM daily
200
+ o.CheckInMargin = TimeSpan.FromMinutes(15);
201
+ o.MaxRuntime = TimeSpan.FromMinutes(60);
202
+ o.TimeZone = "UTC";
203
+ o.FailureIssueThreshold = 1;
204
+ o.RecoveryThreshold = 1;
205
+ }
206
+ );
207
+
208
+ try
209
+ {
210
+ _logger.LogInformation("Starting nightly report generation");
211
+ await GenerateReportAsync(stoppingToken);
212
+ _logger.LogInformation("Nightly report completed successfully");
213
+
214
+ SentrySdk.CaptureCheckIn(MonitorSlug, CheckInStatus.Ok, checkInId);
215
+ }
216
+ catch (Exception ex)
217
+ {
218
+ _logger.LogError(ex, "Nightly report failed");
219
+ SentrySdk.CaptureCheckIn(MonitorSlug, CheckInStatus.Error, checkInId);
220
+ }
221
+ }
222
+ }
223
+
224
+ private async Task WaitUntilNextRunAsync(CancellationToken ct)
225
+ {
226
+ var now = DateTime.UtcNow;
227
+ var nextRun = now.Date.AddDays(now.Hour >= 2 ? 1 : 0).AddHours(2);
228
+ var delay = nextRun - now;
229
+ if (delay > TimeSpan.Zero)
230
+ await Task.Delay(delay, ct);
231
+ }
232
+
233
+ private Task GenerateReportAsync(CancellationToken ct) => Task.CompletedTask; // replace with real logic
234
+ }
235
+ ```
236
+
237
+ Register the hosted service in `Program.cs`:
238
+
239
+ ```csharp
240
+ builder.Services.AddHostedService<NightlyReportJob>();
241
+ ```
242
+
243
+ ### Minimal IHostedService Implementation
244
+
245
+ For simpler one-shot or timer-based jobs:
246
+
247
+ ```csharp
248
+ public class SyncJob : IHostedService, IDisposable
249
+ {
250
+ private Timer? _timer;
251
+ private const string MonitorSlug = "data-sync";
252
+
253
+ public Task StartAsync(CancellationToken cancellationToken)
254
+ {
255
+ _timer = new Timer(RunJob, null, TimeSpan.Zero, TimeSpan.FromHours(1));
256
+ return Task.CompletedTask;
257
+ }
258
+
259
+ private void RunJob(object? state)
260
+ {
261
+ var checkInId = SentrySdk.CaptureCheckIn(
262
+ MonitorSlug,
263
+ CheckInStatus.InProgress,
264
+ configureMonitorOptions: o =>
265
+ {
266
+ o.Interval(1, SentryMonitorInterval.Hour);
267
+ o.CheckInMargin = TimeSpan.FromMinutes(5);
268
+ o.MaxRuntime = TimeSpan.FromMinutes(30);
269
+ o.TimeZone = "UTC";
270
+ }
271
+ );
272
+
273
+ try
274
+ {
275
+ SyncData();
276
+ SentrySdk.CaptureCheckIn(MonitorSlug, CheckInStatus.Ok, checkInId);
277
+ }
278
+ catch
279
+ {
280
+ SentrySdk.CaptureCheckIn(MonitorSlug, CheckInStatus.Error, checkInId);
281
+ throw;
282
+ }
283
+ }
284
+
285
+ private void SyncData() { /* real logic here */ }
286
+
287
+ public Task StopAsync(CancellationToken cancellationToken)
288
+ {
289
+ _timer?.Change(Timeout.Infinite, 0);
290
+ return Task.CompletedTask;
291
+ }
292
+
293
+ public void Dispose() => _timer?.Dispose();
294
+ }
295
+ ```
296
+
297
+ ---
298
+
299
+ ## Hangfire Integration
300
+
301
+ A dedicated `Sentry.Hangfire` package wraps check-ins automatically around Hangfire job
302
+ execution:
303
+
304
+ ```shell
305
+ dotnet add package Sentry.Hangfire
306
+ ```
307
+
308
+ Register the integration when configuring Hangfire:
309
+
310
+ ```csharp
311
+ // Program.cs
312
+ builder.Services.AddHangfire(config =>
313
+ {
314
+ config.UseSqlServerStorage(connectionString);
315
+ config.UseSentry(); // ← enables automatic check-in wrapping
316
+ });
317
+ builder.Services.AddHangfireServer();
318
+ ```
319
+
320
+ With Hangfire, check-ins are sent automatically for jobs annotated with the
321
+ `[SentryMonitorSlug("...")]` attribute — no manual `CaptureCheckIn` calls needed:
322
+
323
+ ```csharp
324
+ public class MyJob
325
+ {
326
+ [SentryMonitorSlug("my-hangfire-job")]
327
+ public void Execute() { /* ... */ }
328
+ }
329
+ ```
330
+
331
+ See the
332
+ [Hangfire integration guide](https://docs.sentry.io/platforms/dotnet/crons/hangfire/)
333
+ for full details.
334
+
335
+ ---
336
+
337
+ ## Quartz.NET Integration
338
+
339
+ **No official Quartz.NET package exists.** Use `CaptureCheckIn` manually inside
340
+ `IJob.Execute()`:
341
+
342
+ ```csharp
343
+ using Quartz;
344
+ using Sentry;
345
+
346
+ [DisallowConcurrentExecution]
347
+ public class MyQuartzJob : IJob
348
+ {
349
+ public async Task Execute(IJobExecutionContext context)
350
+ {
351
+ var slug = $"quartz-{context.JobDetail.Key.Name}";
352
+
353
+ var checkInId = SentrySdk.CaptureCheckIn(slug, CheckInStatus.InProgress,
354
+ configureMonitorOptions: o =>
355
+ {
356
+ o.Interval("0 */6 * * *"); // every 6 hours
357
+ o.CheckInMargin = TimeSpan.FromMinutes(10);
358
+ o.MaxRuntime = TimeSpan.FromMinutes(60);
359
+ o.TimeZone = "UTC";
360
+ }
361
+ );
362
+
363
+ try
364
+ {
365
+ await DoWorkAsync(context.CancellationToken);
366
+ SentrySdk.CaptureCheckIn(slug, CheckInStatus.Ok, checkInId);
367
+ }
368
+ catch (Exception ex)
369
+ {
370
+ SentrySdk.CaptureCheckIn(slug, CheckInStatus.Error, checkInId);
371
+ throw new JobExecutionException(ex);
372
+ }
373
+ }
374
+ }
375
+ ```
376
+
377
+ ---
378
+
379
+ ## Long-Running Job Pattern (Heartbeat Loop)
380
+
381
+ For processes that run continuously and should check in periodically:
382
+
383
+ ```csharp
384
+ public class LongRunningProcessor : BackgroundService
385
+ {
386
+ private const string MonitorSlug = "queue-processor";
387
+
388
+ protected override async Task ExecuteAsync(CancellationToken stoppingToken)
389
+ {
390
+ while (!stoppingToken.IsCancellationRequested)
391
+ {
392
+ var checkInId = SentrySdk.CaptureCheckIn(
393
+ MonitorSlug,
394
+ CheckInStatus.InProgress,
395
+ configureMonitorOptions: o =>
396
+ {
397
+ o.Interval(5, SentryMonitorInterval.Minute);
398
+ o.CheckInMargin = TimeSpan.FromMinutes(2);
399
+ o.MaxRuntime = TimeSpan.FromMinutes(10);
400
+ o.TimeZone = "UTC";
401
+ }
402
+ );
403
+
404
+ try
405
+ {
406
+ await ProcessBatchAsync(stoppingToken);
407
+ SentrySdk.CaptureCheckIn(MonitorSlug, CheckInStatus.Ok, checkInId);
408
+ }
409
+ catch (Exception ex) when (!stoppingToken.IsCancellationRequested)
410
+ {
411
+ SentrySdk.CaptureCheckIn(MonitorSlug, CheckInStatus.Error, checkInId);
412
+ // optionally capture the exception too
413
+ SentrySdk.CaptureException(ex);
414
+ }
415
+
416
+ await Task.Delay(TimeSpan.FromMinutes(5), stoppingToken);
417
+ }
418
+ }
419
+ }
420
+ ```
421
+
422
+ ---
423
+
424
+ ## Alerting
425
+
426
+ Create issue alerts in Sentry:\
427
+ **Alerts → Create Alert → Issues → filter** by tag `monitor.slug equals my-monitor-slug`
428
+
429
+ ---
430
+
431
+ ## Rate Limits
432
+
433
+ Cron check-ins are rate-limited to **6 check-ins per minute per monitor per
434
+ environment**. Each environment (`production`, `staging`, etc.)
435
+ tracks independently.
436
+ Exceeding this limit silently drops events — visible in Usage Stats.
437
+
438
+ ---
439
+
440
+ ## SDK Version Matrix
441
+
442
+ | Feature | Min SDK Version |
443
+ | ------------------------------------------------------- | ------------------ |
444
+ | `SentrySdk.CaptureCheckIn()` | **4.2.0** |
445
+ | Heartbeat pattern | **4.2.0** |
446
+ | Programmatic monitor upsert (`configureMonitorOptions`) | **4.7.0** |
447
+ | Crontab schedule (`Interval(crontab)`) | **4.7.0** |
448
+ | Interval schedule (`SentryMonitorInterval`) | **4.7.0** |
449
+ | `Sentry.Hangfire` auto-integration | **4.x** |
450
+ | Quartz.NET | ❌ Manual API only |
451
+
452
+ ---
453
+
454
+ ## Troubleshooting
455
+
456
+ | Issue | Solution |
457
+ | ------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
458
+ | Check-ins not appearing in Sentry | Verify `monitorSlug` matches the slug configured in Sentry; check DSN is correct and SDK is initialized |
459
+ | Monitor shows “missed” despite job running | Increase `CheckInMargin` to allow more grace time; check server clock sync (NTP) |
460
+ | Monitor shows “timeout” | Increase `MaxRuntime`; investigate why the job exceeds the expected duration |
461
+ | Monitor not auto-created | Pass `configureMonitorOptions` on the **first** `CaptureCheckIn` call — the upsert creates the monitor |
462
+ | `CheckInStatus.Error` but no Sentry issue | Configure `FailureIssueThreshold = 1` on the monitor options to create issues on first failure |
463
+ | Hangfire jobs not sending check-ins | Ensure `config.UseSentry()` is called inside `AddHangfire`; verify Sentry SDK is initialized before Hangfire starts |
464
+ | Quartz jobs not monitored | No official integration — add `CaptureCheckIn` manually inside `IJob.Execute()` |
465
+ | Duplicate check-ins from multiple instances | Use a distributed lock (e.g., `IDistributedLock`) around the check-in calls, or configure Quartz/Hangfire with single-instance scheduling |