@cometchat/skills 4.4.1 → 5.0.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.
Files changed (489) hide show
  1. package/.claude-plugin/marketplace.json +55 -0
  2. package/.claude-plugin/plugin.json +14 -0
  3. package/CHANGELOG.md +36 -0
  4. package/README.md +41 -163
  5. package/RULES.md +114 -0
  6. package/bin/cometchat-skills.mjs +1180 -0
  7. package/bin/legacy-skills.json +95 -0
  8. package/catalogs/android-v6.json +1646 -0
  9. package/catalogs/flutter-v6.json +651 -0
  10. package/catalogs/ios-v5.json +1383 -0
  11. package/catalogs/rn-calls-v5.json +134 -0
  12. package/catalogs/rn-calls-v5.symbols.txt +58 -0
  13. package/catalogs/rn-sdk-v4.json +672 -0
  14. package/catalogs/rn-v5.json +449 -0
  15. package/catalogs/rn-v5.symbols.txt +216 -0
  16. package/catalogs/sdk-android-v5.json +514 -0
  17. package/contracts.android-calls-v5.json +122 -0
  18. package/contracts.android-v6.json +135 -0
  19. package/contracts.angular-v5.json +694 -0
  20. package/contracts.flutter-calls-v5.json +77 -0
  21. package/contracts.flutter-v6.json +126 -0
  22. package/contracts.ios-calls-v5.json +67 -0
  23. package/contracts.ios-v5.json +436 -0
  24. package/contracts.json +82 -0
  25. package/contracts.rn-calls-v5.json +77 -0
  26. package/contracts.rn-v5.json +727 -0
  27. package/contracts.sdk-android-v5.json +15 -0
  28. package/contracts.web-calls-v5.json +45 -0
  29. package/features.android-calls-v5.json +246 -0
  30. package/features.android-v6.json +65 -0
  31. package/features.angular-v5.json +521 -0
  32. package/features.flutter-calls-v5.json +286 -0
  33. package/features.flutter-v6.json +484 -0
  34. package/features.ios-calls-v5.json +236 -0
  35. package/features.ios-v5.json +573 -0
  36. package/features.json +61 -0
  37. package/features.rn-calls-v5.json +187 -0
  38. package/features.rn-v5.json +614 -0
  39. package/features.sdk-android-v5.json +40 -0
  40. package/features.sdk-jsv4.json +24 -0
  41. package/features.web-calls-v5.json +108 -0
  42. package/package.json +151 -74
  43. package/peers.yaml +312 -0
  44. package/registry/README.md +31 -0
  45. package/registry/android-calls-v5.json +54 -0
  46. package/registry/android-v6.json +137 -0
  47. package/registry/angular-v5.json +114 -0
  48. package/registry/flutter-calls-v5.json +54 -0
  49. package/registry/flutter-v6.json +119 -0
  50. package/registry/ios-calls-v5.json +59 -0
  51. package/registry/ios-v5.json +97 -0
  52. package/registry/rn-calls-v5.json +59 -0
  53. package/registry/rn-v5.json +129 -0
  54. package/registry/sdk-android-v5.json +53 -0
  55. package/registry/sdk-jsv4.json +53 -0
  56. package/registry/web-calls-v5.json +54 -0
  57. package/registry/web-v7.json +99 -0
  58. package/skills/cometchat/SKILL.md +42 -2096
  59. package/skills/cometchat-android-v5-calls-sdk/SKILL.md +206 -0
  60. package/skills/cometchat-android-v5-calls-sdk/references/build-truth.md +63 -0
  61. package/skills/cometchat-android-v5-calls-sdk/references/docs-map.md +119 -0
  62. package/skills/cometchat-android-v5-calls-sdk/references/method-map.md +53 -0
  63. package/skills/cometchat-android-v5-calls-sdk/references/pitfalls.md +72 -0
  64. package/skills/cometchat-android-v5-calls-sdk/references/ringing.md +92 -0
  65. package/skills/cometchat-android-v5-calls-sdk/references/user-switch.md +90 -0
  66. package/skills/cometchat-android-v5-sdk/SKILL.md +127 -0
  67. package/skills/cometchat-android-v5-sdk/references/app-surface.md +88 -0
  68. package/skills/cometchat-android-v5-sdk/references/docs-map.md +91 -0
  69. package/skills/cometchat-android-v6-builder-settings/SKILL.md +51 -137
  70. package/skills/cometchat-android-v6-calls/SKILL.md +128 -411
  71. package/skills/cometchat-android-v6-compose-components/SKILL.md +84 -194
  72. package/skills/cometchat-android-v6-compose-customization/SKILL.md +66 -411
  73. package/skills/cometchat-android-v6-compose-placement/SKILL.md +154 -237
  74. package/skills/cometchat-android-v6-core/SKILL.md +236 -672
  75. package/skills/cometchat-android-v6-core/references/anti-patterns.md +31 -0
  76. package/skills/cometchat-android-v6-core/references/component-props.md +168 -0
  77. package/skills/cometchat-android-v6-core/references/docs-map.md +153 -0
  78. package/skills/cometchat-android-v6-core/references/layout.md +112 -0
  79. package/skills/cometchat-android-v6-core/references/lifecycle.md +75 -0
  80. package/skills/cometchat-android-v6-core/references/setup-credentials.md +105 -0
  81. package/skills/cometchat-android-v6-core/references/troubleshooting.md +36 -0
  82. package/skills/cometchat-android-v6-events/SKILL.md +46 -184
  83. package/skills/cometchat-android-v6-extensions/SKILL.md +39 -179
  84. package/skills/cometchat-android-v6-features/SKILL.md +74 -143
  85. package/skills/cometchat-android-v6-kotlin-components/SKILL.md +75 -193
  86. package/skills/cometchat-android-v6-kotlin-customization/SKILL.md +67 -419
  87. package/skills/cometchat-android-v6-kotlin-placement/SKILL.md +77 -223
  88. package/skills/cometchat-android-v6-migration/SKILL.md +67 -378
  89. package/skills/cometchat-android-v6-production/SKILL.md +40 -179
  90. package/skills/cometchat-android-v6-push/SKILL.md +39 -289
  91. package/skills/cometchat-android-v6-testing/SKILL.md +50 -265
  92. package/skills/cometchat-android-v6-troubleshooting/SKILL.md +70 -254
  93. package/skills/cometchat-angular-v5-calls/SKILL.md +193 -0
  94. package/skills/cometchat-angular-v5-components/SKILL.md +131 -0
  95. package/skills/cometchat-angular-v5-components/references/catalog.md +111 -0
  96. package/skills/cometchat-angular-v5-components/references/host-composed.md +46 -0
  97. package/skills/cometchat-angular-v5-core/SKILL.md +300 -0
  98. package/skills/cometchat-angular-v5-core/references/anti-patterns.md +49 -0
  99. package/skills/cometchat-angular-v5-core/references/component-props.md +55 -0
  100. package/skills/cometchat-angular-v5-core/references/dependencies.md +66 -0
  101. package/skills/cometchat-angular-v5-core/references/docs-map.md +132 -0
  102. package/skills/cometchat-angular-v5-core/references/layout.md +64 -0
  103. package/skills/cometchat-angular-v5-core/references/lifecycle.md +202 -0
  104. package/skills/cometchat-angular-v5-core/references/setup-credentials.md +137 -0
  105. package/skills/cometchat-angular-v5-core/references/theming.md +70 -0
  106. package/skills/cometchat-angular-v5-core/references/troubleshooting.md +27 -0
  107. package/skills/cometchat-angular-v5-customization/SKILL.md +94 -0
  108. package/skills/cometchat-angular-v5-features/SKILL.md +107 -0
  109. package/skills/cometchat-angular-v5-features/references/custom-messages.md +133 -0
  110. package/skills/cometchat-angular-v5-features/references/formatters.md +28 -0
  111. package/skills/cometchat-angular-v5-features/references/host-composed-extensions.md +85 -0
  112. package/skills/cometchat-angular-v5-migration/SKILL.md +40 -0
  113. package/skills/cometchat-angular-v5-migration/references/migration-guide.md +165 -0
  114. package/skills/cometchat-angular-v5-patterns/SKILL.md +107 -0
  115. package/skills/cometchat-angular-v5-placement/SKILL.md +133 -0
  116. package/skills/cometchat-angular-v5-placement/references/combined-app.md +174 -0
  117. package/skills/cometchat-angular-v5-placement/references/core-surface.md +199 -0
  118. package/skills/cometchat-angular-v5-production/SKILL.md +101 -0
  119. package/skills/cometchat-angular-v5-push/SKILL.md +61 -0
  120. package/skills/cometchat-angular-v5-testing/SKILL.md +112 -0
  121. package/skills/cometchat-angular-v5-troubleshooting/SKILL.md +96 -0
  122. package/skills/cometchat-flutter-v5-sdk/SKILL.md +188 -0
  123. package/skills/cometchat-flutter-v5-sdk/references/doc-corrections.md +55 -0
  124. package/skills/cometchat-flutter-v5-sdk/references/docs-map.md +211 -0
  125. package/skills/cometchat-flutter-v5-sdk/references/platform-notes.md +48 -0
  126. package/skills/cometchat-flutter-v5-sdk/references/transcription.md +87 -0
  127. package/skills/cometchat-flutter-v6-calls/SKILL.md +75 -387
  128. package/skills/cometchat-flutter-v6-components/SKILL.md +88 -361
  129. package/skills/cometchat-flutter-v6-core/SKILL.md +154 -593
  130. package/skills/cometchat-flutter-v6-core/references/anti-patterns.md +55 -0
  131. package/skills/cometchat-flutter-v6-core/references/docs-map.md +143 -0
  132. package/skills/cometchat-flutter-v6-core/references/layout.md +45 -0
  133. package/skills/cometchat-flutter-v6-core/references/lifecycle.md +87 -0
  134. package/skills/cometchat-flutter-v6-core/references/setup-credentials.md +84 -0
  135. package/skills/cometchat-flutter-v6-core/references/troubleshooting.md +26 -0
  136. package/skills/cometchat-flutter-v6-customization/SKILL.md +70 -712
  137. package/skills/cometchat-flutter-v6-events/SKILL.md +79 -174
  138. package/skills/cometchat-flutter-v6-features/SKILL.md +55 -394
  139. package/skills/cometchat-flutter-v6-migration/SKILL.md +68 -367
  140. package/skills/cometchat-flutter-v6-migration/references/migration-guide.md +131 -0
  141. package/skills/cometchat-flutter-v6-patterns/SKILL.md +61 -0
  142. package/skills/cometchat-flutter-v6-placement/SKILL.md +94 -381
  143. package/skills/cometchat-flutter-v6-production/SKILL.md +58 -615
  144. package/skills/cometchat-flutter-v6-push/SKILL.md +46 -455
  145. package/skills/cometchat-flutter-v6-testing/SKILL.md +68 -299
  146. package/skills/cometchat-flutter-v6-troubleshooting/SKILL.md +54 -878
  147. package/skills/cometchat-ios-calls/SKILL.md +105 -511
  148. package/skills/cometchat-ios-components/SKILL.md +44 -834
  149. package/skills/cometchat-ios-core/SKILL.md +181 -1068
  150. package/skills/cometchat-ios-core/references/anti-patterns.md +80 -0
  151. package/skills/cometchat-ios-core/references/docs-map.md +123 -0
  152. package/skills/cometchat-ios-core/references/install.md +23 -0
  153. package/skills/cometchat-ios-core/references/layout.md +186 -0
  154. package/skills/cometchat-ios-core/references/setup-credentials.md +197 -0
  155. package/skills/cometchat-ios-core/references/swiftui.md +91 -0
  156. package/skills/cometchat-ios-core/references/troubleshooting.md +100 -0
  157. package/skills/cometchat-ios-customization/SKILL.md +33 -968
  158. package/skills/cometchat-ios-features/SKILL.md +29 -738
  159. package/skills/cometchat-ios-migration/SKILL.md +39 -0
  160. package/skills/cometchat-ios-placement/SKILL.md +51 -729
  161. package/skills/cometchat-ios-push/SKILL.md +24 -602
  162. package/skills/cometchat-ios-v5-sdk/SKILL.md +161 -0
  163. package/skills/cometchat-ios-v5-sdk/references/docs-map.md +326 -0
  164. package/skills/cometchat-js-v5-sdk/SKILL.md +95 -0
  165. package/skills/cometchat-js-v5-sdk/references/docs-map.md +114 -0
  166. package/skills/cometchat-onboarding/SKILL.md +89 -0
  167. package/skills/cometchat-onboarding/references/archetypes.md +51 -0
  168. package/skills/cometchat-onboarding/references/calling-first.md +77 -0
  169. package/skills/cometchat-onboarding/references/not-in-this-pack.md +8 -0
  170. package/skills/cometchat-onboarding/references/plan-artifact.md +133 -0
  171. package/skills/cometchat-onboarding/references/platforms.md +90 -0
  172. package/skills/cometchat-react-native-bare-patterns/SKILL.md +120 -0
  173. package/skills/cometchat-react-native-calls/SKILL.md +200 -0
  174. package/skills/cometchat-react-native-components/SKILL.md +142 -0
  175. package/skills/cometchat-react-native-core/SKILL.md +313 -0
  176. package/skills/cometchat-react-native-core/references/anti-patterns.md +79 -0
  177. package/skills/cometchat-react-native-core/references/component-props.md +105 -0
  178. package/skills/cometchat-react-native-core/references/dependencies.md +62 -0
  179. package/skills/cometchat-react-native-core/references/docs-map.md +126 -0
  180. package/skills/cometchat-react-native-core/references/layout.md +61 -0
  181. package/skills/cometchat-react-native-core/references/lifecycle.md +64 -0
  182. package/skills/cometchat-react-native-core/references/setup-credentials.md +39 -0
  183. package/skills/cometchat-react-native-customization/SKILL.md +198 -0
  184. package/skills/cometchat-react-native-expo-patterns/SKILL.md +116 -0
  185. package/skills/cometchat-react-native-features/SKILL.md +122 -0
  186. package/skills/cometchat-react-native-migration/SKILL.md +103 -0
  187. package/skills/cometchat-react-native-placement/SKILL.md +158 -0
  188. package/skills/cometchat-react-native-production/SKILL.md +78 -0
  189. package/skills/cometchat-react-native-push/SKILL.md +88 -0
  190. package/skills/cometchat-react-native-sdk/SKILL.md +126 -0
  191. package/skills/cometchat-react-native-sdk/references/method-map.md +239 -0
  192. package/skills/cometchat-react-native-sdk/references/page-map.md +96 -0
  193. package/skills/cometchat-react-native-testing/SKILL.md +94 -0
  194. package/skills/cometchat-react-native-troubleshooting/SKILL.md +116 -0
  195. package/skills/cometchat-react-native-v5-sdk/SKILL.md +150 -0
  196. package/skills/cometchat-react-native-v5-sdk/references/docs-map.md +127 -0
  197. package/skills/cometchat-react-native-v5-sdk/references/ringing-voip.md +369 -0
  198. package/skills/cometchat-react-v7-calls/SKILL.md +75 -0
  199. package/skills/cometchat-react-v7-components/SKILL.md +72 -0
  200. package/skills/cometchat-react-v7-core/SKILL.md +101 -0
  201. package/skills/cometchat-react-v7-core/references/anti-patterns.md +19 -0
  202. package/skills/cometchat-react-v7-core/references/component-props.md +82 -0
  203. package/skills/cometchat-react-v7-core/references/dependencies.md +23 -0
  204. package/skills/cometchat-react-v7-core/references/docs-map.md +117 -0
  205. package/skills/cometchat-react-v7-core/references/i18n-rtl-a11y.md +22 -0
  206. package/skills/cometchat-react-v7-core/references/layout.md +158 -0
  207. package/skills/cometchat-react-v7-core/references/lifecycle.md +74 -0
  208. package/skills/cometchat-react-v7-core/references/setup-credentials.md +58 -0
  209. package/skills/cometchat-react-v7-core/references/ssr.md +11 -0
  210. package/skills/cometchat-react-v7-core/references/theming.md +52 -0
  211. package/skills/cometchat-react-v7-core/references/troubleshooting.md +28 -0
  212. package/skills/cometchat-react-v7-customization/SKILL.md +84 -0
  213. package/skills/cometchat-react-v7-features/SKILL.md +92 -0
  214. package/skills/cometchat-react-v7-migration/SKILL.md +39 -0
  215. package/skills/cometchat-react-v7-migration/references/migration-guide.md +119 -0
  216. package/skills/cometchat-react-v7-patterns/SKILL.md +43 -0
  217. package/skills/cometchat-react-v7-placement/SKILL.md +106 -0
  218. package/skills/cometchat-react-v7-placement/references/recipes.md +354 -0
  219. package/skills/cometchat-react-v7-push/SKILL.md +53 -0
  220. package/test-suite/README.md +70 -0
  221. package/test-suite/catalogs/android-calls-v5.json +830 -0
  222. package/test-suite/catalogs/android-calls-v5.symbols.txt +499 -0
  223. package/test-suite/catalogs/android-v6.json +1646 -0
  224. package/test-suite/catalogs/android-v6.symbols.txt +298 -0
  225. package/test-suite/catalogs/angular-v5.json +7587 -0
  226. package/test-suite/catalogs/flutter-calls-v5.json +196 -0
  227. package/test-suite/catalogs/flutter-calls-v5.symbols.txt +59 -0
  228. package/test-suite/catalogs/flutter-v6.json +651 -0
  229. package/test-suite/catalogs/ios-calls-v5.json +158 -0
  230. package/test-suite/catalogs/ios-calls-v5.symbols.txt +70 -0
  231. package/test-suite/catalogs/ios-v5.json +1383 -0
  232. package/test-suite/catalogs/ios-v5.symbols.txt +699 -0
  233. package/test-suite/catalogs/rn-calls-v5.json +134 -0
  234. package/test-suite/catalogs/rn-sdk-v4.json +672 -0
  235. package/test-suite/catalogs/rn-v5.json +449 -0
  236. package/test-suite/catalogs/sdk-android-v5.json +514 -0
  237. package/test-suite/catalogs/sdk-android-v5.symbols.txt +254 -0
  238. package/test-suite/catalogs/sdk-jsv4.json +800 -0
  239. package/test-suite/catalogs/web-calls-v5.json +195 -0
  240. package/test-suite/catalogs/web-v7.json +1243 -0
  241. package/test-suite/scripts/build-registry.mjs +113 -0
  242. package/test-suite/scripts/catalog-refresh-dart.mjs +151 -0
  243. package/test-suite/scripts/catalog-refresh.mjs +100 -0
  244. package/test-suite/scripts/lint-skills.mjs +909 -0
  245. package/test-suite/scripts/measure-tokens.mjs +169 -0
  246. package/test-suite/scripts/typecheck-fences-dart.mjs +437 -0
  247. package/test-suite/scripts/typecheck-fences-kotlin.mjs +269 -0
  248. package/test-suite/scripts/typecheck-fences.mjs +206 -0
  249. package/test-suite/scripts/verify-catalog.mjs +242 -0
  250. package/test-suite/scripts/verify-contract-fences.mjs +94 -0
  251. package/test-suite/scripts/verify-detection.mjs +178 -0
  252. package/test-suite/scripts/verify-docs-base.mjs +91 -0
  253. package/test-suite/scripts/verify-family-agnostic.mjs +130 -0
  254. package/test-suite/scripts/verify-golden-path.mjs +138 -0
  255. package/test-suite/scripts/verify-oracle-components.mjs +133 -0
  256. package/test-suite/scripts/verify-template-bindings.mjs +148 -0
  257. package/test-suite/typecheck/angular-v5/package.json +21 -0
  258. package/test-suite/typecheck/angular-v5/tsconfig.json +21 -0
  259. package/test-suite/typecheck/flutter-v6/analysis_options.yaml +25 -0
  260. package/test-suite/typecheck/flutter-v6/pubspec.yaml +21 -0
  261. package/test-suite/typecheck/web-v7/package.json +18 -0
  262. package/test-suite/typecheck/web-v7/tsconfig.json +19 -0
  263. package/bin/install.js +0 -1003
  264. package/skills/.claude-plugin/marketplace.json +0 -86
  265. package/skills/cometchat/references/asking-questions.md +0 -48
  266. package/skills/cometchat-a11y/SKILL.md +0 -477
  267. package/skills/cometchat-android-v5/SKILL.md +0 -121
  268. package/skills/cometchat-android-v5-calls/SKILL.md +0 -427
  269. package/skills/cometchat-android-v5-calls/references/README.md +0 -53
  270. package/skills/cometchat-android-v5-calls/references/add-calls-to-existing-chat.md +0 -197
  271. package/skills/cometchat-android-v5-calls/references/audio-controls.md +0 -91
  272. package/skills/cometchat-android-v5-calls/references/background-handling.md +0 -168
  273. package/skills/cometchat-android-v5-calls/references/call-layouts.md +0 -131
  274. package/skills/cometchat-android-v5-calls/references/call-logs.md +0 -113
  275. package/skills/cometchat-android-v5-calls/references/call-session.md +0 -274
  276. package/skills/cometchat-android-v5-calls/references/custom-ui.md +0 -150
  277. package/skills/cometchat-android-v5-calls/references/event-listeners.md +0 -123
  278. package/skills/cometchat-android-v5-calls/references/group-calls.md +0 -205
  279. package/skills/cometchat-android-v5-calls/references/idle-timeout.md +0 -117
  280. package/skills/cometchat-android-v5-calls/references/in-call-chat.md +0 -134
  281. package/skills/cometchat-android-v5-calls/references/join-session.md +0 -120
  282. package/skills/cometchat-android-v5-calls/references/migration-v4-to-v5.md +0 -222
  283. package/skills/cometchat-android-v5-calls/references/participant-management.md +0 -110
  284. package/skills/cometchat-android-v5-calls/references/picture-in-picture.md +0 -106
  285. package/skills/cometchat-android-v5-calls/references/raise-hand.md +0 -248
  286. package/skills/cometchat-android-v5-calls/references/recording.md +0 -101
  287. package/skills/cometchat-android-v5-calls/references/ringing-integration.md +0 -152
  288. package/skills/cometchat-android-v5-calls/references/screen-sharing.md +0 -78
  289. package/skills/cometchat-android-v5-calls/references/server-fcm-voip.md +0 -215
  290. package/skills/cometchat-android-v5-calls/references/session-settings.md +0 -121
  291. package/skills/cometchat-android-v5-calls/references/setup.md +0 -137
  292. package/skills/cometchat-android-v5-calls/references/share-invite.md +0 -156
  293. package/skills/cometchat-android-v5-calls/references/video-controls.md +0 -87
  294. package/skills/cometchat-android-v5-calls/references/voip-calling.md +0 -526
  295. package/skills/cometchat-android-v5-components/SKILL.md +0 -431
  296. package/skills/cometchat-android-v5-core/SKILL.md +0 -486
  297. package/skills/cometchat-android-v5-customization/SKILL.md +0 -469
  298. package/skills/cometchat-android-v5-extensions/SKILL.md +0 -127
  299. package/skills/cometchat-android-v5-features/SKILL.md +0 -131
  300. package/skills/cometchat-android-v5-placement/SKILL.md +0 -277
  301. package/skills/cometchat-android-v5-production/SKILL.md +0 -95
  302. package/skills/cometchat-android-v5-push/SKILL.md +0 -619
  303. package/skills/cometchat-android-v5-testing/SKILL.md +0 -188
  304. package/skills/cometchat-android-v5-theming/SKILL.md +0 -167
  305. package/skills/cometchat-android-v5-troubleshooting/SKILL.md +0 -74
  306. package/skills/cometchat-android-v6/SKILL.md +0 -108
  307. package/skills/cometchat-android-v6-calls/references/add-calls-to-existing-chat.md +0 -97
  308. package/skills/cometchat-android-v6-calls/references/advanced-features.md +0 -87
  309. package/skills/cometchat-android-v6-calls/references/call-layouts.md +0 -100
  310. package/skills/cometchat-android-v6-calls/references/call-session.md +0 -163
  311. package/skills/cometchat-android-v6-calls/references/device-management.md +0 -172
  312. package/skills/cometchat-android-v6-calls/references/group-calls.md +0 -191
  313. package/skills/cometchat-android-v6-calls/references/idle-timeout.md +0 -110
  314. package/skills/cometchat-android-v6-calls/references/in-call-chat.md +0 -141
  315. package/skills/cometchat-android-v6-calls/references/raise-hand.md +0 -188
  316. package/skills/cometchat-android-v6-calls/references/ringing-integration.md +0 -176
  317. package/skills/cometchat-android-v6-calls/references/server-fcm-voip.md +0 -127
  318. package/skills/cometchat-android-v6-calls/references/share-invite.md +0 -105
  319. package/skills/cometchat-android-v6-compose-theming/SKILL.md +0 -250
  320. package/skills/cometchat-android-v6-kotlin-theming/SKILL.md +0 -233
  321. package/skills/cometchat-angular-calls/SKILL.md +0 -378
  322. package/skills/cometchat-angular-calls/references/add-calls-to-existing-chat.md +0 -96
  323. package/skills/cometchat-angular-calls/references/call-layouts.md +0 -123
  324. package/skills/cometchat-angular-calls/references/call-session.md +0 -167
  325. package/skills/cometchat-angular-calls/references/custom-ui.md +0 -239
  326. package/skills/cometchat-angular-calls/references/device-management.md +0 -154
  327. package/skills/cometchat-angular-calls/references/group-calls.md +0 -433
  328. package/skills/cometchat-angular-calls/references/idle-timeout.md +0 -161
  329. package/skills/cometchat-angular-calls/references/in-call-chat.md +0 -148
  330. package/skills/cometchat-angular-calls/references/lazy-loading-pitfalls.md +0 -205
  331. package/skills/cometchat-angular-calls/references/migration-v4-to-v5.md +0 -53
  332. package/skills/cometchat-angular-calls/references/ngzone-and-async-callbacks.md +0 -184
  333. package/skills/cometchat-angular-calls/references/picture-in-picture.md +0 -285
  334. package/skills/cometchat-angular-calls/references/raise-hand.md +0 -172
  335. package/skills/cometchat-angular-calls/references/recording-screen-share.md +0 -260
  336. package/skills/cometchat-angular-calls/references/ringing-integration.md +0 -133
  337. package/skills/cometchat-angular-calls/references/server-web-push-vapid.md +0 -100
  338. package/skills/cometchat-angular-calls/references/share-invite.md +0 -122
  339. package/skills/cometchat-angular-calls/references/virtual-background.md +0 -29
  340. package/skills/cometchat-angular-components/SKILL.md +0 -235
  341. package/skills/cometchat-angular-core/SKILL.md +0 -386
  342. package/skills/cometchat-angular-customization/SKILL.md +0 -616
  343. package/skills/cometchat-angular-features/SKILL.md +0 -329
  344. package/skills/cometchat-angular-patterns/SKILL.md +0 -256
  345. package/skills/cometchat-angular-placement/SKILL.md +0 -314
  346. package/skills/cometchat-angular-production/SKILL.md +0 -564
  347. package/skills/cometchat-angular-push/SKILL.md +0 -389
  348. package/skills/cometchat-angular-testing/SKILL.md +0 -605
  349. package/skills/cometchat-angular-theming/SKILL.md +0 -290
  350. package/skills/cometchat-angular-troubleshooting/SKILL.md +0 -364
  351. package/skills/cometchat-astro-patterns/SKILL.md +0 -708
  352. package/skills/cometchat-calls/SKILL.md +0 -364
  353. package/skills/cometchat-calls/references/use-case-broadcast.md +0 -199
  354. package/skills/cometchat-calls/references/use-case-marketplace.md +0 -157
  355. package/skills/cometchat-calls/references/use-case-support.md +0 -189
  356. package/skills/cometchat-calls/references/use-case-team.md +0 -180
  357. package/skills/cometchat-calls/references/use-case-telehealth.md +0 -153
  358. package/skills/cometchat-components/SKILL.md +0 -1142
  359. package/skills/cometchat-core/SKILL.md +0 -1048
  360. package/skills/cometchat-customization/SKILL.md +0 -580
  361. package/skills/cometchat-customization/references/component-catalog.md +0 -236
  362. package/skills/cometchat-features/SKILL.md +0 -861
  363. package/skills/cometchat-flutter-v5/SKILL.md +0 -173
  364. package/skills/cometchat-flutter-v5-calls/SKILL.md +0 -453
  365. package/skills/cometchat-flutter-v5-calls/references/add-calls-to-existing-chat.md +0 -193
  366. package/skills/cometchat-flutter-v5-calls/references/call-layouts.md +0 -103
  367. package/skills/cometchat-flutter-v5-calls/references/call-session.md +0 -285
  368. package/skills/cometchat-flutter-v5-calls/references/device-management.md +0 -124
  369. package/skills/cometchat-flutter-v5-calls/references/group-calls.md +0 -181
  370. package/skills/cometchat-flutter-v5-calls/references/idle-timeout.md +0 -99
  371. package/skills/cometchat-flutter-v5-calls/references/in-call-chat.md +0 -135
  372. package/skills/cometchat-flutter-v5-calls/references/migration-v4-to-v5.md +0 -210
  373. package/skills/cometchat-flutter-v5-calls/references/raise-hand.md +0 -255
  374. package/skills/cometchat-flutter-v5-calls/references/ringing-integration.md +0 -196
  375. package/skills/cometchat-flutter-v5-calls/references/server-push-bridge.md +0 -101
  376. package/skills/cometchat-flutter-v5-calls/references/share-invite.md +0 -148
  377. package/skills/cometchat-flutter-v5-conversations/SKILL.md +0 -118
  378. package/skills/cometchat-flutter-v5-core/SKILL.md +0 -239
  379. package/skills/cometchat-flutter-v5-customization/SKILL.md +0 -358
  380. package/skills/cometchat-flutter-v5-events/SKILL.md +0 -156
  381. package/skills/cometchat-flutter-v5-messages/SKILL.md +0 -259
  382. package/skills/cometchat-flutter-v5-production/SKILL.md +0 -216
  383. package/skills/cometchat-flutter-v5-push/SKILL.md +0 -285
  384. package/skills/cometchat-flutter-v5-testing/SKILL.md +0 -401
  385. package/skills/cometchat-flutter-v5-theming/SKILL.md +0 -161
  386. package/skills/cometchat-flutter-v5-troubleshooting/SKILL.md +0 -130
  387. package/skills/cometchat-flutter-v5-users-groups/SKILL.md +0 -152
  388. package/skills/cometchat-flutter-v6/SKILL.md +0 -446
  389. package/skills/cometchat-flutter-v6-calls/references/add-calls-to-existing-chat.md +0 -136
  390. package/skills/cometchat-flutter-v6-calls/references/advanced-features.md +0 -89
  391. package/skills/cometchat-flutter-v6-calls/references/call-layouts.md +0 -105
  392. package/skills/cometchat-flutter-v6-calls/references/call-session.md +0 -229
  393. package/skills/cometchat-flutter-v6-calls/references/device-management.md +0 -105
  394. package/skills/cometchat-flutter-v6-calls/references/group-calls.md +0 -190
  395. package/skills/cometchat-flutter-v6-calls/references/idle-timeout.md +0 -88
  396. package/skills/cometchat-flutter-v6-calls/references/in-call-chat.md +0 -125
  397. package/skills/cometchat-flutter-v6-calls/references/raise-hand.md +0 -275
  398. package/skills/cometchat-flutter-v6-calls/references/ringing-integration.md +0 -171
  399. package/skills/cometchat-flutter-v6-calls/references/server-push-bridge.md +0 -93
  400. package/skills/cometchat-flutter-v6-calls/references/share-invite.md +0 -102
  401. package/skills/cometchat-flutter-v6-conversations/SKILL.md +0 -238
  402. package/skills/cometchat-flutter-v6-messages/SKILL.md +0 -384
  403. package/skills/cometchat-flutter-v6-theming/SKILL.md +0 -293
  404. package/skills/cometchat-flutter-v6-users-groups/SKILL.md +0 -224
  405. package/skills/cometchat-i18n/SKILL.md +0 -419
  406. package/skills/cometchat-ios/SKILL.md +0 -325
  407. package/skills/cometchat-ios-calls/references/add-calls-to-existing-chat.md +0 -174
  408. package/skills/cometchat-ios-calls/references/audio-modes-and-controls.md +0 -45
  409. package/skills/cometchat-ios-calls/references/avaudiosession-routing.md +0 -188
  410. package/skills/cometchat-ios-calls/references/call-layouts.md +0 -76
  411. package/skills/cometchat-ios-calls/references/call-session.md +0 -218
  412. package/skills/cometchat-ios-calls/references/callkit-and-pushkit.md +0 -357
  413. package/skills/cometchat-ios-calls/references/custom-ui.md +0 -322
  414. package/skills/cometchat-ios-calls/references/device-management.md +0 -171
  415. package/skills/cometchat-ios-calls/references/group-calls.md +0 -359
  416. package/skills/cometchat-ios-calls/references/idle-timeout.md +0 -184
  417. package/skills/cometchat-ios-calls/references/in-call-chat.md +0 -179
  418. package/skills/cometchat-ios-calls/references/migration-v4-to-v5.md +0 -196
  419. package/skills/cometchat-ios-calls/references/picture-in-picture.md +0 -246
  420. package/skills/cometchat-ios-calls/references/raise-hand.md +0 -26
  421. package/skills/cometchat-ios-calls/references/recording-screen-share.md +0 -252
  422. package/skills/cometchat-ios-calls/references/ringing-integration.md +0 -143
  423. package/skills/cometchat-ios-calls/references/server-apns-pushkit.md +0 -267
  424. package/skills/cometchat-ios-calls/references/share-invite.md +0 -148
  425. package/skills/cometchat-ios-calls/references/swiftui-uikit-hosting.md +0 -246
  426. package/skills/cometchat-ios-calls/references/voip-cert-setup.md +0 -166
  427. package/skills/cometchat-ios-production/SKILL.md +0 -738
  428. package/skills/cometchat-ios-testing/SKILL.md +0 -376
  429. package/skills/cometchat-ios-theming/SKILL.md +0 -667
  430. package/skills/cometchat-ios-troubleshooting/SKILL.md +0 -1003
  431. package/skills/cometchat-native-bare-patterns/SKILL.md +0 -550
  432. package/skills/cometchat-native-calls/SKILL.md +0 -669
  433. package/skills/cometchat-native-calls/references/add-calls-to-existing-chat.md +0 -203
  434. package/skills/cometchat-native-calls/references/call-layouts.md +0 -125
  435. package/skills/cometchat-native-calls/references/call-session.md +0 -182
  436. package/skills/cometchat-native-calls/references/custom-ui.md +0 -254
  437. package/skills/cometchat-native-calls/references/device-management.md +0 -158
  438. package/skills/cometchat-native-calls/references/expo-vs-bare.md +0 -179
  439. package/skills/cometchat-native-calls/references/group-calls.md +0 -296
  440. package/skills/cometchat-native-calls/references/idle-timeout.md +0 -128
  441. package/skills/cometchat-native-calls/references/in-call-chat.md +0 -145
  442. package/skills/cometchat-native-calls/references/migration-v4-to-v5.md +0 -72
  443. package/skills/cometchat-native-calls/references/picture-in-picture.md +0 -276
  444. package/skills/cometchat-native-calls/references/raise-hand.md +0 -205
  445. package/skills/cometchat-native-calls/references/recording-screen-share.md +0 -169
  446. package/skills/cometchat-native-calls/references/ringing-integration.md +0 -118
  447. package/skills/cometchat-native-calls/references/server-push-bridge.md +0 -135
  448. package/skills/cometchat-native-calls/references/server-push-payloads.md +0 -193
  449. package/skills/cometchat-native-calls/references/share-invite.md +0 -146
  450. package/skills/cometchat-native-calls/references/voip-push-end-to-end.md +0 -319
  451. package/skills/cometchat-native-components/SKILL.md +0 -628
  452. package/skills/cometchat-native-core/SKILL.md +0 -679
  453. package/skills/cometchat-native-customization/SKILL.md +0 -716
  454. package/skills/cometchat-native-expo-patterns/SKILL.md +0 -552
  455. package/skills/cometchat-native-features/SKILL.md +0 -638
  456. package/skills/cometchat-native-placement/SKILL.md +0 -509
  457. package/skills/cometchat-native-production/SKILL.md +0 -700
  458. package/skills/cometchat-native-push/SKILL.md +0 -594
  459. package/skills/cometchat-native-testing/SKILL.md +0 -582
  460. package/skills/cometchat-native-theming/SKILL.md +0 -681
  461. package/skills/cometchat-native-troubleshooting/SKILL.md +0 -501
  462. package/skills/cometchat-nextjs-patterns/SKILL.md +0 -899
  463. package/skills/cometchat-placement/SKILL.md +0 -1360
  464. package/skills/cometchat-production/SKILL.md +0 -1027
  465. package/skills/cometchat-react-calls/SKILL.md +0 -749
  466. package/skills/cometchat-react-calls/references/add-calls-to-existing-chat.md +0 -146
  467. package/skills/cometchat-react-calls/references/call-layouts.md +0 -160
  468. package/skills/cometchat-react-calls/references/call-session.md +0 -235
  469. package/skills/cometchat-react-calls/references/custom-ui.md +0 -247
  470. package/skills/cometchat-react-calls/references/device-management.md +0 -210
  471. package/skills/cometchat-react-calls/references/group-calls.md +0 -257
  472. package/skills/cometchat-react-calls/references/idle-timeout.md +0 -188
  473. package/skills/cometchat-react-calls/references/in-call-chat.md +0 -212
  474. package/skills/cometchat-react-calls/references/migration-v4-to-v5.md +0 -170
  475. package/skills/cometchat-react-calls/references/picture-in-picture.md +0 -245
  476. package/skills/cometchat-react-calls/references/raise-hand.md +0 -238
  477. package/skills/cometchat-react-calls/references/recording-screen-share.md +0 -144
  478. package/skills/cometchat-react-calls/references/ringing-integration.md +0 -255
  479. package/skills/cometchat-react-calls/references/server-web-push-vapid.md +0 -241
  480. package/skills/cometchat-react-calls/references/share-invite.md +0 -175
  481. package/skills/cometchat-react-calls/references/testing-calls-on-web.md +0 -216
  482. package/skills/cometchat-react-calls/references/virtual-background.md +0 -32
  483. package/skills/cometchat-react-calls/references/voip-and-web-push.md +0 -165
  484. package/skills/cometchat-react-patterns/SKILL.md +0 -628
  485. package/skills/cometchat-react-push/SKILL.md +0 -634
  486. package/skills/cometchat-react-router-patterns/SKILL.md +0 -758
  487. package/skills/cometchat-react-testing/SKILL.md +0 -413
  488. package/skills/cometchat-theming/SKILL.md +0 -498
  489. package/skills/cometchat-troubleshooting/SKILL.md +0 -294
