@cometchat/skills 4.4.2 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (490) hide show
  1. package/.claude-plugin/marketplace.json +55 -0
  2. package/.claude-plugin/plugin.json +14 -0
  3. package/CHANGELOG.md +36 -0
  4. package/LICENSE +21 -0
  5. package/README.md +41 -163
  6. package/RULES.md +114 -0
  7. package/bin/cometchat-skills.mjs +1180 -0
  8. package/bin/legacy-skills.json +95 -0
  9. package/catalogs/android-v6.json +1646 -0
  10. package/catalogs/flutter-v6.json +651 -0
  11. package/catalogs/ios-v5.json +1383 -0
  12. package/catalogs/rn-calls-v5.json +134 -0
  13. package/catalogs/rn-calls-v5.symbols.txt +58 -0
  14. package/catalogs/rn-sdk-v4.json +672 -0
  15. package/catalogs/rn-v5.json +449 -0
  16. package/catalogs/rn-v5.symbols.txt +216 -0
  17. package/catalogs/sdk-android-v5.json +514 -0
  18. package/contracts.android-calls-v5.json +122 -0
  19. package/contracts.android-v6.json +135 -0
  20. package/contracts.angular-v5.json +694 -0
  21. package/contracts.flutter-calls-v5.json +77 -0
  22. package/contracts.flutter-v6.json +126 -0
  23. package/contracts.ios-calls-v5.json +67 -0
  24. package/contracts.ios-v5.json +436 -0
  25. package/contracts.json +82 -0
  26. package/contracts.rn-calls-v5.json +77 -0
  27. package/contracts.rn-v5.json +727 -0
  28. package/contracts.sdk-android-v5.json +15 -0
  29. package/contracts.web-calls-v5.json +45 -0
  30. package/features.android-calls-v5.json +246 -0
  31. package/features.android-v6.json +65 -0
  32. package/features.angular-v5.json +521 -0
  33. package/features.flutter-calls-v5.json +286 -0
  34. package/features.flutter-v6.json +484 -0
  35. package/features.ios-calls-v5.json +236 -0
  36. package/features.ios-v5.json +573 -0
  37. package/features.json +61 -0
  38. package/features.rn-calls-v5.json +187 -0
  39. package/features.rn-v5.json +614 -0
  40. package/features.sdk-android-v5.json +40 -0
  41. package/features.sdk-jsv4.json +24 -0
  42. package/features.web-calls-v5.json +108 -0
  43. package/package.json +151 -74
  44. package/peers.yaml +312 -0
  45. package/registry/README.md +31 -0
  46. package/registry/android-calls-v5.json +54 -0
  47. package/registry/android-v6.json +137 -0
  48. package/registry/angular-v5.json +114 -0
  49. package/registry/flutter-calls-v5.json +54 -0
  50. package/registry/flutter-v6.json +119 -0
  51. package/registry/ios-calls-v5.json +59 -0
  52. package/registry/ios-v5.json +97 -0
  53. package/registry/rn-calls-v5.json +59 -0
  54. package/registry/rn-v5.json +129 -0
  55. package/registry/sdk-android-v5.json +53 -0
  56. package/registry/sdk-jsv4.json +53 -0
  57. package/registry/web-calls-v5.json +54 -0
  58. package/registry/web-v7.json +99 -0
  59. package/skills/cometchat/SKILL.md +42 -2096
  60. package/skills/cometchat-android-v5-calls-sdk/SKILL.md +206 -0
  61. package/skills/cometchat-android-v5-calls-sdk/references/build-truth.md +63 -0
  62. package/skills/cometchat-android-v5-calls-sdk/references/docs-map.md +119 -0
  63. package/skills/cometchat-android-v5-calls-sdk/references/method-map.md +53 -0
  64. package/skills/cometchat-android-v5-calls-sdk/references/pitfalls.md +72 -0
  65. package/skills/cometchat-android-v5-calls-sdk/references/ringing.md +92 -0
  66. package/skills/cometchat-android-v5-calls-sdk/references/user-switch.md +90 -0
  67. package/skills/cometchat-android-v5-sdk/SKILL.md +127 -0
  68. package/skills/cometchat-android-v5-sdk/references/app-surface.md +88 -0
  69. package/skills/cometchat-android-v5-sdk/references/docs-map.md +91 -0
  70. package/skills/cometchat-android-v6-builder-settings/SKILL.md +51 -137
  71. package/skills/cometchat-android-v6-calls/SKILL.md +128 -413
  72. package/skills/cometchat-android-v6-compose-components/SKILL.md +84 -194
  73. package/skills/cometchat-android-v6-compose-customization/SKILL.md +66 -411
  74. package/skills/cometchat-android-v6-compose-placement/SKILL.md +154 -237
  75. package/skills/cometchat-android-v6-core/SKILL.md +236 -672
  76. package/skills/cometchat-android-v6-core/references/anti-patterns.md +31 -0
  77. package/skills/cometchat-android-v6-core/references/component-props.md +168 -0
  78. package/skills/cometchat-android-v6-core/references/docs-map.md +153 -0
  79. package/skills/cometchat-android-v6-core/references/layout.md +112 -0
  80. package/skills/cometchat-android-v6-core/references/lifecycle.md +75 -0
  81. package/skills/cometchat-android-v6-core/references/setup-credentials.md +105 -0
  82. package/skills/cometchat-android-v6-core/references/troubleshooting.md +36 -0
  83. package/skills/cometchat-android-v6-events/SKILL.md +46 -184
  84. package/skills/cometchat-android-v6-extensions/SKILL.md +39 -179
  85. package/skills/cometchat-android-v6-features/SKILL.md +74 -143
  86. package/skills/cometchat-android-v6-kotlin-components/SKILL.md +75 -193
  87. package/skills/cometchat-android-v6-kotlin-customization/SKILL.md +67 -419
  88. package/skills/cometchat-android-v6-kotlin-placement/SKILL.md +77 -223
  89. package/skills/cometchat-android-v6-migration/SKILL.md +67 -378
  90. package/skills/cometchat-android-v6-production/SKILL.md +40 -179
  91. package/skills/cometchat-android-v6-push/SKILL.md +39 -289
  92. package/skills/cometchat-android-v6-testing/SKILL.md +50 -265
  93. package/skills/cometchat-android-v6-troubleshooting/SKILL.md +70 -254
  94. package/skills/cometchat-angular-v5-calls/SKILL.md +193 -0
  95. package/skills/cometchat-angular-v5-components/SKILL.md +131 -0
  96. package/skills/cometchat-angular-v5-components/references/catalog.md +111 -0
  97. package/skills/cometchat-angular-v5-components/references/host-composed.md +46 -0
  98. package/skills/cometchat-angular-v5-core/SKILL.md +300 -0
  99. package/skills/cometchat-angular-v5-core/references/anti-patterns.md +49 -0
  100. package/skills/cometchat-angular-v5-core/references/component-props.md +55 -0
  101. package/skills/cometchat-angular-v5-core/references/dependencies.md +66 -0
  102. package/skills/cometchat-angular-v5-core/references/docs-map.md +132 -0
  103. package/skills/cometchat-angular-v5-core/references/layout.md +64 -0
  104. package/skills/cometchat-angular-v5-core/references/lifecycle.md +202 -0
  105. package/skills/cometchat-angular-v5-core/references/setup-credentials.md +137 -0
  106. package/skills/cometchat-angular-v5-core/references/theming.md +70 -0
  107. package/skills/cometchat-angular-v5-core/references/troubleshooting.md +27 -0
  108. package/skills/cometchat-angular-v5-customization/SKILL.md +94 -0
  109. package/skills/cometchat-angular-v5-features/SKILL.md +107 -0
  110. package/skills/cometchat-angular-v5-features/references/custom-messages.md +133 -0
  111. package/skills/cometchat-angular-v5-features/references/formatters.md +28 -0
  112. package/skills/cometchat-angular-v5-features/references/host-composed-extensions.md +85 -0
  113. package/skills/cometchat-angular-v5-migration/SKILL.md +40 -0
  114. package/skills/cometchat-angular-v5-migration/references/migration-guide.md +165 -0
  115. package/skills/cometchat-angular-v5-patterns/SKILL.md +107 -0
  116. package/skills/cometchat-angular-v5-placement/SKILL.md +133 -0
  117. package/skills/cometchat-angular-v5-placement/references/combined-app.md +174 -0
  118. package/skills/cometchat-angular-v5-placement/references/core-surface.md +199 -0
  119. package/skills/cometchat-angular-v5-production/SKILL.md +101 -0
  120. package/skills/cometchat-angular-v5-push/SKILL.md +61 -0
  121. package/skills/cometchat-angular-v5-testing/SKILL.md +112 -0
  122. package/skills/cometchat-angular-v5-troubleshooting/SKILL.md +96 -0
  123. package/skills/cometchat-flutter-v5-sdk/SKILL.md +188 -0
  124. package/skills/cometchat-flutter-v5-sdk/references/doc-corrections.md +55 -0
  125. package/skills/cometchat-flutter-v5-sdk/references/docs-map.md +211 -0
  126. package/skills/cometchat-flutter-v5-sdk/references/platform-notes.md +48 -0
  127. package/skills/cometchat-flutter-v5-sdk/references/transcription.md +87 -0
  128. package/skills/cometchat-flutter-v6-calls/SKILL.md +75 -389
  129. package/skills/cometchat-flutter-v6-components/SKILL.md +88 -361
  130. package/skills/cometchat-flutter-v6-core/SKILL.md +154 -593
  131. package/skills/cometchat-flutter-v6-core/references/anti-patterns.md +55 -0
  132. package/skills/cometchat-flutter-v6-core/references/docs-map.md +143 -0
  133. package/skills/cometchat-flutter-v6-core/references/layout.md +45 -0
  134. package/skills/cometchat-flutter-v6-core/references/lifecycle.md +87 -0
  135. package/skills/cometchat-flutter-v6-core/references/setup-credentials.md +84 -0
  136. package/skills/cometchat-flutter-v6-core/references/troubleshooting.md +26 -0
  137. package/skills/cometchat-flutter-v6-customization/SKILL.md +70 -712
  138. package/skills/cometchat-flutter-v6-events/SKILL.md +79 -174
  139. package/skills/cometchat-flutter-v6-features/SKILL.md +55 -394
  140. package/skills/cometchat-flutter-v6-migration/SKILL.md +68 -367
  141. package/skills/cometchat-flutter-v6-migration/references/migration-guide.md +131 -0
  142. package/skills/cometchat-flutter-v6-patterns/SKILL.md +61 -0
  143. package/skills/cometchat-flutter-v6-placement/SKILL.md +94 -381
  144. package/skills/cometchat-flutter-v6-production/SKILL.md +58 -615
  145. package/skills/cometchat-flutter-v6-push/SKILL.md +46 -455
  146. package/skills/cometchat-flutter-v6-testing/SKILL.md +68 -299
  147. package/skills/cometchat-flutter-v6-troubleshooting/SKILL.md +54 -878
  148. package/skills/cometchat-ios-calls/SKILL.md +112 -563
  149. package/skills/cometchat-ios-components/SKILL.md +44 -834
  150. package/skills/cometchat-ios-core/SKILL.md +181 -1068
  151. package/skills/cometchat-ios-core/references/anti-patterns.md +80 -0
  152. package/skills/cometchat-ios-core/references/docs-map.md +123 -0
  153. package/skills/cometchat-ios-core/references/install.md +23 -0
  154. package/skills/cometchat-ios-core/references/layout.md +186 -0
  155. package/skills/cometchat-ios-core/references/setup-credentials.md +197 -0
  156. package/skills/cometchat-ios-core/references/swiftui.md +91 -0
  157. package/skills/cometchat-ios-core/references/troubleshooting.md +100 -0
  158. package/skills/cometchat-ios-customization/SKILL.md +33 -968
  159. package/skills/cometchat-ios-features/SKILL.md +29 -738
  160. package/skills/cometchat-ios-migration/SKILL.md +39 -0
  161. package/skills/cometchat-ios-placement/SKILL.md +51 -729
  162. package/skills/cometchat-ios-push/SKILL.md +24 -602
  163. package/skills/cometchat-ios-v5-sdk/SKILL.md +161 -0
  164. package/skills/cometchat-ios-v5-sdk/references/docs-map.md +326 -0
  165. package/skills/cometchat-js-v5-sdk/SKILL.md +95 -0
  166. package/skills/cometchat-js-v5-sdk/references/docs-map.md +114 -0
  167. package/skills/cometchat-onboarding/SKILL.md +89 -0
  168. package/skills/cometchat-onboarding/references/archetypes.md +51 -0
  169. package/skills/cometchat-onboarding/references/calling-first.md +77 -0
  170. package/skills/cometchat-onboarding/references/not-in-this-pack.md +8 -0
  171. package/skills/cometchat-onboarding/references/plan-artifact.md +133 -0
  172. package/skills/cometchat-onboarding/references/platforms.md +90 -0
  173. package/skills/cometchat-react-native-bare-patterns/SKILL.md +120 -0
  174. package/skills/cometchat-react-native-calls/SKILL.md +200 -0
  175. package/skills/cometchat-react-native-components/SKILL.md +142 -0
  176. package/skills/cometchat-react-native-core/SKILL.md +313 -0
  177. package/skills/cometchat-react-native-core/references/anti-patterns.md +79 -0
  178. package/skills/cometchat-react-native-core/references/component-props.md +105 -0
  179. package/skills/cometchat-react-native-core/references/dependencies.md +62 -0
  180. package/skills/cometchat-react-native-core/references/docs-map.md +126 -0
  181. package/skills/cometchat-react-native-core/references/layout.md +61 -0
  182. package/skills/cometchat-react-native-core/references/lifecycle.md +64 -0
  183. package/skills/cometchat-react-native-core/references/setup-credentials.md +39 -0
  184. package/skills/cometchat-react-native-customization/SKILL.md +198 -0
  185. package/skills/cometchat-react-native-expo-patterns/SKILL.md +116 -0
  186. package/skills/cometchat-react-native-features/SKILL.md +122 -0
  187. package/skills/cometchat-react-native-migration/SKILL.md +103 -0
  188. package/skills/cometchat-react-native-placement/SKILL.md +158 -0
  189. package/skills/cometchat-react-native-production/SKILL.md +78 -0
  190. package/skills/cometchat-react-native-push/SKILL.md +88 -0
  191. package/skills/cometchat-react-native-sdk/SKILL.md +126 -0
  192. package/skills/cometchat-react-native-sdk/references/method-map.md +239 -0
  193. package/skills/cometchat-react-native-sdk/references/page-map.md +96 -0
  194. package/skills/cometchat-react-native-testing/SKILL.md +94 -0
  195. package/skills/cometchat-react-native-troubleshooting/SKILL.md +116 -0
  196. package/skills/cometchat-react-native-v5-sdk/SKILL.md +150 -0
  197. package/skills/cometchat-react-native-v5-sdk/references/docs-map.md +127 -0
  198. package/skills/cometchat-react-native-v5-sdk/references/ringing-voip.md +369 -0
  199. package/skills/cometchat-react-v7-calls/SKILL.md +75 -0
  200. package/skills/cometchat-react-v7-components/SKILL.md +72 -0
  201. package/skills/cometchat-react-v7-core/SKILL.md +101 -0
  202. package/skills/cometchat-react-v7-core/references/anti-patterns.md +19 -0
  203. package/skills/cometchat-react-v7-core/references/component-props.md +82 -0
  204. package/skills/cometchat-react-v7-core/references/dependencies.md +23 -0
  205. package/skills/cometchat-react-v7-core/references/docs-map.md +117 -0
  206. package/skills/cometchat-react-v7-core/references/i18n-rtl-a11y.md +22 -0
  207. package/skills/cometchat-react-v7-core/references/layout.md +158 -0
  208. package/skills/cometchat-react-v7-core/references/lifecycle.md +74 -0
  209. package/skills/cometchat-react-v7-core/references/setup-credentials.md +58 -0
  210. package/skills/cometchat-react-v7-core/references/ssr.md +11 -0
  211. package/skills/cometchat-react-v7-core/references/theming.md +52 -0
  212. package/skills/cometchat-react-v7-core/references/troubleshooting.md +28 -0
  213. package/skills/cometchat-react-v7-customization/SKILL.md +84 -0
  214. package/skills/cometchat-react-v7-features/SKILL.md +92 -0
  215. package/skills/cometchat-react-v7-migration/SKILL.md +39 -0
  216. package/skills/cometchat-react-v7-migration/references/migration-guide.md +119 -0
  217. package/skills/cometchat-react-v7-patterns/SKILL.md +43 -0
  218. package/skills/cometchat-react-v7-placement/SKILL.md +106 -0
  219. package/skills/cometchat-react-v7-placement/references/recipes.md +354 -0
  220. package/skills/cometchat-react-v7-push/SKILL.md +53 -0
  221. package/test-suite/README.md +70 -0
  222. package/test-suite/catalogs/android-calls-v5.json +830 -0
  223. package/test-suite/catalogs/android-calls-v5.symbols.txt +499 -0
  224. package/test-suite/catalogs/android-v6.json +1646 -0
  225. package/test-suite/catalogs/android-v6.symbols.txt +298 -0
  226. package/test-suite/catalogs/angular-v5.json +7587 -0
  227. package/test-suite/catalogs/flutter-calls-v5.json +196 -0
  228. package/test-suite/catalogs/flutter-calls-v5.symbols.txt +59 -0
  229. package/test-suite/catalogs/flutter-v6.json +651 -0
  230. package/test-suite/catalogs/ios-calls-v5.json +158 -0
  231. package/test-suite/catalogs/ios-calls-v5.symbols.txt +70 -0
  232. package/test-suite/catalogs/ios-v5.json +1383 -0
  233. package/test-suite/catalogs/ios-v5.symbols.txt +699 -0
  234. package/test-suite/catalogs/rn-calls-v5.json +134 -0
  235. package/test-suite/catalogs/rn-sdk-v4.json +672 -0
  236. package/test-suite/catalogs/rn-v5.json +449 -0
  237. package/test-suite/catalogs/sdk-android-v5.json +514 -0
  238. package/test-suite/catalogs/sdk-android-v5.symbols.txt +254 -0
  239. package/test-suite/catalogs/sdk-jsv4.json +800 -0
  240. package/test-suite/catalogs/web-calls-v5.json +195 -0
  241. package/test-suite/catalogs/web-v7.json +1243 -0
  242. package/test-suite/scripts/build-registry.mjs +113 -0
  243. package/test-suite/scripts/catalog-refresh-dart.mjs +151 -0
  244. package/test-suite/scripts/catalog-refresh.mjs +100 -0
  245. package/test-suite/scripts/lint-skills.mjs +909 -0
  246. package/test-suite/scripts/measure-tokens.mjs +169 -0
  247. package/test-suite/scripts/typecheck-fences-dart.mjs +437 -0
  248. package/test-suite/scripts/typecheck-fences-kotlin.mjs +269 -0
  249. package/test-suite/scripts/typecheck-fences.mjs +206 -0
  250. package/test-suite/scripts/verify-catalog.mjs +242 -0
  251. package/test-suite/scripts/verify-contract-fences.mjs +94 -0
  252. package/test-suite/scripts/verify-detection.mjs +178 -0
  253. package/test-suite/scripts/verify-docs-base.mjs +91 -0
  254. package/test-suite/scripts/verify-family-agnostic.mjs +130 -0
  255. package/test-suite/scripts/verify-golden-path.mjs +138 -0
  256. package/test-suite/scripts/verify-oracle-components.mjs +133 -0
  257. package/test-suite/scripts/verify-template-bindings.mjs +148 -0
  258. package/test-suite/typecheck/angular-v5/package.json +21 -0
  259. package/test-suite/typecheck/angular-v5/tsconfig.json +21 -0
  260. package/test-suite/typecheck/flutter-v6/analysis_options.yaml +25 -0
  261. package/test-suite/typecheck/flutter-v6/pubspec.yaml +21 -0
  262. package/test-suite/typecheck/web-v7/package.json +18 -0
  263. package/test-suite/typecheck/web-v7/tsconfig.json +19 -0
  264. package/bin/install.js +0 -1003
  265. package/skills/.claude-plugin/marketplace.json +0 -86
  266. package/skills/cometchat/references/asking-questions.md +0 -48
  267. package/skills/cometchat-a11y/SKILL.md +0 -477
  268. package/skills/cometchat-android-v5/SKILL.md +0 -121
  269. package/skills/cometchat-android-v5-calls/SKILL.md +0 -429
  270. package/skills/cometchat-android-v5-calls/references/README.md +0 -53
  271. package/skills/cometchat-android-v5-calls/references/add-calls-to-existing-chat.md +0 -197
  272. package/skills/cometchat-android-v5-calls/references/audio-controls.md +0 -91
  273. package/skills/cometchat-android-v5-calls/references/background-handling.md +0 -168
  274. package/skills/cometchat-android-v5-calls/references/call-layouts.md +0 -131
  275. package/skills/cometchat-android-v5-calls/references/call-logs.md +0 -113
  276. package/skills/cometchat-android-v5-calls/references/call-session.md +0 -274
  277. package/skills/cometchat-android-v5-calls/references/custom-ui.md +0 -150
  278. package/skills/cometchat-android-v5-calls/references/event-listeners.md +0 -123
  279. package/skills/cometchat-android-v5-calls/references/group-calls.md +0 -205
  280. package/skills/cometchat-android-v5-calls/references/idle-timeout.md +0 -117
  281. package/skills/cometchat-android-v5-calls/references/in-call-chat.md +0 -134
  282. package/skills/cometchat-android-v5-calls/references/join-session.md +0 -120
  283. package/skills/cometchat-android-v5-calls/references/migration-v4-to-v5.md +0 -222
  284. package/skills/cometchat-android-v5-calls/references/participant-management.md +0 -110
  285. package/skills/cometchat-android-v5-calls/references/picture-in-picture.md +0 -106
  286. package/skills/cometchat-android-v5-calls/references/raise-hand.md +0 -248
  287. package/skills/cometchat-android-v5-calls/references/recording.md +0 -101
  288. package/skills/cometchat-android-v5-calls/references/ringing-integration.md +0 -152
  289. package/skills/cometchat-android-v5-calls/references/screen-sharing.md +0 -78
  290. package/skills/cometchat-android-v5-calls/references/server-fcm-voip.md +0 -215
  291. package/skills/cometchat-android-v5-calls/references/session-settings.md +0 -121
  292. package/skills/cometchat-android-v5-calls/references/setup.md +0 -137
  293. package/skills/cometchat-android-v5-calls/references/share-invite.md +0 -156
  294. package/skills/cometchat-android-v5-calls/references/video-controls.md +0 -87
  295. package/skills/cometchat-android-v5-calls/references/voip-calling.md +0 -526
  296. package/skills/cometchat-android-v5-components/SKILL.md +0 -431
  297. package/skills/cometchat-android-v5-core/SKILL.md +0 -486
  298. package/skills/cometchat-android-v5-customization/SKILL.md +0 -469
  299. package/skills/cometchat-android-v5-extensions/SKILL.md +0 -127
  300. package/skills/cometchat-android-v5-features/SKILL.md +0 -131
  301. package/skills/cometchat-android-v5-placement/SKILL.md +0 -277
  302. package/skills/cometchat-android-v5-production/SKILL.md +0 -95
  303. package/skills/cometchat-android-v5-push/SKILL.md +0 -619
  304. package/skills/cometchat-android-v5-testing/SKILL.md +0 -188
  305. package/skills/cometchat-android-v5-theming/SKILL.md +0 -167
  306. package/skills/cometchat-android-v5-troubleshooting/SKILL.md +0 -74
  307. package/skills/cometchat-android-v6/SKILL.md +0 -108
  308. package/skills/cometchat-android-v6-calls/references/add-calls-to-existing-chat.md +0 -97
  309. package/skills/cometchat-android-v6-calls/references/advanced-features.md +0 -87
  310. package/skills/cometchat-android-v6-calls/references/call-layouts.md +0 -100
  311. package/skills/cometchat-android-v6-calls/references/call-session.md +0 -163
  312. package/skills/cometchat-android-v6-calls/references/device-management.md +0 -172
  313. package/skills/cometchat-android-v6-calls/references/group-calls.md +0 -191
  314. package/skills/cometchat-android-v6-calls/references/idle-timeout.md +0 -110
  315. package/skills/cometchat-android-v6-calls/references/in-call-chat.md +0 -141
  316. package/skills/cometchat-android-v6-calls/references/raise-hand.md +0 -188
  317. package/skills/cometchat-android-v6-calls/references/ringing-integration.md +0 -176
  318. package/skills/cometchat-android-v6-calls/references/server-fcm-voip.md +0 -127
  319. package/skills/cometchat-android-v6-calls/references/share-invite.md +0 -105
  320. package/skills/cometchat-android-v6-compose-theming/SKILL.md +0 -250
  321. package/skills/cometchat-android-v6-kotlin-theming/SKILL.md +0 -233
  322. package/skills/cometchat-angular-calls/SKILL.md +0 -380
  323. package/skills/cometchat-angular-calls/references/add-calls-to-existing-chat.md +0 -96
  324. package/skills/cometchat-angular-calls/references/call-layouts.md +0 -123
  325. package/skills/cometchat-angular-calls/references/call-session.md +0 -167
  326. package/skills/cometchat-angular-calls/references/custom-ui.md +0 -239
  327. package/skills/cometchat-angular-calls/references/device-management.md +0 -154
  328. package/skills/cometchat-angular-calls/references/group-calls.md +0 -433
  329. package/skills/cometchat-angular-calls/references/idle-timeout.md +0 -161
  330. package/skills/cometchat-angular-calls/references/in-call-chat.md +0 -148
  331. package/skills/cometchat-angular-calls/references/lazy-loading-pitfalls.md +0 -205
  332. package/skills/cometchat-angular-calls/references/migration-v4-to-v5.md +0 -53
  333. package/skills/cometchat-angular-calls/references/ngzone-and-async-callbacks.md +0 -184
  334. package/skills/cometchat-angular-calls/references/picture-in-picture.md +0 -285
  335. package/skills/cometchat-angular-calls/references/raise-hand.md +0 -172
  336. package/skills/cometchat-angular-calls/references/recording-screen-share.md +0 -260
  337. package/skills/cometchat-angular-calls/references/ringing-integration.md +0 -133
  338. package/skills/cometchat-angular-calls/references/server-web-push-vapid.md +0 -100
  339. package/skills/cometchat-angular-calls/references/share-invite.md +0 -122
  340. package/skills/cometchat-angular-calls/references/virtual-background.md +0 -29
  341. package/skills/cometchat-angular-components/SKILL.md +0 -235
  342. package/skills/cometchat-angular-core/SKILL.md +0 -386
  343. package/skills/cometchat-angular-customization/SKILL.md +0 -616
  344. package/skills/cometchat-angular-features/SKILL.md +0 -329
  345. package/skills/cometchat-angular-patterns/SKILL.md +0 -256
  346. package/skills/cometchat-angular-placement/SKILL.md +0 -314
  347. package/skills/cometchat-angular-production/SKILL.md +0 -564
  348. package/skills/cometchat-angular-push/SKILL.md +0 -389
  349. package/skills/cometchat-angular-testing/SKILL.md +0 -605
  350. package/skills/cometchat-angular-theming/SKILL.md +0 -290
  351. package/skills/cometchat-angular-troubleshooting/SKILL.md +0 -364
  352. package/skills/cometchat-astro-patterns/SKILL.md +0 -708
  353. package/skills/cometchat-calls/SKILL.md +0 -364
  354. package/skills/cometchat-calls/references/use-case-broadcast.md +0 -199
  355. package/skills/cometchat-calls/references/use-case-marketplace.md +0 -157
  356. package/skills/cometchat-calls/references/use-case-support.md +0 -189
  357. package/skills/cometchat-calls/references/use-case-team.md +0 -180
  358. package/skills/cometchat-calls/references/use-case-telehealth.md +0 -153
  359. package/skills/cometchat-components/SKILL.md +0 -1142
  360. package/skills/cometchat-core/SKILL.md +0 -1048
  361. package/skills/cometchat-customization/SKILL.md +0 -580
  362. package/skills/cometchat-customization/references/component-catalog.md +0 -236
  363. package/skills/cometchat-features/SKILL.md +0 -861
  364. package/skills/cometchat-flutter-v5/SKILL.md +0 -173
  365. package/skills/cometchat-flutter-v5-calls/SKILL.md +0 -455
  366. package/skills/cometchat-flutter-v5-calls/references/add-calls-to-existing-chat.md +0 -193
  367. package/skills/cometchat-flutter-v5-calls/references/call-layouts.md +0 -103
  368. package/skills/cometchat-flutter-v5-calls/references/call-session.md +0 -285
  369. package/skills/cometchat-flutter-v5-calls/references/device-management.md +0 -124
  370. package/skills/cometchat-flutter-v5-calls/references/group-calls.md +0 -181
  371. package/skills/cometchat-flutter-v5-calls/references/idle-timeout.md +0 -99
  372. package/skills/cometchat-flutter-v5-calls/references/in-call-chat.md +0 -135
  373. package/skills/cometchat-flutter-v5-calls/references/migration-v4-to-v5.md +0 -210
  374. package/skills/cometchat-flutter-v5-calls/references/raise-hand.md +0 -255
  375. package/skills/cometchat-flutter-v5-calls/references/ringing-integration.md +0 -196
  376. package/skills/cometchat-flutter-v5-calls/references/server-push-bridge.md +0 -101
  377. package/skills/cometchat-flutter-v5-calls/references/share-invite.md +0 -148
  378. package/skills/cometchat-flutter-v5-conversations/SKILL.md +0 -118
  379. package/skills/cometchat-flutter-v5-core/SKILL.md +0 -239
  380. package/skills/cometchat-flutter-v5-customization/SKILL.md +0 -358
  381. package/skills/cometchat-flutter-v5-events/SKILL.md +0 -156
  382. package/skills/cometchat-flutter-v5-messages/SKILL.md +0 -259
  383. package/skills/cometchat-flutter-v5-production/SKILL.md +0 -216
  384. package/skills/cometchat-flutter-v5-push/SKILL.md +0 -285
  385. package/skills/cometchat-flutter-v5-testing/SKILL.md +0 -401
  386. package/skills/cometchat-flutter-v5-theming/SKILL.md +0 -161
  387. package/skills/cometchat-flutter-v5-troubleshooting/SKILL.md +0 -130
  388. package/skills/cometchat-flutter-v5-users-groups/SKILL.md +0 -152
  389. package/skills/cometchat-flutter-v6/SKILL.md +0 -446
  390. package/skills/cometchat-flutter-v6-calls/references/add-calls-to-existing-chat.md +0 -136
  391. package/skills/cometchat-flutter-v6-calls/references/advanced-features.md +0 -89
  392. package/skills/cometchat-flutter-v6-calls/references/call-layouts.md +0 -105
  393. package/skills/cometchat-flutter-v6-calls/references/call-session.md +0 -229
  394. package/skills/cometchat-flutter-v6-calls/references/device-management.md +0 -105
  395. package/skills/cometchat-flutter-v6-calls/references/group-calls.md +0 -190
  396. package/skills/cometchat-flutter-v6-calls/references/idle-timeout.md +0 -88
  397. package/skills/cometchat-flutter-v6-calls/references/in-call-chat.md +0 -125
  398. package/skills/cometchat-flutter-v6-calls/references/raise-hand.md +0 -275
  399. package/skills/cometchat-flutter-v6-calls/references/ringing-integration.md +0 -171
  400. package/skills/cometchat-flutter-v6-calls/references/server-push-bridge.md +0 -93
  401. package/skills/cometchat-flutter-v6-calls/references/share-invite.md +0 -102
  402. package/skills/cometchat-flutter-v6-conversations/SKILL.md +0 -238
  403. package/skills/cometchat-flutter-v6-messages/SKILL.md +0 -384
  404. package/skills/cometchat-flutter-v6-theming/SKILL.md +0 -293
  405. package/skills/cometchat-flutter-v6-users-groups/SKILL.md +0 -224
  406. package/skills/cometchat-i18n/SKILL.md +0 -419
  407. package/skills/cometchat-ios/SKILL.md +0 -325
  408. package/skills/cometchat-ios-calls/references/add-calls-to-existing-chat.md +0 -181
  409. package/skills/cometchat-ios-calls/references/audio-modes-and-controls.md +0 -45
  410. package/skills/cometchat-ios-calls/references/avaudiosession-routing.md +0 -188
  411. package/skills/cometchat-ios-calls/references/call-layouts.md +0 -76
  412. package/skills/cometchat-ios-calls/references/call-session.md +0 -218
  413. package/skills/cometchat-ios-calls/references/callkit-and-pushkit.md +0 -357
  414. package/skills/cometchat-ios-calls/references/custom-ui.md +0 -322
  415. package/skills/cometchat-ios-calls/references/device-management.md +0 -171
  416. package/skills/cometchat-ios-calls/references/group-calls.md +0 -359
  417. package/skills/cometchat-ios-calls/references/idle-timeout.md +0 -184
  418. package/skills/cometchat-ios-calls/references/in-call-chat.md +0 -179
  419. package/skills/cometchat-ios-calls/references/migration-v4-to-v5.md +0 -196
  420. package/skills/cometchat-ios-calls/references/picture-in-picture.md +0 -246
  421. package/skills/cometchat-ios-calls/references/raise-hand.md +0 -26
  422. package/skills/cometchat-ios-calls/references/recording-screen-share.md +0 -252
  423. package/skills/cometchat-ios-calls/references/ringing-integration.md +0 -143
  424. package/skills/cometchat-ios-calls/references/server-apns-pushkit.md +0 -267
  425. package/skills/cometchat-ios-calls/references/share-invite.md +0 -148
  426. package/skills/cometchat-ios-calls/references/swiftui-uikit-hosting.md +0 -246
  427. package/skills/cometchat-ios-calls/references/voip-cert-setup.md +0 -166
  428. package/skills/cometchat-ios-production/SKILL.md +0 -738
  429. package/skills/cometchat-ios-testing/SKILL.md +0 -376
  430. package/skills/cometchat-ios-theming/SKILL.md +0 -667
  431. package/skills/cometchat-ios-troubleshooting/SKILL.md +0 -1003
  432. package/skills/cometchat-native-bare-patterns/SKILL.md +0 -550
  433. package/skills/cometchat-native-calls/SKILL.md +0 -671
  434. package/skills/cometchat-native-calls/references/add-calls-to-existing-chat.md +0 -203
  435. package/skills/cometchat-native-calls/references/call-layouts.md +0 -125
  436. package/skills/cometchat-native-calls/references/call-session.md +0 -182
  437. package/skills/cometchat-native-calls/references/custom-ui.md +0 -254
  438. package/skills/cometchat-native-calls/references/device-management.md +0 -158
  439. package/skills/cometchat-native-calls/references/expo-vs-bare.md +0 -179
  440. package/skills/cometchat-native-calls/references/group-calls.md +0 -296
  441. package/skills/cometchat-native-calls/references/idle-timeout.md +0 -128
  442. package/skills/cometchat-native-calls/references/in-call-chat.md +0 -145
  443. package/skills/cometchat-native-calls/references/migration-v4-to-v5.md +0 -72
  444. package/skills/cometchat-native-calls/references/picture-in-picture.md +0 -276
  445. package/skills/cometchat-native-calls/references/raise-hand.md +0 -205
  446. package/skills/cometchat-native-calls/references/recording-screen-share.md +0 -169
  447. package/skills/cometchat-native-calls/references/ringing-integration.md +0 -118
  448. package/skills/cometchat-native-calls/references/server-push-bridge.md +0 -135
  449. package/skills/cometchat-native-calls/references/server-push-payloads.md +0 -193
  450. package/skills/cometchat-native-calls/references/share-invite.md +0 -146
  451. package/skills/cometchat-native-calls/references/voip-push-end-to-end.md +0 -319
  452. package/skills/cometchat-native-components/SKILL.md +0 -628
  453. package/skills/cometchat-native-core/SKILL.md +0 -679
  454. package/skills/cometchat-native-customization/SKILL.md +0 -716
  455. package/skills/cometchat-native-expo-patterns/SKILL.md +0 -552
  456. package/skills/cometchat-native-features/SKILL.md +0 -638
  457. package/skills/cometchat-native-placement/SKILL.md +0 -509
  458. package/skills/cometchat-native-production/SKILL.md +0 -700
  459. package/skills/cometchat-native-push/SKILL.md +0 -594
  460. package/skills/cometchat-native-testing/SKILL.md +0 -582
  461. package/skills/cometchat-native-theming/SKILL.md +0 -681
  462. package/skills/cometchat-native-troubleshooting/SKILL.md +0 -501
  463. package/skills/cometchat-nextjs-patterns/SKILL.md +0 -899
  464. package/skills/cometchat-placement/SKILL.md +0 -1360
  465. package/skills/cometchat-production/SKILL.md +0 -1027
  466. package/skills/cometchat-react-calls/SKILL.md +0 -752
  467. package/skills/cometchat-react-calls/references/add-calls-to-existing-chat.md +0 -146
  468. package/skills/cometchat-react-calls/references/call-layouts.md +0 -160
  469. package/skills/cometchat-react-calls/references/call-session.md +0 -235
  470. package/skills/cometchat-react-calls/references/custom-ui.md +0 -247
  471. package/skills/cometchat-react-calls/references/device-management.md +0 -210
  472. package/skills/cometchat-react-calls/references/group-calls.md +0 -257
  473. package/skills/cometchat-react-calls/references/idle-timeout.md +0 -188
  474. package/skills/cometchat-react-calls/references/in-call-chat.md +0 -212
  475. package/skills/cometchat-react-calls/references/migration-v4-to-v5.md +0 -170
  476. package/skills/cometchat-react-calls/references/picture-in-picture.md +0 -245
  477. package/skills/cometchat-react-calls/references/raise-hand.md +0 -238
  478. package/skills/cometchat-react-calls/references/recording-screen-share.md +0 -144
  479. package/skills/cometchat-react-calls/references/ringing-integration.md +0 -255
  480. package/skills/cometchat-react-calls/references/server-web-push-vapid.md +0 -241
  481. package/skills/cometchat-react-calls/references/share-invite.md +0 -175
  482. package/skills/cometchat-react-calls/references/testing-calls-on-web.md +0 -216
  483. package/skills/cometchat-react-calls/references/virtual-background.md +0 -32
  484. package/skills/cometchat-react-calls/references/voip-and-web-push.md +0 -165
  485. package/skills/cometchat-react-patterns/SKILL.md +0 -628
  486. package/skills/cometchat-react-push/SKILL.md +0 -634
  487. package/skills/cometchat-react-router-patterns/SKILL.md +0 -758
  488. package/skills/cometchat-react-testing/SKILL.md +0 -413
  489. package/skills/cometchat-theming/SKILL.md +0 -498
  490. package/skills/cometchat-troubleshooting/SKILL.md +0 -294
