@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,738 +1,82 @@
1
1
  ---
2
2
  name: cometchat-ios-production
3
- description: "Production-ready CometChat iOS setup — server-side auth tokens, security best practices, and deployment checklist."
3
+ description: "Ship a CometChat iOS (Swift) integration safely — server-minted auth tokens instead of the Auth Key, keeping secrets out of the app binary, and a pre-launch checklist. Triggers: 'is my cometchat ios production ready', 'auth token instead of auth key swift', 'secure cometchat ios', 'going live checklist ios', 'harden cometchat swift before launch'."
4
4
  license: "MIT"
5
- compatibility: "CometChatUIKitSwift ^5; iOS 13+"
5
+ compatibility: "CometChatUIKitSwift 5.1.22 + CometChatSDK 4.1.7 (exact); Xcode 16+; iOS 15.1+; SPM only"
6
6
  metadata:
7
7
  author: "CometChat"
8
- version: "3.0.0"
9
- tags: "chat cometchat ios production auth tokens security deployment"
8
+ version: "1.0.0"
9
+ tags: "cometchat ios swift production security auth-token hardening appstore"
10
10
  ---
11
11
 
12
- > **Ground truth:** `CometChatUIKitSwift ~> 5` (+ `CometChatCallsSDK ~> 5`) Pods/SPM `.swiftinterface` + `ui-kit/ios`. **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:** `CometChatUIKitSwift` 5.1.22 + `CometChatSDK` 4.1.7 (symbols verified vs `catalogs/ios-v5.json`). The login/auth-token API is FETCHED via `cometchat-ios-core/references/docs-map.md`; the REST auth-token endpoint is `{DOCS_BASE}/rest-api/auth-tokens`. **The iOS UI Kit docs have no single production-hardening page** this checklist is the pack's own guidance from `RULES.md` §4 + `cometchat-ios-core/references/setup-credentials.md`, labelled as such. Tracked DOCS GAP.
13
13
 
14
- ## Purpose
14
+ ## Companion skills (read first)
15
+ - `cometchat-ios-core` — `references/setup-credentials.md` (the `Secrets.xcconfig` → Info.plist → `Bundle.main` flow) and `references/swiftui.md` (the init→login launch hook) this hardens.
16
+ - `cometchat-security` — the enterprise auth model this client-side hardening plugs into: wiring your IdP / SSO into the token flow (your IdP → your server → mint the CometChat auth token; CometChat is **not** an IdP), token expiry/refresh + re-login, RBAC roles + group (SBAC) scopes, and Auth Key vs auth token vs REST API Key. Load it for a security review or any SSO question.
15
17
 
16
- This skill teaches how to prepare your CometChat iOS integration for production. It covers replacing development Auth Keys with server-side auth tokens, security best practices, and a deployment checklist.
18
+ ## Use this skill when
19
+ Moving off the development setup: TestFlight/App Store submission, a security review, or "is this safe to ship."
17
20
 
18
- ---
21
+ ## The one thing that matters
22
+ **Never embed the Auth Key in the app binary.**
19
23
 
20
- ## 1. Development vs Production Authentication
24
+ The Auth Key can mint a session for **any user in your app**. Anything baked into the app — an `xcconfig` value promoted into `Info.plist`, a string constant — is recoverable from the shipped `.ipa` (`strings`, class-dump). Treat it as public.
21
25
 
22
- ### Development Mode (Auth Key)
26
+ | | Development | Production |
27
+ | --- | --- | --- |
28
+ | Login | `CometChatUIKit.login(uid:...)` | `CometChatUIKit.login(authToken:...)` |
29
+ | Auth Key | in `Secrets.xcconfig` | **not in the build** |
30
+ | Token source | n/a | your backend, per authenticated user |
31
+ | REST API Key | never in the app | server only |
23
32
 
24
- In development, you use the Auth Key directly in your app:
33
+ ## The production login flow
34
+ 1. Your app authenticates the user (your own auth / sign-in with Apple / your backend).
35
+ 2. Your **server** mints a CometChat auth token for that user's UID via the REST API using the **REST API Key** (`{DOCS_BASE}/rest-api/auth-tokens`).
36
+ 3. The server returns the token to the app over an authenticated HTTPS request.
37
+ 4. The app calls `login(authToken:)`.
25
38
 
