Skip to content
Skill Authoring
Skill

/apple-hig-designer

Design iOS apps following Apple's Human Interface Guidelines. Generate native components, validate designs, and ensure accessibility compliance for iPhone, iPad, and Apple Watch.

From plugin
jamesrochabrun-skills
19424 skills
Install
$ npx -y skills add jamesrochabrun/skills --skill apple-hig-designer --agent claude-code

How it fires

How this skill gets triggered: by you, by Claude, or both.

  • Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
  • You can call itInvoke it directly when you want it.
  • Slash command/apple-hig-designer

Context preview

The summary Claude sees to decide when to auto-load this skill.

Design iOS apps following Apple's Human Interface Guidelines. Generate native components, validate designs, and ensure accessibility compliance for iPhone, iPad, and Apple Watch.

SKILL.md

apple-hig-designer.SKILL.md
name: apple-hig-designer
description: Design iOS apps following Apple's Human Interface Guidelines. Generate native components, validate designs, and ensure accessibility compliance for iPhone, iPad, and Apple Watch.

Apple HIG Designer

Design beautiful, native iOS apps following Apple's Human Interface Guidelines (HIG). Create accessible, intuitive interfaces with native components, proper typography, semantic colors, and Apple's design principles.

What This Skill Does

Helps you design and build iOS apps that feel native and follow Apple's guidelines:

  • **Generate iOS Components** - Create SwiftUI and UIKit components
  • **Validate Designs** - Check compliance with Apple HIG
  • **Ensure Accessibility** - VoiceOver, Dynamic Type, color contrast
  • **Apply Design Principles** - Clarity, Deference, Depth
  • **Use Semantic Colors** - Automatic dark mode support
  • **Implement Typography** - San Francisco font system
  • **Follow Spacing** - 8pt grid system and safe areas

Apple's Design Principles

1. Clarity

**Make content clear and focused.**

Text is legible at every size, icons are precise and lucid, adornments are subtle and appropriate, and a focus on functionality drives the design.

// ✅ Clear, focused content
Text("Welcome back, Sarah")
    .font(.title)
    .foregroundColor(.primary)

// ❌ Unclear, cluttered
Text("Welcome back, Sarah!!!")
    .font(.title)
    .foregroundColor(.red)
    .background(.yellow)
    .overlay(Image(systemName: "star.fill"))

2. Deference

**UI helps people understand and interact with content, but never competes with it.**

The interface defers to content, using a light visual treatment that keeps focus on the content and gives the content room to breathe.

// ✅ Content-focused
VStack(alignment: .leading, spacing: 8) {
    Text("Article Title")
        .font(.headline)
    Text("Article content goes here...")
        .font(.body)
        .foregroundColor(.secondary)
}
.padding()

// ❌ Distracting UI
VStack(spacing: 8) {
    Text("Article Title")
        .font(.headline)
        .foregroundColor(.white)
        .background(.blue)
        .border(.red, width: 3)
}

3. Depth

**Visual layers and realistic motion convey hierarchy and help people understand relationships.**

Distinct visual layers and realistic motion impart vitality and facilitate understanding. Touch and discoverability heighten delight and enable access to functionality without losing context.

// ✅ Clear depth hierarchy
ZStack {
    Color(.systemBackground)

    VStack {
        // Card with elevation
        CardView()
            .shadow(radius: 8)
    }
}

// Using blur for depth
Text("Content")
    .background(.ultraThinMaterial)

iOS UI Components

Navigation Patterns

1. Navigation Bar

**Top bar for navigation and actions.**

NavigationStack {
    List {
        Text("Item 1")
        Text("Item 2")
    }
    .navigationTitle("Title")
    .navigationBarTitleDisplayMode(.large)
    .toolbar {
        ToolbarItem(placement: .navigationBarTrailing) {
            Button("Add") {
                // Action
            }
        }
    }
}

**Guidelines:**

  • Use large titles for top-level views
  • Use inline titles for detail views
  • Keep actions relevant to current context
  • Maximum 2-3 toolbar items

2. Tab Bar

**Bottom navigation for top-level destinations.**

TabView {
    HomeView()
        .tabItem {
            Label("Home", systemImage: "house")
        }

    SearchView()
        .tabItem {
            Label("Search", systemImage: "magnifyingglass")
        }

    ProfileView()
        .tabItem {
            Label("Profile", systemImage: "person")
        }
}

**Guidelines:**

  • 3-5 tabs maximum
  • Use SF Symbols for icons
  • Labels should be concise (one word)
  • Never hide or disable tabs
  • Don't use tab bar with toolbar in same view

3. List

**Scrollable list of items.**

List {
    Section("Today") {
        ForEach(items) { item in
            NavigationLink {
                DetailView(item: item)
            } label: {
                HStack {
                    Image(systemName: item.icon)
                        .foregroundColor(.accentColor)
                    Text(item.title)
                }
            }
        }
    }
}
.listStyle(.insetGrouped)

**List Styles:**

  • `.plain` - Edge-to-edge rows
  • `.insetGrouped` - Rounded, inset sections (iOS default)
  • `.sidebar` - For navigation sidebars

4. Sheet (Modal)

**Present content modally.**

struct ContentView: View {
    @State private var showSheet = false

    var body: some View {
        Button("Show Details") {
            showSheet = true
        }
        .sheet(isPresented: $showSheet) {
            DetailView()
                .presentationDetents([.medium, .large])
        }
    }
}

**Sheet Detents:**

  • `.medium` - Half screen
  • `.large` - Full screen
  • Custom heights available

Form Controls

1. Button

**Primary action control.**

// Filled button (primary action)
Button("Continue") {
    // Action
}
.buttonStyle(.borderedProminent)

// Bordered button (secondary action)
Button("Cancel") {
    // Action
}
.buttonStyle(.bordered)

// Plain button (tertiary action)
Button("Learn More") {
    // Action
}
.buttonStyle(.plain)

**Button Hierarchy:** 1. **Prominent** - Primary action (one per screen) 2. **Bordered** - Secondary actions 3. **Plain** - Tertiary actions, links

**Guidelines:**

  • Minimum tap target: 44x44 points
  • Use verbs for button labels
  • Make destructive actions require confirmation

2. TextField

**Text input control.**

@State private var username = ""
@State private var password = ""

VStack(alignment: .leading, spacing: 16) {
    // Standard text field
    TextField("Username", text: $username)
        .textFieldStyle(.roundedBorder)
        .textContentType(.username)
        .textInputAutocapitalization(.never)
Read more
Ships withjamesrochabrun-skills

A comprehensive plugin and marketplace for Claude Code containing 24 custom skills across engineering, Apple development, product management, design, content, trading, database, QA, educational, and AI architecture domains.

Get the whole plugin