{
  "skill_name": "ios-simulator",
  "evals": [
    {
      "id": 1,
      "prompt": "Write a shell script for CI that builds our map app, runs it on a fresh simulator, and drives it along a custom walking route I define as coordinates (I don't have a GPX file). Tidy up afterwards.",
      "expected_output": "Creates or looks up a device without hard-coding a UDID, boots and waits before installing the simulator .app, uses location start with waypoints, and clears location and removes the device in cleanup.",
      "files": [],
      "assertions": [
        "Drives the route with `xcrun simctl location <device> start` and lat,lon waypoints (or stdin), not with run",
        "Points out that `location run` only takes the names of scenarios that ship with the simulator, so a GPX path will not work there",
        "Boots and waits (bootstatus -b) before install and launch, and installs the .app produced for the simulator, not an .ipa",
        "Obtains the UDID from create output, a JSON lookup, or uses booted with a single simulator, instead of a literal UDID",
        "Clears the simulated location and shuts down and deletes the simulator in a cleanup step, for example a trap on EXIT"
      ]
    },
    {
      "id": 2,
      "prompt": "Please review this test script. It starts our app via `xcrun simctl spawn booted env FEATURE_FLAG=1 /path/to/App`, treats a successful `xcrun simctl push` as proof that APNs works, and calls `privacy grant all` so that NSCameraUsageDescription and NSPhotoLibraryUsageDescription can be deleted from Info.plist. What would you change?",
      "expected_output": "Replaces spawn with launch plus SIMCTL_CHILD_ variables, explains that simctl push is local and limited, lists payload rules, and keeps usage-description keys and real prompt testing.",
      "files": [],
      "assertions": [
        "Recommends `SIMCTL_CHILD_FEATURE_FLAG=1 xcrun simctl launch <device> <bundle-id>` to pass the variable to the app",
        "Explains that spawn exists for running arbitrary executables (log stream, for example) and is the wrong tool for starting an installed app",
        "States that simctl push delivers locally and proves nothing about device token registration, entitlements or server delivery, and supports only application remote pushes (not VoIP, complication or File Provider)",
        "Gives the payload constraints: the root must be a JSON object, it must include a well-formed aps dictionary, and it may not exceed 4096 bytes",
        "Keeps the usage-description keys, because granting permissions from the command line does not replace them, and keeps testing the real system prompt"
      ]
    },
    {
      "id": 3,
      "prompt": "Release-candidate test plan: which of these belong on the Simulator and which need a physical device? Capturing photos with the camera, pairing our BLE scale, altitude from the barometer, step counting from the accelerometer, the passcode fallback after Face ID fails, reacting to memory warnings, iCloud syncing, push notification delivery, and how fast our Metal renderer runs.",
      "expected_output": "Assigns hardware-only checks to devices, keeps triggerable behaviors in the simulator, treats iCloud and push as split items, and states that simulator performance is not representative across processing, graphics, memory and networking.",
      "files": [],
      "assertions": [
        "Puts camera capture, BLE pairing, barometer and accelerometer/gyroscope checks on physical devices",
        "Keeps the passcode fallback after a biometric failure, memory-warning handling and a hand-triggered iCloud sync on the simulator, and sends automatic iCloud propagation and conflicts to devices",
        "Says simulator numbers do not stand in for device processing, graphics, memory, networking or Metal GPU performance, and schedules those measurements on hardware",
        "Assigns APNs delivery to a physical device and describes simctl push as local-only",
        "Keeps to where the simulator ends and hardware begins, without drifting into guides for Instruments, Core Motion, Core Bluetooth or a push server"
      ]
    }
  ]
}
