Agent skill

Cometchat React Native Calls

by cometchat in cometchat/cometchat-skills

Voice and video calling in the CometChat React Native UI Kit v5 — the RN calls SDK, the native permissions and version floors it needs, and why installing the package is itself the enable switch.

MITAuto-check passedMobile

Install Cometchat React Native Calls

skills CLI
$ npx skills add cometchat/cometchat-skills --skill cometchat-react-native-calls -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install cometchat/cometchat-skills cometchat-react-native-calls --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/cometchat/cometchat-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/cometchat-react-native-calls .claude/skills/cometchat-react-native-calls && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
cometchat-react-native-calls
GitHub stars
129
Token cost
~2.6k tokens
SKILL.md length
660 words
Files
1
Skills in repo
97
Repo updated
First seen
Licence
MIT

At a glance

Voice and video calling in the CometChat React Native UI Kit v5 — the RN calls SDK, the native permissions and version floors it needs, and why installing the package is itself the enable switch.

  • Works in 6 steps: Installing the web calls SDK — wrong… → Emitting setCallingEnabled(true) — does… → CometChatIncomingCall inside a screen —… → …
  • Tasks that involve Cross-platform mobile apps
  • SKILL.md covers Companion skills (read first), Use this skill when, Prerequisites & install and Enabling calls — there is no…, plus 7 more sections
  • Calls npm

What it does

Cometchat React Native Calls is an agent skill from cometchat/cometchat-skills. Voice and video calling in the CometChat React Native UI Kit v5 — the RN calls SDK, the native permissions and version floors it needs, and why installing the package is itself the enable switch. Triggers: add video calling React Native, CometChat voice call RN, incoming call screen RN, calls not ringing React Native, webrtc CometChat.

Its SKILL.md is about 2.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts. Compatibility notes: React Native =0.77; @cometchat/chat-uikit-react-native ^5.4.0; @cometchat/calls-sdk-react-native ^5.0.4; Android minSdk 24; iOS 13.0

It sits in Mobile, covering Cross-platform mobile apps and Design systems. It works with CometChat, React Native, Android and iOS. The repository describes itself as: Add CometChat chat & messaging and voice & video calls to any React, Next.js, React Native, Angular, Android, iOS, or Flutter project through your AI coding agent. Works with… The licence is MIT.

When your agent uses it

  • Tasks that involve Cross-platform mobile apps
  • Tasks that involve Design systems

Example prompts

  • “/cometchat-react-native-calls”

Requirements

  • Node.js
  • Compatibility (from SKILL.md): React Native >=0.77; @cometchat/chat-uikit-react-native ^5.4.0; @cometchat/calls-sdk-react-native ^5.0.4; Android minSdk 24; iOS 13.0

Workflow steps

6 steps, taken from the first numbered list in SKILL.md.

  1. Installing the web calls SDK — wrong package.
  2. Emitting setCallingEnabled(true) — does not exist; installation is the switch.
  3. CometChatIncomingCall inside a screen — calls only ring there.
  4. Skipping pod install / rebuild — crash on first call, not at startup.
  5. Below the version floors — build failure, not a runtime message.
  6. Signing off from a simulator — no media capture.

What it can do on your machine

Read from SKILL.md and the folder at commit 911b108. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • npm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use npm, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    React Native >=0.77; @cometchat/chat-uikit-react-native ^5.4.0; @cometchat/calls-sdk-react-native ^5.0.4; Android minSdk 24; iOS 13.0

    From compatibility in the SKILL.md frontmatter.

Context cost

Cometchat React Native Calls loads about 2.6k tokens when it runs. Until then it costs about 92 tokens; SKILL.md has 660 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~92
When it runs · the whole SKILL.md, loaded when a task matches
~2.6k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from cometchat/cometchat-skills at commit 911b108, republished under its MIT licence (© cometchat). 660 words, ~2,557 tokens.

