What problem does it solve? Flutter apps that schedule local reminders often desync from the OS pending-notification set, fire at the wrong hour across DST changes, silently exceed the iOS 64-notification cap, or lose reminders after reboot and backup restore. This Skill enforces a single on-device reminder engine where the local database is the source of truth and the OS pending set is a disposable cache reconciled through one idempotent entrypoint. ## Core Features & Use Cases - Single reconcile entrypoint: All scheduling changes flow through syncNotifications(), which diffs a pure ReminderScheduler.compute output against getPending() and applies targeted cancel/schedule operations. - DST-correct recurrence: Recurring schedules are stored as wall-clock plus recurrence rule and resolved to TZDateTime in tz.local at schedule time, with deterministic IDs that fold in the resolved fire instant so edits reschedule correctly. - Platform compliance and survival: Inexact-alarm default with SCHEDULE_EXACT_ALARM opt-in, iOS ~50-notification budgeting, boot re-arm, isolate-safe tap handlers, and an OEM survival matrix. - Use Case: When editing reminder_scheduler.dart or diagnosing a notification that fired at the wrong hour after a DST change, apply this Skill to keep the math pure, Clock-injected, and verifiable off-device with FakeNotificationGateway. ## Quick Start Ask the AI to review or write the notification scheduling code in notification_gateway.dart or reminder_scheduler.dart following the local-notifications-scheduler rules and run its check scripts before the PR.