skills/ios/ipad-patterns/SKILL.md
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 skillsauth add rshankras/claude-code-apple-skills ipad-patternsInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
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
| +-- multitasking.md
| +-- Scene configuration, requestSceneSessionActivation
| +-- Window management, scene delegates
|
+-- Split View / Slide Over / Adaptive Layout
| +-- multitasking.md
| +-- Size classes, compact/regular transitions
| +-- NavigationSplitView column widths
|
+-- Drag and Drop
| +-- drag-drop.md
| +-- SwiftUI: .draggable() / .dropDestination()
| +-- UIKit: UIDragInteraction / UIDropInteraction
| +-- Transferable protocol, NSItemProvider
|
+-- Keyboard Shortcuts
| +-- input-methods.md
| +-- SwiftUI: .keyboardShortcut()
| +-- UIKit: UIKeyCommand
| +-- Discoverability overlay (Cmd hold)
|
+-- Pointer / Trackpad Interactions
| +-- input-methods.md
| +-- .hoverEffect(), UIPointerInteraction
| +-- Custom pointer shapes, lift/highlight effects
|
+-- Apple Pencil / PencilKit
| +-- input-methods.md
| +-- PKCanvasView, PKDrawing
| +-- Touch type filtering, Scribble
|
+-- External Display
+-- multitasking.md
+-- WindowGroup for external scenes
+-- UIScreen notifications (legacy)
| API | Minimum Version | Reference |
|-----|----------------|-----------|
| UIScene / UISceneDelegate | iPadOS 13 | multitasking.md |
| UISceneConfiguration | iPadOS 13 | multitasking.md |
| UIUserInterfaceSizeClass | iPadOS 8 | multitasking.md |
| NavigationSplitView | iPadOS 16 | multitasking.md |
| .horizontalSizeClass / .verticalSizeClass | iPadOS 14 (SwiftUI) | multitasking.md |
| .hoverEffect() | iPadOS 13 | input-methods.md |
| UIPointerInteraction | iPadOS 13.4 | input-methods.md |
| .keyboardShortcut() | iPadOS 14 | input-methods.md |
| UIKeyCommand | iPadOS 7 | input-methods.md |
| PencilKit (PKCanvasView) | iPadOS 13 | input-methods.md |
| UIPencilInteraction | iPadOS 12.1 | input-methods.md |
| .draggable() / .dropDestination() | iPadOS 16 | drag-drop.md |
| Transferable protocol | iPadOS 16 | drag-drop.md |
| UIDragInteraction / UIDropInteraction | iPadOS 11 | drag-drop.md |
| NSItemProvider | iPadOS 11 | drag-drop.md |
| WindowGroup (multi-window) | iPadOS 16 (SwiftUI lifecycle) | multitasking.md |
| .handlesExternalEvents | iPadOS 14 | multitasking.md |
| Stage Manager | iPadOS 16 (M1+ iPads) | multitasking.md |
| UISceneSession.requestSceneSessionActivation | iPadOS 13 | multitasking.md |
| .focusable() / @FocusState | iPadOS 15 | input-methods.md |
| FocusedValue / FocusedObject | iPadOS 16 | input-methods.md |
| # | Mistake | Fix | Details |
|---|---------|-----|---------|
| 1 | Ignoring size classes, building fixed layouts | Use @Environment(\.horizontalSizeClass) to adapt between compact and regular | multitasking.md |
| 2 | No keyboard shortcuts for common actions | Add .keyboardShortcut() to primary actions (Cmd+N, Cmd+S, Delete) | input-methods.md |
| 3 | Missing drag and drop on list/grid items | Add .draggable() and .dropDestination() for content types users expect to move | drag-drop.md |
| 4 | No hover effects on interactive elements | Add .hoverEffect() to buttons, list rows, and custom controls | input-methods.md |
| 5 | Not supporting multiple windows (single-scene only) | Add WindowGroup support and handle NSUserActivity for state restoration | multitasking.md |
Read the user's code or requirements to determine:
Based on the need, read from this directory:
multitasking.md -- Stage Manager, multi-window, Split View, Slide Over, size classes, external displayinput-methods.md -- Keyboard shortcuts, pointer interactions, Apple Pencil, focus systemdrag-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/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 appropriatedevelopment
Build, install, and launch an iOS app on a physical iPhone or iPad entirely from the command line (no Xcode GUI), using xcodebuild + devicectl. Use when the user wants to run, test, or screenshot their app on a real device without opening Xcode.
development
Comprehensive iOS development guidance including Swift best practices, SwiftUI patterns, UI/UX review against HIG, and app planning. Use for iOS code review, best practices, accessibility audits, or planning new iOS apps.
development
Build, install, launch, and screenshot an iOS app in the Simulator to verify a change visually. Use when the user wants to run the app, see a change live, screenshot the running app, or confirm a UI fix actually works (not just that it compiles).
development
Audits skills in this repo for consistency, API drift, and structural gaps. Produces a prioritized report grouped by severity (Critical/High/Medium/Low). Use when asked to "audit skills", "check the skill repo for drift", or when planning bulk skill cleanup. Read-only — does not apply fixes.