Agent skill · software engineering · dpearson2699

callkit

Implement VoIP calling with CallKit and PushKit. Use when building incoming/outgoing call flows, registering for VoIP push notifications, configuring CXProvider and CXCallController, handling call actions, coordinating audio sessions, or creating Call Directory extensions for caller ID and call blocking.

Why this skill is useful

Provides specific implementation patterns and configurations for integrating VoIP calling using CallKit and PushKit that the AI wouldn't reliably generate on its own.

What it needs

About 7k tokens when loaded. Last updated 2026-07-31. 973 stars on the source repository.

What this skill does

CallKit Build VoIP calling features that integrate with the native iOS call UI using CallKit and PushKit. Covers incoming/outgoing call flows, VoIP push registration, audio session coordination, and call directory extensions. Contents Setup Provider Configuration Incoming Call Flow Outgoing Call Flow PushKit VoIP Registration Audio Session Coordination Call Directory Extension and Manager Common Mistakes Review Checklist References Setup Project Configuration 1. Enable the Voice over IP background mode in Signing & Capabilities 2. Add the Push Notifications capability 3. For call directory extensions, add a Call Directory Extension target Key Types Type Role --- --- CXProvider Reports calls to the system, receives call actions CXCallController Requests call actions (start, end, hold, mute) CXCallUpdate Describes call metadata (caller name, video, handle) CXProviderDelegate Handles system call actions and audio session events PKPushRegistry Registers for and receives VoIP push notifications PKVoIPPushMetadata iOS 26.4+ metadata that says whether a VoIP push must be reported Provider Configuration Create a single CXProvider at app launch and keep it alive for the app lifetime. Configure it with a CXProviderConfiguration that describes your calling capabilities. Incoming Call Flow When a required VoIP call push arrives, report the incoming call to CallKit immediately. The system displays the native call UI. You must report required calls before the PushKit completion handler returns -- failure to do so causes the system to terminate your app. Handling the Answer Action Implement CXProviderDelegate to respond when the user answers: Outgoing Call Flow Use CXCallController to request an outgoing call. The system routes the request through your CXProviderDelegate. Delegate Methods for Outgoing Calls PushKit VoIP Registration Register for VoIP pushes at every app launch and send token changes to your server. …

How to use it

Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:

@skills dpearson2699/callkit

View the source on GitHub

Browse the @skills marketplace