@cometchat/skills 4.4.2 → 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 (490) 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/LICENSE +21 -0
  5. package/README.md +41 -163
  6. package/RULES.md +114 -0
  7. package/bin/cometchat-skills.mjs +1180 -0
  8. package/bin/legacy-skills.json +95 -0
  9. package/catalogs/android-v6.json +1646 -0
  10. package/catalogs/flutter-v6.json +651 -0
  11. package/catalogs/ios-v5.json +1383 -0
  12. package/catalogs/rn-calls-v5.json +134 -0
  13. package/catalogs/rn-calls-v5.symbols.txt +58 -0
  14. package/catalogs/rn-sdk-v4.json +672 -0
  15. package/catalogs/rn-v5.json +449 -0
  16. package/catalogs/rn-v5.symbols.txt +216 -0
  17. package/catalogs/sdk-android-v5.json +514 -0
  18. package/contracts.android-calls-v5.json +122 -0
  19. package/contracts.android-v6.json +135 -0
  20. package/contracts.angular-v5.json +694 -0
  21. package/contracts.flutter-calls-v5.json +77 -0
  22. package/contracts.flutter-v6.json +126 -0
  23. package/contracts.ios-calls-v5.json +67 -0
  24. package/contracts.ios-v5.json +436 -0
  25. package/contracts.json +82 -0
  26. package/contracts.rn-calls-v5.json +77 -0
  27. package/contracts.rn-v5.json +727 -0
  28. package/contracts.sdk-android-v5.json +15 -0
  29. package/contracts.web-calls-v5.json +45 -0
  30. package/features.android-calls-v5.json +246 -0
  31. package/features.android-v6.json +65 -0
  32. package/features.angular-v5.json +521 -0
  33. package/features.flutter-calls-v5.json +286 -0
  34. package/features.flutter-v6.json +484 -0
  35. package/features.ios-calls-v5.json +236 -0
  36. package/features.ios-v5.json +573 -0
  37. package/features.json +61 -0
  38. package/features.rn-calls-v5.json +187 -0
  39. package/features.rn-v5.json +614 -0
  40. package/features.sdk-android-v5.json +40 -0
  41. package/features.sdk-jsv4.json +24 -0
  42. package/features.web-calls-v5.json +108 -0
  43. package/package.json +151 -74
  44. package/peers.yaml +312 -0
  45. package/registry/README.md +31 -0
  46. package/registry/android-calls-v5.json +54 -0
  47. package/registry/android-v6.json +137 -0
  48. package/registry/angular-v5.json +114 -0
  49. package/registry/flutter-calls-v5.json +54 -0
  50. package/registry/flutter-v6.json +119 -0
  51. package/registry/ios-calls-v5.json +59 -0
  52. package/registry/ios-v5.json +97 -0
  53. package/registry/rn-calls-v5.json +59 -0
  54. package/registry/rn-v5.json +129 -0
  55. package/registry/sdk-android-v5.json +53 -0
  56. package/registry/sdk-jsv4.json +53 -0
  57. package/registry/web-calls-v5.json +54 -0
  58. package/registry/web-v7.json +99 -0
  59. package/skills/cometchat/SKILL.md +42 -2096
  60. package/skills/cometchat-android-v5-calls-sdk/SKILL.md +206 -0
  61. package/skills/cometchat-android-v5-calls-sdk/references/build-truth.md +63 -0
  62. package/skills/cometchat-android-v5-calls-sdk/references/docs-map.md +119 -0
  63. package/skills/cometchat-android-v5-calls-sdk/references/method-map.md +53 -0
  64. package/skills/cometchat-android-v5-calls-sdk/references/pitfalls.md +72 -0
  65. package/skills/cometchat-android-v5-calls-sdk/references/ringing.md +92 -0
  66. package/skills/cometchat-android-v5-calls-sdk/references/user-switch.md +90 -0
  67. package/skills/cometchat-android-v5-sdk/SKILL.md +127 -0
  68. package/skills/cometchat-android-v5-sdk/references/app-surface.md +88 -0
  69. package/skills/cometchat-android-v5-sdk/references/docs-map.md +91 -0
  70. package/skills/cometchat-android-v6-builder-settings/SKILL.md +51 -137
  71. package/skills/cometchat-android-v6-calls/SKILL.md +128 -413
  72. package/skills/cometchat-android-v6-compose-components/SKILL.md +84 -194
  73. package/skills/cometchat-android-v6-compose-customization/SKILL.md +66 -411
  74. package/skills/cometchat-android-v6-compose-placement/SKILL.md +154 -237
  75. package/skills/cometchat-android-v6-core/SKILL.md +236 -672
  76. package/skills/cometchat-android-v6-core/references/anti-patterns.md +31 -0
  77. package/skills/cometchat-android-v6-core/references/component-props.md +168 -0
  78. package/skills/cometchat-android-v6-core/references/docs-map.md +153 -0
  79. package/skills/cometchat-android-v6-core/references/layout.md +112 -0
  80. package/skills/cometchat-android-v6-core/references/lifecycle.md +75 -0
  81. package/skills/cometchat-android-v6-core/references/setup-credentials.md +105 -0
  82. package/skills/cometchat-android-v6-core/references/troubleshooting.md +36 -0
  83. package/skills/cometchat-android-v6-events/SKILL.md +46 -184
  84. package/skills/cometchat-android-v6-extensions/SKILL.md +39 -179
  85. package/skills/cometchat-android-v6-features/SKILL.md +74 -143
  86. package/skills/cometchat-android-v6-kotlin-components/SKILL.md +75 -193
  87. package/skills/cometchat-android-v6-kotlin-customization/SKILL.md +67 -419
  88. package/skills/cometchat-android-v6-kotlin-placement/SKILL.md +77 -223
  89. package/skills/cometchat-android-v6-migration/SKILL.md +67 -378
  90. package/skills/cometchat-android-v6-production/SKILL.md +40 -179
  91. package/skills/cometchat-android-v6-push/SKILL.md +39 -289
  92. package/skills/cometchat-android-v6-testing/SKILL.md +50 -265
  93. package/skills/cometchat-android-v6-troubleshooting/SKILL.md +70 -254
  94. package/skills/cometchat-angular-v5-calls/SKILL.md +193 -0
  95. package/skills/cometchat-angular-v5-components/SKILL.md +131 -0
  96. package/skills/cometchat-angular-v5-components/references/catalog.md +111 -0
  97. package/skills/cometchat-angular-v5-components/references/host-composed.md +46 -0
  98. package/skills/cometchat-angular-v5-core/SKILL.md +300 -0
  99. package/skills/cometchat-angular-v5-core/references/anti-patterns.md +49 -0
  100. package/skills/cometchat-angular-v5-core/references/component-props.md +55 -0
  101. package/skills/cometchat-angular-v5-core/references/dependencies.md +66 -0
  102. package/skills/cometchat-angular-v5-core/references/docs-map.md +132 -0
  103. package/skills/cometchat-angular-v5-core/references/layout.md +64 -0
  104. package/skills/cometchat-angular-v5-core/references/lifecycle.md +202 -0
  105. package/skills/cometchat-angular-v5-core/references/setup-credentials.md +137 -0
  106. package/skills/cometchat-angular-v5-core/references/theming.md +70 -0
  107. package/skills/cometchat-angular-v5-core/references/troubleshooting.md +27 -0
  108. package/skills/cometchat-angular-v5-customization/SKILL.md +94 -0
  109. package/skills/cometchat-angular-v5-features/SKILL.md +107 -0
  110. package/skills/cometchat-angular-v5-features/references/custom-messages.md +133 -0
  111. package/skills/cometchat-angular-v5-features/references/formatters.md +28 -0
  112. package/skills/cometchat-angular-v5-features/references/host-composed-extensions.md +85 -0
  113. package/skills/cometchat-angular-v5-migration/SKILL.md +40 -0
  114. package/skills/cometchat-angular-v5-migration/references/migration-guide.md +165 -0
  115. package/skills/cometchat-angular-v5-patterns/SKILL.md +107 -0
  116. package/skills/cometchat-angular-v5-placement/SKILL.md +133 -0
  117. package/skills/cometchat-angular-v5-placement/references/combined-app.md +174 -0
  118. package/skills/cometchat-angular-v5-placement/references/core-surface.md +199 -0
  119. package/skills/cometchat-angular-v5-production/SKILL.md +101 -0
  120. package/skills/cometchat-angular-v5-push/SKILL.md +61 -0
  121. package/skills/cometchat-angular-v5-testing/SKILL.md +112 -0
  122. package/skills/cometchat-angular-v5-troubleshooting/SKILL.md +96 -0
  123. package/skills/cometchat-flutter-v5-sdk/SKILL.md +188 -0
  124. package/skills/cometchat-flutter-v5-sdk/references/doc-corrections.md +55 -0
  125. package/skills/cometchat-flutter-v5-sdk/references/docs-map.md +211 -0
  126. package/skills/cometchat-flutter-v5-sdk/references/platform-notes.md +48 -0
  127. package/skills/cometchat-flutter-v5-sdk/references/transcription.md +87 -0
  128. package/skills/cometchat-flutter-v6-calls/SKILL.md +75 -389
  129. package/skills/cometchat-flutter-v6-components/SKILL.md +88 -361
  130. package/skills/cometchat-flutter-v6-core/SKILL.md +154 -593
  131. package/skills/cometchat-flutter-v6-core/references/anti-patterns.md +55 -0
  132. package/skills/cometchat-flutter-v6-core/references/docs-map.md +143 -0
  133. package/skills/cometchat-flutter-v6-core/references/layout.md +45 -0
  134. package/skills/cometchat-flutter-v6-core/references/lifecycle.md +87 -0
  135. package/skills/cometchat-flutter-v6-core/references/setup-credentials.md +84 -0
  136. package/skills/cometchat-flutter-v6-core/references/troubleshooting.md +26 -0
  137. package/skills/cometchat-flutter-v6-customization/SKILL.md +70 -712
  138. package/skills/cometchat-flutter-v6-events/SKILL.md +79 -174
  139. package/skills/cometchat-flutter-v6-features/SKILL.md +55 -394
  140. package/skills/cometchat-flutter-v6-migration/SKILL.md +68 -367
  141. package/skills/cometchat-flutter-v6-migration/references/migration-guide.md +131 -0
  142. package/skills/cometchat-flutter-v6-patterns/SKILL.md +61 -0
  143. package/skills/cometchat-flutter-v6-placement/SKILL.md +94 -381
  144. package/skills/cometchat-flutter-v6-production/SKILL.md +58 -615
  145. package/skills/cometchat-flutter-v6-push/SKILL.md +46 -455
  146. package/skills/cometchat-flutter-v6-testing/SKILL.md +68 -299
  147. package/skills/cometchat-flutter-v6-troubleshooting/SKILL.md +54 -878
  148. package/skills/cometchat-ios-calls/SKILL.md +112 -563
  149. package/skills/cometchat-ios-components/SKILL.md +44 -834
  150. package/skills/cometchat-ios-core/SKILL.md +181 -1068
  151. package/skills/cometchat-ios-core/references/anti-patterns.md +80 -0
  152. package/skills/cometchat-ios-core/references/docs-map.md +123 -0
  153. package/skills/cometchat-ios-core/references/install.md +23 -0
  154. package/skills/cometchat-ios-core/references/layout.md +186 -0
  155. package/skills/cometchat-ios-core/references/setup-credentials.md +197 -0
  156. package/skills/cometchat-ios-core/references/swiftui.md +91 -0
  157. package/skills/cometchat-ios-core/references/troubleshooting.md +100 -0
  158. package/skills/cometchat-ios-customization/SKILL.md +33 -968
  159. package/skills/cometchat-ios-features/SKILL.md +29 -738
  160. package/skills/cometchat-ios-migration/SKILL.md +39 -0
  161. package/skills/cometchat-ios-placement/SKILL.md +51 -729
  162. package/skills/cometchat-ios-push/SKILL.md +24 -602
  163. package/skills/cometchat-ios-v5-sdk/SKILL.md +161 -0
  164. package/skills/cometchat-ios-v5-sdk/references/docs-map.md +326 -0
  165. package/skills/cometchat-js-v5-sdk/SKILL.md +95 -0
  166. package/skills/cometchat-js-v5-sdk/references/docs-map.md +114 -0
  167. package/skills/cometchat-onboarding/SKILL.md +89 -0
  168. package/skills/cometchat-onboarding/references/archetypes.md +51 -0
  169. package/skills/cometchat-onboarding/references/calling-first.md +77 -0
  170. package/skills/cometchat-onboarding/references/not-in-this-pack.md +8 -0
  171. package/skills/cometchat-onboarding/references/plan-artifact.md +133 -0
  172. package/skills/cometchat-onboarding/references/platforms.md +90 -0
  173. package/skills/cometchat-react-native-bare-patterns/SKILL.md +120 -0
  174. package/skills/cometchat-react-native-calls/SKILL.md +200 -0
  175. package/skills/cometchat-react-native-components/SKILL.md +142 -0
  176. package/skills/cometchat-react-native-core/SKILL.md +313 -0
  177. package/skills/cometchat-react-native-core/references/anti-patterns.md +79 -0
  178. package/skills/cometchat-react-native-core/references/component-props.md +105 -0
  179. package/skills/cometchat-react-native-core/references/dependencies.md +62 -0
  180. package/skills/cometchat-react-native-core/references/docs-map.md +126 -0
  181. package/skills/cometchat-react-native-core/references/layout.md +61 -0
  182. package/skills/cometchat-react-native-core/references/lifecycle.md +64 -0
  183. package/skills/cometchat-react-native-core/references/setup-credentials.md +39 -0
  184. package/skills/cometchat-react-native-customization/SKILL.md +198 -0
  185. package/skills/cometchat-react-native-expo-patterns/SKILL.md +116 -0
  186. package/skills/cometchat-react-native-features/SKILL.md +122 -0
  187. package/skills/cometchat-react-native-migration/SKILL.md +103 -0
  188. package/skills/cometchat-react-native-placement/SKILL.md +158 -0
  189. package/skills/cometchat-react-native-production/SKILL.md +78 -0
  190. package/skills/cometchat-react-native-push/SKILL.md +88 -0
  191. package/skills/cometchat-react-native-sdk/SKILL.md +126 -0
  192. package/skills/cometchat-react-native-sdk/references/method-map.md +239 -0
  193. package/skills/cometchat-react-native-sdk/references/page-map.md +96 -0
  194. package/skills/cometchat-react-native-testing/SKILL.md +94 -0
  195. package/skills/cometchat-react-native-troubleshooting/SKILL.md +116 -0
  196. package/skills/cometchat-react-native-v5-sdk/SKILL.md +150 -0
  197. package/skills/cometchat-react-native-v5-sdk/references/docs-map.md +127 -0
  198. package/skills/cometchat-react-native-v5-sdk/references/ringing-voip.md +369 -0
  199. package/skills/cometchat-react-v7-calls/SKILL.md +75 -0
  200. package/skills/cometchat-react-v7-components/SKILL.md +72 -0
  201. package/skills/cometchat-react-v7-core/SKILL.md +101 -0
  202. package/skills/cometchat-react-v7-core/references/anti-patterns.md +19 -0
  203. package/skills/cometchat-react-v7-core/references/component-props.md +82 -0
  204. package/skills/cometchat-react-v7-core/references/dependencies.md +23 -0
  205. package/skills/cometchat-react-v7-core/references/docs-map.md +117 -0
  206. package/skills/cometchat-react-v7-core/references/i18n-rtl-a11y.md +22 -0
  207. package/skills/cometchat-react-v7-core/references/layout.md +158 -0
  208. package/skills/cometchat-react-v7-core/references/lifecycle.md +74 -0
  209. package/skills/cometchat-react-v7-core/references/setup-credentials.md +58 -0
  210. package/skills/cometchat-react-v7-core/references/ssr.md +11 -0
  211. package/skills/cometchat-react-v7-core/references/theming.md +52 -0
  212. package/skills/cometchat-react-v7-core/references/troubleshooting.md +28 -0
  213. package/skills/cometchat-react-v7-customization/SKILL.md +84 -0
  214. package/skills/cometchat-react-v7-features/SKILL.md +92 -0
  215. package/skills/cometchat-react-v7-migration/SKILL.md +39 -0
  216. package/skills/cometchat-react-v7-migration/references/migration-guide.md +119 -0
  217. package/skills/cometchat-react-v7-patterns/SKILL.md +43 -0
  218. package/skills/cometchat-react-v7-placement/SKILL.md +106 -0
  219. package/skills/cometchat-react-v7-placement/references/recipes.md +354 -0
  220. package/skills/cometchat-react-v7-push/SKILL.md +53 -0
  221. package/test-suite/README.md +70 -0
  222. package/test-suite/catalogs/android-calls-v5.json +830 -0
  223. package/test-suite/catalogs/android-calls-v5.symbols.txt +499 -0
  224. package/test-suite/catalogs/android-v6.json +1646 -0
  225. package/test-suite/catalogs/android-v6.symbols.txt +298 -0
  226. package/test-suite/catalogs/angular-v5.json +7587 -0
  227. package/test-suite/catalogs/flutter-calls-v5.json +196 -0
  228. package/test-suite/catalogs/flutter-calls-v5.symbols.txt +59 -0
  229. package/test-suite/catalogs/flutter-v6.json +651 -0
  230. package/test-suite/catalogs/ios-calls-v5.json +158 -0
  231. package/test-suite/catalogs/ios-calls-v5.symbols.txt +70 -0
  232. package/test-suite/catalogs/ios-v5.json +1383 -0
  233. package/test-suite/catalogs/ios-v5.symbols.txt +699 -0
  234. package/test-suite/catalogs/rn-calls-v5.json +134 -0
  235. package/test-suite/catalogs/rn-sdk-v4.json +672 -0
  236. package/test-suite/catalogs/rn-v5.json +449 -0
  237. package/test-suite/catalogs/sdk-android-v5.json +514 -0
  238. package/test-suite/catalogs/sdk-android-v5.symbols.txt +254 -0
  239. package/test-suite/catalogs/sdk-jsv4.json +800 -0
  240. package/test-suite/catalogs/web-calls-v5.json +195 -0
  241. package/test-suite/catalogs/web-v7.json +1243 -0
  242. package/test-suite/scripts/build-registry.mjs +113 -0
  243. package/test-suite/scripts/catalog-refresh-dart.mjs +151 -0
  244. package/test-suite/scripts/catalog-refresh.mjs +100 -0
  245. package/test-suite/scripts/lint-skills.mjs +909 -0
  246. package/test-suite/scripts/measure-tokens.mjs +169 -0
  247. package/test-suite/scripts/typecheck-fences-dart.mjs +437 -0
  248. package/test-suite/scripts/typecheck-fences-kotlin.mjs +269 -0
  249. package/test-suite/scripts/typecheck-fences.mjs +206 -0
  250. package/test-suite/scripts/verify-catalog.mjs +242 -0
  251. package/test-suite/scripts/verify-contract-fences.mjs +94 -0
  252. package/test-suite/scripts/verify-detection.mjs +178 -0
  253. package/test-suite/scripts/verify-docs-base.mjs +91 -0
  254. package/test-suite/scripts/verify-family-agnostic.mjs +130 -0
  255. package/test-suite/scripts/verify-golden-path.mjs +138 -0
  256. package/test-suite/scripts/verify-oracle-components.mjs +133 -0
  257. package/test-suite/scripts/verify-template-bindings.mjs +148 -0
  258. package/test-suite/typecheck/angular-v5/package.json +21 -0
  259. package/test-suite/typecheck/angular-v5/tsconfig.json +21 -0
  260. package/test-suite/typecheck/flutter-v6/analysis_options.yaml +25 -0
  261. package/test-suite/typecheck/flutter-v6/pubspec.yaml +21 -0
  262. package/test-suite/typecheck/web-v7/package.json +18 -0
  263. package/test-suite/typecheck/web-v7/tsconfig.json +19 -0
  264. package/bin/install.js +0 -1003
  265. package/skills/.claude-plugin/marketplace.json +0 -86
  266. package/skills/cometchat/references/asking-questions.md +0 -48
  267. package/skills/cometchat-a11y/SKILL.md +0 -477
  268. package/skills/cometchat-android-v5/SKILL.md +0 -121
  269. package/skills/cometchat-android-v5-calls/SKILL.md +0 -429
  270. package/skills/cometchat-android-v5-calls/references/README.md +0 -53
  271. package/skills/cometchat-android-v5-calls/references/add-calls-to-existing-chat.md +0 -197
  272. package/skills/cometchat-android-v5-calls/references/audio-controls.md +0 -91
  273. package/skills/cometchat-android-v5-calls/references/background-handling.md +0 -168
  274. package/skills/cometchat-android-v5-calls/references/call-layouts.md +0 -131
  275. package/skills/cometchat-android-v5-calls/references/call-logs.md +0 -113
  276. package/skills/cometchat-android-v5-calls/references/call-session.md +0 -274
  277. package/skills/cometchat-android-v5-calls/references/custom-ui.md +0 -150
  278. package/skills/cometchat-android-v5-calls/references/event-listeners.md +0 -123
  279. package/skills/cometchat-android-v5-calls/references/group-calls.md +0 -205
  280. package/skills/cometchat-android-v5-calls/references/idle-timeout.md +0 -117
  281. package/skills/cometchat-android-v5-calls/references/in-call-chat.md +0 -134
  282. package/skills/cometchat-android-v5-calls/references/join-session.md +0 -120
  283. package/skills/cometchat-android-v5-calls/references/migration-v4-to-v5.md +0 -222
  284. package/skills/cometchat-android-v5-calls/references/participant-management.md +0 -110
  285. package/skills/cometchat-android-v5-calls/references/picture-in-picture.md +0 -106
  286. package/skills/cometchat-android-v5-calls/references/raise-hand.md +0 -248
  287. package/skills/cometchat-android-v5-calls/references/recording.md +0 -101
  288. package/skills/cometchat-android-v5-calls/references/ringing-integration.md +0 -152
  289. package/skills/cometchat-android-v5-calls/references/screen-sharing.md +0 -78
  290. package/skills/cometchat-android-v5-calls/references/server-fcm-voip.md +0 -215
  291. package/skills/cometchat-android-v5-calls/references/session-settings.md +0 -121
  292. package/skills/cometchat-android-v5-calls/references/setup.md +0 -137
  293. package/skills/cometchat-android-v5-calls/references/share-invite.md +0 -156
  294. package/skills/cometchat-android-v5-calls/references/video-controls.md +0 -87
  295. package/skills/cometchat-android-v5-calls/references/voip-calling.md +0 -526
  296. package/skills/cometchat-android-v5-components/SKILL.md +0 -431
  297. package/skills/cometchat-android-v5-core/SKILL.md +0 -486
  298. package/skills/cometchat-android-v5-customization/SKILL.md +0 -469
  299. package/skills/cometchat-android-v5-extensions/SKILL.md +0 -127
  300. package/skills/cometchat-android-v5-features/SKILL.md +0 -131
  301. package/skills/cometchat-android-v5-placement/SKILL.md +0 -277
  302. package/skills/cometchat-android-v5-production/SKILL.md +0 -95
  303. package/skills/cometchat-android-v5-push/SKILL.md +0 -619
  304. package/skills/cometchat-android-v5-testing/SKILL.md +0 -188
  305. package/skills/cometchat-android-v5-theming/SKILL.md +0 -167
  306. package/skills/cometchat-android-v5-troubleshooting/SKILL.md +0 -74
  307. package/skills/cometchat-android-v6/SKILL.md +0 -108
  308. package/skills/cometchat-android-v6-calls/references/add-calls-to-existing-chat.md +0 -97
  309. package/skills/cometchat-android-v6-calls/references/advanced-features.md +0 -87
  310. package/skills/cometchat-android-v6-calls/references/call-layouts.md +0 -100
  311. package/skills/cometchat-android-v6-calls/references/call-session.md +0 -163
  312. package/skills/cometchat-android-v6-calls/references/device-management.md +0 -172
  313. package/skills/cometchat-android-v6-calls/references/group-calls.md +0 -191
  314. package/skills/cometchat-android-v6-calls/references/idle-timeout.md +0 -110
  315. package/skills/cometchat-android-v6-calls/references/in-call-chat.md +0 -141
  316. package/skills/cometchat-android-v6-calls/references/raise-hand.md +0 -188
  317. package/skills/cometchat-android-v6-calls/references/ringing-integration.md +0 -176
  318. package/skills/cometchat-android-v6-calls/references/server-fcm-voip.md +0 -127
  319. package/skills/cometchat-android-v6-calls/references/share-invite.md +0 -105
  320. package/skills/cometchat-android-v6-compose-theming/SKILL.md +0 -250
  321. package/skills/cometchat-android-v6-kotlin-theming/SKILL.md +0 -233
  322. package/skills/cometchat-angular-calls/SKILL.md +0 -380
  323. package/skills/cometchat-angular-calls/references/add-calls-to-existing-chat.md +0 -96
  324. package/skills/cometchat-angular-calls/references/call-layouts.md +0 -123
  325. package/skills/cometchat-angular-calls/references/call-session.md +0 -167
  326. package/skills/cometchat-angular-calls/references/custom-ui.md +0 -239
  327. package/skills/cometchat-angular-calls/references/device-management.md +0 -154
  328. package/skills/cometchat-angular-calls/references/group-calls.md +0 -433
  329. package/skills/cometchat-angular-calls/references/idle-timeout.md +0 -161
  330. package/skills/cometchat-angular-calls/references/in-call-chat.md +0 -148
  331. package/skills/cometchat-angular-calls/references/lazy-loading-pitfalls.md +0 -205
  332. package/skills/cometchat-angular-calls/references/migration-v4-to-v5.md +0 -53
  333. package/skills/cometchat-angular-calls/references/ngzone-and-async-callbacks.md +0 -184
  334. package/skills/cometchat-angular-calls/references/picture-in-picture.md +0 -285
  335. package/skills/cometchat-angular-calls/references/raise-hand.md +0 -172
  336. package/skills/cometchat-angular-calls/references/recording-screen-share.md +0 -260
  337. package/skills/cometchat-angular-calls/references/ringing-integration.md +0 -133
  338. package/skills/cometchat-angular-calls/references/server-web-push-vapid.md +0 -100
  339. package/skills/cometchat-angular-calls/references/share-invite.md +0 -122
  340. package/skills/cometchat-angular-calls/references/virtual-background.md +0 -29
  341. package/skills/cometchat-angular-components/SKILL.md +0 -235
  342. package/skills/cometchat-angular-core/SKILL.md +0 -386
  343. package/skills/cometchat-angular-customization/SKILL.md +0 -616
  344. package/skills/cometchat-angular-features/SKILL.md +0 -329
  345. package/skills/cometchat-angular-patterns/SKILL.md +0 -256
  346. package/skills/cometchat-angular-placement/SKILL.md +0 -314
  347. package/skills/cometchat-angular-production/SKILL.md +0 -564
  348. package/skills/cometchat-angular-push/SKILL.md +0 -389
  349. package/skills/cometchat-angular-testing/SKILL.md +0 -605
  350. package/skills/cometchat-angular-theming/SKILL.md +0 -290
  351. package/skills/cometchat-angular-troubleshooting/SKILL.md +0 -364
  352. package/skills/cometchat-astro-patterns/SKILL.md +0 -708
  353. package/skills/cometchat-calls/SKILL.md +0 -364
  354. package/skills/cometchat-calls/references/use-case-broadcast.md +0 -199
  355. package/skills/cometchat-calls/references/use-case-marketplace.md +0 -157
  356. package/skills/cometchat-calls/references/use-case-support.md +0 -189
  357. package/skills/cometchat-calls/references/use-case-team.md +0 -180
  358. package/skills/cometchat-calls/references/use-case-telehealth.md +0 -153
  359. package/skills/cometchat-components/SKILL.md +0 -1142
  360. package/skills/cometchat-core/SKILL.md +0 -1048
  361. package/skills/cometchat-customization/SKILL.md +0 -580
  362. package/skills/cometchat-customization/references/component-catalog.md +0 -236
  363. package/skills/cometchat-features/SKILL.md +0 -861
  364. package/skills/cometchat-flutter-v5/SKILL.md +0 -173
  365. package/skills/cometchat-flutter-v5-calls/SKILL.md +0 -455
  366. package/skills/cometchat-flutter-v5-calls/references/add-calls-to-existing-chat.md +0 -193
  367. package/skills/cometchat-flutter-v5-calls/references/call-layouts.md +0 -103
  368. package/skills/cometchat-flutter-v5-calls/references/call-session.md +0 -285
  369. package/skills/cometchat-flutter-v5-calls/references/device-management.md +0 -124
  370. package/skills/cometchat-flutter-v5-calls/references/group-calls.md +0 -181
  371. package/skills/cometchat-flutter-v5-calls/references/idle-timeout.md +0 -99
  372. package/skills/cometchat-flutter-v5-calls/references/in-call-chat.md +0 -135
  373. package/skills/cometchat-flutter-v5-calls/references/migration-v4-to-v5.md +0 -210
  374. package/skills/cometchat-flutter-v5-calls/references/raise-hand.md +0 -255
  375. package/skills/cometchat-flutter-v5-calls/references/ringing-integration.md +0 -196
  376. package/skills/cometchat-flutter-v5-calls/references/server-push-bridge.md +0 -101
  377. package/skills/cometchat-flutter-v5-calls/references/share-invite.md +0 -148
  378. package/skills/cometchat-flutter-v5-conversations/SKILL.md +0 -118
  379. package/skills/cometchat-flutter-v5-core/SKILL.md +0 -239
  380. package/skills/cometchat-flutter-v5-customization/SKILL.md +0 -358
  381. package/skills/cometchat-flutter-v5-events/SKILL.md +0 -156
  382. package/skills/cometchat-flutter-v5-messages/SKILL.md +0 -259
  383. package/skills/cometchat-flutter-v5-production/SKILL.md +0 -216
  384. package/skills/cometchat-flutter-v5-push/SKILL.md +0 -285
  385. package/skills/cometchat-flutter-v5-testing/SKILL.md +0 -401
  386. package/skills/cometchat-flutter-v5-theming/SKILL.md +0 -161
  387. package/skills/cometchat-flutter-v5-troubleshooting/SKILL.md +0 -130
  388. package/skills/cometchat-flutter-v5-users-groups/SKILL.md +0 -152
  389. package/skills/cometchat-flutter-v6/SKILL.md +0 -446
  390. package/skills/cometchat-flutter-v6-calls/references/add-calls-to-existing-chat.md +0 -136
  391. package/skills/cometchat-flutter-v6-calls/references/advanced-features.md +0 -89
  392. package/skills/cometchat-flutter-v6-calls/references/call-layouts.md +0 -105
  393. package/skills/cometchat-flutter-v6-calls/references/call-session.md +0 -229
  394. package/skills/cometchat-flutter-v6-calls/references/device-management.md +0 -105
  395. package/skills/cometchat-flutter-v6-calls/references/group-calls.md +0 -190
  396. package/skills/cometchat-flutter-v6-calls/references/idle-timeout.md +0 -88
  397. package/skills/cometchat-flutter-v6-calls/references/in-call-chat.md +0 -125
  398. package/skills/cometchat-flutter-v6-calls/references/raise-hand.md +0 -275
  399. package/skills/cometchat-flutter-v6-calls/references/ringing-integration.md +0 -171
  400. package/skills/cometchat-flutter-v6-calls/references/server-push-bridge.md +0 -93
  401. package/skills/cometchat-flutter-v6-calls/references/share-invite.md +0 -102
  402. package/skills/cometchat-flutter-v6-conversations/SKILL.md +0 -238
  403. package/skills/cometchat-flutter-v6-messages/SKILL.md +0 -384
  404. package/skills/cometchat-flutter-v6-theming/SKILL.md +0 -293
  405. package/skills/cometchat-flutter-v6-users-groups/SKILL.md +0 -224
  406. package/skills/cometchat-i18n/SKILL.md +0 -419
  407. package/skills/cometchat-ios/SKILL.md +0 -325
  408. package/skills/cometchat-ios-calls/references/add-calls-to-existing-chat.md +0 -181
  409. package/skills/cometchat-ios-calls/references/audio-modes-and-controls.md +0 -45
  410. package/skills/cometchat-ios-calls/references/avaudiosession-routing.md +0 -188
  411. package/skills/cometchat-ios-calls/references/call-layouts.md +0 -76
  412. package/skills/cometchat-ios-calls/references/call-session.md +0 -218
  413. package/skills/cometchat-ios-calls/references/callkit-and-pushkit.md +0 -357
  414. package/skills/cometchat-ios-calls/references/custom-ui.md +0 -322
  415. package/skills/cometchat-ios-calls/references/device-management.md +0 -171
  416. package/skills/cometchat-ios-calls/references/group-calls.md +0 -359
  417. package/skills/cometchat-ios-calls/references/idle-timeout.md +0 -184
  418. package/skills/cometchat-ios-calls/references/in-call-chat.md +0 -179
  419. package/skills/cometchat-ios-calls/references/migration-v4-to-v5.md +0 -196
  420. package/skills/cometchat-ios-calls/references/picture-in-picture.md +0 -246
  421. package/skills/cometchat-ios-calls/references/raise-hand.md +0 -26
  422. package/skills/cometchat-ios-calls/references/recording-screen-share.md +0 -252
  423. package/skills/cometchat-ios-calls/references/ringing-integration.md +0 -143
  424. package/skills/cometchat-ios-calls/references/server-apns-pushkit.md +0 -267
  425. package/skills/cometchat-ios-calls/references/share-invite.md +0 -148
  426. package/skills/cometchat-ios-calls/references/swiftui-uikit-hosting.md +0 -246
  427. package/skills/cometchat-ios-calls/references/voip-cert-setup.md +0 -166
  428. package/skills/cometchat-ios-production/SKILL.md +0 -738
  429. package/skills/cometchat-ios-testing/SKILL.md +0 -376
  430. package/skills/cometchat-ios-theming/SKILL.md +0 -667
  431. package/skills/cometchat-ios-troubleshooting/SKILL.md +0 -1003
  432. package/skills/cometchat-native-bare-patterns/SKILL.md +0 -550
  433. package/skills/cometchat-native-calls/SKILL.md +0 -671
  434. package/skills/cometchat-native-calls/references/add-calls-to-existing-chat.md +0 -203
  435. package/skills/cometchat-native-calls/references/call-layouts.md +0 -125
  436. package/skills/cometchat-native-calls/references/call-session.md +0 -182
  437. package/skills/cometchat-native-calls/references/custom-ui.md +0 -254
  438. package/skills/cometchat-native-calls/references/device-management.md +0 -158
  439. package/skills/cometchat-native-calls/references/expo-vs-bare.md +0 -179
  440. package/skills/cometchat-native-calls/references/group-calls.md +0 -296
  441. package/skills/cometchat-native-calls/references/idle-timeout.md +0 -128
  442. package/skills/cometchat-native-calls/references/in-call-chat.md +0 -145
  443. package/skills/cometchat-native-calls/references/migration-v4-to-v5.md +0 -72
  444. package/skills/cometchat-native-calls/references/picture-in-picture.md +0 -276
  445. package/skills/cometchat-native-calls/references/raise-hand.md +0 -205
  446. package/skills/cometchat-native-calls/references/recording-screen-share.md +0 -169
  447. package/skills/cometchat-native-calls/references/ringing-integration.md +0 -118
  448. package/skills/cometchat-native-calls/references/server-push-bridge.md +0 -135
  449. package/skills/cometchat-native-calls/references/server-push-payloads.md +0 -193
  450. package/skills/cometchat-native-calls/references/share-invite.md +0 -146
  451. package/skills/cometchat-native-calls/references/voip-push-end-to-end.md +0 -319
  452. package/skills/cometchat-native-components/SKILL.md +0 -628
  453. package/skills/cometchat-native-core/SKILL.md +0 -679
  454. package/skills/cometchat-native-customization/SKILL.md +0 -716
  455. package/skills/cometchat-native-expo-patterns/SKILL.md +0 -552
  456. package/skills/cometchat-native-features/SKILL.md +0 -638
  457. package/skills/cometchat-native-placement/SKILL.md +0 -509
  458. package/skills/cometchat-native-production/SKILL.md +0 -700
  459. package/skills/cometchat-native-push/SKILL.md +0 -594
  460. package/skills/cometchat-native-testing/SKILL.md +0 -582
  461. package/skills/cometchat-native-theming/SKILL.md +0 -681
  462. package/skills/cometchat-native-troubleshooting/SKILL.md +0 -501
  463. package/skills/cometchat-nextjs-patterns/SKILL.md +0 -899
  464. package/skills/cometchat-placement/SKILL.md +0 -1360
  465. package/skills/cometchat-production/SKILL.md +0 -1027
  466. package/skills/cometchat-react-calls/SKILL.md +0 -752
  467. package/skills/cometchat-react-calls/references/add-calls-to-existing-chat.md +0 -146
  468. package/skills/cometchat-react-calls/references/call-layouts.md +0 -160
  469. package/skills/cometchat-react-calls/references/call-session.md +0 -235
  470. package/skills/cometchat-react-calls/references/custom-ui.md +0 -247
  471. package/skills/cometchat-react-calls/references/device-management.md +0 -210
  472. package/skills/cometchat-react-calls/references/group-calls.md +0 -257
  473. package/skills/cometchat-react-calls/references/idle-timeout.md +0 -188
  474. package/skills/cometchat-react-calls/references/in-call-chat.md +0 -212
  475. package/skills/cometchat-react-calls/references/migration-v4-to-v5.md +0 -170
  476. package/skills/cometchat-react-calls/references/picture-in-picture.md +0 -245
  477. package/skills/cometchat-react-calls/references/raise-hand.md +0 -238
  478. package/skills/cometchat-react-calls/references/recording-screen-share.md +0 -144
  479. package/skills/cometchat-react-calls/references/ringing-integration.md +0 -255
  480. package/skills/cometchat-react-calls/references/server-web-push-vapid.md +0 -241
  481. package/skills/cometchat-react-calls/references/share-invite.md +0 -175
  482. package/skills/cometchat-react-calls/references/testing-calls-on-web.md +0 -216
  483. package/skills/cometchat-react-calls/references/virtual-background.md +0 -32
  484. package/skills/cometchat-react-calls/references/voip-and-web-push.md +0 -165
  485. package/skills/cometchat-react-patterns/SKILL.md +0 -628
  486. package/skills/cometchat-react-push/SKILL.md +0 -634
  487. package/skills/cometchat-react-router-patterns/SKILL.md +0 -758
  488. package/skills/cometchat-react-testing/SKILL.md +0 -413
  489. package/skills/cometchat-theming/SKILL.md +0 -498
  490. package/skills/cometchat-troubleshooting/SKILL.md +0 -294
