@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.
- package/README.md +6 -6
- package/package.json +1 -1
- package/skill-sources.jsonc +6 -29
- package/skill-sources.lock.json +23 -109
- package/skills/animate/LICENSE +21 -0
- package/skills/animate/NOTICE +10 -0
- package/skills/animate/SKILL.md +34 -0
- package/skills/animate/references/gestures.md +27 -0
- package/skills/animate/references/glossary.md +136 -0
- package/skills/animate/references/implementation.md +22 -0
- package/skills/animate/references/opportunities.md +18 -0
- package/skills/animate/references/principles.md +48 -0
- package/skills/animate/references/review.md +19 -0
- package/skills/cloudflare-workers/LICENSE +202 -0
- package/skills/cloudflare-workers/NOTICE +9 -0
- package/skills/cloudflare-workers/SKILL.md +26 -0
- package/skills/cloudflare-workers/references/durable-objects.md +68 -0
- package/skills/cloudflare-workers/references/sandbox.md +48 -0
- package/skills/cloudflare-workers/references/workers.md +63 -0
- package/skills/cloudflare-workers/references/wrangler.md +56 -0
- package/skills/design-ui/LICENSE +21 -0
- package/skills/design-ui/NOTICE +8 -0
- package/skills/design-ui/SKILL.md +29 -0
- package/skills/design-ui/references/appearance.md +22 -0
- package/skills/design-ui/references/components.md +33 -0
- package/skills/design-ui/references/exploration.md +50 -0
- package/skills/design-ui/references/libraries.md +39 -0
- package/skills/design-ui/references/themes.md +23 -0
- package/skills/dev-kit/SKILL.md +19 -38
- package/skills/dev-kit/references/cloudflare-worker-api.md +1 -1
- package/skills/dev-kit/references/skills.md +2 -2
- package/skills/effect-development/SKILL.md +27 -0
- package/skills/effect-development/agents/openai.yaml +4 -0
- package/skills/effect-development/references/api/index.md +32 -0
- package/skills/effect-development/references/api/schema-codecs.md +15 -0
- package/skills/{build-effect-apis/references → effect-development/references/api}/verification.md +10 -5
- package/skills/{effect-architecture-audit/SKILL.md → effect-development/references/architecture/index.md} +1 -6
- package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-client.md +8 -6
- package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-testing.md +7 -2
- package/skills/effect-development/references/atom/index.md +40 -0
- package/skills/{build-effect-clis/references → effect-development/references/cli}/entrypoints-and-testing.md +6 -2
- package/skills/effect-development/references/cli/index.md +39 -0
- package/skills/effect-development/references/setup.md +15 -0
- package/skills/open-pull-request/SKILL.md +11 -115
- package/skills/open-pull-request/agents/openai.yaml +3 -3
- package/skills/open-pull-request/references/evidence.md +22 -0
- package/skills/open-pull-request/references/explanation.md +21 -0
- package/skills/open-pull-request/references/publication.md +21 -0
- package/skills/sentry/LICENSE +202 -0
- package/skills/sentry/LICENSE-UPSTREAM +21 -0
- package/skills/sentry/NOTICE +14 -0
- package/skills/sentry/SKILL.md +33 -0
- package/skills/sentry/references/alert-payloads.md +105 -0
- package/skills/sentry/references/alerts.md +17 -0
- package/skills/sentry/references/artifacts.md +25 -0
- package/skills/sentry/references/auth-token.md +65 -0
- package/skills/sentry/references/concepts/ai-monitoring.md +131 -0
- package/skills/sentry/references/concepts/choosing-a-signal.md +78 -0
- package/skills/sentry/references/concepts/crons.md +50 -0
- package/skills/sentry/references/concepts/data-scrubbing.md +43 -0
- package/skills/sentry/references/concepts/errors.md +40 -0
- package/skills/sentry/references/concepts/logging.md +85 -0
- package/skills/sentry/references/concepts/metrics.md +49 -0
- package/skills/sentry/references/concepts/monitors.md +78 -0
- package/skills/sentry/references/concepts/profiling.md +38 -0
- package/skills/sentry/references/concepts/reduce-volume.md +49 -0
- package/skills/sentry/references/concepts/releases.md +43 -0
- package/skills/sentry/references/concepts/session-replay.md +35 -0
- package/skills/sentry/references/concepts/tracing.md +54 -0
- package/skills/sentry/references/concepts/user-feedback.md +36 -0
- package/skills/sentry/references/debug-artifacts/android.md +68 -0
- package/skills/sentry/references/debug-artifacts/apple.md +96 -0
- package/skills/sentry/references/debug-artifacts/dotnet.md +70 -0
- package/skills/sentry/references/debug-artifacts/flutter.md +65 -0
- package/skills/sentry/references/debug-artifacts/index.md +75 -0
- package/skills/sentry/references/debug-artifacts/javascript.md +94 -0
- package/skills/sentry/references/debug-artifacts/matching.md +73 -0
- package/skills/sentry/references/debug-artifacts/react-native.md +75 -0
- package/skills/sentry/references/first-error-setup.md +25 -0
- package/skills/sentry/references/instrumentation.md +30 -0
- package/skills/sentry/references/issues.md +32 -0
- package/skills/sentry/references/new-project.md +17 -0
- package/skills/sentry/references/otel-exporter.md +30 -0
- package/skills/sentry/references/release-workflow.md +31 -0
- package/skills/sentry/references/releases/ci-pipeline.md +214 -0
- package/skills/sentry/references/releases/index.md +93 -0
- package/skills/sentry/references/releases/suspect-commits.md +155 -0
- package/skills/sentry/references/releases/tagging.md +131 -0
- package/skills/sentry/references/releases/troubleshooting.md +67 -0
- package/skills/sentry/references/sdks/android/crons.md +305 -0
- package/skills/sentry/references/sdks/android/error-monitoring.md +800 -0
- package/skills/sentry/references/sdks/android/index.md +748 -0
- package/skills/sentry/references/sdks/android/integrations.md +48 -0
- package/skills/sentry/references/sdks/android/logging.md +374 -0
- package/skills/sentry/references/sdks/android/metrics.md +288 -0
- package/skills/sentry/references/sdks/android/profiling.md +397 -0
- package/skills/sentry/references/sdks/android/session-replay.md +406 -0
- package/skills/sentry/references/sdks/android/tracing.md +861 -0
- package/skills/sentry/references/sdks/browser/error-monitoring.md +861 -0
- package/skills/sentry/references/sdks/browser/index.md +714 -0
- package/skills/sentry/references/sdks/browser/logging.md +315 -0
- package/skills/sentry/references/sdks/browser/profiling.md +236 -0
- package/skills/sentry/references/sdks/browser/session-replay.md +586 -0
- package/skills/sentry/references/sdks/browser/tracing.md +561 -0
- package/skills/sentry/references/sdks/browser/user-feedback.md +354 -0
- package/skills/sentry/references/sdks/cloudflare/ai-monitoring.md +661 -0
- package/skills/sentry/references/sdks/cloudflare/crons.md +231 -0
- package/skills/sentry/references/sdks/cloudflare/durable-objects.md +381 -0
- package/skills/sentry/references/sdks/cloudflare/error-monitoring.md +329 -0
- package/skills/sentry/references/sdks/cloudflare/index.md +698 -0
- package/skills/sentry/references/sdks/cloudflare/logging.md +169 -0
- package/skills/sentry/references/sdks/cloudflare/nodejs-compat.md +134 -0
- package/skills/sentry/references/sdks/cloudflare/tracing.md +475 -0
- package/skills/sentry/references/sdks/cocoa/error-monitoring.md +394 -0
- package/skills/sentry/references/sdks/cocoa/index.md +497 -0
- package/skills/sentry/references/sdks/cocoa/logging.md +209 -0
- package/skills/sentry/references/sdks/cocoa/metrics.md +136 -0
- package/skills/sentry/references/sdks/cocoa/profiling.md +223 -0
- package/skills/sentry/references/sdks/cocoa/session-replay.md +257 -0
- package/skills/sentry/references/sdks/cocoa/tracing.md +524 -0
- package/skills/sentry/references/sdks/cocoa/user-feedback.md +310 -0
- package/skills/sentry/references/sdks/dotnet/crons.md +465 -0
- package/skills/sentry/references/sdks/dotnet/error-monitoring.md +1100 -0
- package/skills/sentry/references/sdks/dotnet/index.md +614 -0
- package/skills/sentry/references/sdks/dotnet/logging.md +556 -0
- package/skills/sentry/references/sdks/dotnet/metrics.md +229 -0
- package/skills/sentry/references/sdks/dotnet/profiling.md +296 -0
- package/skills/sentry/references/sdks/dotnet/tracing.md +897 -0
- package/skills/sentry/references/sdks/elixir/crons.md +371 -0
- package/skills/sentry/references/sdks/elixir/error-monitoring.md +335 -0
- package/skills/sentry/references/sdks/elixir/index.md +383 -0
- package/skills/sentry/references/sdks/elixir/logging.md +239 -0
- package/skills/sentry/references/sdks/elixir/tracing.md +233 -0
- package/skills/sentry/references/sdks/flutter/ecosystem-integrations.md +70 -0
- package/skills/sentry/references/sdks/flutter/error-monitoring.md +312 -0
- package/skills/sentry/references/sdks/flutter/index.md +728 -0
- package/skills/sentry/references/sdks/flutter/logging.md +387 -0
- package/skills/sentry/references/sdks/flutter/metrics.md +310 -0
- package/skills/sentry/references/sdks/flutter/profiling.md +214 -0
- package/skills/sentry/references/sdks/flutter/session-replay.md +308 -0
- package/skills/sentry/references/sdks/flutter/tracing.md +502 -0
- package/skills/sentry/references/sdks/go/crons.md +270 -0
- package/skills/sentry/references/sdks/go/error-monitoring.md +361 -0
- package/skills/sentry/references/sdks/go/index.md +324 -0
- package/skills/sentry/references/sdks/go/logging.md +354 -0
- package/skills/sentry/references/sdks/go/metrics.md +273 -0
- package/skills/sentry/references/sdks/go/profiling.md +46 -0
- package/skills/sentry/references/sdks/go/tracing.md +366 -0
- package/skills/sentry/references/sdks/index.md +41 -0
- package/skills/sentry/references/sdks/nestjs/ai-monitoring.md +410 -0
- package/skills/sentry/references/sdks/nestjs/crons.md +268 -0
- package/skills/sentry/references/sdks/nestjs/error-monitoring.md +729 -0
- package/skills/sentry/references/sdks/nestjs/index.md +699 -0
- package/skills/sentry/references/sdks/nestjs/logging.md +174 -0
- package/skills/sentry/references/sdks/nestjs/metrics.md +243 -0
- package/skills/sentry/references/sdks/nestjs/profiling.md +127 -0
- package/skills/sentry/references/sdks/nestjs/tracing.md +762 -0
- package/skills/sentry/references/sdks/nextjs/ai-monitoring.md +494 -0
- package/skills/sentry/references/sdks/nextjs/crons.md +383 -0
- package/skills/sentry/references/sdks/nextjs/error-monitoring.md +974 -0
- package/skills/sentry/references/sdks/nextjs/index.md +491 -0
- package/skills/sentry/references/sdks/nextjs/logging.md +381 -0
- package/skills/sentry/references/sdks/nextjs/metrics.md +411 -0
- package/skills/sentry/references/sdks/nextjs/profiling.md +403 -0
- package/skills/sentry/references/sdks/nextjs/session-replay.md +462 -0
- package/skills/sentry/references/sdks/nextjs/tracing.md +628 -0
- package/skills/sentry/references/sdks/node/ai-monitoring.md +303 -0
- package/skills/sentry/references/sdks/node/crons.md +432 -0
- package/skills/sentry/references/sdks/node/error-monitoring.md +1125 -0
- package/skills/sentry/references/sdks/node/index.md +942 -0
- package/skills/sentry/references/sdks/node/logging.md +380 -0
- package/skills/sentry/references/sdks/node/metrics.md +278 -0
- package/skills/sentry/references/sdks/node/profiling.md +373 -0
- package/skills/sentry/references/sdks/node/tracing.md +878 -0
- package/skills/sentry/references/sdks/php/ai-monitoring.md +310 -0
- package/skills/sentry/references/sdks/php/crons.md +265 -0
- package/skills/sentry/references/sdks/php/error-monitoring.md +626 -0
- package/skills/sentry/references/sdks/php/index.md +362 -0
- package/skills/sentry/references/sdks/php/laravel.md +542 -0
- package/skills/sentry/references/sdks/php/logging.md +242 -0
- package/skills/sentry/references/sdks/php/metrics.md +193 -0
- package/skills/sentry/references/sdks/php/profiling.md +115 -0
- package/skills/sentry/references/sdks/php/symfony.md +552 -0
- package/skills/sentry/references/sdks/php/tracing.md +516 -0
- package/skills/sentry/references/sdks/python/ai-monitoring.md +351 -0
- package/skills/sentry/references/sdks/python/crons.md +218 -0
- package/skills/sentry/references/sdks/python/error-monitoring.md +292 -0
- package/skills/sentry/references/sdks/python/index.md +361 -0
- package/skills/sentry/references/sdks/python/logging.md +234 -0
- package/skills/sentry/references/sdks/python/metrics.md +154 -0
- package/skills/sentry/references/sdks/python/profiling.md +120 -0
- package/skills/sentry/references/sdks/python/tracing.md +364 -0
- package/skills/sentry/references/sdks/react/error-monitoring.md +1607 -0
- package/skills/sentry/references/sdks/react/index.md +492 -0
- package/skills/sentry/references/sdks/react/logging.md +364 -0
- package/skills/sentry/references/sdks/react/profiling.md +322 -0
- package/skills/sentry/references/sdks/react/react-features.md +1272 -0
- package/skills/sentry/references/sdks/react/session-replay.md +1193 -0
- package/skills/sentry/references/sdks/react/tracing.md +1415 -0
- package/skills/sentry/references/sdks/react-native/error-monitoring.md +1481 -0
- package/skills/sentry/references/sdks/react-native/expo-config-plugin.md +45 -0
- package/skills/sentry/references/sdks/react-native/index.md +1030 -0
- package/skills/sentry/references/sdks/react-native/logging.md +444 -0
- package/skills/sentry/references/sdks/react-native/profiling.md +386 -0
- package/skills/sentry/references/sdks/react-native/session-replay.md +704 -0
- package/skills/sentry/references/sdks/react-native/tracing.md +1086 -0
- package/skills/sentry/references/sdks/react-native/user-feedback.md +815 -0
- package/skills/sentry/references/sdks/react-router-framework/error-monitoring.md +127 -0
- package/skills/sentry/references/sdks/react-router-framework/index.md +411 -0
- package/skills/sentry/references/sdks/react-router-framework/logging.md +66 -0
- package/skills/sentry/references/sdks/react-router-framework/profiling.md +57 -0
- package/skills/sentry/references/sdks/react-router-framework/react-router-framework-features.md +110 -0
- package/skills/sentry/references/sdks/react-router-framework/session-replay.md +67 -0
- package/skills/sentry/references/sdks/react-router-framework/tracing.md +96 -0
- package/skills/sentry/references/sdks/react-router-framework/user-feedback.md +71 -0
- package/skills/sentry/references/sdks/ruby/crons.md +184 -0
- package/skills/sentry/references/sdks/ruby/error-monitoring.md +248 -0
- package/skills/sentry/references/sdks/ruby/index.md +297 -0
- package/skills/sentry/references/sdks/ruby/logging.md +168 -0
- package/skills/sentry/references/sdks/ruby/metrics.md +196 -0
- package/skills/sentry/references/sdks/ruby/migration.md +321 -0
- package/skills/sentry/references/sdks/ruby/profiling.md +107 -0
- package/skills/sentry/references/sdks/ruby/tracing.md +388 -0
- package/skills/sentry/references/sdks/svelte/error-monitoring.md +456 -0
- package/skills/sentry/references/sdks/svelte/index.md +467 -0
- package/skills/sentry/references/sdks/svelte/logging.md +344 -0
- package/skills/sentry/references/sdks/svelte/session-replay.md +369 -0
- package/skills/sentry/references/sdks/svelte/tracing.md +406 -0
- package/skills/sentry/references/sdks/tanstack-start/error-monitoring.md +149 -0
- package/skills/sentry/references/sdks/tanstack-start/index.md +381 -0
- package/skills/sentry/references/sdks/tanstack-start/logging.md +74 -0
- package/skills/sentry/references/sdks/tanstack-start/session-replay.md +76 -0
- package/skills/sentry/references/sdks/tanstack-start/tanstackstart-features.md +128 -0
- package/skills/sentry/references/sdks/tanstack-start/tracing.md +123 -0
- package/skills/sentry/references/sdks/tanstack-start/user-feedback.md +81 -0
- package/skills/sentry/references/search-query-language.md +226 -0
- package/skills/sentry/references/semantics/angular.md +7 -0
- package/skills/sentry/references/semantics/app.md +28 -0
- package/skills/sentry/references/semantics/art.md +17 -0
- package/skills/sentry/references/semantics/aws.md +43 -0
- package/skills/sentry/references/semantics/browser.md +34 -0
- package/skills/sentry/references/semantics/cache.md +12 -0
- package/skills/sentry/references/semantics/client.md +8 -0
- package/skills/sentry/references/semantics/cloud.md +12 -0
- package/skills/sentry/references/semantics/cloudflare.md +23 -0
- package/skills/sentry/references/semantics/code.md +11 -0
- package/skills/sentry/references/semantics/culture.md +11 -0
- package/skills/sentry/references/semantics/db.md +21 -0
- package/skills/sentry/references/semantics/device.md +43 -0
- package/skills/sentry/references/semantics/error.md +7 -0
- package/skills/sentry/references/semantics/event.md +8 -0
- package/skills/sentry/references/semantics/exception.md +10 -0
- package/skills/sentry/references/semantics/faas.md +19 -0
- package/skills/sentry/references/semantics/file.md +8 -0
- package/skills/sentry/references/semantics/flag.md +7 -0
- package/skills/sentry/references/semantics/gcp.md +16 -0
- package/skills/sentry/references/semantics/gen_ai.md +53 -0
- package/skills/sentry/references/semantics/general.md +11 -0
- package/skills/sentry/references/semantics/graphql.md +9 -0
- package/skills/sentry/references/semantics/grpc.md +19 -0
- package/skills/sentry/references/semantics/http.md +34 -0
- package/skills/sentry/references/semantics/index.md +63 -0
- package/skills/sentry/references/semantics/jsonrpc.md +8 -0
- package/skills/sentry/references/semantics/jvm.md +12 -0
- package/skills/sentry/references/semantics/koa.md +7 -0
- package/skills/sentry/references/semantics/logger.md +7 -0
- package/skills/sentry/references/semantics/mcp.md +37 -0
- package/skills/sentry/references/semantics/mdc.md +7 -0
- package/skills/sentry/references/semantics/messaging.md +23 -0
- package/skills/sentry/references/semantics/middleware.md +7 -0
- package/skills/sentry/references/semantics/navigation.md +9 -0
- package/skills/sentry/references/semantics/nel.md +11 -0
- package/skills/sentry/references/semantics/network.md +17 -0
- package/skills/sentry/references/semantics/os.md +15 -0
- package/skills/sentry/references/semantics/otel.md +10 -0
- package/skills/sentry/references/semantics/params.md +7 -0
- package/skills/sentry/references/semantics/process.md +14 -0
- package/skills/sentry/references/semantics/react.md +7 -0
- package/skills/sentry/references/semantics/remix.md +7 -0
- package/skills/sentry/references/semantics/resource.md +7 -0
- package/skills/sentry/references/semantics/rpc.md +10 -0
- package/skills/sentry/references/semantics/score.md +10 -0
- package/skills/sentry/references/semantics/sentry.md +69 -0
- package/skills/sentry/references/semantics/server.md +8 -0
- package/skills/sentry/references/semantics/service.md +8 -0
- package/skills/sentry/references/semantics/session.md +7 -0
- package/skills/sentry/references/semantics/state.md +7 -0
- package/skills/sentry/references/semantics/thread.md +8 -0
- package/skills/sentry/references/semantics/timber.md +7 -0
- package/skills/sentry/references/semantics/trpc.md +8 -0
- package/skills/sentry/references/semantics/ui.md +18 -0
- package/skills/sentry/references/semantics/url.md +15 -0
- package/skills/sentry/references/semantics/user.md +17 -0
- package/skills/sentry/references/semantics/user_agent.md +7 -0
- package/skills/sentry/references/semantics/vercel.md +42 -0
- package/skills/sentry/references/setup-verification.md +39 -0
- package/skills/sentry/references/snapshots/github-actions-fanout.md +206 -0
- package/skills/sentry/references/snapshots/github-actions-simple.md +102 -0
- package/skills/sentry/references/snapshots/github-actions-swift-snapshot-testing.md +118 -0
- package/skills/sentry/references/snapshots/index.md +19 -0
- package/skills/sentry/references/snapshots/snapshot-previews.md +100 -0
- package/skills/sentry/references/snapshots/snapshots.md +123 -0
- package/skills/sentry/references/snapshots/wizard-setup.md +134 -0
- package/skills/testing/LICENSE +21 -0
- package/skills/testing/NOTICE +7 -0
- package/skills/testing/SKILL.md +13 -19
- package/skills/testing/agents/openai.yaml +1 -2
- package/skills/testing/references/selection.md +23 -0
- package/skills/testing/references/tdd.md +19 -0
- package/skills/testing/references/test-design.md +17 -0
- package/src/catalog.ts +1 -7
- package/skills/build-effect-apis/SKILL.md +0 -81
- package/skills/build-effect-apis/agents/openai.yaml +0 -4
- package/skills/build-effect-clis/SKILL.md +0 -92
- package/skills/build-effect-clis/agents/openai.yaml +0 -4
- package/skills/effect-architecture-audit/agents/openai.yaml +0 -4
- package/skills/effect-atom-state/SKILL.md +0 -97
- package/skills/effect-atom-state/agents/openai.yaml +0 -4
- package/skills/effect-ts/SKILL.md +0 -35
- package/skills/effect-ts/agents/openai.yaml +0 -4
- /package/skills/{build-effect-apis/references → effect-development/references/api}/cloudflare-workers.md +0 -0
- /package/skills/{build-effect-apis/references → effect-development/references/api}/runtime-assembly.md +0 -0
- /package/skills/{build-effect-apis/references → effect-development/references/api}/server-and-middleware.md +0 -0
- /package/skills/{build-effect-apis/references → effect-development/references/api}/shared-contracts.md +0 -0
- /package/skills/{effect-architecture-audit/references → effect-development/references/architecture}/service-and-boundary-audit.md +0 -0
- /package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-lifecycle.md +0 -0
- /package/skills/{effect-atom-state/references → effect-development/references/atom}/effect-atom-workflows.md +0 -0
- /package/skills/{effect-atom-state/references → effect-development/references/atom}/tanstack-start.md +0 -0
- /package/skills/{build-effect-clis/references → effect-development/references/cli}/command-design.md +0 -0
- /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 |
|