@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,432 @@
1
+ # Crons / Job Monitoring — Sentry Node.js SDK
2
+
3
+ > Minimum SDK: `@sentry/node` ≥7.51.1 (`captureCheckIn`, `withMonitor`)\
4
+ > `instrumentNodeCron` / `instrumentCron`: ≥7.92.0\
5
+ > `instrumentNodeSchedule`: ≥7.93.0\
6
+ > `failureIssueThreshold` / `recoveryThreshold`: ≥8.7.0\
7
+ > `isolateTrace` in `MonitorConfig`: ≥10.28.0\
8
+ > Status: ✅ **Generally Available**
9
+
10
+ ---
11
+
12
+ ## Overview
13
+
14
+ Sentry Crons (job monitoring) tracks whether scheduled tasks run on time, succeed, and
15
+ complete within expected durations.
16
+ Sentry will alert when a job:
17
+
18
+ - Misses its scheduled start time (checkin margin exceeded)
19
+ - Takes too long to complete (maxRuntime exceeded)
20
+ - Fails (status `"error"`)
21
+
22
+ ---
23
+
24
+ ## Core API
25
+
26
+ ### `Sentry.captureCheckIn(checkIn, monitorConfig?)` → `string`
27
+
28
+ ```typescript
29
+ // Three check-in shapes:
30
+
31
+ // 1. Heartbeat — single-shot, no duration tracking
32
+ Sentry.captureCheckIn({ monitorSlug: "my-job", status: "ok" });
33
+ Sentry.captureCheckIn({ monitorSlug: "my-job", status: "error" });
34
+
35
+ // 2. In-progress — signals job started, returns ID for completion
36
+ const checkInId = Sentry.captureCheckIn({
37
+ monitorSlug: "my-job",
38
+ status: "in_progress",
39
+ });
40
+
41
+ // 3. Finished — completes an in-progress check-in
42
+ Sentry.captureCheckIn({
43
+ checkInId,
44
+ monitorSlug: "my-job",
45
+ status: "ok", // or "error"
46
+ duration: 12.3, // optional, in seconds
47
+ });
48
+ ```
49
+
50
+ ### `Sentry.withMonitor(slug, callback, monitorConfig?)` → `T`
51
+
52
+ Wraps a sync or async function.
53
+ Automatically sends `in_progress`, then `ok` on success or `error` on throw.
54
+ Records duration automatically.
55
+
56
+ ```typescript
57
+ // Simple form
58
+ await Sentry.withMonitor("my-job", async () => {
59
+ await runJob();
60
+ });
61
+
62
+ // With monitor config
63
+ await Sentry.withMonitor(
64
+ "my-job",
65
+ async () => {
66
+ await runJob();
67
+ },
68
+ {
69
+ schedule: { type: "crontab", value: "0 * * * *" },
70
+ checkinMargin: 5,
71
+ maxRuntime: 30,
72
+ timezone: "America/New_York",
73
+ },
74
+ );
75
+ ```
76
+
77
+ ---
78
+
79
+ ## Check-In Status Values
80
+
81
+ | Status | Meaning |
82
+ | --------------- | ---------------------------------------------- |
83
+ | `"in_progress"` | Job has started; Sentry waiting for completion |
84
+ | `"ok"` | Job completed successfully |
85
+ | `"error"` | Job failed; triggers incident in Sentry |
86
+
87
+ ---
88
+
89
+ ## Usage Patterns
90
+
91
+ ### Heartbeat (simplest — detect missed runs only)
92
+
93
+ ```typescript
94
+ try {
95
+ await runMyJob();
96
+ Sentry.captureCheckIn({ monitorSlug: "my-cron-job", status: "ok" });
97
+ } catch (err) {
98
+ Sentry.captureCheckIn({ monitorSlug: "my-cron-job", status: "error" });
99
+ throw err;
100
+ }
101
+ ```
102
+
103
+ ### Start/Finish (tracks in-progress state and duration)
104
+
105
+ ```typescript
106
+ const checkInId = Sentry.captureCheckIn({
107
+ monitorSlug: "my-cron-job",
108
+ status: "in_progress",
109
+ });
110
+
111
+ const startTime = Date.now();
112
+
113
+ try {
114
+ await runMyJob();
115
+ Sentry.captureCheckIn({
116
+ checkInId,
117
+ monitorSlug: "my-cron-job",
118
+ status: "ok",
119
+ duration: (Date.now() - startTime) / 1000, // seconds
120
+ });
121
+ } catch (err) {
122
+ Sentry.captureCheckIn({
123
+ checkInId,
124
+ monitorSlug: "my-cron-job",
125
+ status: "error",
126
+ duration: (Date.now() - startTime) / 1000,
127
+ });
128
+ throw err;
129
+ }
130
+ ```
131
+
132
+ ### `withMonitor` (recommended — handles all status logic)
133
+
134
+ ```typescript
135
+ await Sentry.withMonitor("my-cron-job", async () => {
136
+ await runMyJob();
137
+ });
138
+ ```
139
+
140
+ ---
141
+
142
+ ## Monitor Configuration (Upsert)
143
+
144
+ Pass a `MonitorConfig` to create or update the monitor from code — no manual setup in
145
+ Sentry UI needed. On first check-in the monitor is created; subsequent calls update it.
146
+
147
+ ```typescript
148
+ interface MonitorConfig {
149
+ schedule: CrontabSchedule | IntervalSchedule; // REQUIRED
150
+ checkinMargin?: number; // minutes: grace period before "missed" alert
151
+ maxRuntime?: number; // minutes: max execution before timeout alert
152
+ timezone?: string; // IANA timezone, e.g. "America/New_York"
153
+ failureIssueThreshold?: number; // consecutive failures before creating issue (≥8.7.0)
154
+ recoveryThreshold?: number; // consecutive OKs before resolving issue (≥8.7.0)
155
+ isolateTrace?: boolean; // new trace per monitor run (≥10.28.0)
156
+ }
157
+ ```
158
+
159
+ Pass as the **second argument** to `captureCheckIn()` or **third argument** to
160
+ `withMonitor()`.
161
+
162
+ ---
163
+
164
+ ## Schedule Types
165
+
166
+ **Crontab schedule:**
167
+
168
+ ```typescript
169
+ { type: "crontab", value: "* * * * *" } // every minute
170
+ { type: "crontab", value: "0 * * * *" } // every hour
171
+ { type: "crontab", value: "0 4 * * *" } // daily at 4:00am
172
+ { type: "crontab", value: "0 9 * * MON-FRI" } // weekdays at 9am
173
+ { type: "crontab", value: "0 0 1 * *" } // first of every month
174
+ { type: "crontab", value: "*/15 * * * *" } // every 15 minutes
175
+ ```
176
+
177
+ **Interval schedule:**
178
+
179
+ ```typescript
180
+ { type: "interval", value: 1, unit: "hour" }
181
+ { type: "interval", value: 30, unit: "minute" }
182
+ { type: "interval", value: 7, unit: "day" }
183
+ { type: "interval", value: 1, unit: "week" }
184
+ // unit: "year" | "month" | "week" | "day" | "hour" | "minute"
185
+ ```
186
+
187
+ ---
188
+
189
+ ## Full Upsert Example
190
+
191
+ ```typescript
192
+ const monitorConfig: Sentry.MonitorConfig = {
193
+ schedule: {
194
+ type: "crontab",
195
+ value: "0 4 * * *", // daily at 4am
196
+ },
197
+ checkinMargin: 5, // alert if not started within 5 min
198
+ maxRuntime: 30, // alert if running > 30 min
199
+ timezone: "America/New_York",
200
+ failureIssueThreshold: 3, // create issue after 3 consecutive failures
201
+ recoveryThreshold: 2, // resolve issue after 2 consecutive successes
202
+ isolateTrace: true, // SDK ≥10.28.0
203
+ };
204
+
205
+ await Sentry.withMonitor("daily-report-job", generateDailyReport, monitorConfig);
206
+ ```
207
+
208
+ ---
209
+
210
+ ## Scheduler Library Integrations
211
+
212
+ ### `node-cron` (SDK ≥7.92.0)
213
+
214
+ ```typescript
215
+ import cron from "node-cron";
216
+ import * as Sentry from "@sentry/node";
217
+
218
+ const cronWithCheckIn = Sentry.cron.instrumentNodeCron(cron);
219
+
220
+ // `name` option is REQUIRED — becomes the monitor slug
221
+ cronWithCheckIn.schedule(
222
+ "* * * * *",
223
+ () => {
224
+ /* task */
225
+ },
226
+ { name: "my-cron-job" },
227
+ );
228
+ ```
229
+
230
+ ### `cron` package — `CronJob` (SDK ≥7.92.0)
231
+
232
+ ```typescript
233
+ import { CronJob } from "cron";
234
+ import * as Sentry from "@sentry/node";
235
+
236
+ // Monitor slug is bound at instrumentation time
237
+ const CronJobWithCheckIn = Sentry.cron.instrumentCron(CronJob, "my-cron-job");
238
+
239
+ // Constructor form
240
+ const job = new CronJobWithCheckIn("* * * * *", () => {
241
+ /* task */
242
+ });
243
+
244
+ // Static factory form
245
+ const job2 = CronJobWithCheckIn.from({
246
+ cronTime: "* * * * *",
247
+ onTick: () => {
248
+ /* task */
249
+ },
250
+ });
251
+ ```
252
+
253
+ ### `node-schedule` (SDK ≥7.93.0)
254
+
255
+ ```typescript
256
+ import * as schedule from "node-schedule";
257
+ import * as Sentry from "@sentry/node";
258
+
259
+ const scheduleWithCheckIn = Sentry.cron.instrumentNodeSchedule(schedule);
260
+
261
+ // First argument must be the job name (monitor slug)
262
+ scheduleWithCheckIn.scheduleJob(
263
+ "my-cron-job", // monitor slug — REQUIRED as first arg
264
+ "* * * * *", // cron expression
265
+ () => {
266
+ /* task */
267
+ },
268
+ );
269
+ ```
270
+
271
+ ### Agenda (no official helper — use `withMonitor`)
272
+
273
+ ```typescript
274
+ import Agenda from "agenda";
275
+ import * as Sentry from "@sentry/node";
276
+
277
+ const agenda = new Agenda({ db: { address: "mongodb://localhost/agenda" } });
278
+
279
+ agenda.define("send-newsletter", async (job) => {
280
+ await Sentry.withMonitor(
281
+ "send-newsletter",
282
+ async () => {
283
+ await sendNewsletterEmails();
284
+ },
285
+ {
286
+ schedule: { type: "crontab", value: "0 8 * * MON" },
287
+ maxRuntime: 60,
288
+ timezone: "UTC",
289
+ },
290
+ );
291
+ });
292
+ ```
293
+
294
+ ### Bull / BullMQ (no official helper — use `withMonitor`)
295
+
296
+ ```typescript
297
+ import { Worker } from "bullmq";
298
+ import * as Sentry from "@sentry/node";
299
+
300
+ const worker = new Worker("report-queue", async (job) => {
301
+ await Sentry.withMonitor(
302
+ "report-queue-processor",
303
+ async () => {
304
+ await processReportJob(job.data);
305
+ },
306
+ {
307
+ schedule: { type: "interval", value: 5, unit: "minute" },
308
+ maxRuntime: 10,
309
+ checkinMargin: 2,
310
+ },
311
+ );
312
+ });
313
+ ```
314
+
315
+ ---
316
+
317
+ ## Library Integration Signatures
318
+
319
+ ```typescript
320
+ // node-cron
321
+ function instrumentNodeCron<T>(
322
+ lib: Partial<NodeCron> & T,
323
+ monitorConfig?: Pick<MonitorConfig, "isolateTrace">,
324
+ ): T;
325
+
326
+ // cron package
327
+ function instrumentCron<T>(
328
+ lib: T & CronJobConstructor,
329
+ monitorSlug: string, // REQUIRED — single slug for all jobs from this constructor
330
+ ): T;
331
+
332
+ // node-schedule
333
+ function instrumentNodeSchedule<T>(lib: T & NodeSchedule): T;
334
+ ```
335
+
336
+ ---
337
+
338
+ ## Serverless / Lambda
339
+
340
+ Check-ins are lost if the process terminates before flush.
341
+ Always flush explicitly:
342
+
343
+ ```typescript
344
+ export const handler = async (event: any) => {
345
+ const checkInId = Sentry.captureCheckIn({
346
+ monitorSlug: "lambda-scheduled-job",
347
+ status: "in_progress",
348
+ });
349
+
350
+ try {
351
+ await doWork(event);
352
+ Sentry.captureCheckIn({
353
+ checkInId,
354
+ monitorSlug: "lambda-scheduled-job",
355
+ status: "ok",
356
+ });
357
+ } catch (err) {
358
+ Sentry.captureCheckIn({
359
+ checkInId,
360
+ monitorSlug: "lambda-scheduled-job",
361
+ status: "error",
362
+ });
363
+ throw err;
364
+ } finally {
365
+ // CRITICAL — flush before Lambda container freezes
366
+ await Sentry.flush(2000);
367
+ }
368
+ };
369
+ ```
370
+
371
+ For AWS Lambda, prefer `@sentry/aws-serverless` — it handles flushing automatically.
372
+
373
+ ---
374
+
375
+ ## Deno: Native Cron Integration
376
+
377
+ Deno provides a built-in `Deno.cron()` API. Use `denoCronIntegration` to automatically
378
+ monitor all native Deno crons:
379
+
380
+ ```typescript
381
+ import * as Sentry from "@sentry/deno";
382
+
383
+ Sentry.init({
384
+ dsn: Deno.env.get("SENTRY_DSN"),
385
+ integrations: [Sentry.denoCronIntegration()],
386
+ });
387
+
388
+ // Automatically monitored — no manual check-ins needed
389
+ Deno.cron("daily-cleanup", "0 0 * * *", async () => {
390
+ await cleanupOldRecords();
391
+ });
392
+
393
+ Deno.cron("hourly-sync", "0 * * * *", async () => {
394
+ await syncExternalData();
395
+ });
396
+ ```
397
+
398
+ The integration intercepts `Deno.cron()` calls and wraps them with automatic
399
+ `in_progress` → `ok`/`error` check-ins.
400
+ The monitor slug is the first argument to `Deno.cron()`.
401
+
402
+ > **Deno Deploy:** `Deno.cron()` runs natively on Deno Deploy.
403
+ > The integration works in both local Deno and Deno Deploy environments.
404
+
405
+ > **Node.js and Bun:** `denoCronIntegration` is only available in `@sentry/deno`. For
406
+ > Node.js, use the `node-cron`, `cron`, or `node-schedule` library helpers above.
407
+
408
+ ---
409
+
410
+ ## Rate Limits
411
+
412
+ - Maximum **6 check-ins per minute** per monitor + environment combination
413
+ - Each environment (production, staging, etc.)
414
+ counts separately
415
+ - Dropped check-ins appear in Sentry’s Usage Stats page
416
+
417
+ ---
418
+
419
+ ## Troubleshooting
420
+
421
+ | Problem | Likely Cause | Fix |
422
+ | ------------------------------------- | ---------------------------------- | ---------------------------------------------------------------- |
423
+ | Monitor not created in Sentry | No `MonitorConfig` passed | Pass `schedule` in `monitorConfig` (upsert) |
424
+ | Check-ins not arriving | Process exits before flush | Add `await Sentry.flush(2000)` before exit |
425
+ | `withMonitor` status wrong | Callback doesn’t throw on failure | Ensure your job throws on error |
426
+ | `node-cron` job not tracked | Missing `name` option | Add `{ name: "slug" }` to `cron.schedule()` options |
427
+ | `instrumentNodeSchedule` slug not set | First arg is cron expression | First arg to `scheduleJob()` must be the job name |
428
+ | `instrumentCron` tracking wrong job | Multiple jobs from one constructor | Each constructor call is for one slug; create multiple if needed |
429
+ | Duration always `undefined` | Using heartbeat pattern | Switch to start/finish or `withMonitor` for duration tracking |
430
+ | Missing `failureIssueThreshold` | SDK < 8.7.0 | Upgrade to ≥8.7.0 |
431
+ | `isolateTrace` not recognized | SDK < 10.28.0 | Upgrade to ≥10.28.0 |
432
+ | Rate limit errors in logs | > 6 check-ins/min per monitor | Reduce check-in frequency or consolidate environments |