app-store
App Store optimization and marketing skills for descriptions, screenshots, keywords, review responses, and comprehensive promotional strategy. Use when user…
UI typography on Apple platforms — text styles and Dynamic Type, the San Francisco family (Pro/Rounded/Compact/Mono/New York + width axis), optical sizes, tracking vs kerning, leading adjustments, and custom-font scaling. Use when choosing fonts, building type hierarchy, fixing
$ npx -y skills add rshankras/claude-code-apple-skills --skill typography --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/typographyContext preview
The summary Claude sees to decide when to auto-load this skill.
UI typography on Apple platforms — text styles and Dynamic Type, the San Francisco family (Pro/Rounded/Compact/Mono/New York + width axis), optical sizes, tracking vs kerning, leading adjustments, and custom-font scaling. Use when choosing fonts, building type hierarchy, fixing
name: typography description: UI typography on Apple platforms — text styles and Dynamic Type, the San Francisco family (Pro/Rounded/Compact/Mono/New York + width axis), optical sizes, tracking vs kerning, leading adjustments, and custom-font scaling. Use when choosing fonts, building type hierarchy, fixing truncation/legibility, or making custom fonts respect Dynamic Type. allowed-tools: [Read, Write, Edit, Glob, Grep] last_verified: 2026-07-16 review_by: 2027-06-22
Type is most of your UI. The system does the hard parts — optical sizes, tracking tables, Dynamic Type — *if* you use its APIs. This skill covers when to trust the system, how to build hierarchy deliberately, and what custom fonts owe you back.
Predefined styles (Large Title → Caption 2) are weight + size + leading combos with Dynamic Type support built in — and different styles scale *differently* (body grows more than footnote), which manual font sizes can't replicate.
varies per style: some go medium→semibold, others bold→heavy) before reaching for new fonts.
scaling assumptions.
letterforms, looser tracking for legibility; above: tighter, more refined). System font APIs do this automatically — hardcoded single-cut fonts don't.
disable clashing features (ligatures). Override system tracking only in exceptional cases.
manually squeezing — and prefer wrapping to truncating (line limit 0 on labels that matter).
system adds leading automatically for tall scripts (Arabic, Devanagari).
12 sizes: 7 default + 5 accessibility (AX1–AX5). `.body` runs 17pt at default up to 53pt at AX5 — roughly 3× taller, and layouts must expect that. Escalate in order:
1. **Text styles** — `.font(.title)` / `preferredFont(forTextStyle:)` + adjusts-for-content-size, line count 0 so text wraps instead of truncating. 2. **`@ScaledMetric`** for the non-text riding alongside (icon frames, spacing); SF Symbols scale via `UIImage.SymbolConfiguration(textStyle:)`. Prioritize scaling essential content over decoration. 3. **Switch layout axis at accessibility sizes** — branch on `dynamicTypeSize.isAccessibilitySize` with `AnyLayout(HStackLayout())` / `AnyLayout(VStackLayout())` (UIKit: flip the stack axis on `preferredContentSizeCategory.isAccessibilityCategory`); give text the full line width and relax `lineLimit`. 4. **Large Content Viewer** — only for bars that legitimately can't grow: a tab bar takes under 10% of screen height, and scaled to accessibility sizes it would eat almost a quarter (WWDC24 10074). Scaling is always preferred; the viewer is the fallback, not the fix.
Test at all 12 sizes (Xcode Previews → Variants → Dynamic Type Variants), not just the biggest — mid-range accessibility sizes catch different wrap points.
| Face | Job | |---|---| | SF Pro | The default; UI text everywhere | | SF Pro Rounded | Friendlier numerals/labels — widgets, health/fitness data | | SF Compact | watchOS (space-efficient counterpart) | | SF Mono | Code, tabular alignment | | New York | Serif — reading experiences, editorial contrast | | SF Arabic / SF Arabic Rounded | Arabic script with its own optical sizes |
**The width axis** (Condensed / Regular / Compressed / Expanded):
vertical proportions, so mixing them never misaligns baselines. 2–3 styles are enough — pair one width with contrasting weights, one weight with contrasting widths, or oppose both for maximum display contrast.
System fonts get Dynamic Type free; a brand font makes *you* the type engine:
SwiftUI `Font.custom(_:size:relativeTo:)`; scale layout constants with `@ScaledMetric`.
font doesn't cover (the system stacks: `system-ui`, `ui-rounded`, `ui-serif`, `ui-monospace` on the web).
does that a licensed font usually doesn't.
❌ Anti-patterns: hardcoded point sizes on user-facing text · kerning APIs for tracking jobs · custom font without `relativeTo:` (frozen size) · Compressed body text · truncation where wrapping was possible.
Type review: `Element | Current (font/size/style) | Issue (hierarchy/scaling/legibility) | F
A collection of Claude Code skills for iOS, macOS, watchOS, visionOS, and Apple platform development. These skills help you plan and build apps, maintain code quality, ensure HIG compliance, and guide you from idea to App Store.
Repo: rshankras/claude-code-apple-skills
App Store optimization and marketing skills for descriptions, screenshots, keywords, review responses, and comprehensive promotional strategy. Use when user…
Privacy-preserving ad measurement with AdAttributionKit (SKAdNetwork's successor) — install and re-engagement attribution, conversion-value strategy under…
Generate compelling App Store descriptions that convert browsers into users. Use when writing initial descriptions, improving existing copy, or drafting…
Apple Search Ads campaign strategy for indie developers — paid acquisition, keyword bidding, budget planning, and ROAS optimization. Use when user asks about…
Take a one-time in-app purchase from MISSING_METADATA to READY_TO_SUBMIT in App Store Connect — set its price schedule and localized display name/description…
Optimize app title, subtitle, and keywords for maximum App Store discoverability. Use when launching a new app, improving search rankings, entering new…