← ClaudeAtlas

eventkitlisted

Route EventKit implementation tasks to the correct Knowledge Contracts -- authorization and access levels, event CRUD and fetch predicates, reminder CRUD and fetch, and recurrence rules with the EventKitUI hand-off decision. Use when checking EKAuthorizationStatus, calling requestFullAccessToEvents(completion:)/requestWriteOnlyAccessToEvents(completion:)/requestFullAccessToReminders(completion:)/requestAccess(to:completion:), declaring NSCalendarsUsageDescription/NSCalendarsFullAccessUsageDescription/NSCalendarsWriteOnlyAccessUsageDescription/NSRemindersUsageDescription/NSRemindersFullAccessUsageDescription, creating/saving/removing an EKEvent or EKReminder, building predicateForEvents(withStart:end:calendars:)/predicateForReminders(in:), calling events(matching:)/fetchReminders(matching:completion:), constructing EKRecurrenceRule/EKRecurrenceEnd, or deciding between EKEventEditViewController/EKEventViewController and custom UI. v1 is calendar/reminder access through EKEventStore only -- no EKSource/multi-acc
caglarbaranbora/Apple-Agent-Kit · ★ 1 · AI & Automation · score 70
Install: claude install-skill caglarbaranbora/Apple-Agent-Kit
# EventKit — Foundations Skill ## Purpose Route EventKit implementation tasks to the minimum required EventKit Knowledge Contracts. v1 scope is calendar and reminder access through `EKEventStore` -- authorization, event/reminder CRUD, fetch predicates, recurrence rules, and the point where a custom-UI feature should instead hand off to EventKitUI's prebuilt view controllers -- not multi-account calendar-source management, not CalDAV/Exchange specifics, not live external-change syncing, and not EventKit inside a widget extension. ## Routing Load only the contracts relevant to the task. All paths relative to knowledge/eventkit/. - Checking `EKAuthorizationStatus`; calling `requestFullAccessToEvents(completion:)`/`requestWriteOnlyAccessToEvents(completion:)`/`requestFullAccessToReminders(completion:)`/the legacy `requestAccess(to:completion:)`; or declaring the matching Info.plist usage-description key -> authorization-and-access-levels.md - Creating/saving/removing an `EKEvent` (`EKEvent(eventStore:)`, `save(_:span:commit:)`, `remove(_:span:commit:)`); choosing a calendar via `defaultCalendarForNewEvents`; or building/running `predicateForEvents(withStart:end:calendars:)` + `events(matching:)` -> event-crud-and-fetch-predicates.md - Creating/saving/removing an `EKReminder` (`EKReminder(eventStore:)`, `save(_:commit:)`, `remove(_:commit:)`); or building/running `predicateForReminders(in:)` + the asynchronous `fetchReminders(matching:completion:)` -> reminder-crud-and-