@cometchat/skills 4.4.2 → 5.0.1

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.
Files changed (518) hide show
  1. package/.claude-plugin/marketplace.json +55 -0
  2. package/.claude-plugin/plugin.json +14 -0
  3. package/CHANGELOG.md +44 -0
  4. package/LICENSE +21 -0
  5. package/MIGRATING.md +187 -0
  6. package/README.md +52 -156
  7. package/RULES.md +125 -0
  8. package/bin/cometchat-skills.mjs +1280 -0
  9. package/bin/legacy-skills.json +95 -0
  10. package/catalogs/android-v6.json +1646 -0
  11. package/catalogs/flutter-v6.json +651 -0
  12. package/catalogs/ios-v5.json +1383 -0
  13. package/catalogs/rn-calls-v5.json +134 -0
  14. package/catalogs/rn-calls-v5.symbols.txt +58 -0
  15. package/catalogs/rn-sdk-v4.json +672 -0
  16. package/catalogs/rn-v5.json +449 -0
  17. package/catalogs/rn-v5.symbols.txt +216 -0
  18. package/catalogs/sdk-android-v5.json +514 -0
  19. package/contracts.android-calls-v5.json +122 -0
  20. package/contracts.android-v6.json +135 -0
  21. package/contracts.angular-v5.json +694 -0
  22. package/contracts.flutter-calls-v5.json +77 -0
  23. package/contracts.flutter-v6.json +126 -0
  24. package/contracts.ios-calls-v5.json +67 -0
  25. package/contracts.ios-v5.json +436 -0
  26. package/contracts.json +82 -0
  27. package/contracts.rn-calls-v5.json +77 -0
  28. package/contracts.rn-v5.json +727 -0
  29. package/contracts.sdk-android-v5.json +15 -0
  30. package/contracts.web-calls-v5.json +45 -0
  31. package/features.android-calls-v5.json +246 -0
  32. package/features.android-v6.json +65 -0
  33. package/features.angular-v5.json +521 -0
  34. package/features.flutter-calls-v5.json +286 -0
  35. package/features.flutter-v6.json +484 -0
  36. package/features.ios-calls-v5.json +236 -0
  37. package/features.ios-v5.json +573 -0
  38. package/features.json +61 -0
  39. package/features.rn-calls-v5.json +187 -0
  40. package/features.rn-v5.json +614 -0
  41. package/features.sdk-android-v5.json +40 -0
  42. package/features.sdk-jsv4.json +24 -0
  43. package/features.web-calls-v5.json +108 -0
  44. package/package.json +156 -74
  45. package/peers.yaml +355 -0
  46. package/registry/README.md +31 -0
  47. package/registry/android-calls-v5.json +94 -0
  48. package/registry/android-v6.json +177 -0
  49. package/registry/angular-v5.json +154 -0
  50. package/registry/flutter-calls-v5.json +94 -0
  51. package/registry/flutter-v6.json +159 -0
  52. package/registry/ios-calls-v5.json +99 -0
  53. package/registry/ios-v5.json +152 -0
  54. package/registry/rn-calls-v5.json +99 -0
  55. package/registry/rn-v5.json +169 -0
  56. package/registry/sdk-android-v5.json +93 -0
  57. package/registry/sdk-jsv4.json +93 -0
  58. package/registry/web-calls-v5.json +94 -0
  59. package/registry/web-v7.json +154 -0
  60. package/skills/cometchat/SKILL.md +47 -2096
  61. package/skills/cometchat-a11y/SKILL.md +44 -472
  62. package/skills/cometchat-analytics/SKILL.md +61 -0
  63. package/skills/cometchat-android-v5-calls-sdk/SKILL.md +206 -0
  64. package/skills/cometchat-android-v5-calls-sdk/references/build-truth.md +63 -0
  65. package/skills/cometchat-android-v5-calls-sdk/references/docs-map.md +119 -0
  66. package/skills/cometchat-android-v5-calls-sdk/references/method-map.md +53 -0
  67. package/skills/cometchat-android-v5-calls-sdk/references/pitfalls.md +72 -0
  68. package/skills/cometchat-android-v5-calls-sdk/references/ringing.md +92 -0
  69. package/skills/cometchat-android-v5-calls-sdk/references/user-switch.md +90 -0
  70. package/skills/cometchat-android-v5-sdk/SKILL.md +127 -0
  71. package/skills/cometchat-android-v5-sdk/references/app-surface.md +88 -0
  72. package/skills/cometchat-android-v5-sdk/references/docs-map.md +91 -0
  73. package/skills/cometchat-android-v6-builder-settings/SKILL.md +51 -137
  74. package/skills/cometchat-android-v6-calls/SKILL.md +128 -413
  75. package/skills/cometchat-android-v6-compose-components/SKILL.md +84 -194
  76. package/skills/cometchat-android-v6-compose-customization/SKILL.md +66 -411
  77. package/skills/cometchat-android-v6-compose-placement/SKILL.md +154 -237
  78. package/skills/cometchat-android-v6-core/SKILL.md +236 -672
  79. package/skills/cometchat-android-v6-core/references/anti-patterns.md +31 -0
  80. package/skills/cometchat-android-v6-core/references/component-props.md +168 -0
  81. package/skills/cometchat-android-v6-core/references/docs-map.md +153 -0
  82. package/skills/cometchat-android-v6-core/references/layout.md +112 -0
  83. package/skills/cometchat-android-v6-core/references/lifecycle.md +75 -0
  84. package/skills/cometchat-android-v6-core/references/setup-credentials.md +105 -0
  85. package/skills/cometchat-android-v6-core/references/troubleshooting.md +36 -0
  86. package/skills/cometchat-android-v6-events/SKILL.md +46 -184
  87. package/skills/cometchat-android-v6-extensions/SKILL.md +39 -179
  88. package/skills/cometchat-android-v6-features/SKILL.md +74 -143
  89. package/skills/cometchat-android-v6-kotlin-components/SKILL.md +75 -193
  90. package/skills/cometchat-android-v6-kotlin-customization/SKILL.md +67 -419
  91. package/skills/cometchat-android-v6-kotlin-placement/SKILL.md +77 -223
  92. package/skills/cometchat-android-v6-migration/SKILL.md +67 -378
  93. package/skills/cometchat-android-v6-production/SKILL.md +41 -179
  94. package/skills/cometchat-android-v6-push/SKILL.md +39 -289
  95. package/skills/cometchat-android-v6-testing/SKILL.md +50 -265
  96. package/skills/cometchat-android-v6-troubleshooting/SKILL.md +70 -254
  97. package/skills/cometchat-angular-v5-calls/SKILL.md +193 -0
  98. package/skills/cometchat-angular-v5-components/SKILL.md +131 -0
  99. package/skills/cometchat-angular-v5-components/references/catalog.md +111 -0
  100. package/skills/cometchat-angular-v5-components/references/host-composed.md +46 -0
  101. package/skills/cometchat-angular-v5-core/SKILL.md +300 -0
  102. package/skills/cometchat-angular-v5-core/references/anti-patterns.md +49 -0
  103. package/skills/cometchat-angular-v5-core/references/component-props.md +55 -0
  104. package/skills/cometchat-angular-v5-core/references/dependencies.md +66 -0
  105. package/skills/cometchat-angular-v5-core/references/docs-map.md +132 -0
  106. package/skills/cometchat-angular-v5-core/references/layout.md +64 -0
  107. package/skills/cometchat-angular-v5-core/references/lifecycle.md +202 -0
  108. package/skills/cometchat-angular-v5-core/references/setup-credentials.md +137 -0
  109. package/skills/cometchat-angular-v5-core/references/theming.md +70 -0
  110. package/skills/cometchat-angular-v5-core/references/troubleshooting.md +27 -0
  111. package/skills/cometchat-angular-v5-customization/SKILL.md +94 -0
  112. package/skills/cometchat-angular-v5-features/SKILL.md +107 -0
  113. package/skills/cometchat-angular-v5-features/references/custom-messages.md +133 -0
  114. package/skills/cometchat-angular-v5-features/references/formatters.md +28 -0
  115. package/skills/cometchat-angular-v5-features/references/host-composed-extensions.md +85 -0
  116. package/skills/cometchat-angular-v5-migration/SKILL.md +40 -0
  117. package/skills/cometchat-angular-v5-migration/references/migration-guide.md +165 -0
  118. package/skills/cometchat-angular-v5-patterns/SKILL.md +107 -0
  119. package/skills/cometchat-angular-v5-placement/SKILL.md +133 -0
  120. package/skills/cometchat-angular-v5-placement/references/combined-app.md +174 -0
  121. package/skills/cometchat-angular-v5-placement/references/core-surface.md +199 -0
  122. package/skills/cometchat-angular-v5-production/SKILL.md +102 -0
  123. package/skills/cometchat-angular-v5-push/SKILL.md +61 -0
  124. package/skills/cometchat-angular-v5-testing/SKILL.md +112 -0
  125. package/skills/cometchat-angular-v5-troubleshooting/SKILL.md +96 -0
  126. package/skills/cometchat-audit/SKILL.md +61 -0
  127. package/skills/cometchat-compliance/SKILL.md +63 -0
  128. package/skills/cometchat-flutter-v5-sdk/SKILL.md +188 -0
  129. package/skills/cometchat-flutter-v5-sdk/references/doc-corrections.md +55 -0
  130. package/skills/cometchat-flutter-v5-sdk/references/docs-map.md +211 -0
  131. package/skills/cometchat-flutter-v5-sdk/references/platform-notes.md +48 -0
  132. package/skills/cometchat-flutter-v5-sdk/references/transcription.md +87 -0
  133. package/skills/cometchat-flutter-v6-calls/SKILL.md +75 -389
  134. package/skills/cometchat-flutter-v6-components/SKILL.md +88 -361
  135. package/skills/cometchat-flutter-v6-core/SKILL.md +154 -593
  136. package/skills/cometchat-flutter-v6-core/references/anti-patterns.md +55 -0
  137. package/skills/cometchat-flutter-v6-core/references/docs-map.md +143 -0
  138. package/skills/cometchat-flutter-v6-core/references/layout.md +45 -0
  139. package/skills/cometchat-flutter-v6-core/references/lifecycle.md +87 -0
  140. package/skills/cometchat-flutter-v6-core/references/setup-credentials.md +84 -0
  141. package/skills/cometchat-flutter-v6-core/references/troubleshooting.md +26 -0
  142. package/skills/cometchat-flutter-v6-customization/SKILL.md +70 -712
  143. package/skills/cometchat-flutter-v6-events/SKILL.md +79 -174
  144. package/skills/cometchat-flutter-v6-features/SKILL.md +55 -394
  145. package/skills/cometchat-flutter-v6-migration/SKILL.md +68 -367
  146. package/skills/cometchat-flutter-v6-migration/references/migration-guide.md +132 -0
  147. package/skills/cometchat-flutter-v6-patterns/SKILL.md +61 -0
  148. package/skills/cometchat-flutter-v6-placement/SKILL.md +94 -381
  149. package/skills/cometchat-flutter-v6-production/SKILL.md +59 -615
  150. package/skills/cometchat-flutter-v6-push/SKILL.md +46 -455
  151. package/skills/cometchat-flutter-v6-testing/SKILL.md +68 -299
  152. package/skills/cometchat-flutter-v6-troubleshooting/SKILL.md +54 -878
  153. package/skills/cometchat-i18n/SKILL.md +35 -404
  154. package/skills/cometchat-ios-calls/SKILL.md +112 -563
  155. package/skills/cometchat-ios-components/SKILL.md +44 -834
  156. package/skills/cometchat-ios-core/SKILL.md +182 -1068
  157. package/skills/cometchat-ios-core/references/anti-patterns.md +113 -0
  158. package/skills/cometchat-ios-core/references/docs-map.md +124 -0
  159. package/skills/cometchat-ios-core/references/install.md +23 -0
  160. package/skills/cometchat-ios-core/references/layout.md +219 -0
  161. package/skills/cometchat-ios-core/references/setup-credentials.md +197 -0
  162. package/skills/cometchat-ios-core/references/swiftui.md +91 -0
  163. package/skills/cometchat-ios-core/references/troubleshooting.md +100 -0
  164. package/skills/cometchat-ios-customization/SKILL.md +33 -968
  165. package/skills/cometchat-ios-features/SKILL.md +29 -738
  166. package/skills/cometchat-ios-migration/SKILL.md +39 -0
  167. package/skills/cometchat-ios-placement/SKILL.md +51 -729
  168. package/skills/cometchat-ios-production/SKILL.md +67 -723
  169. package/skills/cometchat-ios-push/SKILL.md +24 -602
  170. package/skills/cometchat-ios-testing/SKILL.md +36 -355
  171. package/skills/cometchat-ios-troubleshooting/SKILL.md +31 -989
  172. package/skills/cometchat-ios-v5-sdk/SKILL.md +161 -0
  173. package/skills/cometchat-ios-v5-sdk/references/docs-map.md +326 -0
  174. package/skills/cometchat-js-v5-sdk/SKILL.md +95 -0
  175. package/skills/cometchat-js-v5-sdk/references/docs-map.md +114 -0
  176. package/skills/cometchat-migrate-from-getstream/SKILL.md +65 -0
  177. package/skills/cometchat-migrate-from-getstream/references/concept-map.md +98 -0
  178. package/skills/cometchat-migrate-from-getstream/references/data-migration.md +74 -0
  179. package/skills/cometchat-migrate-from-getstream/references/feature-map.md +108 -0
  180. package/skills/cometchat-migrate-from-getstream/references/inventory.md +82 -0
  181. package/skills/cometchat-migrate-from-getstream/references/native-build.md +9 -0
  182. package/skills/cometchat-migrate-from-getstream/references/report-template.md +59 -0
  183. package/skills/cometchat-migrate-from-sendbird/SKILL.md +64 -0
  184. package/skills/cometchat-migrate-from-sendbird/references/concept-map.md +99 -0
  185. package/skills/cometchat-migrate-from-sendbird/references/data-migration.md +74 -0
  186. package/skills/cometchat-migrate-from-sendbird/references/feature-map.md +104 -0
  187. package/skills/cometchat-migrate-from-sendbird/references/inventory.md +86 -0
  188. package/skills/cometchat-migrate-from-sendbird/references/native-build.md +10 -0
  189. package/skills/cometchat-migrate-from-sendbird/references/report-template.md +59 -0
  190. package/skills/cometchat-migrate-from-twilio/SKILL.md +52 -0
  191. package/skills/cometchat-migrate-from-twilio/references/concept-map.md +49 -0
  192. package/skills/cometchat-migrate-from-twilio/references/data-migration.md +50 -0
  193. package/skills/cometchat-migrate-from-twilio/references/feature-map.md +27 -0
  194. package/skills/cometchat-migrate-from-twilio/references/inventory.md +53 -0
  195. package/skills/cometchat-migrate-from-twilio/references/report-template.md +52 -0
  196. package/skills/cometchat-moderation/SKILL.md +58 -0
  197. package/skills/cometchat-onboarding/SKILL.md +92 -0
  198. package/skills/cometchat-onboarding/references/archetypes.md +51 -0
  199. package/skills/cometchat-onboarding/references/calling-first.md +77 -0
  200. package/skills/cometchat-onboarding/references/not-in-this-pack.md +8 -0
  201. package/skills/cometchat-onboarding/references/plan-artifact.md +133 -0
  202. package/skills/cometchat-onboarding/references/platforms.md +105 -0
  203. package/skills/cometchat-react-native-bare-patterns/SKILL.md +120 -0
  204. package/skills/cometchat-react-native-calls/SKILL.md +200 -0
  205. package/skills/cometchat-react-native-components/SKILL.md +142 -0
  206. package/skills/cometchat-react-native-core/SKILL.md +335 -0
  207. package/skills/cometchat-react-native-core/references/anti-patterns.md +79 -0
  208. package/skills/cometchat-react-native-core/references/component-props.md +105 -0
  209. package/skills/cometchat-react-native-core/references/dependencies.md +62 -0
  210. package/skills/cometchat-react-native-core/references/docs-map.md +127 -0
  211. package/skills/cometchat-react-native-core/references/layout.md +61 -0
  212. package/skills/cometchat-react-native-core/references/lifecycle.md +64 -0
  213. package/skills/cometchat-react-native-core/references/setup-credentials.md +39 -0
  214. package/skills/cometchat-react-native-customization/SKILL.md +198 -0
  215. package/skills/cometchat-react-native-expo-patterns/SKILL.md +116 -0
  216. package/skills/cometchat-react-native-features/SKILL.md +122 -0
  217. package/skills/cometchat-react-native-migration/SKILL.md +103 -0
  218. package/skills/cometchat-react-native-placement/SKILL.md +158 -0
  219. package/skills/cometchat-react-native-production/SKILL.md +79 -0
  220. package/skills/cometchat-react-native-push/SKILL.md +88 -0
  221. package/skills/cometchat-react-native-sdk/SKILL.md +133 -0
  222. package/skills/cometchat-react-native-sdk/references/method-map.md +239 -0
  223. package/skills/cometchat-react-native-sdk/references/page-map.md +96 -0
  224. package/skills/cometchat-react-native-testing/SKILL.md +94 -0
  225. package/skills/cometchat-react-native-troubleshooting/SKILL.md +174 -0
  226. package/skills/cometchat-react-native-v5-sdk/SKILL.md +150 -0
  227. package/skills/cometchat-react-native-v5-sdk/references/docs-map.md +127 -0
  228. package/skills/cometchat-react-native-v5-sdk/references/ringing-voip.md +369 -0
  229. package/skills/cometchat-react-v7-calls/SKILL.md +75 -0
  230. package/skills/cometchat-react-v7-components/SKILL.md +72 -0
  231. package/skills/cometchat-react-v7-core/SKILL.md +101 -0
  232. package/skills/cometchat-react-v7-core/references/anti-patterns.md +19 -0
  233. package/skills/cometchat-react-v7-core/references/component-props.md +82 -0
  234. package/skills/cometchat-react-v7-core/references/dependencies.md +23 -0
  235. package/skills/cometchat-react-v7-core/references/docs-map.md +117 -0
  236. package/skills/cometchat-react-v7-core/references/layout.md +150 -0
  237. package/skills/cometchat-react-v7-core/references/lifecycle.md +74 -0
  238. package/skills/cometchat-react-v7-core/references/setup-credentials.md +58 -0
  239. package/skills/cometchat-react-v7-core/references/ssr.md +11 -0
  240. package/skills/cometchat-react-v7-core/references/theming.md +52 -0
  241. package/skills/cometchat-react-v7-customization/SKILL.md +84 -0
  242. package/skills/cometchat-react-v7-features/SKILL.md +92 -0
  243. package/skills/cometchat-react-v7-migration/SKILL.md +39 -0
  244. package/skills/cometchat-react-v7-migration/references/migration-guide.md +119 -0
  245. package/skills/cometchat-react-v7-patterns/SKILL.md +43 -0
  246. package/skills/cometchat-react-v7-placement/SKILL.md +106 -0
  247. package/skills/cometchat-react-v7-placement/references/recipes.md +354 -0
  248. package/skills/cometchat-react-v7-production/SKILL.md +84 -0
  249. package/skills/cometchat-react-v7-push/SKILL.md +53 -0
  250. package/skills/cometchat-react-v7-testing/SKILL.md +60 -0
  251. package/skills/cometchat-react-v7-troubleshooting/SKILL.md +47 -0
  252. package/skills/cometchat-security/SKILL.md +80 -0
  253. package/skills/cometchat-self-host/SKILL.md +56 -0
  254. package/test-suite/README.md +70 -0
  255. package/test-suite/catalogs/android-calls-v5.json +830 -0
  256. package/test-suite/catalogs/android-calls-v5.symbols.txt +499 -0
  257. package/test-suite/catalogs/android-v6.json +1646 -0
  258. package/test-suite/catalogs/android-v6.symbols.txt +298 -0
  259. package/test-suite/catalogs/angular-v5.json +7587 -0
  260. package/test-suite/catalogs/flutter-calls-v5.json +196 -0
  261. package/test-suite/catalogs/flutter-calls-v5.symbols.txt +59 -0
  262. package/test-suite/catalogs/flutter-v6.json +651 -0
  263. package/test-suite/catalogs/ios-calls-v5.json +158 -0
  264. package/test-suite/catalogs/ios-calls-v5.symbols.txt +70 -0
  265. package/test-suite/catalogs/ios-v5.json +1383 -0
  266. package/test-suite/catalogs/ios-v5.symbols.txt +699 -0
  267. package/test-suite/catalogs/rn-calls-v5.json +134 -0
  268. package/test-suite/catalogs/rn-sdk-v4.json +672 -0
  269. package/test-suite/catalogs/rn-v5.json +449 -0
  270. package/test-suite/catalogs/sdk-android-v5.json +514 -0
  271. package/test-suite/catalogs/sdk-android-v5.symbols.txt +254 -0
  272. package/test-suite/catalogs/sdk-jsv4.json +800 -0
  273. package/test-suite/catalogs/web-calls-v5.json +195 -0
  274. package/test-suite/catalogs/web-v7.json +1243 -0
  275. package/test-suite/scripts/build-registry.mjs +113 -0
  276. package/test-suite/scripts/catalog-refresh-dart.mjs +151 -0
  277. package/test-suite/scripts/catalog-refresh.mjs +100 -0
  278. package/test-suite/scripts/lint-skills.mjs +932 -0
  279. package/test-suite/scripts/measure-tokens.mjs +169 -0
  280. package/test-suite/scripts/typecheck-fences-dart.mjs +437 -0
  281. package/test-suite/scripts/typecheck-fences-kotlin.mjs +269 -0
  282. package/test-suite/scripts/typecheck-fences.mjs +206 -0
  283. package/test-suite/scripts/verify-catalog.mjs +242 -0
  284. package/test-suite/scripts/verify-contract-fences.mjs +94 -0
  285. package/test-suite/scripts/verify-detection.mjs +178 -0
  286. package/test-suite/scripts/verify-docs-base.mjs +91 -0
  287. package/test-suite/scripts/verify-family-agnostic.mjs +134 -0
  288. package/test-suite/scripts/verify-golden-path.mjs +138 -0
  289. package/test-suite/scripts/verify-oracle-components.mjs +133 -0
  290. package/test-suite/scripts/verify-template-bindings.mjs +148 -0
  291. package/test-suite/typecheck/angular-v5/package.json +21 -0
  292. package/test-suite/typecheck/angular-v5/tsconfig.json +21 -0
  293. package/test-suite/typecheck/flutter-v6/analysis_options.yaml +25 -0
  294. package/test-suite/typecheck/flutter-v6/pubspec.yaml +21 -0
  295. package/test-suite/typecheck/web-v7/package.json +18 -0
  296. package/test-suite/typecheck/web-v7/tsconfig.json +19 -0
  297. package/bin/install.js +0 -1003
  298. package/skills/.claude-plugin/marketplace.json +0 -86
  299. package/skills/cometchat/references/asking-questions.md +0 -48
  300. package/skills/cometchat-android-v5/SKILL.md +0 -121
  301. package/skills/cometchat-android-v5-calls/SKILL.md +0 -429
  302. package/skills/cometchat-android-v5-calls/references/README.md +0 -53
  303. package/skills/cometchat-android-v5-calls/references/add-calls-to-existing-chat.md +0 -197
  304. package/skills/cometchat-android-v5-calls/references/audio-controls.md +0 -91
  305. package/skills/cometchat-android-v5-calls/references/background-handling.md +0 -168
  306. package/skills/cometchat-android-v5-calls/references/call-layouts.md +0 -131
  307. package/skills/cometchat-android-v5-calls/references/call-logs.md +0 -113
  308. package/skills/cometchat-android-v5-calls/references/call-session.md +0 -274
  309. package/skills/cometchat-android-v5-calls/references/custom-ui.md +0 -150
  310. package/skills/cometchat-android-v5-calls/references/event-listeners.md +0 -123
  311. package/skills/cometchat-android-v5-calls/references/group-calls.md +0 -205
  312. package/skills/cometchat-android-v5-calls/references/idle-timeout.md +0 -117
  313. package/skills/cometchat-android-v5-calls/references/in-call-chat.md +0 -134
  314. package/skills/cometchat-android-v5-calls/references/join-session.md +0 -120
  315. package/skills/cometchat-android-v5-calls/references/migration-v4-to-v5.md +0 -222
  316. package/skills/cometchat-android-v5-calls/references/participant-management.md +0 -110
  317. package/skills/cometchat-android-v5-calls/references/picture-in-picture.md +0 -106
  318. package/skills/cometchat-android-v5-calls/references/raise-hand.md +0 -248
  319. package/skills/cometchat-android-v5-calls/references/recording.md +0 -101
  320. package/skills/cometchat-android-v5-calls/references/ringing-integration.md +0 -152
  321. package/skills/cometchat-android-v5-calls/references/screen-sharing.md +0 -78
  322. package/skills/cometchat-android-v5-calls/references/server-fcm-voip.md +0 -215
  323. package/skills/cometchat-android-v5-calls/references/session-settings.md +0 -121
  324. package/skills/cometchat-android-v5-calls/references/setup.md +0 -137
  325. package/skills/cometchat-android-v5-calls/references/share-invite.md +0 -156
  326. package/skills/cometchat-android-v5-calls/references/video-controls.md +0 -87
  327. package/skills/cometchat-android-v5-calls/references/voip-calling.md +0 -526
  328. package/skills/cometchat-android-v5-components/SKILL.md +0 -431
  329. package/skills/cometchat-android-v5-core/SKILL.md +0 -486
  330. package/skills/cometchat-android-v5-customization/SKILL.md +0 -469
  331. package/skills/cometchat-android-v5-extensions/SKILL.md +0 -127
  332. package/skills/cometchat-android-v5-features/SKILL.md +0 -131
  333. package/skills/cometchat-android-v5-placement/SKILL.md +0 -277
  334. package/skills/cometchat-android-v5-production/SKILL.md +0 -95
  335. package/skills/cometchat-android-v5-push/SKILL.md +0 -619
  336. package/skills/cometchat-android-v5-testing/SKILL.md +0 -188
  337. package/skills/cometchat-android-v5-theming/SKILL.md +0 -167
  338. package/skills/cometchat-android-v5-troubleshooting/SKILL.md +0 -74
  339. package/skills/cometchat-android-v6/SKILL.md +0 -108
  340. package/skills/cometchat-android-v6-calls/references/add-calls-to-existing-chat.md +0 -97
  341. package/skills/cometchat-android-v6-calls/references/advanced-features.md +0 -87
  342. package/skills/cometchat-android-v6-calls/references/call-layouts.md +0 -100
  343. package/skills/cometchat-android-v6-calls/references/call-session.md +0 -163
  344. package/skills/cometchat-android-v6-calls/references/device-management.md +0 -172
  345. package/skills/cometchat-android-v6-calls/references/group-calls.md +0 -191
  346. package/skills/cometchat-android-v6-calls/references/idle-timeout.md +0 -110
  347. package/skills/cometchat-android-v6-calls/references/in-call-chat.md +0 -141
  348. package/skills/cometchat-android-v6-calls/references/raise-hand.md +0 -188
  349. package/skills/cometchat-android-v6-calls/references/ringing-integration.md +0 -176
  350. package/skills/cometchat-android-v6-calls/references/server-fcm-voip.md +0 -127
  351. package/skills/cometchat-android-v6-calls/references/share-invite.md +0 -105
  352. package/skills/cometchat-android-v6-compose-theming/SKILL.md +0 -250
  353. package/skills/cometchat-android-v6-kotlin-theming/SKILL.md +0 -233
  354. package/skills/cometchat-angular-calls/SKILL.md +0 -380
  355. package/skills/cometchat-angular-calls/references/add-calls-to-existing-chat.md +0 -96
  356. package/skills/cometchat-angular-calls/references/call-layouts.md +0 -123
  357. package/skills/cometchat-angular-calls/references/call-session.md +0 -167
  358. package/skills/cometchat-angular-calls/references/custom-ui.md +0 -239
  359. package/skills/cometchat-angular-calls/references/device-management.md +0 -154
  360. package/skills/cometchat-angular-calls/references/group-calls.md +0 -433
  361. package/skills/cometchat-angular-calls/references/idle-timeout.md +0 -161
  362. package/skills/cometchat-angular-calls/references/in-call-chat.md +0 -148
  363. package/skills/cometchat-angular-calls/references/lazy-loading-pitfalls.md +0 -205
  364. package/skills/cometchat-angular-calls/references/migration-v4-to-v5.md +0 -53
  365. package/skills/cometchat-angular-calls/references/ngzone-and-async-callbacks.md +0 -184
  366. package/skills/cometchat-angular-calls/references/picture-in-picture.md +0 -285
  367. package/skills/cometchat-angular-calls/references/raise-hand.md +0 -172
  368. package/skills/cometchat-angular-calls/references/recording-screen-share.md +0 -260
  369. package/skills/cometchat-angular-calls/references/ringing-integration.md +0 -133
  370. package/skills/cometchat-angular-calls/references/server-web-push-vapid.md +0 -100
  371. package/skills/cometchat-angular-calls/references/share-invite.md +0 -122
  372. package/skills/cometchat-angular-calls/references/virtual-background.md +0 -29
  373. package/skills/cometchat-angular-components/SKILL.md +0 -235
  374. package/skills/cometchat-angular-core/SKILL.md +0 -386
  375. package/skills/cometchat-angular-customization/SKILL.md +0 -616
  376. package/skills/cometchat-angular-features/SKILL.md +0 -329
  377. package/skills/cometchat-angular-patterns/SKILL.md +0 -256
  378. package/skills/cometchat-angular-placement/SKILL.md +0 -314
  379. package/skills/cometchat-angular-production/SKILL.md +0 -564
  380. package/skills/cometchat-angular-push/SKILL.md +0 -389
  381. package/skills/cometchat-angular-testing/SKILL.md +0 -605
  382. package/skills/cometchat-angular-theming/SKILL.md +0 -290
  383. package/skills/cometchat-angular-troubleshooting/SKILL.md +0 -364
  384. package/skills/cometchat-astro-patterns/SKILL.md +0 -708
  385. package/skills/cometchat-calls/SKILL.md +0 -364
  386. package/skills/cometchat-calls/references/use-case-broadcast.md +0 -199
  387. package/skills/cometchat-calls/references/use-case-marketplace.md +0 -157
  388. package/skills/cometchat-calls/references/use-case-support.md +0 -189
  389. package/skills/cometchat-calls/references/use-case-team.md +0 -180
  390. package/skills/cometchat-calls/references/use-case-telehealth.md +0 -153
  391. package/skills/cometchat-components/SKILL.md +0 -1142
  392. package/skills/cometchat-core/SKILL.md +0 -1048
  393. package/skills/cometchat-customization/SKILL.md +0 -580
  394. package/skills/cometchat-customization/references/component-catalog.md +0 -236
  395. package/skills/cometchat-features/SKILL.md +0 -861
  396. package/skills/cometchat-flutter-v5/SKILL.md +0 -173
  397. package/skills/cometchat-flutter-v5-calls/SKILL.md +0 -455
  398. package/skills/cometchat-flutter-v5-calls/references/add-calls-to-existing-chat.md +0 -193
  399. package/skills/cometchat-flutter-v5-calls/references/call-layouts.md +0 -103
  400. package/skills/cometchat-flutter-v5-calls/references/call-session.md +0 -285
  401. package/skills/cometchat-flutter-v5-calls/references/device-management.md +0 -124
  402. package/skills/cometchat-flutter-v5-calls/references/group-calls.md +0 -181
  403. package/skills/cometchat-flutter-v5-calls/references/idle-timeout.md +0 -99
  404. package/skills/cometchat-flutter-v5-calls/references/in-call-chat.md +0 -135
  405. package/skills/cometchat-flutter-v5-calls/references/migration-v4-to-v5.md +0 -210
  406. package/skills/cometchat-flutter-v5-calls/references/raise-hand.md +0 -255
  407. package/skills/cometchat-flutter-v5-calls/references/ringing-integration.md +0 -196
  408. package/skills/cometchat-flutter-v5-calls/references/server-push-bridge.md +0 -101
  409. package/skills/cometchat-flutter-v5-calls/references/share-invite.md +0 -148
  410. package/skills/cometchat-flutter-v5-conversations/SKILL.md +0 -118
  411. package/skills/cometchat-flutter-v5-core/SKILL.md +0 -239
  412. package/skills/cometchat-flutter-v5-customization/SKILL.md +0 -358
  413. package/skills/cometchat-flutter-v5-events/SKILL.md +0 -156
  414. package/skills/cometchat-flutter-v5-messages/SKILL.md +0 -259
  415. package/skills/cometchat-flutter-v5-production/SKILL.md +0 -216
  416. package/skills/cometchat-flutter-v5-push/SKILL.md +0 -285
  417. package/skills/cometchat-flutter-v5-testing/SKILL.md +0 -401
  418. package/skills/cometchat-flutter-v5-theming/SKILL.md +0 -161
  419. package/skills/cometchat-flutter-v5-troubleshooting/SKILL.md +0 -130
  420. package/skills/cometchat-flutter-v5-users-groups/SKILL.md +0 -152
  421. package/skills/cometchat-flutter-v6/SKILL.md +0 -446
  422. package/skills/cometchat-flutter-v6-calls/references/add-calls-to-existing-chat.md +0 -136
  423. package/skills/cometchat-flutter-v6-calls/references/advanced-features.md +0 -89
  424. package/skills/cometchat-flutter-v6-calls/references/call-layouts.md +0 -105
  425. package/skills/cometchat-flutter-v6-calls/references/call-session.md +0 -229
  426. package/skills/cometchat-flutter-v6-calls/references/device-management.md +0 -105
  427. package/skills/cometchat-flutter-v6-calls/references/group-calls.md +0 -190
  428. package/skills/cometchat-flutter-v6-calls/references/idle-timeout.md +0 -88
  429. package/skills/cometchat-flutter-v6-calls/references/in-call-chat.md +0 -125
  430. package/skills/cometchat-flutter-v6-calls/references/raise-hand.md +0 -275
  431. package/skills/cometchat-flutter-v6-calls/references/ringing-integration.md +0 -171
  432. package/skills/cometchat-flutter-v6-calls/references/server-push-bridge.md +0 -93
  433. package/skills/cometchat-flutter-v6-calls/references/share-invite.md +0 -102
  434. package/skills/cometchat-flutter-v6-conversations/SKILL.md +0 -238
  435. package/skills/cometchat-flutter-v6-messages/SKILL.md +0 -384
  436. package/skills/cometchat-flutter-v6-theming/SKILL.md +0 -293
  437. package/skills/cometchat-flutter-v6-users-groups/SKILL.md +0 -224
  438. package/skills/cometchat-ios/SKILL.md +0 -325
  439. package/skills/cometchat-ios-calls/references/add-calls-to-existing-chat.md +0 -181
  440. package/skills/cometchat-ios-calls/references/audio-modes-and-controls.md +0 -45
  441. package/skills/cometchat-ios-calls/references/avaudiosession-routing.md +0 -188
  442. package/skills/cometchat-ios-calls/references/call-layouts.md +0 -76
  443. package/skills/cometchat-ios-calls/references/call-session.md +0 -218
  444. package/skills/cometchat-ios-calls/references/callkit-and-pushkit.md +0 -357
  445. package/skills/cometchat-ios-calls/references/custom-ui.md +0 -322
  446. package/skills/cometchat-ios-calls/references/device-management.md +0 -171
  447. package/skills/cometchat-ios-calls/references/group-calls.md +0 -359
  448. package/skills/cometchat-ios-calls/references/idle-timeout.md +0 -184
  449. package/skills/cometchat-ios-calls/references/in-call-chat.md +0 -179
  450. package/skills/cometchat-ios-calls/references/migration-v4-to-v5.md +0 -196
  451. package/skills/cometchat-ios-calls/references/picture-in-picture.md +0 -246
  452. package/skills/cometchat-ios-calls/references/raise-hand.md +0 -26
  453. package/skills/cometchat-ios-calls/references/recording-screen-share.md +0 -252
  454. package/skills/cometchat-ios-calls/references/ringing-integration.md +0 -143
  455. package/skills/cometchat-ios-calls/references/server-apns-pushkit.md +0 -267
  456. package/skills/cometchat-ios-calls/references/share-invite.md +0 -148
  457. package/skills/cometchat-ios-calls/references/swiftui-uikit-hosting.md +0 -246
  458. package/skills/cometchat-ios-calls/references/voip-cert-setup.md +0 -166
  459. package/skills/cometchat-ios-theming/SKILL.md +0 -667
  460. package/skills/cometchat-native-bare-patterns/SKILL.md +0 -550
  461. package/skills/cometchat-native-calls/SKILL.md +0 -671
  462. package/skills/cometchat-native-calls/references/add-calls-to-existing-chat.md +0 -203
  463. package/skills/cometchat-native-calls/references/call-layouts.md +0 -125
  464. package/skills/cometchat-native-calls/references/call-session.md +0 -182
  465. package/skills/cometchat-native-calls/references/custom-ui.md +0 -254
  466. package/skills/cometchat-native-calls/references/device-management.md +0 -158
  467. package/skills/cometchat-native-calls/references/expo-vs-bare.md +0 -179
  468. package/skills/cometchat-native-calls/references/group-calls.md +0 -296
  469. package/skills/cometchat-native-calls/references/idle-timeout.md +0 -128
  470. package/skills/cometchat-native-calls/references/in-call-chat.md +0 -145
  471. package/skills/cometchat-native-calls/references/migration-v4-to-v5.md +0 -72
  472. package/skills/cometchat-native-calls/references/picture-in-picture.md +0 -276
  473. package/skills/cometchat-native-calls/references/raise-hand.md +0 -205
  474. package/skills/cometchat-native-calls/references/recording-screen-share.md +0 -169
  475. package/skills/cometchat-native-calls/references/ringing-integration.md +0 -118
  476. package/skills/cometchat-native-calls/references/server-push-bridge.md +0 -135
  477. package/skills/cometchat-native-calls/references/server-push-payloads.md +0 -193
  478. package/skills/cometchat-native-calls/references/share-invite.md +0 -146
  479. package/skills/cometchat-native-calls/references/voip-push-end-to-end.md +0 -319
  480. package/skills/cometchat-native-components/SKILL.md +0 -628
  481. package/skills/cometchat-native-core/SKILL.md +0 -679
  482. package/skills/cometchat-native-customization/SKILL.md +0 -716
  483. package/skills/cometchat-native-expo-patterns/SKILL.md +0 -552
  484. package/skills/cometchat-native-features/SKILL.md +0 -638
  485. package/skills/cometchat-native-placement/SKILL.md +0 -509
  486. package/skills/cometchat-native-production/SKILL.md +0 -700
  487. package/skills/cometchat-native-push/SKILL.md +0 -594
  488. package/skills/cometchat-native-testing/SKILL.md +0 -582
  489. package/skills/cometchat-native-theming/SKILL.md +0 -681
  490. package/skills/cometchat-native-troubleshooting/SKILL.md +0 -501
  491. package/skills/cometchat-nextjs-patterns/SKILL.md +0 -899
  492. package/skills/cometchat-placement/SKILL.md +0 -1360
  493. package/skills/cometchat-production/SKILL.md +0 -1027
  494. package/skills/cometchat-react-calls/SKILL.md +0 -752
  495. package/skills/cometchat-react-calls/references/add-calls-to-existing-chat.md +0 -146
  496. package/skills/cometchat-react-calls/references/call-layouts.md +0 -160
  497. package/skills/cometchat-react-calls/references/call-session.md +0 -235
  498. package/skills/cometchat-react-calls/references/custom-ui.md +0 -247
  499. package/skills/cometchat-react-calls/references/device-management.md +0 -210
  500. package/skills/cometchat-react-calls/references/group-calls.md +0 -257
  501. package/skills/cometchat-react-calls/references/idle-timeout.md +0 -188
  502. package/skills/cometchat-react-calls/references/in-call-chat.md +0 -212
  503. package/skills/cometchat-react-calls/references/migration-v4-to-v5.md +0 -170
  504. package/skills/cometchat-react-calls/references/picture-in-picture.md +0 -245
  505. package/skills/cometchat-react-calls/references/raise-hand.md +0 -238
  506. package/skills/cometchat-react-calls/references/recording-screen-share.md +0 -144
  507. package/skills/cometchat-react-calls/references/ringing-integration.md +0 -255
  508. package/skills/cometchat-react-calls/references/server-web-push-vapid.md +0 -241
  509. package/skills/cometchat-react-calls/references/share-invite.md +0 -175
  510. package/skills/cometchat-react-calls/references/testing-calls-on-web.md +0 -216
  511. package/skills/cometchat-react-calls/references/virtual-background.md +0 -32
  512. package/skills/cometchat-react-calls/references/voip-and-web-push.md +0 -165
  513. package/skills/cometchat-react-patterns/SKILL.md +0 -628
  514. package/skills/cometchat-react-push/SKILL.md +0 -634
  515. package/skills/cometchat-react-router-patterns/SKILL.md +0 -758
  516. package/skills/cometchat-react-testing/SKILL.md +0 -413
  517. package/skills/cometchat-theming/SKILL.md +0 -498
  518. package/skills/cometchat-troubleshooting/SKILL.md +0 -294