@@ -1,190 +1,51 @@
1
1
  ---
2
2
  name: cometchat-android-v6-production
3
- description: "CometChat Android UIKit v6 production readiness — token auth, ProGuard/R8, security checklist, release configuration"
3
+ description: "Ship a CometChat Android v6 app safely — server-minted auth tokens instead of the dev Auth Key, keeping credentials out of the APK, release-build and R8/ProGuard checks, user provisioning server-side, rate limits, and the Play Store publishing prerequisites. Triggers: 'is my cometchat android app production ready', 'auth token instead of auth key android', 'release build cometchat android', 'proguard cometchat', 'publish chat app play store'."
4
4
  license: "MIT"
5
- compatibility: "Android 9.0+ (API 28); Kotlin 1.9+; com.cometchat:chatuikit-compose-android:6.x / com.cometchat:chatuikit-kotlin-android:6.x"
5
+ compatibility: "Android minSdk >=28; compileSdk >=36; Kotlin >=2.1; AGP >=8.9.1; JVM target 11; com.cometchat:chatuikit-kotlin-android ^6 OR com.cometchat:chatuikit-compose-android ^6 (6.0.x, verified 6.0.5); com.cometchat:chat-sdk-android ^5"
6
6
  metadata:
7
7
  author: "CometChat"
