CO

cometchat-calls

Adds real-time voice and video calling to applications across React, Flutter, Android, and iOS.

Install

mkdir -p .claude/skills/cometchat-calls && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/11489" && unzip -o skill.zip -d .claude/skills/cometchat-calls && rm skill.zip

Installs to .claude/skills/cometchat-calls

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Entry-point for adding CometChat Voice & Video Calling to any React, React Native, Angular, native Android, native iOS, or Flutter project. Detects the framework, picks standalone (calls-only) vs additive (calls on top of existing chat) mode, and routes to the per-family calls skill. Invoked by the top-level `cometchat` dispatcher when `product === "voice-video"` or `chat-messaging+voice-video`, and directly when the user asks for calls explicitly.
452 chars✓ has a “when” triggerlonger than Claude Code's old 250-char listing cap (fine on current versions)
Intermediate

Key capabilities

  • Detect the development framework (React, React Native, Angular, Android, iOS, Flutter).
  • Determine standalone (calls-only) vs. additive (calls on top of existing chat) mode.
  • Route to the appropriate per-family calls skill.
  • Manage the integration lifecycle for WebRTC calling capabilities.
  • Handle explicit user requests for calling features.

How it works

This skill acts as an entry point for CometChat Voice & Video Calling integrations. It detects the development framework and desired integration mode (standalone or additive), then dispatches to the specific per-family calls skill to handle the actual implementation.

Inputs & outputs

You give it
User request to add CometChat Voice & Video Calling, or a routing instruction from the top-level `cometchat` dispatcher.
You get back
Routing to the correct per-family calls skill with the appropriate preconditions for integration.

When to use cometchat-calls

  • Adding video calls to app
  • Implementing VoIP features
  • Integrating CallKit
  • Voice calling setup

About this skill

Ground truth: the per-platform Calls SDK + docs/calls. Official docs: https://www.cometchat.com/docs/calls/javascript/overview · Docs MCP: claude mcp add --transport http cometchat-docs https://www.cometchat.com/docs/mcp (or fetch the URL directly without MCP). Verify symbols against the installed package/source before relying on them.

Use this skill when

  • The top-level cometchat dispatcher's Step 3.0 routes here because product === "voice-video" or chat-messaging+voice-video
  • The user explicitly asks for calling: "add calls", "add video calling", "add voice calls", "set up call screen", "integrate calls SDK", "add CallKit"
  • The user is iterating on an existing chat integration and picks "Add calling" from the iteration menu (Step 7 of cometchat)

This is the entry point for every calls integration. Do NOT invoke per-family cometchat-{family}-calls skills directly — this dispatcher detects the family, picks the integration mode (standalone vs additive), and routes to the right skill with the right preconditions.

Supported families:

FamilyPer-family skillCalls SDK packageStable today?
Web (React / Next.js / React Router / Astro)cometchat-react-calls@cometchat/calls-sdk-javascriptYes
React Native (Expo + bare)cometchat-native-calls@cometchat/calls-sdk-react-nativeYes
Angular (12–15)cometchat-angular-calls@cometchat/calls-sdk-javascriptYes
Android (V5 stable)cometchat-android-v5-callscom.cometchat:calls-sdk-android:5.x (Cloudsmith)Yes — production-ready
Android (V6 GA)cometchat-android-v6-callschatuikit-{compose,kotlin}-android:6.0.+ + explicit com.cometchat:calls-sdk-android:5.0.+ peer dep (the "calls fold in" marketing is incomplete)Yes — GA 2026-05-25, but ships broken OOTB: 5 required workarounds (W1–W5), incl. the peer dep + not using CometChatCallButtons. See per-family skill.
iOS (V5 stable)cometchat-ios-callsCometChatCallsSDK (SPM / CocoaPods)Yes
Flutter (V5 stable)cometchat-flutter-v5-calls (already exists)cometchat_calls_sdk (Cloudsmith)Yes
Flutter (V6 GA)cometchat-flutter-v6-calls (already exists)Calls fold into cometchat_chat_uikit: ^6.0.1Yes — GA 2026-05-25 (one explicit MaterialApp(navigatorKey: CallNavigationContext.navigatorKey) wiring required, see per-family skill)

