@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,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