@@ -0,0 +1,727 @@
1
+ {
2
+ "generatedFrom": "contracts.json (web-react v7) adapted for React Native — capabilities validated against @cometchat/chat-uikit-react-native@5.4.0 (catalogs/rn-v5.json) and the live RN docs. Web-only layout capabilities are REPLACED by their native equivalents, not dropped: the PRINCIPLE (the kit fills its container and must not reflow between loading and loaded) is universal; the RECIPE is per-platform.",
3
+ "family": "rn",
4
+ "major": "v5",
5
+ "capabilityDetectors": {
6
+ "root-error-boundary": {
7
+ "kind": "regex",
8
+ "any": [
9
+ "onError\\s*=",
10
+ "ErrorBoundary",
11
+ "try\\s*{"
12
+ ],
13
+ "why": "RN has no CometChatErrorBoundary export; the emit wires component onError callbacks (or a plain RN error boundary) so failures surface."
14
+ },
15
+ "init-login-gate": {
16
+ "kind": "unchecked",
17
+ "why": "the review harness performs init+login (and provider chain) before mounting the emit, so an emit that assumed a logged-in provider is correct; ordering is proven by the SDK-surface contracts, not by a UI-Kit component emit."
18
+ },
19
+ "conversations-list": {
20
+ "kind": "regex",
21
+ "any": [
22
+ "<CometChatConversations"
23
+ ],
24
+ "why": "the conversation list drop-in is rendered."
25
+ },
26
+ "message-pane-header-list-composer": {
27
+ "kind": "regex",
28
+ "all": [
29
+ "<CometChatMessageHeader",
30
+ "<CometChatMessageList",
31
+ "<CometChat(?:Compact)?MessageComposer"
32
+ ],
33
+ "why": "header + list + composer are all present — the message pane is the full trio, not a partial surface."
34
+ },
35
+ "threaded-replies-panel-default": {
36
+ "kind": "regex",
37
+ "all": [
38
+ "<CometChatThreadHeader",
39
+ "onThreadRepliesPress"
40
+ ],
41
+ "why": "a thread surface (CometChatThreadHeader) exists AND is entered from the list's onThreadRepliesPress."
42
+ },
43
+ "thread-surface-differentiated": {
44
+ "kind": "regex",
45
+ "all": [
46
+ "parentMessageId",
47
+ "<CometChatThreadHeader"
48
+ ],
49
+ "why": "the thread screen scopes its list/composer with parentMessageId and shows a thread header — a distinct surface, not the main pane."
50
+ },
51
+ "in-chat-message-search-default": {
52
+ "kind": "regex",
53
+ "any": [
54
+ "uid=\\{?[^}]*getUid",
55
+ "guid=\\{?[^}]*getGuid",
56
+ "<CometChatSearch"
57
+ ],
58
+ "why": "in-chat search is reachable and CometChatSearch can be scoped to the open conversation via uid/guid."
59
+ },
60
+ "global-conversation-search": {
61
+ "kind": "regex",
62
+ "why": "global search is rendered AND entered from CometChatConversations' OWN search bar affordance (showSearchBar + onSearchBarClick) — NOT a standalone <CometChatSearch> stacked above the list. Tapping the conversation list's search bar opens the search view (parity with React onSearchBarClicked / Angular searchBarClick / iOS onSearchClick).",
63
+ "all": [
64
+ "CometChatSearch",
65
+ "SearchBarClick"
66
+ ]
67
+ },
68
+ "affordances-wired-or-hidden": {
69
+ "kind": "unchecked",
70
+ "why": "already enforced by G3 (no-dead-affordance) via golden.forbiddenHandRoll/defaultOnAffordances — re-checking here would double-gate the same property."
71
+ },
72
+ "active-item-reflected": {
73
+ "kind": "unchecked",
74
+ "why": "a behaviour the KIT renders once the component is mounted with a target — not something the emit's own source can evidence; proven transitively by mounting the drop-in (RN static family has no G6, so the visibility is a kit guarantee, mirrored from ios-v5)."
75
+ },
76
+ "panel-close-round-trip": {
77
+ "kind": "regex",
78
+ "any": [
79
+ "goBack\\(",
80
+ "navigation\\.pop",
81
+ "onBack\\s*=",
82
+ "navigate\\("
83
+ ],
84
+ "why": "anything opened (thread/search/detail) can be dismissed — onBack/goBack is wired, so no opened surface is a dead end."
85
+ },
86
+ "safe-area-ancestor-chain": {
87
+ "kind": "unchecked",
88
+ "why": "the SafeAreaProvider/SafeAreaView chain lives in the app shell (provider chain), which the harness supplies; a single feature emit mounts inside it and does not re-declare it. Prose-verified in core skill."
89
+ },
90
+ "flex-fill-screen-height": {
91
+ "kind": "regex",
92
+ "any": [
93
+ "flex:\\s*1"
94
+ ],
95
+ "why": "the screen root uses flex:1 (RN replacement for 100dvh) so the kit fills its container."
96
+ },
97
+ "flex-min-height-0": {
98
+ "kind": "regex",
99
+ "any": [
100
+ "minHeight:\\s*0",
101
+ "flex:\\s*1"
102
+ ],
103
+ "why": "a scrolling column uses flex:1 (+ minHeight:0 where a nested scroll needs it) — RN replacement for column-min-height:0."
104
+ },
105
+ "no-load-transition-reflow": {
106
+ "kind": "unchecked",
107
+ "why": "the kit renders skeletons/loading states internally and keeps its frame; not evidenceable from emit source (no G6 on a static family)."
108
+ },
109
+ "one-screen-per-route": {
110
+ "kind": "regex",
111
+ "any": [
112
+ "Stack\\.Screen",
113
+ "createNativeStackNavigator",
114
+ "navigation\\.navigate"
115
+ ],
116
+ "why": "each pane is its OWN screen on a stack navigator — RN replacement for responsive-one-pane; no side-by-side panes."
117
+ },
118
+ "prod-auth-token-guidance": {
119
+ "kind": "unchecked",
120
+ "why": "prose guidance in the skill text, not code in the emit — covered by the skill's guidance section, not statically evidenceable in a feature emit."
121
+ },
122
+ "keyboard-avoidance": {
123
+ "kind": "unchecked",
124
+ "why": "RN-only: the kit composer handles keyboard avoidance internally; an emit must NOT hand-roll a KeyboardAvoidingView around the composer (that double-pins). Kit guarantee, not emit-evidenceable; the anti-pattern is caught by G2/G3 hand-roll checks."
125
+ },
126
+ "selector-conversations": {
127
+ "kind": "regex",
128
+ "any": [
129
+ "<CometChatConversations"
130
+ ],
131
+ "why": "the conversations selector is present."
132
+ },
133
+ "selector-users-groups-calls-tabs": {
134
+ "kind": "regex",
135
+ "any": [
136
+ "<CometChatUsers",
137
+ "<CometChatGroups",
138
+ "<CometChatCallLogs",
139
+ "Tab"
140
+ ],
141
+ "why": "users/groups/calls are reachable as distinct tabs or screens."
142
+ },
143
+ "side-panel-user-group-details": {
144
+ "kind": "regex",
145
+ "any": [
146
+ "navigate\\(\\s*[\"']?Details",
147
+ "DetailsScreen",
148
+ "getGuid",
149
+ "getUid"
150
+ ],
151
+ "why": "user/group details are reachable as a pushed screen (RN has no side panel — it is a route)."
152
+ },
153
+ "side-panel-thread": {
154
+ "kind": "regex",
155
+ "all": [
156
+ "<CometChatThreadHeader"
157
+ ],
158
+ "why": "the thread surface exists as a pushed screen (RN native equivalent of the web side panel)."
159
+ },
160
+ "side-panel-or-column-search": {
161
+ "kind": "regex",
162
+ "any": [
163
+ "<CometChatSearch",
164
+ "SearchBarClick",
165
+ "navigate\\(\\s*[\"']?Search"
166
+ ],
167
+ "why": "search is reachable as a pushed screen."
168
+ },
169
+ "incoming-call-handling": {
170
+ "kind": "regex",
171
+ "any": [
172
+ "<CometChatIncomingCall",
173
+ "CometChatCalls",
174
+ "CallListener",
175
+ "addCallListener"
176
+ ],
177
+ "why": "incoming calls are handled by CometChatIncomingCall or a call listener."
178
+ },
179
+ "no-dead-end-affordances": {
180
+ "kind": "unchecked",
181
+ "why": "already enforced by G3 (no-dead-affordance) via golden.forbiddenHandRoll/defaultOnAffordances — re-checking here would double-gate the same property."
182
+ },
183
+ "conversation-list": {
184
+ "kind": "unchecked",
185
+ "why": "a behaviour the KIT renders once the component is mounted with a target — not something the emit's own source can evidence; proven transitively by mounting the drop-in (RN static family has no G6, so the visibility is a kit guarantee, mirrored from ios-v5)."
186
+ },
187
+ "last-message-preview": {
188
+ "kind": "unchecked",
189
+ "why": "a behaviour the KIT renders once the component is mounted with a target — not something the emit's own source can evidence; proven transitively by mounting the drop-in (RN static family has no G6, so the visibility is a kit guarantee, mirrored from ios-v5)."
190
+ },
191
+ "unread-count": {
192
+ "kind": "unchecked",
193
+ "why": "a behaviour the KIT renders once the component is mounted with a target — not something the emit's own source can evidence; proven transitively by mounting the drop-in (RN static family has no G6, so the visibility is a kit guarantee, mirrored from ios-v5)."
194
+ },
195
+ "delete-conversation": {
196
+ "kind": "unchecked",
197
+ "why": "a behaviour the KIT renders once the component is mounted with a target — not something the emit's own source can evidence; proven transitively by mounting the drop-in (RN static family has no G6, so the visibility is a kit guarantee, mirrored from ios-v5). (swipe/long-press delete is a kit-provided list option)."
198
+ },
199
+ "search": {
200
+ "kind": "regex",
201
+ "any": [
202
+ "showSearchBar",
203
+ "onSearchBarClick",
204
+ "<CometChatSearch"
205
+ ],
206
+ "why": "a search affordance is wired (showSearchBar / onSearchBarClicked / CometChatSearch)."
207
+ },
208
+ "presence": {
209
+ "kind": "unchecked",
210
+ "why": "a behaviour the KIT renders once the component is mounted with a target — not something the emit's own source can evidence; proven transitively by mounting the drop-in (RN static family has no G6, so the visibility is a kit guarantee, mirrored from ios-v5)."
211
+ },
212
+ "receipts": {
213
+ "kind": "unchecked",
214
+ "why": "a behaviour the KIT renders once the component is mounted with a target — not something the emit's own source can evidence; proven transitively by mounting the drop-in (RN static family has no G6, so the visibility is a kit guarantee, mirrored from ios-v5)."
215
+ },
216
+ "infinite-scroll": {
217
+ "kind": "unchecked",
218
+ "why": "a behaviour the KIT renders once the component is mounted with a target — not something the emit's own source can evidence; proven transitively by mounting the drop-in (RN static family has no G6, so the visibility is a kit guarantee, mirrored from ios-v5). (pagination is the kit's ConversationsRequestBuilder, not emit code)."
219
+ },
220
+ "realtime-updates": {
221
+ "kind": "unchecked",
222
+ "why": "a behaviour the KIT renders once the component is mounted with a target — not something the emit's own source can evidence; proven transitively by mounting the drop-in (RN static family has no G6, so the visibility is a kit guarantee, mirrored from ios-v5)."
223
+ },
224
+ "view-members": {
225
+ "kind": "regex",
226
+ "any": [
227
+ "<CometChatGroupMembers"
228
+ ],
229
+ "why": "the group members drop-in is rendered."
230
+ },
231
+ "kick-member": {
232
+ "kind": "unchecked",
233
+ "why": "a behaviour the KIT renders once the component is mounted with a target — not something the emit's own source can evidence; proven transitively by mounting the drop-in (RN static family has no G6, so the visibility is a kit guarantee, mirrored from ios-v5). (kick is a kit-provided member option)."
234
+ },
235
+ "ban-member": {
236
+ "kind": "unchecked",
237
+ "why": "a behaviour the KIT renders once the component is mounted with a target — not something the emit's own source can evidence; proven transitively by mounting the drop-in (RN static family has no G6, so the visibility is a kit guarantee, mirrored from ios-v5). (ban is a kit-provided member option)."
238
+ },
239
+ "view-banned-members": {
240
+ "kind": "unchecked",
241
+ "why": "a behaviour the KIT renders once the component is mounted with a target — not something the emit's own source can evidence; proven transitively by mounting the drop-in (RN static family has no G6, so the visibility is a kit guarantee, mirrored from ios-v5). (RN has no CometChatBannedMembers export; banned members are a kit option / SDK-fallback)."
242
+ },
243
+ "change-scope": {
244
+ "kind": "unchecked",
245
+ "why": "a behaviour the KIT renders once the component is mounted with a target — not something the emit's own source can evidence; proven transitively by mounting the drop-in (RN static family has no G6, so the visibility is a kit guarantee, mirrored from ios-v5). (scope change is a kit-provided member option)."
246
+ },
247
+ "search-members": {
248
+ "kind": "regex",
249
+ "any": [
250
+ "<CometChatGroupMembers",
251
+ "searchRequestBuilder",
252
+ "showSearch"
253
+ ],
254
+ "why": "member search is available on the CometChatGroupMembers drop-in."
255
+ },
256
+ "render-messages": {
257
+ "kind": "regex",
258
+ "any": [
259
+ "<CometChatMessageList"
260
+ ],
261
+ "why": "the message list drop-in is rendered."
262
+ },
263
+ "message-bubbles-by-type": {
264
+ "kind": "unchecked",
265
+ "why": "a behaviour the KIT renders once the component is mounted with a target — not something the emit's own source can evidence; proven transitively by mounting the drop-in (RN static family has no G6, so the visibility is a kit guarantee, mirrored from ios-v5)."
266
+ },
267
+ "delivery-read-receipts": {
268
+ "kind": "unchecked",
269
+ "why": "a behaviour the KIT renders once the component is mounted with a target — not something the emit's own source can evidence; proven transitively by mounting the drop-in (RN static family has no G6, so the visibility is a kit guarantee, mirrored from ios-v5)."
270
+ },
271
+ "reactions-when-enabled": {
272
+ "kind": "unchecked",
273
+ "why": "a behaviour the KIT renders once the component is mounted with a target — not something the emit's own source can evidence; proven transitively by mounting the drop-in (RN static family has no G6, so the visibility is a kit guarantee, mirrored from ios-v5). (reactions are ON by default in v5)."
274
+ },
275
+ "thread-open": {
276
+ "kind": "regex",
277
+ "any": [
278
+ "onThreadRepliesPress"
279
+ ],
280
+ "why": "threads open from the list's onThreadRepliesPress."
281
+ },
282
+ "send-text": {
283
+ "kind": "regex",
284
+ "any": [
285
+ "<CometChat(?:Compact)?MessageComposer"
286
+ ],
287
+ "why": "the composer drop-in provides text send."
288
+ },
289
+ "attach-media-file": {
290
+ "kind": "unchecked",
291
+ "why": "a behaviour the KIT renders once the component is mounted with a target — not something the emit's own source can evidence; proven transitively by mounting the drop-in (RN static family has no G6, so the visibility is a kit guarantee, mirrored from ios-v5). (the kit composer's attachment options; must NOT be hand-rolled — G2 owns that)."
292
+ },
293
+ "emoji": {
294
+ "kind": "unchecked",
295
+ "why": "a behaviour the KIT renders once the component is mounted with a target — not something the emit's own source can evidence; proven transitively by mounting the drop-in (RN static family has no G6, so the visibility is a kit guarantee, mirrored from ios-v5). (the kit composer's emoji keyboard)."
296
+ },
297
+ "voice-recording": {
298
+ "kind": "unchecked",
299
+ "why": "a behaviour the KIT renders once the component is mounted with a target — not something the emit's own source can evidence; proven transitively by mounting the drop-in (RN static family has no G6, so the visibility is a kit guarantee, mirrored from ios-v5). (the kit composer's voice-note recorder — react-native-video peer dep)."
300
+ },
301
+ "initiate-call": {
302
+ "kind": "regex",
303
+ "any": [
304
+ "<CometChatCallButtons",
305
+ "onVoiceCallPress",
306
+ "onVideoCallPress",
307
+ "onVoiceCall",
308
+ "onVideoCall",
309
+ "startCall"
310
+ ],
311
+ "why": "a call can be initiated via CometChatCallButtons or a programmatic start."
312
+ },
313
+ "incoming-call-ui": {
314
+ "kind": "regex",
315
+ "any": [
316
+ "<CometChatIncomingCall",
317
+ "CometChatCalls",
318
+ "CallListener"
319
+ ],
320
+ "why": "incoming call UI is wired."
321
+ },
322
+ "outgoing-call-ui": {
323
+ "kind": "regex",
324
+ "any": [
325
+ "<CometChatOutgoingCall",
326
+ "<CometChatOngoingCall",
327
+ "CometChatCalls"
328
+ ],
329
+ "why": "outgoing/ongoing call UI is present."
330
+ },
331
+ "call-logs": {
332
+ "kind": "regex",
333
+ "any": [
334
+ "<CometChatCallLogs"
335
+ ],
336
+ "why": "the call logs drop-in is rendered."
337
+ },
338
+ "init-before-anything": {
339
+ "kind": "regex",
340
+ "any": [
341
+ "initFromSettings",
342
+ "CometChatUIKit\\.init",
343
+ "CometChat\\.init"
344
+ ],
345
+ "why": "init runs before anything else."
346
+ },
347
+ "init-then-login-ordering": {
348
+ "kind": "regex",
349
+ "all": [
350
+ "initFromSettings|CometChatUIKit\\.init|CometChat\\.init",
351
+ "\\.login\\("
352
+ ],
353
+ "why": "init resolves before login (ordering present in source)."
354
+ },
355
+ "send-message": {
356
+ "kind": "regex",
357
+ "any": [
358
+ "sendMessage\\(",
359
+ "<CometChat(?:Compact)?MessageComposer"
360
+ ],
361
+ "why": "messages are sent via SDK sendMessage or the kit composer."
362
+ },
363
+ "receive-via-listener": {
364
+ "kind": "regex",
365
+ "any": [
366
+ "addMessageListener",
367
+ "MessageListener",
368
+ "onTextMessageReceived"
369
+ ],
370
+ "why": "messages are received via a registered listener."
371
+ },
372
+ "listener-register-with-id": {
373
+ "kind": "regex",
374
+ "any": [
375
+ "addMessageListener\\(\\s*[\"'`]",
376
+ "add\\w+Listener\\(\\s*[\"'`]"
377
+ ],
378
+ "why": "listeners are registered with a string id (required for later removal)."
379
+ },
380
+ "listener-remove-on-teardown": {
381
+ "kind": "regex",
382
+ "any": [
383
+ "remove\\w+Listener\\(",
384
+ "removeMessageListener\\("
385
+ ],
386
+ "why": "listeners are removed on teardown to avoid leaks."
387
+ },
388
+ "sdk-error-handling": {
389
+ "kind": "regex",
390
+ "any": [
391
+ "catch",
392
+ "onError",
393
+ "reject",
394
+ "CometChatException"
395
+ ],
396
+ "why": "SDK calls handle errors."
397
+ },
398
+ "pagination-via-request-builder": {
399
+ "kind": "regex",
400
+ "any": [
401
+ "RequestBuilder",
402
+ "setLimit",
403
+ "fetchNext",
404
+ "fetchPrevious"
405
+ ],
406
+ "why": "pagination uses a RequestBuilder, not manual offsets."
407
+ },
408
+ "production-ready-design-system": {
409
+ "kind": "unchecked",
410
+ "why": "a whole-app quality property (design system, theming) judged by the manual ceiling gate, not a per-feature emit."
411
+ },
412
+ "sized-shell-no-overflow": {
413
+ "kind": "regex",
414
+ "any": [
415
+ "flex:\\s*1"
416
+ ],
417
+ "why": "the shell is sized with flex:1 so content does not overflow."
418
+ },
419
+ "conversations-users-groups-lists": {
420
+ "kind": "regex",
421
+ "any": [
422
+ "<CometChatConversations",
423
+ "<CometChatUsers",
424
+ "<CometChatGroups"
425
+ ],
426
+ "why": "the three list drop-ins are available."
427
+ },
428
+ "list-search": {
429
+ "kind": "regex",
430
+ "any": [
431
+ "showSearchBar",
432
+ "<CometChatSearch",
433
+ "searchRequestBuilder"
434
+ ],
435
+ "why": "lists are searchable."
436
+ },
437
+ "message-actions-working": {
438
+ "kind": "unchecked",
439
+ "why": "a behaviour the KIT renders once the component is mounted with a target — not something the emit's own source can evidence; proven transitively by mounting the drop-in (RN static family has no G6, so the visibility is a kit guarantee, mirrored from ios-v5). (long-press message actions are kit-provided)."
440
+ },
441
+ "thread-panel": {
442
+ "kind": "regex",
443
+ "any": [
444
+ "<CometChatThreadHeader",
445
+ "parentMessageId"
446
+ ],
447
+ "why": "a thread panel/screen exists."
448
+ },
449
+ "user-group-detail-with-actions": {
450
+ "kind": "regex",
451
+ "any": [
452
+ "<CometChatGroupMembers",
453
+ "DetailsScreen",
454
+ "getGuid"
455
+ ],
456
+ "why": "user/group detail with member actions is reachable."
457
+ },
458
+ "optimistic-ui-mutations": {
459
+ "kind": "unchecked",
460
+ "why": "a behaviour the KIT renders once the component is mounted with a target — not something the emit's own source can evidence; proven transitively by mounting the drop-in (RN static family has no G6, so the visibility is a kit guarantee, mirrored from ios-v5). (the kit renders optimistic sends internally)."
461
+ },
462
+ "loading-empty-error-states": {
463
+ "kind": "unchecked",
464
+ "why": "the kit renders loading/empty/error states internally; on a static family (no G6) this is a kit guarantee."
465
+ },
466
+ "discovery-summary": {
467
+ "kind": "unchecked",
468
+ "why": "prose guidance in the skill text, not code in the emit — covered by the skill's guidance section, not statically evidenceable in a feature emit."
469
+ },
470
+ "intent-capability-map": {
471
+ "kind": "unchecked",
472
+ "why": "prose guidance in the skill text, not code in the emit — covered by the skill's guidance section, not statically evidenceable in a feature emit."
473
+ },
474
+ "numbered-actions": {
475
+ "kind": "unchecked",
476
+ "why": "prose guidance in the skill text, not code in the emit — covered by the skill's guidance section, not statically evidenceable in a feature emit."
477
+ },
478
+ "files-that-change": {
479
+ "kind": "unchecked",
480
+ "why": "prose guidance in the skill text, not code in the emit — covered by the skill's guidance section, not statically evidenceable in a feature emit."
481
+ },
482
+ "packages": {
483
+ "kind": "unchecked",
484
+ "why": "prose guidance in the skill text, not code in the emit — covered by the skill's guidance section, not statically evidenceable in a feature emit."
485
+ },
486
+ "credential-auth-strategy": {
487
+ "kind": "unchecked",
488
+ "why": "prose guidance in the skill text, not code in the emit — covered by the skill's guidance section, not statically evidenceable in a feature emit."
489
+ },
490
+ "modify-or-approve-gate": {
491
+ "kind": "unchecked",
492
+ "why": "prose guidance in the skill text, not code in the emit — covered by the skill's guidance section, not statically evidenceable in a feature emit."
493
+ },
494
+ "custom-template-render": {
495
+ "kind": "regex",
496
+ "any": [
497
+ "getTemplate",
498
+ "CometChatMessageTemplate",
499
+ "getAllMessageTemplates"
500
+ ],
501
+ "why": "a custom template is produced via the DataSource template API."
502
+ },
503
+ "custom-type-fetch-registration": {
504
+ "kind": "regex",
505
+ "any": [
506
+ "getId\\(\\)",
507
+ "class\\s+\\w+\\s+extends\\s+DataSourceDecorator",
508
+ "DataSourceDecorator"
509
+ ],
510
+ "why": "a DataSourceDecorator subclass registers the custom type (AUDIT-209: getId() is overridden, not getId as a field)."
511
+ },
512
+ "custom-category-fetch-registration": {
513
+ "kind": "regex",
514
+ "any": [
515
+ "category",
516
+ "CometChatMessageTemplate",
517
+ "getAllMessageTemplates"
518
+ ],
519
+ "why": "the custom category is registered through the template list."
520
+ },
521
+ "decorator-registered-after-login": {
522
+ "kind": "regex",
523
+ "any": [
524
+ "ChatConfigurator",
525
+ "dataSource\\s*=>",
526
+ "setDataSource",
527
+ "getDataSource"
528
+ ],
529
+ "why": "the decorator is chained onto ChatConfigurator/DataSource after login."
530
+ },
531
+ "super-called-not-replaced": {
532
+ "kind": "regex",
533
+ "any": [
534
+ "super\\."
535
+ ],
536
+ "why": "the decorator calls super.* so it extends rather than replaces the default DataSource (AUDIT: a decorator that never calls super drops all built-in message types)."
537
+ }
538
+ },
539
+ "contracts": [
540
+ {
541
+ "for": "core-chat-surface",
542
+ "kind": "feature",
543
+ "min_capabilities": [
544
+ "root-error-boundary",
545
+ "init-login-gate",
546
+ "conversations-list",
547
+ "message-pane-header-list-composer",
548
+ "threaded-replies-panel-default",
549
+ "thread-surface-differentiated",
550
+ "in-chat-message-search-default",
551
+ "global-conversation-search",
552
+ "affordances-wired-or-hidden",
553
+ "active-item-reflected",
554
+ "panel-close-round-trip",
555
+ "safe-area-ancestor-chain",
556
+ "flex-fill-screen-height",
557
+ "flex-min-height-0",
558
+ "no-load-transition-reflow",
559
+ "one-screen-per-route",
560
+ "prod-auth-token-guidance",
561
+ "keyboard-avoidance"
562
+ ],
563
+ "docs_topic": "https://www.cometchat.com/docs/ui-kit/react-native/overview",
564
+ "notes": "APP-LEVEL floor for an unscoped 'add chat' on React Native — the production-ready CORE surface, mobile shape (features.rn-v5.json 'core-chat-surface'; recipe in cometchat-react-native-core). root-error-boundary: RN v5 has NO CometChatErrorBoundary export — satisfy it with each component's onError (or a plain React error boundary of your own), never by emitting the web component. init-login-gate: init must resolve before login, and login before any kit component renders. conversations-list + message-pane-header-list-composer: a CometChatConversations screen whose onItemPress pushes a message screen (CometChatMessageHeader + CometChatMessageList + CometChatMessageComposer on the SAME user/group). threaded-replies-panel-default + thread-surface-differentiated: the list's onThreadRepliesPress pushes a THREAD SCREEN — CometChatThreadHeader + a MessageList and MessageComposer that each take parentMessageId AND the same user/group — included by default, opt-out only. global-conversation-search: showSearchBar defaults to FALSE on RN, so set showSearchBar={true} + onSearchBarClicked -> push a CometChatSearch screen (no uid/guid); in-chat-message-search-default: the same CometChatSearch screen scoped with the open chat's uid/guid; its onBack / onConversationClicked / onMessageClicked must return and select. panel-close-round-trip: every pushed screen pops back (the message header's showBackButton defaults to FALSE on RN — set it and wire onBack to navigation.goBack()). one-screen-per-route: each surface is its OWN stack screen — no side-by-side panes, no side panels (React's onItemClick / onThreadRepliesClick / onSearchOptionClicked do not exist on RN). flex-fill-screen-height + flex-min-height-0: screens fill with flex:1 (the RN replacement for web 100dvh/min-height:0); safe-area-ancestor-chain: inside the app's SafeAreaProvider; keyboard-avoidance: the kit composer handles it — do NOT wrap it in your own KeyboardAvoidingView; no-load-transition-reflow: the kit's own loading/empty states fill the screen from frame 1. prod-auth-token-guidance: tell the user the Auth Key is dev-only; prod = server-minted token + loginWithAuthToken. Complete and wired but LEAN: NOT a two-widget demo and NOT the whole tab app — users/groups/calls tabs, details, call logs and incoming calls are GROWTHS (-> chat-experience); gated extensions/AI/plugins stay OFF unless asked. Per-screen minimums are still fixed by the CometChatConversations/MessageList/MessageComposer contracts below."
565
+ },
566
+ {
567
+ "for": "chat-experience",
568
+ "kind": "feature",
569
+ "min_capabilities": [
570
+ "root-error-boundary",
571
+ "selector-conversations",
572
+ "selector-users-groups-calls-tabs",
573
+ "message-pane-header-list-composer",
574
+ "side-panel-user-group-details",
575
+ "side-panel-thread",
576
+ "side-panel-or-column-search",
577
+ "incoming-call-handling",
578
+ "active-item-reflected",
579
+ "panel-close-round-trip",
580
+ "safe-area-ancestor-chain",
581
+ "flex-fill-screen-height",
582
+ "flex-min-height-0",
583
+ "no-load-transition-reflow",
584
+ "one-screen-per-route",
585
+ "no-dead-end-affordances",
586
+ "keyboard-avoidance"
587
+ ],
588
+ "docs_topic": "https://www.cometchat.com/docs/ui-kit/react-native/overview",
589
+ "notes": "The GROW target — the whole tab-based app, emitted when the user asks for the full app (NOT the default for a plain 'add chat' — that is core-chat-surface above). Recipe in cometchat-react-native-placement. Capabilities are SCREENS on navigators, not web panes: selector-conversations + selector-users-groups-calls-tabs = a bottom-tab navigator (CometChatConversations / CometChatUsers / CometChatGroups / CometChatCallLogs) whose rows' onItemPress push the SAME message screen; the web 'side-panel-*' capabilities map to PUSHED SCREENS on RN — side-panel-thread = the thread screen (CometChatThreadHeader + parentMessageId-scoped list/composer), side-panel-or-column-search = the CometChatSearch screen, side-panel-user-group-details = a details screen with CometChatGroupMembers (RN v5 has no CometChatDetails). incoming-call-handling: CometChatIncomingCall mounted ONCE above the navigator, driven by a CometChat.addCallListener (cometchat-react-native-calls), so a call rings on any tab. root-error-boundary: no CometChatErrorBoundary on RN — each component's onError. panel-close-round-trip / no-dead-end-affordances: every pushed screen pops back (MessageHeader / GroupMembers: showBackButton — default false on RN — + onBack; CometChatSearch: onBack), and every default-on affordance goes somewhere or is hidden. active-item-reflected is a kit guarantee on a static family. The same flex:1 / SafeAreaProvider / kit-handled-keyboard invariants as core-chat-surface apply. Least-code = drop-ins; the kit ships NO combined shell (no CometChatUI / *WithMessages). Gated extensions/AI/plugins stay OFF unless asked. Per-screen minimums are still fixed by the CometChatConversations/MessageList/MessageComposer/GroupMembers contracts below."
590
+ },
591
+ {
592
+ "for": "CometChatConversations",
593
+ "kind": "component",
594
+ "min_capabilities": [
595
+ "conversation-list",
596
+ "last-message-preview",
597
+ "unread-count",
598
+ "delete-conversation",
599
+ "search",
600
+ "presence",
601
+ "receipts",
602
+ "infinite-scroll",
603
+ "realtime-updates"
604
+ ],
605
+ "docs_topic": "https://www.cometchat.com/docs/ui-kit/react-native/conversations",
606
+ "notes": "Ships all of these by default; surface (don't hand-build). Toggles: hideUnreadCount / hideUserStatus / hideReceipts (FETCH exact props)."
607
+ },
608
+ {
609
+ "for": "CometChatGroupMembers",
610
+ "kind": "component",
611
+ "min_capabilities": [
612
+ "view-members",
613
+ "kick-member",
614
+ "ban-member",
615
+ "view-banned-members",
616
+ "change-scope",
617
+ "search-members"
618
+ ],
619
+ "docs_topic": "https://www.cometchat.com/docs/ui-kit/react-native/group-members",
620
+ "notes": "Role-based: destructive actions surface for admin/owner. add-member + banned-members are related flows (ui events member-added / member-banned). A group DETAILS screen must include all of these."
621
+ },
622
+ {
623
+ "for": "CometChatMessageList",
624
+ "kind": "component",
625
+ "min_capabilities": [
626
+ "render-messages",
627
+ "message-bubbles-by-type",
628
+ "delivery-read-receipts",
629
+ "reactions-when-enabled",
630
+ "thread-open",
631
+ "realtime-updates"
632
+ ],
633
+ "docs_topic": "https://www.cometchat.com/docs/ui-kit/react-native/message-list",
634
+ "notes": "Reactions/threads render when the feature is enabled (features.json). VERIFY exact prop toggles from docs."
635
+ },
636
+ {
637
+ "for": "CometChatMessageComposer",
638
+ "kind": "component",
639
+ "min_capabilities": [
640
+ "send-text",
641
+ "attach-media-file",
642
+ "emoji",
643
+ "voice-recording",
644
+ "keyboard-avoidance"
645
+ ],
646
+ "docs_topic": "https://www.cometchat.com/docs/ui-kit/react-native/message-composer",
647
+ "notes": "voice-recording built in (hideVoiceRecordingButton default false). AI copilot actions auto-appear here when enabled. VERIFY exact prop names."
648
+ },
649
+ {
650
+ "for": "voice-video-calls",
651
+ "kind": "feature",
652
+ "min_capabilities": [
653
+ "initiate-call",
654
+ "incoming-call-ui",
655
+ "outgoing-call-ui",
656
+ "call-logs"
657
+ ],
658
+ "docs_topic": "https://www.cometchat.com/docs/ui-kit/react-native/call-features",
659
+ "notes": "Maps to CometChatCallButtons + CometChatIncomingCall + CometChatOutgoingCall + CometChatCallLogs. Needs @cometchat/calls-sdk-javascript@5 (see features.json)."
660
+ },
661
+ {
662
+ "for": "sdk-chat-surface",
663
+ "kind": "feature",
664
+ "consumption": "sdk",
665
+ "min_capabilities": [
666
+ "init-before-anything",
667
+ "init-then-login-ordering",
668
+ "prod-auth-token-guidance",
669
+ "send-message",
670
+ "receive-via-listener",
671
+ "listener-register-with-id",
672
+ "listener-remove-on-teardown",
673
+ "sdk-error-handling",
674
+ "pagination-via-request-builder",
675
+ "production-ready-design-system",
676
+ "sized-shell-no-overflow",
677
+ "conversations-users-groups-lists",
678
+ "list-search",
679
+ "delete-conversation",
680
+ "message-actions-working",
681
+ "thread-panel",
682
+ "user-group-detail-with-actions",
683
+ "optimistic-ui-mutations",
684
+ "loading-empty-error-states"
685
+ ],
686
+ "docs_topic": "https://www.cometchat.com/docs/sdk/javascript/overview",
687
+ "notes": "HEADLESS (build-your-own-UI) FLOOR for a Chat SDK skill — the SDK analogue of core-chat-surface, gating any SDK-type skill (there is no SDK skill in THIS react-v7 UI-Kit pack yet; this entry is the production-ready minimum an SDK skill inherits from the factory template, matched to the JS SDK catalog sdk-jsv4 landed in AUDIT-021). Capabilities are SDK behaviours the emitted code MUST include, mapped to the JS SDK (FETCH exact signatures from docs — bake the map, fetch the manual): init-before-anything = init resolves BEFORE any other SDK call — use CometChat.initFromSettings(settings) (persists integrationSource='ai-agent' for telemetry attribution, AUDIT-084), NOT the classic CometChat.init(appId, appSettings). init-then-login-ordering = CometChat.login(uid, authToken|authKey) runs AFTER init and BEFORE send/fetch/listeners. prod-auth-token-guidance = loginWithAuthToken / server-side token exchange; Auth Key dev-only. send-message = build a CometChat.TextMessage and CometChat.sendMessage(...), awaited. receive-via-listener = a registered listener DELIVERS incoming messages (onTextMessageReceived/onMediaMessageReceived), not polling. listener-register-with-id = CometChat.addMessageListener(UNIQUE_ID, new CometChat.MessageListener({...})). listener-remove-on-teardown = CometChat.removeMessageListener(UNIQUE_ID) on teardown — register AND remove; a leaked listener FAILS this contract. sdk-error-handling = every awaited SDK call handles the CometChatException path. pagination-via-request-builder = new CometChat.MessagesRequestBuilder().setLimit(n).build() + fetchNext(), not one unbounded call. Least-code = use the SDK's own builders/listeners (HOW), never drop the teardown or error path (WHAT). BECAUSE THE SDK HAS NO UI, the emitted app must ALSO be production-ready UI, deterministically (spec: the SDK skill's references/app-surface.md; AUDIT-024): production-ready-design-system = REUSE the app's existing design system (Tailwind/MUI/Chakra/shadcn/CSS-var theme/tokens) or, if fresh, ESTABLISH a small token-based one (theme.css palette/spacing/radii + reusable primitives) — NEVER ad-hoc inline styles / one-off hex. sized-shell-no-overflow = 100dvh 3-region shell, message list scrolls internally, min-width:0 (no page horizontal scrollbar), scaffold boilerplate reset. conversations-users-groups-lists + list-search = all three lists, EACH searchable (setSearchKeyword + client filter). delete-conversation = deleteConversation action per row. message-actions-working = Reply-in-thread/React/Edit/Delete each wired to the SDK AND reflected in the UI (own-message gating for edit/delete). thread-panel = setParentMessageId thread view + composer. user-group-detail-with-actions = user detail (block/unblock) + group detail (add/kick/ban member, change scope, leave), scope-gated. optimistic-ui-mutations = send/edit/delete/react update the UI IMMEDIATELY (temp/sending state) then reconcile with the SDK Promise (confirm on resolve, roll back + surface CometChatException.message on reject) — never wait for the round-trip. loading-empty-error-states = skeleton/empty/error on every surface, never blank or [object Object]. This is the full default for a GENERIC 'build chat with the SDK' prompt; a UI that renders only bare bubbles UNDER-DELIVERS. All symbols named here (User/Group/TextMessage/MessagesRequestBuilder/UsersRequestBuilder/MessageListener/init/login/sendMessage/addMessageListener/removeMessageListener) are in the JS-SDK namespace API surface the AUDIT-021 --members extractor recovers (5→396); regenerate the sdk-jsv4 catalog with build-catalog.mjs --exports-only --members before authoring the SDK skill this contract gates."
688
+ },
689
+ {
690
+ "for": "onboarding-plan",
691
+ "kind": "plan",
692
+ "consumption": "plan",
693
+ "min_capabilities": [
694
+ "discovery-summary",
695
+ "intent-capability-map",
696
+ "numbered-actions",
697
+ "files-that-change",
698
+ "packages",
699
+ "credential-auth-strategy",
700
+ "modify-or-approve-gate"
701
+ ],
702
+ "docs_topic": "https://www.cometchat.com/docs/ui-kit/react-native/overview",
703
+ "notes": "JOURNEY FLOOR for the framework-agnostic onboarding front door (cometchat-onboarding, type `onboarding`) — the DISCOVER->UNDERSTAND->PLAN skill the entry router gates on FIRST (peers.yaml gate:). It emits NO CometChat symbols, so it has NO symbol catalog and no per-component contract; its completeness oracle is THIS plan-level contract (kind:plan, consumption:plan) — the analogue of core-chat-surface for a plan instead of a UI. min_capabilities are the SECTIONS the plan artifact MUST contain (skills/cometchat-onboarding/references/plan-artifact.md): discovery-summary = every beat-1 signal, each a value or explicit null (framework/bundler/language/pkg-mgr/auth/styling/state/routing/ssr/existing-cometchat/version_conflict/env). intent-capability-map = the confirmed archetype+modality+scope translated to CometChat capabilities (from the baked archetype map in references/archetypes.md). numbered-actions = the scoped build steps in order. files-that-change = the concrete additive paths (APPEND, never replace). packages = exact package(s) with major pins (the core owns exact coordinates). credential-auth-strategy = dev Auth-Key vs prod server-minted token, CHOSEN from discovery. modify-or-approve-gate = an explicit edit-or-approve invitation; nothing is written before approval. TWO behavioural must-dos accompany the sections (CHECKLIST row 25): every beat-2 intent question carries a repo-inferred recommended default (no blank asks); and the boundary is at PLAN (onboarding does discover+understand+plan, then hands a SCOPED build directive to the framework core, e.g. cometchat-react-v7-core — it must NOT fork the core's detect/credential flow). Least-code is n/a (no emitted code). Platform-agnostic: every family reuses the ONE onboarding skill, so this contract is inherited from templates/contracts.example.json. A non-React framework with no core yet still gets the full plan + an honest 'core not built yet' posture; do NOT hand off to a nonexistent core."
704
+ },
705
+ {
706
+ "for": "custom-message-types",
707
+ "kind": "feature",
708
+ "min_capabilities": [
709
+ "custom-template-render",
710
+ "custom-type-fetch-registration",
711
+ "custom-category-fetch-registration",
712
+ "decorator-registered-after-login",
713
+ "super-called-not-replaced"
714
+ ],
715
+ "docs_topic": "https://www.cometchat.com/docs/ui-kit/react-native/message-list",
716
+ "notes": "A custom message type has TWO halves and only one is obvious. RENDER is getAllMessageTemplates / getMessageTemplate. FETCH is getAllMessageTypes / getAllMessageCategories — CometChatMessageList builds its request from them (requestBuilder.setTypes(...getAllMessageTypes()) / .setCategories(...getAllMessageCategories())), so a type absent from those filters is excluded server-side: the bubble renders optimistically on send and vanishes on reload, with no error anywhere. Registration must happen AFTER CometChatUIKit.login(), because login() calls enableExtensions() whose first statement is ChatConfigurator.init() — a re-initialization that discards any earlier data source. Every override must call super and extend the result; returning a fresh list drops all built-in types. Added after a real build shipped the render half alone and the messages were never fetched (AUDIT-100)."
717
+ }
718
+ ],
719
+ "capabilityNotes": {
720
+ "flex-fill-screen-height": "RN replacement for pinned-viewport-height. There is no 100dvh: the screen root is flex:1 inside a SafeAreaView/SafeAreaProvider. Never set a fixed pixel height — the keyboard resizes the frame.",
721
+ "flex-min-height-0": "RN replacement for column-min-height-0. A flex column that must scroll needs flex:1 and minHeight:0 on the RN side too, or CometChatMessageList collapses to zero height inside a parent column.",
722
+ "safe-area-ancestor-chain": "RN replacement for prepared-ancestor-chain. VERIFIED ORDER (docs react-native-conversation + the RN CLI/Expo integration pages), outermost first: GestureHandlerRootView(style={{flex:1}}) -> SafeAreaProvider -> CometChatI18nProvider -> SafeAreaView(flex:1) -> CometChatThemeProvider -> screen. GestureHandlerRootView is OUTERMOST and must carry flex:1. Missing it is the classic 'swipe/long-press does nothing' bug — it fails SILENTLY rather than throwing, so nothing catches it without this contract. Note CometChatI18nProvider sits ABOVE SafeAreaView and ThemeProvider.",
723
+ "one-screen-per-route": "RN replacement for responsive-one-pane-on-mobile. Every pane is its OWN screen on a stack navigator with a real hardware/gesture back button — never a web-style side panel toggled by state.",
724
+ "root-error-boundary": "RN has NO CometChatErrorBoundary export (verified against catalogs/rn-v5.json). Use a plain React error boundary at the app root; do NOT emit CometChatErrorBoundary — it would fail the catalog oracle.",
725
+ "keyboard-avoidance": "RN-ONLY, no web analogue. The composer must stay visible when the soft keyboard opens (KeyboardAvoidingView / the kit's own handling); without it the composer is covered on iOS. Verify on a device, not only a simulator."
726
+ }
727
+ }