@@ -1,364 +0,0 @@
1
- ---
2
- name: cometchat-calls
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
- license: "MIT"
5
- metadata:
6
- author: "CometChat"
7
- version: "4.0.0"
8
- tags: "cometchat calls voice video webrtc dispatcher react react-native angular android ios flutter callkit pushkit voip"
9
- ---
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
-
13
- ## Use this skill when
14
-
15
- - The top-level `cometchat` dispatcher's Step 3.0 routes here because `product === "voice-video"` or `chat-messaging+voice-video`
16
- - The user explicitly asks for calling: *"add calls"*, *"add video calling"*, *"add voice calls"*, *"set up call screen"*, *"integrate calls SDK"*, *"add CallKit"*
17
- - The user is iterating on an existing chat integration and picks *"Add calling"* from the iteration menu (Step 7 of `cometchat`)
18
-
19
- This is the **entry point for every calls integration**. Do NOT invoke per-family `cometchat-{family}-calls` skills directly — this dispatcher detects the family, picks the integration mode (standalone vs additive), and routes to the right skill with the right preconditions.
20
-
21
- **Supported families:**
22
-
23
- | Family | Per-family skill | Calls SDK package | Stable today? |
24
- |---|---|---|---|
25
- | **Web** (React / Next.js / React Router / Astro) | `cometchat-react-calls` | `@cometchat/calls-sdk-javascript` | Yes |
26
- | **React Native** (Expo + bare) | `cometchat-native-calls` | `@cometchat/calls-sdk-react-native` | Yes |
27
- | **Angular** (12–15) | `cometchat-angular-calls` | `@cometchat/calls-sdk-javascript` | Yes |
28
- | **Android** (V5 stable) | `cometchat-android-v5-calls` | `com.cometchat:calls-sdk-android:5.x` (Cloudsmith) | Yes — production-ready |
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. |
30
- | **iOS** (V5 stable) | `cometchat-ios-calls` | `CometChatCallsSDK` (SPM / CocoaPods) | Yes |
31
- | **Flutter** (V5 stable) | `cometchat-flutter-v5-calls` (already exists) | `cometchat_calls_sdk` (Cloudsmith) | Yes |
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`).
35
-
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.
37
-
38
- ## Why a separate calls dispatcher
39
-
40
- The chat dispatcher (`cometchat/SKILL.md`) assumes the user is adding a chat surface — its placement vocabulary, component catalog, framework skills, and verification checklist are all chat-shaped. Calls is a different surface area:
41
-
42
- | Concern | Chat dispatcher | Calls dispatcher (this skill) |
43
- |---|---|---|
44
- | Packages | `chat-uikit-*` + `chat-sdk-*` | `chat-sdk-*` + `calls-sdk-*` (no UI Kit in standalone mode) |
45
- | Init | Chat SDK init + login | Chat SDK init + login + Calls SDK init (the dual-SDK contract; on iOS ≥5.0.2 prefer file-based `CometChatCalls.initFromSettings` reading `cometchat-settings.json` — ai-agent telemetry attribution — over the raw `CallAppSettings` builder; see `cometchat-ios-calls` §2) |
46
- | Placement question | "Where does **chat** live?" | "Where does the **call trigger** live?" + "Where do call logs live?" |
47
- | Components | Conversations, MessageList, Composer, Users, Groups | CallButtons, IncomingCall, OutgoingCall, OngoingCall, CallLogs |
48
- | `IncomingCall` mount | At chat surface (rings while user is chatting) | **At app root** — always-rendering, listens app-wide |
49
- | VoIP push (mobile) | Optional add-on | **Mandatory** in standalone mode — calls without ringing isn't a product |
50
- | Background lifecycle | N/A unless calls feature added | **Required** — Android foreground service / iOS CallKit + PushKit |
51
-
52
- The two dispatchers share `cometchat-{family}-core` (init + login + env + theme tokens) but diverge on everything else.
53
-
54
- ## How v4.1 calls integration works
55
-
56
- Same conversational model as the chat dispatcher — detect, gather, plan, write, verify — but with a calls lens.
57
-
58
- ### Steps
59
-
60
- #### Step 1 — Detect family + mode
61
-
62
- If the user came from the top-level `cometchat` dispatcher, framework + credentials are already in `.cometchat/config.json`. **Skip detection** and read:
63
-
64
- ```bash
65
- npx @cometchat/skills-cli config show --json
66
- ```
67
-
68
- If invoked directly (e.g. user typed *"add calls to my app"*), run:
69
-
70
- ```bash
71
- npx @cometchat/skills-cli detect --json
72
- ```
73
-
74
- Same family detection as the chat dispatcher (`reactjs`, `nextjs`, `react-router`, `astro`, `expo`, `react-native`, `angular`, `android`, `flutter`, `ios`).
75
-
76
- **Pick the integration mode** by looking at the project state:
77
-
78
- | Signal | Mode | What runs |
79
- |---|---|---|
80
- | `.cometchat/state.json` exists with chat surfaces wired | **Additive** — calls layered onto existing chat | Per-family `-calls` skill in additive section. Patches the existing provider to mount `IncomingCall` at root. Adds call buttons inline on chat surfaces. Optional VoIP push. |
81
- | `.cometchat/state.json` does NOT exist (or has no chat surfaces) AND `product === "voice-video"` | **Standalone** — calls is the product | Per-family `-calls` skill in standalone section. No chat UI Kit. CallButtons + IncomingCall + OngoingCall + CallLogs. VoIP push **wired**, not optional. `/calls` route or platform equivalent for call logs. |
82
- | Neither — user wants calls but it's ambiguous | **Ask** | AskUserQuestion: *"Are you adding calling alongside an existing chat integration, or building a calling-first app?"* |
83
-
84
- #### Step 2 — Verify credentials
85
-
86
- Calls reuses Chat SDK credentials. If `.env` (web/RN), `local.properties` (Android), `Secrets.swift` (iOS), `lib/cometchat_config.dart` (Flutter), or `src/environments/environment.ts` (Angular) already has `appId` / `region` / `authKey`, **skip credential setup**.
87
-
88
- If credentials are missing, hand back to `cometchat/SKILL.md` Step 2 — credential provisioning is the same regardless of product. Do not duplicate the auth flow here.
89
-
90
- #### Step 3 — Gather calls-specific requirements
91
-
92
- ##### Step 3.0 — Calling mode (Ringing vs Session) ★
93
-
94
- This is the first calls-specific question. The Calls SDK supports two fundamentally different UX shapes — pick before anything else, because the rest of Step 3 + the per-family scaffold differ.
95
-
96
- **Resolve in priority order:**
97
-
98
- **1. Infer ONLY from explicit signals.** Don't default to either mode. The user must clearly indicate one of the two flavors before you skip the prompt:
99
-
100
- | User said something like… | Mode |
101
- |---|---|
102
- | "1:1 call", "user to user call", "phone call", "ring my friend", "call a contact", "FaceTime-like", "WhatsApp-style call" | **Ringing** |
103
- | "group call between friends", "conference call up to N people" (small group, one initiator who rings) | **Ringing** |
104
- | "meeting", "Google Meet", "Zoom-like", "scheduled meeting", "join with a link", "meeting room", "conference room", "webinar", "town hall", "virtual classroom" | **Session** |
105
- | "huddle" (Slack-style — instant join from a channel) | **Session** |
106
- | **Just "calls", "calling", "integrate calls", "add calls", "set up calling", "voice/video calls"** with NO further context about ringing-vs-meeting | **AMBIGUOUS — ASK (do NOT default)** |
107
- | Mixed signals ("calls and meetings", "phone calls or video conferencing") | **AMBIGUOUS — ASK** |
108
-
109
- The bottom rows are the load-bearing ones. **Generic phrases like "integrate calls" or "I want calling in my app" are NOT a signal for Ringing — they're a signal that the user hasn't told you yet.** Ask.
110
-
111
- If you DO have a clear signal, confirm with one line so the user can redirect:
112
- > "Got it — setting up Ringing (1:1 / group calls with an incoming-call screen). If you wanted meeting-room URLs instead, say so and I'll switch."
113
-
114
- **2. Use Tier 4 use-case context if available.** Use-cases telegraph the mode:
115
-
116
- | Use case | Mode |
117
- |---|---|
118
- | Telehealth provider/patient (1:1 visit) | Ringing |
119
- | Marketplace buyer ↔ seller | Ringing |
120
- | Customer support (agent ↔ customer) | Ringing |
121
- | Broadcast / webinar / town hall | Session |
122
- | Team huddle / standup | Session |
123
-
124
- **3. Only if you can't tell** — ask. Use this prompt **verbatim** — do NOT rephrase, do NOT swap options. Option 1 is "Session"; option 2 is "Ringing":
125
-
126
- - **question:** "What kind of calling experience are you building?"
127
- - **header:** "Calling mode"
128
- - **multiSelect:** false
129
- - **options (display in this exact order — Session FIRST, Ringing SECOND):**
130
- 1. label: "Session — meeting / conference room", description: "Multiple users join the same session by ID or link. No ringing. Like Google Meet, Zoom, or a Slack huddle. Examples: scheduled meetings, webinars, team huddles, classroom calls."
131
- 2. label: "Ringing — 1:1 or group calls", description: "One user calls another (or a small group). Recipient's device rings; they accept or decline. Like a phone call. Examples: WhatsApp, FaceTime, in-app voice/video calls between contacts."
132
-
133
- > **Strict-order rule:** render option 1 above option 2. Do not reorder. Session-first is standardized across CometChat product surfaces.
134
-
135
- Map to mode value:
136
- - "Ringing" → `mode === "ringing"`
137
- - "Session" → `mode === "session"`
138
-
139
- This drives which per-family reference loads at Step 6:
140
-
141
- | Mode | Reference (per-family) | Reference (Android V5) |
142
- |---|---|---|
143
- | `ringing` | `cometchat-{family}-calls/references/ringing-integration.md` | `cometchat-android-v5-calls/references/ringing-integration.md` |
144
- | `session` | `cometchat-{family}-calls/references/call-session.md` | `cometchat-android-v5-calls/references/join-session.md` |
145
-
146
- > **Note on the kit's prebuilt UI ("Standard" mode in earlier docs):** the UI Kit's `<CometChatCallButtons />` + `<CometChatIncomingCall />` + `<CometChatOngoingCall />` are a kit-provided implementation of **Ringing**, not a third mode. If the user picks Ringing AND wants the kit's prebuilt UI (most common), the per-family scaffold uses kit components and treats the ringing reference as the architectural ground-truth. If they want custom UI on top of the chat-SDK signaling, the ringing reference is the implementation guide.
147
-
148
- > **⚠️ Group calls do NOT use the Ringing channel** (validated 2026-05-15, applies to all kits). The kit's `<CometChatCallButtons group={g}>` sends a **custom meeting message** to the group via `CometChat.sendCustomMessage` with `type: "meeting"`, NOT `CometChat.initiateCall`. Other group members receive the meeting card in `<CometChatMessageList />` (kit-based receivers) OR a `MessageListener.onCustomMessageReceived` with `category: CATEGORY_CUSTOM` + `type: "meeting"` (custom-UI receivers). The `CallListener.onIncomingCallReceived` channel only fires for 1:1 user calls. If the user wants group calls, load `references/group-calls.md` IN ADDITION TO ringing-integration.md — group has its own architecture even though customers think of it as "ringing for groups."
149
-
150
- ##### Step 3.1 — Call trigger placement (where the call starts from)
151
-
152
- Different from the chat dispatcher's Step 3a archetype question. Ask placement-intent on the **calls surface**:
153
-
154
- Ask the user (preserve the structured shape — `question`/`header`/`multiSelect`/`options[].label`/`options[].description`):
155
- - **question:** "How should users start a call in your app?"
156
- - **header:** "Call trigger"
157
- - **multiSelect:** false
158
- - **options** (the option set differs by mode — show only the rows matching `mode` from Step 3.0):
159
-
160
- **If `mode === "ringing"`** — show these:
161
- 1. label: "Call button on user/contact profile", description: "Voice + video buttons next to a user's name. Best for marketplaces, social, dating, healthcare."
162
- 2. label: "Always-on '/calls' route", description: "Dedicated calls page with a 'Start a call' picker and call history. Best for telehealth, virtual events, contact centers."
163
- 3. label: "Embedded in chat surface", description: "Call buttons in the chat header — voice + video next to message threads. Best for apps that already have chat. (Additive mode only.)"
164
- 4. label: "Floating widget", description: "Always-visible call bubble — like Zoom's floating window. Best for support / sales tools."
165
-
166
- **If `mode === "session"`** — show these instead:
167
- 1. label: "Meeting link route ('/meet/:sessionId')", description: "Shareable URLs that anyone with the link can join. Best for scheduled meetings, webinars, classrooms."
168
- 2. label: "Channel-bound huddle", description: "Session keyed to a chat channel/group ID — anyone in the channel can join the active huddle. Best for team collab apps."
169
- 3. label: "Lobby / waiting-room route", description: "User lands on a waiting screen, host admits. Best for telehealth, customer support."
170
- 4. label: "Custom — I'll wire it myself", description: "Just give me the SDK glue. I'll decide the surface."
171
-
172
- The chosen option drives which per-family `-calls` skill section to load and what to scaffold.
173
-
174
- **Then ask about call logs separately** — call logs are usually a different surface from the trigger:
175
-
176
- - **question:** "Where should call history live?"
177
- - **header:** "Call logs"
178
- - **options:**
179
- 1. label: "Dedicated /calls route (or screen)", description: "Recommended — full call history, filterable, jump to caller's profile."
180
- 2. label: "Inside the call trigger surface", description: "Compact list under the call button. Best when call volume is low."
181
- 3. label: "Don't show call history", description: "Skip — calls just happen, no log surface."
182
-
183
- #### Step 4 — Detect mandatory mobile prerequisites
184
-
185
- For mobile families (`android`, `ios`, `expo`, `react-native`, `flutter`), VoIP push is **non-negotiable in standalone mode** — without it, missed calls don't ring. Detect what's already wired so the per-family `-calls` skill knows what to add and what to skip:
186
-
187
- **Android:**
188
- - Firebase Cloud Messaging — look for `google-services.json` in `app/` and `id("com.google.gms.google-services")` in `app/build.gradle{.kts}`
189
- - Service registration — look for `<service android:name=".YourFirebaseMessagingService" ...>` in `AndroidManifest.xml`
190
- - ConnectionService — look for `android.permission.MANAGE_OWN_CALLS` and `BIND_TELECOM_CONNECTION_SERVICE` in `AndroidManifest.xml`
191
- - Foreground service type — look for `<service android:foregroundServiceType="phoneCall|microphone|camera">` (Android 14+ silently crashes without `phoneCall`)
192
-
193
- **iOS:**
194
- - CallKit — look for `import CallKit` and a `CXProvider` configured somewhere in source
195
- - PushKit — look for `import PushKit` and a `PKPushRegistry` listener (VoIP push token registration)
196
- - Capabilities — look for `Background Modes` with `voip` + `audio` + `remote-notification` in `Info.plist` and `entitlements`
197
- - Microphone + camera Info.plist usage strings
198
-
199
- **React Native:**
200
- - `react-native-callkeep` (CallKit + ConnectionService bridge) in `package.json`
201
- - `@react-native-firebase/messaging` (Android) and a `PushNotificationIOS` setup
202
- - `react-native-voip-push-notification` for iOS VoIP push tokens
203
-
204
- **Flutter:**
205
- - `flutter_callkit_incoming` in `pubspec.yaml`, OR a platform-channel bridge to native CallKit/ConnectionService
206
- - `firebase_messaging` for FCM
207
- - Native `Info.plist` and `AndroidManifest.xml` entries (Flutter doesn't auto-add these)
208
-
209
- Surface what's wired and what's missing. The per-family `-calls` skill writes the missing pieces — it never assumes they're already there.
210
-
211
- #### Step 5 — Show the plan and get approval
212
-
213
- Before writing anything, show the user exactly:
214
- - Which packages will be installed
215
- - Which files will be created vs modified vs left alone
216
- - Where the call trigger will land (with the file path)
217
- - Where call logs will land (or "skipped" if option 3 above)
218
- - For mobile: what VoIP push artifacts will be added (FCM service, CallKit provider, foreground service registration, manifest permissions, Info.plist entries)
219
- - What the user must do manually that the skill can't (Android: enable FCM in Firebase console; iOS: add VoIP Services certificate to App Store Connect; Flutter: bump `minSdkVersion` if below platform floor)
220
-
221
- Wait for explicit approval. Then load the per-family `-calls` skill and run its scaffold.
222
-
223
- #### Step 6 — Hand off to the per-family skill
224
-
225
- Load the matching skill from your context:
226
-
227
- | Detected family | Skill to load |
228
- |---|---|
229
- | `reactjs` / `nextjs` / `react-router` / `astro` | `cometchat-react-calls` |
230
- | `expo` / `react-native` | `cometchat-native-calls` |
231
- | `angular` | `cometchat-angular-calls` |
232
- | `android` + `android_version === "v5"` | `cometchat-android-v5-calls` |
233
- | `android` + `android_version === "v6"` | `cometchat-android-v6-calls` |
234
- | `flutter` + `flutter_version === "v5"` | `cometchat-flutter-v5-calls` (existing) |
235
- | `flutter` + `flutter_version === "v6"` | `cometchat-flutter-v6-calls` (existing) |
236
- | `ios` | `cometchat-ios-calls` |
237
-
238
- Pass the gathered context: **`mode`** (`ringing` | `session` from Step 3.0), **standalone vs additive** (Step 1), **trigger placement** (Step 3.1), log placement, mobile prereqs status.
239
-
240
- The per-family skill loads the matching mode reference as its primary blueprint:
241
-
242
- | `mode` | Reference loaded inside the per-family skill |
243
- |---|---|
244
- | `ringing` (1:1 user calls) | `references/ringing-integration.md` (Android V5: same name) |
245
- | `session` (meeting-room URLs, no chat-side signaling) | `references/call-session.md` (Android V5: `references/join-session.md`) |
246
-
247
- **Additionally** — if `groupCalls === true` in the gathered context (the user mentioned "group calls", "team meetings", "huddles", or selected `group` as a call target in Step 3.1), **ALSO load `references/group-calls.md` from the per-family skill**. Group calls use a different signaling channel than 1:1 ringing — they broadcast a custom `"meeting"` message instead of `CometChat.initiateCall`. Loading only `ringing-integration.md` produces code that works for 1:1 but silently breaks for groups on custom-UI receivers. The `group-calls.md` reference exists for all 8 families. See the Step 3.0 disclosure above for the underlying semantic.
248
-
249
- The per-family skill writes code; this dispatcher does not.
250
-
251
- If the per-family skill isn't loaded into the agent's context (i.e. the user installed `@cometchat/skills` before v4.1 and never re-ran `npx @cometchat/skills add --family <family>`), tell the user once:
252
-
253
- > "I just installed the {family} calls skill into your workspace. Please re-run `/cometchat-calls` to continue — your config is saved in `.cometchat/config.json`, so the next run picks up at code generation without re-asking the placement questions."
254
-
255
- Same hot-reload constraint as the chat dispatcher: agents snapshot the skill set at session start and don't reload mid-session. Continuing this session would mean writing calls code from training memory — which the per-family skill explicitly forbids.
256
-
257
- #### Step 7 — Verify
258
-
259
- After the per-family skill writes code, run:
260
-
261
- ```bash
262
- npx @cometchat/skills-cli verify --calls --json
263
- ```
264
-
265
- (Verifier flag `--calls` is added in CLI 2.4.0 alongside this dispatcher; it checks for the dual-SDK init, IncomingCall root mount, VoIP push wiring on mobile, and the call trigger / logs placements the user picked.)
266
-
267
- If verify passes, drop the user into the iteration menu — same shape as the chat dispatcher's Step 7, with calls-specific options:
268
-
269
- - Add a feature (recording, screen sharing, PiP, in-call chat, custom UI)
270
- - Customize call screen / participant list / control panel
271
- - Set up production auth (server-minted tokens, no Auth Key in calls flow)
272
- - Run diagnostics
273
-
274
- ## Hard rules (every per-family `-calls` skill must enforce these)
275
-
276
- These are the production-grade non-negotiables. The dispatcher checks them in Step 5's plan and the per-family skill is responsible for writing them:
277
-
278
- 1. **Dual-SDK contract.** Chat SDK does `initiateCall` (sends a `MessageType.CALL`); Calls SDK does `joinSession`. They are NOT interchangeable. The Android skill leads with this — agents trained on multi-platform CometChat data will conflate `com.cometchat.chat.core.Call` with `com.cometchat.chat.models.Call` and write code that compiles but silently breaks.
279
- 2. **VoIP push wired in standalone mode, not documented.** CallKit + PushKit (iOS), ConnectionService + FCM high-priority (Android), `react-native-callkeep` (RN), `flutter_callkit_incoming` (Flutter). Documentation isn't enough — without working push, missed calls don't ring.
280
- 3. **Foreground / background lifecycle correct.** Android 14+ silently crashes on wrong `foregroundServiceType` for ongoing calls; iOS requires CallKit reporting for background audio. Belongs in the `-calls` skill body, not a "see also" reference.
281
- 4. **Server-minted auth tokens for the calls path.** Production calls flows must use auth tokens, never Auth Key. The skill detects existing token endpoints (same way the chat dispatcher does) and uses `loginWithAuthToken()`.
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.
283
- 6. **Permissions with rationale.** Microphone, camera, screen-record (where supported), notifications. All four, all with usage strings.
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.
286
-
287
- ## Anti-patterns
288
-
289
- 1. **Don't try to add `apply-feature calls` from this dispatcher.** That CLI command is the v4 chat-flow path — it returns the npm install command and that's it. This dispatcher does the actual integration end-to-end. If the user is in `chat-messaging+voice-video` mode, the chat flow already ran; just enter additive mode here. Never call `apply-feature calls` from inside this skill.
290
- 2. **Don't load `cometchat-components` or `cometchat-placement` (the chat catalogs).** Those are chat-shaped. The per-family `-calls` skill has its own component list (CallButtons, IncomingCall, OutgoingCall, OngoingCall, CallLogs) and its own placement vocabulary (call trigger, log surface, root listener). Loading the chat catalogs leaks chat assumptions into calls code.
291
- 3. **Don't ask the chat archetype question** ("Messaging app / Marketplace / SaaS / …"). That taxonomy is for *where chat lives*. Calls placement is *where the call trigger lives* + *where logs live* + *whether VoIP push is mandatory*. Different vocabulary, different recommendations.
292
- 4. **Don't skip VoIP push in standalone mode** even if the user says "I'll add it later." Calls without ringing isn't a product. The dispatcher refuses standalone-mode scaffold without VoIP push wired (or at minimum scaffolded with a clear TODO and red-banner warning in the call screen).
293
- 5. **Don't mix V5 and V6 cohorts** (Android, Flutter). The Calls SDK coordinates differ — V5 Android ships `calls-sdk-android` as a separate Cloudsmith dep; V6 folds calls into the unified `chatuikit-{compose,kotlin}-android` package. Same for Flutter. Read `android_version` / `flutter_version` from `.cometchat/config.json` and route to the matching cohort skill.
294
-
295
- ## Ground truth references
296
-
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):
298
-
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`.
305
-
306
- ## Two calling modes (Ringing + Session) — and the kit's prebuilt UI for Ringing
307
-
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.
309
-
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` |
317
-
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.
319
-
320
- ## Use-case integration patterns (Tier 4)
321
-
322
- If the user describes their product clearly, route to the matching use-case reference for opinionated CallSettings + UX + compliance callouts:
323
-
324
- - **Telehealth / virtual visits** → `references/use-case-telehealth.md` — provider/patient flow, two-party consent recording, waiting room, HIPAA notes
325
- - **Marketplace (buyer ↔ seller)** → `references/use-case-marketplace.md` — opaque UIDs, time-bounded access, anti-fraud heuristics
326
- - **Customer support / help desk** → `references/use-case-support.md` — agent queue, auto-record for QA, post-call CSAT
327
- - **Broadcast / webinar / town hall** → `references/use-case-broadcast.md` — locked SIDEBAR, mute-by-default attendees, raise-hand Q&A, RTMP bridge for 100+
328
- - **Team huddle / standup / collab** → `references/use-case-team.md` — TILE layout, opt-in join, recording auto-posted to channel
329
-
330
- Each use-case doc covers end-to-end flow + recommended `CallSettings` + role-based UI + verification checklist. Apply on top of the per-family `-calls` skill, don't duplicate the architecture work.
331
-
332
- ## Migration playbooks
333
-
334
- For customers upgrading or layering calls on top of an existing chat install, every per-family calls skill ships:
335
-
336
- - `references/migration-v4-to-v5.md` — Calls SDK v4 → v5 (drop-in replacement; v5 APIs unlock granular event listeners + simpler init)
337
- - `references/add-calls-to-existing-chat.md` — additive integration on top of an existing chat surface (init order, login order, IncomingCall mounting, server push setup)
338
-
339
- Cite the right family. The web reference (`cometchat-react-calls`) is canonical for migration-v4-to-v5 — sister docs in other families add only family-specific deltas.
340
-
341
- ## Server-side push templates (Tier 3)
342
-
343
- VoIP push wiring is platform-specific. Three canonical templates ship under per-family `references/`:
344
-
345
- - iOS APNs PushKit (.p8 token auth) — `cometchat-ios-calls/references/server-apns-pushkit.md`
346
- - Android FCM HTTP v1 (data-only, priority HIGH) — `cometchat-android-v5-calls/references/server-fcm-voip.md` (V6 sister with Compose IncomingCallActivity)
347
- - Web Push VAPID (best-effort browser ringing) — `cometchat-react-calls/references/server-web-push-vapid.md` (Angular sister)
348
-
349
- Hybrid platforms (RN, Flutter) ship `references/server-push-bridge.md` that routes to the right canonical by `Platform.OS` / `Platform.is{iOS,Android}`.
350
-
351
- ## What this dispatcher does NOT cover
352
-
353
- - **The actual code.** Per-family `-calls` skills write the integration. This dispatcher routes.
354
- - **AI-Agent or BYO-Agent flows.** Different surface entirely; out of scope. The top-level `cometchat` dispatcher's Step 3.0 routes those to docs.
355
- - **Moderation features for calls** (recording-with-consent prompts, profanity filter on in-call chat, etc.). Same status as the chat dispatcher — moderation is dashboard-only.
356
- - **Call analytics dashboards** — the CometChat dashboard surfaces these, no integration work needed.
357
-
358
- ## Pointer back to chat dispatcher
359
-
360
- If the user invoked `/cometchat-calls` directly but the project has no integration at all yet (no `.cometchat/config.json`, no chat surfaces), and they pick the **additive** mode by mistake, redirect:
361
-
362
- > "Looks like you don't have CometChat integrated yet. For a calling-first app, that's fine — I'll run the standalone calls flow now. If you want chat alongside, run `/cometchat` first to set up chat, then come back to add calls."
363
-
364
- Don't auto-route to `cometchat/SKILL.md` from here — it's the user's call (no pun intended) which surface is primary.
@@ -1,199 +0,0 @@
1
- # Use case — Broadcast / Webinar
2
-
3
- A presenter (or panel) addresses a large audience. Most attendees have audio + video off; a small set of presenters are visible. Q&A via raise-hand. Optional broadcast to YouTube/RTMP via server-side bridge.
4
-
5
- **Examples:** Town halls, all-hands, product launches, conference sessions.
6
-
7
- **Scale note:** CometChat Calls SDK supports up to ~50 simultaneous video streams per call (varies by plan). For 100+ broadcast use cases, consider streaming-protocol bridges (RTMP push to YouTube/Twitch) where most attendees consume via streaming, not bidirectional WebRTC.
8
-
9
- ---
10
-
11
- ## End-to-end flow
12
-
13
- ```
14
- 1. Presenter creates a "Broadcast" group (CometChat group keyed to event ID)
15
-
16
- 2. Server pre-creates the group with presenters as moderators
17
-
18
- 3. Attendees join the group (group is public OR password-gated for paid events)
19
-
20
- 4. Event time: presenter starts call → attendees auto-join (no incoming-call ring)
21
-
22
- 5. By default: all attendees mic + camera OFF
23
- Presenter has mic + camera ON
24
-
25
- 6. Q&A: attendee taps "Raise hand" → presenter sees → presenter unmutes them
26
-
27
- 7. Server-side: optional RTMP push streams the call to YouTube Live / Twitch / a CDN
28
-
29
- 8. Presenter ends call → recording uploaded → notification + replay link sent to all attendees
30
- ```
31
-
32
- ---
33
-
34
- ## Recommended call settings
35
-
36
- ```ts
37
- const settings = {
38
- layout: "SIDEBAR", // Presenter dominant
39
- hideChangeLayoutButton: true, // Don't let attendees change
40
-
41
- hideRecordingButton: false, // Presenter records
42
- autoStartRecording: true, // Always record broadcasts (replay value)
43
-
44
- hideScreenSharingButton: false, // For slides
45
-
46
- hideChatButton: false, // Q&A overflow + reactions
47
- hideShareInviteButton: false, // Encourage sharing
48
-
49
- hideRaiseHandButton: false, // Critical for Q&A
50
-
51
- // Attendee-side: mic + camera off by default
52
- joinWithMutedAudio: true,
53
- joinWithMutedVideo: true,
54
-
55
- idleTimeoutPeriodBeforePrompt: 86_400_000, // Disable idle timeout — events run long
56
- };
57
- ```
58
-
59
- Presenters override `joinWithMutedAudio/Video: false` in their flow.
60
-
61
- ---
62
-
63
- ## Roles + permissions
64
-
65
- In the CometChat group, set scopes:
66
-
67
- ```ts
68
- // Server-side, when creating the broadcast group:
69
- await cometchatApi.createGroup({
70
- guid: `event-${eventId}`,
71
- members: [
72
- { uid: presenterUid, scope: "admin" },
73
- ...coPresenterUids.map((uid) => ({ uid, scope: "moderator" })),
74
- // Attendees added on join (or batch-added pre-event for paid)
75
- ],
76
- });
77
- ```
78
-
79
- Then enforce role-based UI:
80
-
81
- ```tsx
82
- function CallControls({ groupGuid, currentUserUid }: Props) {
83
- const role = useUserRoleInGroup(groupGuid, currentUserUid);
84
- const isPresenter = role === "admin" || role === "moderator";
85
-
86
- return (
87
- <div>
88
- {isPresenter && <RecordingButton />}
89
- {isPresenter && <ScreenShareButton />}
90
- {!isPresenter && <RaiseHandButton />}
91
- {/* Attendees see a stripped-down toolbar */}
92
- </div>
93
- );
94
- }
95
- ```
96
-
97
- ---
98
-
99
- ## Raise-hand → unmute flow
100
-
101
- ```tsx
102
- // Presenter's view: see attendees with raised hands, tap to unmute
103
- function PresenterRaisedHandsList() {
104
- const [raised, setRaised] = useState<RaisedHand[]>([]);
105
-
106
- useEffect(() => {
107
- CometChatCalls.addEventListener("onParticipantHandRaised", (event: RaisedHand) => {
108
- setRaised((prev) => [...prev, event]);
109
- });
110
- CometChatCalls.addEventListener("onParticipantHandLowered", (event: RaisedHand) => {
111
- setRaised((prev) => prev.filter((p) => p.uid !== event.uid));
112
- });
113
- }, []);
114
-
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));
127
- }
128
-
129
- return (
130
- <ul>
131
- {raised.map((p) => (
132
- <li key={p.uid}>
133
- {p.name}
134
- <button onClick={() => unmuteParticipant(p.uid)}>Allow to speak</button>
135
- </li>
136
- ))}
137
- </ul>
138
- );
139
- }
140
- ```
141
-
142
- ---
143
-
144
- ## RTMP bridge for streaming
145
-
146
- For broadcasts beyond CometChat's WebRTC capacity, server-side RTMP push:
147
-
148
- ```js
149
- // Server-side: when broadcast starts, spin up an RTMP bridge that joins
150
- // the call as a "viewer" and pushes the composited stream to YouTube Live.
151
- // Use a service like Daily.co's RTMP-out, AWS IVS, or roll your own with
152
- // FFmpeg + headless Chrome.
153
- //
154
- // CometChat does not ship an RTMP bridge — this is application infrastructure.
155
- async function startRtmpBridge(eventId: string, rtmpUrl: string) {
156
- await rtmpBridgeService.start({
157
- sessionId: eventId,
158
- rtmpDestination: rtmpUrl,
159
- // Bridge joins with a service-account UID
160
- serviceAccountUid: `bridge-${eventId}`,
161
- });
162
- }
163
- ```
164
-
165
- ---
166
-
167
- ## Anti-patterns
168
-
169
- 1. **No `joinWithMutedAudio: true` for attendees.** 50 people unmuted at once = chaos.
170
- 2. **No role differentiation.** Attendees can record / kick / share-invite → vandalism.
171
- 3. **Same SDK call for 200+ attendees.** WebRTC degrades. Use RTMP bridge for large audiences.
172
- 4. **No idle timeout disable.** Default 30min idle ends a 60min event mid-Q&A.
173
- 5. **Recording broadcasted to YouTube without disclosure.** GDPR / CCPA: attendees must know they're being recorded for public distribution.
174
- 6. **No pre-event check.** Presenter joins 5min before, mic doesn't work, panic. Have a "tech check" room they can join 30min ahead.
175
-
176
- ---
177
-
178
- ## Verification checklist
179
-
180
- - [ ] Group created server-side with presenter as admin
181
- - [ ] Attendees join muted (audio + video)
182
- - [ ] Layout locked to SIDEBAR
183
- - [ ] Recording auto-on
184
- - [ ] Idle timeout disabled
185
- - [ ] Raise-hand → presenter approval flow wired
186
- - [ ] Role-based UI (presenter sees recording/screenshare; attendees see raise-hand)
187
- - [ ] RTMP bridge for 100+ attendees
188
- - [ ] GDPR/CCPA recording notice in attendee-facing copy
189
- - [ ] Tech check room available pre-event
190
-
191
- ---
192
-
193
- ## Pointers
194
-
195
- - `cometchat-react-calls/references/raise-hand.md` — raise-hand reference
196
- - `cometchat-react-calls/references/recording.md` — recording reference
197
- - `cometchat-react-calls/references/screen-sharing.md` — for slides
198
- - `cometchat-react-calls/references/call-layouts.md` — SIDEBAR layout
199
- - `cometchat-react/SKILL.md` — group scope + admin patterns