{
  "skill_name": "eventkit-calendar",
  "evals": [
    {
      "id": 1,
      "name": "calendar-access-levels",
      "prompt": "Our event-ticket app targets iOS 16 and later. It calls requestAccess(to: .event) on every launch, only has NSCalendarsUsageDescription in Info.plist, asks for write-only access so it can add concerts, and then checks the user's calendar for clashes. Some people just want to add a concert through the system editor. What should change?",
      "expected_output": "Adds the iOS 17 full-access and write-only keys alongside the legacy key, uses the granular request methods with requestAccess(to:) only in a pre-17 availability branch, explains write-only cannot read or fetch so the clash check needs full access, and notes EKEventEditViewController needs no permission on iOS 17+ but its saved result cannot be inspected.",
      "files": [],
      "assertions": [
        "Adds NSCalendarsFullAccessUsageDescription and NSCalendarsWriteOnlyAccessUsageDescription, not only the legacy key",
        "Uses requestFullAccessToEvents or requestWriteOnlyAccessToEvents on iOS 17+, with requestAccess(to:) only as an availability-guarded fallback",
        "States write-only access cannot read calendars or fetch events",
        "Requires full access for the conflict check",
        "Says EKEventEditViewController works without authorization on iOS 17+ and the app cannot inspect what was saved"
      ]
    },
    {
      "id": 2,
      "name": "location-reminder",
      "prompt": "Build a 'remind me when I get to the hardware store' feature. We have the store's coordinates from our own database. Our draft saves an EKReminder straight away without a calendar, puts the coordinate in the notes field, and asks for Always location permission at launch.",
      "expected_output": "Requests full reminders access, checks the default reminder list is not nil and sets title and calendar before saving, builds an EKStructuredLocation with geoLocation and a radius in meters, attaches it to an EKAlarm with proximity .enter, and adds a location usage key only if the app uses the person's current location.",
      "files": [],
      "assertions": [
        "Calls requestFullAccessToReminders before creating the reminder",
        "Guards defaultCalendarForNewReminders against nil and sets title and calendar before saving",
        "Creates an EKStructuredLocation with geoLocation and a radius in meters",
        "Adds an EKAlarm with the structured location and a proximity of .enter or .leave",
        "Adds a location usage description and Core Location request only when the person's current location is used"
      ]
    },
    {
      "id": 3,
      "name": "alarms-vs-app-notifications",
      "prompt": "Our study planner adds exam events to the user's calendar and wants alerts 1 day and 1 hour before. We also want the app itself to send a motivational notification each morning. Do we need notification permission for the calendar alerts, and how should both parts be built?",
      "expected_output": "Uses EKAlarm with relative offsets (or absolute dates) added through addAlarm(_:) for the calendar alerts, mentions structured-location alarms for reminders, routes the app's own morning notification to UNUserNotificationCenter and the push-notifications skill, and does not claim EventKit alarms need notification authorization.",
      "files": [],
      "assertions": [
        "Uses EKAlarm for the exam alerts",
        "Shows relative or absolute alarms added with addAlarm(_:)",
        "Mentions location-based alarms on reminders through EKStructuredLocation",
        "Sends the app-owned morning notification through UNUserNotificationCenter or the push-notifications skill",
        "Does not say EventKit alarms require notification permission"
      ]
    }
  ]
}