@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,305 @@
1
+ # Crons / Monitors — Sentry Android SDK
2
+
3
+ > **Minimum SDK:** `io.sentry:sentry-android` (any version — uses core Java SDK APIs)\
4
+ > **Status:** Stable (`Sentry.captureCheckIn()`); `CheckInUtils` is
5
+ > `@ApiStatus.Experimental`\
6
+ > **Docs:** https://docs.sentry.io/platforms/java/crons/ (Android-specific page returns
7
+ > 404\)
8
+
9
+ ---
10
+
11
+ ## Overview
12
+
13
+ Sentry Crons lets you monitor scheduled jobs, background sync workers, and periodic
14
+ tasks. A **check-in** signals to Sentry that a job started (`IN_PROGRESS`) and completed
15
+ (`OK`) or failed (`ERROR`). If a check-in is missed or overdue, Sentry fires an alert.
16
+
17
+ **Key facts for Android:**
18
+
19
+ - Uses the core Java SDK — no Android-specific integration or module exists
20
+ - No `SentryWorker`, no WorkManager adapter, no AlarmManager wrapper — all wiring is
21
+ manual
22
+ - `duration` is in **seconds as a Double**, not milliseconds
23
+ - `CheckInUtils` helper is `@ApiStatus.Experimental` (API may change between releases)
24
+ - Rate limit: 6 check-ins per minute per monitor per environment
25
+
26
+ ---
27
+
28
+ ## Pattern A — `CheckInUtils.withCheckIn()` (Recommended)
29
+
30
+ `CheckInUtils` is the simplest API. It sends `IN_PROGRESS` on entry, automatically
31
+ calculates duration, and sends `OK` on success or `ERROR` on exception.
32
+
33
+ > **Note:** `CheckInUtils` carries `@ApiStatus.Experimental`. Prefer Pattern B for
34
+ > production code where you need stable guarantees.
35
+
36
+ ```kotlin
37
+ import io.sentry.CheckInUtils
38
+ import io.sentry.MonitorConfig
39
+ import io.sentry.MonitorSchedule
40
+
41
+ // Minimal — slug only
42
+ CheckInUtils.withCheckIn("nightly-sync") {
43
+ performNightlySync()
44
+ }
45
+
46
+ // With upsert config — creates or updates the monitor automatically
47
+ val monitorConfig = MonitorConfig(MonitorSchedule.crontab("0 2 * * *")).apply {
48
+ setCheckinMargin(5L) // alert if check-in is 5+ minutes late
49
+ setMaxRuntime(60L) // alert if running for 60+ minutes
50
+ setTimezone("UTC")
51
+ }
52
+
53
+ CheckInUtils.withCheckIn("nightly-sync", "production", monitorConfig) {
54
+ performNightlySync()
55
+ }
56
+ ```
57
+
58
+ **Full signature:**
59
+
60
+ ```kotlin
61
+ CheckInUtils.withCheckIn(
62
+ monitorSlug: String, // required — must match slug in Sentry dashboard
63
+ environment: String?, // null → uses SDK default environment
64
+ monitorConfig: MonitorConfig?, // null → no upsert; monitor must exist in dashboard
65
+ callable: Callable<T>
66
+ ): T
67
+ ```
68
+
69
+ ---
70
+
71
+ ## Pattern B — Manual Two-Step (Full Control)
72
+
73
+ Send `IN_PROGRESS` before the job starts, then `OK` or `ERROR` when it finishes.
74
+ This gives you full control over duration and error handling.
75
+
76
+ ```kotlin
77
+ import io.sentry.CheckIn
78
+ import io.sentry.CheckInStatus
79
+ import io.sentry.MonitorConfig
80
+ import io.sentry.MonitorSchedule
81
+ import io.sentry.Sentry
82
+
83
+ fun runDatabaseBackup() {
84
+ val startedAt = SystemClock.elapsedRealtime()
85
+
86
+ // 1. Signal that the job has started
87
+ val startCheckIn = CheckIn("db-backup", CheckInStatus.IN_PROGRESS)
88
+ val checkInId = Sentry.captureCheckIn(startCheckIn)
89
+
90
+ val status: CheckInStatus
91
+ try {
92
+ performBackup()
93
+ status = CheckInStatus.OK
94
+ } catch (e: Exception) {
95
+ Sentry.captureException(e) // also capture the error for Sentry Issues
96
+ status = CheckInStatus.ERROR
97
+ }
98
+
99
+ // 2. Signal completion — link via checkInId
100
+ val elapsed = SystemClock.elapsedRealtime() - startedAt
101
+ val done = CheckIn(checkInId, "db-backup", status).apply {
102
+ // ⚠️ Duration is in SECONDS (Double), not milliseconds
103
+ setDuration(elapsed / 1000.0)
104
+ setMonitorConfig(
105
+ MonitorConfig(MonitorSchedule.crontab("0 3 * * *")).apply {
106
+ setTimezone("UTC")
107
+ setMaxRuntime(45L)
108
+ setCheckinMargin(10L)
109
+ }
110
+ )
111
+ }
112
+ Sentry.captureCheckIn(done)
113
+ }
114
+ ```
115
+
116
+ > **⚠️ Duration is in SECONDS, not milliseconds.** Always divide elapsed milliseconds by
117
+ > `1000.0`:
118
+ >
119
+ > ```kotlin
120
+ > setDuration((SystemClock.elapsedRealtime() - startMs) / 1000.0) // CORRECT
121
+ > setDuration(SystemClock.elapsedRealtime() - startMs) // WRONG — 1000× too large
122
+ > ```
123
+
124
+ ---
125
+
126
+ ## Pattern C — Heartbeat (Simplest)
127
+
128
+ Use when you only need to detect missed schedules — not overruns.
129
+ No `IN_PROGRESS` check-in, just a success or failure on completion.
130
+
131
+ ```kotlin
132
+ fun runHeartbeatJob() {
133
+ try {
134
+ performWork()
135
+ Sentry.captureCheckIn(CheckIn("heartbeat-job", CheckInStatus.OK))
136
+ } catch (e: Exception) {
137
+ Sentry.captureCheckIn(CheckIn("heartbeat-job", CheckInStatus.ERROR))
138
+ throw e
139
+ }
140
+ }
141
+ ```
142
+
143
+ ---
144
+
145
+ ## Pattern D — WorkManager (Manual Wiring)
146
+
147
+ WorkManager is the recommended Android API for deferrable background work.
148
+ There is no SDK adapter — wire check-ins manually:
149
+
150
+ ```kotlin
151
+ import androidx.work.CoroutineWorker
152
+ import androidx.work.WorkerParameters
153
+
154
+ class SyncWorker(ctx: Context, params: WorkerParameters) : CoroutineWorker(ctx, params) {
155
+
156
+ override suspend fun doWork(): Result {
157
+ val t0 = SystemClock.elapsedRealtime()
158
+ val start = CheckIn("workmanager-sync", CheckInStatus.IN_PROGRESS)
159
+ val id = Sentry.captureCheckIn(start)
160
+
161
+ return try {
162
+ performSync()
163
+ Sentry.captureCheckIn(
164
+ CheckIn(id, "workmanager-sync", CheckInStatus.OK).apply {
165
+ setDuration((SystemClock.elapsedRealtime() - t0) / 1000.0) // SECONDS
166
+ setMonitorConfig(
167
+ MonitorConfig(MonitorSchedule.interval(15, MonitorScheduleUnit.MINUTE)).apply {
168
+ setMaxRuntime(10L)
169
+ setCheckinMargin(3L)
170
+ }
171
+ )
172
+ }
173
+ )
174
+ Result.success()
175
+ } catch (e: Exception) {
176
+ Sentry.captureException(e)
177
+ Sentry.captureCheckIn(
178
+ CheckIn(id, "workmanager-sync", CheckInStatus.ERROR).apply {
179
+ setDuration((SystemClock.elapsedRealtime() - t0) / 1000.0) // SECONDS
180
+ }
181
+ )
182
+ Result.failure()
183
+ }
184
+ }
185
+ }
186
+ ```
187
+
188
+ ---
189
+
190
+ ## Configuration Reference
191
+
192
+ ### `CheckIn` Object
193
+
194
+ ```kotlin
195
+ // Constructors
196
+ CheckIn(monitorSlug: String, status: CheckInStatus)
197
+ CheckIn(checkInId: SentryId, monitorSlug: String, status: CheckInStatus)
198
+
199
+ // Key setters
200
+ fun setDuration(durationSeconds: Double) // ⚠️ SECONDS, not milliseconds
201
+ fun setMonitorConfig(config: MonitorConfig)
202
+ fun setRelease(release: String)
203
+ fun setEnvironment(environment: String)
204
+ ```
205
+
206
+ ### `CheckInStatus` Enum
207
+
208
+ | Status | Serialized | Sentry UI Color | Use When |
209
+ | ------------- | --------------- | --------------- | -------------------------------- |
210
+ | `IN_PROGRESS` | `"in_progress"` | Yellow | Job has started but not finished |
211
+ | `OK` | `"ok"` | Green | Job completed successfully |
212
+ | `ERROR` | `"error"` | Red | Job failed |
213
+
214
+ ### Monitor Schedule
215
+
216
+ ```kotlin
217
+ // Crontab — standard 5-field cron expression
218
+ MonitorSchedule.crontab("0 3 * * *") // daily at 3:00 AM
219
+ MonitorSchedule.crontab("*/15 * * * *") // every 15 minutes
220
+ MonitorSchedule.crontab("0 9 * * MON-FRI") // weekdays at 9:00 AM
221
+
222
+ // Interval — simple repeating interval
223
+ MonitorSchedule.interval(30, MonitorScheduleUnit.MINUTE)
224
+ MonitorSchedule.interval(6, MonitorScheduleUnit.HOUR)
225
+ MonitorSchedule.interval(1, MonitorScheduleUnit.DAY)
226
+ ```
227
+
228
+ **`MonitorScheduleUnit` values:** `MINUTE`, `HOUR`, `DAY`, `WEEK`, `MONTH`, `YEAR`
229
+
230
+ ### `MonitorConfig` Options
231
+
232
+ | Method | Type | Description |
233
+ | ----------------------------- | -------- | ------------------------------------------------------------ |
234
+ | `setCheckinMargin(minutes)` | `Long` | Tolerance (minutes) before Sentry marks a check-in as missed |
235
+ | `setMaxRuntime(minutes)` | `Long` | Alert if job runs for longer than this many minutes |
236
+ | `setTimezone(tz)` | `String` | IANA timezone, e.g. `"America/Chicago"` |
237
+ | `setFailureIssueThreshold(n)` | `Long` | Consecutive failures before opening an issue |
238
+ | `setRecoveryThreshold(n)` | `Long` | Consecutive successes before auto-resolving the issue |
239
+
240
+ ### Global Defaults via `SentryOptions.Cron`
241
+
242
+ Set defaults applied to every new `MonitorConfig`:
243
+
244
+ ```kotlin
245
+ SentryAndroid.init(this) { options ->
246
+ with(options.cron) {
247
+ defaultTimezone = "UTC"
248
+ defaultCheckinMargin = 5L // 5-minute window
249
+ defaultMaxRuntime = 30L // alert after 30 minutes
250
+ defaultFailureIssueThreshold = 3L // open issue after 3 failures
251
+ defaultRecoveryThreshold = 2L // resolve after 2 successes
252
+ }
253
+ }
254
+ ```
255
+
256
+ ---
257
+
258
+ ## Best Practices
259
+
260
+ 1. **Always capture `IN_PROGRESS` for long-running jobs** — heartbeat (OK only) can’t
261
+ detect overruns; two-step check-ins can
262
+ 2. **Use `setDuration()` in seconds** — divide elapsed milliseconds by `1000.0`;
263
+ forgetting this is the #1 crons mistake in Android
264
+ 3. **Set `maxRuntime` with a buffer** — if your job typically runs 10 minutes, set
265
+ `maxRuntime = 15` to avoid alert noise
266
+ 4. **Capture exceptions separately** — `CheckIn.ERROR` status marks the schedule failed,
267
+ but `Sentry.captureException()` creates a full Sentry Issue with stack trace
268
+ 5. **Keep monitor slugs stable** — changing a slug creates a new monitor in the
269
+ dashboard; rename via the UI, not by changing the slug in code
270
+ 6. **Use `setEnvironment()` per check-in** — if you run the same job in staging and
271
+ production, separate them by environment to avoid cross-contamination
272
+ 7. **Set `checkinMargin` conservatively** — too tight causes alert noise from slight
273
+ scheduling jitter; 5–10 minutes is a safe starting point
274
+ 8. **Test with `debug = true`** — `Sentry.captureCheckIn()` is a synchronous HTTP call;
275
+ verify check-ins appear in the dashboard before deploying
276
+ 9. **Avoid `CheckInUtils` in public APIs** — it is `@ApiStatus.Experimental` and may
277
+ change; prefer the manual two-step pattern in library code
278
+
279
+ ---
280
+
281
+ ## Known Limitations
282
+
283
+ | Limitation | Details |
284
+ | ----------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
285
+ | No Android-specific integration | No `SentryWorker`, no WorkManager adapter — all wiring is manual |
286
+ | Android docs page missing | `https://docs.sentry.io/platforms/android/crons/` returns HTTP 404; use the Java docs page |
287
+ | `CheckInUtils` is experimental | `@ApiStatus.Experimental` — API may change between SDK releases |
288
+ | No auto-error on crash | If the app crashes mid-job, no `ERROR` check-in is sent automatically; consider a `Thread.UncaughtExceptionHandler` |
289
+ | Duration must be in seconds | `setDuration()` accepts `Double` **seconds** — a common mistake is passing milliseconds directly |
290
+ | Rate limited | 6 check-ins per minute per monitor per environment (Sentry platform limit) |
291
+ | Spring/Quartz integrations are server-side only | `@SentryCheckIn`, `SentryJobListener`, `sentry-quartz` are for JVM servers — do not use on Android |
292
+
293
+ ---
294
+
295
+ ## Troubleshooting
296
+
297
+ | Issue | Solution |
298
+ | -------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------- |
299
+ | Monitor shows “missed” immediately | Check that `IN_PROGRESS` was sent before the job started and that `checkinMargin` is set generously enough |
300
+ | Duration value looks wrong (1000× too large) | `setDuration()` expects **seconds** — divide `SystemClock.elapsedRealtime()` delta by `1000.0` |
301
+ | No check-in events in Sentry dashboard | Confirm `Sentry.isEnabled()` returns `true` and the DSN is correct; check-ins are sent synchronously via `captureCheckIn()` |
302
+ | `CheckInUtils` method not found | Ensure SDK ≥ 8.x; `CheckInUtils` is in the core `io.sentry:sentry` dependency bundled in `sentry-android` |
303
+ | Monitor shows “error” even on success | Verify the second `CheckIn` uses the `SentryId` returned by the first `captureCheckIn()` call, not a new `CheckIn(slug, OK)` |
304
+ | Two monitors created for the same job | Monitor slug changed between deployments — rename via the Sentry UI, not by changing the slug in code |
305
+ | Rate limit errors in logs | Reduce check-in frequency; the limit is 6/minute/monitor/environment |