8
- version: "3.0.0"
9
- tags: "cometchat, android, production, security, proguard, release, auth-token"
8
+ version: "1.0.0"
9
+ tags: "cometchat android production release auth-token security v6 proguard"
10
10
  ---
11
11
 
12
- > **Ground truth:** `com.cometchat:chatuikit-{compose,kotlin}-android:6.x` (+ `calls-sdk-android:5.x`) — resolved AAR (javap) + `ui-kit/android/v6`. **Official docs:** https://www.cometchat.com/docs/fundamentals/user-auth · **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
+ > **Ground truth:** the installed kit source (`CometChatUIKit.loginWithAuthToken`) + `contracts.android-v6.json` (`prod-auth-token-guidance`) + the live SDK pages `/sdk/android/v5/rate-limits` and `/sdk/android/v5/publishing-app-on-playstore`. Fetch specifics from docs; never assert a limit or a ProGuard rule from memory.
13
13
 
14
- > **Companion skills:** cometchat-android-v6-core (init/login), cometchat-android-v6-builder-settings (UIKitSettings), cometchat-android-v6-push (FCM)
15
-
16
- ## Purpose
17
-
18
- Prepare a CometChat v6 Android app for production release — switch to token-based auth, configure ProGuard/R8, apply security best practices, and optimize the release build.
14
+ ## Companion skills (read first)
15
+ - `cometchat-android-v6-core` — install, credentials, `initFromSettings → login`, lifecycle. Assumed here, never repeated.
16
+ - `cometchat-android-v6-builder-settings` — the settings file + auth method reference · `cometchat-android-v6-testing` — pre-release verification · `cometchat-android-v6-push` (unregister on logout).
19
17
 
