Agent skill

ipad-patterns

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.

Stars 127
Forks 10

Install this agent skill to your Project

npx add-skill https://github.com/rshankras/claude-code-apple-skills/tree/main/skills/ios/ipad-patterns

SKILL.md

iPad Patterns

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.

When This Skill Activates

  • User is building or reviewing iPad-specific features
  • User asks about Stage Manager, multi-window, or UIScene lifecycle
  • User needs drag and drop (NSItemProvider, Transferable, UIDragInteraction)
  • User wants keyboard shortcuts or discoverability overlay
  • User asks about pointer/trackpad interactions or hover effects
  • User is implementing Apple Pencil or PencilKit support
  • User needs adaptive layouts for Split View, Slide Over, or size classes
  • User asks about external display support
  • User wants to make an iPhone app work well on iPad

Decision Tree

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 Availability

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

Top 5 Mistakes

# 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

Process

1. Identify iPad Features Needed

Read the user's code or requirements to determine:

  • Is this a new iPad app or adapting an iPhone app?
  • Which iPad-specific features are relevant (multitasking, drag/drop, keyboard, pencil)?
  • Target iPadOS version and hardware (Stage Manager requires M1+)
  • Whether the app uses SwiftUI lifecycle or UIKit AppDelegate

2. Load Relevant Reference Files

Based on the need, read from this directory:

  • multitasking.md -- Stage Manager, multi-window, Split View, Slide Over, size classes, external display
  • input-methods.md -- Keyboard shortcuts, pointer interactions, Apple Pencil, focus system
  • drag-drop.md -- Drag and drop, Transferable protocol, NSItemProvider

3. Review or Recommend

Apply patterns from the reference files. Check for common issues using the review checklist below.

4. Cross-Reference

  • For navigation architecture on iPad, see ios/navigation-patterns/navigation-split-view.md
  • For macOS Catalyst concerns, see macos/coding-best-practices/
  • For toolbar patterns, see swiftui/toolbars/SKILL.md
  • For animation and transitions, see design/animation-patterns/

Review Checklist

When reviewing code for iPad optimization, verify:

  • Size class adaptation -- UI adapts to compact/regular width (Split View, Slide Over)
  • Keyboard shortcuts -- primary actions have .keyboardShortcut() modifiers
  • Discoverability -- shortcuts appear when user holds Command key
  • Pointer effects -- interactive elements have .hoverEffect()
  • Drag and drop -- list/grid items support .draggable() and .dropDestination()
  • Multi-window -- app supports multiple windows if content model allows it
  • Scene restoration -- state is preserved when scene disconnects/reconnects
  • Pencil support -- drawing views filter touch types, PencilKit configured correctly
  • Column layout -- NavigationSplitView column widths appropriate for iPad
  • No hardcoded widths -- layouts use .frame(minWidth:idealWidth:maxWidth:) or geometry-based sizing
  • Context menus -- long-press context menus on relevant items (also improve right-click with pointer)
  • Toolbar placement -- actions placed in .primaryAction, .secondaryAction, or .keyboard as appropriate

References

Expand your agent's capabilities with these related and highly-rated skills.

rshankras/claude-code-apple-skills

legal

Legal document generation and compliance guidance for indie Apple developers. Covers privacy policies, terms of service, EULAs, GDPR/CCPA/DPDP compliance, and Apple App Store legal requirements. Use when user needs legal documents or compliance guidance.

127 10
Explore
rshankras/claude-code-apple-skills

privacy-policy

Generate privacy policies, terms of service, and EULAs for Apple platform apps. Detects data collection patterns, third-party SDKs, and generates region-specific legal documents with Apple Privacy Nutrition Label mapping. Use when user needs legal documents or data collection disclosure for App Store submission.

127 10
Explore
rshankras/claude-code-apple-skills

ios-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.

127 10
Explore
rshankras/claude-code-apple-skills

assistive-access

Assistive Access implementation for cognitive accessibility including simplified scenes, navigation icons, runtime detection, and design principles. Use when optimizing apps for Assistive Access mode.

127 10
Explore
rshankras/claude-code-apple-skills

ui-review

Review SwiftUI code for iOS/watchOS Human Interface Guidelines compliance, font usage, Dynamic Type support, and accessibility. Use when user mentions UI review, HIG, accessibility audit, font checks, or wants to verify interface design against Apple standards.

127 10
Explore
rshankras/claude-code-apple-skills

navigation-patterns

SwiftUI navigation architecture patterns including NavigationStack, NavigationSplitView, TabView, programmatic navigation, and custom transitions. Use when reviewing or building navigation, fixing navigation bugs, or architecting app flow.

127 10
Explore

Didn't find tool you were looking for?

Be as detailed as possible for better results