@cometchat/skills 4.4.1 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (489) hide show
  1. package/.claude-plugin/marketplace.json +55 -0
  2. package/.claude-plugin/plugin.json +14 -0
  3. package/CHANGELOG.md +36 -0
  4. package/README.md +41 -163
  5. package/RULES.md +114 -0
  6. package/bin/cometchat-skills.mjs +1180 -0
  7. package/bin/legacy-skills.json +95 -0
  8. package/catalogs/android-v6.json +1646 -0
  9. package/catalogs/flutter-v6.json +651 -0
  10. package/catalogs/ios-v5.json +1383 -0
  11. package/catalogs/rn-calls-v5.json +134 -0
  12. package/catalogs/rn-calls-v5.symbols.txt +58 -0
  13. package/catalogs/rn-sdk-v4.json +672 -0
  14. package/catalogs/rn-v5.json +449 -0
  15. package/catalogs/rn-v5.symbols.txt +216 -0
  16. package/catalogs/sdk-android-v5.json +514 -0
  17. package/contracts.android-calls-v5.json +122 -0
  18. package/contracts.android-v6.json +135 -0
  19. package/contracts.angular-v5.json +694 -0
  20. package/contracts.flutter-calls-v5.json +77 -0
  21. package/contracts.flutter-v6.json +126 -0
  22. package/contracts.ios-calls-v5.json +67 -0
  23. package/contracts.ios-v5.json +436 -0
  24. package/contracts.json +82 -0
  25. package/contracts.rn-calls-v5.json +77 -0
  26. package/contracts.rn-v5.json +727 -0
  27. package/contracts.sdk-android-v5.json +15 -0
  28. package/contracts.web-calls-v5.json +45 -0
  29. package/features.android-calls-v5.json +246 -0
  30. package/features.android-v6.json +65 -0
  31. package/features.angular-v5.json +521 -0
  32. package/features.flutter-calls-v5.json +286 -0
  33. package/features.flutter-v6.json +484 -0
  34. package/features.ios-calls-v5.json +236 -0
  35. package/features.ios-v5.json +573 -0
  36. package/features.json +61 -0
  37. package/features.rn-calls-v5.json +187 -0
  38. package/features.rn-v5.json +614 -0
  39. package/features.sdk-android-v5.json +40 -0
  40. package/features.sdk-jsv4.json +24 -0
  41. package/features.web-calls-v5.json +108 -0
  42. package/package.json +151 -74
  43. package/peers.yaml +312 -0
  44. package/registry/README.md +31 -0
  45. package/registry/android-calls-v5.json +54 -0
  46. package/registry/android-v6.json +137 -0
  47. package/registry/angular-v5.json +114 -0
  48. package/registry/flutter-calls-v5.json +54 -0
  49. package/registry/flutter-v6.json +119 -0
  50. package/registry/ios-calls-v5.json +59 -0
  51. package/registry/ios-v5.json +97 -0
  52. package/registry/rn-calls-v5.json +59 -0
  53. package/registry/rn-v5.json +129 -0
  54. package/registry/sdk-android-v5.json +53 -0
  55. package/registry/sdk-jsv4.json +53 -0
  56. package/registry/web-calls-v5.json +54 -0
  57. package/registry/web-v7.json +99 -0
  58. package/skills/cometchat/SKILL.md +42 -2096
  59. package/skills/cometchat-android-v5-calls-sdk/SKILL.md +206 -0
  60. package/skills/cometchat-android-v5-calls-sdk/references/build-truth.md +63 -0
  61. package/skills/cometchat-android-v5-calls-sdk/references/docs-map.md +119 -0
  62. package/skills/cometchat-android-v5-calls-sdk/references/method-map.md +53 -0
  63. package/skills/cometchat-android-v5-calls-sdk/references/pitfalls.md +72 -0
  64. package/skills/cometchat-android-v5-calls-sdk/references/ringing.md +92 -0
  65. package/skills/cometchat-android-v5-calls-sdk/references/user-switch.md +90 -0
  66. package/skills/cometchat-android-v5-sdk/SKILL.md +127 -0
  67. package/skills/cometchat-android-v5-sdk/references/app-surface.md +88 -0
  68. package/skills/cometchat-android-v5-sdk/references/docs-map.md +91 -0
  69. package/skills/cometchat-android-v6-builder-settings/SKILL.md +51 -137
  70. package/skills/cometchat-android-v6-calls/SKILL.md +128 -411
  71. package/skills/cometchat-android-v6-compose-components/SKILL.md +84 -194
  72. package/skills/cometchat-android-v6-compose-customization/SKILL.md +66 -411
  73. package/skills/cometchat-android-v6-compose-placement/SKILL.md +154 -237
  74. package/skills/cometchat-android-v6-core/SKILL.md +236 -672
  75. package/skills/cometchat-android-v6-core/references/anti-patterns.md +31 -0
  76. package/skills/cometchat-android-v6-core/references/component-props.md +168 -0
  77. package/skills/cometchat-android-v6-core/references/docs-map.md +153 -0
  78. package/skills/cometchat-android-v6-core/references/layout.md +112 -0
  79. package/skills/cometchat-android-v6-core/references/lifecycle.md +75 -0
  80. package/skills/cometchat-android-v6-core/references/setup-credentials.md +105 -0
  81. package/skills/cometchat-android-v6-core/references/troubleshooting.md +36 -0
  82. package/skills/cometchat-android-v6-events/SKILL.md +46 -184
  83. package/skills/cometchat-android-v6-extensions/SKILL.md +39 -179
  84. package/skills/cometchat-android-v6-features/SKILL.md +74 -143
  85. package/skills/cometchat-android-v6-kotlin-components/SKILL.md +75 -193
  86. package/skills/cometchat-android-v6-kotlin-customization/SKILL.md +67 -419
  87. package/skills/cometchat-android-v6-kotlin-placement/SKILL.md +77 -223
  88. package/skills/cometchat-android-v6-migration/SKILL.md +67 -378
  89. package/skills/cometchat-android-v6-production/SKILL.md +40 -179
  90. package/skills/cometchat-android-v6-push/SKILL.md +39 -289
  91. package/skills/cometchat-android-v6-testing/SKILL.md +50 -265
  92. package/skills/cometchat-android-v6-troubleshooting/SKILL.md +70 -254
  93. package/skills/cometchat-angular-v5-calls/SKILL.md +193 -0
  94. package/skills/cometchat-angular-v5-components/SKILL.md +131 -0
  95. package/skills/cometchat-angular-v5-components/references/catalog.md +111 -0
  96. package/skills/cometchat-angular-v5-components/references/host-composed.md +46 -0
  97. package/skills/cometchat-angular-v5-core/SKILL.md +300 -0
  98. package/skills/cometchat-angular-v5-core/references/anti-patterns.md +49 -0
  99. package/skills/cometchat-angular-v5-core/references/component-props.md +55 -0
  100. package/skills/cometchat-angular-v5-core/references/dependencies.md +66 -0
  101. package/skills/cometchat-angular-v5-core/references/docs-map.md +132 -0
  102. package/skills/cometchat-angular-v5-core/references/layout.md +64 -0
  103. package/skills/cometchat-angular-v5-core/references/lifecycle.md +202 -0
  104. package/skills/cometchat-angular-v5-core/references/setup-credentials.md +137 -0
  105. package/skills/cometchat-angular-v5-core/references/theming.md +70 -0
  106. package/skills/cometchat-angular-v5-core/references/troubleshooting.md +27 -0
  107. package/skills/cometchat-angular-v5-customization/SKILL.md +94 -0
  108. package/skills/cometchat-angular-v5-features/SKILL.md +107 -0
  109. package/skills/cometchat-angular-v5-features/references/custom-messages.md +133 -0
  110. package/skills/cometchat-angular-v5-features/references/formatters.md +28 -0
  111. package/skills/cometchat-angular-v5-features/references/host-composed-extensions.md +85 -0
  112. package/skills/cometchat-angular-v5-migration/SKILL.md +40 -0
  113. package/skills/cometchat-angular-v5-migration/references/migration-guide.md +165 -0
  114. package/skills/cometchat-angular-v5-patterns/SKILL.md +107 -0
  115. package/skills/cometchat-angular-v5-placement/SKILL.md +133 -0
  116. package/skills/cometchat-angular-v5-placement/references/combined-app.md +174 -0
  117. package/skills/cometchat-angular-v5-placement/references/core-surface.md +199 -0
  118. package/skills/cometchat-angular-v5-production/SKILL.md +101 -0
  119. package/skills/cometchat-angular-v5-push/SKILL.md +61 -0
  120. package/skills/cometchat-angular-v5-testing/SKILL.md +112 -0
  121. package/skills/cometchat-angular-v5-troubleshooting/SKILL.md +96 -0
  122. package/skills/cometchat-flutter-v5-sdk/SKILL.md +188 -0
  123. package/skills/cometchat-flutter-v5-sdk/references/doc-corrections.md +55 -0
  124. package/skills/cometchat-flutter-v5-sdk/references/docs-map.md +211 -0
  125. package/skills/cometchat-flutter-v5-sdk/references/platform-notes.md +48 -0
  126. package/skills/cometchat-flutter-v5-sdk/references/transcription.md +87 -0
  127. package/skills/cometchat-flutter-v6-calls/SKILL.md +75 -387
  128. package/skills/cometchat-flutter-v6-components/SKILL.md +88 -361
  129. package/skills/cometchat-flutter-v6-core/SKILL.md +154 -593
  130. package/skills/cometchat-flutter-v6-core/references/anti-patterns.md +55 -0
  131. package/skills/cometchat-flutter-v6-core/references/docs-map.md +143 -0
  132. package/skills/cometchat-flutter-v6-core/references/layout.md +45 -0
  133. package/skills/cometchat-flutter-v6-core/references/lifecycle.md +87 -0
  134. package/skills/cometchat-flutter-v6-core/references/setup-credentials.md +84 -0
  135. package/skills/cometchat-flutter-v6-core/references/troubleshooting.md +26 -0
  136. package/skills/cometchat-flutter-v6-customization/SKILL.md +70 -712
  137. package/skills/cometchat-flutter-v6-events/SKILL.md +79 -174
  138. package/skills/cometchat-flutter-v6-features/SKILL.md +55 -394
  139. package/skills/cometchat-flutter-v6-migration/SKILL.md +68 -367
  140. package/skills/cometchat-flutter-v6-migration/references/migration-guide.md +131 -0
  141. package/skills/cometchat-flutter-v6-patterns/SKILL.md +61 -0
  142. package/skills/cometchat-flutter-v6-placement/SKILL.md +94 -381
  143. package/skills/cometchat-flutter-v6-production/SKILL.md +58 -615
  144. package/skills/cometchat-flutter-v6-push/SKILL.md +46 -455
  145. package/skills/cometchat-flutter-v6-testing/SKILL.md +68 -299
  146. package/skills/cometchat-flutter-v6-troubleshooting/SKILL.md +54 -878
  147. package/skills/cometchat-ios-calls/SKILL.md +105 -511
  148. package/skills/cometchat-ios-components/SKILL.md +44 -834
  149. package/skills/cometchat-ios-core/SKILL.md +181 -1068
  150. package/skills/cometchat-ios-core/references/anti-patterns.md +80 -0
  151. package/skills/cometchat-ios-core/references/docs-map.md +123 -0
  152. package/skills/cometchat-ios-core/references/install.md +23 -0
  153. package/skills/cometchat-ios-core/references/layout.md +186 -0
  154. package/skills/cometchat-ios-core/references/setup-credentials.md +197 -0
  155. package/skills/cometchat-ios-core/references/swiftui.md +91 -0
  156. package/skills/cometchat-ios-core/references/troubleshooting.md +100 -0
  157. package/skills/cometchat-ios-customization/SKILL.md +33 -968
  158. package/skills/cometchat-ios-features/SKILL.md +29 -738
  159. package/skills/cometchat-ios-migration/SKILL.md +39 -0
  160. package/skills/cometchat-ios-placement/SKILL.md +51 -729
  161. package/skills/cometchat-ios-push/SKILL.md +24 -602
  162. package/skills/cometchat-ios-v5-sdk/SKILL.md +161 -0
  163. package/skills/cometchat-ios-v5-sdk/references/docs-map.md +326 -0
  164. package/skills/cometchat-js-v5-sdk/SKILL.md +95 -0
  165. package/skills/cometchat-js-v5-sdk/references/docs-map.md +114 -0
  166. package/skills/cometchat-onboarding/SKILL.md +89 -0
  167. package/skills/cometchat-onboarding/references/archetypes.md +51 -0
  168. package/skills/cometchat-onboarding/references/calling-first.md +77 -0
  169. package/skills/cometchat-onboarding/references/not-in-this-pack.md +8 -0
  170. package/skills/cometchat-onboarding/references/plan-artifact.md +133 -0
  171. package/skills/cometchat-onboarding/references/platforms.md +90 -0
  172. package/skills/cometchat-react-native-bare-patterns/SKILL.md +120 -0
  173. package/skills/cometchat-react-native-calls/SKILL.md +200 -0
  174. package/skills/cometchat-react-native-components/SKILL.md +142 -0
  175. package/skills/cometchat-react-native-core/SKILL.md +313 -0
  176. package/skills/cometchat-react-native-core/references/anti-patterns.md +79 -0
  177. package/skills/cometchat-react-native-core/references/component-props.md +105 -0
  178. package/skills/cometchat-react-native-core/references/dependencies.md +62 -0
  179. package/skills/cometchat-react-native-core/references/docs-map.md +126 -0
  180. package/skills/cometchat-react-native-core/references/layout.md +61 -0
  181. package/skills/cometchat-react-native-core/references/lifecycle.md +64 -0
  182. package/skills/cometchat-react-native-core/references/setup-credentials.md +39 -0
  183. package/skills/cometchat-react-native-customization/SKILL.md +198 -0
  184. package/skills/cometchat-react-native-expo-patterns/SKILL.md +116 -0
  185. package/skills/cometchat-react-native-features/SKILL.md +122 -0
  186. package/skills/cometchat-react-native-migration/SKILL.md +103 -0
  187. package/skills/cometchat-react-native-placement/SKILL.md +158 -0
  188. package/skills/cometchat-react-native-production/SKILL.md +78 -0
  189. package/skills/cometchat-react-native-push/SKILL.md +88 -0
  190. package/skills/cometchat-react-native-sdk/SKILL.md +126 -0
  191. package/skills/cometchat-react-native-sdk/references/method-map.md +239 -0
  192. package/skills/cometchat-react-native-sdk/references/page-map.md +96 -0
  193. package/skills/cometchat-react-native-testing/SKILL.md +94 -0
  194. package/skills/cometchat-react-native-troubleshooting/SKILL.md +116 -0
  195. package/skills/cometchat-react-native-v5-sdk/SKILL.md +150 -0
  196. package/skills/cometchat-react-native-v5-sdk/references/docs-map.md +127 -0
  197. package/skills/cometchat-react-native-v5-sdk/references/ringing-voip.md +369 -0
  198. package/skills/cometchat-react-v7-calls/SKILL.md +75 -0
  199. package/skills/cometchat-react-v7-components/SKILL.md +72 -0
  200. package/skills/cometchat-react-v7-core/SKILL.md +101 -0
  201. package/skills/cometchat-react-v7-core/references/anti-patterns.md +19 -0
  202. package/skills/cometchat-react-v7-core/references/component-props.md +82 -0
  203. package/skills/cometchat-react-v7-core/references/dependencies.md +23 -0
  204. package/skills/cometchat-react-v7-core/references/docs-map.md +117 -0
  205. package/skills/cometchat-react-v7-core/references/i18n-rtl-a11y.md +22 -0
  206. package/skills/cometchat-react-v7-core/references/layout.md +158 -0
  207. package/skills/cometchat-react-v7-core/references/lifecycle.md +74 -0
  208. package/skills/cometchat-react-v7-core/references/setup-credentials.md +58 -0
  209. package/skills/cometchat-react-v7-core/references/ssr.md +11 -0
  210. package/skills/cometchat-react-v7-core/references/theming.md +52 -0
  211. package/skills/cometchat-react-v7-core/references/troubleshooting.md +28 -0
  212. package/skills/cometchat-react-v7-customization/SKILL.md +84 -0
  213. package/skills/cometchat-react-v7-features/SKILL.md +92 -0
  214. package/skills/cometchat-react-v7-migration/SKILL.md +39 -0
  215. package/skills/cometchat-react-v7-migration/references/migration-guide.md +119 -0
  216. package/skills/cometchat-react-v7-patterns/SKILL.md +43 -0
  217. package/skills/cometchat-react-v7-placement/SKILL.md +106 -0
  218. package/skills/cometchat-react-v7-placement/references/recipes.md +354 -0
  219. package/skills/cometchat-react-v7-push/SKILL.md +53 -0
  220. package/test-suite/README.md +70 -0
  221. package/test-suite/catalogs/android-calls-v5.json +830 -0
  222. package/test-suite/catalogs/android-calls-v5.symbols.txt +499 -0
  223. package/test-suite/catalogs/android-v6.json +1646 -0
  224. package/test-suite/catalogs/android-v6.symbols.txt +298 -0
  225. package/test-suite/catalogs/angular-v5.json +7587 -0
  226. package/test-suite/catalogs/flutter-calls-v5.json +196 -0
  227. package/test-suite/catalogs/flutter-calls-v5.symbols.txt +59 -0
  228. package/test-suite/catalogs/flutter-v6.json +651 -0
  229. package/test-suite/catalogs/ios-calls-v5.json +158 -0
  230. package/test-suite/catalogs/ios-calls-v5.symbols.txt +70 -0
  231. package/test-suite/catalogs/ios-v5.json +1383 -0
  232. package/test-suite/catalogs/ios-v5.symbols.txt +699 -0
  233. package/test-suite/catalogs/rn-calls-v5.json +134 -0
  234. package/test-suite/catalogs/rn-sdk-v4.json +672 -0
  235. package/test-suite/catalogs/rn-v5.json +449 -0
  236. package/test-suite/catalogs/sdk-android-v5.json +514 -0
  237. package/test-suite/catalogs/sdk-android-v5.symbols.txt +254 -0
  238. package/test-suite/catalogs/sdk-jsv4.json +800 -0
  239. package/test-suite/catalogs/web-calls-v5.json +195 -0
  240. package/test-suite/catalogs/web-v7.json +1243 -0
  241. package/test-suite/scripts/build-registry.mjs +113 -0
  242. package/test-suite/scripts/catalog-refresh-dart.mjs +151 -0
  243. package/test-suite/scripts/catalog-refresh.mjs +100 -0
  244. package/test-suite/scripts/lint-skills.mjs +909 -0
  245. package/test-suite/scripts/measure-tokens.mjs +169 -0
  246. package/test-suite/scripts/typecheck-fences-dart.mjs +437 -0
  247. package/test-suite/scripts/typecheck-fences-kotlin.mjs +269 -0
  248. package/test-suite/scripts/typecheck-fences.mjs +206 -0
  249. package/test-suite/scripts/verify-catalog.mjs +242 -0
  250. package/test-suite/scripts/verify-contract-fences.mjs +94 -0
  251. package/test-suite/scripts/verify-detection.mjs +178 -0
  252. package/test-suite/scripts/verify-docs-base.mjs +91 -0
  253. package/test-suite/scripts/verify-family-agnostic.mjs +130 -0
  254. package/test-suite/scripts/verify-golden-path.mjs +138 -0
  255. package/test-suite/scripts/verify-oracle-components.mjs +133 -0
  256. package/test-suite/scripts/verify-template-bindings.mjs +148 -0
  257. package/test-suite/typecheck/angular-v5/package.json +21 -0
  258. package/test-suite/typecheck/angular-v5/tsconfig.json +21 -0
  259. package/test-suite/typecheck/flutter-v6/analysis_options.yaml +25 -0
  260. package/test-suite/typecheck/flutter-v6/pubspec.yaml +21 -0
  261. package/test-suite/typecheck/web-v7/package.json +18 -0
  262. package/test-suite/typecheck/web-v7/tsconfig.json +19 -0
  263. package/bin/install.js +0 -1003
  264. package/skills/.claude-plugin/marketplace.json +0 -86
  265. package/skills/cometchat/references/asking-questions.md +0 -48
  266. package/skills/cometchat-a11y/SKILL.md +0 -477
  267. package/skills/cometchat-android-v5/SKILL.md +0 -121
  268. package/skills/cometchat-android-v5-calls/SKILL.md +0 -427
  269. package/skills/cometchat-android-v5-calls/references/README.md +0 -53
  270. package/skills/cometchat-android-v5-calls/references/add-calls-to-existing-chat.md +0 -197
  271. package/skills/cometchat-android-v5-calls/references/audio-controls.md +0 -91
  272. package/skills/cometchat-android-v5-calls/references/background-handling.md +0 -168
  273. package/skills/cometchat-android-v5-calls/references/call-layouts.md +0 -131
  274. package/skills/cometchat-android-v5-calls/references/call-logs.md +0 -113
  275. package/skills/cometchat-android-v5-calls/references/call-session.md +0 -274
  276. package/skills/cometchat-android-v5-calls/references/custom-ui.md +0 -150
  277. package/skills/cometchat-android-v5-calls/references/event-listeners.md +0 -123
  278. package/skills/cometchat-android-v5-calls/references/group-calls.md +0 -205
  279. package/skills/cometchat-android-v5-calls/references/idle-timeout.md +0 -117
  280. package/skills/cometchat-android-v5-calls/references/in-call-chat.md +0 -134
  281. package/skills/cometchat-android-v5-calls/references/join-session.md +0 -120
  282. package/skills/cometchat-android-v5-calls/references/migration-v4-to-v5.md +0 -222
  283. package/skills/cometchat-android-v5-calls/references/participant-management.md +0 -110
  284. package/skills/cometchat-android-v5-calls/references/picture-in-picture.md +0 -106
  285. package/skills/cometchat-android-v5-calls/references/raise-hand.md +0 -248
  286. package/skills/cometchat-android-v5-calls/references/recording.md +0 -101
  287. package/skills/cometchat-android-v5-calls/references/ringing-integration.md +0 -152
  288. package/skills/cometchat-android-v5-calls/references/screen-sharing.md +0 -78
  289. package/skills/cometchat-android-v5-calls/references/server-fcm-voip.md +0 -215
  290. package/skills/cometchat-android-v5-calls/references/session-settings.md +0 -121
  291. package/skills/cometchat-android-v5-calls/references/setup.md +0 -137
  292. package/skills/cometchat-android-v5-calls/references/share-invite.md +0 -156
  293. package/skills/cometchat-android-v5-calls/references/video-controls.md +0 -87
  294. package/skills/cometchat-android-v5-calls/references/voip-calling.md +0 -526
  295. package/skills/cometchat-android-v5-components/SKILL.md +0 -431
  296. package/skills/cometchat-android-v5-core/SKILL.md +0 -486
  297. package/skills/cometchat-android-v5-customization/SKILL.md +0 -469
  298. package/skills/cometchat-android-v5-extensions/SKILL.md +0 -127
  299. package/skills/cometchat-android-v5-features/SKILL.md +0 -131
  300. package/skills/cometchat-android-v5-placement/SKILL.md +0 -277
  301. package/skills/cometchat-android-v5-production/SKILL.md +0 -95
  302. package/skills/cometchat-android-v5-push/SKILL.md +0 -619
  303. package/skills/cometchat-android-v5-testing/SKILL.md +0 -188
  304. package/skills/cometchat-android-v5-theming/SKILL.md +0 -167
  305. package/skills/cometchat-android-v5-troubleshooting/SKILL.md +0 -74
  306. package/skills/cometchat-android-v6/SKILL.md +0 -108
  307. package/skills/cometchat-android-v6-calls/references/add-calls-to-existing-chat.md +0 -97
  308. package/skills/cometchat-android-v6-calls/references/advanced-features.md +0 -87
  309. package/skills/cometchat-android-v6-calls/references/call-layouts.md +0 -100
  310. package/skills/cometchat-android-v6-calls/references/call-session.md +0 -163
  311. package/skills/cometchat-android-v6-calls/references/device-management.md +0 -172
  312. package/skills/cometchat-android-v6-calls/references/group-calls.md +0 -191
  313. package/skills/cometchat-android-v6-calls/references/idle-timeout.md +0 -110
  314. package/skills/cometchat-android-v6-calls/references/in-call-chat.md +0 -141
  315. package/skills/cometchat-android-v6-calls/references/raise-hand.md +0 -188
  316. package/skills/cometchat-android-v6-calls/references/ringing-integration.md +0 -176
  317. package/skills/cometchat-android-v6-calls/references/server-fcm-voip.md +0 -127
  318. package/skills/cometchat-android-v6-calls/references/share-invite.md +0 -105
  319. package/skills/cometchat-android-v6-compose-theming/SKILL.md +0 -250
  320. package/skills/cometchat-android-v6-kotlin-theming/SKILL.md +0 -233
  321. package/skills/cometchat-angular-calls/SKILL.md +0 -378
  322. package/skills/cometchat-angular-calls/references/add-calls-to-existing-chat.md +0 -96
  323. package/skills/cometchat-angular-calls/references/call-layouts.md +0 -123
  324. package/skills/cometchat-angular-calls/references/call-session.md +0 -167
  325. package/skills/cometchat-angular-calls/references/custom-ui.md +0 -239
  326. package/skills/cometchat-angular-calls/references/device-management.md +0 -154
  327. package/skills/cometchat-angular-calls/references/group-calls.md +0 -433
  328. package/skills/cometchat-angular-calls/references/idle-timeout.md +0 -161
  329. package/skills/cometchat-angular-calls/references/in-call-chat.md +0 -148
  330. package/skills/cometchat-angular-calls/references/lazy-loading-pitfalls.md +0 -205
  331. package/skills/cometchat-angular-calls/references/migration-v4-to-v5.md +0 -53
  332. package/skills/cometchat-angular-calls/references/ngzone-and-async-callbacks.md +0 -184
  333. package/skills/cometchat-angular-calls/references/picture-in-picture.md +0 -285
  334. package/skills/cometchat-angular-calls/references/raise-hand.md +0 -172
  335. package/skills/cometchat-angular-calls/references/recording-screen-share.md +0 -260
  336. package/skills/cometchat-angular-calls/references/ringing-integration.md +0 -133
  337. package/skills/cometchat-angular-calls/references/server-web-push-vapid.md +0 -100
  338. package/skills/cometchat-angular-calls/references/share-invite.md +0 -122
  339. package/skills/cometchat-angular-calls/references/virtual-background.md +0 -29
  340. package/skills/cometchat-angular-components/SKILL.md +0 -235
  341. package/skills/cometchat-angular-core/SKILL.md +0 -386
  342. package/skills/cometchat-angular-customization/SKILL.md +0 -616
  343. package/skills/cometchat-angular-features/SKILL.md +0 -329
  344. package/skills/cometchat-angular-patterns/SKILL.md +0 -256
  345. package/skills/cometchat-angular-placement/SKILL.md +0 -314
  346. package/skills/cometchat-angular-production/SKILL.md +0 -564
  347. package/skills/cometchat-angular-push/SKILL.md +0 -389
  348. package/skills/cometchat-angular-testing/SKILL.md +0 -605
  349. package/skills/cometchat-angular-theming/SKILL.md +0 -290
  350. package/skills/cometchat-angular-troubleshooting/SKILL.md +0 -364
  351. package/skills/cometchat-astro-patterns/SKILL.md +0 -708
  352. package/skills/cometchat-calls/SKILL.md +0 -364
  353. package/skills/cometchat-calls/references/use-case-broadcast.md +0 -199
  354. package/skills/cometchat-calls/references/use-case-marketplace.md +0 -157
  355. package/skills/cometchat-calls/references/use-case-support.md +0 -189
  356. package/skills/cometchat-calls/references/use-case-team.md +0 -180
  357. package/skills/cometchat-calls/references/use-case-telehealth.md +0 -153
  358. package/skills/cometchat-components/SKILL.md +0 -1142
  359. package/skills/cometchat-core/SKILL.md +0 -1048
  360. package/skills/cometchat-customization/SKILL.md +0 -580
  361. package/skills/cometchat-customization/references/component-catalog.md +0 -236
  362. package/skills/cometchat-features/SKILL.md +0 -861
  363. package/skills/cometchat-flutter-v5/SKILL.md +0 -173
  364. package/skills/cometchat-flutter-v5-calls/SKILL.md +0 -453
  365. package/skills/cometchat-flutter-v5-calls/references/add-calls-to-existing-chat.md +0 -193
  366. package/skills/cometchat-flutter-v5-calls/references/call-layouts.md +0 -103
  367. package/skills/cometchat-flutter-v5-calls/references/call-session.md +0 -285
  368. package/skills/cometchat-flutter-v5-calls/references/device-management.md +0 -124
  369. package/skills/cometchat-flutter-v5-calls/references/group-calls.md +0 -181
  370. package/skills/cometchat-flutter-v5-calls/references/idle-timeout.md +0 -99
  371. package/skills/cometchat-flutter-v5-calls/references/in-call-chat.md +0 -135
  372. package/skills/cometchat-flutter-v5-calls/references/migration-v4-to-v5.md +0 -210
  373. package/skills/cometchat-flutter-v5-calls/references/raise-hand.md +0 -255
  374. package/skills/cometchat-flutter-v5-calls/references/ringing-integration.md +0 -196
  375. package/skills/cometchat-flutter-v5-calls/references/server-push-bridge.md +0 -101
  376. package/skills/cometchat-flutter-v5-calls/references/share-invite.md +0 -148
  377. package/skills/cometchat-flutter-v5-conversations/SKILL.md +0 -118
  378. package/skills/cometchat-flutter-v5-core/SKILL.md +0 -239
  379. package/skills/cometchat-flutter-v5-customization/SKILL.md +0 -358
  380. package/skills/cometchat-flutter-v5-events/SKILL.md +0 -156
  381. package/skills/cometchat-flutter-v5-messages/SKILL.md +0 -259
  382. package/skills/cometchat-flutter-v5-production/SKILL.md +0 -216
  383. package/skills/cometchat-flutter-v5-push/SKILL.md +0 -285
  384. package/skills/cometchat-flutter-v5-testing/SKILL.md +0 -401
  385. package/skills/cometchat-flutter-v5-theming/SKILL.md +0 -161
  386. package/skills/cometchat-flutter-v5-troubleshooting/SKILL.md +0 -130
  387. package/skills/cometchat-flutter-v5-users-groups/SKILL.md +0 -152
  388. package/skills/cometchat-flutter-v6/SKILL.md +0 -446
  389. package/skills/cometchat-flutter-v6-calls/references/add-calls-to-existing-chat.md +0 -136
  390. package/skills/cometchat-flutter-v6-calls/references/advanced-features.md +0 -89
  391. package/skills/cometchat-flutter-v6-calls/references/call-layouts.md +0 -105
  392. package/skills/cometchat-flutter-v6-calls/references/call-session.md +0 -229
  393. package/skills/cometchat-flutter-v6-calls/references/device-management.md +0 -105
  394. package/skills/cometchat-flutter-v6-calls/references/group-calls.md +0 -190
  395. package/skills/cometchat-flutter-v6-calls/references/idle-timeout.md +0 -88
  396. package/skills/cometchat-flutter-v6-calls/references/in-call-chat.md +0 -125
  397. package/skills/cometchat-flutter-v6-calls/references/raise-hand.md +0 -275
  398. package/skills/cometchat-flutter-v6-calls/references/ringing-integration.md +0 -171
  399. package/skills/cometchat-flutter-v6-calls/references/server-push-bridge.md +0 -93
  400. package/skills/cometchat-flutter-v6-calls/references/share-invite.md +0 -102
  401. package/skills/cometchat-flutter-v6-conversations/SKILL.md +0 -238
  402. package/skills/cometchat-flutter-v6-messages/SKILL.md +0 -384
  403. package/skills/cometchat-flutter-v6-theming/SKILL.md +0 -293
  404. package/skills/cometchat-flutter-v6-users-groups/SKILL.md +0 -224
  405. package/skills/cometchat-i18n/SKILL.md +0 -419
  406. package/skills/cometchat-ios/SKILL.md +0 -325
  407. package/skills/cometchat-ios-calls/references/add-calls-to-existing-chat.md +0 -174
  408. package/skills/cometchat-ios-calls/references/audio-modes-and-controls.md +0 -45
  409. package/skills/cometchat-ios-calls/references/avaudiosession-routing.md +0 -188
  410. package/skills/cometchat-ios-calls/references/call-layouts.md +0 -76
  411. package/skills/cometchat-ios-calls/references/call-session.md +0 -218
  412. package/skills/cometchat-ios-calls/references/callkit-and-pushkit.md +0 -357
  413. package/skills/cometchat-ios-calls/references/custom-ui.md +0 -322
  414. package/skills/cometchat-ios-calls/references/device-management.md +0 -171
  415. package/skills/cometchat-ios-calls/references/group-calls.md +0 -359
  416. package/skills/cometchat-ios-calls/references/idle-timeout.md +0 -184
  417. package/skills/cometchat-ios-calls/references/in-call-chat.md +0 -179
  418. package/skills/cometchat-ios-calls/references/migration-v4-to-v5.md +0 -196
  419. package/skills/cometchat-ios-calls/references/picture-in-picture.md +0 -246
  420. package/skills/cometchat-ios-calls/references/raise-hand.md +0 -26
  421. package/skills/cometchat-ios-calls/references/recording-screen-share.md +0 -252
  422. package/skills/cometchat-ios-calls/references/ringing-integration.md +0 -143
  423. package/skills/cometchat-ios-calls/references/server-apns-pushkit.md +0 -267
  424. package/skills/cometchat-ios-calls/references/share-invite.md +0 -148
  425. package/skills/cometchat-ios-calls/references/swiftui-uikit-hosting.md +0 -246
  426. package/skills/cometchat-ios-calls/references/voip-cert-setup.md +0 -166
  427. package/skills/cometchat-ios-production/SKILL.md +0 -738
  428. package/skills/cometchat-ios-testing/SKILL.md +0 -376
  429. package/skills/cometchat-ios-theming/SKILL.md +0 -667
  430. package/skills/cometchat-ios-troubleshooting/SKILL.md +0 -1003
  431. package/skills/cometchat-native-bare-patterns/SKILL.md +0 -550
  432. package/skills/cometchat-native-calls/SKILL.md +0 -669
  433. package/skills/cometchat-native-calls/references/add-calls-to-existing-chat.md +0 -203
  434. package/skills/cometchat-native-calls/references/call-layouts.md +0 -125
  435. package/skills/cometchat-native-calls/references/call-session.md +0 -182
  436. package/skills/cometchat-native-calls/references/custom-ui.md +0 -254
  437. package/skills/cometchat-native-calls/references/device-management.md +0 -158
  438. package/skills/cometchat-native-calls/references/expo-vs-bare.md +0 -179
  439. package/skills/cometchat-native-calls/references/group-calls.md +0 -296
  440. package/skills/cometchat-native-calls/references/idle-timeout.md +0 -128
  441. package/skills/cometchat-native-calls/references/in-call-chat.md +0 -145
  442. package/skills/cometchat-native-calls/references/migration-v4-to-v5.md +0 -72
  443. package/skills/cometchat-native-calls/references/picture-in-picture.md +0 -276
  444. package/skills/cometchat-native-calls/references/raise-hand.md +0 -205
  445. package/skills/cometchat-native-calls/references/recording-screen-share.md +0 -169
  446. package/skills/cometchat-native-calls/references/ringing-integration.md +0 -118
  447. package/skills/cometchat-native-calls/references/server-push-bridge.md +0 -135
  448. package/skills/cometchat-native-calls/references/server-push-payloads.md +0 -193
  449. package/skills/cometchat-native-calls/references/share-invite.md +0 -146
  450. package/skills/cometchat-native-calls/references/voip-push-end-to-end.md +0 -319
  451. package/skills/cometchat-native-components/SKILL.md +0 -628
  452. package/skills/cometchat-native-core/SKILL.md +0 -679
  453. package/skills/cometchat-native-customization/SKILL.md +0 -716
  454. package/skills/cometchat-native-expo-patterns/SKILL.md +0 -552
  455. package/skills/cometchat-native-features/SKILL.md +0 -638
  456. package/skills/cometchat-native-placement/SKILL.md +0 -509
  457. package/skills/cometchat-native-production/SKILL.md +0 -700
  458. package/skills/cometchat-native-push/SKILL.md +0 -594
  459. package/skills/cometchat-native-testing/SKILL.md +0 -582
  460. package/skills/cometchat-native-theming/SKILL.md +0 -681
  461. package/skills/cometchat-native-troubleshooting/SKILL.md +0 -501
  462. package/skills/cometchat-nextjs-patterns/SKILL.md +0 -899
  463. package/skills/cometchat-placement/SKILL.md +0 -1360
  464. package/skills/cometchat-production/SKILL.md +0 -1027
  465. package/skills/cometchat-react-calls/SKILL.md +0 -749
  466. package/skills/cometchat-react-calls/references/add-calls-to-existing-chat.md +0 -146
  467. package/skills/cometchat-react-calls/references/call-layouts.md +0 -160
  468. package/skills/cometchat-react-calls/references/call-session.md +0 -235
  469. package/skills/cometchat-react-calls/references/custom-ui.md +0 -247
  470. package/skills/cometchat-react-calls/references/device-management.md +0 -210
  471. package/skills/cometchat-react-calls/references/group-calls.md +0 -257
  472. package/skills/cometchat-react-calls/references/idle-timeout.md +0 -188
  473. package/skills/cometchat-react-calls/references/in-call-chat.md +0 -212
  474. package/skills/cometchat-react-calls/references/migration-v4-to-v5.md +0 -170
  475. package/skills/cometchat-react-calls/references/picture-in-picture.md +0 -245
  476. package/skills/cometchat-react-calls/references/raise-hand.md +0 -238
  477. package/skills/cometchat-react-calls/references/recording-screen-share.md +0 -144
  478. package/skills/cometchat-react-calls/references/ringing-integration.md +0 -255
  479. package/skills/cometchat-react-calls/references/server-web-push-vapid.md +0 -241
  480. package/skills/cometchat-react-calls/references/share-invite.md +0 -175
  481. package/skills/cometchat-react-calls/references/testing-calls-on-web.md +0 -216
  482. package/skills/cometchat-react-calls/references/virtual-background.md +0 -32
  483. package/skills/cometchat-react-calls/references/voip-and-web-push.md +0 -165
  484. package/skills/cometchat-react-patterns/SKILL.md +0 -628
  485. package/skills/cometchat-react-push/SKILL.md +0 -634
  486. package/skills/cometchat-react-router-patterns/SKILL.md +0 -758
  487. package/skills/cometchat-react-testing/SKILL.md +0 -413
  488. package/skills/cometchat-theming/SKILL.md +0 -498
  489. package/skills/cometchat-troubleshooting/SKILL.md +0 -294
@@ -1,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.