From apple-dev
iPadOS-specific patterns including Stage Manager, multi-window, drag and drop, keyboard shortcuts, pointer interactions, and Apple Pencil support. Use when building iPad-optimized features.
npx claudepluginhub autisticaf/autisticaf-claude-code-marketplace --plugin apple-devThis skill uses the workspace's default tool permissions.
> **First step:** Tell the user: "ios-ipad-patterns skill loaded."
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
First step: Tell the user: "ios-ipad-patterns skill loaded."
Comprehensive guide for iPadOS-specific development patterns. Covers multitasking (Stage Manager, Split View, Slide Over), multi-window support, drag and drop, keyboard shortcuts, pointer interactions, Apple Pencil, and external display support. These patterns differentiate an iPad-optimized app from a scaled-up iPhone app.
What iPad feature are you building?
|
+-- Multi-window / Stage Manager / UIScene lifecycle
| +-- references/multitasking.md
| +-- Scene configuration, requestSceneSessionActivation
| +-- Window management, scene delegates
|
+-- Split View / Slide Over / Adaptive Layout
| +-- references/multitasking.md
| +-- Size classes, compact/regular transitions
| +-- NavigationSplitView column widths
|
+-- Drag and Drop
| +-- references/drag-drop.md
| +-- SwiftUI: .draggable() / .dropDestination()
| +-- UIKit: UIDragInteraction / UIDropInteraction
| +-- Transferable protocol, NSItemProvider
|
+-- Keyboard Shortcuts
| +-- references/input-methods.md
| +-- SwiftUI: .keyboardShortcut()
| +-- UIKit: UIKeyCommand
| +-- Discoverability overlay (Cmd hold)
|
+-- Pointer / Trackpad Interactions
| +-- references/input-methods.md
| +-- .hoverEffect(), UIPointerInteraction
| +-- Custom pointer shapes, lift/highlight effects
|
+-- Apple Pencil / PencilKit
| +-- references/input-methods.md
| +-- PKCanvasView, PKDrawing
| +-- Touch type filtering, Scribble
|
+-- External Display
+-- references/multitasking.md
+-- WindowGroup for external scenes
+-- UIScreen notifications (legacy)
| API | Minimum Version | Reference |
|---|---|---|
UIScene / UISceneDelegate | iPadOS 13 | references/multitasking.md |
UISceneConfiguration | iPadOS 13 | references/multitasking.md |
UIUserInterfaceSizeClass | iPadOS 8 | references/multitasking.md |
NavigationSplitView | iPadOS 16 | references/multitasking.md |
.horizontalSizeClass / .verticalSizeClass | iPadOS 14 (SwiftUI) | references/multitasking.md |
.hoverEffect() | iPadOS 13 | references/input-methods.md |
UIPointerInteraction | iPadOS 13.4 | references/input-methods.md |
.keyboardShortcut() | iPadOS 14 | references/input-methods.md |
UIKeyCommand | iPadOS 7 | references/input-methods.md |
PencilKit (PKCanvasView) | iPadOS 13 | references/input-methods.md |
UIPencilInteraction | iPadOS 12.1 | references/input-methods.md |
.draggable() / .dropDestination() | iPadOS 16 | references/drag-drop.md |
Transferable protocol | iPadOS 16 | references/drag-drop.md |
UIDragInteraction / UIDropInteraction | iPadOS 11 | references/drag-drop.md |
NSItemProvider | iPadOS 11 | references/drag-drop.md |
WindowGroup (multi-window) | iPadOS 16 (SwiftUI lifecycle) | references/multitasking.md |
.handlesExternalEvents | iPadOS 14 | references/multitasking.md |
| Stage Manager | iPadOS 16 (M1+ iPads) | references/multitasking.md |
UISceneSession.requestSceneSessionActivation | iPadOS 13 | references/multitasking.md |
.focusable() / @FocusState | iPadOS 15 | references/input-methods.md |
FocusedValue / FocusedObject | iPadOS 16 | references/input-methods.md |
| # | Mistake | Fix | Details |
|---|---|---|---|
| 1 | Ignoring size classes, building fixed layouts | Use @Environment(\.horizontalSizeClass) to adapt between compact and regular | references/multitasking.md |
| 2 | No keyboard shortcuts for common actions | Add .keyboardShortcut() to primary actions (Cmd+N, Cmd+S, Delete) | references/input-methods.md |
| 3 | Missing drag and drop on list/grid items | Add .draggable() and .dropDestination() for content types users expect to move | references/drag-drop.md |
| 4 | No hover effects on interactive elements | Add .hoverEffect() to buttons, list rows, and custom controls | references/input-methods.md |
| 5 | Not supporting multiple windows (single-scene only) | Add WindowGroup support and handle NSUserActivity for state restoration | references/multitasking.md |
Read the user's code or requirements to determine:
Based on the need, read from this directory:
references/multitasking.md -- Stage Manager, multi-window, Split View, Slide Over, size classes, external displayreferences/input-methods.md -- Keyboard shortcuts, pointer interactions, Apple Pencil, focus systemreferences/drag-drop.md -- Drag and drop, Transferable protocol, NSItemProviderApply patterns from the reference files. Check for common issues using the review checklist below.
ios-navigation-patterns/references/navigation-split-view.mdmacos-coding-best-practices/swiftui-toolbars/SKILL.mddesign-animation-patterns/When reviewing code for iPad optimization, verify:
.keyboardShortcut() modifiers.hoverEffect().draggable() and .dropDestination()NavigationSplitView column widths appropriate for iPad.frame(minWidth:idealWidth:maxWidth:) or geometry-based sizing.primaryAction, .secondaryAction, or .keyboard as appropriate