
Carplay
Add Apple CarPlay navigation templates, entitlements, and scene delegates to an iOS turn-by-turn app without violating CPWindow rendering rules.
Install
npx skills add https://github.com/dpearson2699/swift-ios-skills --skill carplayWhat is this skill?
- Documents com.apple.developer.carplay-maps entitlement and category-based Apple approval
- Declares CPTemplateApplicationSceneSessionRoleApplication in UIApplicationSceneManifest with delegate class name
- Implements templateApplicationScene didConnect retaining CPInterfaceController and CPWindow
- Enforces map-only rendering in CPWindow with controls via CarPlay templates (e.g. CPMapTemplate root)
- Includes CarPlay Simulator size matrix and real-hardware locked-iPhone, Siri, and audio caveats
Adoption & trust: 1.2k installs on skills.sh; 713 GitHub stars; 3/3 security scanners passed (skills.sh audits).
Recommended Skills
Journey fit
CarPlay is canonical Build work because it changes entitlements, scene manifest, and in-car UI templates inside the shipping app. CarPlay is a platform integration: entitlements, CPTemplateApplicationSceneDelegate, and template APIs sit alongside other Apple system SDK hooks.
Common Questions / FAQ
Is Carplay safe to install?
skills.sh reports 3 of 3 security scanners passed. Review the Security Audits panel on this page before installing in production.
SKILL.md
READMESKILL.md - Carplay
{ "skill_name": "carplay", "evals": [ { "id": 1, "prompt": "I'm adding CarPlay support to our turn-by-turn navigation app on iOS 26. Show the entitlement, Info.plist scene manifest, scene delegate, root template setup, map rendering boundary, and simulator test matrix.", "expected_output": "Guidance requests the navigation CarPlay entitlement, declares CPTemplateApplicationSceneSessionRoleApplication in UIApplicationSceneManifest, implements the navigation CPTemplateApplicationSceneDelegate didConnect method with CPWindow, renders only map content in the CPWindow root view controller, sets CPMapTemplate as the root template, and includes CarPlay Simulator sizes plus real-hardware locked-iPhone/Siri/audio caveats.", "files": [], "assertions": [ "The output uses com.apple.developer.carplay-maps and notes that Apple grants CarPlay entitlements by app category.", "The output includes a CarPlay scene manifest using CPTemplateApplicationSceneSessionRoleApplication, CPTemplateApplicationScene, and UISceneDelegateClassName.", "The output implements the navigation delegate method templateApplicationScene(_:didConnect:to:) and retains both CPInterfaceController and CPWindow.", "The output states CPWindow is for map rendering only and that controls, alerts, overlays, and navigation UI must use CarPlay templates.", "The output sets CPMapTemplate as the root template and includes simulator configurations beyond the default 800 x 480 @2x.", "The output mentions testing locked-iPhone behavior and at least one simulator limitation that requires real CarPlay hardware or an aftermarket unit." ] }, { "id": 2, "prompt": "Review this CarPlay communication code for iOS 26: it builds CPMessageListItem with CPMessageListItem.LeadingConfiguration, CPMessageListItem.TrailingConfiguration, trailingImage, and a custom selection handler that opens our message detail screen. What should change?", "expected_output": "Review flags stale or invalid CPMessageListItem API shapes, uses CPMessageListItemLeadingConfiguration and CPMessageListItemTrailingConfiguration with CPMessageLeadingItem/CPMessageTrailingItem values, explains that CPMessageListItem selection invokes Siri message flows instead of a custom handler, and keeps the advice within the communication entitlement domain.", "files": [], "assertions": [ "The output replaces nested LeadingConfiguration/TrailingConfiguration types with CPMessageListItemLeadingConfiguration and CPMessageListItemTrailingConfiguration.", "The output uses CPMessageLeadingItem and CPMessageTrailingItem enum values instead of fabricated text-style accessory objects.", "The output uses the current CPMessageListItem initializer shape with detailText and trailingText rather than trailingImage on the list item initializer.", "The output states CPMessageListItem does not use a custom selection handler; CarPlay invokes Siri message compose, read, or reply flows based on the item configuration.", "The output keeps the guidance within CarPlay communication messaging APIs and does not expand the solution into a custom message-detail UI." ] }, { "id": 3, "prompt": "We want our delivery app's Live Activity and a small widget to appear on the CarPlay Home Screen and CarPlay Ultra. Should the CarPlay skill own this, or should we build it with CarPlay templates?", "expected_output": "Answer routes Live Activities to ActivityKit and widgets to WidgetKit while explaining that the CarPlay skill owns CarPlay framework template apps, scenes, entitlements, and simulator testing. It does not invent a CarPlay template implementation for widgets or Live Activities, and it mentions CarPlay-specific validation only as a handoff concern.", "files": [], "assertions": [ "The output says ActivityKit owns Live Activities and WidgetKit owns