
Eventkit
Review and correct iOS calendar booking flows—Info.plist keys, iOS 17+ authorization levels, and EventKitUI sheets—before shipping EventKit code.
Install
npx skills add https://github.com/dpearson2699/swift-ios-skills --skill eventkitWhat is this skill?
- Maps iOS 17+ write-only vs full calendar access and when each Info.plist usage description applies
- Flags legacy requestAccess(to: .event) as pre–iOS 17 fallback requiring availability guards
- Explains write-only cannot read calendars or fetch existing events for conflict detection
- Documents EKEventEditViewController flows that may not require prior app authorization
- Eval-driven: corrects team plans that mix wrong keys, access levels, and read-before-write assumptions
Adoption & trust: 1.2k installs on skills.sh; 713 GitHub stars; 3/3 security scanners passed (skills.sh audits).
Recommended Skills
Vercel React Native Skillsvercel-labs/agent-skills
Firebase Basicsfirebase/agent-skills
Building Native Uiexpo/skills
Firebase Ai Logic Basicsfirebase/agent-skills
Native Data Fetchingexpo/skills
Firebase Firestorefirebase/agent-skills
Journey fit
Primary fit
Calendar access is native platform integration work done while building the iOS product, not a launch or growth tactic. integrations covers EventKit, EventKitUI, and privacy strings for system calendar APIs—not SwiftUI layout alone.
Common Questions / FAQ
Is Eventkit safe to install?
skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.
SKILL.md
READMESKILL.md - Eventkit
{ "skill_name": "eventkit", "evals": [ { "id": 1, "prompt": "Review this iOS 26 calendar integration plan: the app asks for `NSCalendarsUsageDescription`, calls `requestAccess(to: .event)`, requests write-only access, then fetches the user's existing events to avoid conflicts before saving a booking. The team also wants an Add to Calendar button where the user can edit the event in the system sheet. Give corrected guidance with Swift API names where useful.", "expected_output": "A review that fixes iOS 17+ calendar authorization, Info.plist keys, write-only read limitations, full-access requirements for fetching, and EventKitUI no-authorization creation.", "files": [], "assertions": [ "States that iOS 17+ direct EventKit access needs `NSCalendarsWriteOnlyAccessUsageDescription` or `NSCalendarsFullAccessUsageDescription`, not only `NSCalendarsUsageDescription`.", "States that `requestAccess(to: .event)` is only a pre-iOS 17 fallback and should be availability-guarded when supporting older systems.", "Explains that write-only event access can create events but cannot read calendars or fetch existing events, including app-created events.", "Requires full calendar access for fetching existing events to detect conflicts.", "States that `EKEventEditViewController` can let the user create/edit an event without the app requesting calendar authorization, with the limitation that the app cannot inspect the saved result afterward." ] }, { "id": 2, "prompt": "We need to create reminders when someone enters a job site. The draft code creates an `EKReminder`, assigns a `CLLocation` to `EKStructuredLocation`, adds a blank `EKAlarm()`, skips reminder authorization, and assumes `defaultCalendarForNewReminders()` is always non-nil. What should be fixed?", "expected_output": "A correction that covers reminder full access, required title/calendar/default-list handling, location-based alarm setup, save behavior, and Core Location privacy only when current location is used.", "files": [], "assertions": [ "Requires full reminders access through `requestFullAccessToReminders()` before creating or reading reminders.", "Checks that `defaultCalendarForNewReminders()` returns a calendar and states that reminder `title` and `calendar` must be set before save.", "Uses `EKStructuredLocation` with `geoLocation` and a radius in meters for the geofence.", "Configures an `EKAlarm` with a structured location and `.enter` or `.leave` proximity before adding it to the reminder.", "Mentions `NSLocationWhenInUseUsageDescription` only if the app accesses the person's current location, not merely for fixed coordinates." ] }, { "id": 3, "prompt": "A teammate wants to use the push notifications layer for all calendar alerts: every event and reminder should schedule a `UNNotificationRequest`, and EventKit should only store title/start/end dates. Review the boundary and recommend the right approach.", "expected_output": "A boundary answer that keeps Calendar/Reminders alarms in EventKit, hands app-owned notification workflows to push notifications, and avoids expanding EventKit into APNs guidance.", "files": [], "assertions": [ "Recommends `EKAlarm` for Calendar event or Reminders alarms that should live with the calendar/reminder item.", "Mentions relative or absolute event alarms using `EKAlarm(relativeOffset:)` or `EKAlarm(absoluteDate:)` and `addAlarm(_:)`.", "Mentions structured-location reminders as an EventKit reminder alarm case when location is part of the reminder.", "Hands off app-owned local/remote notification delivery to `UNUserNotificationCenter` or the push-notifications skill instead of turning EventKit into APNs guidance.", "Does not claim EventKit calendar/reminder alarms require push notification authorization