callkit — скилл для Claude Code: вызовы VoIP на CallKit
Учит агента собирать VoIP-звонки в iOS-приложении: системный экран вызова, пуши через PushKit, аудиосессия и блокировка номеров.
npx skills add dpearson2699/swift-ios-skills --skill callkit -a claude-codeЧто делает callkit
Скилл разбирает, как встроить в iOS-приложение VoIP-звонки, которые показывает системный экран вызова, а не самодельный. Внутри — CXProvider и CXCallController, входящий и исходящий сценарии, регистрация VoIP-пушей через PushKit, согласование аудиосессии и расширение Call Directory для определения номера и блокировки.
Материал идёт по задачам: сначала настройка проекта, потом конфигурация провайдера, оба потока звонка, пуши, аудио, директория. Код на Swift, с одним общим CXProvider, который живёт весь цикл приложения. Таблица для iOS 26.4+ объясняет PKVoIPPushMetadata.mustReport: при true о звонке надо сообщить системе до того, как обработчик пуша вернёт управление, при false отчёт не нужен. Есть раздел с частыми ошибками и чек-лист для ревью.
До первой строки кода нужны три вещи в проекте: background mode Voice over IP, capability Push Notifications и отдельная цель Call Directory Extension, если планируется блокировка. Пропустить отчёт об обязательном входящем звонке нельзя: система завершит приложение, а повторные промахи могут прекратить доставку VoIP-пушей.
Какие задачи решает
- показать входящий VoIP-звонок в системном экране вызова
- зарегистрироваться на VoIP-пуши и отправить токен на сервер
- запросить исходящий звонок через
CXCallController - привязать аудиосессию к ответу, сбросу и завершению вызова
- добавить определение номера и блокировку через Call Directory Extension
Примеры запросов агенту
- Покажи, как зарегистрировать VoIP-пуши через
PKPushRegistryи отправить токен на бэкенд. - Собери входящий сценарий:
CXProviderсообщает о вызове, аCXAnswerCallActionвыполняется после подключения к серверу. - Проверь мой
CXProviderDelegateпо разделу с частыми ошибками.
Как установить callkit
1Через Skills CLI (Vercel)
npx skills add dpearson2699/swift-ios-skills --skill callkit -a claude-code2Вручную: положить файлы
~/.claude/skills/callkit/SKILL.mdПапка скилла целиком; для одного проекта — .claude/skills/callkit/
1Через Skills CLI (Vercel)
npx skills add dpearson2699/swift-ios-skills --skill callkit -a codex2Вручную: положить файлы
.agents/skills/callkit/SKILL.mdДля всех проектов — ~/.agents/skills/
1Через Skills CLI (Vercel)
npx skills add dpearson2699/swift-ios-skills --skill callkit -a cursor2Вручную: положить файлы
.cursor/skills/callkit/SKILL.mdCursor читает и .agents/skills/, и .claude/skills/
1GitHub CLI
gh skill install dpearson2699/swift-ios-skills callkit2Вручную: положить файлы
.github/skills/callkit/SKILL.md1Через Skills CLI (Vercel)
npx skills add dpearson2699/swift-ios-skills --skill callkit -a gemini-cli2Командой платформы
gemini skills install https://github.com/dpearson2699/swift-ios-skills --path skills/callkitВручную: положить файлы
.devin/skills/callkit/SKILL.mdСтарый путь .windsurf/skills/ тоже читается
Через Skills CLI (Vercel)
npx skills add dpearson2699/swift-ios-skills --skill callkit -a opencodeClaude.ai
Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills
По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов
Вопросы о callkit
Как установить callkit в Claude Code?
Выполните npx skills add dpearson2699/swift-ios-skills --skill callkit -a claude-code, файл скилла появится по пути ~/.claude/skills/callkit/SKILL.md.
Что делает callkit?
Помогает агенту писать код VoIP-звонков на CallKit и PushKit: провайдер, контроллер вызовов, обработка действий пользователя, аудио и расширение для блокировки номеров.
Что будет, если не отчитаться о входящем звонке до возврата из обработчика пуша?
Система завершит приложение. Если промахи повторяются, доставка VoIP-пушей может остановиться совсем.