mobile-ios-design
Install this skill
npx skills add wshobson/agentsWorks across Claude Code, Cursor, Codex, Copilot & Antigravity
The mobile-ios-design skill focuses on the technical application of Apple's Human Interface Guidelines within the SwiftUI framework. It centers on crafting native interfaces that honor platform-specific patterns like navigation stacks, system-wide typography, and adaptive layouts. By prioritizing clarity and spatial hierarchy, this skill ensures interfaces remain functional across varying screen sizes and light conditions. You will work with semantic styling, SF Symbols, and material-based blur effects to achieve the signature aesthetic associated with modern iOS software. This skill serves as a bridge between high-level interface requirements and the code required to render them accurately on hardware, focusing on the mechanical aspects of gesture handling, layout containers, and accessibility standards that define a professional, platform-compliant user experience.
When to Use This Skill
- •Converting a Figma mockup into a responsive SwiftUI view hierarchy
- •Standardizing design tokens like semantic colors and system fonts
- •Building accessible interfaces that respond to system-level font changes
- •Creating a cross-device layout that adapts between iPhone and iPad screens
How to Invoke This Skill
Example prompts that trigger this skill in Claude Code, Cursor, or Antigravity:
- “How do I implement Apple HIG standards in SwiftUI?
- “Create a responsive grid layout following iOS design principles.
- “Refactor this view to use semantic colors and materials.
- “Help me build a NavigationStack with deep linking support.
- “Apply SF Symbols and Dynamic Type to my current UI code.
Pro Tips
- 💡Always prioritize clarity and user context; the HIG isn't just a style guide, it's about user experience and user delight.
- 💡Leverage Xcode's Previews extensively with different device sizes, accessibility settings, and dark/light modes to ensure your SwiftUI views are truly adaptive.
- 💡Don't just copy-paste; understand *why* Apple recommends certain patterns. This allows you to adapt them effectively to unique app requirements while maintaining a native feel.
What this skill does
- •Mapping UI designs to SwiftUI layouts using stacks and grids
- •Implementing system-standard navigation flows via NavigationStack and TabView
- •Applying adaptive typography and Dynamic Type scaling
- •Integrating semantic colors, materials, and depth-based shadows
- •Animating SF Symbols with state-driven rendering effects
When not to use it
- ✕Developing cross-platform apps using non-native frameworks like Flutter or React Native
- ✕Designing web-based interfaces that lack native iOS integration requirements
Example workflow
- Analyze the visual requirements against Apple HIG documentation.
- Define the layout structure using HStack, VStack, or LazyVGrid.
- Apply semantic style modifiers for text, foreground colors, and materials.
- Implement navigation state management using the NavigationPath approach.
- Verify layout accessibility by testing against Dynamic Type and Dark Mode.
Prerequisites
- –Basic proficiency in Swift programming
- –Access to Xcode or a Swift development environment
- –Foundational understanding of SwiftUI view modifiers
Pitfalls & limitations
- !Over-customizing UI components at the expense of native platform feel
- !Ignoring Dark Mode compatibility by hardcoding color hex values
- !Failing to account for reachability or touch target sizing
FAQ
How it compares
Unlike generic UI design prompts, this skill forces the output to strictly adhere to Apple's native design language and specific SwiftUI implementation patterns.
📄 Full skill instructions — original source: wshobson/agents
Master iOS Human Interface Guidelines (HIG) and SwiftUI patterns to build polished, native iOS applications that feel at home on Apple platforms.
## When to Use This Skill
- Designing iOS app interfaces following Apple HIG
- Building SwiftUI views and layouts
- Implementing iOS navigation patterns (NavigationStack, TabView, sheets)
- Creating adaptive layouts for iPhone and iPad
- Using SF Symbols and system typography
- Building accessible iOS interfaces
- Implementing iOS-specific gestures and interactions
- Designing for Dynamic Type and Dark Mode
## Core Concepts
### 1. Human Interface Guidelines Principles
**Clarity**: Content is legible, icons are precise, adornments are subtle
**Deference**: UI helps users understand content without competing with it
**Depth**: Visual layers and motion convey hierarchy and enable navigation
**Platform Considerations:**
- **iOS**: Touch-first, compact displays, portrait orientation
- **iPadOS**: Larger canvas, multitasking, pointer support
- **visionOS**: Spatial computing, eye/hand input
### 2. SwiftUI Layout System
**Stack-Based Layouts:**
// Vertical stack with alignment
VStack(alignment: .leading, spacing: 12) {
Text("Title")
.font(.headline)
Text("Subtitle")
.font(.subheadline)
.foregroundStyle(.secondary)
}
// Horizontal stack with flexible spacing
HStack {
Image(systemName: "star.fill")
Text("Featured")
Spacer()
Text("View All")
.foregroundStyle(.blue)
}**Grid Layouts:**
// Adaptive grid that fills available width
LazyVGrid(columns: [
GridItem(.adaptive(minimum: 150, maximum: 200))
], spacing: 16) {
ForEach(items) { item in
ItemCard(item: item)
}
}
// Fixed column grid
LazyVGrid(columns: [
GridItem(.flexible()),
GridItem(.flexible()),
GridItem(.flexible())
], spacing: 12) {
ForEach(items) { item in
ItemThumbnail(item: item)
}
}### 3. Navigation Patterns
**NavigationStack (iOS 16+):**
struct ContentView: View {
@State private var path = NavigationPath()
var body: some View {
NavigationStack(path: $path) {
List(items) { item in
NavigationLink(value: item) {
ItemRow(item: item)
}
}
.navigationTitle("Items")
.navigationDestination(for: Item.self) { item in
ItemDetailView(item: item)
}
}
}
}**TabView:**
struct MainTabView: View {
@State private var selectedTab = 0
var body: some View {
TabView(selection: $selectedTab) {
HomeView()
.tabItem {
Label("Home", systemImage: "house")
}
.tag(0)
SearchView()
.tabItem {
Label("Search", systemImage: "magnifyingglass")
}
.tag(1)
ProfileView()
.tabItem {
Label("Profile", systemImage: "person")
}
.tag(2)
}
}
}### 4. System Integration
**SF Symbols:**
// Basic symbol
Image(systemName: "heart.fill")
.foregroundStyle(.red)
// Symbol with rendering mode
Image(systemName: "cloud.sun.fill")
.symbolRenderingMode(.multicolor)
// Variable symbol (iOS 16+)
Image(systemName: "speaker.wave.3.fill", variableValue: volume)
// Symbol effect (iOS 17+)
Image(systemName: "bell.fill")
.symbolEffect(.bounce, value: notificationCount)**Dynamic Type:**
// Use semantic fonts
Text("Headline")
.font(.headline)
Text("Body text that scales with user preferences")
.font(.body)
// Custom font that respects Dynamic Type
Text("Custom")
.font(.custom("Avenir", size: 17, relativeTo: .body))### 5. Visual Design
**Colors and Materials:**
// Semantic colors that adapt to light/dark mode
Text("Primary")
.foregroundStyle(.primary)
Text("Secondary")
.foregroundStyle(.secondary)
// System materials for blur effects
Rectangle()
.fill(.ultraThinMaterial)
.frame(height: 100)
// Vibrant materials for overlays
Text("Overlay")
.padding()
.background(.regularMaterial, in: RoundedRectangle(cornerRadius: 12))**Shadows and Depth:**
// Standard card shadow
RoundedRectangle(cornerRadius: 16)
.fill(.background)
.shadow(color: .black.opacity(0.1), radius: 8, y: 4)
// Elevated appearance
.shadow(radius: 2, y: 1)
.shadow(radius: 8, y: 4)## Quick Start Component
import SwiftUI
struct FeatureCard: View {
let title: String
let description: String
let systemImage: String
var body: some View {
HStack(spacing: 16) {
Image(systemName: systemImage)
.font(.title)
.foregroundStyle(.blue)
.frame(width: 44, height: 44)
.background(.blue.opacity(0.1), in: Circle())
VStack(alignment: .leading, spacing: 4) {
Text(title)
.font(.headline)
Text(description)
.font(.subheadline)
.foregroundStyle(.secondary)
.lineLimit(2)
}
Spacer()
Image(systemName: "chevron.right")
.foregroundStyle(.tertiary)
}
.padding()
.background(.background, in: RoundedRectangle(cornerRadius: 12))
.shadow(color: .black.opacity(0.05), radius: 4, y: 2)
}
}## Best Practices
1. **Use Semantic Colors**: Always use
.primary, .secondary, .background for automatic light/dark mode support2. **Embrace SF Symbols**: Use system symbols for consistency and automatic accessibility
3. **Support Dynamic Type**: Use semantic fonts (
.body, .headline) instead of fixed sizes4. **Add Accessibility**: Include
.accessibilityLabel() and .accessibilityHint() modifiers5. **Use Safe Areas**: Respect
safeAreaInset and avoid hardcoded padding at screen edges6. **Implement State Restoration**: Use
@SceneStorage for preserving user state7. **Support iPad Multitasking**: Design for split view and slide over
8. **Test on Device**: Simulator doesn't capture full haptic and performance experience
## Common Issues
- **Layout Breaking**: Use
.fixedSize() sparingly; prefer flexible layouts- **Performance Issues**: Use
LazyVStack/LazyHStack for long scrolling lists- **Navigation Bugs**: Ensure
NavigationLink values are Hashable- **Dark Mode Problems**: Avoid hardcoded colors; use semantic or asset catalog colors
- **Accessibility Failures**: Test with VoiceOver enabled
- **Memory Leaks**: Watch for strong reference cycles in closures
## Resources
- [Human Interface Guidelines](https://developer.apple.com/design/human-interface-guidelines/)
- [SwiftUI Documentation](https://developer.apple.com/documentation/swiftui)
- [SF Symbols App](https://developer.apple.com/sf-symbols/)
- [WWDC SwiftUI Sessions](https://developer.apple.com/videos/swiftui/)
How to Use This Skill Unit
Option A: Project-Specific (Recommended)
- Click "Download" above
- In your project, create the directory:
.agent/skills/mobile-ios-design/ - Save the file as
SKILL.md - The agent will automatically discover the skill based on its description.
Option B: Global Installation (All Agents)
Save the file to these locations to make it available across all projects:
- Claude Code:
~/.claude/skills/wshobson/agents/mobile-ios-design/SKILL.md - Cursor:
~/.cursor/skills/wshobson/agents/mobile-ios-design/SKILL.md - Antigravity:
~/.gemini/antigravity/skills/wshobson/agents/mobile-ios-design/SKILL.md
🚀 Install with CLI:npx skills add wshobson/agents
