{
  "skill_name": "ios-iphone-duo",
  "evals": [
    {
      "id": 0,
      "name": "readiness-audit-plan",
      "prompt": "We have a UIKit and SwiftUI mixed iPhone app. Leadership wants it ready for iPhone Duo. Give me an audit plan: what to search for in the code, what to replace it with, and how to verify. We currently use UIScreen.main.bounds in a dozen places, show our iPad layout when horizontalSizeClass is regular, and have a custom UIToolbar at the bottom of the editor.",
      "expected_output": "Starts with building on the latest Xcode and running in the iPhone Duo simulator from Device Hub across closed, open, folded, rotated and Split View. Provides a grep list (UIScreen.main, orientation, userInterfaceIdiom, regular size class, device widths, symmetric insets, hand-built bars, fill media) with replacements: view or scene bounds and displayScale instead of UIScreen.main (deprecated in iOS 26), size class and available space instead of treating regular as iPad, container-provided toolbar items instead of the custom UIToolbar so bars can move vertical. Covers asymmetric safe areas and reserved regions, marks 27.1 APIs as beta, and reports file:line findings separating simulator-confirmed from code-only.",
      "files": [],
      "expectations": [
        "Gives grep patterns including UIScreen.main and userInterfaceIdiom or orientation",
        "Replaces UIScreen.main with view, window or scene bounds and notes its iOS 26 deprecation",
        "Explains that regular width no longer means iPad because the inner display is regular",
        "Replaces the custom UIToolbar with container-provided toolbar items for vertical bars",
        "Mentions asymmetric safe area insets handled per edge",
        "Requires verification in the iPhone Duo simulator across poses and Split View",
        "Marks iOS 27.1 APIs such as ReservedRegion or ArrangementView as beta"
      ]
    },
    {
      "id": 1,
      "name": "fold-aware-media-layout",
      "prompt": "Our video app shows playback controls over the video in a ZStack. On the foldable iPhone, when it is half folded, we want video on top half and controls on the bottom half, and the controls must never sit in the fold. Which APIs should we use and how?",
      "expected_output": "Recommends ArrangementView with the overlay style (iOS 27.1 beta), controls as primary and video as secondary, which layers them when flat or closed and splits them around the fold when partially open; optionally constrains axes. Keeps navigation containers outside and does not place the arrangement in a List or ScrollView. For any custom positioning, reads reserved regions of kind division from GeometryProxy, filters isActive, notes frame includes margins and SwiftUI mirrors frames for RTL by default. Uses onHingeChange only for effects, not layout.",
      "files": [],
      "expectations": [
        "Uses ArrangementView with the overlay style",
        "Explains overlay behaviour: layered when flat, split around the fold when partially open",
        "Marks ArrangementView or reserved regions as iOS 27.1 beta",
        "Mentions reserved regions of kind division with an isActive check for custom layout",
        "Keeps navigation containers outside the arrangement or avoids List and ScrollView",
        "Says the hinge API is for effects, not layout"
      ]
    },
    {
      "id": 2,
      "name": "vertical-toolbar-design",
      "prompt": "On the outer display our editor's toolbar moved to the side and half the buttons vanished, and our 'Save changes' text button stays at the top. How should we organise the toolbar for iPhone Duo?",
      "expected_output": "Explains vertical bars on the outer display and inner landscape, with items needing a symbol and title (text-only items stay horizontal). Orders Back or Close at top via cancellationAction, prominent Done via topBarPinnedTrailing, then grouped items with ToolbarItemGroup; sets visibilityPriority so frequent and badged items stay visible; uses ToolbarOverflowMenu for extra actions instead of a custom menu; mentions axisBehavior and toolbarVerticalCompressionBehavior as 27.1 beta, and toolbarVerticalBehavior(.disabled) only for screens better served by horizontal bars.",
      "files": [],
      "expectations": [
        "Says items need both a symbol and a title and that text-only items stay horizontal",
        "Places Back or Close first with cancellationAction and a prominent action with topBarPinnedTrailing",
        "Uses visibilityPriority to control what overflows",
        "Uses ToolbarOverflowMenu or the system overflow instead of a custom menu",
        "Treats disabling vertical bars as a rare, stable per-screen choice"
      ]
    },
    {
      "id": 3,
      "name": "scene-lifecycle-and-legacy-guides",
      "prompt": "Our UIKit app still does all its foreground and background work in AppDelegate (applicationDidBecomeActive and friends), creates its window with UIWindow(frame: UIScreen.main.bounds), pins the editor to topLayoutGuide, and moves the input bar up by reading keyboardFrameEndUserInfoKey. We are moving to the iOS 27 SDK and want iPhone Duo support. What breaks and what do we change?",
      "expected_output": "States that from iOS 27 an app built with the latest SDK must adopt the scene-based life cycle or it fails to launch, and that foreground and background arrive per scene. Moves window creation to a scene delegate with UIWindow(windowScene:), the four lifecycle callbacks to their scene equivalents, keeps one-time work in didFinishLaunching, and treats multiple windows as optional. Replaces topLayoutGuide with safeAreaLayoutGuide and keyboard-frame math with keyboardLayoutGuide, and reads insets at layout time. Mentions running Apple's app-resizability skill first when Xcode provides it.",
      "files": [],
      "expectations": [
        "Says an app built with the iOS 27 SDK without the scene life cycle fails to launch",
        "Moves window creation to a scene delegate using UIWindow(windowScene:)",
        "Maps the app delegate lifecycle callbacks to scene callbacks and keeps one-time work at launch",
        "Replaces topLayoutGuide with safeAreaLayoutGuide",
        "Replaces keyboard frame math with keyboardLayoutGuide",
        "Points to Apple's app-resizability skill as the first route when Xcode 27.1+ provides it"
      ]
    }
  ]
}
