Skills ios-application-dev
install
source · Clone the upstream repo
git clone https://github.com/MiniMax-AI/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/MiniMax-AI/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/ios-application-dev" ~/.claude/skills/minimax-ai-skills-ios-application-dev && rm -rf "$T"
manifest:
skills/ios-application-dev/SKILL.mdsource content
iOS Application Development Guide
A practical guide for building iOS applications using UIKit, SnapKit, and SwiftUI. Focuses on proven patterns and Apple platform conventions.
Quick Reference
UIKit
| Purpose | Component |
|---|---|
| Main sections | |
| Drill-down | |
| Focused task | Sheet presentation |
| Critical choice | |
| Secondary actions | |
| List content | + |
| Sectioned list | + |
| Grid layout | |
| Search | |
| Share | |
| Location (once) | |
| Feedback | |
| Linear layout | |
| Custom shapes | + |
| Gradients | |
| Modern buttons | |
| Dynamic text | + |
| Dark mode | Semantic colors (, ) |
| Permissions | Contextual request + |
| Lifecycle | notifications |
SwiftUI
| Purpose | Component |
|---|---|
| Main sections | + |
| Drill-down | + |
| Focused task | + |
| Critical choice | |
| Secondary actions | |
| List content | + |
| Search | |
| Share | |
| Location (once) | |
| Feedback | |
| Progress (known) | |
| Progress (unknown) | |
| Dynamic text | semantic styles |
| Dark mode | , , |
| Scene lifecycle | |
| Reduce motion | |
| Dynamic type | |
Core Principles
Layout
- Touch targets >= 44pt
- Content within safe areas (SwiftUI respects by default, use
only for backgrounds).ignoresSafeArea() - Use 8pt spacing increments (8, 16, 24, 32, 40, 48)
- Primary actions in thumb zone
- Support all screen sizes (iPhone SE 375pt to Pro Max 430pt)
Typography
- UIKit:
+preferredFont(forTextStyle:)adjustsFontForContentSizeCategory = true - SwiftUI: semantic text styles
,.headline
,.body.caption - Custom fonts:
/UIFontMetricsFont.custom(_:size:relativeTo:) - Adapt layout at accessibility sizes (minimum 11pt)
Colors
- Use semantic system colors (
,.systemBackground
,.label
,.primary
).secondary - Asset catalog variants for custom colors (Any/Dark Appearance)
- No color-only information (pair with icons or text)
- Contrast ratio >= 4.5:1 for normal text, 3:1 for large text
Accessibility
- Labels on icon buttons (
).accessibilityLabel() - Reduce motion respected (
)@Environment(\.accessibilityReduceMotion) - Logical reading order (
).accessibilitySortPriority() - Support Bold Text, Increase Contrast preferences
Navigation
- Tab bar (3-5 sections) stays visible during navigation
- Back swipe works (never override system gestures)
- State preserved across tabs (
,@SceneStorage
)@State - Never use hamburger menus
Privacy & Permissions
- Request permissions in context (not at launch)
- Custom explanation before system dialog
- Support Sign in with Apple
- Respect ATT denial
Checklist
Layout
- Touch targets >= 44pt
- Content within safe areas
- Primary actions in thumb zone (bottom half)
- Flexible widths for all screen sizes (SE to Pro Max)
- Spacing aligns to 8pt grid
Typography
- Semantic text styles or UIFontMetrics-scaled custom fonts
- Dynamic Type supported up to accessibility sizes
- Layouts reflow at large sizes (no truncation)
- Minimum text size 11pt
Colors
- Semantic system colors or light/dark asset variants
- Dark Mode is intentional (not just inverted)
- No color-only information
- Text contrast >= 4.5:1 (normal) / 3:1 (large)
- Single accent color for interactive elements
Accessibility
- VoiceOver labels on all interactive elements
- Logical reading order
- Bold Text preference respected
- Reduce Motion disables decorative animations
- All gestures have alternative access paths
Navigation
- Tab bar for 3-5 top-level sections
- No hamburger/drawer menus
- Tab bar stays visible during navigation
- Back swipe works throughout
- State preserved across tabs
Components
- Alerts for critical decisions only
- Sheets have dismiss path (button and/or swipe)
- List rows >= 44pt tall
- Destructive buttons use
role.destructive
Privacy
- Permissions requested in context (not at launch)
- Custom explanation before system permission dialog
- Sign in with Apple offered with other providers
- Basic features usable without account
- ATT prompt shown if tracking, denial respected
System Integration
- App handles interruptions gracefully (calls, background, Siri)
- App content indexed for Spotlight
- Share Sheet available for shareable content
References
| Topic | Reference |
|---|---|
| Touch Targets, Safe Area, CollectionView | Layout System |
| TabBar, NavigationController, Modal | Navigation Patterns |
| StackView, Button, Alert, Search, ContextMenu | UIKit Components |
| CAShapeLayer, CAGradientLayer, Core Animation | Graphics & Animation |
| Dynamic Type, Semantic Colors, VoiceOver | Accessibility |
| Permissions, Location, Share, Lifecycle, Haptics | System Integration |
| Metal Shaders & GPU | Metal Shader Reference |
| SwiftUI HIG, Components, Patterns, Anti-Patterns | SwiftUI Design Guidelines |
| Optionals, Protocols, async/await, ARC, Error Handling | Swift Coding Standards |
Swift, SwiftUI, UIKit, SF Symbols, Metal, and Apple are trademarks of Apple Inc. SnapKit is a trademark of its respective owners.