agentsclimarketplace

Apple design language

Skill markdavidgan/apple-dev-skills/platforms/claude/skills/apple-design-language

Apple platform development skills for Claude Code, Cursor, Kimi Code, Antigravity, Codex CLI, and Agy.

Install
npx -y skills add markdavidgan/apple-dev-skills --skill apple-design-language

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Apple-native design language for iOS, iPadOS, and macOS — the editorial layer above HIG plus the domains craft skills miss: UX writing, interaction/form/loading states, and empty/error states. Use when writing or reviewing user-facing copy, button/error/alert text, designing forms or input validation, loading/empty/error/permission-denied states, deciding when to follow or tastefully break HIG, or judging whether a screen feels Apple-quality versus templated AI slop. Routes to swiftui-micro-craft for quantified spacing/typography/motion and apple-design for tokens and Liquid Glass.

SKILL.md

6.4 KB, as published. Nobody here has run it

Apple Design Language

The editorial layer for Apple apps on iOS, iPadOS, and macOS: the parts of "feels Apple-quality" that aren't a spacing number — copy, interaction states, empty/error states, and the judgment of when to follow versus tastefully break the Human Interface Guidelines. Think in capabilities (touch vs. pointer, compact vs. regular vs. window), not device names.

This skill is the entry point to the design language. It owns four things and routes everything else.

Orientation index

ConcernWhere it lives
Spacing, optical alignment, padding, corner concentricity, hairlines, depthswiftui-micro-craft
Motion timing, named springs, gestures, hapticsswiftui-micro-craft
Type scale mechanics, SF Symbol sizing/weight, Dynamic Type plumbingswiftui-micro-craft
Color, design tokens, Liquid Glass, system materialsapple-design
VoiceOver, Dynamic Type coverage, tap-target sizingios-accessibility
Adaptive layout, size classes, multi-platform navigationcross-platform-adaptivity
UX writing & copythis skill → references/ux-writing.md
Forms, validation, focus, loading, control statesthis skill → references/interaction-states.md
Empty & error statesthis skill → references/empty-error-states.md
When to follow vs. break HIG; quality-vs-slop judgmentthis skill (below)
Worked examples of tasteful HIG deviationthis skill → references/exemplars.md

HIG is the floor, not the ceiling

The Human Interface Guidelines encode what is safe and approvable. Meet that floor everywhere. But Apple's own best apps — and most Apple Design Award winners — exceed or selectively break the defaults where it serves the user. "HIG-compliant" and "great" are not the same target. Your job: clear the floor without exception, then raise the ceiling deliberately.

Deviation decision gates

Deviate from a HIG default only when all four hold:

  1. Named benefit — you can state the user benefit in one sentence that isn't "looks better," "feels modern," or "cleaner."
  2. Survives the slop check — it is not one of the numbered tells below (and will pass swiftui-design-check once that exists).
  3. Survives assistive tech — still correct under VoiceOver and Dynamic Type at AX5 (see ios-accessibility).
  4. Systematic — applied as a rule across the app, not a one-off that creates an inconsistency.

If any gate fails, use the HIG default. Deviation is earned, not assumed.

Anti-slop tells (numbered — the contract with swiftui-design-check)

These are the Apple-native equivalents of web "AI slop." Each is numbered so the swiftui-design-check linter (sub-project #2) can map a scanner rule to it. Statically detectable ones are marked ⚙.

  1. System-gray everything — flat .gray/Color(.systemGray) fills where a system material or hierarchical foreground style belongs.
  2. Sheet-for-everything — a modal .sheet where a push, popover, menu, or inline disclosure fits the navigation depth better.
  3. Unlabeled icon-only buttons — an icon Button/Label(systemImage:) with no accessibilityLabel and no visible text.
  4. Untouched .automatic styling — default button/list/navigation styling shipped with no deliberate choice behind it.
  5. Center-everything layout — no leading-edge alignment hierarchy; titles, body, and controls all centered.
  6. Hardcoded font sizes.font(.system(size: 17)) instead of a semantic text style.
  7. Twin full-width CTAs — primary and secondary actions given equal visual weight, destroying hierarchy.
  8. Emoji as iconography — emoji where an SF Symbol is the native choice.
  9. Placeholder-as-label — relying on TextField placeholder text instead of a persistent field label.
  10. Spinner-for-everything — indeterminate spinners where a skeleton or determinate progress fits, with no empty/error variant designed.
  11. Overlay for the critical — a non-modal banner or overlay where an .alert is required (data loss, destructive confirmation).
  12. Gradient-and-glow slop — decorative purple-ish gradients, drop-glows, or faux depth not derived from system materials.
  13. Generic empty state — "No items" with no cause and no next action (see references/empty-error-states.md).
  14. Title Case body copy — title-casing sentences, labels, or descriptions that should be sentence case (see references/ux-writing.md).

Quick reference

Capitalization

UseCase
Nav-bar titles, buttons, menu items, alert titlesTitle Case
Labels, body text, alert messages, hints, footnotes, placeholdersSentence case

Button verbs (pick the precise word)

WordUse for
DoneDismiss, keeping changes already applied
SaveCommit changes that aren't applied yet
CancelDismiss, discarding changes
OKAcknowledge an alert with no alternative — prefer a specific verb when one fits
Delete / RemoveDestructive — pair with confirmation; never "OK"

Empty/error: which surface

Data loss or destructive confirmation → .alert. Recoverable, non-blocking → inline state or banner. No data yet → designed empty state with cause + action. Full tree in references/empty-error-states.md.

Relationship to other skills

This skill is the design-language hub. It complements swiftui-micro-craft (quantified visual craft), apple-design (tokens, color, Liquid Glass), ios-accessibility (assistive tech), and cross-platform-adaptivity (layout). It is consumed by apple-review and apple-polish (design panels) and paywall-design (copy). The numbered anti-slop tells above are the rule source for swiftui-design-check.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.