Install any skill in seconds. Free to start, no credit card required.
Get Started Free →SwiftUI frontend visual design skill. Creates beautiful, distinctive iOS/macOS interfaces that avoid generic AI slop patterns. Covers design direction, layout systems, typography, color, spacing, brand integration, and design review. Use when designing new SwiftUI views, reviewing UI quality, creating iOS prototypes, choosing visual styles, improving app aesthetics, or when the UI looks generic or AI-generated.
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 43% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 120% | 0% |
| case-11 | ✗→✓ | ▲ Improved | 196% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 115% | 0% |
| case-13 | ✗→✓ | ▲ Improved | 42% | 0% |
<!-- source: swiftui-design-skill — https://raw.githubusercontent.com/Wholiver/swiftui-design-skill/main/SKILL.md -->
> TL;DR: Design SwiftUI apps that look intentionally crafted, not AI-generated. Follow the 6 Anti-Slop Rules, use the Design Direction workflow when requirements are vague, and always pass the 5-Dimension Review before shipping.
These 6 principles guide every design decision. They are distilled from real-world design practice and anti-patterns observed in AI-generated UI.
Before designing any screen, ask:
If no context exists, create a brand-spec.md first (see Brand Asset Protocol below).
Don't wait for the "perfect" design. Show hypotheses with placeholders early:
Always present 2-3 distinct design directions, not one "final answer." Each variation should:
If you cannot source a real asset (icon, image, illustration):
Every element must earn its place. Before adding any UI element, ask:
Whitespace is a feature, not emptiness.
These patterns are banned in production UI. See references/anti-ai-slop.md for detailed rules.
Banned visual patterns:
What to do instead:
When building UI for a specific brand, follow this 5-step hard flow:
Quality threshold: 5 real brand colors, 10 verified design tokens, 2 font families, 8pt spacing grid.
If no brand exists, create a brand-spec.md with:
When requirements are vague or the user asks "what style should we use?", follow this workflow:
Present 3 distinct design philosophies from different schools:
| School | Example Directions | | --------------- | ------------------------------------------- | | Information | Clean data-first, chart-heavy, Bloomberg-style | | Editorial | Magazine layout, serif typography, generous whitespace | | Expressive | Bold color, asymmetric layout, motion-forward | | Functional | Dense utility, monospace accents, minimal decoration | | Warm Minimal | Soft neutrals, rounded shapes, subtle texture |
For each direction, describe:
Present options clearly. After choice, lock in the design system.
Create or confirm these design tokens:
swift// Requires: references/swift-extensions.md (Color(hex:) extension) // DesignTokens.swift enum DesignTokens { // Colors static let accent = Color(hex: "E85D3A") // Warm coral static let background = Color(hex: "FAFAF8") // Warm white static let textPrimary = Color(hex: "1A1A1A") // Near-black static let textSecondary = Color(hex: "6B6B6B") // Muted gray // Typography static let displayFont = "New York" // Serif for headings static let bodyFont = "SF Pro" // System default // Spacing (8pt grid) static let spaceXS: CGFloat = 4 static let spaceS: CGFloat = 8 static let spaceM: CGFloat = 16 static let spaceL: CGFloat = 24 static let spaceXL: CGFloat = 32 static let spaceXXL: CGFloat = 48 // Corner radius static let radiusS: CGFloat = 8 static let radiusM: CGFloat = 12 static let radiusL: CGFloat = 16 }
Follow the layout patterns in references/layout-patterns.md:
VStack for vertical flow, HStack for horizontalLazyVGrid / LazyHGrid for grid layoutsScrollView with .scrollTargetBehavior(.paging) for paged contentGeometryReader — prefer containerRelativeFrame (iOS 17+)Follow references/typography-color.md:
Each screen should have ONE element that goes 120% — a custom animation, a unique layout choice, a distinctive color moment. This is what makes the design memorable.
Examples:
Before shipping, run the 5-Dimension Review (see references/design-review.md).
| Mistake | Fix | | ------------------------------------------ | -------------------------------------------------------- | | Using UIColor or NSColor | Use Color (SwiftUI native) | | UIScreen.main.bounds for sizing | Use containerRelativeFrame or geometry-based modifiers | | Default blue tint everywhere | Define a custom accent color in design tokens | | No spacing system (random padding values) | Use 8pt grid: 4, 8, 16, 24, 32, 48 | | Emoji as icons | Use SF Symbols or custom icon assets | | Purple-blue gradient background | Use solid warm neutrals | | All content in one giant VStack | Break into semantic sections with clear hierarchy | | No visual hierarchy (everything same size) | Use 3+ type scales (display, heading, body, caption) | | Ignoring dark mode | Define semantic colors that adapt to appearance | | Generic "Welcome!" hero section | Show actual content immediately |
| Topic | Reference File | | ---------------------------- | ----------------------------------- | | Anti-AI-Slop Rules (detail) | references/anti-ai-slop.md | | Layout Patterns & Grids | references/layout-patterns.md | | Typography & Color Systems | references/typography-color.md | | 5-Dimension Design Review | references/design-review.md | | Swift Extensions (required) | references/swift-extensions.md | | Brand Spec Template | templates/brand-spec.md |
Before considering any SwiftUI design complete, verify:
GeometryReader or UIScreen.main.boundsOther measured skills in the registry, with their headline benchmark lift.