@cometchat/skills 4.2.1 → 4.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +33 -12
- package/bin/install.js +59 -4
- package/package.json +14 -1
- package/skills/cometchat/SKILL.md +460 -77
- package/skills/cometchat/references/asking-questions.md +48 -0
- package/skills/cometchat-a11y/SKILL.md +3 -2
- package/skills/cometchat-android-v5/SKILL.md +2 -1
- package/skills/cometchat-android-v5-calls/SKILL.md +36 -22
- package/skills/cometchat-android-v5-calls/references/README.md +1 -1
- package/skills/cometchat-android-v5-calls/references/add-calls-to-existing-chat.md +7 -5
- package/skills/cometchat-android-v5-calls/references/audio-controls.md +4 -4
- package/skills/cometchat-android-v5-calls/references/call-layouts.md +33 -25
- package/skills/cometchat-android-v5-calls/references/call-session.md +2 -2
- package/skills/cometchat-android-v5-calls/references/custom-ui.md +5 -5
- package/skills/cometchat-android-v5-calls/references/event-listeners.md +2 -2
- package/skills/cometchat-android-v5-calls/references/idle-timeout.md +20 -14
- package/skills/cometchat-android-v5-calls/references/in-call-chat.md +1 -1
- package/skills/cometchat-android-v5-calls/references/migration-v4-to-v5.md +43 -27
- package/skills/cometchat-android-v5-calls/references/participant-management.md +3 -3
- package/skills/cometchat-android-v5-calls/references/raise-hand.md +25 -19
- package/skills/cometchat-android-v5-calls/references/recording.md +2 -2
- package/skills/cometchat-android-v5-calls/references/ringing-integration.md +1 -1
- package/skills/cometchat-android-v5-calls/references/screen-sharing.md +5 -9
- package/skills/cometchat-android-v5-calls/references/session-settings.md +3 -3
- package/skills/cometchat-android-v5-calls/references/setup.md +1 -1
- package/skills/cometchat-android-v5-calls/references/share-invite.md +9 -4
- package/skills/cometchat-android-v5-calls/references/video-controls.md +4 -4
- package/skills/cometchat-android-v5-calls/references/voip-calling.md +2 -2
- package/skills/cometchat-android-v5-components/SKILL.md +4 -3
- package/skills/cometchat-android-v5-core/SKILL.md +20 -2
- package/skills/cometchat-android-v5-customization/SKILL.md +171 -7
- package/skills/cometchat-android-v5-extensions/SKILL.md +7 -4
- package/skills/cometchat-android-v5-features/SKILL.md +5 -4
- package/skills/cometchat-android-v5-placement/SKILL.md +2 -1
- package/skills/cometchat-android-v5-production/SKILL.md +2 -1
- package/skills/cometchat-android-v5-push/SKILL.md +2 -3
- package/skills/cometchat-android-v5-testing/SKILL.md +2 -1
- package/skills/cometchat-android-v5-theming/SKILL.md +2 -1
- package/skills/cometchat-android-v5-troubleshooting/SKILL.md +3 -2
- package/skills/cometchat-android-v6/SKILL.md +2 -1
- package/skills/cometchat-android-v6-builder-settings/SKILL.md +11 -7
- package/skills/cometchat-android-v6-calls/SKILL.md +79 -18
- package/skills/cometchat-android-v6-calls/references/advanced-features.md +87 -0
- package/skills/cometchat-android-v6-calls/references/call-layouts.md +24 -15
- package/skills/cometchat-android-v6-calls/references/call-session.md +2 -2
- package/skills/cometchat-android-v6-calls/references/device-management.md +17 -16
- package/skills/cometchat-android-v6-calls/references/idle-timeout.md +7 -4
- package/skills/cometchat-android-v6-calls/references/in-call-chat.md +13 -8
- package/skills/cometchat-android-v6-calls/references/raise-hand.md +6 -4
- package/skills/cometchat-android-v6-compose-components/SKILL.md +52 -29
- package/skills/cometchat-android-v6-compose-customization/SKILL.md +156 -1
- package/skills/cometchat-android-v6-compose-placement/SKILL.md +129 -40
- package/skills/cometchat-android-v6-compose-theming/SKILL.md +27 -1
- package/skills/cometchat-android-v6-core/SKILL.md +389 -9
- package/skills/cometchat-android-v6-events/SKILL.md +4 -1
- package/skills/cometchat-android-v6-extensions/SKILL.md +2 -1
- package/skills/cometchat-android-v6-features/SKILL.md +26 -2
- package/skills/cometchat-android-v6-kotlin-components/SKILL.md +31 -1
- package/skills/cometchat-android-v6-kotlin-customization/SKILL.md +172 -1
- package/skills/cometchat-android-v6-kotlin-placement/SKILL.md +20 -5
- package/skills/cometchat-android-v6-kotlin-theming/SKILL.md +36 -5
- package/skills/cometchat-android-v6-migration/SKILL.md +44 -42
- package/skills/cometchat-android-v6-production/SKILL.md +6 -3
- package/skills/cometchat-android-v6-push/SKILL.md +43 -2
- package/skills/cometchat-android-v6-testing/SKILL.md +11 -8
- package/skills/cometchat-android-v6-troubleshooting/SKILL.md +26 -5
- package/skills/cometchat-angular-calls/SKILL.md +256 -389
- package/skills/cometchat-angular-calls/references/add-calls-to-existing-chat.md +3 -2
- package/skills/cometchat-angular-calls/references/call-layouts.md +29 -12
- package/skills/cometchat-angular-calls/references/call-session.md +2 -2
- package/skills/cometchat-angular-calls/references/custom-ui.md +18 -10
- package/skills/cometchat-angular-calls/references/device-management.md +53 -34
- package/skills/cometchat-angular-calls/references/group-calls.md +45 -24
- package/skills/cometchat-angular-calls/references/idle-timeout.md +31 -15
- package/skills/cometchat-angular-calls/references/ngzone-and-async-callbacks.md +7 -6
- package/skills/cometchat-angular-calls/references/raise-hand.md +9 -4
- package/skills/cometchat-angular-calls/references/recording-screen-share.md +32 -39
- package/skills/cometchat-angular-calls/references/ringing-integration.md +3 -1
- package/skills/cometchat-angular-calls/references/share-invite.md +11 -5
- package/skills/cometchat-angular-calls/references/virtual-background.md +29 -0
- package/skills/cometchat-angular-components/SKILL.md +149 -620
- package/skills/cometchat-angular-core/SKILL.md +235 -293
- package/skills/cometchat-angular-customization/SKILL.md +415 -223
- package/skills/cometchat-angular-features/SKILL.md +216 -334
- package/skills/cometchat-angular-patterns/SKILL.md +168 -359
- package/skills/cometchat-angular-placement/SKILL.md +189 -560
- package/skills/cometchat-angular-production/SKILL.md +241 -92
- package/skills/cometchat-angular-push/SKILL.md +280 -294
- package/skills/cometchat-angular-testing/SKILL.md +430 -158
- package/skills/cometchat-angular-theming/SKILL.md +190 -265
- package/skills/cometchat-angular-troubleshooting/SKILL.md +192 -157
- package/skills/cometchat-astro-patterns/SKILL.md +22 -1
- package/skills/cometchat-calls/SKILL.md +25 -19
- package/skills/cometchat-calls/references/use-case-broadcast.md +15 -10
- package/skills/cometchat-calls/references/use-case-marketplace.md +2 -3
- package/skills/cometchat-calls/references/use-case-support.md +3 -4
- package/skills/cometchat-calls/references/use-case-team.md +23 -12
- package/skills/cometchat-calls/references/use-case-telehealth.md +3 -4
- package/skills/cometchat-components/SKILL.md +163 -25
- package/skills/cometchat-core/SKILL.md +412 -13
- package/skills/cometchat-customization/SKILL.md +50 -25
- package/skills/cometchat-features/SKILL.md +313 -34
- package/skills/cometchat-flutter-v5/SKILL.md +10 -4
- package/skills/cometchat-flutter-v5-calls/SKILL.md +188 -158
- package/skills/cometchat-flutter-v5-calls/references/add-calls-to-existing-chat.md +48 -24
- package/skills/cometchat-flutter-v5-calls/references/call-layouts.md +20 -15
- package/skills/cometchat-flutter-v5-calls/references/call-session.md +100 -145
- package/skills/cometchat-flutter-v5-calls/references/device-management.md +12 -8
- package/skills/cometchat-flutter-v5-calls/references/group-calls.md +30 -36
- package/skills/cometchat-flutter-v5-calls/references/idle-timeout.md +15 -13
- package/skills/cometchat-flutter-v5-calls/references/in-call-chat.md +12 -9
- package/skills/cometchat-flutter-v5-calls/references/migration-v4-to-v5.md +115 -65
- package/skills/cometchat-flutter-v5-calls/references/raise-hand.md +41 -30
- package/skills/cometchat-flutter-v5-calls/references/ringing-integration.md +17 -14
- package/skills/cometchat-flutter-v5-calls/references/share-invite.md +8 -2
- package/skills/cometchat-flutter-v5-conversations/SKILL.md +2 -1
- package/skills/cometchat-flutter-v5-core/SKILL.md +20 -2
- package/skills/cometchat-flutter-v5-customization/SKILL.md +136 -5
- package/skills/cometchat-flutter-v5-events/SKILL.md +2 -1
- package/skills/cometchat-flutter-v5-messages/SKILL.md +2 -1
- package/skills/cometchat-flutter-v5-production/SKILL.md +15 -6
- package/skills/cometchat-flutter-v5-push/SKILL.md +2 -1
- package/skills/cometchat-flutter-v5-testing/SKILL.md +17 -6
- package/skills/cometchat-flutter-v5-theming/SKILL.md +2 -1
- package/skills/cometchat-flutter-v5-troubleshooting/SKILL.md +7 -6
- package/skills/cometchat-flutter-v5-users-groups/SKILL.md +3 -2
- package/skills/cometchat-flutter-v6/SKILL.md +17 -16
- package/skills/cometchat-flutter-v6-calls/SKILL.md +78 -63
- package/skills/cometchat-flutter-v6-calls/references/add-calls-to-existing-chat.md +8 -6
- package/skills/cometchat-flutter-v6-calls/references/advanced-features.md +89 -0
- package/skills/cometchat-flutter-v6-calls/references/call-layouts.md +15 -12
- package/skills/cometchat-flutter-v6-calls/references/call-session.md +2 -2
- package/skills/cometchat-flutter-v6-calls/references/device-management.md +9 -3
- package/skills/cometchat-flutter-v6-calls/references/group-calls.md +10 -10
- package/skills/cometchat-flutter-v6-calls/references/idle-timeout.md +15 -7
- package/skills/cometchat-flutter-v6-calls/references/in-call-chat.md +6 -3
- package/skills/cometchat-flutter-v6-calls/references/raise-hand.md +23 -16
- package/skills/cometchat-flutter-v6-components/SKILL.md +32 -11
- package/skills/cometchat-flutter-v6-conversations/SKILL.md +39 -11
- package/skills/cometchat-flutter-v6-core/SKILL.md +348 -10
- package/skills/cometchat-flutter-v6-customization/SKILL.md +97 -25
- package/skills/cometchat-flutter-v6-events/SKILL.md +3 -2
- package/skills/cometchat-flutter-v6-features/SKILL.md +15 -6
- package/skills/cometchat-flutter-v6-messages/SKILL.md +111 -60
- package/skills/cometchat-flutter-v6-migration/SKILL.md +18 -25
- package/skills/cometchat-flutter-v6-placement/SKILL.md +79 -50
- package/skills/cometchat-flutter-v6-production/SKILL.md +13 -12
- package/skills/cometchat-flutter-v6-push/SKILL.md +43 -21
- package/skills/cometchat-flutter-v6-testing/SKILL.md +6 -6
- package/skills/cometchat-flutter-v6-theming/SKILL.md +38 -5
- package/skills/cometchat-flutter-v6-troubleshooting/SKILL.md +182 -17
- package/skills/cometchat-flutter-v6-users-groups/SKILL.md +12 -4
- package/skills/cometchat-i18n/SKILL.md +139 -78
- package/skills/cometchat-ios/SKILL.md +4 -2
- package/skills/cometchat-ios-calls/SKILL.md +225 -95
- package/skills/cometchat-ios-calls/references/add-calls-to-existing-chat.md +11 -9
- package/skills/cometchat-ios-calls/references/audio-modes-and-controls.md +45 -0
- package/skills/cometchat-ios-calls/references/avaudiosession-routing.md +6 -7
- package/skills/cometchat-ios-calls/references/call-layouts.md +31 -91
- package/skills/cometchat-ios-calls/references/call-session.md +51 -54
- package/skills/cometchat-ios-calls/references/callkit-and-pushkit.md +33 -29
- package/skills/cometchat-ios-calls/references/custom-ui.md +38 -38
- package/skills/cometchat-ios-calls/references/group-calls.md +33 -70
- package/skills/cometchat-ios-calls/references/idle-timeout.md +24 -25
- package/skills/cometchat-ios-calls/references/in-call-chat.md +19 -23
- package/skills/cometchat-ios-calls/references/migration-v4-to-v5.md +128 -70
- package/skills/cometchat-ios-calls/references/picture-in-picture.md +20 -20
- package/skills/cometchat-ios-calls/references/raise-hand.md +14 -227
- package/skills/cometchat-ios-calls/references/recording-screen-share.md +35 -122
- package/skills/cometchat-ios-calls/references/ringing-integration.md +17 -16
- package/skills/cometchat-ios-calls/references/share-invite.md +8 -12
- package/skills/cometchat-ios-calls/references/swiftui-uikit-hosting.md +4 -4
- package/skills/cometchat-ios-components/SKILL.md +200 -12
- package/skills/cometchat-ios-core/SKILL.md +281 -11
- package/skills/cometchat-ios-customization/SKILL.md +276 -110
- package/skills/cometchat-ios-features/SKILL.md +64 -36
- package/skills/cometchat-ios-placement/SKILL.md +15 -12
- package/skills/cometchat-ios-production/SKILL.md +12 -4
- package/skills/cometchat-ios-push/SKILL.md +53 -19
- package/skills/cometchat-ios-testing/SKILL.md +14 -9
- package/skills/cometchat-ios-theming/SKILL.md +39 -3
- package/skills/cometchat-ios-troubleshooting/SKILL.md +41 -21
- package/skills/cometchat-native-bare-patterns/SKILL.md +56 -18
- package/skills/cometchat-native-calls/SKILL.md +89 -19
- package/skills/cometchat-native-calls/references/add-calls-to-existing-chat.md +2 -2
- package/skills/cometchat-native-calls/references/call-layouts.md +15 -14
- package/skills/cometchat-native-calls/references/call-session.md +2 -2
- package/skills/cometchat-native-calls/references/custom-ui.md +12 -8
- package/skills/cometchat-native-calls/references/device-management.md +53 -30
- package/skills/cometchat-native-calls/references/group-calls.md +35 -30
- package/skills/cometchat-native-calls/references/idle-timeout.md +6 -6
- package/skills/cometchat-native-calls/references/in-call-chat.md +10 -8
- package/skills/cometchat-native-calls/references/migration-v4-to-v5.md +2 -2
- package/skills/cometchat-native-calls/references/raise-hand.md +15 -13
- package/skills/cometchat-native-calls/references/recording-screen-share.md +49 -170
- package/skills/cometchat-native-calls/references/share-invite.md +7 -5
- package/skills/cometchat-native-calls/references/voip-push-end-to-end.md +4 -2
- package/skills/cometchat-native-components/SKILL.md +91 -57
- package/skills/cometchat-native-core/SKILL.md +281 -9
- package/skills/cometchat-native-customization/SKILL.md +150 -28
- package/skills/cometchat-native-expo-patterns/SKILL.md +77 -27
- package/skills/cometchat-native-features/SKILL.md +79 -49
- package/skills/cometchat-native-placement/SKILL.md +19 -10
- package/skills/cometchat-native-production/SKILL.md +9 -3
- package/skills/cometchat-native-push/SKILL.md +2 -1
- package/skills/cometchat-native-testing/SKILL.md +1 -2
- package/skills/cometchat-native-theming/SKILL.md +54 -29
- package/skills/cometchat-native-troubleshooting/SKILL.md +71 -3
- package/skills/cometchat-nextjs-patterns/SKILL.md +48 -6
- package/skills/cometchat-placement/SKILL.md +42 -3
- package/skills/cometchat-production/SKILL.md +12 -5
- package/skills/cometchat-react-calls/SKILL.md +220 -10
- package/skills/cometchat-react-calls/references/add-calls-to-existing-chat.md +4 -3
- package/skills/cometchat-react-calls/references/call-layouts.md +5 -6
- package/skills/cometchat-react-calls/references/call-session.md +1 -1
- package/skills/cometchat-react-calls/references/custom-ui.md +61 -15
- package/skills/cometchat-react-calls/references/device-management.md +55 -51
- package/skills/cometchat-react-calls/references/group-calls.md +18 -23
- package/skills/cometchat-react-calls/references/idle-timeout.md +25 -12
- package/skills/cometchat-react-calls/references/in-call-chat.md +7 -7
- package/skills/cometchat-react-calls/references/migration-v4-to-v5.md +9 -11
- package/skills/cometchat-react-calls/references/raise-hand.md +14 -14
- package/skills/cometchat-react-calls/references/recording-screen-share.md +39 -38
- package/skills/cometchat-react-calls/references/ringing-integration.md +2 -2
- package/skills/cometchat-react-calls/references/share-invite.md +4 -5
- package/skills/cometchat-react-calls/references/testing-calls-on-web.md +20 -2
- package/skills/cometchat-react-calls/references/virtual-background.md +32 -0
- package/skills/cometchat-react-patterns/SKILL.md +57 -4
- package/skills/cometchat-react-push/SKILL.md +258 -72
- package/skills/cometchat-react-router-patterns/SKILL.md +43 -4
- package/skills/cometchat-react-testing/SKILL.md +14 -5
- package/skills/cometchat-theming/SKILL.md +181 -18
- package/skills/cometchat-troubleshooting/SKILL.md +40 -20
|
@@ -3,13 +3,14 @@ name: cometchat-astro-patterns
|
|
|
3
3
|
description: "Framework-specific patterns for integrating CometChat React UI Kit v6 into Astro projects using React islands. Covers client:only rendering, island communication, CSS handling, and common pitfalls."
|
|
4
4
|
license: "MIT"
|
|
5
5
|
compatibility: "Node.js >=18; React >=18; Astro >=3; @astrojs/react; @cometchat/chat-uikit-react ^6; @cometchat/chat-sdk-javascript ^4"
|
|
6
|
-
allowed-tools: "shell, file-read, file-search, file-list"
|
|
7
6
|
metadata:
|
|
8
7
|
author: "CometChat"
|
|
9
8
|
version: "3.0.0"
|
|
10
9
|
tags: "chat cometchat astro react islands client-only patterns"
|
|
11
10
|
---
|
|
12
11
|
|
|
12
|
+
> **Ground truth:** `@cometchat/chat-uikit-react@^6` (+ `@cometchat/calls-sdk-javascript@^5`) — installed package types + `ui-kit/react`. **Official docs:** https://www.cometchat.com/docs/ui-kit/react/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.
|
|
13
|
+
|
|
13
14
|
## Purpose
|
|
14
15
|
|
|
15
16
|
This skill teaches Claude how to integrate CometChat into an Astro project using React islands. Astro is a static-first framework -- most of the page is HTML rendered at build time. Interactive React components run as isolated "islands" in the browser. CometChat components are React islands that must use `client:only="react"` to bypass server rendering entirely.
|
|
@@ -685,3 +686,23 @@ const handleClose = () => console.log("closed");
|
|
|
685
686
|
1. Always `client:only="react"` -- never `client:load`
|
|
686
687
|
2. CSS imports go INSIDE the React component -- never in `.astro` files
|
|
687
688
|
3. Each island wraps its own `CometChatProvider` -- there is no global provider at the Astro level
|
|
689
|
+
|
|
690
|
+
## 11. Visual Builder integration (v4.3)
|
|
691
|
+
|
|
692
|
+
If the customer picks **Visually** in dispatcher Step 3.1, skills runs `cometchat builder export --platform react --output src/CometChat --json` to download the canonical + patch settings in one step.
|
|
693
|
+
|
|
694
|
+
**Full recipe lives in `cometchat-core` §11 "Visual Builder integration".** This section is a pointer + Astro-specific gotchas:
|
|
695
|
+
|
|
696
|
+
- Run `cometchat builder export --platform react --output src/CometChat --json`.
|
|
697
|
+
- Create a React island wrapper at `src/components/CometChatIsland.tsx` (or similar) that does init + login + renders `<CometChatProvider><CometChatApp /></CometChatProvider>`.
|
|
698
|
+
- Mount in `src/pages/chat.astro` as `<CometChatIsland client:only="react" />` — **never** `client:load`. The canonical CometChat/ uses `window` / `document` at module scope; `client:load` will SSR the import resolution and crash.
|
|
699
|
+
- Use `import.meta.env.PUBLIC_COMETCHAT_*` (Astro's public-env prefix).
|
|
700
|
+
- Astro's Vite-based build uses rollup (not Rolldown), so it tolerates the canonical's type-as-value imports as warning — Astro is **the most reliable Visual Builder host** in the v4.3.0 web matrix (validated 2026-05-22).
|
|
701
|
+
|
|
702
|
+
### Both Astro and other Vite hosts
|
|
703
|
+
|
|
704
|
+
- Pin `@cometchat/chat-uikit-react@6.4.3` + `@cometchat/calls-sdk-javascript@4.2.5`.
|
|
705
|
+
- `package.json` needs `cometChatCustomConfig` block (Finding F2).
|
|
706
|
+
- Vite 7+ `tsconfig.app.json` requires the relaxation set from `cometchat-core` §11.2.
|
|
707
|
+
|
|
708
|
+
If the customer picks **In code**, ignore this section.
|
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
name: cometchat-calls
|
|
3
3
|
description: 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.
|
|
4
4
|
license: "MIT"
|
|
5
|
-
allowed-tools: "shell, file-read, file-search, file-list, ask-user"
|
|
6
5
|
metadata:
|
|
7
6
|
author: "CometChat"
|
|
8
7
|
version: "4.0.0"
|
|
9
8
|
tags: "cometchat calls voice video webrtc dispatcher react react-native angular android ios flutter callkit pushkit voip"
|
|
10
9
|
---
|
|
11
10
|
|
|
11
|
+
> **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.
|
|
12
|
+
|
|
12
13
|
## Use this skill when
|
|
13
14
|
|
|
14
15
|
- The top-level `cometchat` dispatcher's Step 3.0 routes here because `product === "voice-video"` or `chat-messaging+voice-video`
|
|
@@ -25,12 +26,14 @@ This is the **entry point for every calls integration**. Do NOT invoke per-famil
|
|
|
25
26
|
| **React Native** (Expo + bare) | `cometchat-native-calls` | `@cometchat/calls-sdk-react-native` | Yes |
|
|
26
27
|
| **Angular** (12–15) | `cometchat-angular-calls` | `@cometchat/calls-sdk-javascript` | Yes |
|
|
27
28
|
| **Android** (V5 stable) | `cometchat-android-v5-calls` | `com.cometchat:calls-sdk-android:5.x` (Cloudsmith) | Yes — production-ready |
|
|
28
|
-
| **Android** (V6
|
|
29
|
+
| **Android** (V6 GA) | `cometchat-android-v6-calls` | `chatuikit-{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. |
|
|
29
30
|
| **iOS** (V5 stable) | `cometchat-ios-calls` | `CometChatCallsSDK` (SPM / CocoaPods) | Yes |
|
|
30
31
|
| **Flutter** (V5 stable) | `cometchat-flutter-v5-calls` (already exists) | `cometchat_calls_sdk` (Cloudsmith) | Yes |
|
|
31
|
-
| **Flutter** (V6
|
|
32
|
+
| **Flutter** (V6 GA) | `cometchat-flutter-v6-calls` (already exists) | Calls fold into `cometchat_chat_uikit: ^6.0.1` | Yes — GA 2026-05-25 (one explicit `MaterialApp(navigatorKey: CallNavigationContext.navigatorKey)` wiring required, see per-family skill) |
|
|
33
|
+
|
|
34
|
+
> **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`).
|
|
32
35
|
|
|
33
|
-
> **
|
|
36
|
+
> **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.
|
|
34
37
|
|
|
35
38
|
## Why a separate calls dispatcher
|
|
36
39
|
|
|
@@ -279,6 +282,7 @@ These are the production-grade non-negotiables. The dispatcher checks them in St
|
|
|
279
282
|
5. **Cleanup on hangup.** Camera-light-stays-on / mic-stays-hot is the canonical "looks fine in dev, fails review" bug. Every per-family skill includes the explicit teardown checklist.
|
|
280
283
|
6. **Permissions with rationale.** Microphone, camera, screen-record (where supported), notifications. All four, all with usage strings.
|
|
281
284
|
7. **`IncomingCall` mounted at app root in standalone mode.** Not at the chat surface — calls is the whole product, the listener has to be alive everywhere.
|
|
285
|
+
8. **Honor "SDK only" when the user says SDK only (ENG-35711).** If the developer explicitly asks for the Calls SDK without UI Kit components — phrasing like *"pure SDK,"* *"no UI Kit components,"* *"build my own call UI,"* *"SDK-only path"* — the per-family skill MUST NOT scaffold `CometChatCallButtons`, `CometChatIncomingCall`, `CometChatOutgoingCall`, or `CometChatOngoingCall`. Use Chat SDK `CometChat.initiateCall` for signaling + Calls SDK `joinSession` (and a hand-written button/screen) for the surface. **Never silently fall back to UI Kit components** "because they're easier" — that's a documented frustration from two testers. If the developer's request can't be served without a UI Kit component, ask explicitly: *"This piece needs the kit's `<CometChatXxx>` — happy to use it, or do you want a hand-written equivalent?"* Don't decide for them.
|
|
282
286
|
|
|
283
287
|
## Anti-patterns
|
|
284
288
|
|
|
@@ -290,26 +294,28 @@ These are the production-grade non-negotiables. The dispatcher checks them in St
|
|
|
290
294
|
|
|
291
295
|
## Ground truth references
|
|
292
296
|
|
|
293
|
-
Per-family `-calls` skills cite from these sources. The dispatcher itself doesn't write code; the per-family skills do.
|
|
297
|
+
Per-family `-calls` skills cite from these sources. The dispatcher itself doesn't write code; the per-family skills do. To verify which SDK signatures the skills target, check each family's **published SDK artifact + public docs** (the source-of-truth — an earlier draft pointed at a local `~/Downloads/calls-sdk/` clone that no longer exists; use the installed/published packages instead):
|
|
294
298
|
|
|
295
|
-
- **Android V5:**
|
|
296
|
-
- **iOS V5:**
|
|
297
|
-
- **JavaScript (web):**
|
|
298
|
-
- **React Native:**
|
|
299
|
-
- **Flutter:**
|
|
300
|
-
- **Angular:**
|
|
299
|
+
- **Android V5:** `com.cometchat:calls-sdk-android:5.x` (decompile the Maven AAR, or `javap` the Gradle-cached classes) + [docs](https://www.cometchat.com/docs/sdk/android/overview). The 17 sub-topics are folded into `cometchat-android-v5-calls/references/{recording,screen-sharing,picture-in-picture,background-handling,voip-calling,audio-controls,video-controls,participant-management,custom-ui,in-call-chat,call-logs,session-settings,event-listeners,join-session,ringing-integration,setup}.md`.
|
|
300
|
+
- **iOS V5:** `CometChatCallsSDK` 5.x — the `.swiftinterface` inside the resolved framework (SPM `.build/artifacts/…` or CocoaPods `Pods/…`; it ships vendored inside `CometChatUIKitSwift` for additive) + [docs](https://www.cometchat.com/docs/calls/ios/overview).
|
|
301
|
+
- **JavaScript (web):** `@cometchat/calls-sdk-javascript@5` — the package `.d.ts` (`node_modules/@cometchat/calls-sdk-javascript/dist/index.d.ts`) + [docs](https://www.cometchat.com/docs/calls/javascript/overview).
|
|
302
|
+
- **React Native:** `@cometchat/calls-sdk-react-native@5` — the package `.d.ts` + `@cometchat/calls-lib-webrtc` (Cloudsmith) + [docs](https://www.cometchat.com/docs/calls/react-native/overview).
|
|
303
|
+
- **Flutter:** `cometchat_calls_sdk` (V5: paired `cometchat_calls_uikit:^5.0`; V6: folded into `cometchat_chat_uikit:^6.0`) — the pub-cache source — plus the `cometchat-flutter-v5-calls` / `cometchat-flutter-v6-calls` skills (audited against it).
|
|
304
|
+
- **Angular:** the same JS Calls SDK (`@cometchat/calls-sdk-javascript`) wrapped in Angular Inputs/Outputs — verify via `@cometchat/chat-uikit-angular` `.d.ts` + the JS SDK `.d.ts`.
|
|
301
305
|
|
|
302
|
-
##
|
|
306
|
+
## Two calling modes (Ringing + Session) — and the kit's prebuilt UI for Ringing
|
|
303
307
|
|
|
304
|
-
|
|
308
|
+
> **Naming clarification (ENG-35699 follow-up):** This section labels three rows below — "Standard", "Ringing", and "Call Session" — but **architecturally there are only TWO modes**: Ringing (signaling-driven) and Session (URL-driven). "Standard" is the **kit's prebuilt UI for Ringing** (using `<CometChatCallButtons>` + `<CometChatIncomingCall>`), not a third architectural mode. The Step 3.0 prompt above asks Ringing vs Session — that's the load-bearing decision. The Standard row is the most-common rendering choice WITHIN Ringing mode.
|
|
305
309
|
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
|
309
|
-
|
|
310
|
-
| **
|
|
310
|
+
CometChat supports two underlying calling workflows; the table below splits Ringing into "Standard (kit-prebuilt UI)" vs "Ringing (custom UI on signaling)" for routing purposes only:
|
|
311
|
+
|
|
312
|
+
| Row | Underlying mode | Driver | When to use | Per-family ref |
|
|
313
|
+
|---|---|---|---|---|
|
|
314
|
+
| **Standard** | Ringing | UI Kit (`CometChatCallButtons` + `CometChatIncomingCall`) | 80% case — chat-driven calls with prebuilt UI | covered in per-family `SKILL.md` |
|
|
315
|
+
| **Ringing (custom UI)** | Ringing | Chat SDK call entity + Calls SDK session | Custom incoming/outgoing call UI on top of CometChat signaling | `references/ringing-integration.md` |
|
|
316
|
+
| **Call Session** | Session | Calls SDK `joinSession` directly (no ringing) | Meeting-room URLs, scheduled calls, conference rooms | `references/call-session.md` |
|
|
311
317
|
|
|
312
|
-
Standard is the default unless the user explicitly says "custom incoming call UI" (→ Ringing) or "meeting link / join with sessionId" (→ Call Session). The Tier 4 use-cases telegraph which mode they want — broadcast + team huddles use Call Session; telehealth + marketplace + support use Standard or Ringing.
|
|
318
|
+
Standard is the default Ringing rendering unless the user explicitly says "custom incoming call UI" (→ Ringing custom) or "meeting link / join with sessionId" (→ Call Session). The Tier 4 use-cases telegraph which mode they want — broadcast + team huddles use Call Session; telehealth + marketplace + support use Standard or Ringing custom.
|
|
313
319
|
|
|
314
320
|
## Use-case integration patterns (Tier 4)
|
|
315
321
|
|
|
@@ -39,10 +39,9 @@ const settings = {
|
|
|
39
39
|
hideChangeLayoutButton: true, // Don't let attendees change
|
|
40
40
|
|
|
41
41
|
hideRecordingButton: false, // Presenter records
|
|
42
|
-
|
|
42
|
+
autoStartRecording: true, // Always record broadcasts (replay value)
|
|
43
43
|
|
|
44
|
-
|
|
45
|
-
hideVirtualBackgroundButton: false,
|
|
44
|
+
hideScreenSharingButton: false, // For slides
|
|
46
45
|
|
|
47
46
|
hideChatButton: false, // Q&A overflow + reactions
|
|
48
47
|
hideShareInviteButton: false, // Encourage sharing
|
|
@@ -53,7 +52,7 @@ const settings = {
|
|
|
53
52
|
joinWithMutedAudio: true,
|
|
54
53
|
joinWithMutedVideo: true,
|
|
55
54
|
|
|
56
|
-
|
|
55
|
+
idleTimeoutPeriodBeforePrompt: 86_400_000, // Disable idle timeout — events run long
|
|
57
56
|
};
|
|
58
57
|
```
|
|
59
58
|
|
|
@@ -113,12 +112,18 @@ function PresenterRaisedHandsList() {
|
|
|
113
112
|
});
|
|
114
113
|
}, []);
|
|
115
114
|
|
|
116
|
-
function unmuteParticipant(uid: string) {
|
|
117
|
-
// Send a custom message asking participant to unmute themselves
|
|
118
|
-
// (CometChat doesn't support force-unmute — privacy)
|
|
119
|
-
|
|
120
|
-
//
|
|
121
|
-
|
|
115
|
+
async function unmuteParticipant(uid: string) {
|
|
116
|
+
// Send a custom message asking the participant to unmute themselves
|
|
117
|
+
// (CometChat doesn't support force-unmute — privacy).
|
|
118
|
+
// There is NO CometChatCalls.lowerParticipantHand(uid) — the SDK only
|
|
119
|
+
// exposes lowerHand() for the LOCAL user. To lower someone else's hand,
|
|
120
|
+
// message them and let their client call lowerHand() (see raise-hand.md).
|
|
121
|
+
const msg = new CometChat.CustomMessage(
|
|
122
|
+
uid, CometChat.RECEIVER_TYPE.USER, "lower_hand", {},
|
|
123
|
+
);
|
|
124
|
+
await CometChat.sendCustomMessage(msg);
|
|
125
|
+
// Optimistically drop them from our local raised-hands list
|
|
126
|
+
setRaised((prev) => prev.filter((p) => p.uid !== uid));
|
|
122
127
|
}
|
|
123
128
|
|
|
124
129
|
return (
|
|
@@ -64,12 +64,11 @@ const settings = {
|
|
|
64
64
|
|
|
65
65
|
hideRecordingButton: true, // No platform-side recording — privacy + dispute via chat archive
|
|
66
66
|
hideShareInviteButton: true, // Buyer ↔ seller only — don't allow inviting
|
|
67
|
-
|
|
68
|
-
hideVirtualBackgroundButton: false, // Privacy — most people are in their home
|
|
67
|
+
hideScreenSharingButton: false, // Useful for "show me the actual condition"
|
|
69
68
|
hideChatButton: false, // For sharing photos/details mid-call
|
|
70
69
|
|
|
71
70
|
hideRaiseHandButton: true,
|
|
72
|
-
|
|
71
|
+
idleTimeoutPeriodBeforePrompt: 600_000, // 10min idle = end (sometimes deals die)
|
|
73
72
|
};
|
|
74
73
|
```
|
|
75
74
|
|
|
@@ -57,18 +57,17 @@ const settings = {
|
|
|
57
57
|
hideChangeLayoutButton: false, // Agent may want grid for note-taking workflows
|
|
58
58
|
|
|
59
59
|
hideRecordingButton: true, // Don't let agent toggle — server-side auto-record
|
|
60
|
-
|
|
60
|
+
autoStartRecording: true, // QA recording is the policy
|
|
61
61
|
// (consent text in the in-app "By starting the call,
|
|
62
62
|
// you agree to recording for quality" notice)
|
|
63
|
-
|
|
63
|
+
hideScreenSharingButton: false, // Critical for troubleshooting
|
|
64
64
|
|
|
65
|
-
hideVirtualBackgroundButton: false, // Agent uses brand background
|
|
66
65
|
|
|
67
66
|
hideChatButton: false, // For pasting links/error messages
|
|
68
67
|
hideShareInviteButton: true, // Customer ↔ agent only
|
|
69
68
|
|
|
70
69
|
hideRaiseHandButton: true,
|
|
71
|
-
|
|
70
|
+
idleTimeoutPeriodBeforePrompt: 300_000, // 5min — short, agents are busy
|
|
72
71
|
};
|
|
73
72
|
```
|
|
74
73
|
|
|
@@ -34,17 +34,16 @@ const settings = {
|
|
|
34
34
|
hideChangeLayoutButton: false, // Let users pick (some prefer SPOTLIGHT)
|
|
35
35
|
|
|
36
36
|
hideRecordingButton: false, // Anyone can record; team norms decide
|
|
37
|
-
|
|
37
|
+
autoStartRecording: false,
|
|
38
38
|
|
|
39
|
-
|
|
40
|
-
hideVirtualBackgroundButton: false,
|
|
39
|
+
hideScreenSharingButton: false, // Critical
|
|
41
40
|
|
|
42
41
|
hideChatButton: false, // Side-chat for links
|
|
43
42
|
hideShareInviteButton: false, // Pull others in mid-call
|
|
44
43
|
|
|
45
44
|
hideRaiseHandButton: false, // For larger team meetings (10+)
|
|
46
45
|
|
|
47
|
-
|
|
46
|
+
idleTimeoutPeriodBeforePrompt: 1_800_000, // 30min — meetings can have lulls
|
|
48
47
|
};
|
|
49
48
|
```
|
|
50
49
|
|
|
@@ -56,24 +55,36 @@ const settings = {
|
|
|
56
55
|
// When someone starts a call in a team group, fire a custom message
|
|
57
56
|
// so other members see "🟢 Huddle started by Sarah" in the channel.
|
|
58
57
|
async function startHuddle(group: CometChat.Group) {
|
|
59
|
-
// 1.
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
58
|
+
// 1. Mint a session via the Chat SDK. A Call returned by initiateCall carries
|
|
59
|
+
// a server-issued sessionId — getSessionId() (chat-sdk Call.getSessionId).
|
|
60
|
+
// There is NO object-form CometChatCalls.startSession({sessionId,participants}).
|
|
61
|
+
const call = new CometChat.Call(
|
|
62
|
+
group.guid,
|
|
63
|
+
CometChat.CALL_TYPE.VIDEO,
|
|
64
|
+
CometChat.RECEIVER_TYPE.GROUP,
|
|
65
|
+
);
|
|
66
|
+
const initiatedCall = await CometChat.initiateCall(call); // returns Call
|
|
67
|
+
const sessionId = initiatedCall.getSessionId();
|
|
64
68
|
|
|
65
|
-
// 2. Post a custom message in the chat group
|
|
69
|
+
// 2. Post a custom message in the chat group so members see the huddle + can join
|
|
66
70
|
const customMessage = new CometChat.CustomMessage(
|
|
67
71
|
group.guid,
|
|
68
72
|
CometChat.RECEIVER_TYPE.GROUP,
|
|
69
73
|
"huddle_started",
|
|
70
74
|
{
|
|
71
|
-
sessionId
|
|
75
|
+
sessionId,
|
|
72
76
|
startedBy: currentUserUid,
|
|
73
77
|
startedAt: Date.now(),
|
|
74
78
|
},
|
|
75
79
|
);
|
|
76
80
|
await CometChat.sendCustomMessage(customMessage);
|
|
81
|
+
|
|
82
|
+
// 3. The starter joins the session. Each joiner does the same with the shared
|
|
83
|
+
// sessionId: generateToken(sessionId) → joinSession(token, settings, container).
|
|
84
|
+
// (calls-sdk joinSession(callToken, SessionSettings, HTMLElement) is canonical;
|
|
85
|
+
// the old startSession(callToken, callSettings, container) is deprecated.)
|
|
86
|
+
const { token } = await CometChatCalls.generateToken(sessionId);
|
|
87
|
+
await CometChatCalls.joinSession(token, sessionSettings, callContainer);
|
|
77
88
|
}
|
|
78
89
|
```
|
|
79
90
|
|
|
@@ -124,7 +135,7 @@ app.post("/webhooks/call", async (req, res) => {
|
|
|
124
135
|
## Anti-patterns
|
|
125
136
|
|
|
126
137
|
1. **Force-ringing all team members.** Annoying — they might be focused. Use channel notification + opt-in join.
|
|
127
|
-
2. **
|
|
138
|
+
2. **Assuming a screen-share quality knob exists in SessionSettings.** There is no `screenShareQuality` field on SessionSettings (verified against the calls-sdk types) — don't promise a non-API setting. Screen-share resolution is negotiated by the browser/WebRTC; tune the source (share a tab vs full screen) rather than a SessionSettings field.
|
|
128
139
|
3. **Idle timeout too short.** Standup runs 35min, idle of 600s ends it during a debate. Use 1800s (30min).
|
|
129
140
|
4. **Recording auto-on without team norms.** Some teams hate being recorded; surprise recording = trust hit. Default off; let team decide.
|
|
130
141
|
5. **No way to invite outside team mid-call.** Sometimes you need to pull in a designer or PM. Don't hide share-invite for team calls.
|
|
@@ -47,16 +47,15 @@ const settings = {
|
|
|
47
47
|
hideChangeLayoutButton: true, // Don't let user switch — calmer UX
|
|
48
48
|
|
|
49
49
|
hideRecordingButton: false, // Provider needs it
|
|
50
|
-
|
|
50
|
+
autoStartRecording: false, // NEVER auto-record without consent
|
|
51
51
|
|
|
52
|
-
|
|
53
|
-
hideVirtualBackgroundButton: false, // Patient often wants privacy
|
|
52
|
+
hideScreenSharingButton: false, // Sharing labs is core
|
|
54
53
|
|
|
55
54
|
hideChatButton: false, // For sending links/PDFs
|
|
56
55
|
hideShareInviteButton: true, // Patient ↔ provider only — no inviting
|
|
57
56
|
hideRaiseHandButton: true, // 1:1 — no need
|
|
58
57
|
|
|
59
|
-
|
|
58
|
+
idleTimeoutPeriodBeforePrompt: 600_000, // 10min — long enough for thinking pauses
|
|
60
59
|
};
|
|
61
60
|
```
|
|
62
61
|
|