Back to Skills

carplay

Build CarPlay-enabled apps using the CarPlay framework. Use when creating navigation, audio, communication, EV charging, parking, or food ordering apps for the car display, working with CPTemplateApplicationScene, CPInterfaceController template hierarchies, CPListTemplate, CPMapTemplate, CPNowPlayingTemplate, configuring CarPlay entitlements, or integrating with CarPlay Simulator for testing.

857stars43forksUpdated 7/9/2026

Security Assessment

Safe(100/100)
Security Score100/100

About carplay

A guide to building CarPlay apps with the template-based CarPlay framework on Swift 6.3 / iOS 26+, where the app supplies content and the system renders it on the vehicle display. CarPlay supports six app categories (audio, communication, navigation, EV charging, parking, and quick food ordering), each gated by a category-specific entitlement that Apple grants on request after agreeing to the CarPlay Entitlement Addendum. The guide lists the entitlement keys per category and the project configuration steps: updating the App ID, generating a provisioning profile, disabling automatic signing, and pointing the Code Signing Entitlements build setting at an Entitlements.plist.

Central types include CPTemplateApplicationScene (the UIScene subclass for the CarPlay display), its delegate for connect and disconnect lifecycle, CPInterfaceController for setting the root template and pushing, presenting, or popping templates, the abstract CPTemplate, and CPSessionConfiguration. Scene setup is declared in the Info.plist scene manifest, and the guide distinguishes non-navigation delegates (which receive only an interface controller, no window) from navigation delegates (which also receive a CPWindow whose root view controller draws map content).

Templates fall into general-purpose types (CPTabBarTemplate, CPListTemplate, CPGridTemplate with a max of 8 buttons, CPInformationTemplate with up to 3 actions, CPAlertTemplate with up to 2 actions, and CPActionSheetTemplate) and category-specific ones (CPMapTemplate, CPSearchTemplate, CPNowPlayingTemplate, CPPointOfInterestTemplate, and CPContactTemplate). Navigation is managed with pushTemplate, presentTemplate, and popTemplate, and CPTabBarTemplate must be the root; it cannot be pushed or presented. Only the navigation category (carplay-maps) receives a CPWindow. The guide also notes testing with the CarPlay Simulator, points to extended patterns in a references file, and draws a scope boundary: CarPlay-visible WidgetKit widgets and ActivityKit Live Activities are separate system experiences handled elsewhere.

FAQ

Do CarPlay apps need a special entitlement?

Yes. Each of the six categories (audio, communication, navigation, EV charging, parking, quick food ordering) requires a category-specific entitlement that Apple grants on request after you agree to the CarPlay Entitlement Addendum.

What is the difference between navigation and non-navigation scene delegates?

Non-navigation apps receive only a CPInterfaceController with no window, while navigation apps also receive a CPWindow whose root view controller draws the map content.

Which template must be the root and cannot be pushed?

CPTabBarTemplate must be set as the root template; it cannot be pushed or presented.

Are there limits on the general-purpose templates?

Yes. CPGridTemplate allows up to 8 icon buttons, CPInformationTemplate up to 3 actions, and CPAlertTemplate up to 2 actions.

How do CarPlay widgets and Live Activities fit in?

They are out of scope here; CarPlay-visible WidgetKit widgets and ActivityKit Live Activities are separate system experiences routed to those domains, while this skill keeps CarPlay-specific validation.

All Files

3 files
evals/evals.json4.5 KB
View
SKILL.md18.3 KB
View
references/carplay-patterns.md17.8 KB
View

Install carplay

Download and extract the skill files to your .claude/skills/ directory.

Quick Setup:

  1. Copy the skill folder to .claude/skills/
  2. Claude will automatically detect and use the skill