Agent skill

Cometchat Flutter V5 SDK

by cometchat in cometchat/cometchat-skills

Add voice & video calling to any Flutter app FROM SCRATCH with the headless CometChat Calls SDK v5 (cometchatcallssdk, pub.dev) — no UI Kit.

MITAuto-check: warningsMobile

Install Cometchat Flutter V5 SDK

The automated check flagged lines worth reading first. See the safety section below.

skills CLI
$ npx skills add cometchat/cometchat-skills --skill cometchat-flutter-v5-sdk -a claude-code

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

GitHub CLI
$ gh skill install cometchat/cometchat-skills cometchat-flutter-v5-sdk --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-flutter-v5-sdk .claude/skills/cometchat-flutter-v5-sdk && 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-flutter-v5-sdk
GitHub stars
129
Token cost
~5.3k tokens
SKILL.md length
2,046 words
Files
5 (incl. references)
Skills in repo
97
Repo updated
First seen
Licence
MIT

At a glance

Add voice & video calling to any Flutter app FROM SCRATCH with the headless CometChat Calls SDK v5 (cometchatcallssdk, pub.dev) — no UI Kit.

  • Tasks that involve Cross-platform mobile apps
  • SKILL.md covers Companion skills (read first), Use this skill when, Prerequisites & install and Init & login ordering (BAKED —…, plus 9 more sections
  • Calls flutter, npx and node
  • Tasks that involve Design systems

What it does

Cometchat Flutter V5 SDK is an agent skill from cometchat/cometchat-skills. Add voice & video calling to any Flutter app FROM SCRATCH with the headless CometChat Calls SDK v5 (cometchatcallssdk, pub.dev) — no UI Kit. init→login→generateCallToken→joinSession, which hands back a Flutter Widget? you mount in your tree; CallSession listeners, in-call actions (mute/video/layout/record/PiP/raise-hand), meet-style session rooms AND 1:1 ringing (Chat SDK signaling + Calls SDK media). Triggers: 'add calling from scratch flutter', 'standalone video call dart', 'headless calls sdk flutter', 'build…

Its SKILL.md is about 5.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 5 other files, including reference files (for example `references/doc-corrections.md`, `references/docs-map.md` and `references/platform-notes.md`). Compatibility notes: Flutter =2.5.0, Dart =2.17.0 <4.0.0 · Android minSdk 26 (Android 8.0) · iOS 15.1. cometchatcallssdk ^5.0.3 — resolves to 5.0.7, which this skill is verified…

It sits in Mobile, covering Cross-platform mobile apps and Design systems. It works with Flutter, CometChat and Dart. 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

  • “add calling from scratch flutter”
  • “standalone video call dart”
  • “headless calls sdk flutter”
  • “/cometchat-flutter-v5-sdk”

Requirements

  • Node.js
  • Compatibility (from SKILL.md): Flutter >=2.5.0, Dart >=2.17.0 <4.0.0 · Android minSdk 26 (Android 8.0) · iOS 15.1. cometchat_calls_sdk ^5.0.3 — resolves to 5.0.7, which this skill is verified against. 1:1 ringing also needs cometchat_sdk v5 (>=5.0.6; the pinned harness resolves 5.0.7 — the signaling symbols are identical across both) for signaling.

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:

    • flutter
    • npx
    • node

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

  • Network

    No URLs in SKILL.md. Its commands use npx, 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

    Flutter >=2.5.0, Dart >=2.17.0 <4.0.0 · Android minSdk 26 (Android 8.0) · iOS 15.1. cometchat_calls_sdk ^5.0.3 — resolves to 5.0.7, which this skill is verified against. 1:1 ringing also needs cometchat_sdk v5 (>=5.0.6; the pinned harness resolves 5.0.7 — the signaling symbols are identical across both) for signaling.

    From compatibility in the SKILL.md frontmatter.

Context cost

Cometchat Flutter V5 SDK loads about 5.3k tokens when it runs, and up to ~13k if it reads all its reference files. Until then it costs about 167 tokens; SKILL.md has 2,046 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~167
When it runs · the whole SKILL.md, loaded when a task matches
~5.3k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~13k

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: warnings

The automated check found patterns that need a careful read before installing.

  • WarningContains instruction-override wording (e.g. “without asking the user”)SKILL.md:181
    creenShare()` COMPILES and dispatches — do NOT tell the user local screen share is impossible or "invented." The **`/cal

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). 2,046 words, ~5,278 tokens.

