@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,384 +0,0 @@
1
- ---
2
- name: cometchat-flutter-v6-messages
3
- description: >
4
- Use when implementing the messages screen with CometChat Flutter UIKit v6. Covers
5
- CometChatMessageList, CometChatMessageComposer, CometChatMessageHeader, MessageListBloc,
6
- MessageComposerBloc, SliverSpacing, keyboard-aware spacing, rich text toolbar,
7
- CometChatTextBubble, CometChatImageBubble, CometChatVideoBubble, CometChatAudioBubble,
8
- CometChatFileBubble, CometChatMessageBubble, bubble factories, message templates,
9
- send message, edit message, delete message, reply, thread, reactions, receipts,
10
- typing indicators, mentions, markdown formatting, text formatters, scroll to bottom,
11
- unread messages, mark as read, goToMessageId, message options, swipe to reply,
12
- smart replies, conversation starters, or resizeToAvoidBottomInset. Also use when
13
- the user asks about building a chat screen, message input, or message display.
14
- license: "MIT"
15
- compatibility: "cometchat_chat_uikit ^6.0.1; flutter_bloc ^8.1.0"
16
- metadata:
17
- author: "CometChat"
18
- version: "3.0.0"
19
- tags: "cometchat flutter messages composer header bubbles keyboard rich-text"
20
- ---
21
-
22
- > **Ground truth:** `cometchat_chat_uikit: ^6.0` — pub-cache source + `ui-kit/flutter`. **Official docs:** https://www.cometchat.com/docs/ui-kit/flutter/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.
23
-
24
- # CometChat Flutter UIKit — Messages
25
-
26
- The messages screen is composed of three components: `CometChatMessageHeader`, `CometChatMessageList`, and `CometChatMessageComposer`.
27
-
28
- ## Complete Messages Screen
29
-
30
- ```dart
31
- final colorPalette = CometChatThemeHelper.getColorPalette(context);
32
- Scaffold(
33
- resizeToAvoidBottomInset: true, // matches sample app; composer clamps to viewInsets (ENG-34434)
34
- appBar: CometChatMessageHeader(
35
- user: user,
36
- group: group,
37
- onBack: () => Navigator.pop(context),
38
- ),
39
- body: SafeArea(
40
- top: false, // Header is the appBar — top inset already handled; keep bottom inset
41
- child: Container(
42
- color: colorPalette.background3,
43
- child: Column(
44
- children: [
45
- Expanded(
46
- child: CometChatMessageList(
47
- user: user,
48
- group: group,
49
- textFormatters: [
50
- CometChatMentionsFormatter(user: user, group: group),
51
- MarkdownTextFormatter(),
52
- CometChatUrlFormatter(),
53
- CometChatPhoneNumberFormatter(),
54
- CometChatEmailFormatter(),
55
- ],
56
- ),
57
- ),
58
- CometChatMessageComposer(
59
- user: user,
60
- group: group,
61
- textFormatters: [
62
- CometChatMentionsFormatter(user: user, group: group),
63
- MarkdownTextFormatter(),
64
- CometChatUrlFormatter(),
65
- CometChatPhoneNumberFormatter(),
66
- CometChatEmailFormatter(),
67
- ],
68
- ),
69
- ],
70
- ),
71
- ),
72
- ),
73
- )
74
- ```
75
-
76
- ## CometChatMessageList
77
-
78
- Displays messages with `SliverAnimatedList`, O(1) lookups, and keyboard-aware spacing.
79
-
80
- ### Key Props
81
-
82
- | Prop | Type | Purpose |
83
- |------|------|---------|
84
- | `user` / `group` | `User?` / `Group?` | Target conversation (one required) |
85
- | `goToMessageId` | `int?` | Jump to specific message on load |
86
- | `startFromUnreadMessages` | `bool` | Start from unread position |
87
- | `hideDeletedMessages` | `bool` | Hide deleted message placeholders |
88
- | `disableReceipts` | `bool` | Hide read/delivered receipts |
89
- | `disableReactions` | `bool` | Hide reaction bar |
90
- | `enableSwipeToReply` | `bool` | Swipe gesture for reply |
91
- | `hideDateSeparator` | `bool` | Hide date headers |
92
- | `textFormatters` | `List<CometChatTextFormatter>` | Formatters for message text |
93
- | `onThreadRepliesClick` | `Function(BaseMessage, BuildContext, {template})` | Thread navigation callback |
94
- | `messagesRequestBuilder` | `MessagesRequestBuilder?` | Customize the underlying message query (see below) |
95
-
96
- ### MessagesRequestBuilder — customizing the message query
97
-
98
- `CometChatMessageList` accepts a `messagesRequestBuilder` prop that lets you customize the underlying SDK request — page size, filters, search, etc. The class lives in the Chat SDK (`package:cometchat_sdk/cometchat_sdk.dart`) and exposes 30+ fluent setters. Common setters:
99
-
100
- | Setter | Purpose |
101
- |--------|---------|
102
- | `setLimit(int)` | Page size (default 30, max 100) |
103
- | `setTypes(List<String>)` | Restrict to message types (e.g. `['text', 'image']`) |
104
- | `setCategories(List<String>)` | Restrict to categories (e.g. `['message', 'custom']`) |
105
- | `setHideMessagesFromBlockedUsers(bool)` | Drop messages from blocked users |
106
- | `setSearchKeyword(String)` | Server-side keyword search |
107
- | `setTags(List<String>)` | Filter by message tags |
108
- | `setHasAttachments(bool)` | Only messages with file attachments |
109
- | `setHasLinks(bool)` | Only messages containing links |
110
- | `setHideReplies(bool)` | Exclude threaded replies from the main list |
111
- | `setHideDeleted(bool)` | Exclude deleted messages |
112
- | `setHideQuotedMessages(bool)` | Exclude quoted-reply messages |
113
- | `setUpdatedAfter(DateTime)` | Only messages updated after this DateTime |
114
- | `setUpdatesOnly(bool)` | Return only updates, not new messages |
115
- | `setParentMessageId(int)` | Fetch a thread's replies |
116
- | `setMentionedUIDs(List<String>)` | Messages mentioning specific users |
117
- | `setHasMentions(bool)` | Only messages with any mention |
118
-
119
- Example — limit to 30, hide messages from blocked users, restrict to text + image:
120
-
121
- ```dart
122
- CometChatMessageList(
123
- user: user,
124
- messagesRequestBuilder: MessagesRequestBuilder()
125
- ..setLimit(30)
126
- ..setHideMessagesFromBlockedUsers(true)
127
- ..setTypes(['text', 'image']),
128
- )
129
- ```
130
-
131
- ### MessageListBloc Events
132
-
133
- | Event | Purpose |
134
- |-------|---------|
135
- | `LoadMessages(conversationWith, conversationType)` | Initial load |
136
- | `LoadOlderMessages` | Scroll up pagination |
137
- | `LoadNewerMessages` | Scroll down pagination |
138
- | `MessageReceived(message)` | Real-time incoming message |
139
- | `MessageEdited(message)` | Real-time edit |
140
- | `MessageDeleted(message)` | Real-time delete |
141
- | `JumpToMessage(messageId)` | Scroll to specific message |
142
- | `MarkMessageAsRead(message)` | Mark as read |
143
- | `MarkMessageAsUnread(message)` | Mark as unread |
144
-
145
- ### MessageListState
146
-
147
- ```dart
148
- MessageListState(
149
- status: MessageListStatus.loaded, // initial, loading, loaded, empty, error
150
- messages: [...],
151
- isLoadingOlder: false,
152
- isLoadingNewer: false,
153
- hasMoreOlder: true,
154
- hasMoreNewer: false,
155
- unreadCount: 5,
156
- unreadMessageAnchor: message,
157
- )
158
- ```
159
-
160
- ## CometChatMessageComposer
161
-
162
- Rich text input with formatting toolbar, attachments, mentions, and audio recording.
163
-
164
- ### Key Props
165
-
166
- | Prop | Type | Purpose |
167
- |------|------|---------|
168
- | `user` / `group` | `User?` / `Group?` | Target conversation |
169
- | `disableTypingEvents` | `bool` | Stop sending typing indicators |
170
- | `hideVoiceRecordingButton` | `bool` | Hide audio recorder |
171
- | `hideSendButton` | `bool` | Hide send button |
172
- | `hideAttachmentButton` | `bool` | Hide attachment picker |
173
- | `hideStickersButton` | `bool` | Hide sticker panel |
174
- | `disableMentions` | `bool` | Disable @mentions |
175
- | `hideBottomSafeArea` | `bool` | Hide bottom safe area padding |
176
- | `textFormatters` | `List<CometChatTextFormatter>` | Text formatters |
177
-
178
- ### Rich Text Formatting
179
-
180
- The composer uses a WYSIWYG system (not the clean architecture module):
181
- - `RichTextEditingController` — span tracking, markdown rendering, format application
182
- - `SegmentComposerController` — multi-segment (normal text + code blocks)
183
- - Toolbar buttons dispatch through `cometchat_message_composer.dart`
184
-
185
- ### buildWhen Optimization
186
-
187
- The composer uses `buildWhen` to prevent rebuilds during keyboard animation:
188
- ```dart
189
- BlocConsumer<MessageComposerBloc, MessageComposerState>(
190
- buildWhen: (previous, current) =>
191
- previous.isEditMode != current.isEditMode ||
192
- previous.isReplyMode != current.isReplyMode ||
193
- previous.isRecordingMode != current.isRecordingMode,
194
- // ...
195
- )
196
- ```
197
-
198
- The actual filter in `cometchat_message_composer.dart` also covers `editMessage` / `replyMessage` target changes and panel transitions (`headerPanel`, `footerPanel`, `previewPanel`, `lockedBottomPadding`, `isActiveStreaming`). The snippet above shows the three primary mode flags for brevity — if you subclass or wrap the composer, copy the full predicate from `cometchat_message_composer.dart` so edit/reply targets and panels also trigger rebuilds.
199
-
200
- ## CometChatMessageHeader
201
-
202
- Shows user/group info, typing indicators, and optional call buttons.
203
-
204
- ```dart
205
- CometChatMessageHeader(
206
- user: user,
207
- group: group,
208
- onBack: () => Navigator.pop(context),
209
- hideVideoCallButton: false,
210
- hideVoiceCallButton: false,
211
- usersStatusVisibility: true,
212
- trailingView: (user, group, ctx) => [
213
- IconButton(icon: Icon(Icons.info_outline), onPressed: () { /* ... */ }),
214
- ],
215
- messageHeaderStyle: CometChatMessageHeaderStyle(
216
- backgroundColor: colorPalette.background1,
217
- ),
218
- )
219
- ```
220
-
221
- ## Keyboard-Aware Spacing
222
-
223
- The composer coordinates with the keyboard internally — it tracks the native keyboard height and **clamps it to Flutter's `viewInsets`** (kit fix ENG-34434) so it does NOT add its own inset on top of the Scaffold's. The list's spacing then reacts to the same `viewInsets`:
224
- - At bottom: keyboard pushes list up (normal behavior)
225
- - Scrolled up: list stays still, only composer moves
226
- - Safe area: only added when keyboard is closed
227
-
228
- Because of that clamp, **set `resizeToAvoidBottomInset: true`** (or omit it — `true` is the Scaffold default), which is exactly what the kit's official sample app does (`messages_screen.dart` omits it → defaults `true`; `thread_screen.dart` sets it `true` explicitly).
229
-
230
- > Version note: on kits **before ENG-34434 (pre-6.0.1)** the composer did NOT clamp, so `true` double-compensated and `false` was the workaround. On `^6.0.1` (what this skill targets) `true` is correct. If you ever see a double keyboard gap, you're on an older kit — upgrade, or set `false` as a stopgap.
231
-
232
- ## Message Bubbles
233
-
234
- | Type | Widget | Key Features |
235
- |------|--------|--------------|
236
- | Text | `CometChatTextBubble` | Rich text, links, markdown |
237
- | Image | `CometChatImageBubble` | Local/network, GIF, HEIC fallback |
238
- | Video | `CometChatVideoBubble` | Thumbnail, play overlay |
239
- | Audio | `CometChatAudioBubble` | Waveform, play/pause, duration |
240
- | File | `CometChatFileBubble` | Type icon, download, size |
241
- | Deleted | `CometChatDeletedBubble` | "Message was deleted" |
242
-
243
- All bubble widgets accept optional `colorPalette`, `spacing`, `typography` params for the hybrid theme caching pattern.
244
-
245
- ## Sending Messages
246
-
247
- ```dart
248
- // Text message
249
- await CometChatUIKit.sendTextMessage(
250
- TextMessage(
251
- text: 'Hello!',
252
- receiverUid: user.uid,
253
- receiverType: ReceiverTypeConstants.user,
254
- ),
255
- );
256
-
257
- // Media message
258
- await CometChatUIKit.sendMediaMessage(
259
- MediaMessage(
260
- file: '/path/to/image.jpg',
261
- type: MessageTypeConstants.image,
262
- receiverUid: user.uid,
263
- receiverType: ReceiverTypeConstants.user,
264
- ),
265
- );
266
-
267
- // Custom message
268
- await CometChatUIKit.sendCustomMessage(
269
- CustomMessage(
270
- type: 'location',
271
- receiverUid: user.uid,
272
- receiverType: ReceiverTypeConstants.user,
273
- customData: {'latitude': 37.7749, 'longitude': -122.4194},
274
- ),
275
- );
276
- ```
277
-
278
- ## Thread Replies
279
-
280
- ```dart
281
- CometChatMessageList(
282
- onThreadRepliesClick: (message, ctx, {template}) {
283
- final colorPalette = CometChatThemeHelper.getColorPalette(context);
284
- Navigator.push(context, MaterialPageRoute(
285
- builder: (_) => Scaffold(
286
- resizeToAvoidBottomInset: true,
287
- body: SafeArea(
288
- child: Container(
289
- color: colorPalette.background3,
290
- child: Column(
291
- children: [
292
- CometChatThreadedHeader(
293
- parentMessage: message,
294
- loggedInUser: CometChatUIKit.loggedInUser!,
295
- ),
296
- Expanded(child: CometChatMessageList(
297
- user: user, group: group,
298
- parentMessageId: message.id,
299
- // Scope the list to this thread only: exclude the parent and
300
- // request just the replies for message.id.
301
- withParent: false,
302
- messagesRequestBuilder: MessagesRequestBuilder()
303
- ..parentMessageId = message.id,
304
- )),
305
- CometChatMessageComposer(
306
- user: user, group: group,
307
- parentMessageId: message.id,
308
- ),
309
- ],
310
- ),
311
- ),
312
- ),
313
- ),
314
- ));
315
- },
316
- )
317
- ```
318
-
319
- ## Gotchas
320
-
321
- - Use `resizeToAvoidBottomInset: true` (or omit — it's the default), matching the kit sample app. On `^6.0.1` the composer clamps the keyboard height to Flutter's `viewInsets` (ENG-34434), so `true` does NOT double-compensate. Only on pre-6.0.1 kits did `true` cause a double keyboard gap (where `false` was the workaround) — if you see that gap, upgrade the kit.
322
- - `textFormatters` should be the same list for both `CometChatMessageList` and `CometChatMessageComposer` to ensure consistent rendering.
323
- - The rich text system has 3 implementations but only WYSIWYG is active at runtime. Bug fixes go in `rich_text_editing_controller.dart`, not the clean architecture module.
324
- - `goToMessageId` loads messages around that ID, not from the beginning. The list may not have older messages loaded.
325
- - Keep mutable `_user`/`_group` copies in your State class and update them from SDK listeners. Passing `widget.user`/`widget.group` directly means stale data after block/kick events.
326
- - The CometChat SDK has an `Action` class (a `BaseMessage` subclass used in group events like kick/ban/scope-change). It conflicts with Flutter's built-in `Action` widget. If your messages screen uses SDK listener mixins that reference `Action`, use an import alias:
327
- ```dart
328
- import 'package:cometchat_chat_uikit/cometchat_chat_uikit.dart' as cc;
329
- // Then use: cc.Action instead of Action
330
- ```
331
- This is especially common when mixing `GroupListener` into a messages screen State class.
332
-
333
- ## Anti-Patterns
334
-
335
- ```dart
336
- // ❌ WRONG — list not wrapped in Expanded (unbounded height → won't scroll / overflow)
337
- Scaffold(
338
- body: Column(children: [
339
- CometChatMessageList(user: user), // needs Expanded
340
- CometChatMessageComposer(user: user),
341
- ]),
342
- )
343
-
344
- // ✅ CORRECT — both messages and thread screens (matches the kit sample app)
345
- Scaffold(
346
- resizeToAvoidBottomInset: true, // (or omit — true is the default; composer clamps to viewInsets, ENG-34434)
347
- body: Column(children: [
348
- Expanded(child: CometChatMessageList(user: user)),
349
- CometChatMessageComposer(user: user),
350
- ]),
351
- )
352
- ```
353
-
354
- ```dart
355
- // ❌ WRONG — passing immutable widget params to UIKit components
356
- CometChatMessageList(user: widget.user) // Stale after block/unblock
357
-
358
- // ✅ CORRECT — mutable state copy
359
- late User? _user = widget.user;
360
- // Update _user from SDK listeners
361
- CometChatMessageList(user: _user)
362
- ```
363
-
364
- ```dart
365
- // ❌ WRONG — different formatters for list and composer
366
- CometChatMessageList(textFormatters: [MarkdownTextFormatter()])
367
- CometChatMessageComposer(textFormatters: []) // Inconsistent rendering
368
-
369
- // ✅ CORRECT — same formatters
370
- final formatters = [CometChatMentionsFormatter(user: user), MarkdownTextFormatter()];
371
- CometChatMessageList(textFormatters: formatters)
372
- CometChatMessageComposer(textFormatters: formatters)
373
- ```
374
-
375
- ## Checklist
376
-
377
- - [ ] Scaffold has `resizeToAvoidBottomInset: true` (or omitted — default; matches the sample app)
378
- - [ ] Both list and composer have matching `textFormatters`
379
- - [ ] Mutable `_user`/`_group` state copies, not `widget.user`/`widget.group`
380
- - [ ] `onThreadRepliesClick` navigates to thread screen with `parentMessageId`
381
- - [ ] Thread screen Scaffold also uses `resizeToAvoidBottomInset: true` (same as messages screen)
382
- - [ ] SDK listeners update `_user`/`_group` for block/kick/scope changes
383
- - [ ] Colors from `CometChatThemeHelper`, cached in `didChangeDependencies()`
384
- - [ ] If using SDK listener mixins with `Action`, import UIKit `as cc` to avoid Flutter name conflict
@@ -1,293 +0,0 @@
1
- ---
2
- name: cometchat-flutter-v6-theming
3
- description: >
4
- Use when customizing the visual appearance of CometChat Flutter UIKit v6 components.
5
- Triggers on mentions of CometChatThemeHelper, CometChatColorPalette, CometChatSpacing,
6
- CometChatTypography, CometChatThemeMode, dark mode, light mode, theme, colors, styling,
7
- custom theme, Style class, merge(), getColorPalette, getSpacing, getTypography,
8
- ThemeExtension, primary color, neutral colors, background colors, text colors, icon colors,
9
- button colors, border colors, or any CometChat{Component}Style class. Also use when the
10
- user asks about changing colors, fonts, spacing, or appearance of chat components.
11
- license: "MIT"
12
- compatibility: "cometchat_chat_uikit ^6.0.1; flutter >=2.5.0"
13
- metadata:
14
- author: "CometChat"
15
- version: "3.0.0"
16
- tags: "cometchat flutter theme colors typography spacing dark-mode styling"
17
- ---
18
-
19
- > **Ground truth:** `cometchat_chat_uikit: ^6.0` — pub-cache source + `ui-kit/flutter`. **Official docs:** https://www.cometchat.com/docs/ui-kit/flutter/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.
20
-
21
- # CometChat Flutter UIKit — Theming & Styling
22
-
23
- How to customize the visual appearance of all CometChat components.
24
-
25
- ## Theme System Architecture
26
-
27
- Three layers, resolved via Flutter's `ThemeExtension` system:
28
-
29
- 1. `CometChatColorPalette` — all colors (primary, neutral, alert, background, text, icon, button, border)
30
- 2. `CometChatSpacing` — spacing tokens
31
- 3. `CometChatTypography` — text styles (heading1-4, body, caption1-2, button, link, title)
32
-
33
- Access via static helpers:
34
- ```dart
35
- final colors = CometChatThemeHelper.getColorPalette(context);
36
- final spacing = CometChatThemeHelper.getSpacing(context);
37
- final typography = CometChatThemeHelper.getTypography(context);
38
- ```
39
-
40
- ## Applying a Custom Theme
41
-
42
- Register `CometChatColorPalette` as a `ThemeExtension` on your `ThemeData`:
43
-
44
- ```dart
45
- MaterialApp(
46
- theme: ThemeData(
47
- brightness: Brightness.light,
48
- extensions: [
49
- CometChatColorPalette(
50
- primary: const Color(0xFF6852D6),
51
- background1: Colors.white,
52
- textPrimary: const Color(0xFF141414),
53
- // ... override only what you need, rest falls back to defaults
54
- ),
55
- ],
56
- ),
57
- darkTheme: ThemeData(
58
- brightness: Brightness.dark,
59
- extensions: [
60
- CometChatColorPalette(
61
- primary: const Color(0xFF604CC3),
62
- background1: const Color(0xFF141414),
63
- textPrimary: Colors.white,
64
- ),
65
- ],
66
- ),
67
- )
68
- ```
69
-
70
- Note: `CometChatColorPalette` does NOT have a `const` constructor (it has mutable default fields for `white`, `black`, `transparent`). Don't try `const CometChatColorPalette(...)` — it won't compile.
71
-
72
- ## Dark Mode
73
-
74
- `CometChatThemeMode` controls how brightness is resolved:
75
-
76
- ```dart
77
- // Follow system setting (default)
78
- CometChatThemeMode.mode = ThemeMode.system;
79
-
80
- // Force light
81
- CometChatThemeMode.mode = ThemeMode.light;
82
-
83
- // Force dark
84
- CometChatThemeMode.mode = ThemeMode.dark;
85
- ```
86
-
87
- The helper reads brightness via:
88
- ```dart
89
- // ThemeMode.system → MediaQuery.of(context).platformBrightness
90
- // ThemeMode.light → Brightness.light
91
- // ThemeMode.dark → Brightness.dark
92
- ```
93
-
94
- ## Color Palette Tokens
95
-
96
- | Category | Tokens | Default Source |
97
- |----------|--------|---------------|
98
- | Primary | `primary` | `#6852D6` light / `#604CC3` dark |
99
- | Extended Primary | `extendedPrimary50`–`900` | Auto-generated from primary via blend |
100
- | Neutral | `neutral50`–`900` | 10-shade grayscale |
101
- | Alert | `info`, `warning`, `error`, `success`, `error100` | Semantic colors |
102
- | Background | `background1`–`4` | Mapped from neutral shades |
103
- | Text | `textPrimary`, `textSecondary`, `textTertiary`, `textDisabled`, `textWhite`, `textHighlight` | Mapped from neutral/primary |
104
- | Icon | `iconPrimary`, `iconSecondary`, `iconTertiary`, `iconWhite`, `iconHighlight` | Mapped from neutral/primary |
105
- | Button | `buttonBackground`, `secondaryButtonBackground`, `buttonText`, `buttonIconColor`, `secondaryButtonText`, `secondaryButtonIcon` | Primary + neutral |
106
- | Border | `borderLight`, `borderDefault`, `borderDark`, `borderHighlight` | Neutral shades + primary |
107
- | Special | `white`, `black`, `messageSeen` | Fixed values |
108
-
109
- ## Component Style Classes
110
-
111
- Every component has a `CometChat{Component}Style` class with a `merge()` method:
112
-
113
- ```dart
114
- CometChatConversations(
115
- conversationsStyle: CometChatConversationsStyle(
116
- backgroundColor: colors.background1,
117
- titleTextStyle: typography.heading3?.bold,
118
- ),
119
- )
120
-
121
- CometChatMessageList(
122
- style: CometChatMessageListStyle(
123
- backgroundColor: colors.background3,
124
- ),
125
- )
126
- ```
127
-
128
- Style classes support `merge()` for combining defaults with overrides:
129
- ```dart
130
- final baseStyle = CometChatConversationsStyle(backgroundColor: Colors.white);
131
- final override = CometChatConversationsStyle(titleTextStyle: myTitleStyle);
132
- final merged = baseStyle.merge(override); // backgroundColor + titleTextStyle
133
- ```
134
-
135
- ## Theme Caching (Performance-Critical)
136
-
137
- Cache theme in `didChangeDependencies()` — never in `build()`:
138
-
139
- > **Trade-off (vs the Flutter V5 theming skill, which forbids this flag):** the
140
- > `_themeInitialized` guard caches the palette once and skips re-reads on every
141
- > `didChangeDependencies()` (e.g. keyboard animations) — but it also means a
142
- > runtime **system light↔dark switch won't re-resolve** the cached palette. If
143
- > your app supports live theme switching, either drop the flag (re-read every
144
- > call, as V5 recommends) or also invalidate it from `didChangePlatformBrightness`.
145
- > The flag is the right default for apps with a fixed theme mode.
146
-
147
- ```dart
148
- class _MyWidgetState extends State<MyWidget> {
149
- late CometChatColorPalette _colorPalette;
150
- bool _themeInitialized = false;
151
-
152
- @override
153
- void didChangeDependencies() {
154
- super.didChangeDependencies();
155
- if (!_themeInitialized) {
156
- _colorPalette = CometChatThemeHelper.getColorPalette(context);
157
- _themeInitialized = true;
158
- }
159
- }
160
-
161
- @override
162
- Widget build(BuildContext context) {
163
- return Container(color: _colorPalette.primary); // Cached, no lookup
164
- }
165
- }
166
- ```
167
-
168
- For child widgets that receive theme from parent (hybrid pattern):
169
- ```dart
170
- class CometChatImageBubble extends StatefulWidget {
171
- final CometChatColorPalette? colorPalette; // Optional — parent can pass cached value
172
- // ...
173
- }
174
-
175
- class _CometChatImageBubbleState extends State<CometChatImageBubble> {
176
- late CometChatColorPalette colorPalette;
177
- bool _themeInitialized = false;
178
-
179
- @override
180
- void didChangeDependencies() {
181
- super.didChangeDependencies();
182
- if (!_themeInitialized) {
183
- colorPalette = widget.colorPalette ?? CometChatThemeHelper.getColorPalette(context);
184
- _themeInitialized = true;
185
- }
186
- }
187
-
188
- @override
189
- void didUpdateWidget(CometChatImageBubble oldWidget) {
190
- super.didUpdateWidget(oldWidget);
191
- if (widget.colorPalette != oldWidget.colorPalette && widget.colorPalette != null) {
192
- colorPalette = widget.colorPalette!;
193
- }
194
- }
195
- }
196
- ```
197
-
198
- ## Localization
199
-
200
- To translate the UI, switch the active language, or override individual strings, route to the dedicated **`cometchat-i18n`** skill — the canonical cross-family localization reference. Flutter has **no `CometChatLocalize` class**: localization is wired via the kit's `Translations` localization delegate on `MaterialApp` (drive the language through the app `Locale`). `cometchat-i18n` covers bundled languages, custom translations, RTL, and date/time formatting. Docs: https://www.cometchat.com/docs/ui-kit/flutter/localize
201
-
202
- ## Sound Manager — custom notification & call sounds
203
-
204
- Sounds are a **behavioral** customization — driven by `SoundManager` (note: `SoundManager`, NOT `CometChatSoundManager`, and the stop method is `stop()`, NOT `pause()`). The UI Kit plays the built-in cues automatically; use this to override a cue with a custom asset.
205
-
206
- ```dart
207
- import 'package:cometchat_chat_uikit/cometchat_chat_uikit.dart';
208
-
209
- // Play a default cue — Sound: incomingMessage | outgoingMessage
210
- // | incomingMessageFromOther | incomingCall | outgoingCall
211
- SoundManager().play(sound: Sound.incomingMessage);
212
-
213
- // Override with a custom asset
214
- SoundManager().play(sound: Sound.outgoingMessage, customSound: "assets/sound/my_ping.wav");
215
-
216
- // Stop whatever is playing
217
- SoundManager().stop();
218
- ```
219
-
220
- > For the common case (muting/replacing message sounds), prefer the **widget-level** props instead of the manager: in V6 `CometChatConversations` exposes `disableSoundForMessages` and `customSoundForMessages`.
221
-
222
- ## Gotchas
223
-
224
- - `CometChatColorPalette` is NOT const-constructible. It has mutable default fields (`white = Colors.white`, `black = Colors.black`, `transparent = Colors.transparent`). Writing `const CometChatColorPalette(...)` or `const [CometChatColorPalette()]` won't compile.
225
- - `CometChatThemeHelper.getColorPalette(context)` does `Theme.of(context).extension<CometChatColorPalette>()` internally — this is an InheritedWidget lookup. In `build()` during keyboard animation, this fires every frame causing 44-95ms build times.
226
- - Extended primary colors are auto-generated by blending `primary` with white (light) or black (dark). Override individual shades only if the auto-blend doesn't match your brand.
227
- - `CometChatThemeMode.mode` is a static field — changing it doesn't trigger rebuilds. You need to also change `ThemeData` brightness or call `setState` on the `MaterialApp`.
228
- - Style `merge()` is null-aware: only non-null fields from the override replace the base. This means you can't explicitly set a field to `null` via merge.
229
-
230
- ## Anti-Patterns
231
-
232
- ```dart
233
- // ❌ WRONG — hardcoded colors
234
- Container(color: Colors.purple)
235
-
236
- // ✅ CORRECT — use theme tokens
237
- Container(color: colorPalette.primary)
238
- ```
239
-
240
- ```dart
241
- // ❌ WRONG — theme lookup in build
242
- @override
243
- Widget build(BuildContext context) {
244
- final colors = CometChatThemeHelper.getColorPalette(context);
245
- return Text('Hi', style: TextStyle(color: colors.textPrimary));
246
- }
247
-
248
- // ❌ ALSO WRONG — theme lookup in a method called from build
249
- Widget _buildProfileMenu() {
250
- final typography = CometChatThemeHelper.getTypography(context); // Still in build tree!
251
- final spacing = CometChatThemeHelper.getSpacing(context);
252
- // ...
253
- }
254
-
255
- // ✅ CORRECT — cached in didChangeDependencies
256
- late CometChatColorPalette _colors;
257
- late CometChatTypography _typography;
258
- late CometChatSpacing _spacing;
259
- bool _init = false;
260
- @override
261
- void didChangeDependencies() {
262
- super.didChangeDependencies();
263
- if (!_init) {
264
- _colors = CometChatThemeHelper.getColorPalette(context);
265
- _typography = CometChatThemeHelper.getTypography(context);
266
- _spacing = CometChatThemeHelper.getSpacing(context);
267
- _init = true;
268
- }
269
- }
270
- @override
271
- Widget build(BuildContext context) {
272
- return Text('Hi', style: TextStyle(color: _colors.textPrimary));
273
- }
274
- ```
275
-
276
- ```dart
277
- // ❌ WRONG — MediaQuery.of(context).size triggers full rebuild
278
- final size = MediaQuery.of(context).size;
279
-
280
- // ✅ CORRECT — only subscribes to size changes
281
- final size = MediaQuery.sizeOf(context);
282
- ```
283
-
284
- ## Checklist
285
-
286
- - [ ] Custom colors registered as `ThemeExtension` on `ThemeData`
287
- - [ ] Both `theme` and `darkTheme` configured if supporting dark mode
288
- - [ ] Theme values cached in `didChangeDependencies()`, not `build()`
289
- - [ ] No `CometChatThemeHelper.get*()` calls in any method invoked during `build()` (including helper methods like `_buildProfileMenu()`)
290
- - [ ] `_themeInitialized` flag prevents re-init during keyboard animation
291
- - [ ] No hardcoded colors — all from `CometChatColorPalette`
292
- - [ ] `MediaQuery.sizeOf(context)` used instead of `MediaQuery.of(context).size`
293
- - [ ] Style overrides use component's Style class, not inline styles