# Scheduler

> Change automatic capture cadence, the 15-minute floor, or system-event triggers. Use when snapshots fire too often, not at all, or nextCaptureDate is wrong.

- Skill: `hoangsonww/scheduler` (Agent Skill)
- Install (CLI): `npx skillmds@latest add hoangsonww/scheduler`
- Raw SKILL.md: https://api.skillmd.com/api/skills/hoangsonww/scheduler/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: hoangsonww (https://skillmd.com/u/hoangsonww)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/hoangsonww/scheduler

---


# Scheduler

`SnapshotScheduler.decide` is a pure function. Platforms supply Timer / BGAppRefresh / WKApplicationRefresh; they must not fork the decision.

- Disabled = cadence `.off` **and** `capturesOnSystemEvents == false`.
- Cadence off with system events still enabled is a valid schedule.
- `minimumInterval` (default 900s) applies to **every** trigger, including wake/unlock.
- First run with no `lastCapture` captures immediately when enabled.
- `skipsWhenUnchanged` is applied later by `SnapshotService.capture(skipIfUnchanged:)`, not by `decide`.

Tests: `Tests/Domain/SchedulerTests.swift` and scheduler invariants.