20
18
  ## Use this skill when
21
-
22
- - Preparing an app for production/release
23
- - Switching from authKey to token-based authentication
24
- - Configuring ProGuard/R8 rules for CometChat
25
- - Reviewing security best practices
26
-
27
- ## Do not use this skill when
28
-
29
- - Setting up for development (use `cometchat-android-v6-core`)
30
- - Debugging issues (use `cometchat-android-v6-troubleshooting`)
31
-
32
- ## 1. Token-Based Authentication
33
-
34
- ### 1.1 Never Ship authKey
35
-
36
- ```kotlin
37
- // ❌ NEVER in production
38
- val settings = UIKitSettings.UIKitSettingsBuilder()
39
- .setAppId("APP_ID")
40
- .setRegion("us")
41
- .setAuthKey("AUTH_KEY") // REMOVE THIS
42
- .build()
43
-
44
- CometChatUIKit.login("uid", callback) // Uses authKey internally
45
-
46
- // ✅ Production pattern
47
- val settings = UIKitSettings.UIKitSettingsBuilder()
48
- .setAppId("APP_ID")
49
- .setRegion("us")
50
- // No authKey
51
- .build()
52
-
53
- // Get token from your backend server
54
- val authToken = yourServer.getAuthToken(userId)
55
- CometChatUIKit.loginWithAuthToken(authToken, callback)
56
- ```
57
-
58
- ### 1.2 Server-Side Token Generation
59
-
60
- Your backend generates auth tokens using the CometChat REST API:
61
- - Endpoint: `POST https://{appId}.api-{region}.cometchat.io/v3/users/{uid}/auth_tokens`
62
- - Header: `apiKey: YOUR_API_KEY` (server-side only)
63
-
64
- The auth token is then passed to the client for `loginWithAuthToken()`.
65
-
66
- ## 2. ProGuard / R8 Configuration
67
-
68
- ### 2.1 Consumer Rules
69
-
70
- CometChat UIKit modules include `consumer-rules.pro` that are automatically applied. Check that your app's `build.gradle.kts` has:
71
-
72
- ```kotlin
73
- android {
74
- buildTypes {
75
- release {
76
- isMinifyEnabled = true
77
- proguardFiles(
78
- getDefaultProguardFile("proguard-android-optimize.txt"),
79
- "proguard-rules.pro"
80
- )
81
- }
82
- }
83
- }
84
- ```
85
-
86
- ### 2.2 Additional ProGuard Rules
87
-
88
- If you encounter issues with minification, add these rules:
89
-
90
- ```proguard
91
- # CometChat SDK
92
- -keep class com.cometchat.chat.** { *; }
93
- -keep class com.cometchat.calls.** { *; }
94
-
95
- # CometChat UIKit
96
- -keep class com.cometchat.uikit.** { *; }
97
-
98
- # Gson (used for FCM DTO parsing)
99
- -keep class com.google.gson.** { *; }
100
- -keepattributes Signature
101
- -keepattributes *Annotation*
102
-
103
- # Firebase
104
- -keep class com.google.firebase.** { *; }
105
- ```
106
-
107
- ## 3. Security Checklist
108
-
109
- | Item | Status | Notes |
19
+ "are we production ready?", "switch from the Auth Key to auth tokens", "prepare the release build", "does CometChat need ProGuard rules?", "what are the rate limits?", "anything to do before Play Store submission?".
20
+
21
+ ## Production golden path
22
+ 1. **Auth: server-minted tokens, never the Auth Key.** The dev flow (`login(uid, …)` backed by `credentials.authKey` in the settings file) is **development only** — the Auth Key can create/authenticate any user, so shipping it in an APK is a full compromise (APKs are trivially decompiled). Production: your backend creates the user and mints a per-user **auth token** via the CometChat REST API, your app fetches it over your own authenticated channel, then:
23
+ ```kotlin
24
+ CometChatUIKit.loginWithAuthToken(authToken, object : CometChat.CallbackListener<User>() {
25
+ override fun onSuccess(user: User) { /* unlock the chat UI */ }
26
+ override fun onError(e: CometChatException) { /* surface + retry path */ }
27
+ })
28
+ ```
29
+ Guard it the same way (`getLoggedInUser() != null` → skip). Token fetch failure must be a real error state, not a blank screen.
30
+ 2. **Strip credentials from the release artifact.** Omit `credentials.authKey` from `app/src/main/assets/cometchat-settings.json` in release builds (or ship a release-flavored assets file); keep the file **gitignored**. `appId`/`region` are not secrets, the Auth Key is. Verify by unzipping the APK/AAB and grepping the merged assets — do this before every release.
31
+ 3. **Provision users server-side.** `CometChatUIKit.createUser(...)` is for prototypes; production creates users through your backend + the CometChat REST API, in the same request that issues the auth token.
32
+ 4. **Log out cleanly.** Unregister the push token BEFORE `CometChatUIKit.logout(...)` (`cometchat-android-v6-push`), and clear any cached uid/token in your own storage — otherwise the next user on a shared device inherits notifications.
33
+ 5. **Release build sanity.** Build the **release** variant (not just debug) and run the app: minified/shrunk builds are where reflection-based failures appear. The kit ships its own consumer rules, so there is normally nothing to add — but **verify by running the release build**, and if a `ClassNotFoundException`/serialization failure appears, capture it and check the current kit docs before hand-writing `-keep` rules. Don't paste ProGuard rules from memory.
34
+ 6. **Rate limits & scale.** The Chat SDK has documented limits (message rates, request sizes, listener/connection behavior) — fetch `/sdk/android/v5/rate-limits.md` before building anything that sends in bulk or fans out; paginate with request builders rather than unbounded fetches.
35
+ 7. **Play Store prerequisites.** Fetch `/sdk/android/v5/publishing-app-on-playstore.md` — it covers what the SDK needs for a store submission. Also budget for: runtime permission rationale (CAMERA/RECORD_AUDIO for calls, POST_NOTIFICATIONS for push), a privacy-policy entry covering chat data, and Data-safety form answers reflecting what CometChat transmits.
36
+
37
+ ## Known failure modes → fix
38
+ | Symptom | Cause | Fix |
110
39
  |---|---|---|