Download SKILL.mdSave it as .claude/skills/cometchat-flutter-v5-sdk/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.
name
cometchat-flutter-v5-sdk
description
Add voice & video calling to any Flutter app FROM SCRATCH with the headless CometChat Calls SDK v5 (`cometchat_calls_sdk`, pub.dev) — no UI Kit. init→login→generateCallToken→joinSession, which hands back a Flutter `Widget?` you mount in your tree; CallSession listeners, in-call actions (mute/video/layout/record/PiP/raise-hand), meet-style session rooms AND 1:1 ringing (Chat SDK signaling + Calls SDK media). Triggers: 'add calling from scratch flutter', 'standalone video call dart', 'headless calls sdk flutter', 'build my own call screen flutter', 'meeting room join by session id flutter', 'one-on-one ringing call without uikit flutter'.
compatibility
Flutter >=2.5.0, Dart >=2.17.0 <4.0.0 · Android minSdk 26 (Android 8.0) · iOS 15.1. cometchat_calls_sdk ^5.0.3 — resolves to 5.0.7, which this skill is verified against. 1:1 ringing also needs cometchat_sdk v5 (>=5.0.6; the pinned harness resolves 5.0.7 — the signaling symbols are identical across both) for signaling.
license
MIT
metadata.author
CometChat
metadata.version
1.0.0
metadata.tags
cometchat calls sdk v5 headless voice video webrtc dart flutter calling standalone