26
39
  ```swift
27
- // ⚠️ DEVELOPMENT ONLY Never ship this to production
28
- CometChatUIKit.login(uid: "user-123") { result in
29
- // ...
30
- }
31
- ```
32
-
33
- **Problems with Auth Key in production:**
34
- - Auth Key is embedded in your app binary
35
- - Anyone can decompile your app and extract it
36
- - Attackers can impersonate any user
37
- - No server-side validation of user identity
38
-
39
- ### Production Mode (Auth Token)
40
-
41
- In production, your server generates short-lived auth tokens:
42
-
43
- ```
44
- ┌─────────────┐ 1. Login ┌─────────────┐
45
- │ iOS App ───────────────► Your Server
46
- └─────────────┘ └─────────────┘
47
- │ │
48
- │ │ 2. Verify user
49
- │ │ Generate token
50
- │ ▼
51
- │ ┌─────────────┐
52
- │ │ CometChat │
53
- │ │ API
54
- │ └─────────────┘
55
- │ │
56
- │ 3. Return auth token │
57
- ◄──────────────────────────────┘
58
-
59
- 4. Login with token
60
-
61
- ┌─────────────┐
62
- │ CometChat │
63
- │ SDK │
64
- └─────────────┘
65
- ```
66
-
67
- ---
68
-
69
- ## 2. Server-Side Token Generation
70
-
71
- ### Your Server Endpoint
72
-
73
- Create an endpoint that:
74
- 1. Authenticates the user (your existing auth system)
75
- 2. Calls CometChat API to generate an auth token
76
- 3. Returns the token to the iOS app
77
-
78
- **Example (Node.js/Express):**
79
-
80
- ```javascript
81
- const express = require('express');
82
- const axios = require('axios');
83
-
84
- const app = express();
85
-
86
- const COMETCHAT_APP_ID = process.env.COMETCHAT_APP_ID;
87
- const COMETCHAT_API_KEY = process.env.COMETCHAT_API_KEY; // REST API Key
88
- const COMETCHAT_REGION = process.env.COMETCHAT_REGION;
89
-
90
- app.post('/api/cometchat/token', async (req, res) => {
91
- try {
92
- // 1. Verify the user is authenticated (your auth system)
93
- const userId = req.user.id; // From your auth middleware
94
-
95
- if (!userId) {
96
- return res.status(401).json({ error: 'Unauthorized' });
97
- }
98
-
99
- // 2. Generate CometChat auth token
100
- const response = await axios.post(
101
- `https://${COMETCHAT_APP_ID}.api-${COMETCHAT_REGION}.cometchat.io/v3/users/${userId}/auth_tokens`,
102
- {},
103
- {
104
- headers: {
105
- 'apiKey': COMETCHAT_API_KEY,
106
- 'Content-Type': 'application/json'
107
- }
108
- }
109
- );
110
-
111
- // 3. Return the token
112
- res.json({
113
- authToken: response.data.data.authToken
114
- });
115
-
116
- } catch (error) {
117
- console.error('CometChat token error:', error.response?.data || error.message);
118
- res.status(500).json({ error: 'Failed to generate token' });
119
- }
120
- });
121
- ```
122
-
123
- **Example (Python/Flask):**
124
-
125
- ```python
126
- from flask import Flask, jsonify, request
127
- import requests
128
- import os
129
-
130
- app = Flask(__name__)
131
-
132
- COMETCHAT_APP_ID = os.environ.get('COMETCHAT_APP_ID')
133
- COMETCHAT_API_KEY = os.environ.get('COMETCHAT_API_KEY')
134
- COMETCHAT_REGION = os.environ.get('COMETCHAT_REGION')
135
-
136
- @app.route('/api/cometchat/token', methods=['POST'])
137
- def get_cometchat_token():
138
- # 1. Verify user is authenticated (your auth system)
139
- user_id = request.user.id # From your auth middleware
140
-
141
- if not user_id:
142
- return jsonify({'error': 'Unauthorized'}), 401
143
-
144
- # 2. Generate CometChat auth token
145
- url = f'https://{COMETCHAT_APP_ID}.api-{COMETCHAT_REGION}.cometchat.io/v3/users/{user_id}/auth_tokens'
146
-
147
- headers = {
148
- 'apiKey': COMETCHAT_API_KEY,
149
- 'Content-Type': 'application/json'
150
- }
151
-
152
- response = requests.post(url, headers=headers)
153
-
154
- if response.status_code == 200:
155
- data = response.json()
156
- return jsonify({'authToken': data['data']['authToken']})
157
- else:
158
- return jsonify({'error': 'Failed to generate token'}), 500
159
- ```
160
-
161
- ### CometChat REST API Reference
162
-
163
- **Create Auth Token:**
164
- ```
165
- POST https://{appId}.api-{region}.cometchat.io/v3/users/{uid}/auth_tokens
166
-
167
- Headers:
168
- apiKey: YOUR_REST_API_KEY
169
- Content-Type: application/json
170
-
171
- Response:
172
- {
173
- "data": {
174
- "uid": "user-123",
175
- "authToken": "user-123_abc123xyz..."
176
- }
177
- }
178
- ```
179
-
180
- **Create User (if needed):**
181
- ```
182
- POST https://{appId}.api-{region}.cometchat.io/v3/users
183
-
184
- Headers:
185
- apiKey: YOUR_REST_API_KEY
186
- Content-Type: application/json
187
-
188
- Body:
189
- {
190
- "uid": "user-123",
191
- "name": "John Doe",
192
- "avatar": "https://example.com/avatar.jpg"
193
- }
194
- ```
195
-
196
- ---
197
-
198
- ## 3. iOS Implementation
199
-
200
- ### CometChatManager for Production
201
-
202
- ```swift
203
- import Foundation
204
- import CometChatUIKitSwift
205
- import CometChatSDK
206
-
207
- final class CometChatManager {
208
-
209
- static let shared = CometChatManager()
210
-
211
- private(set) var isInitialized = false
212
- private(set) var currentUser: User?
213
-
214
- private init() {}
215
-
216
- // MARK: - Initialization (No Auth Key needed)
217
-
218
- func initialize(completion: @escaping (Result<Bool, Error>) -> Void) {
219
- guard !isInitialized else {
220
- completion(.success(true))
221
- return
222
- }
223
-
224
- // Note: No authKey in production!
225
- let uiKitSettings = UIKitSettings()
226
- .set(appID: AppConfig.cometChatAppID)
227
- .set(region: AppConfig.cometChatRegion)
228
- .subscribePresenceForAllUsers()
229
- .build()
230
-
231
- CometChatUIKit(uiKitSettings: uiKitSettings) { [weak self] result in
232
- DispatchQueue.main.async {
233
- switch result {
234
- case .success(let success):
235
- self?.isInitialized = success
236
- self?.currentUser = CometChatUIKit.getLoggedInUser()
237
- completion(.success(success))
238
- case .failure(let error):
239
- completion(.failure(error))
240
- }
241
- }
242
- }
243
- }
244
-
245
- // MARK: - Production Login
246
-
247
- func login(completion: @escaping (Result<User, Error>) -> Void) {
248
- guard isInitialized else {
249
- completion(.failure(CometChatError.notInitialized))
250
- return
251
- }
252
-
253
- // Check for existing session
254
- if let user = CometChatUIKit.getLoggedInUser() {
255
- currentUser = user
256
- completion(.success(user))
257
- return
258
- }
259
-
260
- // Fetch auth token from your server
261
- fetchAuthToken { [weak self] result in
262
- switch result {
263
- case .success(let authToken):
264
- self?.loginWithToken(authToken, completion: completion)
265
- case .failure(let error):
266
- completion(.failure(error))
267
- }
268
- }
269
- }
270
-
271
- private func fetchAuthToken(completion: @escaping (Result<String, Error>) -> Void) {
272
- guard let url = URL(string: "\(AppConfig.apiBaseURL)/api/cometchat/token") else {
273
- completion(.failure(CometChatError.invalidURL))
274
- return
275
- }
276
-
277
- var request = URLRequest(url: url)
278
- request.httpMethod = "POST"
279
- request.setValue("application/json", forHTTPHeaderField: "Content-Type")
280
-
281
- // Add your auth header (e.g., JWT token)
282
- if let authToken = AuthManager.shared.accessToken {
283
- request.setValue("Bearer \(authToken)", forHTTPHeaderField: "Authorization")
284
- }
285
-
286
- URLSession.shared.dataTask(with: request) { data, response, error in
287
- if let error = error {
288
- completion(.failure(error))
289
- return
290
- }
291
-
292
- guard let data = data else {
293
- completion(.failure(CometChatError.noData))
294
- return
295
- }
296
-
297
- do {
298
- let json = try JSONSerialization.jsonObject(with: data) as? [String: Any]
299
- if let authToken = json?["authToken"] as? String {
300
- completion(.success(authToken))
301
- } else {
302
- completion(.failure(CometChatError.invalidResponse))
303
- }
304
- } catch {
305
- completion(.failure(error))
306
- }
307
- }.resume()
308
- }
309
-
310
- private func loginWithToken(_ authToken: String, completion: @escaping (Result<User, Error>) -> Void) {
311
- CometChatUIKit.login(authToken: authToken) { [weak self] result in
312
- DispatchQueue.main.async {
313
- switch result {
314
- case .success(let user):
315
- self?.currentUser = user
316
- completion(.success(user))
317
- case .onError(let error):
318
- // CometChatException does NOT conform to Swift's Error, so it
319
- // can't go straight into Result<_, Error> — bridge it.
320
- completion(.failure(CometChatError.sdk(error)))
321
- }
322
- }
323
- }
324
- }
325
-
326
- // MARK: - Logout
327
-
328
- func logout(completion: @escaping (Result<Void, Error>) -> Void) {
329
- guard let user = currentUser else {
330
- completion(.success(()))
331
- return
332
- }
333
-
334
- CometChatUIKit.logout(user: user) { [weak self] result in
335
- DispatchQueue.main.async {
336
- switch result {
337
- case .success:
338
- self?.currentUser = nil
339
- completion(.success(()))
340
- case .onError(let error):
341
- // CometChatException does NOT conform to Swift's Error, so it
342
- // can't go straight into Result<_, Error> — bridge it.
343
- completion(.failure(CometChatError.sdk(error)))
344
- }
345
- }
346
- }
347
- }
348
- }
349
-
350
- // MARK: - Errors
351
-
352
- enum CometChatError: LocalizedError {
353
- case notInitialized
354
- case invalidURL
355
- case noData
356
- case invalidResponse
357
- case sdk(CometChatException) // bridges a CometChatException into Swift's Error
358
-
359
- var errorDescription: String? {
360
- switch self {
361
- case .notInitialized:
362
- return "CometChat is not initialized"
363
- case .invalidURL:
364
- return "Invalid API URL"
365
- case .noData:
366
- return "No data received from server"
367
- case .invalidResponse:
368
- return "Invalid response from server"
369
- case .sdk(let exception):
370
- return exception.errorDescription
371
- }
372
- }
373
- }
374
- ```
375
-
376
- ### App Configuration
377
-
378
- ```swift
379
- // AppConfig.swift
380
- import Foundation
381
-
382
- struct AppConfig {
383
-
384
- // CometChat
385
- static let cometChatAppID: String = {
386
- guard let appID = Bundle.main.object(forInfoDictionaryKey: "CometChatAppID") as? String else {
387
- fatalError("CometChatAppID not found in Info.plist")
388
- }
389
- return appID
390
- }()
391
-
392
- static let cometChatRegion: String = {
393
- guard let region = Bundle.main.object(forInfoDictionaryKey: "CometChatRegion") as? String else {
394
- fatalError("CometChatRegion not found in Info.plist")
395
- }
396
- return region
397
- }()
398
-
399
- // Your API
400
- static let apiBaseURL: String = {
401
- #if DEBUG
402
- return "https://api-staging.yourapp.com"
403
- #else
404
- return "https://api.yourapp.com"
405
- #endif
406
- }()
407
- }
408
- ```
409
-
410
- ### Info.plist Configuration
411
-
412
- ```xml
413
- <key>CometChatAppID</key>
414
- <string>$(COMETCHAT_APP_ID)</string>
415
- <key>CometChatRegion</key>
416
- <string>$(COMETCHAT_REGION)</string>
417
- ```
418
-
419
- ### xcconfig Files
420
-
421
- **Debug.xcconfig:**
422
- ```
423
- COMETCHAT_APP_ID = your_app_id
424
- COMETCHAT_REGION = us
425
- ```
426
-
427
- **Release.xcconfig:**
428
- ```
429
- COMETCHAT_APP_ID = your_app_id
430
- COMETCHAT_REGION = us
431
- ```
432
-
433
- ---
434
-
435
- ## 4. User Provisioning
436
-
437
- ### Create Users on Your Server
438
-
439
- When a user signs up in your app, create them in CometChat:
440
-
441
- ```javascript
442
- // On your server - user registration endpoint
443
- app.post('/api/register', async (req, res) => {
444
- const { email, password, name } = req.body;
445
-
446
- // 1. Create user in your database
447
- const user = await createUserInDatabase({ email, password, name });
448
-
449
- // 2. Create user in CometChat
450
- await axios.post(
451
- `https://${COMETCHAT_APP_ID}.api-${COMETCHAT_REGION}.cometchat.io/v3/users`,
452
- {
453
- uid: user.id,
454
- name: user.name,
455
- avatar: user.avatarUrl
456
- },
457
- {
458
- headers: {
459
- 'apiKey': COMETCHAT_API_KEY,
460
- 'Content-Type': 'application/json'
461
- }
462
- }
463
- );
464
-
465
- res.json({ success: true, userId: user.id });
466
- });
467
- ```
468
-
469
- ### Update User Profile
470
-
471
- When user updates their profile:
472
-
473
- ```javascript
474
- app.put('/api/profile', async (req, res) => {
475
- const { name, avatar } = req.body;
476
- const userId = req.user.id;
477
-
478
- // 1. Update in your database
479
- await updateUserInDatabase(userId, { name, avatar });
480
-
481
- // 2. Update in CometChat
482
- await axios.put(
483
- `https://${COMETCHAT_APP_ID}.api-${COMETCHAT_REGION}.cometchat.io/v3/users/${userId}`,
484
- { name, avatar },
485
- {
486
- headers: {
487
- 'apiKey': COMETCHAT_API_KEY,
488
- 'Content-Type': 'application/json'
489
- }
490
- }
491
- );
492
-
493
- res.json({ success: true });
494
- });
495
- ```
496
-
497
- ---
498
-
499
- ## 5. Security Best Practices
500
-
501
- ### Never Expose API Keys
502
-
503
- ❌ **Wrong:**
504
- ```swift
505
- // Never do this!
506
- let apiKey = "abc123xyz" // Hardcoded in app
507
- ```
508
-
509
- ✅ **Correct:**
510
- ```swift
511
- // API keys stay on your server
512
- // iOS app only receives short-lived auth tokens
513
- ```
514
-
515
- ### Validate User Identity
516
-
517
- Always verify user identity on your server before generating tokens:
518
-
519
- ```javascript
520
- app.post('/api/cometchat/token', authenticateMiddleware, async (req, res) => {
521
- // authenticateMiddleware verifies the user's JWT/session
522
- const userId = req.user.id; // Verified user ID
523
-
524
- // Generate token only for verified users
525
- // ...
526
- });
527
- ```
528
-
529
- ### Use HTTPS
530
-
531
- Always use HTTPS for API communication:
532
-
533
- ```swift
534
- // ✅ Correct
535
- let url = URL(string: "https://api.yourapp.com/api/cometchat/token")
536
-
537
- // ❌ Wrong
538
- let url = URL(string: "http://api.yourapp.com/api/cometchat/token")
539
- ```
540
-
541
- ### Token Expiration
542
-
543
- Auth tokens have a default expiration. Handle token refresh:
544
-
545
- ```swift
546
- func handleTokenExpired() {
547
- // Clear current session
548
- CometChatManager.shared.logout { _ in
549
- // Re-login to get new token
550
- CometChatManager.shared.login { result in
551
- switch result {
552
- case .success:
553
- print("Re-authenticated successfully")
554
- case .failure(let error):
555
- print("Re-authentication failed: \(error)")
556
- // Navigate to login screen
557
- }
558
- }
559
- }
560
- }
561
- ```
562
-
563
- ### App Transport Security
564
-
565
- Ensure ATS is properly configured in `Info.plist`:
566
-
567
- ```xml
568
- <key>NSAppTransportSecurity</key>
569
- <dict>
570
- <key>NSAllowsArbitraryLoads</key>
571
- <false/>
572
- </dict>
573
- ```
574
-
575
- ---
576
-
577
- ## 6. Error Handling
578
-
579
- ### Handle Authentication Errors
580
-
581
- ```swift
582
- func handleCometChatError(_ error: Error) {
583
- if let cometChatError = error as? CometChatException {
584
- switch cometChatError.errorCode {
585
- case "ERR_UID_NOT_FOUND":
586
- // User doesn't exist in CometChat
587
- // Create user on your server, then retry
588
- createUserAndRetry()
589
-
590
- case "AUTH_ERR_AUTH_TOKEN_NOT_FOUND":
591
- // Invalid or expired token
592
- refreshTokenAndRetry()
593
-
594
- case "ERR_NOT_LOGGED_IN":
595
- // User not logged in
596
- navigateToLogin()
597
-
598
- default:
599
- showError(cometChatError.errorDescription ?? "Unknown error")
600
- }
601
- }
602
- }
603
- ```
604
-
605
- ### Retry Logic
606
-
607
- ```swift
608
- func loginWithRetry(maxAttempts: Int = 3, completion: @escaping (Result<User, Error>) -> Void) {
609
- var attempts = 0
610
-
611
- func attempt() {
612
- attempts += 1
613
-
614
- CometChatManager.shared.login { result in
615
- switch result {
616
- case .success(let user):
617
- completion(.success(user))
618
- case .failure(let error):
619
- if attempts < maxAttempts {
620
- // Wait and retry
621
- DispatchQueue.main.asyncAfter(deadline: .now() + 2) {
622
- attempt()
623
- }
624
- } else {
625
- completion(.failure(error))
626
- }
627
- }
628
- }
629
- }
630
-
631
- attempt()
632
- }
633
- ```
634
-
635
- ---
636
-
637
- ## 7. Deployment Checklist
638
-
639
- ### Before Submitting to App Store
640
-
641
- - [ ] **Remove Auth Key from code** — Use server-side tokens only
642
- - [ ] **Configure production API URL** — Point to production server
643
- - [ ] **Test with production CometChat app** — Create separate prod app in dashboard
644
- - [ ] **Enable required extensions** — Polls, stickers, AI features in dashboard
645
- - [ ] **Configure push notifications** — Upload APNs certificate to dashboard
646
- - [ ] **Test on real devices** — Calls and push don't work on simulator
647
- - [ ] **Review Info.plist permissions** — Camera, microphone, notifications
648
- - [ ] **Test logout flow** — Ensure clean session termination
649
- - [ ] **Test offline behavior** — App should handle network issues gracefully
650
- - [ ] **Review error messages** — User-friendly error handling
651
-
652
- ### CometChat Dashboard Configuration
653
-
654
- - [ ] **Create production app** — Separate from development
655
- - [ ] **Configure webhooks** — If using server-side events
656
- - [ ] **Set up push notifications** — APNs certificate uploaded
657
- - [ ] **Enable required extensions** — Only what you need
658
- - [ ] **Configure AI features** — If using AI capabilities
659
- - [ ] **Review rate limits** — Understand your plan limits
660
- - [ ] **Set up monitoring** — Enable analytics and logging
661
-
662
- ### Server Configuration
663
-
664
- - [ ] **Secure API keys** — Store in environment variables
665
- - [ ] **Implement rate limiting** — Prevent abuse
666
- - [ ] **Add request validation** — Validate all inputs
667
- - [ ] **Set up logging** — Monitor token generation
668
- - [ ] **Configure CORS** — If using web clients too
669
- - [ ] **Test error scenarios** — Handle CometChat API failures
670
-
671
- ---
672
-
673
- ## 8. Monitoring and Analytics
674
-
675
- ### Track CometChat Events
676
-
677
- ```swift
678
- // Listen for connection state
679
- CometChat.addConnectionListener("connection-listener", self)
680
-
681
- extension YourClass: CometChatConnectionDelegate {
682
- func connected() {
683
- Analytics.track("cometchat_connected")
684
- }
685
-
686
- func connecting() {
687
- Analytics.track("cometchat_connecting")
688
- }
689
-
690
- func disconnected() {
691
- Analytics.track("cometchat_disconnected")
692
- }
693
- }
694
- ```
695
-
696
- ### Track Message Events
697
-
698
- ```swift
699
- class AnalyticsListener: CometChatMessageEventListener {
700
-
701
- func ccMessageSent(message: BaseMessage, status: MessageStatus) {
702
- if status == .success {
703
- Analytics.track("message_sent", properties: [
704
- "type": message.messageType.rawValue,
705
- "receiver_type": message.receiverType.rawValue
706
- ])
707
- }
708
- }
709
- }
710
-
711
- CometChatMessageEvents.addListener("analytics", AnalyticsListener())
712
- ```
713
-
714
- ---
715
-
716
- ## 9. Common Production Issues
717
-
718
- | Issue | Cause | Solution |
719
- |---|---|---|
720
- | "User not found" | User not created in CometChat | Create user via REST API before login |
721
- | "Invalid auth token" | Token expired or malformed | Generate new token from server |
722
- | "Rate limit exceeded" | Too many API calls | Implement caching and rate limiting |
723
- | Push not working | Certificate mismatch | Verify APNs cert matches environment |
724
- | Calls failing | Missing SDK or permissions | Add CometChatCallsSDK and permissions |
725
-
726
- ---
727
-
728
- ## Summary
729
-
730
- **Development → Production Migration:**
731
-
732
- 1. Remove Auth Key from iOS app
733
- 2. Create server endpoint for token generation
734
- 3. Update iOS app to fetch tokens from your server
735
- 4. Create users in CometChat when they register
736
- 5. Test thoroughly before release
737
- 6. Monitor and handle errors gracefully
738
-
40
+ // UID comes from the SERVER session, never from the client
41
+ let authToken = try await fetchCometChatToken() // your authenticated endpoint
42
+ CometChatUIKit.login(authToken: authToken) { result in /* handle success/failure */ }
43
+ ```
44
+ `init` must resolve first (`initFromSettings`), then login — calling login before init resolves fails silently (`cometchat-ios-core`).
45
+
46
+ ## Keep secrets out of the build
47
+ Development reads the Auth Key from a gitignored `Secrets.xcconfig` promoted into `Info.plist`. For production, ship **App ID + Region only** (not secrets — they identify the app) and log in with a token; leave the Auth-Key value empty in the release configuration.
48
+ ```bash
49
+ # after an archive/build, confirm the key is not in the app binary
50
+ strings "$APP_BUNDLE/YourApp" | grep -q "<your-auth-key>" && echo "LEAK" || echo "clean"
51
+ ```
52
+ Also verify `Secrets.xcconfig` is in `.gitignore` (only a committed placeholder), and that it is not bundled as a resource.
53
+
54
+ ## Also before launch
55
+ - **Users are created server-side** as part of signup — not from the app with the Auth Key.
56
+ - **Log out properly**: `CometChatUIKit.logout()`, then clear derived state and unregister VoIP/APNs push tokens (`cometchat-ios-push`).
57
+ - **Pin exact versions** — the kit is a prebuilt binary compiled against one Chat SDK version; a drifting `CometChatSDK` breaks it (`cometchat-ios-core` Install).
58
+ - **App Transport Security**: keep HTTPS; do not add broad `NSAllowsArbitraryLoads` exceptions.
59
+ - **Calls need permissions**: `NSCameraUsageDescription` + `NSMicrophoneUsageDescription` with real strings, or App Review rejects; VoIP push needs the entitlement.
60
+ - **Region must match** the dashboard app.
61
+ - **Enable dashboard extensions/AI on the PRODUCTION app**, not just dev.
62
+
63
+ ## Pre-launch checklist
64
+ - [ ] Auth Key not in the app binary (`strings`-verified)
65
+ - [ ] `login(authToken:)` in production; UID from the server session
66
+ - [ ] REST API Key server-side only
67
+ - [ ] `Secrets.xcconfig` gitignored; only a placeholder committed
68
+ - [ ] Exact kit/SDK/Calls versions pinned
69
+ - [ ] Camera/mic usage strings + VoIP entitlement present (if calling)
70
+ - [ ] Logout clears session, state and push tokens
71
+ - [ ] Dashboard extensions/AI enabled for the production app
72
+ - [ ] Tested against the production app's credentials
73
+
74
+ ## Common pitfalls
75
+ 1. **Auth Key recoverable from the `.ipa`** — the critical one.
76
+ 2. **Token endpoint trusting a client-supplied UID** — impersonation.
77
+ 3. **Login before init resolves** — silent no-render (order invariant).
78
+ 4. **Missing usage-description strings** — App Review rejection for calling apps.
79
+ 5. **Dashboard configured on the dev app only** — features silently missing in production.
80
+
81
+ ## Verify it works
82
+ Archived build's binary contains no Auth Key (`strings`) · login works via token · a tampered UID is rejected by the server · logout fully clears · calls request permission and connect · features enabled on the production app.