111
- | Remove `authKey` from client code | Required | Use `loginWithAuthToken()` |
112
- | Store `appId` securely | Recommended | Use BuildConfig or encrypted prefs |
113
- | Use HTTPS for all custom endpoints | Required | `overrideAdminHost` / `overrideClientHost` |
114
- | Validate auth tokens server-side | Required | Tokens should expire |
115
- | Do not log sensitive data | Required | Remove debug logs in release |
116
- | Enable R8/ProGuard | Recommended | Obfuscates code |
117
- | Pin SSL certificates | Optional | For high-security apps |
118
-
119
- ## 4. Release Build Configuration
120
-
121
- ```kotlin
122
- android {
123
- compileSdk = 36
124
-
125
- defaultConfig {
126
- minSdk = 28
127
- targetSdk = 36
128
- }
129
-
130
- buildTypes {
131
- release {
132
- isMinifyEnabled = true
133
- isShrinkResources = true
134
- proguardFiles(
135
- getDefaultProguardFile("proguard-android-optimize.txt"),
136
- "proguard-rules.pro"
137
- )
138
- }
139
- }
140
-
141
- compileOptions {
142
- sourceCompatibility = JavaVersion.VERSION_11
143
- targetCompatibility = JavaVersion.VERSION_11
144
- }
145
-
146
- kotlinOptions {
147
- jvmTarget = "11"
148
- }
149
- }
150
- ```
151
-
152
- ## 5. Dependency Management
153
-
154
- ### 5.1 Compose BOM
155
-
156
- For Compose stack, use the BOM to align Compose library versions:
157
-
158
- ```kotlin
159
- implementation(platform("androidx.compose:compose-bom:2024.x.x"))
160
- implementation("androidx.compose.ui:ui")
161
- implementation("androidx.compose.material3:material3")
162
- ```
163
-
164
- ### 5.2 Version Pinning
165
-
166
- Pin CometChat SDK versions explicitly:
167
-
168
- ```kotlin
169
- implementation("com.cometchat:chatuikit-compose-android:6.0.+")
170
- // or
171
- implementation("com.cometchat:chatuikit-kotlin-android:6.0.+")
172
- ```
173
-
174
- > Never pin `6.0.0-beta2` (or any `-beta` preview) in a production build — V6 went GA on 2026-05-25. The `6.0.+` dynamic pin tracks GA patches forward (ENG-35701). Pin an exact GA patch (e.g. `6.0.1`) if your release process requires reproducible builds.
175
-
176
- ## 6. minSdk 28 Implications
177
-
178
- v6 requires `minSdk = 28` (Android 9.0 Pie). This means:
179
- - No support for Android 7.0-8.1 devices
180
- - Full TLS 1.3 support
181
- - Native BiometricPrompt API available
182
- - Adaptive icons required
183
-
184
- ## Hard rules
185
-
186
- - NEVER ship `authKey` in production builds — it allows anyone to create users and login
187
- - ALWAYS use `loginWithAuthToken()` with server-generated tokens in production
188
- - ALWAYS test the release build with ProGuard/R8 enabled before shipping — CometChat uses reflection in some areas
189
- - `minSdk` must be 28 — do NOT lower it, v6 APIs depend on API 28+ features
190
- - Remove all `Log.d()` / debug logging in release builds — use `BuildConfig.DEBUG` guards
40
+ | Auth works in debug, fails in release | release settings file has no `authKey` but code still uses `login(uid)` | switch the release path to `loginWithAuthToken` |
41
+ | Auth Key found in the APK | `credentials.authKey` shipped | remove for release; rotate the key in the Dashboard |
42
+ | Crash only in release | shrinking/obfuscation | reproduce on the release variant, read the real stack trace, then consult docs before adding keep rules |
43
+ | Notifications reach the wrong user | token not unregistered on logout | unregister before logout |
44
+ | Sends throttled / requests rejected | rate limits | batch + paginate; fetch the limits page |
45
+ | Blank chat after reinstall | token fetch failed and wasn't surfaced | render an error state + retry |
46
+
47
+ ## Common pitfalls
48
+ Treating the dev Auth Key path as shippable · a settings file committed to git · never building the release variant before submission · creating users from the client in production · hand-written ProGuard rules copied from an old version · unbounded message/user fetches · no error state for token-fetch failure · leaving `enableCalling`/debug logging on when the product doesn't use calls.
49
+
50
+ ## Verify it works
51
+ Compile (`./gradlew :app:assembleDebug # in YOUR app (npm run verify:fences:android-v6 is a pack-repo gate)`). Then, on a **release** build installed on a device: login uses `loginWithAuthToken` and succeeds; unzipping the artifact shows **no Auth Key**; chat, calls (if used) and push all work post-minification; logout unregisters push and a second user's session is clean; an intentionally broken token fetch shows a readable error, not a blank screen. Anything you could not verify (store review, backend token endpoint) — say so explicitly rather than claiming it.
@@ -1,315 +1,65 @@
1
1
  ---