Ground truth: cometchat_calls_sdk 5.0.7 from pub.dev + catalog flutter-calls-v5.json (the closed symbol list — 59 COMPILER-VERIFIED symbols; every type below is in it). Catalog built from the PUBLISHED package; at 5.0.7 it matches the calls-core monorepo exactly — but never infer that from a version string (references/docs-map.md § "Upstream"). Official docs: /calls/flutter/** = v5 · Docs MCP. Fetch exact SessionSettings fields, event names and signatures from the docs (references/docs-map.md) — never memory. ⚠️ The live pages carry ~56 symbols that DO NOT COMPILE, including the entire documented token flow — see "Doc corrections" below; prefer THIS skill's names over the page's. APPEND to the user's app — additive wiring only. This is the HEADLESS path (no UI Kit); for the prebuilt drop-in call UI use cometchat-flutter-v6-calls instead.

Companion skills (read first)

  • Standalone/headless entry — this skill owns its own package (the Calls SDK) and has no -core sibling; self-contained for meet-style calling.
  • For 1:1 RINGING only it also drives the Chat SDK (cometchat_sdk v5) for signaling — signatures fetched via references/docs-map.md (§ "1:1 RINGING"). It does NOT depend on the Flutter UI Kit.
  • Prefer the UI Kit instead? If the app also wants chat and a prebuilt call UI, use cometchat-flutter-v6-core + cometchat-flutter-v6-calls — not this skill.

Use this skill when

"add calling from scratch / without the UI Kit", "standalone voice/video on Flutter", "build my own call screen", "headless calls SDK", "meeting-room join by session id", "one-on-one ringing". Precondition: the caller chose the from-scratch / standalone path (the "add calling" router asks this). If they want the prebuilt call UI, route to cometchat-flutter-v6-calls.

Prerequisites & install

yaml
# pubspec.yaml
dependencies:
  cometchat_calls_sdk: ^5.0.7   # verified against 5.0.7

then flutter pub get.

1:1 ringing additionally needs the Chat SDK (cometchat_sdk v5) for signaling.

Permissions — REQUIRED or the call dies on the first permission prompt.

  • android/app/src/main/AndroidManifest.xml: INTERNET, CAMERA, RECORD_AUDIO, MODIFY_AUDIO_SETTINGS, ACCESS_NETWORK_STATE. On API 23+ you must ALSO request camera + mic at runtime — the manifest alone is not enough, and this is the single most common "the SDK is broken" report on Android.
  • ios/Runner/Info.plist: NSCameraUsageDescription + NSMicrophoneUsageDescription.
  • Android minSdkVersion 26, iOS platform :ios, '15.1' — the real 5.0.7 floors. The docs say 24 and iOS 12; both fail at BUILD time. iOS moved 13.0 → 15.1 in 5.0.7, so an app can break on a routine pub upgrade.

Credentials: App ID · Region · Auth Key (dev only), via the CLI — npx @cometchat/skills-cli@3 auth login → provision use --app-id <id> --json (@3 pins the CLI major that matches the v5 skills). Mint auth tokens server-side for production; never ship the Auth Key.

Init & login ordering (BAKED — invariant)

Init (once, must succeed) → CometChatCalls.login(...) → then generateCallToken / joinSession / listeners. Nothing joins before init+login resolve. CometChatCalls.isInitialized is the guard.

  • DEFAULT to CometChatCalls.initFromSettings(onSuccess:, onError:) — the ai-agent / telemetry-attributed path (persists integrationSource="ai-agent").

    <!-- STOPGAP: source-derived (calls-core/calls-sdk-flutter), NOT in the public docs.
         `initFromSettings` is `@nodoc` and ai-agent-only. DOCS-BACKLOG F4/D4 closed it WONTFIX —
         it is to STAY hidden, so this stopgap is permanent, not pending a docs fix. -->

    It takes no settings argument: it reads cometchat-settings.json through rootBundle, so the file must sit at the project root and be registered as a Flutter asset:

    yaml
    flutter:
      assets:
        - cometchat-settings.json

    Root keys appId + region; optional callsSDK → adminHost/clientHost/callsHost. No Auth Key — the Calls SDK reads nothing else from this file (the key is a login() argument). Registering it under flutter: assets: is the ONLY step; no Xcode or Gradle change, because it is read through rootBundle. Miss the assets: entry and init fails with settings-file-not-found — a quiet callback, not a crash.

  • Fallback (public-doc path):

    dart
    CallAppSettings s = (CallAppSettingBuilder()..appId = appId..region = region).build();
    CometChatCalls.init(s, onSuccess: (String m) {}, onError: (CometChatCallsException e) {});

    Note the Dart cascade (..appId =) — these are fields, not setX() methods. CallAppSettingBuilder is singular (no s).

  • ⚠️ Never do both. A builder init AFTER initFromSettings re-attributes the app to "manual" and the ai-agent telemetry is lost.

  • Login: CometChatCalls.login(uid:, authKey:, onSuccess:, onError:) (dev) or CometChatCalls.loginWithAuthToken(authToken:, onSuccess:, onError:) (production). Check await CometChatCalls.getLoggedInUser() first — it returns Future<User?> and the SDK keeps the session, so logging in twice is wasted work. Both onSuccess callbacks hand you a NULLABLE User? — the docs dereference it unguarded; do not copy that.

Two build modes (BAKED — the router picks one)

  • Meet-style (session room) — Calls SDK ONLY, no Chat SDK. Everyone joining the same session id lands in the same call.
  • 1:1 ringing — Chat SDK signals, Calls SDK carries media. Needs cometchat_sdk v5 as well. Fetch signatures via references/docs-map.md § "1:1 RINGING".

⚠️ The Flutter fork: joinSession returns a WIDGET

Every other platform mounts the call into a container you hand it. Flutter hands the call back to you as a Widget? and mounts nothing:

dart
Widget? _callWidget;

CometChatCalls.joinSession(
  sessionId: sessionId,
  sessionSettings: settings,
  onSuccess: (Widget? w) => setState(() => _callWidget = w),   // ← THIS is the render step
  onError: (CometChatCallsException e) { /* surface it */ },
);

@override
Widget build(BuildContext c) => Scaffold(body: _callWidget ?? const CircularProgressIndicator());

An emit that ignores the onSuccess argument joins the call successfully and shows nothing — audio flows, no video, no controls. It reads as a broken SDK and it is the #1 Flutter-specific failure. There is no container parameter and no zero-bounds trap; there is only "did you put the widget in the tree".

