agentleFS
EclipterEclipter/agents/skills/design/swiftui-design/SKILL.md

swiftui-design

Skill1 starsChanged 6 days agoMITView on GitHub

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.

4 other projects use a version of this.

Adopted by

Most recently taken up by

The file

Show its rules and text

We split this skill into the rules it gives an agent

28 rules. About 0 are common, 21 are distinctive, and 7 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈21

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 7

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    When someone says "the UI looks generic" or "make it look better"

    line 21
  2. Distinctive:

    When building a new feature that needs visual design

    line 22
  3. Distinctive:

    Before designing any screen, ask:

    line 45
  4. Distinctive:

    If no context exists, create a brand-spec.md first (see Brand Asset Protocol below).

    line 51
  5. Distinctive:

    Don't wait for the "perfect" design.

    line 55
  6. Distinctive:

    Always present 2-3 distinct design directions, not one "final answer." Each variation should:

    line 63
  7. Distinctive:

    If you cannot source a real asset (icon, image, illustration):

    line 71
  8. Distinctive:

    Use a clean gray placeholder with clear labeling

    line 73
  9. Distinctive:

    Never use AI-generated SVG clipart

    line 74
  10. Distinctive:

    Never use emoji as icon substitutes in production UI

    line 75
  11. Distinctive:

    Every element must earn its place.

    line 80
  12. Distinctive:

    When building UI for a specific brand, follow this 5-step hard flow:

    line 116
  13. Distinctive:

    If no brand exists, create a brand-spec.md with:

    line 126
  14. Distinctive:

    When requirements are vague or the user asks "what style should we use?", follow this workflow:

    line 137
  15. Distinctive:

    Ask the user: What is the app?

    line 141
  16. Distinctive:

    Ask the user: Any reference apps or websites they admire?

    line 142
  17. Distinctive:

    Check: Existing design system or brand assets?

    line 143
  18. Distinctive:

    Ask the user, offering the design directions as concrete options.

    line 168
  19. Distinctive:

    Create or confirm these design tokens:

    line 176
  20. Very specific:

    Follow the layout patterns in references/layout-patterns.md:

    line 210
  21. Distinctive:

    Start with the primary content container

    line 212
  22. Very specific:

    Use VStack for vertical flow, HStack for horizontal

    line 213
  23. Very specific:

    Use LazyVGrid / LazyHGrid for grid layouts

    line 214
  24. Very specific:

    Use ScrollView with .scrollTargetBehavior(.paging) for paged content

    line 215
  25. Very specific:

    Avoid GeometryReader — prefer containerRelativeFrame (iOS 17+)

    line 216
  26. Very specific:

    Before shipping, run the 5-Dimension Review (see references/design-review.md).

    line 240
  27. Very specific:

    Use .glassEffect() sparingly, on floating controls above content (not on content itself, and not stacked glass on glass).

    line 247
  28. Distinctive:

    Before considering any SwiftUI design complete, verify:

    line 285

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

SwiftUI Design Skill

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.

When to Use

  • Designing new SwiftUI views or screens from scratch
  • Reviewing or improving existing UI quality
  • Creating iOS app prototypes or mockups
  • Choosing a visual style or design direction
  • Integrating brand assets into SwiftUI
  • When someone says "the UI looks generic" or "make it look better"
  • When building a new feature that needs visual design

When NOT to Use

  • Pure backend / API work with no UI
  • Fixing SwiftUI compilation errors (use normal tools instead)
  • Performance optimization of existing views (use normal tools instead)
  • Accessibility compliance only (use normal tools instead)

Prerequisites

  • Xcode 16+ with iOS 18+ / macOS 15+ SDK (iOS 26 / macOS 26 adds Liquid Glass; see below). Check the project's deployment target and gate newer APIs with #available.
  • SwiftUI framework (not UIKit unless explicitly requested)
  • Familiarity with SwiftUI view hierarchy and modifiers

Core Design Philosophy

These 6 principles guide every design decision. They are distilled from real-world design practice and anti-patterns observed in AI-generated UI.

Principle 1: Start From Context, Never Blank

Before designing any screen, ask:

  • Is there an existing design system, UI kit, or Figma file?
  • Is there an existing codebase with established visual language?
  • Are there brand guidelines or a style guide?