Download SKILL.mdSave it as .claude/skills/cometchat-react-native-calls/SKILL.md (or your agent's skills folder).
name
cometchat-react-native-calls
description
Voice and video calling in the CometChat React Native UI Kit v5 — the RN calls SDK, the native permissions and version floors it needs, and why installing the package is itself the enable switch. Triggers: add video calling React Native, CometChat voice call RN, incoming call screen RN, calls not ringing React Native, webrtc CometChat.
compatibility
React Native >=0.77; @cometchat/chat-uikit-react-native ^5.4.0; @cometchat/calls-sdk-react-native ^5.0.4; Android minSdk 24; iOS 13.0
license
MIT
metadata.author
CometChat
metadata.version
1.0.0
metadata.tags
chat cometchat react-native calls voice video webrtc permissions

Ground truth: @cometchat/calls-sdk-react-native@5 + catalog rn-calls-v5.json (58 symbols) + features.rn-v5.json → voice-video-calls. Docs: /ui-kit/react-native/calling-integration · call-features · call-buttons · call-logs · incoming-call · outgoing-call.

Companion skills (read first)

  • cometchat-react-native-core — install, provider chain, init→login→render. Assumed, not repeated here.

Use this skill when

  • "add voice/video calling" · "incoming call screen" · "calls aren't ringing" · "call logs"

Prerequisites & install

⚠️ React Native has its OWN calls SDK. @cometchat/calls-sdk-javascript is the web package and will not work here.

bash
npm install @cometchat/calls-sdk-react-native@5
# 6 REQUIRED peer deps — the SDK's declared peerDependencies. Versions are pinned; do NOT float them.
npm install @react-native-async-storage/async-storage@^2.1.2 react-native-background-timer@^2.4.1 \
  react-native-performance@^5.1.2 react-native-svg@^15.12.0 react-native-url-polyfill@2.0.0 \
  react-native-webrtc@124.0.7
# ⚠️ react-native-performance MUST stay 5.x — 6.x is published, and a floated `^6` makes every later
#    `npm install` in the app fail with ERESOLVE. react-native-url-polyfill + react-native-performance
#    are BUNDLE-critical: the UIKit does a module-scope require() of the calls SDK, so Metro resolves
#    them even for a chat-only build — omit either and the bundle fails with "Unable to resolve module".
#    (NOT react-native-community/netinfo or react-native-callstats — those are not declared peers.)
cd ios && pod install && cd ..     # bare RN;  Expo: npx expo run:ios

Enabling calls — there is no flag

Installing the package IS the switch. The kit does a try { require("@cometchat/calls-sdk-react-native") } at startup; if it resolves, calling is enabled automatically.

React's setCallingEnabled(true) does not exist in this kit — do not emit it. There is likewise no opt-out on the initFromSettings golden path — the CometChatSettings file/object has no calling field, and CometChatUIKit.initFromSettings() never reads one. disableCalling: true exists only as a field on the UIKitSettings object you pass to the legacy CometChatUIKit.init(uiKitSettings) — so to disable calling while the package stays installed you must switch to that init() entry point (or simply not install the calls SDK).

Consequence worth knowing: a half-finished install (package added, pods not run) can leave calling "enabled" in JS while the native side is missing — which surfaces as a crash on first call rather than a clear error at startup.

Native floors — below these it will not build

PlatformRequirementWhere
AndroidminSdkVersion 24android/app/build.gradle
iOSIPHONEOS_DEPLOYMENT_TARGET 13.0Xcode target or a Podfile post_install

Permissions — camera and microphone

Bare RN — ios/<App>/Info.plist:

xml
<key>NSCameraUsageDescription</key><string>Camera access for video calls</string>
<key>NSMicrophoneUsageDescription</key><string>Microphone access for voice/video calls</string>

Android: CAMERA · RECORD_AUDIO · MODIFY_AUDIO_SETTINGS · BLUETOOTH_CONNECT (Android 12+, Bluetooth audio routing) in AndroidManifest.xml.

Expo — the same values go in app.json (ios.infoPlist, android.permissions), then rebuild. Never hand-edit the generated native projects.

Components (from catalogs/rn-v5.json)

ComponentPurpose
CometChatCallButtonsaudio/video triggers — the message header shows these by default
CometChatIncomingCallthe ring screen — mount once above the navigator
CometChatOutgoingCallthe dialling screen
CometChatOngoingCallthe in-call surface (no React equivalent)
CometChatCallLogscall history list

CometChatIncomingCall mounted inside one screen means calls only arrive while that screen is open — the commonest "calls don't ring" cause after a missing permission.

The table above is not enough to copy — wire it:

tsx
// App.tsx — IncomingCall sits ABOVE the navigator so a call rings on any screen.
function App() {
  const incomingCall = useRef<CometChat.Call | null>(null);
  const [callReceived, setCallReceived] = useState(false);

  useEffect(() => {
    const listenerId = "APP_CALL_LISTENER";
    CometChat.addCallListener(
      listenerId,
      new CometChat.CallListener({
        onIncomingCallReceived: (call) => {
          incomingCall.current = call;
          setCallReceived(true);
        },
        onOutgoingCallRejected: () => setCallReceived(false),
        onIncomingCallCancelled: () => setCallReceived(false),
      }),
    );
    return () => CometChat.removeCallListener(listenerId);   // or it fires after unmount
  }, []);

  return (
    <GestureHandlerRootView style={{ flex: 1 }}>
      <NavigationContainer>{/* … */}</NavigationContainer>
      {callReceived && incomingCall.current ? (
        <CometChatIncomingCall
          call={incomingCall.current}
          onDecline={() => { incomingCall.current = null; setCallReceived(false); }}
        />
      ) : null}
    </GestureHandlerRootView>
  );
}
tsx
// Call triggers — the message header renders these by default; mount them yourself only
// when you build a custom header. onError is the ONLY callback: success is an event
// (ccOutgoingCall), not a promise.
<CometChatCallButtons user={user} group={group} onError={(e) => console.error(e)} />

// Dialling screen — driven by the Call object you created.
{call && <CometChatOutgoingCall call={call} />}

// Call history list. Detail screens do NOT ship (see below).
<CometChatCallLogs onItemPress={(log) => openCallDetail(log)} />
tsx
// The in-call surface. sessionID comes from the accepted Call; callSettingsBuilder is a
// CometChatCalls builder, NOT a chat-SDK one.
<CometChatOngoingCall
  sessionID={sessionId}
  callSettingsBuilder={callSettings}
  onError={(e) => console.error(e)}
/>

DOCS GAP (RN-G15 — narrowed upstream, verified 2026-09-09): CometChatOngoingCall is exported by the RN kit and is now listed on /ui-kit/react-native/call-features (the Components row), but it still has no dedicated props page — only Incoming / Outgoing / Buttons / Logs get their own pages. The fence above is a STOPGAP built from the kit's own types — replace it once a props page ships. Flagged for the docs team; do not conclude the component is unavailable on RN.

Show full SKILL.md (251 more words)Show less

Call logs: the list ships, the detail screens do not

Kit v5 removed CometChatCallLogDetails / History / Participants / Recordings. For a custom detail view, fetch the history yourself with the Calls-SDK CallLogRequestBuilder — a static on CometChatCalls, reachable only from @cometchat/calls-sdk-react-native:

ts
// Call history — CometChatCalls.CallLogRequestBuilder from the CALLS SDK.
// There is NO CallLogRequestBuilder on the Chat SDK (@cometchat/chat-sdk-react-native).
import { CometChat } from "@cometchat/chat-sdk-react-native";
import { CometChatCalls } from "@cometchat/calls-sdk-react-native";
// fetchNext() REJECTS without an auth token ("`Auth Token` is required") — no fallback. Pass the
// logged-in user's token, exactly as the kit's own CometChatCallLogs does.
const authToken = (await CometChat.getLoggedinUser())?.getAuthToken() ?? "";
const req = new CometChatCalls.CallLogRequestBuilder().setLimit(30).setAuthToken(authToken).build();
const logs = await req.fetchNext();

// Transcript opt-in — same builder + token. setHasTranscriptions(true) filters to transcribed calls
// AND makes the server attach each call's transcripts to the log.
const treq = new CometChatCalls.CallLogRequestBuilder().setLimit(30).setAuthToken(authToken).setHasTranscriptions(true).build();

RN-G9 (verified 2026-09-10 vs @cometchat/calls-sdk-react-native@5): CallLogRequestBuilder is a static on CometChatCalls (calls SDK) — new CometChatCalls.CallLogRequestBuilder(). It does not exist on the Chat SDK: there is no CometChat.CallLogRequestBuilder in @cometchat/chat-sdk-react-native (any version). Use the Calls-SDK builder for history, always with .setAuthToken(...) (without it fetchNext() rejects — verified in @cometchat/calls-sdk-react-native@5.0.5); add setHasTranscriptions(true) only when you need transcripts. It is reachable as a static on the module, not as a bare named import.

Verification requires a real device

Simulators and emulators cannot capture camera or microphone. A green simulator run proves the screens render, not that a call connects. Media, permissions and ringing must be checked on hardware.

Common pitfalls

  1. Installing the web calls SDK — wrong package.
  2. Emitting setCallingEnabled(true) — does not exist; installation is the switch.
  3. CometChatIncomingCall inside a screen — calls only ring there.
  4. Skipping pod install / rebuild — crash on first call, not at startup.
  5. Below the version floors — build failure, not a runtime message.
  6. Signing off from a simulator — no media capture.

Verify it works

  • Every emitted symbol is in catalogs/rn-v5.json or catalogs/rn-calls-v5.json.
  • npm run verify:fences:rn-v5 is green.
  • On two real devices: call connects both ways, permission prompts appear on first use, the incoming screen shows while the app is on any tab, and the call log records the call.

© cometchat, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/cometchat-react-native-calls of cometchat/cometchat-skills.

Open the folder on GitHubat commit 911b108

Compare with similar skills

Cometchat React Native Calls next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Cometchat React Native Calls compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Cometchat React Native Calls this skillcometchat/cometchat-skills129—~2.6kAutomated safety check: PassMIT
Rnn Codebasewix/react-native-navigation13k—~2kAutomated safety check: PassMIT
Expo Tailwind SetupCherryHQ/cherry-studio-app4k8 repos~3kAutomated safety check: PassMIT
Screenmapaleqsio/screenmap239—~7.2kAutomated safety check: PassMIT
Expo Brownfield Integrationmweinbach/agent-coworker1562 repos~900Automated safety check: NotesCustom licence
Simulator Audio E2Ehyochan/react-native-nitro-sound961—~1.1kAutomated safety check: PassMIT

Similar skills

  • Rnn Codebase

    wix/react-native-navigation

    Official

    Navigate and work with the react-native-navigation (RNN) codebase.

    13k GitHub stars~2k tokensUpdated yesterday
    MobileAuto-check passed
  • Expo Tailwind Setup

    CherryHQ/cherry-studio-app

    Set up Tailwind CSS v4 in Expo with react-native-css and NativeWind v5 for universal styling

    4k GitHub starsUsed in 8 repos~3k tokens
    MobileAuto-check passed
  • Screenmap

    aleqsio/screenmap

    Generate a visual navigation map of an Expo / React Native or NativeScript app.

    239 GitHub stars~7.2k tokensUpdated 2 days ago
    MobileAuto-check passed
  • Expo Brownfield Integration

    mweinbach/agent-coworker

    Helps add Expo and React Native to an existing native iOS or Android app, and choose between a prebuilt AAR or XCFramework and a fully integrated build.

    156 GitHub starsUsed in 2 repos~900 tokens
    MobileAuto-check: notes
  • Simulator Audio E2E

    hyochan/react-native-nitro-sound

    Build and run repeatable react-native-nitro-sound recorder/player regression tests on an iOS Simulator or Android emulator, with explicit virtual-device selection, microphone permission, Maestro…

    961 GitHub stars~1.1k tokensUpdated 7 days ago
    MobileAuto-check passed
  • Agent Device

    gronxb/hot-updater

    Automates interactions for iOS simulators/devices and Android emulators/devices.

    1.8k GitHub stars~3.9k tokensUpdated today
    MobileAuto-check passed

More from cometchat/cometchat-skills

All 97 skills in this repo
  • CometChat Android Calls SDK v5

    cometchat/cometchat-skills

    Adds voice and video calling to an Android app in Kotlin with the headless CometChat Calls SDK v5, covering meeting-style rooms, 1:1 ringing calls, call logs and recording.

    129 GitHub stars~5.2k tokensUpdated 2 days ago
    Auto-check passed
  • CometChat Android v5 Headless SDK

    cometchat/cometchat-skills

    Builds chat on Android with your own UI against the headless CometChat Chat SDK v5, covering install, Jetifier conflicts, credentials and init-before-login ordering.

    129 GitHub stars~4k tokensUpdated 2 days ago
    Auto-check passed
  • CometChat Angular Component Picker

    cometchat/cometchat-skills

    Picks and customizes CometChat's Angular UI Kit components by their verified component list, exact input and output event names, and the surfaces that have no kit component at all.

    129 GitHub stars~2.6k tokensUpdated 2 days ago
    Auto-check passed
  • CometChat Angular Features

    cometchat/cometchat-skills

    Enables or builds CometChat features such as polls, reactions, smart replies and pinned messages in an Angular app, first classifying how much client code each one needs.

    129 GitHub stars~2.6k tokensUpdated 2 days ago
    Auto-check passed
  • CometChat Angular Chat Placement

    cometchat/cometchat-skills

    Decides where CometChat chat UI goes in an Angular app: a dedicated route, a dashboard panel, a support widget or the full multi-pane app, with thread and search panels.

    129 GitHub stars~2.2k tokensUpdated 2 days ago
    Auto-check passed
  • Cometchat iOS V5 SDK

    cometchat/cometchat-skills

    Add voice & video calling to any iOS app FROM SCRATCH with the headless CometChat Calls SDK v5 (CometChatCallsSDK, via Swift Package Manager) — no UI Kit.

    129 GitHub stars~5.2k tokensUpdated 2 days ago
    Auto-check passed

Categories

Questions about Cometchat React Native Calls

What does Cometchat React Native Calls do?

Voice and video calling in the CometChat React Native UI Kit v5 — the RN calls SDK, the native permissions and version floors it needs, and why installing the package is itself the enable switch. Cometchat React Native Calls is an agent skill from cometchat/cometchat-skills. Voice and video calling in the CometChat React Native UI Kit v5 — the RN calls SDK, the native permissions and version floors it needs, and why installing the package is itself the enable switch.

When should I use Cometchat React Native Calls?

Cometchat React Native Calls fits situations like: tasks that involve Cross-platform mobile apps; tasks that involve Design systems.

How do I install Cometchat React Native Calls in Claude Code?

Run `npx skills add cometchat/cometchat-skills --skill cometchat-react-native-calls -a claude-code`. Or copy the skill folder (skills/cometchat-react-native-calls in cometchat/cometchat-skills) into .claude/skills/cometchat-react-native-calls in your project. Claude Code loads it when a task matches its description.

How do I install Cometchat React Native Calls in Codex?

Run `npx skills add cometchat/cometchat-skills --skill cometchat-react-native-calls -a codex`. Or copy the skill folder (skills/cometchat-react-native-calls in cometchat/cometchat-skills) into .agents/skills/cometchat-react-native-calls in your project. Codex loads it when a task matches its description.

Can I use Cometchat React Native Calls in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add cometchat/cometchat-skills --skill cometchat-react-native-calls -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/cometchat-react-native-calls, .gemini/skills/cometchat-react-native-calls, .github/skills/cometchat-react-native-calls and .opencode/skills/cometchat-react-native-calls in your project.

What does Cometchat React Native Calls need to run?

Going by SKILL.md and its folder, Cometchat React Native Calls needs the command-line tools its instructions call (npm). Our summary lists: Node.js. Compatibility (from SKILL.md): React Native >=0.77; @cometchat/chat-uikit-react-native ^5.4.0; @cometchat/calls-sdk-react-native ^5.0.4; Android minSdk 24; iOS 13.0.

Does Cometchat React Native Calls access the network?

SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Cometchat React Native Calls safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Cometchat React Native Calls use?

Cometchat React Native Calls is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Cometchat React Native Calls use?

About 2.6k tokens (SKILL.md is roughly 10k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Cometchat React Native Calls?

Skills that share tags, products or a category with Cometchat React Native Calls: Rnn Codebase (wix/react-native-navigation, 13k stars), Expo Tailwind Setup (CherryHQ/cherry-studio-app, 4k stars), Screenmap (aleqsio/screenmap, 239 stars) and Expo Brownfield Integration (mweinbach/agent-coworker, 156 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Cometchat React Native Calls?

cometchat (a GitHub organization) maintains it in cometchat/cometchat-skills, which has 129 GitHub stars. The repository holds 97 skills in this directory. The repository was last updated on October 5, 2026.

Source: cometchat/cometchat-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.