> ios-design-system
Clinic-architecture-aligned iOS design system engineering for SwiftUI (iOS 26 / Swift 6.2) covering token architecture, color/typography/spacing systems, component style libraries, asset governance, and theming. Enforces @Equatable on views and keeps design-system usage compatible with Feature-to-Domain+DesignSystem boundaries. Use when building or refactoring DesignSystem infrastructure for the clinic modular MVVM-C stack.
curl "https://skillshub.wtf/pproenca/dot-skills/ios-design-system?format=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 directDatadependency @Observablefor mutable UI state,ObservableObject/@Publishednever@Equatablemacro 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+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:
- 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)
token-three-layer-hierarchy- Use Raw → Semantic → Component token layerstoken-enum-over-struct- Use caseless enums for token namespacestoken-single-file-per-domain- One token file per design domaintoken-shapestyle-extensions- Extend ShapeStyle for dot-syntax colorstoken-asset-catalog-source- Source color tokens from asset catalogtoken-avoid-over-abstraction- Avoid over-abstracting beyond three layers
2. Color System Engineering (CRITICAL)
color-organized-xcassets- Organize color assets with folder groups by rolecolor-complete-pairs- Define both appearances for every custom colorcolor-limit-palette- Limit custom colors to under 20 semantic tokenscolor-no-hex-in-views- Never use Color literals or hex in view codecolor-system-first- Prefer system colors before custom tokenscolor-tint-not-brand-everywhere- Set brand color as app tint, don't scatter itcolor-audit-script- Audit for ungoverned colors with a build script
3. Component Style Library (CRITICAL)
style-dls-protocol-pattern- Define custom style protocols for complex DLS componentsstyle-equatable-views- Apply @Equatable to every design system viewstyle-accessibility-first- Build accessibility into style protocols, not individual viewsstyle-protocol-over-wrapper- Use Style protocols instead of wrapper viewsstyle-static-member-syntax- Provide static member syntax for custom stylesstyle-environment-awareness- Make styles responsive to environment valuesstyle-view-for-containers-modifier-for-styling- Views for containers, modifiers for stylingstyle-catalog-file- One style catalog file per component typestyle-configuration-over-parameters- Prefer configuration structs over many parametersstyle-preview-catalog- Create a preview catalog for all styles
4. Typography Scale (HIGH)
type-scale-enum- Define a type scale enum wrapping system stylestype-system-styles-first- Use system text styles before custom onestype-custom-font-registration- Register custom fonts with a centralized extensiontype-max-styles-per-screen- Limit typography variations to 3-4 per screentype-avoid-font-design-mixing- Use one font design per app
5. Spacing & Sizing System (HIGH)
space-token-enum- Define spacing tokens as a caseless enumspace-radius-tokens- Define corner radius tokens by component typespace-no-magic-numbers- Zero hardcoded numbers in view layout codespace-insets-pattern- Use EdgeInsets constants for composite paddingspace-size-tokens- Define size tokens for common dimensions
6. Consistency & Governance (HIGH)
govern-naming-conventions- Enforce consistent naming conventions across all tokensgovern-spm-package-boundary- Isolate the design system as a local SPM packagegovern-single-source-of-truth- Every visual value has one definition pointgovern-lint-for-tokens- Use SwiftLint rules to enforce token usagegovern-design-system-directory- Isolate tokens in a dedicated directorygovern-migration-incremental- Migrate to tokens incrementallygovern-prevent-local-tokens- Prevent feature modules from defining local tokens
7. Asset Management (MEDIUM-HIGH)
asset-separate-catalogs- Separate asset catalogs for colors, images, iconsasset-sf-symbols-first- Use SF Symbols before custom iconsasset-icon-export-format- Use PDF/SVG vectors, never multiple PNGsasset-image-optimization- Use compression and on-demand resourcesasset-naming-convention- Consistent naming convention for all assets
8. Theme & Brand Infrastructure (MEDIUM)
theme-environment-key- Use EnvironmentKey for theme propagationtheme-dont-over-theme- Avoid building a theme system unless neededtheme-tint-for-brand- Use .tint() as primary brand expressiontheme-light-dark-only- Use ColorScheme for light/dark, not custom themingtheme-brand-layer-separation- Separate brand identity from system mechanics
How to Use
Read individual reference files for detailed explanations and code examples:
- Section definitions - Category structure and impact levels
- Rule template - Template for adding new rules
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 |
> related_skills --same-repo
> rust-write-tests
Skill for writing expert-level Rust tests. Teaches the "What Could Break?" framework, five transformations from superficial to expert tests, flake hunting protocol, intent-based assertions, naming conventions, and a mandatory self-review checklist. Triggers on writing Rust tests, designing test cases, improving test quality, or reviewing test coverage.
> rust-implement
Write production-grade Rust code using a multi-pass approach. Design types first, then implement, then simplify, then verify with automated lint. Use this skill whenever writing new Rust functions, structs, modules, or features. Triggers on Rust implementation, new Rust code, Rust functions, Rust modules, error handling in Rust, async Rust, or type design in Rust.
> valid-skill
A valid test skill with proper formatting. This skill should pass all validations and serves as a reference for the expected format.
> too-long-skill
This skill has more than 500 lines which should fail validation.