skills/pproenca/dot-skills/ios-design-system

ios-design-system

SKILL.md

Airbnb iOS Design System Best Practices

Opinionated, strict design system engineering for SwiftUI iOS 26 / Swift 6.2 apps. Contains 50 rules across 8 categories, prioritized by impact. Derived from Airbnb's Design Language System (DLS), Airbnb Swift Style Guide, Apple Human Interface Guidelines, and WWDC sessions. Mandates @Equatable on every view, @Observable for state, and style protocols as the primary component API.

Mandated Architecture Alignment

This skill is designed to work alongside swift-ui-architect. All code examples follow the same non-negotiable constraints:

  • Feature modules depend on Domain + DesignSystem; no direct Data dependency
  • @Observable for mutable UI state, ObservableObject / @Published never
  • @Equatable macro on every view
  • Style protocols as the primary component styling API (Airbnb DLS pattern)
  • Asset catalog as the source of truth for color values
  • Local SPM package for design system module boundary

Scope & Relationship to Sibling Skills

This skill is the infrastructure layer — it teaches how to BUILD the design system itself. When loaded alongside sibling skills:

Sibling Skill Its Focus This Skill's Focus
swift-ui-architect Architecture (modular MVVM-C, route shells, protocol boundaries) Design system infrastructure (tokens, styles, governance)
ios-design Using design primitives (semantic colors, typography) Engineering the token system that provides those primitives
ios-ui-refactor Auditing/fixing visual quality issues Preventing those issues via governance and automation
ios-hig HIG compliance patterns Asset and component infrastructure that makes compliance easy

Clinic Architecture Contract (iOS 26 / Swift 6.2)

All guidance in this skill assumes the clinic modular MVVM-C architecture:

  • Feature modules import Domain + DesignSystem only (never Data, never sibling features)
  • App target is the convergence point and owns DependencyContainer, concrete coordinators, and Route Shell wiring
  • Domain stays pure Swift and defines models plus repository, *Coordinating, ErrorRouting, and AppError contracts
  • Data owns 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:

  • Setting up a design system for a new iOS app
  • Building token architecture (colors, typography, spacing, sizing)
  • Creating reusable component styles (ButtonStyle, LabelStyle, custom DLS protocols)
  • Organizing asset catalogs (colors, images, icons)
  • Migrating from ad-hoc styles to a governed token system
  • Preventing style drift and enforcing consistency via automation
  • Building theming infrastructure for whitelabel or multi-brand apps
  • Reviewing PRs for ungoverned colors, hardcoded values, or shadow tokens

Rule Categories by Priority

Priority Category Impact Prefix Rules
1 Token Architecture CRITICAL token- 6
2 Color System Engineering CRITICAL color- 7
3 Component Style Library CRITICAL style- 10
4 Typography Scale HIGH type- 5
5 Spacing & Sizing System HIGH space- 5
6 Consistency & Governance HIGH govern- 7
7 Asset Management MEDIUM-HIGH asset- 5
8 Theme & Brand Infrastructure MEDIUM theme- 5

Quick Reference

1. Token Architecture (CRITICAL)

2. Color System Engineering (CRITICAL)

3. Component Style Library (CRITICAL)

4. Typography Scale (HIGH)

5. Spacing & Sizing System (HIGH)

6. Consistency & Governance (HIGH)

7. Asset Management (MEDIUM-HIGH)

8. Theme & Brand Infrastructure (MEDIUM)

How to Use

Read individual reference files for detailed explanations and code examples:

Reference Files

File Description
references/_sections.md Category definitions and ordering
assets/templates/_template.md Template for new rules
metadata.json Version and reference information
Weekly Installs
45
GitHub Stars
70
First Seen
Feb 11, 2026
Installed on
codex41
github-copilot39
gemini-cli39
opencode38
kimi-cli38
amp37