Status: All nine calls skills (this dispatcher + react, native, angular, ios, android-v5, android-v6, flutter-v5, flutter-v6) are authored and source-verified against each family's real SDK surface (decompiled calls-sdk-android AARs, CometChatCallsSDK.swiftinterface, @cometchat/calls-sdk-{javascript,react-native} .d.ts, and the Flutter cometchat_calls_* pub-cache). Android V5 ships 17 pre-authored sub-skills folded into cometchat-android-v5-calls/references/. Per-family caveats that are load-bearing: Android V6 needs 5 workarounds (W1–W5); Flutter V6 needs the MaterialApp(navigatorKey: CallNavigationContext.navigatorKey) wiring; iOS has no CometChatCalls.login() (auth is per-session via generateToken).

Clarification contract (ALL coding agents) — read references/asking-questions.md. Every "ask"/"AskUserQuestion" in this skill follows that contract: on any agent without a structured-question primitive, render the question as a numbered text list and WAIT for a real answer (never default/infer; auto-mode doesn't authorize skipping), map by value/label not position, and accept a free-text fallback.

Why a separate calls dispatcher

The chat dispatcher (cometchat/SKILL.md) assumes the user is adding a chat surface — its placement vocabulary, component catalog, framework skills, and verification checklist are all chat-shaped. Calls is a different surface area:

ConcernChat dispatcherCalls dispatcher (this skill)
Packageschat-uikit-* + chat-sdk-*chat-sdk-* + calls-sdk-* (no UI Kit in standalone mode)
InitChat SDK init + loginChat SDK init + login + Calls SDK init (the dual-SDK contract; on iOS ≥5.0.2 prefer file-based CometChatCalls.initFromSettings reading cometchat-settings.json — ai-agent telemetry attribution — over the raw CallAppSettings builder; see cometchat-ios-calls §2)
Placement question"Where does chat live?""Where does the call trigger live?" + "Where do call logs live?"
ComponentsConversations, MessageList, Composer, Users, GroupsCallButtons, IncomingCall, OutgoingCall, OngoingCall, CallLogs
IncomingCall mountAt chat surface (rings while user is chatting)At app root — always-rendering, listens app-wide
VoIP push (mobile)Optional add-onMandatory in standalone mode — calls without ringing isn't a product
Background lifecycleN/A unless calls feature addedRequired — Android foreground service / iOS CallKit + PushKit

The two dispatchers share cometchat-{family}-core (init + login + env + theme tokens) but diverge on everything else.

How v4.1 calls integration works

Same conversational model as the chat dispatcher — detect, gather, plan, write, verify — but with a calls lens.

Steps

Step 1 — Detect family + mode

If the user came from the top-level cometchat dispatcher, framework + credentials are already in .cometchat/config.json. Skip detection and read:

npx @cometchat/skills-cli config show --json

If invoked directly (e.g. user typed "add calls to my app"), run:

npx @cometchat/skills-cli detect --json

Same family detection as the chat dispatcher (reactjs, nextjs, react-router, astro, expo, react-native, angular, android, flutter, ios).

Pick the integration mode by looking at the project state:

SignalModeWhat runs
.cometchat/state.json exists with chat surfaces wiredAdditive — calls layered onto existing chatPer-family -calls skill in additive section. Patches the existing provider to mount IncomingCall at root. Adds call buttons inline on chat surfaces. Optional VoIP push.
.cometchat/state.json does NOT exist (or has no chat surfaces) AND product === "voice-video"Standalone — calls is the productPer-family -calls skill in standalone section. No chat UI Kit. CallButtons + IncomingCall + OngoingCall + CallLogs. VoIP push wired, not optional. /calls route or platform equivalent for call logs.
Neither — user wants calls but it's ambiguousAskAskUserQuestion: "Are you adding calling alongside an existing chat integration, or building a calling-first app?"

Step 2 — Verify credentials

Calls reuses Chat SDK credentials. If .env (web/RN), local.properties (Android), Secrets.swift (iOS), lib/cometchat_config.dart (Flutter), or src/environments/environment.ts (Angular) already has appId / region / authKey, skip credential setup.

If credentials are missing, hand back to cometchat/SKILL.md Step 2 — credential provisioning is the same regardless of product. Do not duplicate the auth flow here.

Step 3 — Gather calls-specific requirements

Step 3.0 — Calling mode (Ringing vs Session) ★

This is the first calls-specific question. The Calls SDK supports two fundamentally different UX shapes — pick before anything else, because the rest of Step 3 + the per-family scaffold differ.

Resolve in priority order:

1. Infer ONLY from explicit signals. Don't default to either mode. The user must clearly indicate one of the two flavors before you skip the prompt:

User said something like…Mode
"1:1 call", "user to user call", "phone call", "ring my friend", "call a contact", "FaceTime-like", "WhatsApp-style call"Ringing
"group call between friends", "conference call up to N people" (small group, one initiator who rings)Ringing
"meeting", "Google Meet", "Zoom-like", "scheduled meeting", "join with a link", "meeting room", "conference room", "webinar", "town hall", "virtual classroom"Session
"huddle" (Slack-style — instant join from a channel)Session
Just "calls", "calling", "integrate calls", "add calls", "set up calling", "voice/video calls" with NO further context about ringing-vs-meetingAMBIGUOUS — ASK (do NOT default)
Mixed signals ("calls and meetings", "phone calls or video conferencing")AMBIGUOUS — ASK

The bottom rows are the load-bearing ones. Generic phrases like "integrate calls" or "I want calling in my app" are NOT a signal for Ringing — they're a signal that the user hasn't told you yet. Ask.

If you DO have a clear signal, confirm with one line so the user can redirect:

"Got it — setting up Ringing (1:1 / group calls with an incoming-call screen). If you wanted meeting-room URLs instead, say so and I'll switch."

2. Use Tier 4 use-case context if available. Use-cases telegraph the mode:

Use caseMode
Telehealth provider/patient (1:1 visit)Ringing
Marketplace buyer ↔ sellerRinging
Customer support (agent ↔ customer)Ringing
Broadcast / webinar / town hallSession
Team huddle / standupSession

3. Only if you can't tell — ask. Use this prompt verbatim — do NOT rephrase, do NOT swap options. Option 1 is "Session"; option 2 is "Ringing":

  • question: "What kind of calling experience are you building?"
  • header: "Calling mode"
  • multiSelect: false
  • options (display in this exact order — Session FIRST, Ringing SECOND):
    1. label: "Session — meeting / conference room", description: "Multiple users join the same session by ID or link. No ringing. Like Google Meet, Zoom, or a Slack huddle. Examples: scheduled meetings, webinars, team huddles, classroom calls."
    2. label: "Ringing — 1:1 or group calls", description: "O

Content truncated.

When not to use it

  • When invoking per-family `cometchat-{family}-calls` skills directly.
  • When the project has no CometChat integration at all and the user picks additive mode by mistake.
  • For AI-Agent or BYO-Agent flows.

Limitations

  • Do NOT invoke per-family `cometchat-{family}-calls` skills directly.
  • This dispatcher does NOT cover the actual code; per-family `-calls` skills write the integration.
  • This dispatcher does NOT cover AI-Agent or BYO-Agent flows.

How it compares

This skill centralizes the initial routing and setup for CometChat calls across multiple platforms and integration modes, preventing direct invocation of specific family skills and ensuring consistent preconditions, unlike manually selectin

Compared to similar skills

cometchat-calls side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
cometchat-calls (this skill)01moReviewIntermediate
webf-native-plugin-dev27moReviewAdvanced
webf-native-plugins17moReviewAdvanced
podcast-generation13moReviewAdvanced

Try saying

Example prompts that trigger this skill in your AI assistant.

Search skills

Search the agent skills registry