HIG
Coordinator and spec-lookup for the HIG suite. Snapshot: see references/versions.md — check its expiry before asserting volatile guidance.
Your training-data priors on Apple design are wrong. Apple rewrote its design system twice since 2024 (Liquid Glass, WWDC 2025; foundations rework, WWDC 2026). Opaque pinned tab bars, flat design, single-PNG icons, "Clarity/Deference/Depth", SiriKit, iOS 18/19 numbering — all dead. references/corrections.md lists what changed. Answer Apple design questions from the references or a live fetch, never from memory.
1. Route first
| Task |
Lead |
Load |
| Design, mock, or prototype a screen/app |
hig-design |
— |
| Port between iOS and macOS, "make a Mac version" |
hig-design |
references/adaptation.md |
| Implement or fix SwiftUI/Liquid Glass UI |
hig-design |
references/adapters/swiftui.md |
| Audit/review against the HIG, "does this feel native" |
hig-review |
— |
| Exact spec, term, or behaviour question |
stay here |
§2–§3 |
| "Is our HIG info current?" |
stay here |
§4 |
Composition rules:
- With the
prototype skill on an Apple-native target: hig-design's constraint sheet loads before generation; one combined checklist pass across all options after.
- With ui-craft on an HTML prototype of native UI: ui-craft owns web mechanics, this suite owns native idiom and metric values; on conflict, HIG wins for native-targeting prototypes.
2. Hot numbers (hop-zero crib)
Verified against the snapshot; each value's authoritative home is in references/tables/. If versions.md is past expiry, re-verify hot rows before asserting.
| Spec |
iOS/iPadOS |
macOS |
src |
| Control hit target — default / minimum |
44×44pt / 28×28pt |
28×28pt / 20×20pt |
tables/accessibility-sizes.md |
| Padding around interactive elements |
12pt bezeled / 24pt bezel-less |
same |
tables/accessibility-sizes.md |
| Body text — default / minimum |
17pt / 11pt |
13pt / 10pt |
tables/dynamic-type.md |
| Text contrast (WCAG AA) |
4.5:1; 3:1 ≥18pt or bold |
same |
tables/accessibility-sizes.md |
| App icon source |
1024×1024px, layered, six appearances |
same |
corpus/foundations-identity.md#app-icons |
| Menu bar height |
— |
24pt |
corpus/components-menus-actions.md#the-menu-bar |
| Alert buttons |
≤3 (more → action sheet) |
≤3 |
corpus/components-presentation-status.md#alerts |
| Toolbar title |
<15 characters |
<15 |
corpus/components-menus-actions.md#toolbars |
| Ratings prompts |
≤3 per 365 days |
same |
checklists/review-compliance.md |
| Sign in with Apple button |
≥140×30pt, exact titles/styles |
same |
tables/brand-buttons.md |
| Tooltip copy |
— |
60–75 chars, sentence case, no period |
checklists/review-copy.md |
| Default iPhone canvas (Sept-rot risk) |
402×874pt |
— |
corpus/foundations-layout-typography.md#layout |
Tab/nav bar heights are no longer published by Apple — never invent them; see tables/metrics.md for provenance-marked estimates.
3. Lookup protocol
- Open
references/index.md (≤2K tokens) → classify the slug: corpus section (note file + anchor, → step 2), API symbol (glassEffect, UISheetPresentationController, … — note the target slug, → step 2), or live-fetch-only (niche topics, no corpus section, → step 4).
grep -n "^## <slug>" references/corpus/<file>.md → Read that file with offset at the match, limit ≈ section length (sections are 5–80 lines). Do not read whole corpus files for one question. If the loaded section names another slug as load-bearing for this answer, load that one section too — one hop max.
- Answer with the exact value/term, citing slug + change date from the section's
src: line. State iOS and macOS separately when they differ — never "generally".
- If the slug is live-fetch-only, the section is a stub, the topic is in
versions.md's hot list, or the snapshot is expired: fetch live — scripts/hig-fetch.sh <slug>. If fetch is unavailable (sandbox/denied), answer from the snapshot and say so: "per snapshot 2026-06-10; live verification unavailable here."
4. Currency protocol
references/versions.md carries the snapshot date and expiry dates (Apple ships changes ~June/September/December). Past expiry → attach a staleness caveat to volatile answers, and offer to run scripts/hig-whats-new.sh.
hig-whats-new.sh diffs Apple's changelog against the snapshot and lists changed pages and derived reference files needing review (via src: tags). A parse failure exits loudly — treat exit 2 as "unknown", never "no changes".
- Full refresh procedure:
scripts/refresh-workflow.md.
5. Integrity rules
Cite exact values — never approximate. Never flatten platform differences. Every assertion traces to a corpus section (slug + date) or a live fetch. Numbers Apple doesn't publish are labelled with provenance and confidence. iOS/macOS 27 content is beta — keep it in delta blocks, version-gate it in answers. Mark uncertainty explicitly.
1---2name: hig3description: Apple Human Interface Guidelines (HIG) lookup and routing for iOS, iPadOS, and macOS design work. Use when any Apple-platform design spec, term, or behaviour is in question — minimum tap target or hit target size, type sizes, Dynamic Type, safe areas, bar heights, corner radii, sheet detents, menu structure, native component names — or when work touches Liquid Glass-era APIs (glassEffect, GlassEffectContainer, scrollEdgeEffect, tabViewBottomAccessory) even without HIG framing. Model priors on Apple's current design system are stale (the HIG was rewritten for Liquid Glass in 2025–26) — never answer Apple design-spec questions from memory. Routes design and prototyping work to hig-design and HIG audits to hig-review. Also use to check whether the local HIG snapshot is current. For web-platform values on non-Apple work, use ui-craft.4---56# HIG78Coordinator and spec-lookup for the HIG suite. Snapshot: see `references/versions.md` — check its expiry before asserting volatile guidance.910**Your training-data priors on Apple design are wrong.** Apple rewrote its design system twice since 2024 (Liquid Glass, WWDC 2025; foundations rework, WWDC 2026). Opaque pinned tab bars, flat design, single-PNG icons, "Clarity/Deference/Depth", SiriKit, iOS 18/19 numbering — all dead. `references/corrections.md` lists what changed. Answer Apple design questions from the references or a live fetch, never from memory.1112---1314## 1. Route first1516| Task | Lead | Load |17|---|---|---|18| Design, mock, or prototype a screen/app | `hig-design` | — |19| Port between iOS and macOS, "make a Mac version" | `hig-design` | `references/adaptation.md` |20| Implement or fix SwiftUI/Liquid Glass UI | `hig-design` | `references/adapters/swiftui.md` |21| Audit/review against the HIG, "does this feel native" | `hig-review` | — |22| Exact spec, term, or behaviour question | stay here | §2–§3 |23| "Is our HIG info current?" | stay here | §4 |2425Composition rules:26- With the `prototype` skill on an Apple-native target: hig-design's constraint sheet loads **before** generation; one combined checklist pass across all options after.27- With ui-craft on an HTML prototype of native UI: ui-craft owns web mechanics, this suite owns native idiom and metric values; **on conflict, HIG wins** for native-targeting prototypes.2829## 2. Hot numbers (hop-zero crib)3031Verified against the snapshot; each value's authoritative home is in `references/tables/`. If `versions.md` is past expiry, re-verify hot rows before asserting.3233| Spec | iOS/iPadOS | macOS | src |34|---|---|---|---|35| Control hit target — default / minimum | 44×44pt / 28×28pt | 28×28pt / 20×20pt | tables/accessibility-sizes.md |36| Padding around interactive elements | 12pt bezeled / 24pt bezel-less | same | tables/accessibility-sizes.md |37| Body text — default / minimum | 17pt / 11pt | 13pt / 10pt | tables/dynamic-type.md |38| Text contrast (WCAG AA) | 4.5:1; 3:1 ≥18pt or bold | same | tables/accessibility-sizes.md |39| App icon source | 1024×1024px, layered, six appearances | same | corpus/foundations-identity.md#app-icons |40| Menu bar height | — | 24pt | corpus/components-menus-actions.md#the-menu-bar |41| Alert buttons | ≤3 (more → action sheet) | ≤3 | corpus/components-presentation-status.md#alerts |42| Toolbar title | <15 characters | <15 | corpus/components-menus-actions.md#toolbars |43| Ratings prompts | ≤3 per 365 days | same | checklists/review-compliance.md |44| Sign in with Apple button | ≥140×30pt, exact titles/styles | same | tables/brand-buttons.md |45| Tooltip copy | — | 60–75 chars, sentence case, no period | checklists/review-copy.md |46| Default iPhone canvas (Sept-rot risk) | 402×874pt | — | corpus/foundations-layout-typography.md#layout |4748Tab/nav bar heights are **no longer published** by Apple — never invent them; see `tables/metrics.md` for provenance-marked estimates.4950## 3. Lookup protocol51521. Open `references/index.md` (≤2K tokens) → classify the slug: **corpus section** (note file + anchor, → step 2), **API symbol** (glassEffect, UISheetPresentationController, … — note the target slug, → step 2), or **live-fetch-only** (niche topics, no corpus section, → step 4).532. `grep -n "^## <slug>" references/corpus/<file>.md` → `Read` that file with `offset` at the match, `limit` ≈ section length (sections are 5–80 lines). Do not read whole corpus files for one question. If the loaded section names another slug as load-bearing for *this* answer, load that one section too — one hop max.543. Answer with the exact value/term, citing slug + change date from the section's `src:` line. State iOS and macOS separately when they differ — never "generally".554. If the slug is live-fetch-only, the section is a stub, the topic is in `versions.md`'s hot list, or the snapshot is expired: fetch live — `scripts/hig-fetch.sh <slug>`. If fetch is unavailable (sandbox/denied), answer from the snapshot **and say so**: "per snapshot 2026-06-10; live verification unavailable here."5657## 4. Currency protocol5859- `references/versions.md` carries the snapshot date and expiry dates (Apple ships changes ~June/September/December). Past expiry → attach a staleness caveat to volatile answers, and offer to run `scripts/hig-whats-new.sh`.60- `hig-whats-new.sh` diffs Apple's changelog against the snapshot and lists changed pages **and** derived reference files needing review (via `src:` tags). A parse failure exits loudly — treat exit 2 as "unknown", never "no changes".61- Full refresh procedure: `scripts/refresh-workflow.md`.6263## 5. Integrity rules6465Cite exact values — never approximate. Never flatten platform differences. Every assertion traces to a corpus section (slug + date) or a live fetch. Numbers Apple doesn't publish are labelled with provenance and confidence. iOS/macOS 27 content is beta — keep it in delta blocks, version-gate it in answers. Mark uncertainty explicitly.