apple-hig-expert
Apple Human Interface Guidelines expert for iOS, iPadOS, macOS, watchOS, tvOS, and visionOS. Covers platform-native patterns, navigation, typography, controls, gestures, accessibility, and the platform-specific conventions that make apps feel native. Use when designing or reviewing an Apple platform app, auditing for HIG compliance, picking the right native components, or validating accessibility against Apple's requirements.
What this skill does
# Apple Human Interface Guidelines (HIG) Expert A skill focused on shipping apps that feel native on Apple platforms. Covers the underlying HIG principles, platform-specific patterns, native component selection, and accessibility expectations. This skill is opinionated about **native conventions**. It's not the right skill if your goal is to maximize cross-platform UX uniformity over native fit (see web design guides for that). ## When to use this skill - Designing or reviewing an iOS / iPadOS / macOS / watchOS / tvOS / visionOS app - Auditing an existing app for HIG compliance - Picking the right native component (sheet vs popover vs full-screen) - Adapting an app from one Apple platform to another - Reviewing typography, color, spacing, and motion against HIG - Auditing accessibility against Apple's accessibility expectations - Onboarding a designer or PM new to Apple-platform design ## Inputs the advisor expects - Target platform(s) and version range (iOS 17+, macOS 14+, etc.) - App type (utility, productivity, social, games, media) - Current designs / screenshots (described or referenced) - Stack: SwiftUI vs UIKit / AppKit, recent or legacy codebase - Accessibility maturity (WCAG audit done; VoiceOver tested) ## Workflows ### Workflow 1 — Audit screens for HIG compliance 1. Describe or reference each screen. 2. Run `hig_compliance_checker.py` with the screen inventory. 3. Address findings by category (navigation, typography, controls, spacing, motion). ```bash python3 apple-hig-expert/scripts/hig_compliance_checker.py \ --input screens.json --format markdown ``` ### Workflow 2 — Pick the right component for a flow 1. Describe the interaction goal. 2. Use `component_pattern_lookup.py` to surface candidate patterns, trade-offs, and platform-specific guidance. ```bash python3 apple-hig-expert/scripts/component_pattern_lookup.py \ --platform ios --goal "show options without leaving context" --format markdown ``` ### Workflow 3 — Audit accessibility against Apple expectations 1. Capture screen inventory + accessibility attributes (labels, hints, traits). 2. Run `accessibility_auditor.py` to surface gaps. 3. Use Apple Accessibility Inspector to validate. ```bash python3 apple-hig-expert/scripts/accessibility_auditor.py \ --input a11y_state.json --format markdown ``` ## Decision frameworks ### Sheets vs popovers vs full-screen | Pattern | When to use | Platform | |---------|-------------|----------| | Sheet (medium / large) | Modal task with clear escape | iOS, iPadOS, macOS, visionOS | | Popover | Context-anchored options, brief | iPadOS (compact: replaced with sheet), macOS | | Full-screen cover | Immersive task, e.g., photo editing | iOS | | Push (navigation stack) | Hierarchical drill-in | iOS, iPadOS | | Inspector | Persistent secondary content | macOS, iPadOS | | Toolbar item | Quick action on current context | All | Common mistake: popover on compact iPhone (it becomes a sheet automatically; design for both). ### When to use SwiftUI vs UIKit - **SwiftUI** — new apps, simple-to-moderate complexity, multi-platform from one codebase - **UIKit** — legacy code, complex interactions not yet ergonomic in SwiftUI, performance-sensitive - **Mixed** — common; embed SwiftUI in UIKit hosts or vice versa The trend (2026) is SwiftUI-first for new development; UIKit retains strength in performance-sensitive lists and complex gesture handling. ### Color and dark mode - Use **semantic colors** (`systemBackground`, `secondaryLabel`) — they adapt to light/dark mode automatically - Avoid hardcoded hex values for system-feeling content - Test in both light + dark mode + increased contrast settings - Brand colors: assess contrast in both modes; use Asset Catalog with separate light/dark variants ### Typography - Use **Dynamic Type** styles (`largeTitle`, `body`, `caption`) — they scale with user accessibility settings - Don't hardcode font sizes for body text - Custom fonts: still respect Dynamic Type through `UIFontMetrics` / SwiftUI `dynamicTypeSize` - Test at largest Dynamic Type setting; design must remain usable ## Common engagements ### "Help me adapt our iPhone app for iPad" 1. Identify navigation: sidebar (NavigationSplitView) vs tabs at iPad sizes 2. Use Inspector for secondary content 3. Convert sheets to popovers where appropriate 4. Adapt to multitasking (split view, slide over) 5. Add hardware support: Pencil, keyboard shortcuts, pointer interactions ### "Our app feels un-Apple-y. What's wrong?" 1. Check typography — using Dynamic Type styles, not hardcoded sizes? 2. Check colors — semantic colors, dark mode parity? 3. Check spacing — multiples of 4 or 8; not custom every-screen 4. Check controls — using native ones, not custom toggles/buttons? 5. Check navigation — does back gesture work? Does state persist correctly? ### "Make our app accessible" 1. Every interactive element has a label 2. Decorative images marked `accessibilityHidden` 3. Focus order makes sense for VoiceOver 4. Custom controls have correct `accessibilityTraits` 5. Touch targets ≥44pt × 44pt 6. Color isn't the only way information is conveyed 7. Reduced motion respected 8. Test with VoiceOver, Voice Control, Switch Control, Dynamic Type max ## Anti-patterns to avoid - **Custom UI for things iOS already provides.** Use native; users expect it. - **Hardcoded font sizes.** Breaks Dynamic Type; breaks accessibility. - **Same UI across all Apple platforms.** Each platform has different conventions. - **Hamburger menu on iOS.** Tab bar is more discoverable. - **Modal-heavy navigation.** Apple's nav stack is the primary pattern. - **Custom navigation bar.** Use the system one; users know how it works. - **Ignoring safe area insets.** Content gets clipped behind notches and home indicators. - **No haptic feedback on iOS.** Apps that use it feel premium. - **No keyboard support on iPad.** Power users will leave. ## References - `references/hig-fundamentals.md` — principles, design language, foundational patterns - `references/ios-component-patterns.md` — sheets, navigation, controls, gestures, lists - `references/cross-platform-considerations.md` — iPad, Mac, Watch, TV, Vision differences ## Related skills - `product-team/product-designer` — broader product design - `product-team/ui-design-system` — design system construction - `product-team/ux-researcher-designer` — research informing design - `engineering/senior-frontend` — implementation
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.