@cometchat/skills 4.4.2 → 5.0.1

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