If no context exists, create a brand-spec.md first (see Brand Asset Protocol below).

Principle 2: Junior Designer Mode — Hypothesize Early, Iterate Fast

Don't wait for the "perfect" design. Show hypotheses with placeholders early:

  • Gray boxes for images are better than bad AI-generated SVGs
  • System fonts with good spacing > custom fonts with bad spacing
  • A rough but honest layout > a polished but generic one

Principle 3: Offer Variations, Not Finals

Always present 2-3 distinct design directions, not one "final answer." Each variation should:

  • Represent a different design philosophy (e.g., editorial, functional, expressive)
  • Have a clear rationale for why it works
  • Be visually distinct — not just color swaps

Principle 4: Placeholder > Bad Implementation

If you cannot source a real asset (icon, image, illustration):

  • Use a clean gray placeholder with clear labeling
  • Never use AI-generated SVG clipart
  • Never use emoji as icon substitutes in production UI
  • For icons, prefer SF Symbols (Apple's built-in icon library)

Principle 5: System First, Don't Fill

Every element must earn its place. Before adding any UI element, ask:

  • Does this serve the user's goal?
  • Can this be combined with something else?
  • What happens if I remove it?

Whitespace is a feature, not emptiness.

Principle 6: Anti-AI-Slop

These patterns are banned in production UI. See references/anti-ai-slop.md for detailed rules.

Banned visual patterns:

  • ❌ Purple-to-blue gradient backgrounds
  • ❌ Emoji as functional icons
  • ❌ Rounded cards with left-border accent color
  • ❌ Generic "hero section" with centered text over gradient
  • ❌ Inter/Roboto as display fonts on Apple platforms
  • ❌ Neon-on-dark "cyber" aesthetic (#0D1117 base)
  • ❌ Symmetric 3-column feature grids
  • ❌ AI-drawn SVG illustrations or CSS silhouettes

What to do instead:

  • ✅ Single warm accent color on neutral background
  • ✅ SF Symbols for icons, or custom icon set
  • ✅ Serif display font (e.g., New York, Georgia) for headings
  • ✅ Restrained info density — let content breathe
  • ✅ One signature detail at 120% effort per screen
  • ✅ Real photography or clean placeholders

Brand Asset Protocol

When building UI for a specific brand, follow this 5-step hard flow:

  1. Ask — Ask to request brand guidelines, logo files, color palette, and typography. Offer concrete options when they exist.
  2. Search — If not provided, search the web for "[brand name] brand guidelines"
  3. Download — Get actual asset files (PNG/SVG logos, font files)
  4. Verify — Confirm colors match official sources (check hex values)
  5. Write brand-spec.md — Document: primary/secondary colors, fonts, logo usage rules, spacing tokens

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:

  • 1 primary accent color (warm, not purple-blue gradient)
  • 1 neutral palette (grays with warm undertone)
  • 1 display font + 1 body font (SF Pro default is fine)
  • 8pt spacing grid

Design Direction Workflow

When requirements are vague or the user asks "what style should we use?", follow this workflow:

Phase 1: Understand Context (5 min)

  1. Ask the user: What is the app? Who is the user? What platform? Offer iOS, macOS, and watchOS as options.
  2. Ask the user: Any reference apps or websites they admire? Offer concrete options when they exist.
  3. Check: Existing design system or brand assets?

Phase 2: Recommend 3 Directions

Present 3 distinct design philosophies from different schools:

SchoolExample Directions
InformationClean data-first, chart-heavy, Bloomberg-style
EditorialMagazine layout, serif typography, generous whitespace
ExpressiveBold color, asymmetric layout, motion-forward
FunctionalDense utility, monospace accents, minimal decoration
Warm MinimalSoft neutrals, rounded shapes, subtle texture

Phase 3: Present Visual Anchors

For each direction, describe:

  • Color palette (3-5 colors with hex values)
  • Typography pairing (display + body)
  • Layout density (comfortable / compact / spacious)
  • Signature detail (one standout element per screen)

Phase 4: Let User Choose

Ask the user, offering the design directions as concrete options. After the choice, lock in the design system.


SwiftUI Design Workflow

Step 1: Define the Design System (Before Coding)

Create or confirm these design tokens:

// Requires: references/swift-extensions.md (Color(hex:) extension)
// DesignTokens.swift
enum DesignTokens {
    // Colors
    static let accent = Color(hex: "E85D3A")      // Warm coral
    // Prefer asset-catalog colors with light/dark variants over fixed hex in production.
    static let background = Color(hex: "FAFAF8")   // Warm white
    static let textPrimary = Color.primary          // Adapts to dark mode
    static let textSecondary = Color.secondary

    // Typography: system fonts scale with Dynamic Type; don't hardcode font names or sizes
    static let display = Font.system(.largeTitle, design: .serif, weight: .bold)  // New York
    static let body = Font.body                                                   // SF Pro

    // 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
}

Step 2: Build the Layout Hierarchy

Follow the layout patterns in references/layout-patterns.md:

  • Start with the primary content container
  • Use VStack for vertical flow, HStack for horizontal
  • Use LazyVGrid / LazyHGrid for grid layouts
  • Use ScrollView with .scrollTargetBehavior(.paging) for paged content
  • Avoid GeometryReader — prefer containerRelativeFrame (iOS 17+)

Step 3: Apply Typography Hierarchy

Follow references/typography-color.md:

  • Display (screen titles): Serif font, 28-34pt, bold
  • Heading (section titles): Sans-serif, 20-24pt, semibold
  • Body (content text): Sans-serif, 15-17pt, regular
  • Caption (labels, metadata): Sans-serif, 12-13pt, secondary color

Step 4: Add the Signature Detail

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:

  • A custom pull-to-refresh with brand-colored animation
  • A card that expands with a spring animation on tap
  • A header that uses the brand's display font at an oversized scale
  • A subtle parallax effect on scroll

Step 5: Review Against Checklist

Before shipping, run the 5-Dimension Review (see references/design-review.md).


Platform Look (iOS 26 / macOS 26)

  • Standard bars, tab bars, toolbars, sheets, and controls get Liquid Glass automatically when built with the new SDK. Don't paint opaque backgrounds over them or fake the effect with blur.
  • Use .glassEffect() sparingly, on floating controls above content (not on content itself, and not stacked glass on glass). Group neighbors in GlassEffectContainer.
  • Content stays flat and legible; glass belongs to the navigation and control layer.
  • On older targets fall back to .regularMaterial.
  • Respect Dynamic Type, Reduce Motion, Reduce Transparency, and Increased Contrast; test the largest accessibility text size.

Common Mistakes to Avoid

MistakeFix
Using UIColor or NSColorUse Color (SwiftUI native)
UIScreen.main.bounds for sizingUse containerRelativeFrame or geometry-based modifiers
Default blue tint everywhereDefine a custom accent color in design tokens
No spacing system (random padding values)Use 8pt grid: 4, 8, 16, 24, 32, 48
Emoji as iconsUse SF Symbols or custom icon assets
Purple-blue gradient backgroundUse solid warm neutrals
All content in one giant VStackBreak into semantic sections with clear hierarchy
No visual hierarchy (everything same size)Use 3+ type scales (display, heading, body, caption)
Fixed font sizes (.font(.system(size: 17)))Use text styles (.body, .headline) so Dynamic Type works
Ignoring dark modeDefine semantic colors that adapt to appearance
Generic "Welcome!" hero sectionShow actual content immediately

Quick Reference: Topic Router

TopicReference File
Anti-AI-Slop Rules (detail)references/anti-ai-slop.md
Layout Patterns & Gridsreferences/layout-patterns.md
Typography & Color Systemsreferences/typography-color.md
5-Dimension Design Reviewreferences/design-review.md
Swift Extensions (required)references/swift-extensions.md
Brand Spec Templatetemplates/brand-spec.md

Validation Checklist

Before considering any SwiftUI design complete, verify:

  • Design tokens defined (colors, fonts, spacing)
  • No banned AI-slop patterns present
  • Typography has clear hierarchy (3+ scales)
  • Spacing follows 8pt grid
  • Dark mode colors defined and tested
  • One signature detail per screen
  • SF Symbols used for icons (not emoji)
  • Minimum 44×44pt tap targets
  • Layout survives the largest Dynamic Type size and VoiceOver labels exist for icon-only buttons
  • Previews cover light, dark, and large text
  • No GeometryReader or UIScreen.main.bounds
  • 5-Dimension Review score ≥ 7/10 on all dimensions

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.