For AI agents
The app's 117 iPhone and iPad pages and 98 Mac pages, rewritten as 183 short topics for coding agents. Free and open source.
Coding agents write SwiftUI that builds, but they miss Apple's design and App Review rules, and their training predates the newest APIs. This pack gives your agent what it gets wrong or doesn't know yet: current SwiftUI for iOS and macOS 26 and 27, Apple's design guidelines as rules with reasons, App Review rules with their guideline numbers, and a linter. Topics load only when a task needs them, and they link to Apple's own docs instead of copying them.
Does it help?
We gave Claude Code 23 SwiftUI tasks in a fresh Xcode project, twice each, and an LLM judge scored the code against a rubric for each task (October 2026).
| Agent | Without the pack | With the skills and primer |
|---|---|---|
| Claude Sonnet 5.5 | 7.2 / 1088% of criteria met | 8.4 / 1097% |
| Claude Opus 5.5 | 8.3 / 1096% | 8.6 / 1098% |
With the pack, Sonnet does about as well as Opus without it. The gains come from Apple's design and App Review rules more than from deprecated APIs, which neither model used much. Without the pack, Sonnet never offered the in-app account deletion App Review requires. Opus gains less, since it already got most of it right. Method, per-task results, and limits.
Four skills
- swiftui-build: components, layout, navigation, data flow, animation, and Mac windows and menus, each with default code, variants, and pitfalls.
- apple-design: color, type, Liquid Glass, accessibility, and patterns like modality and feedback.
- app-store-ship: App Review, App Store Connect, TestFlight, sign-in, purchases, and rating prompts.
- swiftui-review: a review checklist and
check_swift.py, a linter for deprecated APIs and design mistakes that needs only Python 3.
Install
Any agent
Claude Code, Codex, Cursor, Copilot, Gemini CLI, and others, with the skills CLI. It knows where each agent looks for skills.
npx skills add tylerbecks/swiftui-for-humans
Claude Code
The plugin adds a /swiftui-review command and a hig-reviewer subagent.
/plugin marketplace add tylerbecks/swiftui-for-humans
/plugin install swiftui-for-humans@swiftui-for-humans
To have Claude lint every .swift file it edits, also install the opt-in hook: /plugin install swiftui-lint-hook@swiftui-for-humans. Set SWIFTUI_LINT_TARGET (like "iOS 17") to your deployment target.
Codex
codex plugin marketplace add tylerbecks/swiftui-for-humans
Then install swiftui-for-humans from /plugins. Or copy the skill folders into .agents/skills/ in your project.
Xcode 27
Copy the four folders from agent/skills into ~/Library/Developer/Xcode/CodingAssistant/ClaudeAgentConfig/skills/ for Claude, or ~/Library/Developer/Xcode/CodingAssistant/codex/skills/ for Codex. Create the skills folder if it's missing, then restart Xcode.
The primer (recommended)
In our evals, agents opened the skills either way, but only ran the linter when the primer told them to, and Sonnet scored higher with it. Paste AGENTS.snippet.md into your project's AGENTS.md or CLAUDE.md. It's under 8 KB: the target SDKs, the top corrections, and an index of the topic files, with an instruction to read them instead of relying on training data.
Chat apps and other tools
Every topic is a plain Markdown file on this site, listed below. llms.txt indexes them, and llms-full.txt has all of them in one file (790 KB, about 202,000 tokens, so most tools are better off fetching single topics). A remote MCP server for Claude and other chat apps is coming soon.
Topics
Each topic says when to use something and when not to, then gives default code, rules with reasons, pitfalls, and variants, with links to Apple's docs as Markdown.
Start here 6
- Deprecated and outdated SwiftUI APIs Every outdated SwiftUI API models still write, with its replacement and minimum OS.
- HIG decision rules The design calls agents most often get wrong, as 36 rules with reasons.
- Liquid Glass Liquid Glass rules, default code, and the fallback before 26.
- SwiftUI review checklist The review pass: linter, availability, accessibility, Dynamic Type, previews, and HIG checks.
- What's new in SwiftUI 26 SwiftUI APIs new in iOS and macOS 26, with availability.
- What's new in SwiftUI 27 SwiftUI APIs new in iOS and macOS 27 and 27.1, and what changed.
Build (swiftui-build) 117
- Button A control that runs an action when tapped.
- Toggle A control that switches between on and off.
- Picker A control for choosing one value from a list of options.
- Menu A button that reveals a list of actions when tapped.
- Slider A control for picking a number from a range by dragging a thumb along a track.
- Stepper A pair of minus and plus buttons that change a number by a fixed amount.
- DatePicker A control for choosing a date, a time, or both.
- ColorPicker A swatch that opens the system color picker so people can choose any color.
- ProgressView Shows that work is happening, as a spinning indicator or a filling bar.
- Gauge Shows where a value sits within a range, like a battery level or a speedometer.
- Link A control that opens a URL, in Safari or in the app that handles it.
- ShareLink A button that opens the share sheet to send a link, text, or image.
- TextField A box people type a short piece of text or a number into.
- SecureField A text field that hides what people type, for passwords and PINs.
- TextEditor A scrolling, multi-line area for long text such as notes or a bio.
- Keyboard & Focus Choose which field is active, move between fields on Return, pick the right keyboard, and dismiss it.
- Text Shows read-only text, styled with fonts and colors, with built-in Markdown and formatting.
- Label An icon and a title together, which adapts its look to where it's used.
- Image Shows a picture or an SF Symbol, and controls how it fills its frame.
- AsyncImage Downloads and shows an image from a URL, with a placeholder while it loads.
- How Layout Works A parent offers its child a size, the child picks its own, and the parent places it.
- Stacks Arrange views in a column, a row, or layered on top of each other.
- Spacer & Divider Spacer pushes views apart in a stack; Divider draws a thin line between them.
- Grid Lines views up in rows and columns, sizing each column to its widest cell.
- Lazy Grids Scrolling grids of many items, like a photo library, built only as they appear.
- ScrollView Lets content that's bigger than the screen scroll, vertically or sideways.
- ViewThatFits Give it a few versions of a view, and it shows the first one that fits.
- GeometryReader Three ways to size a view relative to its container or read its size.
- Safe Area The part of the screen clear of the Dynamic Island, home indicator, bars, and keyboard.
- List A scrolling column of rows, like the ones in Settings, Mail, and Contacts.
- Form A container that lays out controls as grouped rows, like the Settings app.
- NavigationStack Pushes screens on top of each other with a back button, like drilling into a folder.
- NavigationSplitView A sidebar and detail side by side on iPad that collapses into a stack on iPhone.
- TabView Switches between top-level sections with a tab bar, or swipes through pages like a carousel.
- Toolbar Puts buttons and menus in the bar at the top or bottom of a screen.
- Searchable Adds a system search field to a screen and hands you the text to filter with.
- Swipe Actions & Editing Lets people swipe rows for actions, delete and reorder them, and pull to refresh.
- Sheet Slides a view up over the current screen for a focused task, at full or partial height.
- Alert Interrupts with an important message and asks for a quick decision.
- Confirmation Dialog Asks people to pick from a few actions, or confirm a destructive one.
- Popover Shows extra content in a bubble that points at the button that opened it.
- Context Menu A menu of actions that appears when people touch and hold a view.
- Modifier Order Each modifier wraps the view before it, so changing the order changes the result.
- padding Adds space around a view, on every edge or only the edges you pick.
- frame Sets a view's size, or lets it stretch to fill the space it's offered.
- background & overlay Layers a color, shape, or view behind or on top of a view, sized to match it.
- clipShape Cuts a view to a shape, like rounded corners or a circle, and hides the rest.
- shadow Draws a soft shadow behind a view to lift it off the background.
- foregroundStyle & tint Colors text, symbols, and shapes, and sets the accent color of controls.
- font Sets the size, weight, and design of text, and scales it with the user's text size.
- Visual Effects Fade, blur, scale, rotate, move, and desaturate a view without changing its layout.
- Custom Modifiers Bundles a set of modifiers under one name, so you can reuse a style everywhere.
- Which Wrapper? Answer two questions to pick the right property wrapper for your data.
- @State Stores a value that one view owns, and redraws the view when it changes.
- @Binding Lets a child view read and write a value its parent owns, so both stay in sync.
- @Observable Turns a class into a shared model that views watch and redraw from automatically.
- @Environment Reads values the system or an ancestor passes down, like dark mode or the locale.
- View Lifecycle Run code when a view appears, load data with task, and react to changes with onChange.
- How Views Update See which views run their body again when state changes, and why the rest don't.
- Animation Curves Animate any state change, and pick a curve for how it speeds up and slows down.
- Spring A natural, physics-based animation set by how long it takes and how much it bounces.
- Transitions Control how a view animates in when it's added and out when it's removed.
- Matched Geometry Morph one view into another, like a sliding tab highlight or a card growing full screen.
- PhaseAnimator Steps a view through a list of states, either in a loop or each time a value changes.
- KeyframeAnimator Animates several properties on their own timelines, like a jump that squashes, spins, and lands.
- Symbol Effects Built-in SF Symbol animations, like bounce, pulse, and wiggle, with one modifier.
- Content Transitions Animate content changing in place, like digits rolling on a counter or one icon becoming another.
- Haptics Play a tap, buzz, or click on the device when something happens.
- Shapes Rectangles, circles, capsules, and your own paths, ready to fill, stroke, or clip with.
- Gradients Smooth blends between colors: in a line, outward from a point, around a circle, or across a mesh.
- Swift Charts Bar, line, area, point, and pie charts built from your data in a few lines.
- Map An interactive Apple Map with markers, custom pins, styles, and a camera you control.
- Login Screen An email and password sign-in screen with AutoFill, focus handling, and Sign in with Apple.
- Settings Screen A grouped settings form with toggles, a picker, a drill-down row, and sign-out confirmation.
- Inbox List A mail-style list with unread dots, swipe actions, a filter menu, and search.
- Empty States What to show when a screen has no content, no search results, or an error.
- Onboarding A paged welcome flow with Continue and Skip buttons that ends with Get Started.
- Profile Screen A social profile with an avatar, stats, Follow and Message buttons, and a photo grid.
- Detail Screen A listing page with a full-bleed hero, a glass toolbar, and a floating Reserve bar.
- Gauge & ProgressView macOS only Progress bars and spinners for work under way, and gauges for a level in a range.
- ControlGroup macOS only Related buttons joined into one control, in a toolbar or in content.
- LabeledContent macOS only A label and a value in one row that lines up with the rest of a form.
- Focus & Keyboard Navigation macOS only Decide which view gets typed keys, and let people move around with Tab.
- Text & Label macOS only Shows read-only text, and pairs a short title with an icon in a label.
- Image & SF Symbols macOS only Show pictures from your app, and thousands of system symbols that match your text.
- Stacks & Grid macOS only Line views up in rows, columns, layers, and tables that grow with the window.
- GroupBox & DisclosureGroup macOS only Box related controls together, and tuck advanced ones under a disclosure triangle.
- Split views macOS only Panes people resize by dragging the divider between them, side by side or stacked.
- List styles macOS only Sidebar, inset, and bordered lists, with rows people click to select, one or many.
- Table macOS only Rows of data in columns that people sort, resize, and select, like Finder's list view.
- Outline lists macOS only Folders inside folders: rows with disclosure triangles that open to show their children.
- Inspector macOS only A trailing column that shows and edits the details of whatever is selected.
- WindowGroup macOS only The scene for your app's main windows, where people can open as many as they need.
- Window macOS only A single, unique window, like an activity viewer or a floating palette.
- Settings macOS only The app's Settings window, opened from the app menu or with ⌘,.
- MenuBarExtra macOS only A menu bar icon that opens a menu or a small window, whichever app is in front.
- DocumentGroup macOS only The scene for document-based apps, with New, Open, and Save built in.
- Window style & sizing macOS only Scene modifiers for a window's title bar, toolbar style, size, and position.
- Opening windows macOS only Open, bring forward, and close windows from your own code.
- Search macOS only A search field in the toolbar or sidebar, with suggestions and tokens.
- Commands & menu bar macOS only Add your own menus and menu items to the Mac's menu bar.
- Keyboard shortcuts macOS only Run a button or menu item from the keyboard, like ⌘S for Save.
- Tooltips macOS only A short phrase that appears when the pointer rests on a control.
- Hover & pointer macOS only React when the pointer moves over a view, and show the right pointer.
- Drag and drop macOS only Let people drag content within a window, between windows, and to other apps.
- Copy & paste macOS only Connect the Edit menu's Cut, Copy, Paste, and Delete to your own views.
- Trackpad gestures macOS only Zoom and rotate with trackpad gestures, plus a way to do both with a mouse.
- File import & export macOS only Show the Mac's open and save panels, and read or write the files people pick.
- State & Binding macOS only @State keeps a value a view owns, and @Binding lets another view change it.
- Animation macOS only Springs and transitions that stay quick and quiet under a pointer and in big windows.
- Charts & Maps macOS only Swift Charts with a selectable plot, and a MapKit map that fills a window.
- Library window macOS only A sidebar, a sortable table, and an inspector: the classic window for browsing a library.
- Settings window macOS only A Settings window with a toolbar of panes, ready to copy into your app.
- Menu bar utility macOS only A small app that lives in the menu bar and opens a panel when clicked.
- Document editor macOS only A text editor that opens, saves, and creates files, with a toolbar for formatting.
- Welcome window macOS only The window a document app shows at launch, with New, Open, and recent files.
- Empty states macOS only What a sidebar, table, or search shows when there's nothing to show yet.
Design (apple-design) 30
- System Colors Colors that adapt to light mode, dark mode, and accessibility settings for you.
- Typography Apple's built-in text styles, which resize automatically when people change their text size.
- Materials Frosted, blurred backgrounds that let the content behind them show through.
- SF Symbols Thousands of built-in icons that match the system font and scale with text.
- Dark Mode Use colors that adapt, so your app looks right in light and dark.
- Layout & Adaptivity Build layouts that fit any screen, window size, orientation, and text size.
- Motion Animate to explain what changed, keep it short, and know when to skip it.
- App Icons Design one layered icon that the system turns into every appearance and size.
- Writing Short, specific words for buttons, alerts, errors, and empty screens.
- Accessibility What to support from day one so everyone can use your app.
- VoiceOver Labels, traits, and grouping that tell the screen reader what each view is.
- Dynamic Type Let text grow to the size people choose, and keep layouts readable when it does.
- Reduce Motion Swap big movement for fades when people ask for less motion.
- Color & Contrast Readable contrast, Increase Contrast support, and never using color as the only signal.
- Launching Open fast, look like your first screen, and pick up where people left off.
- Loading Show something right away, then swap in the content, an empty state, or an error.
- Feedback Tell people what happened, with an interruption that matches how much it matters.
- Entering Data Ask for less, show the right keyboard, and catch mistakes while people type.
- Modality When to use a sheet, full-screen cover, alert, or popover, and how people get out.
- Undo and Redo Let people take back what they did, instead of asking “Are you sure?” first.
- Requesting Permission Ask for access when a feature needs it, say why, and handle “no” gracefully.
- Windows & Layout macOS only Lay out windows that people move, resize, and stack beside other apps.
- Color & Accent macOS only Semantic colors that adapt, and an accent color people choose for every app.
- Keyboard access macOS only Let people reach every control and command without touching the pointer.
- Contrast & transparency macOS only Stay readable when people turn on Increase Contrast or Reduce Transparency.
- The menu bar macOS only The standard menus, their order, and which commands belong in each.
- What goes in Settings macOS only Keep rare, app-wide options in Settings, and task options in the window they affect.
- Windows & tabs macOS only More than one window, tabs that gather them, and windows that come back after a relaunch.
- Toolbars macOS only Which commands earn a place in the toolbar, how to group them, and letting people customize.
- Full screen macOS only Let a window fill the screen for focused work, and keep what people need in reach.
Ship (app-store-ship) 30
- Submission Checklist Everything to check before you tap Submit for Review, in one list.
- Common Rejections The guidelines apps break most often, what each means, and how to fix it.
- Native, Not Web What makes an app feel like a website in a frame, and how to fix it.
- Dark Mode & Large Text Before you submit, check every screen in Dark Mode and at the largest text size.
- Empty, Loading & Error Give every screen an empty, loading, and error state, and ship no placeholders.
- TestFlight Share beta builds with your team and up to 10,000 outside testers.
- App Review What reviewers need from you, how long review takes, and what to do if you're rejected.
- Releasing Choose when an approved version goes live, roll updates out slowly, and number builds right.
- Sign in with Apple Apple's sign-in button, and when App Review expects you to offer it.
- Delete Account If people can create an account in your app, they must be able to delete it there too.
- Paywall Sell digital features with StoreKit's ready-made store views, and show what Apple requires.
- Asking for Reviews Ask for an App Store rating with the system prompt, at a good moment, and never for a reward.
- Screenshots The screenshot sizes App Store Connect requires, and how to make clean ones.
- Privacy Details Tell Apple what data your app collects, and why it uses certain APIs.
- Accessibility Labels Accessibility Nutrition Labels show which accessibility features your app supports.
- Other Required Forms Age rating, encryption, EU trader status, content rights, and the Xcode you need.
- Native, Catalyst, or iPad App macOS only Three ways onto the Mac: a native Mac app, Mac Catalyst, or your iPad app as it is.
- What Makes a Great Mac App macOS only Menus, the keyboard, windows, Settings, and drag and drop: what people expect on a Mac.
- Mac-Native Checklist macOS only The details Mac users and reviewers notice, in one list to check before you ship.
- Not an iPad App in a Window macOS only The signs of a port that wasn't adapted to the Mac, and what to do instead.
- App Sandbox macOS only Every Mac App Store app runs in a sandbox, with only the access it asks for.
- Privacy & Permissions macOS only Purpose strings, the privacy manifest, App Privacy answers, and the Mac's permission prompts.
- Mac App Review macOS only Guideline 2.4.5's extra Mac App Store rules, and the issues that most often stall review.
- Universal Purchase macOS only One App Store listing and one purchase for your iPhone, iPad, and Mac apps.
- Screenshots & Metadata macOS only Mac screenshot sizes, app previews, and the text on your Mac product page.
- Pricing & Category macOS only Set your Mac app's category in Xcode and App Store Connect, then its price and countries.
- TestFlight for Mac macOS only Send Mac builds to testers with TestFlight, the same way as iPhone builds.
- Hardened Runtime macOS only Runtime protections Apple requires before it notarizes your Mac app.
- Developer ID & Notarization macOS only Ship outside the Mac App Store: sign with Developer ID, notarize, and staple the ticket.
- Updates Outside the Store macOS only Apps you distribute yourself deliver their own updates; Mac App Store apps must not.
How it's made
One script turns the app's pages into the skills, these topic files, and llms.txt, so the agent pack and the app never drift apart. The source, the linter, and the build steps are on GitHub. Found a mistake? See Support.