{
  "skill_name": "hig-foundations",
  "evals": [
    {
      "id": 0,
      "name": "brand-typography-scale",
      "prompt": "Our brand font is 'Moderat' and the design file uses Moderat Light 10 pt for row metadata, Moderat Thin 15 pt for body copy and hard-coded .font(.custom(\"Moderat-Bold\", size: 24)) for titles. Accessibility audit says text doesn't grow with the system setting. Rewrite our Font extension for SwiftUI and tell me what to push back on with design.",
      "expected_output": "Pushes back on 10 pt (below the 11 pt iOS minimum) and on Light and Thin weights for interface text, recommending Regular or heavier and sizes at or above the defaults. Rewrites fonts with Font.custom(_:size:relativeTo:) tied to text styles (body 17 pt relative to .body, titles relative to .title or .largeTitle, metadata to .caption or .footnote), uses @ScaledMetric for adjacent dimensions, and suggests the emphasized weight via .bold() for hierarchy. Mentions checking accessibility sizes and adapting layout.",
      "files": [],
      "expectations": [
        "Flags 10 pt as below the 11 pt iOS minimum text size",
        "Advises against Light and Thin weights in favor of Regular, Medium, Semibold or Bold",
        "Uses Font.custom(_:size:relativeTo:) mapped to text styles so the custom font scales with Dynamic Type",
        "Mentions 17 pt as the iOS default body size",
        "Mentions @ScaledMetric or adaptive layout at accessibility sizes"
      ]
    },
    {
      "id": 1,
      "name": "contrast-and-color-roles",
      "prompt": "Product page in SwiftUI: price in Color(hex: \"#9AA0A6\") on white at 15 pt, 'Out of stock' shown only by turning the row red, background Color.white, and a custom gray for dividers. Dark mode looks broken. What do the HIG foundations say and what do we change?",
      "expected_output": "Explains the HIG minimum contrast (4.5:1 for text up to 17 pt, 3:1 for 18 pt and larger or bold), that the light gray price likely fails, and replaces hard-coded colors with semantic ones (.secondary or secondaryLabel only if contrast holds, systemBackground, separator) or asset catalog colors with light, dark and increased-contrast variants. Says out-of-stock must not be conveyed by color alone and adds a label or symbol. Mentions testing with Increase Contrast and both appearances.",
      "files": [],
      "expectations": [
        "States the 4.5:1 minimum for text up to 17 pt (and 3:1 for larger or bold text)",
        "Replaces hard-coded white and gray with semantic system colors such as systemBackground and separator, or asset colors with dark variants",
        "Says color alone must not convey out-of-stock and adds text or a symbol",
        "Mentions an increased-contrast variant or testing with Increase Contrast",
        "Does not recommend hard-coding the documented system color values"
      ]
    },
    {
      "id": 2,
      "name": "spacing-and-targets-review",
      "prompt": "Review this SwiftUI row: HStack(spacing: 3) { Image(systemName: \"trash\").font(.system(size: 12)).onTapGesture(perform: delete); Text(title).font(.system(size: 13)).lineLimit(1) }.padding(.horizontal, 7). It sits in a ScrollView edge to edge on iPad too. Give findings in the foundations format.",
      "expected_output": "Reports findings per foundation: the trash target is far below 44x44 pt and should become a Button with a 44 pt hit area (contentShape/frame) or use swipe actions; spacing values 3 and 7 are off any grid and should be omitted or taken from tokens or a 4 pt scale; fixed system sizes should be text styles so Dynamic Type works, and lineLimit(1) truncates at large sizes; on iPad use contentMargins or readable width instead of edge to edge. Uses the [Foundation] issue plus Fix format.",
      "files": [],
      "expectations": [
        "Flags the tap target as below 44 x 44 pt and makes it a Button with a larger hit area",
        "Replaces .system(size:) with text styles for Dynamic Type and questions lineLimit(1)",
        "Flags the arbitrary 3 and 7 point values and suggests default spacing, tokens or a 4 pt scale",
        "Suggests contentMargins or a readable width for iPad instead of edge-to-edge text",
        "Reports each finding with the foundation name and a concrete fix"
      ]
    }
  ]
}
