
ios-design
SwiftUI interface implementation patterns aligned with the iOS 26 / Swift 6.2 clinic modular MVVM-C architecture, grounded in Creative Selection and Design Like Apple principles. Use when building new SwiftUI views/screens while respecting Domain/Data boundaries, App-target route-shell navigation, and production-grade accessibility/interaction standards.
- Installs
- 421
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/pproenca/dot-skills --skill ios-design- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads ios-design automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Apple SwiftUI iOS Design Best Practices
A builder's guide for implementing Apple-quality iOS interfaces in SwiftUI, grounded in two foundational design texts:
- Ken Kocienda — Creative Selection (empathy for the user, craft in coding, taste in choosing the best solution, demo culture of iterative refinement)
- John Edson — Design Like Apple (systems thinking, the product is the marketing, design out loud, design with conviction)
Contains 62 rules across 8 principle-based categories. Each rule identifies a specific anti-pattern, grounds the fix in a named principle, and provides the correct iOS 26 / Swift 6.2 SwiftUI implementation.
Scope & Relationship to Sibling Skills
This skill is the building and implementation guide — it teaches how to construct new SwiftUI interfaces from scratch using Apple-quality patterns. When loaded alongside ios-ui-refactor (reviewing/refactoring existing UI), this skill covers the greenfield implementation that ios-ui-refactor later audits. Use this skill for building new screens; use the sibling for evaluating and improving existing ones.
Clinic Architecture Contract (iOS 26 / Swift 6.2)
All guidance in this skill assumes the clinic modular MVVM-C architecture:
- Feature modules import
Domain+DesignSystemonly (neverData, never sibling features) - App target is the convergence point and owns
DependencyContainer, concrete coordinators, and Route Shell wiring Domainstays pure Swift and defines models plus repository,*Coordinating,ErrorRouting, andAppErrorcontractsDataowns SwiftData/network/sync/retry/background I/O and implements Domain protocols- Read/write flow defaults to stale-while-revalidate reads and optimistic queued writes
- ViewModels call repository protocols directly (no default use-case/interactor layer)
When to Apply
Reference these guidelines when:
- Building new SwiftUI views and screens from scratch
- Choosing between semantic colors, system typography, and spacing grids (Edson's Systems Thinking)
- Managing state with @State, @Binding, @Observable, @Environment (Kocienda's Craft)
- Selecting the right component: List vs LazyVStack, Sheet vs FullScreenCover (Kocienda's Taste)
- Composing views with @ViewBuilder, custom modifiers, and value types (Kocienda's Creative Selection)
- Implementing navigation with NavigationStack, TabView, sheets (Edson's Conversation)
- Laying out content with stacks, grids, frames, and adaptive layouts (Edson's Design Out Loud)
- Ensuring VoiceOver, touch targets, Dark Mode, and reduce motion support (Kocienda's Empathy)
- Adding transitions, loading states, and animation polish (Edson's Product Is the Marketing)
Rule Categories by Priority
| Priority | Category | Principle | Impact | Prefix | Rules |
|---|---|---|---|---|---|
| 1 | Empathy in Every Pixel | Kocienda "Empathy" · Edson "Design Is About People" | CRITICAL | empathy- | 8 |
| 2 | The Visual System | Edson "Systems Thinking" · Kocienda "Convergence" | CRITICAL | system- | 8 |
| 3 | Craft: State as Foundation | Kocienda "Craft" | CRITICAL | craft- | 7 |
| 4 | Creative Composition | Kocienda "Creative Selection" | HIGH | compose- | 6 |
| 5 | Taste: The Right Choice | Kocienda "Taste" · Edson "Design with Conviction" | HIGH | taste- | 8 |
| 6 | Navigation as Conversation | Edson "Design Is a Conversation" · Kocienda "The Demo" | HIGH | converse- | 9 |
| 7 | Design Out Loud: Layout | Edson "Design Out Loud" · Kocienda "Intersection" | HIGH | layout- | 8 |
| 8 | The Product Speaks | Edson "Product Is the Marketing" · Kocienda "Demo Culture" | MEDIUM | product- | 8 |
Quick Reference
1. Empathy in Every Pixel (CRITICAL)
Kocienda: "Empathy — trying to see the world from other people's perspectives." Edson: design begins with the person holding the device.
empathy-semantic-colors- Use semantic colors, never hard-coded valuesempathy-dark-mode- Support Dark Mode from day oneempathy-foreground-style- Use foregroundStyle over foregroundColorempathy-safe-areas- Always respect safe areas for contentempathy-voiceover-labels- Add VoiceOver labels to every interactive elementempathy-touch-targets- Ensure 44x44 point minimum touch targetsempathy-reduce-motion- Always provide reduce motion fallbackempathy-readable-width- Constrain text to readable width on iPad
2. The Visual System (CRITICAL)
Edson: "Zoom out to see relationships between objects." Kocienda: convergence — many decisions narrowing toward one coherent whole.
system-typography- Use system typography styles, never fixed sizessystem-visual-hierarchy- Establish clear visual hierarchy through size, weight, and colorsystem-spacing-grid- Use a 4pt base unit for all spacingsystem-material-backgrounds- Use material backgrounds for depth and layeringsystem-sf-symbols- Use SF Symbols for consistent iconographysystem-gradients- Apply gradients for visual depth, not decorationsystem-standard-margins- Use system standard margins consistentlysystem-stack-config- Configure stack alignment and spacing explicitly
3. Craft: State as Foundation (CRITICAL)
Kocienda: "Craft — applying skill to achieve a high-quality result."
craft-state-local- Use @State for view-local value typescraft-state-binding- Use @Binding for child view mutationscraft-state-environment- Use @Environment for shared app-wide datacraft-state-observable- Use @Observable for model classescraft-avoid-body-state- Never create state inside the view bodycraft-minimize-scope- Minimize state scope to reduce re-renderscraft-state-bindable- Use @Bindable for @Observable bindings
4. Creative Composition (HIGH)
Kocienda: "Creative selection — great software is built through composition and recombination."
compose-body-some-view- Return some View from body, never concrete typescompose-custom-properties- Use properties to make views configurablecompose-modifier-order- Apply view modifiers in the correct ordercompose-viewbuilder- Use @ViewBuilder for flexible slot-based compositioncompose-prefer-value-types- Prefer value types for view datacompose-prefer-composition- Prefer composition over inheritance for view reuse
5. Taste: The Right Choice (HIGH)
Kocienda: "Taste — refined judgment, the ability to choose the one right solution." Edson: commit to one approach and perfect it.
taste-list-vs-lazyvstack- Choose List for system features, LazyVStack for custom layoutstaste-sheet-vs-fullscreen- Choose sheet for tasks, fullScreenCover for immersiontaste-picker- Choose the right picker style for the data typetaste-grid-vs-lazygrid- Choose Grid for aligned data, LazyVGrid for scrollable collectionstaste-button- Use button styles that match the action's importancetaste-textfield- Configure text input with the right keyboard and content typetaste-alerts- Use alerts only for critical, blocking informationtaste-action-sheets- Use confirmation dialogs for contextual multi-choice actions
6. Navigation as Conversation (HIGH)
Edson: "Design is a conversation between the product and the person." Kocienda: demos as conversations about whether the interface speaks clearly.
converse-navigationstack- Use NavigationStack for programmatic, type-safe navigationconverse-tabview- Organize app sections with TabView for parallel navigationconverse-sheet-item- Use item binding for data-driven sheet presentationconverse-dismiss- Use environment dismiss for modal closureconverse-toolbar- Place toolbar items in the correct semantic positionsconverse-tab-bar- Use tab bar for top-level section navigationconverse-nav-bar- Configure navigation bar to communicate contextconverse-hierarchy- Design clear navigation hierarchy before writing codeconverse-search- Integrate search with the searchable modifier
7. Design Out Loud: Layout (HIGH)
Edson: "Design Out Loud — prototype relentlessly until layout feels inevitable." Kocienda: the intersection of technology and liberal arts.
layout-stacks- Use stacks instead of manual positioninglayout-spacer- Use Spacer for flexible space distributionlayout-frame-sizing- Use frame() for explicit size constraintslayout-zstack- Use ZStack for purposeful layered compositionlayout-grid- Use Grid for aligned non-scrolling tabular contentlayout-lazy-grids- Use LazyVGrid for scrollable multi-column layoutslayout-adaptive- Use adaptive layouts for different size classeslayout-scroll-indicators- Show scroll indicators for long scrollable content
8. The Product Speaks (MEDIUM)
Edson: "The product itself is the marketing." Kocienda: every animation and loading state built to survive Steve Jobs' scrutiny.
product-transitions- Use semantic transitions for appearing viewsproduct-loading-states- Show honest loading states, not indefinite spinnersproduct-with-animation- Use withAnimation for explicit state-driven animationproduct-matched-geometry- Use matchedGeometryEffect for contextual origin transitionsproduct-list-cells- Design list cells with standard layoutsproduct-content-unavailable- Use ContentUnavailableView for empty and error statesproduct-segmented- Use segmented controls for visible, mutually exclusive optionsproduct-menus- Use menus for secondary actions without cluttering the interface
How to Use
Read individual reference files for detailed explanations and code examples:
- Section definitions - Category structure, principle sources, and impact levels
- Rule template - Template for adding new rules
Reference Files
| File | Description |
|---|---|
| references/_sections.md | Category definitions and principle grounding |
| assets/templates/_template.md | Template for new rules |
| metadata.json | Version and reference information |
FAQ
What does the ios-design skill do?
SwiftUI interface implementation patterns aligned with the iOS 26 / Swift 6.2 clinic modular MVVM-C architecture, grounded in Creative Selection and Design Like Apple principles. Use when building new SwiftUI views/screens while respecting Domain/Data boundaries, App-target route-shell navigation, and production-grade accessibility/interaction standards.
How do I install ios-design?
Run npx skills add https://github.com/pproenca/dot-skills --skill ios-design in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/ios-design/ (personal) or .claude/skills/ios-design/ (project).
Which AI agents can use ios-design?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is ios-design safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains ios-design?
It is published by pproenca in pproenca/dot-skills. It has 421 recorded installs.
More from pproenca/dot-skills
zod
pproenca/dot-skills
Zod schema validation best practices for type safety, parsing, and error handling. This skill should be used when defining z.object schemas, using z.string validations, safeParse, or z.infer. This skill does NOT cover React Hook Form integration patterns (use react-hook-form skill) or OpenAPI client generation (use orval skill).
vitest
pproenca/dot-skills
Vitest testing framework patterns for test setup, async testing, mocking with vi., snapshots, and test performance (formerly test-vitest). This skill should be used when writing or debugging Vitest tests. This skill does NOT cover TDD methodology (use test-tdd skill), API mocking with MSW (use test-msw skill), or Jest-specific APIs.
react-hook-form
pproenca/dot-skills
React Hook Form performance optimization for client-side form validation using useForm, useWatch, useController, useFieldArray, the subscribe() API, and the Watch / FormStateSubscribe / FieldArray render-prop components. Covers RHF 7.82 additions including resetDefaultValues() and the disabled field-array option. This skill should be used when building client-side controlled forms with React Hook Form library. This skill does NOT cover React 19 Server Actions, useActionState, or server-side form handling (use react-19 skill for those).
emilkowal-animations
pproenca/dot-skills
Emil Kowalski's animation best practices for web interfaces. Use when writing, reviewing, or implementing animations in React, CSS, or Framer Motion. Triggers on tasks involving transitions, easing, gestures, toasts, drawers, or motion.
nuqs
pproenca/dot-skills
nuqs (type-safe URL query state) best practices for Next.js and other React frameworks. This skill should be used when writing, reviewing, or refactoring code that uses nuqs for URL state management. Triggers on tasks involving useQueryState, useQueryStates, search params, URL state, query parameters, nuqs parsers, limitUrlUpdates, Standard Schema, NuqsAdapter, or Next.js routing with state.
clean-architecture
pproenca/dot-skills
Clean Architecture principles and best practices from Robert C. Martin's book. This skill should be used when designing software systems, reviewing code structure, or refactoring applications to achieve better separation of concerns. Triggers on tasks involving layers, boundaries, dependency direction, entities, use cases, or system architecture.
Popular mobile skills
design-mobile-apps
designed-by-ai/skills
Design mobile app screens with Sleek, edit Sleek projects, and implement their designs in React Native or HTML.
ios-design
uizze.sh
Design and review iOS UI/UX for iPhone apps in SwiftUI, UIKit, or React Native. Use for mobile app design, screen redesigns, navigation flows, typography, forms, keyboard and safe-area layout, and accessibility checks. Apply Apple Human Interface Guidelines and consult real product references through the optional Uizze connection.
vercel-react-native-skills
vercel-labs/agent-skills
React Native and Expo best practices for building performant mobile apps. Use when building React Native components, optimizing list performance, implementing animations, or working with native modules. Triggers on tasks involving React Native, Expo, mobile performance, or native platform APIs.
animate-expo
emilkowalski/skills
Build animations in React Native and Expo, making the decisions in the order that determines whether they feel right — should it animate, which thread it runs on, which properties, spring or timing, how the gesture hands off, how it degrades. Writes the implementation with Reanimated, Gesture Handler, Expo Router and expo-haptics. Use when animating anything in an Expo app, adding gestures, sheets, screen transitions, press feedback or haptics, or fixing motion that stutters on device. For web animation use animate.
xcode-project-setup
firebase/agent-skills
Safely modifies Xcode projects (.pbxproj) to add Swift Packages and link files. Use this skill whenever an iOS project needs dependencies installed (e.g. Firebase, Alamofire).
firebase-remote-config-basics
firebase/agent-skills
Manages Firebase Remote Config templates, feature flags, loading strategies, and SDKs (Android, iOS). Use when downloading/deploying remoteconfig JSON templates, managing version history/feature flags, setting in-app defaults, fetchAndActivate(), real-time listeners, or SDK setup. Don't use for Firebase Hosting, Auth, Firestore, Data Connect, Crashlytics, or App Hosting.