
App Clips
Review or implement iOS App Clip targets with correct bundle IDs, entitlements, associated domains, and URL invocation routing alongside the full app.
Install
npx skills add https://github.com/dpearson2699/swift-ios-skills --skill app-clipsWhat is this skill?
- Requires App Clip entitlement `com.apple.developer.on-demand-install-capable` plus parent/associated App Clip entitlemen
- App Clip bundle ID must be prefixed by the full app bundle ID (e.g., `com.example.cafe.Clip`)
- SwiftUI URL handling via `.onContinueUserActivity(NSUserActivityTypeBrowsingWeb)` for App Clip experiences
- Separates UIKit cold launch (`scene(_:willConnectTo:options:)`) from continuation handling (`scene(_:continue:)`)
- Supports default App Clip experience plus per-store advanced experiences with post-install URL parity in the full app
Adoption & trust: 1.6k installs on skills.sh; 713 GitHub stars; 2/3 security scanners passed (skills.sh audits).
Recommended Skills
Journey fit
Build → frontend is the canonical shelf for SwiftUI/UIKit App Clip UI, on-demand install capability, and handoff routing—not App Store marketing copy. Subphase frontend covers App Clip experiences, `.onContinueUserActivity`, and scene-delegate invocation paths that users hit from QR/NFC links.
Common Questions / FAQ
Is App Clips safe to install?
skills.sh reports 2 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.
SKILL.md
READMESKILL.md - App Clips
{ "skill_name": "app-clips", "evals": [ { "id": 0, "name": "invocation-entitlements-review", "prompt": "Review this App Clip setup plan before my team implements it. The full app bundle ID is com.example.cafe and the App Clip is com.example.cafe.Clip. We want a default App Clip experience plus per-store advanced experiences, SwiftUI for the App Clip UI, UIKit scene delegates in an older shared module, and we need the full app to handle the same QR/NFC URLs after install. What target setup, entitlements, associated domains, and invocation routing should we require?", "expected_output": "A review that gives App Clip-specific setup and routing guidance without drifting into unrelated full-app implementation detail.", "files": [], "expectations": [ "Names the App Clip target entitlement `com.apple.developer.on-demand-install-capable` and the parent/full-app association entitlements `com.apple.developer.parent-application-identifiers` and `com.apple.developer.associated-appclip-app-identifiers`.", "Explains that the App Clip bundle ID must be prefixed by the full app bundle ID.", "Recommends SwiftUI `.onContinueUserActivity(NSUserActivityTypeBrowsingWeb)` for App Clip URL handling.", "Distinguishes UIKit cold launch via `scene(_:willConnectTo:options:)` connection options from URL handling in `scene(_:continue:)`, and does not treat `scene(_:willContinueUserActivityWithType:)` as the handler that provides the URL.", "States that the full app must handle every App Clip invocation URL after installation.", "Mentions `appclips:` associated domains on both full app and App Clip targets plus AASA hosting for custom URLs or advanced experiences." ] }, { "id": 1, "name": "data-notifications-location", "prompt": "We're designing a parking-meter App Clip. It should remember a pending session when the user installs the full app, use Sign in with Apple if available, remind the user by notification shortly after launch, and confirm they're physically near the meter without asking for continuous location. What should we put in the App Clip skill-level implementation checklist?", "expected_output": "A checklist that covers secure handoff, Sign in with Apple verification, ephemeral notifications, and App Clip location confirmation with correct plist/API boundaries.", "files": [], "expectations": [ "Recommends App Groups/shared container or shared UserDefaults only for non-secret handoff data, and explicitly says not to store passwords, refresh tokens, or credential secrets there.", "Explains Sign in with Apple handoff using the shared user identifier plus full-app `ASAuthorizationAppleIDProvider.getCredentialState(forUserID:)` verification for `.authorized`.", "States that full-app keychain access to App Clip-created items is available only with the right association entitlements on iOS 15.4+ and that the App Clip cannot read full-app keychain items.", "Names `NSAppClipRequestEphemeralUserNotification` under the App Clip target's `NSAppClip` Info.plist dictionary, notes the up-to-8-hour ephemeral authorization window, and checks for `.ephemeral` authorization before scheduling.", "Explains that notification relaunch does not include the original invocation URL and should use APNs `target-content-id` or `UNNotificationContent.targetContentIdentifier` for multi-experience routing.", "Names `NSAppClipRequestLocationConfirmation` under the App Clip target's `NSAppClip` Info.plist dictionary and uses `APActivationPayload`/`appClipActivationPayload` location confirmation rather than continuous location tracking." ] }, { "id": 2, "name": "size-capability-boundary", "prompt": "A product manager wants an App Clip for venue check-in that includes Live Activities, CloudKit, App Intents, in-app purchases, BackgroundTasks, big bundled media,