@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
@@ -1,469 +0,0 @@
1
- ---
2
- name: cometchat-android-v5-customization
3
- description: "Customize CometChat components beyond theming — custom message templates, DataSource decorators, event listeners, and custom view slots."
4
- license: "MIT"
5
- compatibility: "Android 7.0+; Java 8+; Kotlin 1.8+; com.cometchat:chat-uikit-android:5.x"
6
- metadata:
7
- author: "CometChat"
8
- version: "3.0.0"
9
- tags: "cometchat android customization custom-view message-template datasource events"
10
- ---
11
-
12
- > **Ground truth:** `com.cometchat:chat-uikit-android:5.x` (legacy/maintenance-only; +`calls-sdk-android:5.x`) — resolved AAR (javap) + `ui-kit/android`. **Official docs:** https://www.cometchat.com/docs/ui-kit/android/overview · **Docs MCP:** `claude mcp add --transport http cometchat-docs https://www.cometchat.com/docs/mcp` (or fetch the URL directly without MCP). Verify symbols against the installed package/source before relying on them.
13
-
14
- > **Companion skills:** `cometchat-android-v5-components` provides the component
15
- > catalog; `cometchat-android-v5-theming` covers visual styling;
16
- > `cometchat-android-v5-extensions` covers the extension architecture.
17
-
18
- ## Purpose
19
-
20
- This skill teaches how to customize CometChat components beyond what theming provides. It covers custom message templates, the DataSource/DataSourceDecorator pattern, ChatConfigurator, event listeners, and custom view slots.
21
-
22
- ---
23
-
24
- ## Use this skill when
25
-
26
- - "Customize the message list"
27
- - "Add a custom message bubble"
28
- - "Listen to message events"
29
- - "Add a custom action to message options"
30
- - "Filter conversations"
31
-
32
- ## Do not use this skill when
33
-
34
- - Changing colors/fonts → use `cometchat-android-v5-theming`
35
- - Enabling a packaged feature → use `cometchat-android-v5-features`
36
- - Setting up init/login → use `cometchat-android-v5-core`
37
-
38
- ---
39
-
40
- ## 1. CometChatMessageTemplate
41
-
42
- Templates define how message bubbles are rendered. Each template maps a message `type` + `category` to custom views.
43
-
44
- > **Prefer the decorator (§3) for anything app-wide.** The per-list `setTemplates(...)` shown here only affects the one `CometChatMessageList` you call it on. To register a custom type, override a built-in bubble, add an attachment, or add a long-press option **everywhere**, use the four `DataSourceDecorator` recipes in §3 — that is the pattern the kit's own extensions use.
45
-
46
- **Java:**
47
- ```java
48
- CometChatMessageTemplate template = new CometChatMessageTemplate()
49
- .setType(CometChatConstants.MESSAGE_TYPE_TEXT)
50
- .setCategory(CometChatConstants.CATEGORY_MESSAGE)
51
- .setContentView(new MessagesViewHolderListener() {
52
- @Override
53
- public View createView(Context context, CometChatMessageBubble messageBubble,
54
- UIKitConstants.MessageBubbleAlignment alignment) {
55
- // Return your custom view
56
- return LayoutInflater.from(context).inflate(R.layout.custom_text_bubble, null);
57
- }
58
-
59
- @Override
60
- public void bindView(Context context, View createdView, BaseMessage message,
61
- UIKitConstants.MessageBubbleAlignment alignment,
62
- RecyclerView.ViewHolder holder, List<BaseMessage> messageList,
63
- int position) {
64
- // Bind data to your custom view
65
- TextView textView = createdView.findViewById(R.id.customText);
66
- textView.setText(((TextMessage) message).getText());
67
- }
68
- })
69
- .setOptions((context, baseMessage, group) -> {
70
- // Return custom message options (long-press menu)
71
- List<CometChatMessageOption> options = new ArrayList<>();
72
- options.add(new CometChatMessageOption("custom_action", "Custom Action",
73
- R.drawable.ic_custom, () -> { /* handle click */ }));
74
- return options;
75
- });
76
-
77
- // Apply to message list — APPEND to defaults, never replace.
78
- // ❌ messageList.setTemplates(Collections.singletonList(template)); // wipes ALL default bubbles
79
- List<CometChatMessageTemplate> templates =
80
- CometChatUIKit.getDataSource().getMessageTemplates(new AdditionParameter());
81
- templates.add(template); // keep text/image/video/file/… + add yours
82
- messageList.setTemplates(templates);
83
- ```
84
-
85
- > **The #1 custom-bubble mistake:** `setTemplates(singletonList(myTemplate))` replaces the entire template set, so every default bubble (text, image, video, audio, file, …) stops rendering. Always seed the list from `CometChatUIKit.getDataSource().getMessageTemplates(new AdditionParameter())` and `add()` your template — or register a `DataSourceDecorator` (§3) so the append applies app-wide.
86
-
87
- **Kotlin:**
88
- ```kotlin
89
- val template = CometChatMessageTemplate()
90
- .setType(CometChatConstants.MESSAGE_TYPE_TEXT)
91
- .setCategory(CometChatConstants.CATEGORY_MESSAGE)
92
- .setContentView(object : MessagesViewHolderListener() {
93
- override fun createView(context: Context, messageBubble: CometChatMessageBubble,
94
- alignment: UIKitConstants.MessageBubbleAlignment): View {
95
- return LayoutInflater.from(context).inflate(R.layout.custom_text_bubble, null)
96
- }
97
-
98
- override fun bindView(context: Context, createdView: View, message: BaseMessage,
99
- alignment: UIKitConstants.MessageBubbleAlignment,
100
- holder: RecyclerView.ViewHolder, messageList: List<BaseMessage>,
101
- position: Int) {
102
- val textView = createdView.findViewById<TextView>(R.id.customText)
103
- textView.text = (message as TextMessage).text
104
- }
105
- })
106
- .setOptions { context, baseMessage, group ->
107
- listOf(CometChatMessageOption("custom_action", "Custom Action",
108
- R.drawable.ic_custom) { /* handle click */ })
109
- }
110
-
111
- // APPEND to defaults — don't replace.
112
- // ❌ messageList.setTemplates(listOf(template)) // wipes ALL default bubbles
113
- val templates = CometChatUIKit.getDataSource().getMessageTemplates(AdditionParameter())
114
- templates.add(template)
115
- messageList.setTemplates(templates)
116
- ```
117
-
118
- ### Template view slots
119
-
120
- | Slot | Method | Description |
121
- |---|---|---|
122
- | `bubbleView` | `setBubbleView(MessagesViewHolderListener)` | Entire message bubble |
123
- | `headerView` | `setHeaderView(MessagesViewHolderListener)` | Above the bubble |
124
- | `contentView` | `setContentView(MessagesViewHolderListener)` | Inside the bubble |
125
- | `bottomView` | `setBottomView(MessagesViewHolderListener)` | Below the content, inside bubble |
126
- | `footerView` | `setFooterView(MessagesViewHolderListener)` | Below the bubble |
127
- | `statusInfoView` | `setStatusInfoView(MessagesViewHolderListener)` | Status info area |
128
- | `replyView` | `setReplyView(MessagesViewHolderListener)` | Reply preview above bubble |
129
-
130
- ---
131
-
132
- ## 2. CometChatMessageOption
133
-
134
- Custom actions in the message long-press menu. `CometChatMessageOption extends CometChatOption`. Verified constructor (`CometChatMessageOption.java:43`):
135
-
136
- ```java
137
- public CometChatMessageOption(@NotNull String id, @NotNull String title, @ColorInt int icon, OnClick onClick)
138
- ```
139
-
140
- **Java:**
141
- ```java
142
- CometChatMessageOption option = new CometChatMessageOption(
143
- "bookmark", // unique ID
144
- "Bookmark", // title
145
- R.drawable.ic_bookmark, // icon — see note below
146
- () -> { // onClick (com.cometchat.chatuikit.shared.interfaces.OnClick)
147
- // Handle bookmark action
148
- }
149
- );
150
- ```
151
-
152
- > **Icon-param quirk:** the 4-arg constructor's third param is annotated `@ColorInt int icon`, but the kit's own decorators pass a **drawable** resource here (e.g. `MessageTranslationDecorator.java:53` passes `R.drawable.cometchat_ic_translate`). Pass your `R.drawable.*` id — the annotation is misleading, the runtime treats it as a drawable. The 7-arg constructor (`CometChatMessageOption.java:58`) adds `titleColor`, `iconTintColor`, `titleAppearance` if you need styling.
153
-
154
- ---
155
-
156
- ## 3. DataSource and DataSourceDecorator
157
-
158
- The `DataSource` interface defines how messages are rendered and what options are available. `DataSourceDecorator` wraps an existing DataSource to add or modify behavior without replacing it.
159
-
160
- **Java:**
161
- ```java
162
- public class CustomDataSource extends DataSourceDecorator {
163
- public CustomDataSource(DataSource dataSource) {
164
- super(dataSource);
165
- }
166
-
167
- @Override
168
- public List<CometChatMessageOption> getTextMessageOptions(Context context,
169
- BaseMessage baseMessage, Group group, AdditionParameter additionParameter) {
170
- List<CometChatMessageOption> options = super.getTextMessageOptions(context,
171
- baseMessage, group, additionParameter);
172
- // Add custom option
173
- options.add(new CometChatMessageOption("translate", "Translate",
174
- R.drawable.ic_translate, () -> { /* translate */ }));
175
- return options;
176
- }
177
- }
178
- ```
179
-
180
- **Kotlin:**
181
- ```kotlin
182
- class CustomDataSource(dataSource: DataSource) : DataSourceDecorator(dataSource) {
183
- override fun getTextMessageOptions(context: Context, baseMessage: BaseMessage,
184
- group: Group?, additionParameter: AdditionParameter): List<CometChatMessageOption> {
185
- val options = super.getTextMessageOptions(context, baseMessage, group, additionParameter).toMutableList()
186
- options.add(CometChatMessageOption("translate", "Translate",
187
- R.drawable.ic_translate) { /* translate */ })
188
- return options
189
- }
190
- }
191
- ```
192
-
193
- ### Register via ChatConfigurator
194
-
195
- **Java:**
196
- ```java
197
- ChatConfigurator.enable(dataSource -> new CustomDataSource(dataSource));
198
- ```
199
-
200
- **Kotlin:**
201
- ```kotlin
202
- ChatConfigurator.enable { dataSource -> CustomDataSource(dataSource) }
203
- ```
204
-
205
- ### The four customization scenarios (all via the decorator)
206
-
207
- The canonical Android V5 extension surface is the `DataSource` chain. The four most common requests each map to **one overridden method** on your `DataSourceDecorator`. Every override **must call `super.*` first** and append — returning a fresh list/template wipes the kit's defaults. These are the exact methods + signatures the kit's own extensions use; cited file:line for each.
208
-
209
- #### Scenario 1 — Register a custom message type (new bubble)
210
-
211
- Override `getMessageTemplates(...)` and append a `CometChatMessageTemplate` whose `setCategory(...)` is `UIKitConstants.MessageCategory.CUSTOM` and whose `setType(...)` is your custom type string. Render its bubble with `setContentView(MessagesViewHolderListener)`. This mirrors `PollsExtensionDecorator.getMessageTemplates` (`PollsExtensionDecorator.java:82-86`) + `getPollTemplate` (`PollsExtensionDecorator.java:220-309`).
212
-
213
- **Java:**
214
- ```java
215
- @Override
216
- public List<CometChatMessageTemplate> getMessageTemplates(@NonNull AdditionParameter additionParameter) {
217
- List<CometChatMessageTemplate> templates = super.getMessageTemplates(additionParameter); // keep defaults
218
- templates.add(getLocationTemplate(additionParameter));
219
- return templates;
220
- }
221
-
222
- private CometChatMessageTemplate getLocationTemplate(@NonNull AdditionParameter additionParameter) {
223
- return new CometChatMessageTemplate()
224
- .setCategory(UIKitConstants.MessageCategory.CUSTOM) // CUSTOM, not MESSAGE
225
- .setType("location") // your custom type
226
- // setOptions: Function3<Context, BaseMessage, Group, List<CometChatMessageOption>>
227
- .setOptions((context, baseMessage, group) ->
228
- ChatConfigurator.getDataSource().getCommonOptions(context, baseMessage, group, additionParameter))
229
- .setContentView(new MessagesViewHolderListener() {
230
- @Override
231
- public View createView(Context context, CometChatMessageBubble messageBubble,
232
- UIKitConstants.MessageBubbleAlignment alignment) {
233
- return LayoutInflater.from(context).inflate(R.layout.custom_location_bubble, null);
234
- }
235
- @Override
236
- public void bindView(Context context, View createdView, BaseMessage message,
237
- UIKitConstants.MessageBubbleAlignment alignment,
238
- RecyclerView.ViewHolder holder, List<BaseMessage> messageList, int position) {
239
- // bind from (CustomMessage) message customData
240
- }
241
- });
242
- }
243
- ```
244
-
245
- > You usually also want the type to count as a known type: override `getDefaultMessageTypes(...)` / `getDefaultMessageCategories(...)` and append your type / `MessageCategory.CUSTOM` (Polls does exactly this — `PollsExtensionDecorator.java:171-186`).
246
-
247
- #### Scenario 2 — Override an existing built-in type's bubble
248
-
249
- Do **not** rebuild the template list. Override the per-type template getter and mutate the template returned by `super`. The verified getters on `DataSource` are `getTextTemplate(AdditionParameter)`, `getImageTemplate`, `getVideoTemplate`, `getAudioTemplate`, `getFileTemplate` (`DataSource.java:230-244`), plus the lookup `getMessageTemplate(String category, String type, AdditionParameter)` (`DataSource.java:260`). The decorator forwards each to the wrapped source (`DataSourceDecorator.java:598`, `:652`), so call `super` then re-skin only the slot you want.
250
-
251
- **Java:**
252
- ```java
253
- @Override
254
- public CometChatMessageTemplate getTextTemplate(@NonNull AdditionParameter additionParameter) {
255
- CometChatMessageTemplate template = super.getTextTemplate(additionParameter); // keeps type/category/options
256
- template.setContentView(new MessagesViewHolderListener() { // swap only the content slot
257
- @Override
258
- public View createView(Context context, CometChatMessageBubble messageBubble,
259
- UIKitConstants.MessageBubbleAlignment alignment) {
260
- return LayoutInflater.from(context).inflate(R.layout.my_text_bubble, null);
261
- }
262
- @Override
263
- public void bindView(Context context, View createdView, BaseMessage message,
264
- UIKitConstants.MessageBubbleAlignment alignment,
265
- RecyclerView.ViewHolder holder, List<BaseMessage> messageList, int position) {
266
- ((TextView) createdView.findViewById(R.id.body)).setText(((TextMessage) message).getText());
267
- }
268
- });
269
- return template;
270
- }
271
- ```
272
-
273
- > `setContentView`/`setBubbleView`/`setHeaderView`/`setBottomView`/`setStatusInfoView`/`setFooterView`/`setReplyView` all take a `MessagesViewHolderListener` and return the template (`CometChatMessageTemplate.java:79-202`) — pick the slot you need. Overriding `getTextTemplate` reskins **every** text bubble app-wide while preserving its default options/category/type.
274
-
275
- #### Scenario 3 — Add a composer attachment option
276
-
277
- Override `getAttachmentOptions(...)`, call `super`, and append a `CometChatMessageComposerAction` (a builder — `setId/setTitle/setIcon/setOnClick`, `CometChatMessageComposerAction.java:46-127`). This is exactly `PollsExtensionDecorator.getAttachmentOptions` (`PollsExtensionDecorator.java:88-168`).
278
-
279
- **Java:**
280
- ```java
281
- @Override
282
- public List<CometChatMessageComposerAction> getAttachmentOptions(Context context, User user,
283
- Group group, HashMap<String, String> idMap, @NonNull AdditionParameter additionParameter) {
284
- List<CometChatMessageComposerAction> options =
285
- super.getAttachmentOptions(context, user, group, idMap, additionParameter); // keep camera/gallery/file/poll/…
286
- options.add(new CometChatMessageComposerAction()
287
- .setId("location")
288
- .setTitle("Send Location")
289
- .setIcon(R.drawable.ic_location)
290
- .setOnClick(() -> { /* pick + send (see below) */ }));
291
- return options;
292
- }
293
- ```
294
-
295
- #### Scenario 4 — Add a message long-press option (Forward-style)
296
-
297
- Override the **per-type** option getter — `getTextMessageOptions`, `getImageMessageOptions`, `getVideoMessageOptions`, `getAudioMessageOptions`, or `getFileMessageOptions` (`DataSource.java:49-108`) — call `super`, then append a `CometChatMessageOption`. This is exactly `MessageTranslationDecorator.getTextMessageOptions` (`MessageTranslationDecorator.java:44-59`).
298
-
299
- **Java:**
300
- ```java
301
- @Override
302
- public List<CometChatMessageOption> getTextMessageOptions(Context context,
303
- BaseMessage baseMessage, Group group, @NonNull AdditionParameter additionParameter) {
304
- List<CometChatMessageOption> options =
305
- super.getTextMessageOptions(context, baseMessage, group, additionParameter); // keep reply/copy/edit/delete/…
306
- if (baseMessage != null && baseMessage.getDeletedAt() == 0) {
307
- options.add(new CometChatMessageOption(
308
- "forward", "Forward", R.drawable.ic_forward, () -> { /* forward baseMessage */ }));
309
- }
310
- return options;
311
- }
312
- ```
313
-
314
- > `getMessageOptions(...)` (`DataSource.java:271`) is the **aggregate** dispatcher the kit calls per message; it routes to the per-type getters above. To add an option to *one* message type, override that type's getter (as above). Override `getMessageOptions` only when you want the option on **every** message type at once.
315
-
316
- > **Append rule (all four):** an override that returns a fresh `new ArrayList<>()` instead of starting from `super.*` wipes every default (bubbles, attachments, or options). Always seed from `super`.
317
-
318
- Register the decorator app-wide via `ChatConfigurator.enable(...)` (§"Register via ChatConfigurator" above) — it accepts `Function1<DataSource, DataSource>` (`ChatConfigurator.java:39`). For a packaged two-class extension (registrar + decorator), see `cometchat-android-v5-extensions`.
319
-
320
- ### Sending a custom message — use the UIKit path, not the raw SDK
321
-
322
- ```java
323
- CustomMessage message = new CustomMessage(
324
- receiverId, CometChatConstants.RECEIVER_TYPE_USER, // or RECEIVER_TYPE_GROUP
325
- "location", // matches the template type
326
- customData); // JSONObject
327
- // ✅ kit path — sets muid + sender, fires ccMessageSent → list APPENDS
328
- CometChatUIKit.sendCustomMessage(message, new CometChat.CallbackListener<CustomMessage>() {
329
- @Override public void onSuccess(CustomMessage m) { }
330
- @Override public void onError(CometChatException e) { }
331
- });
332
- // ❌ CometChat.sendCustomMessage(...) — no muid/sender/event → recipient error + realtime replace
333
- ```
334
-
335
- Verified against kit source (chat-uikit-android 5.x):
336
- - `CometChatUIKit.getDataSource()`, `ChatConfigurator.getDataSource()` / `ChatConfigurator.enable(Function1<DataSource,DataSource>)` (`ChatConfigurator.java:39,55`)
337
- - `DataSource.getMessageTemplates(AdditionParameter)` (`DataSource.java:248`); per-type template getters `getTextTemplate/getImageTemplate/getVideoTemplate/getAudioTemplate/getFileTemplate(AdditionParameter)` (`DataSource.java:230-244`); lookup `getMessageTemplate(String category, String type, AdditionParameter)` (`DataSource.java:260`)
338
- - Per-type option getters `getTextMessageOptions/getImageMessageOptions/getVideoMessageOptions/getAudioMessageOptions/getFileMessageOptions(Context, BaseMessage, Group, AdditionParameter)` (`DataSource.java:49-108`); aggregate `getMessageOptions(...)` (`DataSource.java:271`)
339
- - `DataSource.getAttachmentOptions(Context, User, Group, HashMap, AdditionParameter)` (`DataSource.java:286`)
340
- - `CometChatMessageTemplate` setters `setType/setCategory(String)`, `setOptions(Function3<Context,BaseMessage,Group,List<CometChatMessageOption>>)`, `setContentView/setBubbleView/setHeaderView/setBottomView/setStatusInfoView/setFooterView/setReplyView(MessagesViewHolderListener)` (`CometChatMessageTemplate.java:79-237`)
341
- - `CometChatMessageComposerAction` builder `setId/setTitle/setIcon/setOnClick(...)` (`CometChatMessageComposerAction.java:46-127`); `CometChatMessageOption(String,String,int,OnClick)` (`CometChatMessageOption.java:43`)
342
- - `MessagesViewHolderListener.createView(...)` + `bindView(...)` (`MessagesViewHolderListener.java:18-26`)
343
- - `CometChatUIKit.sendCustomMessage(CustomMessage, CallbackListener)`
344
- - Canonical reference decorators: `PollsExtensionDecorator.java` (template + attachment), `MessageTranslationDecorator.java` (message option)
345
-
346
- ---
347
-
348
- ## 4. Event system
349
-
350
- CometChat provides event classes for reacting to chat events. Register listeners with a unique tag.
351
-
352
- ### CometChatMessageEvents
353
-
354
- **Java:**
355
- ```java
356
- CometChatMessageEvents.addListener("unique-tag", new CometChatMessageEvents() {
357
- @Override
358
- public void ccMessageSent(BaseMessage baseMessage, int status) {
359
- // Message sent
360
- }
361
-
362
- @Override
363
- public void onTextMessageReceived(TextMessage textMessage) {
364
- // Text message received
365
- }
366
-
367
- @Override
368
- public void onMessageReactionAdded(ReactionEvent reactionEvent) {
369
- // Reaction added
370
- }
371
- });
372
-
373
- // Remove when done
374
- CometChatMessageEvents.removeListener("unique-tag");
375
- ```
376
-
377
- **Kotlin:**
378
- ```kotlin
379
- CometChatMessageEvents.addListener("unique-tag", object : CometChatMessageEvents() {
380
- override fun ccMessageSent(baseMessage: BaseMessage, status: Int) {
381
- // Message sent
382
- }
383
-
384
- override fun onTextMessageReceived(textMessage: TextMessage) {
385
- // Text message received
386
- }
387
-
388
- override fun onMessageReactionAdded(reactionEvent: ReactionEvent) {
389
- // Reaction added
390
- }
391
- })
392
-
393
- // Remove when done
394
- CometChatMessageEvents.removeListener("unique-tag")
395
- ```
396
-
397
- ### CometChatUserEvents
398
-
399
- ```java
400
- CometChatUserEvents.addUserListener("unique-tag", new CometChatUserEvents() {
401
- @Override
402
- public void ccUserBlocked(User user) { }
403
-
404
- @Override
405
- public void ccUserUnblocked(User user) { }
406
- });
407
- ```
408
-
409
- ### CometChatGroupEvents
410
-
411
- ```java
412
- CometChatGroupEvents.addGroupListener("unique-tag", new CometChatGroupEvents() {
413
- @Override
414
- public void ccGroupCreated(Group group) { }
415
- @Override
416
- public void ccGroupDeleted(Group group) { }
417
- @Override
418
- public void ccGroupMemberJoined(User joinedUser, Group joinedGroup) { }
419
- @Override
420
- public void ccGroupMemberKicked(Action action, User kicked, User kickedBy, Group from) { }
421
- @Override
422
- public void ccGroupMemberBanned(Action action, User banned, User bannedBy, Group from) { }
423
- });
424
- ```
425
-
426
- ### CometChatCallEvents
427
-
428
- ```java
429
- CometChatCallEvents.addListener("unique-tag", new CometChatCallEvents() {
430
- @Override
431
- public void ccOutgoingCall(Call call) { }
432
- @Override
433
- public void ccCallAccepted(Call call) { }
434
- @Override
435
- public void ccCallRejected(Call call) { }
436
- @Override
437
- public void ccCallEnded(Call call) { }
438
- });
439
- ```
440
-
441
- ---
442
-
443
- ## 5. Custom view slots on components
444
-
445
- Most components support custom view injection via `Function3<Context, User, Group, View>`:
446
-
447
- ```java
448
- CometChatMessageHeader header = findViewById(R.id.header);
449
- header.setSubtitleView((context, user, group) -> {
450
- TextView subtitle = new TextView(context);
451
- if (user != null) {
452
- subtitle.setText(user.getStatus().equals("online") ? "Active now" : "Offline");
453
- }
454
- return subtitle;
455
- });
456
- ```
457
-
458
- ---
459
-
460
- ## Hard rules
461
-
462
- - **Always extend `DataSourceDecorator`, never implement `DataSource` directly.** The decorator preserves existing behavior.
463
- - **Register `ChatConfigurator.enable()` AFTER `CometChatUIKit.init()` succeeds.** The configurator resets on init.
464
- - **Always remove event listeners when the Activity/Fragment is destroyed.** Use `onDestroy()` or `onDestroyView()`.
465
- - **Template view slots use `MessagesViewHolderListener`.** Implement both `createView()` and `bindView()`.
466
-
467
- ## Sound (in-app message + call sounds)
468
-
469
- The V5 UI Kit surfaces `CometChatSoundManager` for incoming/outgoing message + call sounds (mute / custom audio). **V5 is legacy/maintenance-only** — V6 is the current cohort. For call sounds see this family's `-calls` skill; verify the `CometChatSoundManager` API against the installed kit before relying on it.
@@ -1,127 +0,0 @@
1
- ---
2
- name: cometchat-android-v5-extensions
3
- description: "Extension architecture for CometChat Android — ExtensionsDataSource, decorators, built-in extensions, and how to create custom extensions."
4
- license: "MIT"
5
- compatibility: "Android 7.0+; Java 8+; Kotlin 1.8+; com.cometchat:chat-uikit-android:5.x"
6
- metadata:
7
- author: "CometChat"
8
- version: "3.0.0"
9
- tags: "cometchat android extensions datasource decorator polls stickers collaborative"
10
- ---
11
-
12
- > **Ground truth:** `com.cometchat:chat-uikit-android:5.x` (legacy/maintenance-only; +`calls-sdk-android:5.x`) — resolved AAR (javap) + `ui-kit/android`. **Official docs:** https://www.cometchat.com/docs/fundamentals/extensions-overview · **Docs MCP:** `claude mcp add --transport http cometchat-docs https://www.cometchat.com/docs/mcp` (or fetch the URL directly without MCP). Verify symbols against the installed package/source before relying on them.
13
-
14
- > **Companion skills:** `cometchat-android-v5-customization` covers DataSource decorators;
15
- > `cometchat-android-v5-features` covers the feature catalog.
16
-
17
- ## Purpose
18
-
19
- This skill covers the CometChat extension architecture — how extensions plug into the UI Kit, the built-in extensions, and how to create custom ones.
20
-
21
- ---
22
-
23
- ## Use this skill when
24
-
25
- - "How do extensions work?"
26
- - "How do I add a custom extension?"
27
- - "How do I disable an extension?"
28
- - Working with `ExtensionsDataSource` or `ExtensionDecorator`
29
-
30
- ## Do not use this skill when
31
-
32
- - Enabling a backend extension or AI feature → use `cometchat-android-v5-features` (which routes to `cometchat apply-feature <id> --app-id <X>`)
33
- - Writing custom message templates → use `cometchat-android-v5-customization`
34
-
35
- ---
36
-
37
- ## 1. Extension architecture
38
-
39
- Extensions are split into two class types:
40
-
41
- - **Registrar** classes (e.g. `PollsExtension`, `StickerExtension`) — extend `ExtensionsDataSource`. These are what you pass to `setExtensions(...)` to enable a built-in extension.
42
- - **Decorator** classes (e.g. `PollsExtensionDecorator`, `StickerExtensionDecorator`) — extend `DataSourceDecorator`. These are the runtime decorators that wrap the active `DataSource` chain. The kit creates them internally; you don't construct them directly.
43
-
44
- ```
45
- ChatConfigurator.getDataSource()
46
- └── SmartRepliesExtensionDecorator (created by SmartRepliesExtension)
47
- └── PollsExtensionDecorator (created by PollsExtension)
48
- └── StickerExtensionDecorator (created by StickerExtension)
49
- └── MessagesDataSource (base)
50
- ```
51
-
52
- ## 2. Built-in extensions
53
-
54
- | Extension | Package | What it adds |
55
- |---|---|---|
56
- | Polls | `com.cometchat.chatuikit.extensions.polls` | Poll creation and voting in messages |
57
- | Stickers | `com.cometchat.chatuikit.extensions.sticker` | Sticker keyboard and sticker bubbles |
58
- | Collaborative Document | `com.cometchat.chatuikit.extensions.collaborative` | Shared document editing |
59
- | Collaborative Whiteboard | `com.cometchat.chatuikit.extensions.collaborative` | Shared whiteboard |
60
- | Smart Replies | `com.cometchat.chatuikit.extensions.smartreplies` | AI-powered reply suggestions |
61
- | Message Translation | `com.cometchat.chatuikit.extensions.messagetranslation` | Translate messages |
62
- | Text Moderation | `com.cometchat.chatuikit.extensions.textmoderation` | Profanity filtering |
63
- | Thumbnail Generation | `com.cometchat.chatuikit.extensions.thumbnailgeneration` | Image thumbnails |
64
-
65
- ## 3. Enabling/disabling extensions
66
-
67
- Extensions are enabled by default. To customize which extensions are active, pass a custom list to `UIKitSettingsBuilder`:
68
-
69
- ```java
70
- List<ExtensionsDataSource> extensions = new ArrayList<>();
71
- extensions.add(new PollsExtension()); // registrar, NOT PollsExtensionDecorator
72
- extensions.add(new StickerExtension()); // registrar, NOT StickerExtensionDecorator
73
- extensions.add(new SmartRepliesExtension());
74
- // Omit extensions you don't want
75
-
76
- UIKitSettings settings = new UIKitSettings.UIKitSettingsBuilder()
77
- .setAppId(APP_ID)
78
- .setRegion(REGION)
79
- .setAuthKey(AUTH_KEY)
80
- .setExtensions(extensions)
81
- .build();
82
- ```
83
-
84
- > **Why not `PollsExtensionDecorator`?** `*ExtensionDecorator` extends `DataSourceDecorator`, not `ExtensionsDataSource` — so it won't compile when added to a `List<ExtensionsDataSource>`. The kit's runtime decorator chain is built by the registrar's `enable()` method internally; you don't add decorators directly.
85
-
86
- ## 4. Creating a custom extension
87
-
88
- A custom extension has TWO classes:
89
-
90
- 1. A **registrar** that extends `ExtensionsDataSource` (gets added to `setExtensions(...)`)
91
- 2. A **decorator** that extends `DataSourceDecorator` (created by the registrar via `ChatConfigurator.enable(...)`)
92
-
93
- ```java
94
- // 1. Decorator — extends DataSourceDecorator, overrides per-message behavior
95
- public class MyExtensionDecorator extends DataSourceDecorator {
96
- public MyExtensionDecorator(DataSource dataSource) {
97
- super(dataSource);
98
- }
99
- // Override methods to add custom behavior
100
- }
101
-
102
- // 2. Registrar — extends ExtensionsDataSource, implements getExtensionId() + addExtension()
103
- public class MyExtension extends ExtensionsDataSource {
104
- @Override
105
- public String getExtensionId() {
106
- return "my-custom-extension";
107
- }
108
-
109
- @Override
110
- public void addExtension() {
111
- // addExtension() is the ABSTRACT method you must implement. The inherited
112
- // concrete enable() calls it after confirming the extension is on (dashboard).
113
- ChatConfigurator.enable(dataSource -> new MyExtensionDecorator(dataSource));
114
- }
115
- }
116
-
117
- // Then add the registrar to UIKitSettings:
118
- extensions.add(new MyExtension());
119
- ```
120
-
121
- ---
122
-
123
- ## Hard rules
124
-
125
- - **Two classes per extension.** A registrar (`ExtensionsDataSource`, implements abstract `getExtensionId()` + `addExtension()`; `enable()` is inherited) and a decorator (`DataSourceDecorator`, holds the per-message override). `setExtensions(...)` wants registrars; the chain builds decorators automatically.
126
- - **Register after init.** `ChatConfigurator.enable()` must be called after `CometChatUIKit.init()` succeeds.
127
- - **Backend extension toggle still applies.** Even if an extension is registered client-side, it needs to be enabled on the app's backend. Use `cometchat apply-feature <id> --app-id <X>` (the CLI hits the dashboard API). For dashboard-only extensions (Giphy / Stipop / Tenor / Chatwoot / Intercom — those needing third-party API keys), the user has to enter the third-party config in the dashboard manually.