2
2
  name: cometchat-android-v6-push
3
- description: "CometChat Android UIKit v6 push notifications — FCM setup, chat/call notification handling, VoIP integration, and deep-linking"
3
+ description: "Add push notifications (FCM) to an Android v6 CometChat app — Firebase + Dashboard provider setup, the push dependency, token registration after login, token refresh, unregister on logout, manifest/service wiring, badge count and notification navigation. THIN + docs-first: fetches the notifications docs for exact payloads. Triggers: 'add push notifications android cometchat', 'fcm cometchat android', 'notifications not arriving android', 'badge count android'."
4
4
  license: "MIT"
5
- compatibility: "Android 9.0+ (API 28); Kotlin 1.9+; com.cometchat:chatuikit-compose-android:6.x / com.cometchat:chatuikit-kotlin-android:6.x"
5
+ compatibility: "Android minSdk >=28; compileSdk >=36; Kotlin >=2.1; AGP >=8.9.1; JVM target 11; com.cometchat:chatuikit-kotlin-android ^6 OR com.cometchat:chatuikit-compose-android ^6 (6.0.x); com.cometchat:chat-sdk-android ^5; Firebase BoM (firebase-messaging)"
6
6
  metadata:
7
7
  author: "CometChat"
8
- version: "3.0.0"
9
- tags: "cometchat, android, push, fcm, firebase, voip, notifications, calls"
8
+ version: "1.0.0"
9
+ tags: "cometchat android push notifications fcm v6 firebase"
10
10
  ---
11
11
 