SDK method map (BAKED closed list — from the catalog; signatures → FETCH from docs)

  • Lifecycle: CometChatCalls.initFromSettings · CometChatCalls.init · CallAppSettingBuilder → CallAppSettings · CometChatCalls.isInitialized · login · loginWithAuthToken · logout · getLoggedInUser → User?
  • Session: CometChatCalls.generateCallToken(sessionId, …) → CallToken · joinSession(…) → Widget? · SessionSettingsBuilder → SessionSettings · SessionType
  • ⚠️ TWO join paths, both real in 5.0.7 — pick one: generateCallToken(sessionId) → joinSession(callToken:sessionSettings:), or joinSession(sessionId:sessionSettings:) directly.
  • In-call actions — on CallSession.getInstance(), for CUSTOM controls ONLY (the returned widget already renders them; see pitfall #1): leaveSession · muteAudio/unMuteAudio · pauseVideo/resumeVideo · setLayout · setAudioModeType · switchCamera · raiseHand/lowerHand · startRecording/stopRecording · startScreenShare/stopScreenShare/toggleScreenShare · pinParticipant/unPinParticipant · muteParticipant · pauseParticipantVideo · enablePictureInPictureLayout/disablePictureInPictureLayout · enterPipMode/isPipSupported · setChatButtonUnreadCount · isCallSessionActive
    • Toggles (Flutter-only, no iOS analogue): toggleMuteAudio · togglePauseVideo · toggleCameraSource · toggleRaiseHand
    • Aliases for the same actions: endCallSession · startCallRecording/stopCallRecording · setCallLayoutType
    • Settings panels: hideSettingsPanel · openCallSettingsPanel · openVirtualBackgroundSettingsPanel
    • State getters (read, don't track): isAudioMuted · isVideoPaused · isHandRaised · isRecording · isScreenSharing · isTranscribing
  • Listeners (on CallSession.getInstance(); four are add/remove, LayoutListeners is a single-slot property): SessionStatusListeners · ParticipantEventListeners · MediaEventListeners · ButtonClickListeners · LayoutListeners
  • Call logs: CallLogRequestBuilder (top-level; FIELDS, no setX()) → CallLogRequest → fetchNext/fetchPrevious → CallLog (+ CallUser/CallGroup/CallEntity)
  • Background: CometChatOngoingCallService.launch() / .abort() — Android foreground service, no-op on iOS
  • Enums: AudioMode (.speaker/.earpiece/.bluetooth) · SessionType · LayoutType (.tile/.spotlight/.sidebar) · CameraFacing

A curated highlight, NOT the full surface. The authoritative closed list is the catalog (59 symbols, each proven by a flutter analyze probe). A symbol is real iff it is in the catalog — confirm there, then fetch its signature from the page in references/docs-map.md.

Listener lifecycle (BAKED)

All five listener types are abstract classes you IMPLEMENT — they are NOT constructible. The live docs build every one of them with named callbacks (SessionStatusListeners(onSessionJoined: () {…})); an abstract class cannot be instantiated, so none of those examples compile. flutter analyze reports instantiate_abstract_class.

dart
class _Status extends SessionStatusListeners {
  @override void onSessionJoined() { /* ... */ }
  @override void onSessionTimedOut() { /* distinct from onSessionLeft — handle BOTH */ }
  // `extends` instead of `implements` and the other four inherit their no-op bodies.
}

final _status = _Status();                                       // hoist into a FIELD
CallSession.getInstance()?.addSessionStatusListener(_status);     // BEFORE joining
// teardown:
CallSession.getInstance()?.removeSessionStatusListener(_status);  // the SAME instance
CallSession.getInstance()?.leaveSession();
  • Every method already has a no-op body, so extends lets you override only what you need; implements obliges you to write them all.
  • remove*Listener takes the object you added. Constructing a fresh listener to remove one is a no-op that silently leaks the original — and it is what the live docs show (D4). Hoist into a field; there is no other shape in which removal works.
  • ⚠️ Registration names do NOT match the type names — full table in references/docs-map.md. Two you cannot guess: MediaEvent**Listeners** registers via addMediaEvent**s**Listener, and LayoutListeners has no add/remove at all — it is a single-slot layoutListener = l setter, cleared with = null.
  • CallSession.getInstance() is never actually null — the singleton is eagerly built, so registering BEFORE joinSession really does attach (certified: onSessionJoined fires). The type is still CallSession?, so keep ?.; use isCallSessionActive() to test for a live session.
  • ButtonClickListeners callbacks fire alongside the SDK's own action and do NOT suppress it. Reacting to onLeaveSessionButtonClicked must NOT also call leaveSession() — the SDK is already leaving; doing both double-leaves. Use it to run CometChat.endCall(sessionId) on the ringing path.
  • Participant has TWELVE fields, all nullable: uid · name · avatar · mid · state · isJoined · deviceId · joinedAt · leftAt · totalAudioMinutes · totalVideoMinutes · totalDurationInMinutes. No mute/pin/hand/share flags — the seven the docs' "Participant Object Reference" lists (pid/role/audioMuted/videoPaused/isPinned/isPresenting/raisedHandTimestamp) do NOT exist and do not compile (see doc-corrections.md); accumulate that live state from ParticipantEventListeners, as iOS must. Prefer onParticipantListChanged, which delivers the WHOLE list. (Participants, plural, is a @Deprecated typedef alias of Participant.)
Show full SKILL.md (830 more words)Show less

Least-code recipe (meet-style — ORDER, not signatures)

dart
// Fetch every signature/field from references/docs-map.md. This is the ORDER, which is the part that bites.
import 'package:cometchat_calls_sdk/cometchat_calls_sdk.dart';

1. CometChatCalls.initFromSettings(onSuccess:, onError:)   // ai-agent default; cometchat-settings.json as a Flutter ASSET
2. CometChatCalls.login(uid:, authKey:, onSuccess:, onError:)   // or loginWithAuthToken in production
3. final settings = (SessionSettingsBuilder()..setDisplayName(name)..setType(SessionType.video)).build();
4. CallSession.getInstance()?.addSessionStatusListener(_status);   // register BEFORE joining
5. CometChatCalls.joinSession(sessionId:, sessionSettings:, onSuccess: (Widget? w) => setState(() => _call = w), onError:)
   //   or: generateCallToken(sessionId) -> joinSession(callToken:sessionSettings:)
6. // return _call from build() — NOTHING renders until you do
7. // NO control buttons needed — the returned widget ALREADY renders mute/video/leave.
8. // teardown -> remove each listener (same instance); CallSession.getInstance()?.leaveSession()

Backgrounding & call notifications → references/platform-notes.md

Two things that are NOT on the join path and are easy to get wrong:

  • Backgrounding — Android kills a call the moment the app backgrounds unless CometChatOngoingCallService.launch() holds a foreground service (.abort() on teardown). Flutter-only; both calls are safe no-ops on iOS. The manifest permissions are not optional.
  • Ringing a closed app — there is no first-party CometChat Flutter push package (iOS has one; Flutter does not), and no symbol in this skill's catalog implements it. It is FCM on Android and APNs/PushKit/CallKit on iOS, wired by the app. Needs a dashboard push provider and a physical device. An emit naming a cometchat_push_notifications Flutter package invented it.

Doc corrections (⚠️ the live pages do not compile — full table: references/doc-corrections.md)

23 classes of symbol on /calls/flutter/** fail flutter analyze against 5.0.7. Read references/doc-corrections.md before copying off a page. The two that bite hardest:

The docs writeIt does not compile — use
generateToken(sessionId: …) → CallToken (13 pages)generateCallToken(sessionId, onSuccess:, onError:) → CallToken. generateToken is @Deprecated, takes two POSITIONAL args, and yields GenerateToken. No page mentions generateCallToken at all
Participant.pid / .role / .audioMuted / .videoPaused / .isPinned / .isPresenting / .raisedHandTimestampNone exist. Participant has 7 fields; track the rest from events

Docs PR cometchat/docs#492 fixes the first seven classes (56 → 3 analyzer errors). Five more — including the abstract-listener one — were found by running flutter analyze over this skill's own harness AFTER #492 was open, and are not in it. 12 fences on those pages parse in no shape and were never machine-checked, so the table is a floor, not a total.

Common pitfalls (BAKED)

  • Forgetting to mount the returned widget (the #1 Flutter mistake) — joinSession renders nothing itself. Store the Widget? from onSuccess in State and return it from build().
  • Don't duplicate the built-in call controls (the #1 mistake everywhere else). The joined widget renders a COMPLETE call UI — mute, camera, layout, participants, leave. Do NOT add your own buttons around it. The CallSession.getInstance() action methods are for CUSTOM controls ONLY — reach for them just when the user EXPLICITLY asks to replace the defaults, and hide the built-ins first via the ..hide*Button setters on SessionSettingsBuilder. To merely REACT to the built-in leave button, use ButtonClickListeners(onLeaveSessionButtonClicked:) — do not add a second button.
  • Removing a listener you did not keep — construct once into a field; remove*Listener matches by instance.
  • User is exported by BOTH barrels — ringing imports both SDKs; ambiguous_import until one hides it (… hide User;). No page says so.
  • Ringing teardown needs BOTH SDKs — leaveSession() ends your media, CometChat.endCall(sessionId) tells the peer and completes the log. Only the first, and the peer still thinks the call is live.
  • There is no cancelCall — cancel your own outgoing call with rejectCall(sessionId, CometChatCallStatus.cancelled).
  • Manifest permissions without the runtime request — on Android 6+ the manifest alone grants nothing; request camera/mic before joining or the call is black and silent.
  • minSdkVersion left at Flutter's default — the floor is 26 (docs say 24), in android/app/build.gradle.kts on current Flutter, not android/build.gradle.
  • iOS Simulator on Apple Silicon: CometChatWebRTC excludes arm64, so the app builds x86_64 — fine on an iOS 18 simulator (Rosetta), impossible on iOS 26+. Device or iOS 18 sim; details in references/platform-notes.md.
  • cometchat-settings.json not in flutter: assets: — initFromSettings fails with settings-file-not-found. It is a quiet error callback, not a crash. Registering the asset is the whole job; no Xcode step.
  • Double init — init after initFromSettings silently re-attributes telemetry to "manual".
  • Handling onSessionLeft but not onSessionTimedOut — idle timeout (default 300s, 0 disables) fires a DIFFERENT callback; miss it and the user sits on a dead call screen.
  • Emitting an API Flutter lacks — no presentation mode, no first-party push package. Say so rather than emitting code that cannot resolve. The two PiPs are also different calls: enablePictureInPictureLayout() is the in-app layout, enterPipMode() is Android system PiP.
  • Screen share — the control methods DO ship (docs lag them). CallSession.getInstance() has real startScreenShare()/stopScreenShare()/toggleScreenShare() + an isScreenSharing getter (barrel-reachable in 5.0.7; the method channel invokes a native startScreenShare and web routes to getDisplayMedia), and hideScreenSharingButton defaults to false so the built-in button is visible. So an emit calling startScreenShare() COMPILES and dispatches — do NOT tell the user local screen share is impossible or "invented." The /calls/flutter/screen-sharing DOC page still says "receive-only" — it documents only the RECEIVE side (onParticipantStartedScreenShare, participant.isPresenting, viewing a web participant's share); the shipped local-share control API is undocumented there. Reflect the shipped methods, and note the page lags them.
  • Joining before init+login resolve — chain from the success callbacks.
  • Assuming a signature — event names, SessionSettings fields and action params are FETCHED from docs, never guessed.

Verify it works

  • Tier-1 catalog: every cometchat_calls_sdk symbol emitted appears in flutter-calls-v5.json (node test-suite/scripts/verify-catalog.mjs --family flutter-calls-v5).
  • Tier-2 compile: the emit analyzes clean against the installed cometchat_calls_sdk (5.0.7) with flutter analyze in test-suite/harness/flutter-calls.
  • Tier-3 smoke: the round-trip (init→login→generateCallToken→join→widget-mounted→leaveSession) via the pack's dev calls-smoke harness (internal QA, not shipped) — certified on a physical Android device. Ringing runs as TWO concurrent devices, one process per role, and only counts if both succeed on the SAME session id — see references/docs-map.md § "1:1 RINGING".

© 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

SKILL.md and 4 other files (references) in skills/cometchat-flutter-v5-sdk of cometchat/cometchat-skills.

  • SKILL.md
  • references/doc-corrections.md
  • references/docs-map.md
  • references/platform-notes.md
  • references/transcription.md

Open the folder on GitHubat commit 911b108

Compare with similar skills

Cometchat Flutter V5 SDK 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 Flutter V5 SDK compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Cometchat Flutter V5 SDK this skillcometchat/cometchat-skills129—~5.3kAutomated safety check: WarnMIT
Liquid Glass Widgetssdegenaar/liquid_glass_widgets711—~3.8kAutomated safety check: PassMIT
Flutter Pub ReleaseMixinNetwork/flutter-plugins512—~1.3kAutomated safety check: PassMIT
Flutter Bloc and Cubitandrewyng/context-hub14k—~998Automated safety check: PassMIT
Solidnank1ro/solid165—~3.1kAutomated safety check: PassMIT
Sync Cbl Docscbl-dart/cbl-dart152—~2kAutomated safety check: PassApache-2.0

Similar skills

  • Liquid Glass Widgets

    sdegenaar/liquid_glass_widgets

    Mastery guide and architectural rules for liquidglasswidgets.

    711 GitHub stars~3.8k tokensUpdated yesterday
    MobileAuto-check passed
  • Flutter Pub Release

    MixinNetwork/flutter-plugins

    Prepare and draft a pub.dev release for a package in the flutter-plugins monorepo.

    512 GitHub stars~1.3k tokensUpdated 1 mo ago
    MobileAuto-check passed
  • Flutter Bloc and Cubit

    andrewyng/context-hub

    Helps choose between Bloc and Cubit in Flutter and sets defaults for packages, lifecycle, widget binding and tests.

    14k GitHub stars~998 tokensUpdated 4 mo ago
    MobileAuto-check passed
  • Solid

    nank1ro/solid

    PRIORITY — read this skill FIRST before writing Dart code when pubspec.yaml declares solidannotations or solidgenerator.

    165 GitHub stars~3.1k tokensUpdated 1 mo ago
    MobileAuto-check passed
  • Sync Cbl Docs

    cbl-dart/cbl-dart

    Sync a Couchbase Lite for Dart documentation page with the official Couchbase Lite docs.

    152 GitHub stars~2k tokensUpdated 11 days ago
    MobileAuto-check passed
  • Flutter SoLoud Audio Filters

    alnitak/flutter_soloud

    Explains how to add and tune flutter_soloud's 13 audio filters at global, per-sound and mixing-bus level, including activation order and parameter fades.

    424 GitHub stars~2.1k tokensUpdated yesterday
    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 Flutter V5 SDK

What does Cometchat Flutter V5 SDK do?

Add voice & video calling to any Flutter app FROM SCRATCH with the headless CometChat Calls SDK v5 (cometchatcallssdk, pub.dev) — no UI Kit. Cometchat Flutter V5 SDK is an agent skill from cometchat/cometchat-skills.dev) — no UI Kit.

When should I use Cometchat Flutter V5 SDK?

Cometchat Flutter V5 SDK fits situations like: tasks that involve Cross-platform mobile apps; tasks that involve Design systems.

How do I install Cometchat Flutter V5 SDK in Claude Code?

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

How do I install Cometchat Flutter V5 SDK in Codex?

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

Can I use Cometchat Flutter V5 SDK 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-flutter-v5-sdk -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-flutter-v5-sdk, .gemini/skills/cometchat-flutter-v5-sdk, .github/skills/cometchat-flutter-v5-sdk and .opencode/skills/cometchat-flutter-v5-sdk in your project.

What does Cometchat Flutter V5 SDK need to run?

Going by SKILL.md and its folder, Cometchat Flutter V5 SDK needs the command-line tools its instructions call (flutter, npx and node). Our summary lists: Node.js. Compatibility (from SKILL.md): Flutter >=2.5.0, Dart >=2.17.0 <4.0.0 · Android minSdk 26 (Android 8.0) · iOS 15.1. cometchat_calls_sdk ^5.0.3 — resolves to 5.0.7, which this skill is verified against. 1:1 ringing also needs cometchat_sdk v5 (>=5.0.6; the pinned harness resolves 5.0.7 — the signaling symbols are identical across both) for signaling..

Does Cometchat Flutter V5 SDK access the network?

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

Is Cometchat Flutter V5 SDK safe to install?

Our automated static check of SKILL.md flagged 1 warning(s): contains instruction-override wording (e.g. “without asking the user”). Read the flagged lines before installing; the check is not a guarantee either way.

What licence does Cometchat Flutter V5 SDK use?

Cometchat Flutter V5 SDK 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 Flutter V5 SDK use?

About 5.3k tokens (SKILL.md is roughly 21k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 8.1k tokens, read only when the agent opens those files.

What are the alternatives to Cometchat Flutter V5 SDK?

Skills that share tags, products or a category with Cometchat Flutter V5 SDK: Liquid Glass Widgets (sdegenaar/liquid_glass_widgets, 711 stars), Flutter Pub Release (MixinNetwork/flutter-plugins, 512 stars), Flutter Bloc and Cubit (andrewyng/context-hub, 14k stars) and Solid (nank1ro/solid, 165 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Cometchat Flutter V5 SDK?

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.