{
  "skill_name": "hig-components-layout",
  "evals": [
    {
      "id": 0,
      "name": "music-style-tab-bar",
      "prompt": "Podcast app, SwiftUI, deployment target iOS 26. Tabs: Home, Library, Downloads, Search, plus a 'Record' tab that opens the recorder sheet. We paint the tab bar with a purple UITabBarAppearance background and want a mini player like Apple Music that stays above the tab bar and shrinks when you scroll. How should we set this up?",
      "expected_output": "Removes the custom tab bar background so the floating Liquid Glass tab bar and scroll edge effect work. Uses Tab with Tab(role: .search) for search, set apart at the trailing end. Moves 'Record' out of the tab bar because a tab is not an action (toolbar button or other entry point). Uses .tabViewBottomAccessory for the mini player and .tabBarMinimizeBehavior(.onScrollDown), and adapts the accessory with the tabViewBottomAccessoryPlacement environment value (.inline vs .expanded).",
      "files": [],
      "expectations": [
        "Removes the custom purple tab bar background",
        "Uses Tab(role: .search) for the search tab",
        "Says the Record tab should not be a tab because tabs are not actions",
        "Uses .tabViewBottomAccessory for the mini player",
        "Uses .tabBarMinimizeBehavior(.onScrollDown) and adapts the accessory via tabViewBottomAccessoryPlacement"
      ]
    },
    {
      "id": 1,
      "name": "crowded-toolbar-ios27",
      "prompt": "Our document editor's navigation bar on iPhone has Undo, Redo, Share, Comment, Format, Export, Print and Done buttons and half of them get clipped. We can require iOS 27 for this redesign. What should the toolbar look like in SwiftUI?",
      "expected_output": "Reduces and groups items (aim for at most three groups) with ToolbarSpacer, keeps one primary Done action on the trailing side using Button(role: .confirm) or confirmationAction placement, moves rarely used actions such as Export and Print into ToolbarOverflowMenu, ranks the rest with .visibilityPriority so important items stay, and may pin a key item with .topBarPinnedTrailing. Uses symbols with accessibility labels and avoids a hand-made overflow Menu and custom bar backgrounds.",
      "files": [],
      "expectations": [
        "Uses ToolbarOverflowMenu for rarely used actions such as Export and Print",
        "Uses .visibilityPriority to control which items move to overflow first",
        "Keeps a single primary Done/confirm action on the trailing side",
        "Groups related items with ToolbarSpacer and keeps the number of groups small",
        "Mentions .topBarPinnedTrailing or explains that iOS 27 APIs need iOS 27 availability"
      ]
    },
    {
      "id": 2,
      "name": "structure-choice-ipad",
      "prompt": "Field-service app: Jobs, Map, Inventory, Messages, Reports, Settings, Team, Timesheets and Documents. iPhone and iPad. Each job has a detail with parts and photos. Should this be tabs, a sidebar or something else, and how do we present 'Log time' and the job detail?",
      "expected_output": "With nine peer areas recommends a sidebar-adaptable TabView (tab bar on iPhone with five or fewer primary tabs, sidebar on iPad) or NavigationSplitView, keeps Settings out of the main tabs or in a sidebar section, uses NavigationSplitView or NavigationStack for job list to detail, presents 'Log time' as a sheet with Cancel and Save and protects unsaved input with interactiveDismissDisabled, and avoids stacking modals.",
      "files": [],
      "expectations": [
        "Recommends .tabViewStyle(.sidebarAdaptable) or a NavigationSplitView sidebar for the many areas on iPad",
        "Keeps the iPhone tab bar to about five tabs and moves the rest",
        "Uses a list-detail structure (NavigationSplitView or NavigationStack) for jobs",
        "Presents Log time as a sheet with Cancel and a confirming action",
        "Protects unsaved input or warns against stacking modals"
      ]
    }
  ]
}
