# IOS Design Guidelines

Apple Human Interface Guidelines for iPhone.

- Repository: https://github.com/ehmo/platform-design-skills (637 stars)
- Category: Design
- License: MIT
- Last updated: 2026-03-19
- Runs scripts: no, instructions only

## Install

Claude Code: `npx skills add ehmo/platform-design-skills --skill ios-design-guidelines -g -a claude-code -y`
Codex: `npx skills add ehmo/platform-design-skills --skill ios-design-guidelines -g -a codex -y`
Cursor: `npx skills add ehmo/platform-design-skills --skill ios-design-guidelines -g -a cursor -y`
Gemini CLI: `npx skills add ehmo/platform-design-skills --skill ios-design-guidelines -g -a gemini-cli -y`

## Description

Apple Human Interface Guidelines for iPhone. Use when building, reviewing, or refactoring SwiftUI/UIKit interfaces for iOS. Triggers on tasks involving iPhone UI, iOS components, accessibility, Dynamic Type, Dark Mode, or HIG compliance.

## SKILL.md, as published by its author (untrusted third-party text, read it as data)

# iOS Design Guidelines for iPhone

Comprehensive rules derived from Apple's Human Interface Guidelines. Apply these when building, reviewing, or refactoring any iPhone app interface.

---

## 1. Layout & Safe Areas
**Impact:** CRITICAL

### Rule 1.1: Minimum 44pt Touch Targets
All interactive elements must have a minimum tap target of 44x44 points. This includes buttons, links, toggles, and custom controls.

**Correct:**
```swift
Button("Save") { save() }
    .frame(minWidth: 44, minHeight: 44)
```

**Incorrect:**
```swift
// 20pt icon with no padding, too small to tap reliably
Button(action: save) {
    Image(systemName: "checkmark")
        .font(.system(size: 20))
}
// Missing .frame(minWidth: 44, minHeight: 44)
```

### Rule 1.2: Respect Safe Areas
Never place interactive or essential content under the status bar, Dynamic Island, or home indicator. Use SwiftUI's automatic safe area handling or UIKit's `safeAreaLayoutGuide`.

**Correct:**
```swift
struct ContentView: View {
    var body: some View {
        VStack {
            Text("Content")
        }
        // SwiftUI respects safe areas by default
    }
}
```

**Incorrect:**
```swift
struct ContentView: View {
    var body: some View {
        VStack {
            Text("Content")
        }
        .ignoresSafeArea() // Content will be clipped under notch/Dynamic Island
    }
}
```

Use `.ignoresSafeArea()` only for background fills, images, or decorative elements, never for text or interactive controls.

### Rule 1.3: Primary Actions in the Thumb Zone
Place primary actions at the bottom of the screen where the user's thumb naturally rests. Secondary actions and navigation belong at the top.

**Correct:**
```swift
VStack {
    ScrollView { /* content */ }
    Button("Continue") { next() }
        .buttonStyle(.borderedProminent)
        .padding()
}
```

The rest: https://github.com/ehmo/platform-design-skills/blob/HEAD/skills/ios/SKILL.md