12
- > **Ground truth:** `com.cometchat:chatuikit-{compose,kotlin}-android:6.x` (+ `calls-sdk-android:5.x`) — resolved AAR (javap) + `ui-kit/android/v6`. **Official docs:** https://www.cometchat.com/docs/notifications/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
+ > **Ground truth:** `features.android-v6.json` (`push-notifications`) + the **live notifications docs** — `/notifications/android-push-notifications` is the manual (12 sections: Firebase+Dashboard prep, Gradle, manifest/services, application wiring, token registration, unregister, badge count, message/call pushes, payload customization, navigation). This skill is THIN and docs-first: it owns the ORDER and the traps; **fetch the page for exact payloads/snippets** (`core` → `references/docs-map.md`).
13
13
 
14
- > **Companion skills:** cometchat-android-v6-core (init/login), cometchat-android-v6-events (call events), cometchat-android-v6-builder-settings (calling config)
15
-
16
- ## Purpose
17
-
18
- Set up push notifications for CometChat v6 using Firebase Cloud Messaging (FCM), handle chat and call notifications, and integrate VoIP for background call handling.
14
+ ## Companion skills (read first)
15
+ - `cometchat-android-v6-core` — install, credentials, `initFromSettings → login`, lifecycle. Assumed here, never repeated.
16
+ - `cometchat-android-v6-calls` — call pushes ride the same channel (ConnectionService path in the docs).
19
17
 
20
18
  ## Use this skill when
19
+ "add push notifications", "set up FCM with CometChat", "pushes aren't arriving", "notification badge count", "open the right chat when a notification is tapped".
21
20
 