@@ -0,0 +1,31 @@
1
+ # anti-patterns — real bugs, do NOT do these (Android v6)
2
+
3
+ > Ground truth: `ui-kit/android/getting-started-kotlin.md` / `getting-started-jetpack.md` (order Warnings), `troubleshooting.md` (docs), `conversation-message-view.md`, installed 6.0.5 kit source; verified 2026-08-20. Each entry: name → symptom → why → fix.
4
+
5
+ 1. **Hardcoded credentials in source.** *Symptom:* App ID/Auth Key string literals in a Kotlin file (the docs' `"APP_ID"` placeholders copied verbatim), key visible in git/APK. *Why:* credentials in code get committed and shipped; rotating them means a code change. *Fix:* the gitignored `assets/cometchat-settings.json` read by `initFromSettings` (`setup-credentials.md` §4); build-time extras via `local.properties` → `BuildConfig`.
6
+
7
+ 2. **Classic `init()` instead of `initFromSettings`.** *Symptom:* works, but integration telemetry attribution is lost. *Why:* only `CometChatUIKit.initFromSettings(context, callback)` persists `integrationSource="ai-agent"` (and auto-inits the Calls SDK from `uiKit.enableCalling`). *Fix:* always init via `initFromSettings` + the settings JSON; use `init(context, UIKitSettings, callback)` only on an explicit user request for programmatic settings (`lifecycle.md`).
8
+
9
+ 3. **`cometchat-settings.json` committed to git / Auth Key left in a release build.** *Symptom:* the dev Auth Key is in the repo history or shipped inside the APK's assets. *Why:* the Auth Key authenticates ANY UID — a leaked key is full account takeover of your chat app. *Fix:* gitignore `app/src/main/assets/cometchat-settings.json`; prod builds OMIT `credentials.authKey` and log in with a server-minted auth token (`loginWithAuthToken`).
10
+
11
+ 4. **Login before init resolves.** *Symptom:* login "fails silently" — no user, no obvious error, blank chat. *Why:* the docs Warning is explicit: *"`init()` must resolve before you call `login()`. Calling `login()` before init completes will fail silently."* *Fix:* call `login` ONLY inside init's `onSuccess` (`lifecycle.md`).
12
+
13
+ 5. **Rendering chat before init/login resolve.** *Symptom:* blank screen or a component stuck on its loading state, no data. *Why:* every `CometChat*` component assumes an initialized SDK + a logged-in user; docs: "Breaking this order = blank screen." *Fix:* the gate — render/navigate only after BOTH callbacks succeed; surface `onError` on the gate instead of proceeding.
14
+
15
+ 6. **Leaked listeners.** *Symptom:* duplicate real-time handling, callbacks firing into destroyed screens, memory leaks/crashes after back navigation. *Why:* an SDK `CometChat.addMessageListener(listenerId, ...)` (or a `CometChatEvents` flow collected in a scope that outlives the screen) registered in a lifecycle but never removed keeps the screen alive. *Fix:* pair every add with a remove in the matching teardown — `removeMessageListener(listenerId)` in `onPause`/`onDestroy` (Views) or a `DisposableEffect`/`lifecycleScope` collection that dies with the composable. (The drop-in components manage their OWN listeners — this applies to listeners YOU add.)
16
+
17
+ 7. **`wrap_content` collapse of the chat surface.** *Symptom:* a ~0dp sliver, or a list that grows into place as content loads. *Why:* list-shaped components fill their parent; a content-driven box gives them nothing to fill. *Fix:* `match_parent`/`0dp`+constraints / `fillMaxSize()`; message list at `0dp`+`layout_weight="1"` / `weight(1f)` (`layout.md` invariant 1/5).
18
+
19
+ 8. **Composer hidden under the keyboard.** *Symptom:* typing opens the IME over the input; the user can't see what they type. *Why:* the window doesn't resize for the IME. *Fix:* Views → `android:windowSoftInputMode="adjustResize"` on the chat Activity; Compose → `Modifier.imePadding()` on the column holding the composer (`layout.md` invariant 3).
20
+
21
+ 9. **Composer/header under the system bars.** *Symptom:* header text behind the status bar, send button behind the gesture/nav bar. *Why:* the docs call `enableEdgeToEdge()` — after that the app owns the insets, and unpadded content slides under the bars. *Fix:* `Scaffold(contentWindowInsets = WindowInsets.statusBars)` + `navigationBarsPadding()` (Compose) / root inset padding (Views) — or don't go edge-to-edge (`layout.md` invariant 2).
22
+
23
+ 10. **Dead thread affordance.** *Symptom:* tapping "Reply in thread" / a thread indicator does nothing. *Why:* the list renders the thread affordance by default, but navigation is the host's job — unwired `onThreadRepliesClick` dead-ends. *Fix:* wire `setOnThreadRepliesClick { message -> }` / `onThreadRepliesClick =` to a thread screen (`CometChatThreadHeader` + parent-scoped list + composer), or explicitly hide the option (`setReplyInThreadOptionVisibility(View.GONE)`). Same rule for the conversations search icon (`onSearchClick` → `CometChatSearch` or hide).
24
+
25
+ 11. **Mixing cohorts or mixing majors.** *Symptom:* duplicate class / resource-merge build errors, or two inconsistent chat UIs. *Why:* `chatuikit-kotlin-android` + `chatuikit-compose-android` in one app collide; a v5 `chat-uikit-android` alongside v6 `chatuikit-*` is a version_conflict. *Fix:* ONE cohort artifact, ONE major — the §3 STOP gate (`setup-credentials.md`).
26
+
27
+ 12. **Missing Cloudsmith maven repo.** *Symptom:* `Could not find com.cometchat:chatuikit-...` at sync/build. *Why:* the kit is not on mavenCentral. *Fix:* add `maven("https://dl.cloudsmith.io/public/cometchat/cometchat/maven/")` to `settings.gradle(.kts)` `dependencyResolutionManagement.repositories`.
28
+
29
+ 13. **Treating same-user re-login as an error path (or switching users without logout).** *Symptom:* defensive re-login code, or a login error when switching accounts. *Why:* re-`login` with the SAME uid is safe (the kit returns the cached user via `onSuccess`, verified in 6.0.5), but logging in a DIFFERENT uid over an existing session errors. *Fix:* the guard — `getLoggedInUser()` same-uid → skip; different uid → `logout` first, login in its `onSuccess` (`lifecycle.md`).
30
+
31
+ 14. **Blocking the main thread waiting for callbacks.** *Symptom:* ANR, frozen splash, or a latch that never releases. *Why:* init/login callbacks are async and delivered on the main thread — `runBlocking`/`CountDownLatch.await()` on main deadlocks or janks. *Fix:* drive UI state from the callbacks (state flag / navigation in `onSuccess`), never wait synchronously.
@@ -0,0 +1,168 @@
1
+ # component-props — BAKED stable signatures for the Android v6 drop-ins
2
+
3
+ > Ground truth: `ui-kit/android/conversations.md`, `message-header.md`, `message-list.md`, `message-composer.md` (+ `threaded-messages-header.md`, `search.md`, `conversation-message-view.md` for wiring), extracted from the pages' code fences per cohort and cross-checked against installed 6.0.5 kit source, verified 2026-08-20.
4
+
5
+ The high-value, STABLE hooks for the 4 core drop-ins — baked so the golden path needs no
6
+ fetch. Both cohorts use the SAME component names; **Compose = named params on the
7
+ composable, Views = `set*` setters on the view** (XML tag = the fully-qualified class name,
8
+ package `com.cometchat.uikit.kotlin.presentation.<component>.ui.<Name>`). Exhaustive/rare
9
+ params still come from the page's `.md` twin (`docs-map.md`); anything below marked
10
+ **FETCH** is not baked.
11
+
12
+ ## THE RULE — custom UI goes in the component's OWN slot, never stacked on top
13
+ A custom header row, banner, or action button belongs in the component's view slot (tables
14
+ below). Don't render it as a sibling above/beside the component.
15
+
16
+ ---
17
+
18
+ ## CometChatConversations
19
+ **XML tag:** `<com.cometchat.uikit.kotlin.presentation.conversations.ui.CometChatConversations />` (size it `match_parent`).
20
+ **Callbacks** (Views setter ⇄ Compose param — same lambda shape):
21
+ - `setOnItemClick { conversation -> }` ⇄ `onItemClick = { conversation -> }` — the primary navigation hook (replaces built-in behavior).
22
+ - `setOnSearchClick { }` ⇄ `onSearchClick = { }` — the toolbar search icon; wire to a `CometChatSearch` screen or hide the search affordance.
23
+ - `setOnBackPress { }` ⇄ `onBackPress = { }` — toolbar back button.
24
+ - `setOnItemLongClick { conversation -> }` ⇄ `onItemLongClick` · `setOnError { exception -> }` ⇄ `onError` · `setOnLoad { conversations -> }` ⇄ `onLoad` · `setOnEmpty { }` ⇄ `onEmpty` · `setOnSelection { selected -> }` ⇄ `onSelection` (with `setSelectionMode(UIKitConstants.SelectionMode.MULTIPLE)` ⇄ `selectionMode =`).
25
+ **Functionality:** `setTitle("Chats")` ⇄ `title =` · `setToolbarVisibility(View.GONE)` ⇄ `hideToolbar = true` · `setSearchBoxVisibility(View.GONE)` ⇄ `hideSearchBox = true` · `setBackIconVisibility(View.VISIBLE)` ⇄ `hideBackIcon = false` (back icon hidden by default in Compose) · `setDisableSoundForMessages(true)` ⇄ `disableSoundForMessages = true`.
26
+
27
+ **The request-builder scoping hook** (exact names from `conversations.md`):
28
+ - Views: `conversations.setConversationsRequestBuilder(builder)`
29
+ - Compose: `conversationsRequestBuilder = builder`
30
+ ```kotlin
31
+ ConversationsRequest.ConversationsRequestBuilder()
32
+ .setConversationType(CometChatConstants.CONVERSATION_TYPE_USER) // 1:1-only; _GROUP for groups-only
33
+ .setLimit(20)
34
+ ```
35
+ **Pass the builder object, not `.build()`** — the component calls `.build()` internally
36
+ (docs Warning; default page size 30, infinite scroll). A DM-only ask → `CONVERSATION_TYPE_USER`
37
+ (hides seeded groups); groups-only → `CONVERSATION_TYPE_GROUP`; an unscoped "add chat" → omit the builder.
38
+
39
+ **The selection flows into the message screen via `conversationWith`:**
40
+ ```kotlin
41
+ onItemClick = { conversation ->
42
+ when (val entity = conversation.conversationWith) { // User OR Group
43
+ is User -> navigateToUserChat(entity)
44
+ is Group -> navigateToGroupChat(entity)
45
+ }
46
+ }
47
+ ```
48
+ The SAME `User`/`Group` is then handed to header + list + composer (below). Views cohort
49
+ passes it through Intent extras (`intent.putExtra("user", entity)` — the guide's pattern);
50
+ Compose holds it in state / a nav route.
51
+
52
+ ## CometChatMessageHeader
53
+ **XML tag:** `<com.cometchat.uikit.kotlin.presentation.messageheader.ui.CometChatMessageHeader />` (height `wrap_content`/`56dp`).
54
+ **Target (required):** `setUser(user)` ⇄ `user =` OR `setGroup(group)` ⇄ `group =`.
55
+ **Callbacks:** `setOnBackPress { }` ⇄ `onBackPress = { }` (REQUIRED on phones — pop back to the list) · `setOnError { exception -> }` ⇄ `onError`.
56
+ **Functionality:** `setBackButtonVisibility(View.VISIBLE)` ⇄ `hideBackButton = false`. Presence/typing/member-count update automatically (SDK events handled internally).
57
+
58
+ ## CometChatMessageList
59
+ **XML tag:** `<com.cometchat.uikit.kotlin.presentation.messagelist.ui.CometChatMessageList />` (`0dp` + `layout_weight="1"` between header and composer — `layout.md`).
60
+ **Target (required):** `setUser(user)` ⇄ `user =` OR `setGroup(group)` ⇄ `group =` — without one the list shows only its loading indicator (docs Warning).
61
+ **Callbacks:**
62
+ - `setOnThreadRepliesClick { message -> }` ⇄ `onThreadRepliesClick = { message -> }` — receives the parent `BaseMessage`; navigate to the thread screen (default-on; hide only on explicit opt-out via `setReplyInThreadOptionVisibility(View.GONE)` / Compose hide-option param — FETCH the Compose name from `message-list.md` if needed).
63
+ ⚠️ **Signature note:** the installed 6.0.5 kit takes a single `BaseMessage` in BOTH cohorts (`fun setOnThreadRepliesClick(callback: ((BaseMessage) -> Unit)?)`); the docs page's `{ context, baseMessage, template -> }` fence is stale — bake the single-arg shape.
64
+ - `setOnError { exception -> }` ⇄ `onError` · `setOnLoad { messages -> }` ⇄ `onLoad` · `setOnEmpty { }` ⇄ `onEmpty`.
65
+ **Functionality:** `setMessagesRequestBuilder(MessagesRequest.MessagesRequestBuilder()...)` ⇄ `messagesRequestBuilder =` (same pass-the-builder-not-`.build()` rule) · `setStartFromUnreadMessages(true)` ⇄ `startFromUnreadMessages = true` · `setEnableMultipleAttachments(true)` ⇄ `enableMultipleAttachments = true` (default true).
66
+ **Thread mode:** `setParentMessageId(id)` (Views, `Long`) ⇄ `parentMessageId = message.id` (Compose, default `-1` = main conversation) — a parent-scoped list for the thread screen. ⚠️ The `guide-threaded-messages.md` Views fence calls `messageList.setParentMessage(it.id)` — that setter doesn't exist on the list; the real one is `setParentMessageId` (verified in kit source + master app).
67
+
68
+ ## CometChatMessageComposer
69
+ **XML tag:** `<com.cometchat.uikit.kotlin.presentation.messagecomposer.ui.CometChatMessageComposer />` (height `wrap_content`; create it in the Activity's `onCreate` — it registers an `ActivityResultLauncher` for permissions, docs Warning).
70
+ **Target (required):** `setUser(user)` ⇄ `user =` OR `setGroup(group)` ⇄ `group =`.
71
+ **Works with no extra wiring** for plain send/attachments/voice/emoji.
72
+ **Callbacks (intercept-only):**
73
+ - Compose: `onSendButtonClick = { context, baseMessage -> }` (docs + source agree) · `onError = { ... }` — ⚠️ the Compose source takes `(CometChatException) -> Unit` (one arg); the docs fence shows `{ context, exception -> }` — prefer the one-arg shape, verify on compile.
74
+ - Views: ⚠️ installed 6.0.5 source is `setOnSendButtonClick(callback: (String) -> Unit)` (the typed text), NOT the docs' `{ context, baseMessage -> }` — treat the Views intercept as **FETCH/verify-on-compile**; for the golden path you don't wire it at all.
75
+ **Thread mode:** `setParentMessageId(id)` ⇄ `parentMessageId = message.id` — replies land in the thread.
76
+
77
+ ## The thread screen (how the pieces compose — from `guide-threaded-messages.md` + `threaded-messages-header.md`)
78
+ Takes BOTH the conversation target AND the parent message: `CometChatThreadHeader` —
79
+ `setParentMessage(parentMessage)` ⇄ `parentMessage =` (a `BaseMessage`; display-only, no
80
+ callbacks) — above a parent-scoped `CometChatMessageList` + `CometChatMessageComposer`
81
+ (same `user`/`group` + `parentMessageId = parentMessage.id` on both).
82
+
83
+ ## CometChatSearch (the `onSearchClick` destination)
84
+ Views `setOnBackPressListener { }` ⇄ Compose `onBackPress = { }` — you opened it, you close
85
+ it (round-trip). Scope to one conversation with `setUid("...")`/`setGuid("...")` ⇄
86
+ `uid =`/`guid =`; global search = neither. Full params: FETCH `search.md`.
87
+
88
+ ---
89
+
90
+ ## Slot / custom-view map (where custom UI goes)
91
+ | Component | Views setter | Compose param | Region |
92
+ |---|---|---|---|
93
+ | Conversations | `setLeadingView(ConversationsViewHolderListener)` / `setTitleView(...)` / `setSubtitleView(...)` / `setTrailingView(...)` | `leadingView = { conversation, typingIndicator -> }` / `titleView` / `subtitleView` / `trailingView` | per-row sections |
94
+ | Conversations | `setLoadingView(v)` / `setEmptyView(v)` / `setErrorView(v)` | `loadingView = { }` / `emptyView = { }` / `errorView = { onRetry -> }` | list states |
95
+ | Conversations | `setOverflowMenu(view)` · `setOptions { ctx, conv -> }` / `setAddOptions { ctx, conv -> }` | `overflowMenu = { }` · `options = { ctx, conv -> }` / `addOptions` | toolbar menu · long-press menu (`CometChatPopupMenu.MenuItem`) |
96
+ | MessageHeader | `setLeadingView(MessageHeaderViewHolderListener)` / `setSubtitleView(...)` / `setTrailingView(...)` / `setItemView(...)` | `leadingView = { user, group -> }` / `subtitleView` / `trailingView` / `itemView` (replaces whole header) | avatar · status line · right-side actions · whole row |
97
+ | MessageList | `setHeaderView(view)` / `setFooterView(view)` · state views as above | `headerView = { }` / `footerView = { }` · state views | banner above / below the scroll |
98
+ | MessageList | `set*ViewProvider(BubbleViewProvider)` (leading/header/reply/content/bottom/statusInfo/thread/footer) · `setBubbleFactories(list)` | per-bubble slot params `leadingView/headerView/.../footerView = { message, alignment -> }` · `bubbleFactories =` | inside every bubble / per message type — depth: FETCH `message-list.md` |
99
+ | MessageComposer | `setHeaderView(view)` / `setSendButtonView(view)` / `setAuxiliaryButtonView(view)` / `setAttachmentOptions(list)` | `headerView = { }` / `sendButtonView = { }` / `auxiliaryButtonView = { }` / `attachmentOptions = listOf(CometChatMessageComposerAction(...))` | above input · send button · sticker/AI area · attach sheet |
100
+
101
+ > Overriding `setAuxiliaryButtonView` REPLACES the sticker/AI buttons entirely — in 6.0.5 there is
102
+ > **no accessor to re-fetch the defaults**: `CometChatUIKit.getDataSource()` and
103
+ > `getAuxiliaryOption(...)` do **not** exist (the v4-era `ChatConfigurator.getDataSource()` /
104
+ > `getAuxiliaryOptions()` slot architecture was removed — verified against chatuikit-core/kotlin 6.0.5).
105
+ > If you must keep the defaults, add them into your custom view yourself; otherwise don't override the
106
+ > whole auxiliary slot. (Styling and ViewModel injection: FETCH the page.)
107
+
108
+ ---
109
+
110
+ ## Import paths (verified against 6.0.5)
111
+
112
+ Views components live at `com.cometchat.uikit.kotlin.presentation.<area>.ui.<Component>` —
113
+ `conversations.ui.CometChatConversations`, `messagelist.ui.CometChatMessageList`,
114
+ `search.ui.CometChatSearch`, `threadheader.ui.CometChatThreadHeader`, `users.ui.CometChatUsers`,
115
+ `groups.ui.CometChatGroups`, `calllogs.ui.CometChatCallLogs`,
116
+ `notificationfeed.ui.CometChatNotificationFeed`.
117
+
118
+ **The three calling components have NO `.ui` segment** (verified against 6.0.5) — inferring the
119
+ pattern gives `Unresolved reference 'ui'`:
120
+
121
+ | Component | Import |
122
+ |---|---|
123
+ | `CometChatIncomingCall` | `…presentation.incomingcall.CometChatIncomingCall` |
124
+ | `CometChatOutgoingCall` | `…presentation.outgoingcall.CometChatOutgoingCall` |
125
+ | `CometChatCallButtons` | `…presentation.callbuttons.CometChatCallButtons` |
126
+
127
+ SDK types the golden path also emits (not UI-Kit components, and not under `presentation`):
128
+
129
+ | Type | Import |
130
+ |---|---|
131
+ | `AppEntity` (the `User`/`Group` supertype the search + conversation taps switch on) | `com.cometchat.chat.models.AppEntity` |
132
+ | `CometChatConstants` (`RECEIVER_TYPE_*`, `GROUP_TYPE_*`, `CATEGORY_*`) | `com.cometchat.chat.constants.CometChatConstants` |
133
+
134
+ Formatters are not under `presentation` at all: `com.cometchat.uikit.kotlin.shared.formatters.*`
135
+ (`CometChatTextFormatter`, `CometChatMentionsFormatter`, `CometChatRichTextFormatter`). `SearchScope`
136
+ is `com.cometchat.uikit.core.constants.SearchScope`. Compose swaps `kotlin` for `compose`.
137
+
138
+ ---
139
+
140
+ ## Callback shapes (Views, verified vs 6.0.5)
141
+
142
+ | Component | Views setter | Shape |
143
+ |---|---|---|
144
+ | `CometChatConversations` | `setOnItemClick` | `(Conversation) -> Unit` |
145
+ | `CometChatConversations` | `setOnSearchClick` | `() -> Unit` |
146
+ | `CometChatMessageHeader` | `setOnBackPress` | `() -> Unit` |
147
+ | `CometChatMessageList` | `setOnThreadRepliesClick` | `((BaseMessage) -> Unit)?` — **ONE arg** |
148
+ | `CometChatMessageList` / `Composer` | `setParentMessageId` | `(Long)` |
149
+ | `CometChatThreadHeader` | `setParentMessage` | `(BaseMessage)` |
150
+ | `CometChatSearch` | `setOnConversationClick` | `((Conversation) -> Unit)?` — **ONE arg** |
151
+ | `CometChatSearch` | `setOnMessageClick` | `((BaseMessage) -> Unit)?` — **ONE arg** |
152
+ | `CometChatSearch` | `setSearchIn` | `(List<SearchScope>)` — import `com.cometchat.uikit.core.constants.SearchScope` |
153
+ | `CometChatMessageHeader` | `setOnNewChatClick` | `(() -> Unit)` — **on the HEADER, not `CometChatConversations`**; a list-first app owns its own new-chat entry (tab/FAB) → `CometChatUsers` + `CometChatGroups` |
154
+ | all four | `setUser` / `setGroup` | `(User)` / `(Group)` |
155
+
156
+ ---
157
+
158
+ ## Component / API map (BAKED closed list — from `catalogs/android-v6.json`)
159
+ Session: `CometChatUIKit`, `UIKitSettings` (`com.cometchat.uikit.core`).
160
+ Core surface: `CometChatConversations` · `CometChatMessageHeader` · `CometChatMessageList` · `CometChatMessageComposer` · `CometChatThreadHeader` · `CometChatSearch`.
161
+ Grow set (on request): `CometChatUsers` · `CometChatGroups` · `CometChatGroupMembers` · `CometChatCallLogs` · `CometChatIncomingCall` · `CometChatNotificationFeed` · `CometChatAIAssistantChatHistory`.
162
+ Namespaces: Views `com.cometchat.uikit.kotlin.presentation.<area>.ui.*` · Compose `com.cometchat.uikit.compose.presentation.<area>.ui.*`.
163
+ **Not in the catalog ⇒ does not exist.** v6 ships **no combined shell** — `CometChatConversationsWithMessages`/`CometChatUI` are v4-era names. `CometChatMessageTemplate` is documented but **absent from 6.0.5** — verify before use. Full catalog: `cometchat-android-v6-{kotlin,compose}-components`.
164
+
165
+ > ⚠️ **Docs drift — trust the reference table, not the docs.** `guide-threaded-messages` (Views tab) shows a **3-arg**
166
+ > `setOnThreadRepliesClick { context, baseMessage, template -> }` and `messageList.setParentMessage(id)`.
167
+ > Neither exists in 6.0.5: the callback takes **one** `BaseMessage`, and the list setter is
168
+ > **`setParentMessageId(Long)`**. Logged internally.
@@ -0,0 +1,153 @@
1
+ # docs-map — CometChat Android v6: intent → the exact docs page to fetch
2
+
3
+ ## Reaching docs — PREFER the CometChat docs MCP; fetch is the fallback
4
+ The canonical doc channel is the **first-party CometChat docs MCP** — tools `search_cometchat_docs`,
5
+ `fetch_cometchat_doc_page`, and `get_cometchat_implementation_bundle`. **If those tools are connected,
6
+ use them instead of a raw web fetch:**
7
+ - **Find the page** → `search_cometchat_docs(query, version?)` — replaces browsing the scoped `llms-*` index.
8
+ - **Read the page** → `fetch_cometchat_doc_page(path)` — pass the SAME `<path>` the tables below list
9
+ (the conversations page path for your platform); the MCP resolves the `.md` twin and returns raw Markdown.
10
+ A full `https://…/docs/<path>` URL also works.
11
+ - **A whole feature/recipe** → `get_cometchat_implementation_bundle(...)` is **NON-AUTHORITATIVE** — curated STATIC recipes that can lag the live docs (verified stale vs v7: e.g. `CometChatConversationsWithMessages`, `css-variables.css`). Treat any bundle as a hint only: RECONCILE it against the `fetch_cometchat_doc_page` result + the pack's hardening; never emit bundle code verbatim.
12
+
13
+ The MCP reads whatever docs environment it is pointed at (production by default; a preview when repointed),
14
+ so it also carries the environment-swap concern below — no hardcoded host on the skill side.
15
+
16
+ **If the MCP tools are NOT connected:** add it (`claude mcp add --transport http cometchat-docs https://mcp.cometchat.com/mcp`, or reinstall/enable the plugin) and retry; only if it still will not connect, fall back to a plain fetch via `DOCS_BASE` (defined next).
17
+ Either way the `<path>` catalog in this file is the source of truth for WHICH page — MCP-vs-fetch is only HOW.
18
+
19
+ ## DOCS_BASE — the fetch FALLBACK entry point (⚠️ SWAP HERE to change environments)
20
+ ```
21
+ DOCS_BASE = https://www.cometchat.com/docs
22
+ ```
23
+ > Production docs (`https://www.cometchat.com/docs`). The Android v6 UI Kit tree lives at the UNVERSIONED root: `/ui-kit/android/<page>`
24
+ > (v5 is `/ui-kit/android/v5/...` — do not fetch it for a v6 build).
25
+ > **Fetch rule:** always build a URL as `DOCS_BASE` + the path shown, then append `.md`.
26
+ > Never hardcode a host anywhere else; never decompile the AAR or read kit source for signatures.
27
+
28
+ ## The convention
29
+ `DOCS_BASE` + `<path>` + `.md` → raw Markdown (verbatim code +, on many pages, an "AI Integration
30
+ Quick Reference" accordion). **Every component page carries a `Kotlin (XML Views)` tab AND a
31
+ `Jetpack Compose` tab — read the tab for YOUR cohort** (the same `CometChat*` names, different wiring).
32
+ ```
33
+ Fetch: {DOCS_BASE}/ui-kit/android/conversations.md
34
+ ```
35
+ Fallback order: `.md` twin → if it 404s, the same URL **without** `.md` (HTML) → **never** kit source.
36
+
37
+ ## Scoped Android v6 index (prefer over the global llms.txt)
38
+ ```
39
+ {DOCS_BASE}/ui-kit/android/llms-android-v6.md
40
+ ```
41
+ An Android-v6-only index of every page as a `.md` link — use it to discover any page not in the
42
+ table below. Global all-products index (large; last resort): `{DOCS_BASE}/llms.txt`.
43
+ > **DOCS-GAP note:** this scoped index ships with docs branch `docs/android-llms-indexes`; until that
44
+ > merges, the per-page `.md` twins below already work — fall back to the table + the global `llms.txt`.
45
+
46
+ ## SDK docs — the FALLBACK reference (a feature the UI Kit has NO component for)
47
+ The rule of the pack: **for every feature, first check whether the UI Kit has a component/param for it
48
+ (this file's table + `component-props.md` + the catalog). If it does — USE it. If it does NOT** (e.g.
49
+ AI agent events, transient messages, webhooks, low-level presence/connection, unread counts, granular
50
+ group management) **— drop to the Android Chat SDK and call it directly** (the SDK is already installed
51
+ under the UI Kit; init/login already use it). Look the method up in the SDK docs — never guess:
52
+ ```
53
+ SDK_DOCS_BASE = https://www.cometchat.com/docs
54
+ ```
55
+ - **SDK index (scoped — PREFER this):** `{SDK_DOCS_BASE}/sdk/android/v5/llms-android-v5.md` — an
56
+ **Android-SDK-v5-only** routing index grouped by area (Messaging · Calling · Users · Groups · AI &
57
+ advanced · Resources & listeners · Advanced). Start here to find the feature's page. Do NOT use the
58
+ site-wide `{SDK_DOCS_BASE}/llms.txt` except as a last resort. Same DOCS-GAP note as above.
59
+ - **⚠️ URL trap:** Android SDK v5 pages are VERSIONED — `{SDK_DOCS_BASE}/sdk/android/v5/<page>` then
60
+ append `.md`. The unversioned `/sdk/android/<page>` tree is **v4** — never fetch it for a v5 build.
61
+ - **Example:** flag a message → `{SDK_DOCS_BASE}/sdk/android/v5/flag-message.md` →
62
+ `CometChat.flagMessage(...)`, `CometChat.getFlagReasons(...)`.
63
+ > Never hand-roll a feature that exists in the UI Kit OR the SDK, and never guess an SDK method —
64
+ > look it up in the SDK index → the page.
65
+
66
+ ## Don't fetch the hot path — it's baked
67
+ Install, `init → login → render`, and the core drop-in callbacks for "add chat" are BAKED in
68
+ `cometchat-android-v6-core`. Fetch ONLY for exhaustive params/attrs / long-tail components /
69
+ theming tokens / feature enablement.
70
+
71
+ ## The 80% trigger table (URL = `{DOCS_BASE}` + path, then append `.md`)
72
+ | Intent | Path (append `.md`) |
73
+ |---|---|
74
+ | setup / init / login (XML Views) | `/ui-kit/android/getting-started-kotlin` |
75
+ | setup / init / login (Compose) | `/ui-kit/android/getting-started-jetpack` |
76
+ | pick a chat experience / recipes | `/ui-kit/android/getting-started` · `one-to-one-chat` · `tab-based-chat` · `conversation-message-view` |
77
+ | conversation list (full params) | `/ui-kit/android/conversations` |
78
+ | message list | `/ui-kit/android/message-list` |
79
+ | message composer | `/ui-kit/android/message-composer` |
80
+ | message header | `/ui-kit/android/message-header` |
81
+ | users / groups / group members | `/ui-kit/android/users` · `groups` · `group-members` |
82
+ | threads | `/ui-kit/android/threaded-messages-header` |
83
+ | message search | `/ui-kit/android/search` |
84
+ | message templates / custom types | `/ui-kit/android/message-template` (⚠️ verify symbols vs catalog — see core map) |
85
+ | voice/video call buttons | `/ui-kit/android/call-buttons` |
86
+ | incoming / outgoing call UI | `/ui-kit/android/incoming-call` · `outgoing-call` |
87
+ | call logs | `/ui-kit/android/call-logs` |
88
+ | calls setup / enable calling | `/ui-kit/android/calling-integration` · `call-features` · Calls SDK: `/calls/android/setup` |
89
+ | AI features (starter/replies/summary) | `/ui-kit/android/ai-features` |
90
+ | AI agent chat / assistant history | `/ui-kit/android/guide-ai-agent` · `/ui-kit/android/ai-assistant-chat-history` |
91
+ | notification feed | `/ui-kit/android/notification-feed` |
92
+ | push setup (FCM) | `/notifications/push-overview` |
93
+ | extensions (stickers/polls/translation…) | `/ui-kit/android/extensions` — **client half only**; see the enablement table below |
94
+ | theming / colors / styling | `/ui-kit/android/theme-introduction` · `color-resources` · `component-styling` · `message-bubble-styling` |
95
+ | customization (slots/styles/events/formatters…) | `/ui-kit/android/customization-overview` (+ the specific `customization-*` page) |
96
+ | localization / sounds | `/ui-kit/android/localize` · `sound-manager` |
97
+ | methods / events reference | `/ui-kit/android/methods` · `/ui-kit/android/events` |
98
+ | full component list | `/ui-kit/android/components-overview` |
99
+ | troubleshooting | `/ui-kit/android/troubleshooting` |
100
+ | v5→v6 migration / upgrade | `/ui-kit/android/upgrading-from-v5` |
101
+
102
+ ## Enablement — the half that is NOT in `ui-kit/android`
103
+ Most "add <feature>" asks have a **dashboard/extension prerequisite**. The component renders and
104
+ nothing happens until it is switched on, so a skill that only wires the client has not finished the
105
+ job. These pages live OUTSIDE the UI-Kit tree — say the prerequisite out loud to the user, and fetch
106
+ the page when you need the exact steps.
107
+
108
+ | Intent | Enablement page (append `.md`) |
109
+ |---|---|
110
+ | any extension — first stop | `/fundamentals/extensions-overview` |
111
+ | polls · stickers | `/fundamentals/polls` · `/fundamentals/stickers` |
112
+ | collaborative whiteboard / document | `/fundamentals/collaborative-whiteboard` · `/fundamentals/collaborative-document` |
113
+ | link preview · thumbnail generation | `/fundamentals/link-preview` · `/fundamentals/thumbnail-generation` |
114
+ | message translation | `/fundamentals/message-translation` |
115
+ | smart replies · conversation starter · summary | `/fundamentals/ai-user-copilot/smart-replies` · `conversation-starter` · `conversation-summary` (overview: `/fundamentals/ai-user-copilot/overview`) |
116
+ | AI agents | `/ai-agents` |
117
+ | profanity filter / moderation | `/fundamentals/moderation-extensions` · `/moderation/overview` · `/moderation/getting-started` · `/moderation/rules-management` |
118
+ | push notifications (Android) | `/notifications/push-overview` · **`/notifications/android-push-notifications`** · `/notifications/badge-count` |
119
+ | campaigns / announcements | `/campaigns/campaigns` · `/campaigns/templates` · `/campaigns/channels` |
120
+ | auth keys, roles, permissions | `/fundamentals/user-auth` · `/fundamentals/user-roles-and-permissions` |
121
+ | server-side webhooks | `/fundamentals/webhooks-overview` · `/calls/webhooks` |
122
+
123
+ > Both scoped LLM indexes now carry this same routing, so either door reaches it:
124
+ > `{DOCS_BASE}/ui-kit/android/llms-android-v6.md` and
125
+ > `{SDK_DOCS_BASE}/sdk/android/v5/llms-android-v5.md`.
126
+
127
+ ## Task guides (recipes) — for a whole FEATURE, BUILD FROM the guide + COMPARE against it (docs-maximal)
128
+ For a TASK/feature ask (a whole capability, not just one component's params), the docs ship **full
129
+ end-to-end guides**. **Discover them from the scoped llms index's "Task guides (recipes)" section**
130
+ (`{DOCS_BASE}/ui-kit/android/llms-android-v6.md`) — the index is the source of truth (new guides appear
131
+ there; do NOT bake this list). At time of writing it lists: `guide-overview` · `guide-threaded-messages` ·
132
+ `guide-block-unblock-user` · `guide-new-chat` · `guide-message-privately` · `guide-call-log-details` ·
133
+ `guide-group-chat` · `guide-search-messages` · `guide-ai-agent` · `custom-text-formatter-guide` ·
134
+ `mentions-formatter-guide` · `shortcut-formatter-guide`.
135
+ **Use the matching guide TWO ways — prefer it over baked recipe prose wherever a guide exists:**
136
+ 1. **As the implementation SOURCE** — fetch `{DOCS_BASE}/ui-kit/android/<guide>.md` (your cohort's tab)
137
+ and build the feature from the official recipe. **Adapt it ADDITIVELY** into the user's app (reuse
138
+ their navigation/theme/auth; never drop in the guide's standalone shell).
139
+ 2. **As a COMPLETENESS + CORRECTNESS check** — after you emit, DIFF your implementation against the
140
+ guide: every component, param, step, and affordance covered? Fill any gap.
141
+ > **Then apply the baked HARDENING DELTAS on top — the guide is the BASELINE, not the whole truth:**
142
+ > credentials via `local.properties`→`BuildConfig` (guides hardcode placeholders); the init→login gate
143
+ > with failures surfaced; thread screens take the conversation target AND the parent message id;
144
+ > IME/insets sizing (`references/layout.md`); wire-or-hide every default-on affordance; listener
145
+ > teardown in the matching lifecycle. Build from the guide, then correct with these.
146
+
147
+ **No matching guide in the index? → continue EXACTLY as before** — build from the pack's baked
148
+ golden path + `component-props.md` and fetch each component's `.md` twin for exact params. **The guide
149
+ is an ENHANCEMENT when present, never a hard dependency.**
150
+
151
+ ## Not in the table?
152
+ Fetch the scoped index (`{DOCS_BASE}/ui-kit/android/llms-android-v6.md`), pick the page, fetch its `.md`.
153
+ Never guess a path; never read kit source; never answer params from memory.
@@ -0,0 +1,112 @@
1
+ # layout — the reflow-free chat surface (the ONE mobile sizing standard, Android v6)
2
+
3
+ > Ground truth: `ui-kit/android/conversation-message-view.md` (both tabs, snippets verbatim) + `getting-started-*` (`enableEdgeToEdge`), cross-checked against the kit's sample-app manifests (`windowSoftInputMode="adjustResize"`), verified 2026-08-20.
4
+
5
+ The single source of truth for how a CometChat surface is SIZED on Android so it renders
6
+ full-size from the first frame, stays clear of system bars and the keyboard, and never
7
+ reflows. `core`, `placement`, and `calls` POINT here — change the rule once, here.
8
+
9
+ > **The kit is NOT the problem.** Every UI Kit component fills its parent by design and
10
+ > ships its OWN loading/empty/error state. A chat surface that collapses, hides the
11
+ > composer under the keyboard, or slides under the status bar is a HOST layout defect.
12
+
13
+ ## The five invariants (a correct surface satisfies ALL)
14
+
15
+ **(1) Fill the parent — never `wrap_content` for the chat surface.**
16
+ The conversations screen and the message screen each own their window: Views →
17
+ `match_parent` (in a constraint layout, `0dp` + constraints, as the docs guide does);
18
+ Compose → `Modifier.fillMaxSize()`. `wrap_content` on a list-shaped component collapses to
19
+ ~0dp before content loads and grows into place after — both broken. The composer/header
20
+ are the exception: they are bars — `wrap_content` height (Views) / intrinsic height
21
+ (Compose) by design.
22
+
23
+ **(2) Edge-to-edge WITH insets.** The docs call `enableEdgeToEdge()` in every Activity
24
+ `onCreate` — once you do, YOU own the status/nav-bar insets, or the header renders under
25
+ the status bar and the composer under the gesture bar. Compose: the guide's exact recipe —
26
+ ```kotlin
27
+ Scaffold(contentWindowInsets = WindowInsets.statusBars) { paddingValues ->
28
+ Column(
29
+ modifier = Modifier
30
+ .fillMaxSize()
31
+ .padding(paddingValues)
32
+ .consumeWindowInsets(paddingValues)
33
+ .navigationBarsPadding()
34
+ .imePadding()
35
+ ) { /* header / list / composer */ }
36
+ }
37
+ ```
38
+ Views: apply insets to the root (e.g. `ViewCompat.setOnApplyWindowInsetsListener` padding
39
+ the root with `systemBars()` insets), or skip `enableEdgeToEdge()` entirely and let the
40
+ system fit the window — never edge-to-edge WITHOUT inset handling.
41
+
42
+ **(3) IME/keyboard-aware — the composer stays visible while typing.**
43
+ - **Views:** the chat Activity needs `android:windowSoftInputMode="adjustResize"` in
44
+ `AndroidManifest.xml` (the kit's own sample apps set it on every chat activity). Without
45
+ it the keyboard overlays the composer.
46
+ - **Compose:** `Modifier.imePadding()` on the column that holds the composer (guide recipe
47
+ above) — and make sure inset consumption (`consumeWindowInsets`) precedes it so padding
48
+ isn't applied twice. `adjustResize` in the manifest also helps Compose apps on older
49
+ inset paths; the samples set both.
50
+
51
+ **(4) Loading states render INSIDE the full-size surface — no placeholder→chat jump.**
52
+ The components ship their own loading/empty/error states and render them within the sized
53
+ surface. Mount the sized surface immediately after the gate unlocks and let each component
54
+ show its own state — do NOT swap a small "Loading…" layout for the chat layout (that IS
55
+ the reflow). The only gate ABOVE the surface is init/login (`lifecycle.md`), and the docs'
56
+ gate renders its spinner `fillMaxSize`, so even that swap is full-size → full-size.
57
+
58
+ **(5) List scroll containment — the message list scrolls internally.**
59
+ `CometChatMessageList` (and `CometChatConversations`) contain their own scrolling.
60
+ - **Views:** never nest them in a `ScrollView`/`NestedScrollView`; in the vertical
61
+ `LinearLayout` the list takes `layout_height="0dp"` + `layout_weight="1"` between the
62
+ header and composer bars (docs guide, verbatim below).
63
+ - **Compose:** never place them inside a `verticalScroll` or another `LazyColumn`
64
+ (nested unbounded-height measurement crashes/collapses); give the list `weight(1f)`
65
+ in the `Column` so it gets a bounded height and scrolls inside it.
66
+
67
+ ## The message-screen recipe (docs guide, verbatim shapes)
68
+
69
+ **Views — `activity_message.xml`:**
70
+ ```xml
71
+ <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent"
72
+ android:orientation="vertical">
73
+ <com.cometchat.uikit.kotlin.presentation.messageheader.ui.CometChatMessageHeader
74
+ android:id="@+id/message_header"
75
+ android:layout_width="match_parent" android:layout_height="wrap_content" />
76
+ <com.cometchat.uikit.kotlin.presentation.messagelist.ui.CometChatMessageList
77
+ android:id="@+id/message_list"
78
+ android:layout_width="match_parent" android:layout_height="0dp"
79
+ android:layout_weight="1" />
80
+ <com.cometchat.uikit.kotlin.presentation.messagecomposer.ui.CometChatMessageComposer
81
+ android:id="@+id/message_composer"
82
+ android:layout_width="match_parent" android:layout_height="wrap_content" />
83
+ </LinearLayout>
84
+ ```
85
+ plus manifest: `<activity android:name=".MessageActivity" android:windowSoftInputMode="adjustResize" />`.
86
+
87
+ **Compose — `MessageScreen`:** the Scaffold recipe in invariant (2) with, inside the Column:
88
+ ```kotlin
89
+ CometChatMessageHeader(modifier = Modifier.fillMaxWidth(), user = user, group = group,
90
+ hideBackButton = false, onBackPress = onBack)
91
+ CometChatMessageList(modifier = Modifier.fillMaxWidth().weight(1f), user = user, group = group)
92
+ CometChatMessageComposer(modifier = Modifier.fillMaxWidth(), user = user, group = group)
93
+ ```
94
+
95
+ The conversations screen is the same standard, one component:
96
+ Views full-bleed `CometChatConversations` at `match_parent`/`0dp`+constraints; Compose
97
+ `CometChatConversations(modifier = Modifier.fillMaxSize(), ...)`.
98
+
99
+ > ⚠️ **The list and search routes need insets too, not just the message route.** `fillMaxSize()` under `enableEdgeToEdge()` draws the title under the status-bar clock (verified on device). Wrap every full-screen route in `Scaffold(contentWindowInsets = WindowInsets.statusBars)` — the same recipe this file reserves for the message screen. Skipping it here contradicts layout invariant (2): never edge-to-edge WITHOUT inset handling.
100
+
101
+ ## Embedded (not full-screen)
102
+ Same invariants against the embedding cell: give the chat region a bounded height (a sized
103
+ fragment container / a `weight`ed cell / a fixed `Modifier.height(...)`) — never
104
+ `wrap_content`/unbounded — and keep (3)–(5) unchanged. Bottom-nav/tab shells: size the tab
105
+ content pane, not the component (`cometchat-android-v6-{kotlin,compose}-placement`).
106
+
107
+ ## Verify (advisory, human check)
108
+ Full-size from the first frame (the kit's own loading state fills the screen, no small box
109
+ that grows); header below the status bar and composer above the gesture/nav bar with
110
+ edge-to-edge on; open the keyboard → the composer rides above it and the list shrinks (no
111
+ overlay); the message list scrolls internally with header/composer pinned; rotate → no
112
+ collapse, no re-init (`lifecycle.md`).
@@ -0,0 +1,75 @@
1
+ # lifecycle — init once, login guard, logout (Android v6)
2
+
3
+ > Ground truth: installed `chatuikit-core-android` 6.0.5 `CometChatUIKit.kt` (`initFromSettings`/`login`/`loginWithAuthToken`/`logout`/`getLoggedInUser`/`isSDKInitialized`) + `ui-kit/android/getting-started-kotlin.md` / `getting-started-jetpack.md` (gate pattern), verified 2026-08-20.
4
+
5
+ ## Init once — via `initFromSettings`, and where it lives
6
+ The canonical init is **`CometChatUIKit.initFromSettings(context, callback)`** — it reads the gitignored `app/src/main/assets/cometchat-settings.json` (`setup-credentials.md` §4), persists `integrationSource="ai-agent"` for telemetry attribution, and auto-inits the Calls SDK when `uiKit.enableCalling` is true. A classic `init(context, UIKitSettings, callback)` overload also exists on `CometChatUIKit`, but **do not use it as the default — it loses the telemetry attribution** (AUDIT-084); reach for it only when a user explicitly needs programmatic settings.
7
+
8
+ Init is async; **nothing CometChat renders until `onSuccess` fires** (docs Warning: *"`init()` must resolve before you call `login()`. Calling `login()` before init completes will fail silently."*). Two valid placements:
9
+
10
+ - **Gate Activity (RECOMMENDED — the docs getting-started pattern):** the launcher/splash Activity runs `initFromSettings → login` and only then navigates to (Views) / renders (Compose) the chat UI. Failures surface on the gate screen instead of a blank chat.
11
+ - **Application.onCreate:** fine for init alone, but you still need a ready-gate before any `CometChat*` UI renders, and login usually depends on app auth state — so you end up building the gate anyway. Use it only when every screen needs CometChat from frame 1.
12
+
13
+ **Do NOT re-init per Activity/screen.** Init once per process. If a later entry point can't be sure init ran (deep link, notification tap, process death restoring a back stack), guard with `CometChatUIKit.isSDKInitialized()` — if false, route through the gate rather than sprinkling init calls through the app.
14
+
15
+ ## The exact init shape (both cohorts — same code)
16
+ ```kotlin
17
+ import com.cometchat.chat.core.CometChat
18
+ import com.cometchat.chat.exceptions.CometChatException
19
+ import com.cometchat.chat.models.User
20
+ import com.cometchat.uikit.core.CometChatUIKit
21
+
22
+ // Reads app/src/main/assets/cometchat-settings.json (appId, region, credentials.authKey,
23
+ // uiKit.subscribePresenceForAllUsers/enableCalling) and persists integrationSource="ai-agent".
24
+ CometChatUIKit.initFromSettings(this, object : CometChat.CallbackListener<String>() {
25
+ override fun onSuccess(s: String) { loginUser() } // init resolved — ONLY now login
26
+ override fun onError(e: CometChatException?) {
27
+ // SURFACE it — show e?.message on the gate screen; do NOT proceed to chat.
28
+ // ERR_SETTINGS_FILE_NOT_FOUND → the assets JSON is missing; ERR_SETTINGS_INVALID → appId/region missing.
29
+ }
30
+ })
31
+ ```
32
+ (Compose cohort: hold `isReady`/`error` in `mutableStateOf` and let `setContent` render error → spinner → `ChatApp()` — the getting-started-jetpack gate; Views cohort: `startActivity` to the conversations screen only from login's `onSuccess`, as getting-started-kotlin does.)
33
+
34
+ ## Login guard — skip if logged in; logout before switching users
35
+ ```kotlin
36
+ private fun loginUser() {
37
+ val existing = CometChatUIKit.getLoggedInUser() // sync; null if nobody logged in
38
+ if (existing != null && existing.uid == uid) { unlockChatUi(); return } // same user → done
39
+ // DIFFERENT user still logged in → logout FIRST, then login in its onSuccess
40
+ CometChatUIKit.login(uid, object : CometChat.CallbackListener<User>() {
41
+ override fun onSuccess(user: User) { unlockChatUi() }
42
+ override fun onError(e: CometChatException) { /* surface e.message — e.g. ERR_UID_NOT_FOUND */ }
43
+ })
44
+ }
45
+ ```
46
+ - **Same UID re-login is safe:** the kit short-circuits and returns the cached user via `onSuccess` (verified in 6.0.5 source) — but the guard keeps intent obvious and skips a needless call.
47
+ - **Different UID while logged in:** call `CometChatUIKit.logout(...)` and only login in its `onSuccess` — logging in over an existing session errors.
48
+ - The UID comes from the user / dashboard (`setup-credentials.md` §7) — never hardcoded in shipped code.
49
+
50
+ ## Production login — auth token, not Auth Key
51
+ Mint a per-user token server-side (CometChat REST API), then:
52
+ ```kotlin
53
+ CometChatUIKit.loginWithAuthToken(authToken, object : CometChat.CallbackListener<User>() {
54
+ override fun onSuccess(user: User) { unlockChatUi() }
55
+ override fun onError(e: CometChatException) { /* surface */ }
56
+ })
57
+ ```
58
+ Prod builds OMIT `credentials.authKey` from `cometchat-settings.json` (`appId`/`region` stay — they're not secrets). Never ship the Auth Key in a release build (docs Warning on both getting-started pages).
59
+
60
+ ## Logout
61
+ ```kotlin
62
+ CometChatUIKit.logout(object : CometChat.CallbackListener<String>() {
63
+ override fun onSuccess(s: String) { /* route to your sign-in screen */ }
64
+ override fun onError(e: CometChatException?) { /* surface */ }
65
+ })
66
+ ```
67
+ Call on app sign-out (it also clears the calls session when calling is enabled). After logout, the next chat entry must pass back through the gate.
68
+
69
+ ## Process death & configuration changes
70
+ - **Config change (rotation/theme):** the SDK is a process-level singleton — the Activity recreates, init/login state survives. Do NOT re-run init in every `onCreate` unconditionally; the gate + `isSDKInitialized()` / `getLoggedInUser()` guards make re-entry a no-op.
71
+ - **Process death:** Android may recreate a deep Activity with the process cold. Any Activity that hosts `CometChat*` views must tolerate this: check `CometChatUIKit.isSDKInitialized()` (and `getLoggedInUser() != null`) in `onCreate`; if not ready, bounce to the gate (which re-inits and re-logs-in via the guards) instead of rendering a dead chat surface.
72
+ - **Login session persists** across launches on the device — on warm starts `getLoggedInUser()` is non-null and the gate skips straight past login.
73
+
74
+ ## Surfacing CometChatException — never swallow
75
+ Every callback's `onError` hands you a `CometChatException` — log it AND show the user something actionable (`e.message`; wrong Region, a missing settings file, and a missing UID are the three most common). A swallowed `onError` is the #1 cause of "blank screen, no errors" (`troubleshooting.md`). Do not block the main thread waiting for callbacks (no latches/`runBlocking`) — they already arrive on the main thread; drive UI state from them.