22
- - Adding FCM push notifications for chat messages
23
- - Handling incoming call notifications (foreground and background)
24
- - Setting up VoIP with TelecomManager for native call UI
25
- - Implementing deep-link navigation from notifications
26
-
27
- ## Do not use this skill when
28
-
29
- - Just initializing the SDK (use `cometchat-android-v6-core`)
30
- - Working with UI components (use `cometchat-*-components`)
31
-
32
- ## 1. FCM Setup
33
-
34
- ### 1.1 Gradle Dependencies
35
-
36
- ```kotlin
37
- // In project-level build.gradle
38
- plugins {
39
- id("com.google.gms.google-services") version "4.4.2" apply false
40
- }
41
-
42
- // In app-level build.gradle.kts
43
- plugins {
44
- id("com.google.gms.google-services")
45
- }
46
-
47
- dependencies {
48
- implementation(platform("com.google.firebase:firebase-bom:33.x.x"))
49
- implementation("com.google.firebase:firebase-messaging")
50
- }
51
- ```
52
-
53
- Add `google-services.json` to your app module's root directory.
54
-
55
- ### 1.2 Initialize Firebase
56
-
57
- ```kotlin
58
- // In Application.onCreate()
59
- FirebaseApp.initializeApp(this)
60
- ```
61
-
62
- ### 1.3 Register / unregister the push token (the kit's ONLY public push API)
63
-
64
- This is the single load-bearing client step. `CometChatNotifications.registerPushToken(...)` binds the FCM token to the logged-in CometChat user; `unregisterPushToken(...)` clears it. The Android `PushPlatforms` constant is **`FCM_ANDROID`** (verified in `com.cometchat.chat.enums.PushPlatforms` — the only Android value). Everything in §2 onward is sample-app glue you control; *this* is the real API.
21
+ ## Feature check (the oracle first)
22
+ `features.android-v6.json` → `push-notifications`: **`gradle-package`**, `needs_stitching: true`, `needs_dashboard: true`. So it is never "just code": it needs **(a)** a Firebase project + `google-services.json`, **(b)** an FCM **provider configured in the CometChat Dashboard** (you get a **Provider ID** — you'll need it in code), and **(c)** client wiring. Tell the user all three up front; you cannot do (a)/(b) for them.
65
23
 
24
+ ## Enablement — the ordered path
25
+ 1. **Firebase + Dashboard** — create/choose the Firebase project, add the Android app, download `google-services.json` into `app/`. In the CometChat Dashboard → Notifications, add the FCM provider (service-account credentials) and note the **Provider ID**.
26
+ 2. **Gradle** — Google services plugin + `com.google.firebase:firebase-messaging` (via the Firebase BoM) alongside your kit + `chat-sdk-android`. Exact coordinates/versions: fetch the docs page (§2) rather than pinning from memory.
27
+ 3. **Manifest + service** — the `POST_NOTIFICATIONS` runtime permission (Android 13+), your `FirebaseMessagingService` subclass registered in the manifest, and a notification channel. (docs §3, §5)
28
+ 4. **Register the token AFTER login succeeds** — never before; the token binds to the logged-in user:
66
29
  ```kotlin
67
- import com.cometchat.chat.core.CometChatNotifications
68
- import com.cometchat.chat.enums.PushPlatforms
69
- import com.cometchat.chat.exceptions.CometChatException
70
- import com.google.firebase.messaging.FirebaseMessaging
71
-
72
- // Call AFTER CometChatUIKit.login(...) resolves (a token registered before
73
- // login is not bound to a user). Also call from FCMService.onNewToken when a
74
- // session already exists (token rotation).
75
- fun registerPushToken() {
76
- FirebaseMessaging.getInstance().token.addOnCompleteListener { task ->
77
- if (!task.isSuccessful) return@addOnCompleteListener
30
+ FirebaseMessaging.getInstance().token.addOnCompleteListener { task ->
31
+ if (task.isSuccessful) {
78
32
  CometChatNotifications.registerPushToken(
79
33
  task.result,
80
34
  PushPlatforms.FCM_ANDROID,
81
- "YOUR_PROVIDER_ID", // FCM Provider ID from the CometChat dashboard (§4 setup)
82
- object : CometChat.CallbackListener<String>() {
83
- override fun onSuccess(s: String?) { /* registered */ }
84
- override fun onError(e: CometChatException) { /* log + retry */ }
35
+ PROVIDER_ID, // from the Dashboard FCM provider
36
+ object : CometChat.CallbackListener<String?>() {
37
+ override fun onSuccess(uid: String?) { /* registered */ }
38
+ override fun onError(e: CometChatException) { /* retry / surface */ }
85
39
  }
86
40
  )
87
41
  }
88
42
  }
89
-
90
- // Call BEFORE CometChatUIKit.logout() — otherwise the logged-out device keeps
91
- // receiving pushes for the previous user.
92
- fun unregisterPushToken(onDone: () -> Unit) {
93
- CometChatNotifications.unregisterPushToken(object : CometChat.CallbackListener<String>() {
94
- override fun onSuccess(s: String?) { onDone() }
95
- override fun onError(e: CometChatException) { onDone() } // proceed with logout regardless
96
- })
97
- }
98
- ```
99
-
100
- Lifecycle: **register after login resolves** (and on `onNewToken` when a session exists), **unregister before logout**. This mirrors the verified `cometchat-android-v5-push` pattern — the registration API is identical across v5/v6 (it lives in the Chat SDK, not the UI Kit).
101
-
102
- ## 2. FCMService Implementation
103
-
104
- > **Heads-up — this is a reference pattern.** The classes referenced below (`CometChatVoIP`, `CometChatVoIPConnectionService`, `FCMMessageDTO`, `FCMCallDto`, `FCMService`, `VoIPPermissionListener`, `CometChatVoIPUtils`, `FCMMessageNotificationUtils`) are NOT exported from `com.cometchat:chatuikit-{compose,kotlin}-android:6.x`. They are sample-app glue (derived from the CometChat Android push sample app — note: not present in the v6 kit clone, so treat them as a copy-in/reference pattern) — copy the relevant source files into your project, or use them as a guide for writing your own equivalents. The kit's only public push surface is `CometChatNotifications.registerPushToken(...)` / `unregisterPushToken(...)`; everything below is glue you control.
105
-
106
- Pattern from `master-app-jetpack/fcm/FCMService.kt` (sample-app code, copy into your project):
107
-
108
- ```kotlin
109
- class FCMService : FirebaseMessagingService() {
110
-
111
- companion object {
112
- var fcmToken: String? = null
113
- private set
114
- }
115
-
116
- override fun onNewToken(token: String) {
117
- super.onNewToken(token)
118
- fcmToken = token
119
- // Store token for later use (e.g., SharedPreferences)
120
- }
121
-
122
- override fun onMessageReceived(message: RemoteMessage) {
123
- super.onMessageReceived(message)
124
-
125
- if (message.data.isEmpty()) return
126
-
127
- val type = message.data["type"]?.lowercase()
128
- when (type) {
129
- "chat" -> handleChatNotification(message)
130
- "call" -> handleCallNotification(message)
131
- }
132
- }
133
- }
134
- ```
135
-
136
- ### 2.1 Chat Notification Handling
137
-
138
- ```kotlin
139
- private fun handleChatNotification(message: RemoteMessage) {
140
- val fcmMessageDTO = Gson().fromJson(
141
- Gson().toJson(message.data),
142
- FCMMessageDTO::class.java
143
- )
144
-
145
- // Mark as delivered for read receipts (only if SDK is initialized)
146
- if (CometChatUIKit.isSDKInitialized()) {
147
- CometChat.markAsDelivered(
148
- fcmMessageDTO.tag!!.toLong(),
149
- fcmMessageDTO.sender!!,
150
- fcmMessageDTO.receiverType!!,
151
- fcmMessageDTO.receiver!!
152
- )
153
- }
154
-
155
- // Show notification if user is NOT in the same chat
156
- val isUser = fcmMessageDTO.receiverType == CometChatConstants.RECEIVER_TYPE_USER
157
- val uid = if (isUser) fcmMessageDTO.sender!! else fcmMessageDTO.receiver!!
158
-
159
- if (uid != currentOpenChatId) {
160
- // Build and show notification
161
- FCMMessageNotificationUtils.showNotification(
162
- this, fcmMessageDTO, intent,
163
- NOTIFICATION_KEY_REPLY_ACTION,
164
- NotificationCompat.CATEGORY_MESSAGE
165
- )
166
- }
167
- }
168
- ```
169
-
170
- ### 2.2 Call Notification Handling
171
-
172
- ```kotlin
173
- private fun handleCallNotification(message: RemoteMessage) {
174
- val sessionId = message.data["sessionId"]
175
- val callAction = message.data["callAction"]
176
-
177
- // CRITICAL: Check if SDK is initialized
178
- if (!CometChatUIKit.isSDKInitialized()) {
179
- return // Cannot handle call without SDK
180
- }
181
-
182
- // Check VoIP permissions
183
- if (!CometChatVoIP.hasReadPhoneStatePermission(this) ||
184
- !CometChatVoIP.hasManageOwnCallsPermission(this) ||
185
- !CometChatVoIP.hasAnswerPhoneCallsPermission(this)) {
186
- return
187
- }
188
-
189
- // Check phone account is enabled
190
- CometChatVoIP.hasEnabledPhoneAccountForVoIP(this, object : VoIPPermissionListener {
191
- override fun onPermissionsGranted() {
192
- handleCallFlow(message)
193
- }
194
- override fun onPermissionsDenied(error: CometChatVoIPError?) {
195
- // Cannot show VoIP UI
196
- }
197
- })
198
- }
199
- ```
200
-
201
- ## 3. VoIP Integration
202
-
203
- ### 3.1 Required Permissions
204
-
205
- ```xml
206
- <uses-permission android:name="android.permission.READ_PHONE_STATE" />
207
- <uses-permission android:name="android.permission.MANAGE_OWN_CALLS" />
208
- <uses-permission android:name="android.permission.ANSWER_PHONE_CALLS" />
209
43
  ```
210
-
211
- ### 3.2 VoIP Call Flow
212
-
44
+ 5. **Re-register on token refresh** — the same call inside your service's `onNewToken(token)`. **Without this, pushes stop silently after Firebase rotates the token.**
45
+ 6. **Unregister on logout — BEFORE `CometChatUIKit.logout()`**:
213
46
  ```kotlin
214
- private fun handleCallFlow(message: RemoteMessage) {
215
- val callData = Gson().fromJson(
216
- Gson().toJson(message.data),
217
- FCMCallDto::class.java
218
- )
219
-
220
- // Initialize VoIP
221
- CometChatVoIP.init(this, applicationInfo.loadLabel(packageManager).toString())
222
-
223
- when (callData.callAction) {
224
- "initiated" -> {
225
- // Show incoming call UI (only if app is in background)
226
- if (!isAppInForeground()) {
227
- voipIncomingCall(callData)
228
- }
229
- // If foreground, UIKit's CometChatIncomingCall handles it
230
- }
231
- "cancelled", "unanswered" -> {
232
- // End the native call UI if session matches
233
- if (CometChatVoIPUtils.currentSessionId == callData.sessionId) {
234
- CometChatVoIP.telecomManager?.endCall()
235
- }
236
- }
237
- }
238
- }
239
- ```
240
-
241
- ### 3.3 Foreground vs Background Routing
242
-
243
- | App State | Incoming Call Handler |
244
- |---|---|
245
- | Foreground | UIKit's `CometChatIncomingCall` via SDK call listener |
246
- | Background | VoIP via `TelecomManager` + `CometChatVoIPConnectionService` |
247
- | Killed | FCM wakes app, but SDK may not be initialized — cannot handle call |
248
-
249
- ### 3.4 Busy Rejection
250
-
251
- ```kotlin
252
- private fun rejectCallWithBusyStatus(call: Call) {
253
- CometChat.rejectCall(
254
- call.sessionId,
255
- CometChatConstants.CALL_STATUS_BUSY,
256
- object : CometChat.CallbackListener<Call>() {
257
- override fun onSuccess(rejectedCall: Call?) {
258
- rejectedCall?.let {
259
- CometChatEvents.emitCallEvent(CometChatCallEvent.CallRejected(it))
260
- }
261
- }
262
- override fun onError(e: CometChatException) { }
263
- }
264
- )
265
- }
266
- ```
267
-
268
- ## 4. AndroidManifest Registration
269
-
270
- ```xml
271
- <service
272
- android:name=".fcm.FCMService"
273
- android:exported="false">
274
- <intent-filter>
275
- <action android:name="com.google.firebase.MESSAGING_EVENT" />
276
- </intent-filter>
277
- </service>
278
-
279
- <!-- VoIP Connection Service -->
280
- <service
281
- android:name=".voip.CometChatVoIPConnectionService"
282
- android:permission="android.permission.BIND_TELECOM_CONNECTION_SERVICE"
283
- android:exported="true">
284
- <intent-filter>
285
- <action android:name="android.telecom.ConnectionService" />
286
- </intent-filter>
287
- </service>
288
- ```
289
-
290
- ## 5. WebSocket Connection Management
291
-
292
- From `master-app-jetpack/Application.kt` — manage WebSocket connections based on app lifecycle:
293
-
294
- ```kotlin
295
- // When app comes to foreground
296
- CometChat.connect(object : CometChat.CallbackListener<String?>() {
297
- override fun onSuccess(s: String?) { /* connected */ }
298
- override fun onError(e: CometChatException) { /* failed */ }
299
- })
300
-
301
- // When app goes to background
302
- CometChat.disconnect(object : CometChat.CallbackListener<String?>() {
303
- override fun onSuccess(s: String?) { /* disconnected */ }
304
- override fun onError(e: CometChatException) { /* failed */ }
47
+ CometChatNotifications.unregisterPushToken(object : CometChat.CallbackListener<String?>() {
48
+ override fun onSuccess(s: String?) { /* then log out */ }
49
+ override fun onError(e: CometChatException) { /* surface */ }
305
50
  })
306
51
  ```
52
+ Skipping this leaks notifications to the previous user on a shared device.
53
+ 7. **Handle the payload** — message pushes (§9), call pushes via ConnectionService (§10), custom text/parsing (§11), tap-to-open navigation (§12), badge count (§8, needs the Dashboard badge toggle + a badge library). Fetch these sections; don't invent payload keys.
54
+
55
+ ## Client token wiring — the rules that matter
56
+ - Registration is **per logged-in user per device**: register after every successful login, unregister before every logout, re-register on refresh.
57
+ - The **Provider ID must match** the Dashboard FCM provider — a wrong/blank ID registers fine and then delivers nothing.
58
+ - Handle `onError` — a failed registration is the single most common cause of "no notifications", and it fails quietly if you ignore it.
59
+ - Foreground behavior is yours: CometChat delivers the push; whether you show a notification while the chat is open is app logic.
307
60
 
308
- ## Hard rules
61
+ ## Common pitfalls
62
+ Registering before login (token bound to nobody) · no `onNewToken` re-registration (pushes die after rotation) · no unregister on logout · wrong/omitted Provider ID · missing `google-services.json` or the Google-services plugin · missing `POST_NOTIFICATIONS` permission on Android 13+ · no notification channel (notification silently dropped) · testing on an emulator without Play services · assuming the Dashboard provider exists — ask.
309
63
 
310
- - ALWAYS check `CometChatUIKit.isSDKInitialized()` before making SDK calls in FCM service — the app may have been killed
311
- - NEVER show VoIP incoming call UI when app is in foreground — UIKit's `CometChatIncomingCall` handles foreground calls
312
- - VoIP requires READ_PHONE_STATE, MANAGE_OWN_CALLS, and ANSWER_PHONE_CALLS permissions — check all three before handling calls
313
- - `CometChat.markAsDelivered()` requires the SDK to be initialized — skip it if not
314
- - For push token registration, use `CometChatNotifications.registerPushToken(...)` / `unregisterPushToken(...)` — that is the kit's only public push API. The `CometChatVoIP*` / `FCM*` classes shown above are sample-app glue (`master-app-jetpack`), not part of `chatuikit-{compose,kotlin}`
315
- - Always manage WebSocket connections based on app lifecycle to avoid battery drain
64
+ ## Verify it works
65
+ Compile against the pinned kit (`./gradlew :app:assembleDebug # in YOUR app (npm run verify:fences:android-v6 is a pack-repo gate)`). **Live delivery is a MANUAL device check — it cannot be auto-smoked** (blocked-external; be honest about this): install on a real device with Play services, log in, confirm the registration callback hit `onSuccess`, background the app, send a message from another user → the notification arrives, and tapping it opens the right chat. Then log out and confirm notifications stop. Nothing arriving ⇒ check, in order: registration `onError`, Provider ID, Dashboard provider config, `google-services.json`, notification permission/channel.