@cometchat/skills 4.4.1 → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (489) hide show
  1. package/.claude-plugin/marketplace.json +55 -0
  2. package/.claude-plugin/plugin.json +14 -0
  3. package/CHANGELOG.md +36 -0
  4. package/README.md +41 -163
  5. package/RULES.md +114 -0
  6. package/bin/cometchat-skills.mjs +1180 -0
  7. package/bin/legacy-skills.json +95 -0
  8. package/catalogs/android-v6.json +1646 -0
  9. package/catalogs/flutter-v6.json +651 -0
  10. package/catalogs/ios-v5.json +1383 -0
  11. package/catalogs/rn-calls-v5.json +134 -0
  12. package/catalogs/rn-calls-v5.symbols.txt +58 -0
  13. package/catalogs/rn-sdk-v4.json +672 -0
  14. package/catalogs/rn-v5.json +449 -0
  15. package/catalogs/rn-v5.symbols.txt +216 -0
  16. package/catalogs/sdk-android-v5.json +514 -0
  17. package/contracts.android-calls-v5.json +122 -0
  18. package/contracts.android-v6.json +135 -0
  19. package/contracts.angular-v5.json +694 -0
  20. package/contracts.flutter-calls-v5.json +77 -0
  21. package/contracts.flutter-v6.json +126 -0
  22. package/contracts.ios-calls-v5.json +67 -0
  23. package/contracts.ios-v5.json +436 -0
  24. package/contracts.json +82 -0
  25. package/contracts.rn-calls-v5.json +77 -0
  26. package/contracts.rn-v5.json +727 -0
  27. package/contracts.sdk-android-v5.json +15 -0
  28. package/contracts.web-calls-v5.json +45 -0
  29. package/features.android-calls-v5.json +246 -0
  30. package/features.android-v6.json +65 -0
  31. package/features.angular-v5.json +521 -0
  32. package/features.flutter-calls-v5.json +286 -0
  33. package/features.flutter-v6.json +484 -0
  34. package/features.ios-calls-v5.json +236 -0
  35. package/features.ios-v5.json +573 -0
  36. package/features.json +61 -0
  37. package/features.rn-calls-v5.json +187 -0
  38. package/features.rn-v5.json +614 -0
  39. package/features.sdk-android-v5.json +40 -0
  40. package/features.sdk-jsv4.json +24 -0
  41. package/features.web-calls-v5.json +108 -0
  42. package/package.json +151 -74
  43. package/peers.yaml +312 -0
  44. package/registry/README.md +31 -0
  45. package/registry/android-calls-v5.json +54 -0
  46. package/registry/android-v6.json +137 -0
  47. package/registry/angular-v5.json +114 -0
  48. package/registry/flutter-calls-v5.json +54 -0
  49. package/registry/flutter-v6.json +119 -0
  50. package/registry/ios-calls-v5.json +59 -0
  51. package/registry/ios-v5.json +97 -0
  52. package/registry/rn-calls-v5.json +59 -0
  53. package/registry/rn-v5.json +129 -0
  54. package/registry/sdk-android-v5.json +53 -0
  55. package/registry/sdk-jsv4.json +53 -0
  56. package/registry/web-calls-v5.json +54 -0
  57. package/registry/web-v7.json +99 -0
  58. package/skills/cometchat/SKILL.md +42 -2096
  59. package/skills/cometchat-android-v5-calls-sdk/SKILL.md +206 -0
  60. package/skills/cometchat-android-v5-calls-sdk/references/build-truth.md +63 -0
  61. package/skills/cometchat-android-v5-calls-sdk/references/docs-map.md +119 -0
  62. package/skills/cometchat-android-v5-calls-sdk/references/method-map.md +53 -0
  63. package/skills/cometchat-android-v5-calls-sdk/references/pitfalls.md +72 -0
  64. package/skills/cometchat-android-v5-calls-sdk/references/ringing.md +92 -0
  65. package/skills/cometchat-android-v5-calls-sdk/references/user-switch.md +90 -0
  66. package/skills/cometchat-android-v5-sdk/SKILL.md +127 -0
  67. package/skills/cometchat-android-v5-sdk/references/app-surface.md +88 -0
  68. package/skills/cometchat-android-v5-sdk/references/docs-map.md +91 -0
  69. package/skills/cometchat-android-v6-builder-settings/SKILL.md +51 -137
  70. package/skills/cometchat-android-v6-calls/SKILL.md +128 -411
  71. package/skills/cometchat-android-v6-compose-components/SKILL.md +84 -194
  72. package/skills/cometchat-android-v6-compose-customization/SKILL.md +66 -411
  73. package/skills/cometchat-android-v6-compose-placement/SKILL.md +154 -237
  74. package/skills/cometchat-android-v6-core/SKILL.md +236 -672
  75. package/skills/cometchat-android-v6-core/references/anti-patterns.md +31 -0
  76. package/skills/cometchat-android-v6-core/references/component-props.md +168 -0
  77. package/skills/cometchat-android-v6-core/references/docs-map.md +153 -0
  78. package/skills/cometchat-android-v6-core/references/layout.md +112 -0
  79. package/skills/cometchat-android-v6-core/references/lifecycle.md +75 -0
  80. package/skills/cometchat-android-v6-core/references/setup-credentials.md +105 -0
  81. package/skills/cometchat-android-v6-core/references/troubleshooting.md +36 -0
  82. package/skills/cometchat-android-v6-events/SKILL.md +46 -184
  83. package/skills/cometchat-android-v6-extensions/SKILL.md +39 -179
  84. package/skills/cometchat-android-v6-features/SKILL.md +74 -143
  85. package/skills/cometchat-android-v6-kotlin-components/SKILL.md +75 -193
  86. package/skills/cometchat-android-v6-kotlin-customization/SKILL.md +67 -419
  87. package/skills/cometchat-android-v6-kotlin-placement/SKILL.md +77 -223
  88. package/skills/cometchat-android-v6-migration/SKILL.md +67 -378
  89. package/skills/cometchat-android-v6-production/SKILL.md +40 -179
  90. package/skills/cometchat-android-v6-push/SKILL.md +39 -289
  91. package/skills/cometchat-android-v6-testing/SKILL.md +50 -265
  92. package/skills/cometchat-android-v6-troubleshooting/SKILL.md +70 -254
  93. package/skills/cometchat-angular-v5-calls/SKILL.md +193 -0
  94. package/skills/cometchat-angular-v5-components/SKILL.md +131 -0
  95. package/skills/cometchat-angular-v5-components/references/catalog.md +111 -0
  96. package/skills/cometchat-angular-v5-components/references/host-composed.md +46 -0
  97. package/skills/cometchat-angular-v5-core/SKILL.md +300 -0
  98. package/skills/cometchat-angular-v5-core/references/anti-patterns.md +49 -0
  99. package/skills/cometchat-angular-v5-core/references/component-props.md +55 -0
  100. package/skills/cometchat-angular-v5-core/references/dependencies.md +66 -0
  101. package/skills/cometchat-angular-v5-core/references/docs-map.md +132 -0
  102. package/skills/cometchat-angular-v5-core/references/layout.md +64 -0
  103. package/skills/cometchat-angular-v5-core/references/lifecycle.md +202 -0
  104. package/skills/cometchat-angular-v5-core/references/setup-credentials.md +137 -0
  105. package/skills/cometchat-angular-v5-core/references/theming.md +70 -0
  106. package/skills/cometchat-angular-v5-core/references/troubleshooting.md +27 -0
  107. package/skills/cometchat-angular-v5-customization/SKILL.md +94 -0
  108. package/skills/cometchat-angular-v5-features/SKILL.md +107 -0
  109. package/skills/cometchat-angular-v5-features/references/custom-messages.md +133 -0
  110. package/skills/cometchat-angular-v5-features/references/formatters.md +28 -0
  111. package/skills/cometchat-angular-v5-features/references/host-composed-extensions.md +85 -0
  112. package/skills/cometchat-angular-v5-migration/SKILL.md +40 -0
  113. package/skills/cometchat-angular-v5-migration/references/migration-guide.md +165 -0
  114. package/skills/cometchat-angular-v5-patterns/SKILL.md +107 -0
  115. package/skills/cometchat-angular-v5-placement/SKILL.md +133 -0
  116. package/skills/cometchat-angular-v5-placement/references/combined-app.md +174 -0
  117. package/skills/cometchat-angular-v5-placement/references/core-surface.md +199 -0
  118. package/skills/cometchat-angular-v5-production/SKILL.md +101 -0
  119. package/skills/cometchat-angular-v5-push/SKILL.md +61 -0
  120. package/skills/cometchat-angular-v5-testing/SKILL.md +112 -0
  121. package/skills/cometchat-angular-v5-troubleshooting/SKILL.md +96 -0
  122. package/skills/cometchat-flutter-v5-sdk/SKILL.md +188 -0
  123. package/skills/cometchat-flutter-v5-sdk/references/doc-corrections.md +55 -0
  124. package/skills/cometchat-flutter-v5-sdk/references/docs-map.md +211 -0
  125. package/skills/cometchat-flutter-v5-sdk/references/platform-notes.md +48 -0
  126. package/skills/cometchat-flutter-v5-sdk/references/transcription.md +87 -0
  127. package/skills/cometchat-flutter-v6-calls/SKILL.md +75 -387
  128. package/skills/cometchat-flutter-v6-components/SKILL.md +88 -361
  129. package/skills/cometchat-flutter-v6-core/SKILL.md +154 -593
  130. package/skills/cometchat-flutter-v6-core/references/anti-patterns.md +55 -0
  131. package/skills/cometchat-flutter-v6-core/references/docs-map.md +143 -0
  132. package/skills/cometchat-flutter-v6-core/references/layout.md +45 -0
  133. package/skills/cometchat-flutter-v6-core/references/lifecycle.md +87 -0
  134. package/skills/cometchat-flutter-v6-core/references/setup-credentials.md +84 -0
  135. package/skills/cometchat-flutter-v6-core/references/troubleshooting.md +26 -0
  136. package/skills/cometchat-flutter-v6-customization/SKILL.md +70 -712
  137. package/skills/cometchat-flutter-v6-events/SKILL.md +79 -174
  138. package/skills/cometchat-flutter-v6-features/SKILL.md +55 -394
  139. package/skills/cometchat-flutter-v6-migration/SKILL.md +68 -367
  140. package/skills/cometchat-flutter-v6-migration/references/migration-guide.md +131 -0
  141. package/skills/cometchat-flutter-v6-patterns/SKILL.md +61 -0
  142. package/skills/cometchat-flutter-v6-placement/SKILL.md +94 -381
  143. package/skills/cometchat-flutter-v6-production/SKILL.md +58 -615
  144. package/skills/cometchat-flutter-v6-push/SKILL.md +46 -455
  145. package/skills/cometchat-flutter-v6-testing/SKILL.md +68 -299
  146. package/skills/cometchat-flutter-v6-troubleshooting/SKILL.md +54 -878
  147. package/skills/cometchat-ios-calls/SKILL.md +105 -511
  148. package/skills/cometchat-ios-components/SKILL.md +44 -834
  149. package/skills/cometchat-ios-core/SKILL.md +181 -1068
  150. package/skills/cometchat-ios-core/references/anti-patterns.md +80 -0
  151. package/skills/cometchat-ios-core/references/docs-map.md +123 -0
  152. package/skills/cometchat-ios-core/references/install.md +23 -0
  153. package/skills/cometchat-ios-core/references/layout.md +186 -0
  154. package/skills/cometchat-ios-core/references/setup-credentials.md +197 -0
  155. package/skills/cometchat-ios-core/references/swiftui.md +91 -0
  156. package/skills/cometchat-ios-core/references/troubleshooting.md +100 -0
  157. package/skills/cometchat-ios-customization/SKILL.md +33 -968
  158. package/skills/cometchat-ios-features/SKILL.md +29 -738
  159. package/skills/cometchat-ios-migration/SKILL.md +39 -0
  160. package/skills/cometchat-ios-placement/SKILL.md +51 -729
  161. package/skills/cometchat-ios-push/SKILL.md +24 -602
  162. package/skills/cometchat-ios-v5-sdk/SKILL.md +161 -0
  163. package/skills/cometchat-ios-v5-sdk/references/docs-map.md +326 -0
  164. package/skills/cometchat-js-v5-sdk/SKILL.md +95 -0
  165. package/skills/cometchat-js-v5-sdk/references/docs-map.md +114 -0
  166. package/skills/cometchat-onboarding/SKILL.md +89 -0
  167. package/skills/cometchat-onboarding/references/archetypes.md +51 -0
  168. package/skills/cometchat-onboarding/references/calling-first.md +77 -0
  169. package/skills/cometchat-onboarding/references/not-in-this-pack.md +8 -0
  170. package/skills/cometchat-onboarding/references/plan-artifact.md +133 -0
  171. package/skills/cometchat-onboarding/references/platforms.md +90 -0
  172. package/skills/cometchat-react-native-bare-patterns/SKILL.md +120 -0
  173. package/skills/cometchat-react-native-calls/SKILL.md +200 -0
  174. package/skills/cometchat-react-native-components/SKILL.md +142 -0
  175. package/skills/cometchat-react-native-core/SKILL.md +313 -0
  176. package/skills/cometchat-react-native-core/references/anti-patterns.md +79 -0
  177. package/skills/cometchat-react-native-core/references/component-props.md +105 -0
  178. package/skills/cometchat-react-native-core/references/dependencies.md +62 -0
  179. package/skills/cometchat-react-native-core/references/docs-map.md +126 -0
  180. package/skills/cometchat-react-native-core/references/layout.md +61 -0
  181. package/skills/cometchat-react-native-core/references/lifecycle.md +64 -0
  182. package/skills/cometchat-react-native-core/references/setup-credentials.md +39 -0
  183. package/skills/cometchat-react-native-customization/SKILL.md +198 -0
  184. package/skills/cometchat-react-native-expo-patterns/SKILL.md +116 -0
  185. package/skills/cometchat-react-native-features/SKILL.md +122 -0
  186. package/skills/cometchat-react-native-migration/SKILL.md +103 -0
  187. package/skills/cometchat-react-native-placement/SKILL.md +158 -0
  188. package/skills/cometchat-react-native-production/SKILL.md +78 -0
  189. package/skills/cometchat-react-native-push/SKILL.md +88 -0
  190. package/skills/cometchat-react-native-sdk/SKILL.md +126 -0
  191. package/skills/cometchat-react-native-sdk/references/method-map.md +239 -0
  192. package/skills/cometchat-react-native-sdk/references/page-map.md +96 -0
  193. package/skills/cometchat-react-native-testing/SKILL.md +94 -0
  194. package/skills/cometchat-react-native-troubleshooting/SKILL.md +116 -0
  195. package/skills/cometchat-react-native-v5-sdk/SKILL.md +150 -0
  196. package/skills/cometchat-react-native-v5-sdk/references/docs-map.md +127 -0
  197. package/skills/cometchat-react-native-v5-sdk/references/ringing-voip.md +369 -0
  198. package/skills/cometchat-react-v7-calls/SKILL.md +75 -0
  199. package/skills/cometchat-react-v7-components/SKILL.md +72 -0
  200. package/skills/cometchat-react-v7-core/SKILL.md +101 -0
  201. package/skills/cometchat-react-v7-core/references/anti-patterns.md +19 -0
  202. package/skills/cometchat-react-v7-core/references/component-props.md +82 -0
  203. package/skills/cometchat-react-v7-core/references/dependencies.md +23 -0
  204. package/skills/cometchat-react-v7-core/references/docs-map.md +117 -0
  205. package/skills/cometchat-react-v7-core/references/i18n-rtl-a11y.md +22 -0
  206. package/skills/cometchat-react-v7-core/references/layout.md +158 -0
  207. package/skills/cometchat-react-v7-core/references/lifecycle.md +74 -0
  208. package/skills/cometchat-react-v7-core/references/setup-credentials.md +58 -0
  209. package/skills/cometchat-react-v7-core/references/ssr.md +11 -0
  210. package/skills/cometchat-react-v7-core/references/theming.md +52 -0
  211. package/skills/cometchat-react-v7-core/references/troubleshooting.md +28 -0
  212. package/skills/cometchat-react-v7-customization/SKILL.md +84 -0
  213. package/skills/cometchat-react-v7-features/SKILL.md +92 -0
  214. package/skills/cometchat-react-v7-migration/SKILL.md +39 -0
  215. package/skills/cometchat-react-v7-migration/references/migration-guide.md +119 -0
  216. package/skills/cometchat-react-v7-patterns/SKILL.md +43 -0
  217. package/skills/cometchat-react-v7-placement/SKILL.md +106 -0
  218. package/skills/cometchat-react-v7-placement/references/recipes.md +354 -0
  219. package/skills/cometchat-react-v7-push/SKILL.md +53 -0
  220. package/test-suite/README.md +70 -0
  221. package/test-suite/catalogs/android-calls-v5.json +830 -0
  222. package/test-suite/catalogs/android-calls-v5.symbols.txt +499 -0
  223. package/test-suite/catalogs/android-v6.json +1646 -0
  224. package/test-suite/catalogs/android-v6.symbols.txt +298 -0
  225. package/test-suite/catalogs/angular-v5.json +7587 -0
  226. package/test-suite/catalogs/flutter-calls-v5.json +196 -0
  227. package/test-suite/catalogs/flutter-calls-v5.symbols.txt +59 -0
  228. package/test-suite/catalogs/flutter-v6.json +651 -0
  229. package/test-suite/catalogs/ios-calls-v5.json +158 -0
  230. package/test-suite/catalogs/ios-calls-v5.symbols.txt +70 -0
  231. package/test-suite/catalogs/ios-v5.json +1383 -0
  232. package/test-suite/catalogs/ios-v5.symbols.txt +699 -0
  233. package/test-suite/catalogs/rn-calls-v5.json +134 -0
  234. package/test-suite/catalogs/rn-sdk-v4.json +672 -0
  235. package/test-suite/catalogs/rn-v5.json +449 -0
  236. package/test-suite/catalogs/sdk-android-v5.json +514 -0
  237. package/test-suite/catalogs/sdk-android-v5.symbols.txt +254 -0
  238. package/test-suite/catalogs/sdk-jsv4.json +800 -0
  239. package/test-suite/catalogs/web-calls-v5.json +195 -0
  240. package/test-suite/catalogs/web-v7.json +1243 -0
  241. package/test-suite/scripts/build-registry.mjs +113 -0
  242. package/test-suite/scripts/catalog-refresh-dart.mjs +151 -0
  243. package/test-suite/scripts/catalog-refresh.mjs +100 -0
  244. package/test-suite/scripts/lint-skills.mjs +909 -0
  245. package/test-suite/scripts/measure-tokens.mjs +169 -0
  246. package/test-suite/scripts/typecheck-fences-dart.mjs +437 -0
  247. package/test-suite/scripts/typecheck-fences-kotlin.mjs +269 -0
  248. package/test-suite/scripts/typecheck-fences.mjs +206 -0
  249. package/test-suite/scripts/verify-catalog.mjs +242 -0
  250. package/test-suite/scripts/verify-contract-fences.mjs +94 -0
  251. package/test-suite/scripts/verify-detection.mjs +178 -0
  252. package/test-suite/scripts/verify-docs-base.mjs +91 -0
  253. package/test-suite/scripts/verify-family-agnostic.mjs +130 -0
  254. package/test-suite/scripts/verify-golden-path.mjs +138 -0
  255. package/test-suite/scripts/verify-oracle-components.mjs +133 -0
  256. package/test-suite/scripts/verify-template-bindings.mjs +148 -0
  257. package/test-suite/typecheck/angular-v5/package.json +21 -0
  258. package/test-suite/typecheck/angular-v5/tsconfig.json +21 -0
  259. package/test-suite/typecheck/flutter-v6/analysis_options.yaml +25 -0
  260. package/test-suite/typecheck/flutter-v6/pubspec.yaml +21 -0
  261. package/test-suite/typecheck/web-v7/package.json +18 -0
  262. package/test-suite/typecheck/web-v7/tsconfig.json +19 -0
  263. package/bin/install.js +0 -1003
  264. package/skills/.claude-plugin/marketplace.json +0 -86
  265. package/skills/cometchat/references/asking-questions.md +0 -48
  266. package/skills/cometchat-a11y/SKILL.md +0 -477
  267. package/skills/cometchat-android-v5/SKILL.md +0 -121
  268. package/skills/cometchat-android-v5-calls/SKILL.md +0 -427
  269. package/skills/cometchat-android-v5-calls/references/README.md +0 -53
  270. package/skills/cometchat-android-v5-calls/references/add-calls-to-existing-chat.md +0 -197
  271. package/skills/cometchat-android-v5-calls/references/audio-controls.md +0 -91
  272. package/skills/cometchat-android-v5-calls/references/background-handling.md +0 -168
  273. package/skills/cometchat-android-v5-calls/references/call-layouts.md +0 -131
  274. package/skills/cometchat-android-v5-calls/references/call-logs.md +0 -113
  275. package/skills/cometchat-android-v5-calls/references/call-session.md +0 -274
  276. package/skills/cometchat-android-v5-calls/references/custom-ui.md +0 -150
  277. package/skills/cometchat-android-v5-calls/references/event-listeners.md +0 -123
  278. package/skills/cometchat-android-v5-calls/references/group-calls.md +0 -205
  279. package/skills/cometchat-android-v5-calls/references/idle-timeout.md +0 -117
  280. package/skills/cometchat-android-v5-calls/references/in-call-chat.md +0 -134
  281. package/skills/cometchat-android-v5-calls/references/join-session.md +0 -120
  282. package/skills/cometchat-android-v5-calls/references/migration-v4-to-v5.md +0 -222
  283. package/skills/cometchat-android-v5-calls/references/participant-management.md +0 -110
  284. package/skills/cometchat-android-v5-calls/references/picture-in-picture.md +0 -106
  285. package/skills/cometchat-android-v5-calls/references/raise-hand.md +0 -248
  286. package/skills/cometchat-android-v5-calls/references/recording.md +0 -101
  287. package/skills/cometchat-android-v5-calls/references/ringing-integration.md +0 -152
  288. package/skills/cometchat-android-v5-calls/references/screen-sharing.md +0 -78
  289. package/skills/cometchat-android-v5-calls/references/server-fcm-voip.md +0 -215
  290. package/skills/cometchat-android-v5-calls/references/session-settings.md +0 -121
  291. package/skills/cometchat-android-v5-calls/references/setup.md +0 -137
  292. package/skills/cometchat-android-v5-calls/references/share-invite.md +0 -156
  293. package/skills/cometchat-android-v5-calls/references/video-controls.md +0 -87
  294. package/skills/cometchat-android-v5-calls/references/voip-calling.md +0 -526
  295. package/skills/cometchat-android-v5-components/SKILL.md +0 -431
  296. package/skills/cometchat-android-v5-core/SKILL.md +0 -486
  297. package/skills/cometchat-android-v5-customization/SKILL.md +0 -469
  298. package/skills/cometchat-android-v5-extensions/SKILL.md +0 -127
  299. package/skills/cometchat-android-v5-features/SKILL.md +0 -131
  300. package/skills/cometchat-android-v5-placement/SKILL.md +0 -277
  301. package/skills/cometchat-android-v5-production/SKILL.md +0 -95
  302. package/skills/cometchat-android-v5-push/SKILL.md +0 -619
  303. package/skills/cometchat-android-v5-testing/SKILL.md +0 -188
  304. package/skills/cometchat-android-v5-theming/SKILL.md +0 -167
  305. package/skills/cometchat-android-v5-troubleshooting/SKILL.md +0 -74
  306. package/skills/cometchat-android-v6/SKILL.md +0 -108
  307. package/skills/cometchat-android-v6-calls/references/add-calls-to-existing-chat.md +0 -97
  308. package/skills/cometchat-android-v6-calls/references/advanced-features.md +0 -87
  309. package/skills/cometchat-android-v6-calls/references/call-layouts.md +0 -100
  310. package/skills/cometchat-android-v6-calls/references/call-session.md +0 -163
  311. package/skills/cometchat-android-v6-calls/references/device-management.md +0 -172
  312. package/skills/cometchat-android-v6-calls/references/group-calls.md +0 -191
  313. package/skills/cometchat-android-v6-calls/references/idle-timeout.md +0 -110
  314. package/skills/cometchat-android-v6-calls/references/in-call-chat.md +0 -141
  315. package/skills/cometchat-android-v6-calls/references/raise-hand.md +0 -188
  316. package/skills/cometchat-android-v6-calls/references/ringing-integration.md +0 -176
  317. package/skills/cometchat-android-v6-calls/references/server-fcm-voip.md +0 -127
  318. package/skills/cometchat-android-v6-calls/references/share-invite.md +0 -105
  319. package/skills/cometchat-android-v6-compose-theming/SKILL.md +0 -250
  320. package/skills/cometchat-android-v6-kotlin-theming/SKILL.md +0 -233
  321. package/skills/cometchat-angular-calls/SKILL.md +0 -378
  322. package/skills/cometchat-angular-calls/references/add-calls-to-existing-chat.md +0 -96
  323. package/skills/cometchat-angular-calls/references/call-layouts.md +0 -123
  324. package/skills/cometchat-angular-calls/references/call-session.md +0 -167
  325. package/skills/cometchat-angular-calls/references/custom-ui.md +0 -239
  326. package/skills/cometchat-angular-calls/references/device-management.md +0 -154
  327. package/skills/cometchat-angular-calls/references/group-calls.md +0 -433
  328. package/skills/cometchat-angular-calls/references/idle-timeout.md +0 -161
  329. package/skills/cometchat-angular-calls/references/in-call-chat.md +0 -148
  330. package/skills/cometchat-angular-calls/references/lazy-loading-pitfalls.md +0 -205
  331. package/skills/cometchat-angular-calls/references/migration-v4-to-v5.md +0 -53
  332. package/skills/cometchat-angular-calls/references/ngzone-and-async-callbacks.md +0 -184
  333. package/skills/cometchat-angular-calls/references/picture-in-picture.md +0 -285
  334. package/skills/cometchat-angular-calls/references/raise-hand.md +0 -172
  335. package/skills/cometchat-angular-calls/references/recording-screen-share.md +0 -260
  336. package/skills/cometchat-angular-calls/references/ringing-integration.md +0 -133
  337. package/skills/cometchat-angular-calls/references/server-web-push-vapid.md +0 -100
  338. package/skills/cometchat-angular-calls/references/share-invite.md +0 -122
  339. package/skills/cometchat-angular-calls/references/virtual-background.md +0 -29
  340. package/skills/cometchat-angular-components/SKILL.md +0 -235
  341. package/skills/cometchat-angular-core/SKILL.md +0 -386
  342. package/skills/cometchat-angular-customization/SKILL.md +0 -616
  343. package/skills/cometchat-angular-features/SKILL.md +0 -329
  344. package/skills/cometchat-angular-patterns/SKILL.md +0 -256
  345. package/skills/cometchat-angular-placement/SKILL.md +0 -314
  346. package/skills/cometchat-angular-production/SKILL.md +0 -564
  347. package/skills/cometchat-angular-push/SKILL.md +0 -389
  348. package/skills/cometchat-angular-testing/SKILL.md +0 -605
  349. package/skills/cometchat-angular-theming/SKILL.md +0 -290
  350. package/skills/cometchat-angular-troubleshooting/SKILL.md +0 -364
  351. package/skills/cometchat-astro-patterns/SKILL.md +0 -708
  352. package/skills/cometchat-calls/SKILL.md +0 -364
  353. package/skills/cometchat-calls/references/use-case-broadcast.md +0 -199
  354. package/skills/cometchat-calls/references/use-case-marketplace.md +0 -157
  355. package/skills/cometchat-calls/references/use-case-support.md +0 -189
  356. package/skills/cometchat-calls/references/use-case-team.md +0 -180
  357. package/skills/cometchat-calls/references/use-case-telehealth.md +0 -153
  358. package/skills/cometchat-components/SKILL.md +0 -1142
  359. package/skills/cometchat-core/SKILL.md +0 -1048
  360. package/skills/cometchat-customization/SKILL.md +0 -580
  361. package/skills/cometchat-customization/references/component-catalog.md +0 -236
  362. package/skills/cometchat-features/SKILL.md +0 -861
  363. package/skills/cometchat-flutter-v5/SKILL.md +0 -173
  364. package/skills/cometchat-flutter-v5-calls/SKILL.md +0 -453
  365. package/skills/cometchat-flutter-v5-calls/references/add-calls-to-existing-chat.md +0 -193
  366. package/skills/cometchat-flutter-v5-calls/references/call-layouts.md +0 -103
  367. package/skills/cometchat-flutter-v5-calls/references/call-session.md +0 -285
  368. package/skills/cometchat-flutter-v5-calls/references/device-management.md +0 -124
  369. package/skills/cometchat-flutter-v5-calls/references/group-calls.md +0 -181
  370. package/skills/cometchat-flutter-v5-calls/references/idle-timeout.md +0 -99
  371. package/skills/cometchat-flutter-v5-calls/references/in-call-chat.md +0 -135
  372. package/skills/cometchat-flutter-v5-calls/references/migration-v4-to-v5.md +0 -210
  373. package/skills/cometchat-flutter-v5-calls/references/raise-hand.md +0 -255
  374. package/skills/cometchat-flutter-v5-calls/references/ringing-integration.md +0 -196
  375. package/skills/cometchat-flutter-v5-calls/references/server-push-bridge.md +0 -101
  376. package/skills/cometchat-flutter-v5-calls/references/share-invite.md +0 -148
  377. package/skills/cometchat-flutter-v5-conversations/SKILL.md +0 -118
  378. package/skills/cometchat-flutter-v5-core/SKILL.md +0 -239
  379. package/skills/cometchat-flutter-v5-customization/SKILL.md +0 -358
  380. package/skills/cometchat-flutter-v5-events/SKILL.md +0 -156
  381. package/skills/cometchat-flutter-v5-messages/SKILL.md +0 -259
  382. package/skills/cometchat-flutter-v5-production/SKILL.md +0 -216
  383. package/skills/cometchat-flutter-v5-push/SKILL.md +0 -285
  384. package/skills/cometchat-flutter-v5-testing/SKILL.md +0 -401
  385. package/skills/cometchat-flutter-v5-theming/SKILL.md +0 -161
  386. package/skills/cometchat-flutter-v5-troubleshooting/SKILL.md +0 -130
  387. package/skills/cometchat-flutter-v5-users-groups/SKILL.md +0 -152
  388. package/skills/cometchat-flutter-v6/SKILL.md +0 -446
  389. package/skills/cometchat-flutter-v6-calls/references/add-calls-to-existing-chat.md +0 -136
  390. package/skills/cometchat-flutter-v6-calls/references/advanced-features.md +0 -89
  391. package/skills/cometchat-flutter-v6-calls/references/call-layouts.md +0 -105
  392. package/skills/cometchat-flutter-v6-calls/references/call-session.md +0 -229
  393. package/skills/cometchat-flutter-v6-calls/references/device-management.md +0 -105
  394. package/skills/cometchat-flutter-v6-calls/references/group-calls.md +0 -190
  395. package/skills/cometchat-flutter-v6-calls/references/idle-timeout.md +0 -88
  396. package/skills/cometchat-flutter-v6-calls/references/in-call-chat.md +0 -125
  397. package/skills/cometchat-flutter-v6-calls/references/raise-hand.md +0 -275
  398. package/skills/cometchat-flutter-v6-calls/references/ringing-integration.md +0 -171
  399. package/skills/cometchat-flutter-v6-calls/references/server-push-bridge.md +0 -93
  400. package/skills/cometchat-flutter-v6-calls/references/share-invite.md +0 -102
  401. package/skills/cometchat-flutter-v6-conversations/SKILL.md +0 -238
  402. package/skills/cometchat-flutter-v6-messages/SKILL.md +0 -384
  403. package/skills/cometchat-flutter-v6-theming/SKILL.md +0 -293
  404. package/skills/cometchat-flutter-v6-users-groups/SKILL.md +0 -224
  405. package/skills/cometchat-i18n/SKILL.md +0 -419
  406. package/skills/cometchat-ios/SKILL.md +0 -325
  407. package/skills/cometchat-ios-calls/references/add-calls-to-existing-chat.md +0 -174
  408. package/skills/cometchat-ios-calls/references/audio-modes-and-controls.md +0 -45
  409. package/skills/cometchat-ios-calls/references/avaudiosession-routing.md +0 -188
  410. package/skills/cometchat-ios-calls/references/call-layouts.md +0 -76
  411. package/skills/cometchat-ios-calls/references/call-session.md +0 -218
  412. package/skills/cometchat-ios-calls/references/callkit-and-pushkit.md +0 -357
  413. package/skills/cometchat-ios-calls/references/custom-ui.md +0 -322
  414. package/skills/cometchat-ios-calls/references/device-management.md +0 -171
  415. package/skills/cometchat-ios-calls/references/group-calls.md +0 -359
  416. package/skills/cometchat-ios-calls/references/idle-timeout.md +0 -184
  417. package/skills/cometchat-ios-calls/references/in-call-chat.md +0 -179
  418. package/skills/cometchat-ios-calls/references/migration-v4-to-v5.md +0 -196
  419. package/skills/cometchat-ios-calls/references/picture-in-picture.md +0 -246
  420. package/skills/cometchat-ios-calls/references/raise-hand.md +0 -26
  421. package/skills/cometchat-ios-calls/references/recording-screen-share.md +0 -252
  422. package/skills/cometchat-ios-calls/references/ringing-integration.md +0 -143
  423. package/skills/cometchat-ios-calls/references/server-apns-pushkit.md +0 -267
  424. package/skills/cometchat-ios-calls/references/share-invite.md +0 -148
  425. package/skills/cometchat-ios-calls/references/swiftui-uikit-hosting.md +0 -246
  426. package/skills/cometchat-ios-calls/references/voip-cert-setup.md +0 -166
  427. package/skills/cometchat-ios-production/SKILL.md +0 -738
  428. package/skills/cometchat-ios-testing/SKILL.md +0 -376
  429. package/skills/cometchat-ios-theming/SKILL.md +0 -667
  430. package/skills/cometchat-ios-troubleshooting/SKILL.md +0 -1003
  431. package/skills/cometchat-native-bare-patterns/SKILL.md +0 -550
  432. package/skills/cometchat-native-calls/SKILL.md +0 -669
  433. package/skills/cometchat-native-calls/references/add-calls-to-existing-chat.md +0 -203
  434. package/skills/cometchat-native-calls/references/call-layouts.md +0 -125
  435. package/skills/cometchat-native-calls/references/call-session.md +0 -182
  436. package/skills/cometchat-native-calls/references/custom-ui.md +0 -254
  437. package/skills/cometchat-native-calls/references/device-management.md +0 -158
  438. package/skills/cometchat-native-calls/references/expo-vs-bare.md +0 -179
  439. package/skills/cometchat-native-calls/references/group-calls.md +0 -296
  440. package/skills/cometchat-native-calls/references/idle-timeout.md +0 -128
  441. package/skills/cometchat-native-calls/references/in-call-chat.md +0 -145
  442. package/skills/cometchat-native-calls/references/migration-v4-to-v5.md +0 -72
  443. package/skills/cometchat-native-calls/references/picture-in-picture.md +0 -276
  444. package/skills/cometchat-native-calls/references/raise-hand.md +0 -205
  445. package/skills/cometchat-native-calls/references/recording-screen-share.md +0 -169
  446. package/skills/cometchat-native-calls/references/ringing-integration.md +0 -118
  447. package/skills/cometchat-native-calls/references/server-push-bridge.md +0 -135
  448. package/skills/cometchat-native-calls/references/server-push-payloads.md +0 -193
  449. package/skills/cometchat-native-calls/references/share-invite.md +0 -146
  450. package/skills/cometchat-native-calls/references/voip-push-end-to-end.md +0 -319
  451. package/skills/cometchat-native-components/SKILL.md +0 -628
  452. package/skills/cometchat-native-core/SKILL.md +0 -679
  453. package/skills/cometchat-native-customization/SKILL.md +0 -716
  454. package/skills/cometchat-native-expo-patterns/SKILL.md +0 -552
  455. package/skills/cometchat-native-features/SKILL.md +0 -638
  456. package/skills/cometchat-native-placement/SKILL.md +0 -509
  457. package/skills/cometchat-native-production/SKILL.md +0 -700
  458. package/skills/cometchat-native-push/SKILL.md +0 -594
  459. package/skills/cometchat-native-testing/SKILL.md +0 -582
  460. package/skills/cometchat-native-theming/SKILL.md +0 -681
  461. package/skills/cometchat-native-troubleshooting/SKILL.md +0 -501
  462. package/skills/cometchat-nextjs-patterns/SKILL.md +0 -899
  463. package/skills/cometchat-placement/SKILL.md +0 -1360
  464. package/skills/cometchat-production/SKILL.md +0 -1027
  465. package/skills/cometchat-react-calls/SKILL.md +0 -749
  466. package/skills/cometchat-react-calls/references/add-calls-to-existing-chat.md +0 -146
  467. package/skills/cometchat-react-calls/references/call-layouts.md +0 -160
  468. package/skills/cometchat-react-calls/references/call-session.md +0 -235
  469. package/skills/cometchat-react-calls/references/custom-ui.md +0 -247
  470. package/skills/cometchat-react-calls/references/device-management.md +0 -210
  471. package/skills/cometchat-react-calls/references/group-calls.md +0 -257
  472. package/skills/cometchat-react-calls/references/idle-timeout.md +0 -188
  473. package/skills/cometchat-react-calls/references/in-call-chat.md +0 -212
  474. package/skills/cometchat-react-calls/references/migration-v4-to-v5.md +0 -170
  475. package/skills/cometchat-react-calls/references/picture-in-picture.md +0 -245
  476. package/skills/cometchat-react-calls/references/raise-hand.md +0 -238
  477. package/skills/cometchat-react-calls/references/recording-screen-share.md +0 -144
  478. package/skills/cometchat-react-calls/references/ringing-integration.md +0 -255
  479. package/skills/cometchat-react-calls/references/server-web-push-vapid.md +0 -241
  480. package/skills/cometchat-react-calls/references/share-invite.md +0 -175
  481. package/skills/cometchat-react-calls/references/testing-calls-on-web.md +0 -216
  482. package/skills/cometchat-react-calls/references/virtual-background.md +0 -32
  483. package/skills/cometchat-react-calls/references/voip-and-web-push.md +0 -165
  484. package/skills/cometchat-react-patterns/SKILL.md +0 -628
  485. package/skills/cometchat-react-push/SKILL.md +0 -634
  486. package/skills/cometchat-react-router-patterns/SKILL.md +0 -758
  487. package/skills/cometchat-react-testing/SKILL.md +0 -413
  488. package/skills/cometchat-theming/SKILL.md +0 -498
  489. package/skills/cometchat-troubleshooting/SKILL.md +0 -294
@@ -0,0 +1,521 @@
1
+ {
2
+ "generatedFrom": [
3
+ "catalogs/angular-v5.json (@cometchat/chat-uikit-angular@5.1.0, @cometchat/chat-sdk-javascript@4.1.13)",
4
+ "https://www.cometchat.com/docs/ui-kit/angular (v5 pages only)"
5
+ ],
6
+ "schemaNotes": "needs_stitching:true = the drop-in renders a default-ON UI affordance that is inert/partial until the host wires a callback + companion component (or hides it). auto_rendered_ui:true = the kit renders this itself once enabled; the skill must emit NO client code for it. needs_dashboard:true = also requires a Dashboard/plan toggle. ui_components lists ONLY components the HOST imports and writes in a template — never a kit-internal child (a *-item inside its list, a singular *-bubble inside cometchat-message-bubble, the media recorder inside the composer). It drives G1's mustUseComponents, so a kit-internal entry makes the gate demand an import a correct emit must not have. catalog.md is the complete EXISTENCE list; this is the emit list. ANGULAR NAMING: exported component classes carry a `Component` suffix (CometChatConversationsComponent); the bare form (CometChatConversations) is internal-only and NOT importable — 109 such names are recorded in the catalog's internalOnlyExcluded. The AI-assistant exports are the exception and carry no suffix. Templates use kebab-case selectors (<cometchat-conversations>), so every component has three distinct names: class, selector, and docs title. EXTENSION VALIDATION (ADD-FRAMEWORK Phase A step 3 / FEATURE-TAXONOMY 11-12): every extension row below was validated against ui-kit/angular/extensions.mdx, whose grouping mirrors the Dashboard. droppedFromReact: e2e-encryption, live-streaming and email-replies are in the react-v7 features.json but appear NOWHERE in Angular's extensions page, so they are deliberately omitted rather than ported — shipping them would enumerate features that cannot be verified. reactions + mentions are category:default/enablement:auto, NOT extensions (AUDIT-077 parity; Angular's extensions page does not list them, confirming they are core). NOT MODELLED AS FEATURES: guides/state-management and guides/subscription-patterns are Angular integration PATTERNS (ChatStateService, RxJS teardown), not things a user asks to 'add' — they belong to the patterns skill, not this enumeration. Recorded here so the omission reads as a decision. EXTENSION docs_topic points at the extension's OWN product page (/docs/fundamentals/<id>), not the generic ui-kit extensions listing — an agent asked for one extension needs its endpoint and payload, and a listing page does not carry them. needs_stitching:true on an extension means the kit renders NO affordance for it, so 'enable it in the dashboard and emit nothing' does NOT hold: it must be host-composed via CometChat.callExtension(). Extensions WITH ui_components are auto-rendered and do need zero client code. docs_topic is a PATH, not an absolute URL — prefix it with DOCS_BASE (cometchat-angular-v5-core/references/docs-map.md) before fetching. Absolute URLs pinned the oracle to production and silently bypassed the docs preview, so an agent following a feature's docs_topic read the OLD page while DOCS_BASE pointed at a branch with the improvements on it. One swap point now governs every fetch.",
7
+ "family": "web-angular",
8
+ "major": "v5",
9
+ "categories": [
10
+ "default",
11
+ "extension",
12
+ "ai",
13
+ "package-install",
14
+ "dashboard-only"
15
+ ],
16
+ "enablement": [
17
+ "auto",
18
+ "dashboard-toggle",
19
+ "dashboard-extension",
20
+ "npm-package",
21
+ "code-prop"
22
+ ],
23
+ "features": [
24
+ {
25
+ "id": "core-chat-surface",
26
+ "name": "Production-ready core chat surface",
27
+ "category": "default",
28
+ "enablement": "auto",
29
+ "needs_stitching": true,
30
+ "ui_components": [
31
+ "CometChatErrorBoundaryComponent",
32
+ "CometChatConversationsComponent",
33
+ "CometChatMessageHeaderComponent",
34
+ "CometChatMessageListComponent",
35
+ "CometChatMessageComposerComponent",
36
+ "CometChatThreadHeaderComponent",
37
+ "CometChatSearchComponent"
38
+ ],
39
+ "docs_topic": "/ui-kit/angular/overview",
40
+ "notes": "COMPOSITE / app-level — the DEFAULT for an unscoped 'add chat'. Ships all four core surfaces: conversations + messages + threaded replies + search. Angular consumes these as kebab-case selectors in a template (<cometchat-conversations>), not as imported JSX; the exported CLASS name is what G0 checks."
41
+ },
42
+ {
43
+ "id": "chat-experience",
44
+ "name": "Full chat experience (chats + users + groups + calls)",
45
+ "category": "default",
46
+ "enablement": "auto",
47
+ "needs_stitching": true,
48
+ "ui_components": [
49
+ "CometChatErrorBoundaryComponent",
50
+ "CometChatConversationsComponent",
51
+ "CometChatUsersComponent",
52
+ "CometChatGroupsComponent",
53
+ "CometChatCallLogsComponent",
54
+ "CometChatMessageHeaderComponent",
55
+ "CometChatMessageListComponent",
56
+ "CometChatMessageComposerComponent"
57
+ ],
58
+ "docs_topic": "/ui-kit/angular/angular-tab-based-chat",
59
+ "notes": "COMPOSITE / app-level — the GROW target, emitted only when the user asks for the WHOLE app. The default for a plain 'add chat' is core-chat-surface, and a rebuilt v4 composite ports to core-surface.md too: verified vs installed 4.3.36, NO v4 composite rendered an app-level tab bar (cometchat-tabs appears in exactly one v4 component, the CometChatContacts overlay). TAB SET RECONCILED: this list now matches what placement/references/combined-app.md actually emits — chats / users / groups / calls — and React's features.json chat-experience. CometChatCallLogsComponent was missing here previously. The docs_topic page's own tabs (Chats / Call Logs / Users) are ONE reference layout, not the definitive set: it omits groups, this omitted calls. Treat the page as the shell pattern (@switch (activeTab) over ChatStateService), and compose the tabs the app needs. Other Angular reference layouts: angular-conversation (list+pane) / angular-one-to-one-chat (single chat) — all three routed from cometchat-angular-v5-core/references/docs-map.md."
60
+ },
61
+ {
62
+ "id": "text-messaging",
63
+ "name": "Text messaging",
64
+ "category": "default",
65
+ "enablement": "auto",
66
+ "ui_components": [
67
+ "CometChatMessageListComponent",
68
+ "CometChatMessageComposerComponent"
69
+ ],
70
+ "docs_topic": "/ui-kit/angular/components/cometchat-message-composer",
71
+ "notes": "Sending and receiving text is built into the list + composer. CometChatTextBubbleComponent was listed here but is KIT-INTERNAL — the bundle shows it imported by cometchat-file-bubble and cometchat-audios-bubble, never by a host for plain text. Listing it made G1 demand an import a correct emit must not have. Matches react-v7 features.json, which lists only the two."
72
+ },
73
+ {
74
+ "id": "typing-indicators",
75
+ "name": "Typing indicators",
76
+ "category": "default",
77
+ "enablement": "auto",
78
+ "ui_components": [
79
+ "CometChatMessageHeaderComponent",
80
+ "CometChatTypingIndicatorComponent"
81
+ ],
82
+ "docs_topic": "/ui-kit/angular/components/cometchat-message-header",
83
+ "notes": "Angular exposes a standalone CometChatTypingIndicatorComponent in addition to the header's built-in indicator; React has no separate export."
84
+ },
85
+ {
86
+ "id": "delivery-read-receipts",
87
+ "name": "Delivery & read receipts",
88
+ "category": "default",
89
+ "enablement": "auto",
90
+ "ui_components": [
91
+ "CometChatMessageListComponent"
92
+ ],
93
+ "docs_topic": "/ui-kit/angular/components/cometchat-message-list",
94
+ "notes": "Receipt states come from the exported `Receipts` enum (un-prefixed — present in the catalog only because it is generated with --members)."
95
+ },
96
+ {
97
+ "id": "threaded-replies",
98
+ "name": "Threaded replies",
99
+ "category": "default",
100
+ "enablement": "code-prop",
101
+ "needs_stitching": true,
102
+ "ui_components": [
103
+ "CometChatThreadHeaderComponent",
104
+ "CometChatMessageListComponent",
105
+ "CometChatMessageComposerComponent"
106
+ ],
107
+ "docs_topic": "/ui-kit/angular/guides/threaded-messages",
108
+ "notes": "The message bubble's reply affordance is default-ON but inert until the host renders a thread pane. Angular ships CometChatThreadViewComponent as well as the header. CometChatThreadViewComponent removed from ui_components: it is the in-bubble reply-count indicator rendered by cometchat-message-bubble, not something a host imports — the host wires (threadRepliesClick) on the message list and renders its own thread panel. It appears only in catalog.md (the existence list), never in a recipe."
109
+ },
110
+ {
111
+ "id": "media-file-attachments",
112
+ "name": "Media & file attachments",
113
+ "category": "default",
114
+ "enablement": "auto",
115
+ "auto_rendered_ui": true,
116
+ "ui_components": [
117
+ "CometChatImageBubbleComponent",
118
+ "CometChatVideoBubbleComponent",
119
+ "CometChatAudioBubbleComponent",
120
+ "CometChatFileBubbleComponent",
121
+ "CometChatImagesBubbleComponent",
122
+ "CometChatVideosBubbleComponent",
123
+ "CometChatAudiosBubbleComponent",
124
+ "CometChatFilesBubbleComponent",
125
+ "CometChatFullScreenViewerComponent"
126
+ ],
127
+ "docs_topic": "/ui-kit/angular/components/cometchat-message-list",
128
+ "notes": "Angular ships BOTH singular and plural bubble variants (Image/Images, Video/Videos, Audio/Audios, File/Files) — the plural forms render multi-attachment messages. All are rendered by the message list; emit no client code for them."
129
+ },
130
+ {
131
+ "id": "voice-notes",
132
+ "name": "Voice notes",
133
+ "category": "default",
134
+ "enablement": "auto",
135
+ "ui_components": [
136
+ "CometChatMessageComposerComponent"
137
+ ],
138
+ "docs_topic": "/ui-kit/angular/components/cometchat-message-composer",
139
+ "notes": "KIT-INTERNAL components removed from ui_components: verified in the 5.1.0 bundle that CometChatVoiceNoteBubbleComponent, CometChatMediaRecorderComponent render inside cometchat-message-bubble / cometchat-message-composer, and they appear in no recipe — only in catalog.md, which is a complete EXISTENCE list, not a list of things a host imports. ui_components drives G1's mustUseComponents, so listing a kit-internal child made the gate demand an import a correct emit must not have."
140
+ },
141
+ {
142
+ "id": "user-presence",
143
+ "name": "User presence (online/offline)",
144
+ "category": "default",
145
+ "enablement": "code-prop",
146
+ "ui_components": [],
147
+ "docs_topic": "/ui-kit/angular/core-features",
148
+ "notes": "No dedicated component — presence renders inside list items and the message header."
149
+ },
150
+ {
151
+ "id": "users-groups",
152
+ "name": "Users & groups directories",
153
+ "category": "default",
154
+ "enablement": "auto",
155
+ "ui_components": [
156
+ "CometChatUsersComponent",
157
+ "CometChatGroupsComponent",
158
+ "CometChatGroupMembersComponent"
159
+ ],
160
+ "docs_topic": "/ui-kit/angular/components/cometchat-groups",
161
+ "notes": "KIT-INTERNAL components removed from ui_components: verified in the 5.1.0 bundle that CometChatUserItemComponent, CometChatGroupItemComponent, CometChatGroupMemberItemComponent render inside their parent list components, and they appear in no recipe — only in catalog.md, which is a complete EXISTENCE list, not a list of things a host imports. ui_components drives G1's mustUseComponents, so listing a kit-internal child made the gate demand an import a correct emit must not have."
162
+ },
163
+ {
164
+ "id": "message-search",
165
+ "name": "Message & conversation search",
166
+ "category": "default",
167
+ "enablement": "code-prop",
168
+ "ui_components": [
169
+ "CometChatSearchComponent"
170
+ ],
171
+ "docs_topic": "/ui-kit/angular/guides/search-messages",
172
+ "notes": "Angular splits search into a shell plus two result lists, and exposes SearchMessagesService / SearchConversationsService for headless querying. Scope is set via the exported CometChatSearchScope / CometChatSearchFilter. KIT-INTERNAL removed (CometChatSearchBarComponent ← cometchat-conversations; CometChatSearchConversationsListComponent ← cometchat-search; CometChatSearchMessagesListComponent ← cometchat-search) — rendered by a parent kit component and written in no recipe fence. Guarded by verify-oracle-components.mjs."
173
+ },
174
+ {
175
+ "id": "reactions",
176
+ "name": "Message reactions",
177
+ "category": "default",
178
+ "enablement": "auto",
179
+ "ui_components": [],
180
+ "docs_topic": "/ui-kit/angular/components/cometchat-reactions",
181
+ "notes": "ON BY DEFAULT in the v5 kit — NOT a dashboard extension (mirrors AUDIT-077 for React). Angular's extensions page does not list reactions, confirming it is core. KIT-INTERNAL removed (CometChatReactionsComponent ← cometchat-message-bubble; CometChatReactionListComponent ← cometchat-reactions; CometChatReactionInfoComponent ← cometchat-reactions; CometChatEmojiKeyboardComponent ← cometchat-message-composer) — rendered by a parent kit component and written in no recipe fence. Guarded by verify-oracle-components.mjs."
182
+ },
183
+ {
184
+ "id": "mentions",
185
+ "name": "Mentions (@user)",
186
+ "category": "default",
187
+ "enablement": "auto",
188
+ "ui_components": [
189
+ "CometChatMentionsFormatter"
190
+ ],
191
+ "docs_topic": "/ui-kit/angular/guides/mentions-formatter",
192
+ "notes": "ON BY DEFAULT — core, not an extension (AUDIT-077 parity). Angular documents mentions as a formatter guide and exposes MENTIONS_LIMIT / MentionType / MentionsVisibility as tuning knobs."
193
+ },
194
+ {
195
+ "id": "custom-message-types",
196
+ "name": "Custom message types",
197
+ "category": "default",
198
+ "enablement": "code-prop",
199
+ "ui_components": [
200
+ "CometChatMessageListComponent"
201
+ ],
202
+ "docs_topic": "/ui-kit/angular/guides/custom-message-types",
203
+ "notes": "DIVERGES FROM REACT v7. React uses the plugin architecture (CometChatMessagePlugin / CometChatPluginRegistry); Angular v5 exports NO plugin symbols. Three separate concerns: send via CometChat.CustomMessage (SDK), widen the list's messagesRequestBuilder with the exported DEFAULT_MESSAGE_TYPES / DEFAULT_MESSAGE_CATEGORIES so the type is fetched at all, then render via the message list's listItemTemplate or a bubble view slot. CometChatTemplatesService is NOT a custom-type registry — it is a DI alternative to *View inputs. Together with text-formatters this is one of the two capabilities the React v6->v7 port silently dropped; Angular documents both. KIT-INTERNAL removed from ui_components (CometChatMessageBubbleComponent is rendered by cometchat-message-information) — verified in the 5.1.0 bundle and absent from every recipe. ui_components drives G1's mustUseComponents, so a kit-internal child made the gate demand an import a correct emit must not have. Guarded by test-suite/scripts/verify-oracle-components.mjs."
204
+ },
205
+ {
206
+ "id": "text-formatters",
207
+ "name": "Text formatters / rich text",
208
+ "category": "default",
209
+ "enablement": "code-prop",
210
+ "ui_components": [
211
+ "CometChatTextFormatter",
212
+ "CometChatMentionsFormatter",
213
+ "CometChatUrlFormatter",
214
+ "CometChatEmojiFormatter",
215
+ "CometChatMarkdownFormatter"
216
+ ],
217
+ "docs_topic": "/ui-kit/angular/guides/custom-text-formatter",
218
+ "notes": "Angular's formatter surface is richer and better documented than React's: five formatter guides (custom-text-formatter, hashtag, mentions, shortcut, url) plus FormatterConfigService for app-wide defaults and the applyFormatters / formatText helpers. The second capability dropped in the React v6→v7 port."
219
+ },
220
+ {
221
+ "id": "rich-text-editing",
222
+ "name": "Rich text editing in the composer",
223
+ "category": "default",
224
+ "enablement": "code-prop",
225
+ "ui_components": [
226
+ "CometChatMessageComposerComponent"
227
+ ],
228
+ "docs_topic": "/ui-kit/angular/guides/rich-text-formatting",
229
+ "notes": "ANGULAR-ONLY (no react-v7 equivalent row). A native-browser-API rich text editor — bold/italic/underline, code blocks, lists, links, undo/redo — driven by the exported RichTextEditorService. Documented at guides/rich-text-formatting and api-reference/rich-text-editor-service. KIT-INTERNAL removed from ui_components (CometChatLinkDialogComponent is rendered by cometchat-message-composer; CometChatLinkPopoverComponent is rendered by cometchat-message-composer) — verified in the 5.1.0 bundle and absent from every recipe. ui_components drives G1's mustUseComponents, so a kit-internal child made the gate demand an import a correct emit must not have. Guarded by test-suite/scripts/verify-oracle-components.mjs."
230
+ },
231
+ {
232
+ "id": "card-messages",
233
+ "name": "Interactive card messages",
234
+ "category": "default",
235
+ "enablement": "code-prop",
236
+ "ui_components": [],
237
+ "docs_topic": "/ui-kit/angular/guides/card-messages",
238
+ "notes": "ANGULAR-ONLY row (React has no card-messages guide). Note @cometchat/cards-angular is a REQUIRED peer dependency added in kit 5.1.0 and currently undocumented in overview.mdx — see cometchat/docs#471. KIT-INTERNAL removed from ui_components (CometChatCardBubbleComponent is rendered by cometchat-message-bubble) — verified in the 5.1.0 bundle and absent from every recipe. ui_components drives G1's mustUseComponents, so a kit-internal child made the gate demand an import a correct emit must not have. Guarded by test-suite/scripts/verify-oracle-components.mjs."
239
+ },
240
+ {
241
+ "id": "polls",
242
+ "name": "Polls",
243
+ "category": "extension",
244
+ "enablement": "dashboard-extension",
245
+ "ui_components": [],
246
+ "docs_topic": "/fundamentals/polls",
247
+ "notes": "Angular exposes CometChatCreatePollComponent, so the create-poll flow is a real component, not a hand-rolled form. KIT-INTERNAL removed from ui_components (CometChatPollBubbleComponent is rendered by cometchat-message-bubble; CometChatCreatePollComponent is rendered by cometchat-message-composer) — verified in the 5.1.0 bundle and absent from every recipe. ui_components drives G1's mustUseComponents, so a kit-internal child made the gate demand an import a correct emit must not have. Guarded by test-suite/scripts/verify-oracle-components.mjs."
248
+ },
249
+ {
250
+ "id": "stickers",
251
+ "name": "Stickers",
252
+ "category": "extension",
253
+ "enablement": "dashboard-extension",
254
+ "ui_components": [],
255
+ "docs_topic": "/fundamentals/stickers",
256
+ "notes": "Dashboard lists three sticker providers (Stickers, Stipop) — one UI surface. KIT-INTERNAL removed from ui_components (CometChatStickerBubbleComponent is rendered by cometchat-message-bubble; CometChatStickersKeyboardComponent is rendered by cometchat-message-composer) — verified in the 5.1.0 bundle and absent from every recipe. ui_components drives G1's mustUseComponents, so a kit-internal child made the gate demand an import a correct emit must not have. Guarded by test-suite/scripts/verify-oracle-components.mjs."
257
+ },
258
+ {
259
+ "id": "message-translation",
260
+ "name": "Message translation",
261
+ "category": "extension",
262
+ "enablement": "dashboard-extension",
263
+ "ui_components": [],
264
+ "docs_topic": "/fundamentals/message-translation",
265
+ "notes": "Auto-rendered by the kit once enabled — link previews and thumbnails appear inside the message bubble, Translate appears in the message menu. Emit NO client code.",
266
+ "auto_rendered_ui": true
267
+ },
268
+ {
269
+ "id": "link-preview",
270
+ "name": "Link preview",
271
+ "category": "extension",
272
+ "enablement": "dashboard-extension",
273
+ "auto_rendered_ui": true,
274
+ "ui_components": [],
275
+ "docs_topic": "/fundamentals/link-preview",
276
+ "notes": "Auto-integrates into the message bubble when activated — emit NO client code. Auto-rendered by the kit once enabled — link previews and thumbnails appear inside the message bubble, Translate appears in the message menu. Emit NO client code."
277
+ },
278
+ {
279
+ "id": "pin-message",
280
+ "name": "Pin message",
281
+ "category": "extension",
282
+ "enablement": "dashboard-extension",
283
+ "ui_components": [],
284
+ "docs_topic": "/fundamentals/pin-message",
285
+ "needs_stitching": true,
286
+ "notes": "NO kit component surfaces this in Angular — verify in the running app. If no affordance appears in the message menu or composer, it is HOST-COMPOSED: call it through `CometChat.callExtension()` and render your own control. Enabling it in the dashboard is necessary but NOT sufficient. Exact endpoint + payload are on https://www.cometchat.com/docs/fundamentals/pin-message."
287
+ },
288
+ {
289
+ "id": "save-message",
290
+ "name": "Save message",
291
+ "category": "extension",
292
+ "enablement": "dashboard-extension",
293
+ "ui_components": [],
294
+ "docs_topic": "/fundamentals/save-message",
295
+ "needs_stitching": true,
296
+ "notes": "NO kit component surfaces this in Angular — verify in the running app. If no affordance appears in the message menu or composer, it is HOST-COMPOSED: call it through `CometChat.callExtension()` and render your own control. Enabling it in the dashboard is necessary but NOT sufficient. Exact endpoint + payload are on https://www.cometchat.com/docs/fundamentals/save-message."
297
+ },
298
+ {
299
+ "id": "message-shortcuts",
300
+ "name": "Message shortcuts",
301
+ "category": "extension",
302
+ "enablement": "dashboard-extension",
303
+ "ui_components": [],
304
+ "docs_topic": "/fundamentals/message-shortcuts",
305
+ "notes": "Pairs with the shortcut formatter guide (guides/shortcut-formatter). NO kit component surfaces this in Angular — verify in the running app. If no affordance appears in the message menu or composer, it is HOST-COMPOSED: call it through `CometChat.callExtension()` and render your own control. Enabling it in the dashboard is necessary but NOT sufficient. Exact endpoint + payload are on https://www.cometchat.com/docs/fundamentals/message-shortcuts.",
306
+ "needs_stitching": true
307
+ },
308
+ {
309
+ "id": "thumbnail-generation",
310
+ "name": "Thumbnail generation",
311
+ "category": "extension",
312
+ "enablement": "dashboard-extension",
313
+ "auto_rendered_ui": true,
314
+ "ui_components": [],
315
+ "docs_topic": "/fundamentals/thumbnail-generation",
316
+ "notes": "Auto-integrates into the message bubble when activated — emit NO client code. Auto-rendered by the kit once enabled — link previews and thumbnails appear inside the message bubble, Translate appears in the message menu. Emit NO client code."
317
+ },
318
+ {
319
+ "id": "voice-transcription",
320
+ "name": "Voice transcription",
321
+ "category": "extension",
322
+ "enablement": "dashboard-extension",
323
+ "ui_components": [],
324
+ "docs_topic": "/fundamentals/voice-transcription",
325
+ "needs_stitching": true,
326
+ "notes": "NO kit component surfaces this in Angular — verify in the running app. If no affordance appears in the message menu or composer, it is HOST-COMPOSED: call it through `CometChat.callExtension()` and render your own control. Enabling it in the dashboard is necessary but NOT sufficient. Exact endpoint + payload are on https://www.cometchat.com/docs/fundamentals/voice-transcription."
327
+ },
328
+ {
329
+ "id": "rich-media-preview",
330
+ "name": "Rich media preview",
331
+ "category": "extension",
332
+ "enablement": "dashboard-extension",
333
+ "ui_components": [],
334
+ "docs_topic": "/fundamentals/rich-media-preview",
335
+ "needs_stitching": true,
336
+ "notes": "NO kit component surfaces this in Angular — verify in the running app. If no affordance appears in the message menu or composer, it is HOST-COMPOSED: call it through `CometChat.callExtension()` and render your own control. Enabling it in the dashboard is necessary but NOT sufficient. Exact endpoint + payload are on https://www.cometchat.com/docs/fundamentals/rich-media-preview."
337
+ },
338
+ {
339
+ "id": "gifs",
340
+ "name": "GIFs (Giphy / Tenor)",
341
+ "category": "extension",
342
+ "enablement": "dashboard-extension",
343
+ "ui_components": [],
344
+ "docs_topic": "/fundamentals/gifs",
345
+ "notes": "Angular's extensions page lists Giphy and Tenor as separate dashboard entries; one feature row covers both. NO kit component surfaces this in Angular — verify in the running app. If no affordance appears in the message menu or composer, it is HOST-COMPOSED: call it through `CometChat.callExtension()` and render your own control. Enabling it in the dashboard is necessary but NOT sufficient. Exact endpoint + payload are on https://www.cometchat.com/docs/fundamentals/gifs.",
346
+ "needs_stitching": true
347
+ },
348
+ {
349
+ "id": "reminders",
350
+ "name": "Reminders",
351
+ "category": "extension",
352
+ "enablement": "dashboard-extension",
353
+ "ui_components": [],
354
+ "docs_topic": "/fundamentals/reminders",
355
+ "needs_stitching": true,
356
+ "notes": "NO kit component surfaces this in Angular — verify in the running app. If no affordance appears in the message menu or composer, it is HOST-COMPOSED: call it through `CometChat.callExtension()` and render your own control. Enabling it in the dashboard is necessary but NOT sufficient. Exact endpoint + payload are on https://www.cometchat.com/docs/fundamentals/reminders."
357
+ },
358
+ {
359
+ "id": "url-shortener",
360
+ "name": "URL shortener (Bitly / TinyURL)",
361
+ "category": "extension",
362
+ "enablement": "dashboard-extension",
363
+ "ui_components": [],
364
+ "docs_topic": "/fundamentals/url-shortener",
365
+ "notes": "Two dashboard entries (Bitly, TinyURL); one feature row. NO kit component surfaces this in Angular — verify in the running app. If no affordance appears in the message menu or composer, it is HOST-COMPOSED: call it through `CometChat.callExtension()` and render your own control. Enabling it in the dashboard is necessary but NOT sufficient. Exact endpoint + payload are on https://www.cometchat.com/docs/fundamentals/url-shortener.",
366
+ "needs_stitching": true
367
+ },
368
+ {
369
+ "id": "collaborative-whiteboard",
370
+ "name": "Collaborative whiteboard",
371
+ "category": "extension",
372
+ "enablement": "dashboard-extension",
373
+ "ui_components": [],
374
+ "docs_topic": "/fundamentals/collaborative-whiteboard",
375
+ "notes": "KIT-INTERNAL removed from ui_components (CometChatCollaborativeWhiteboardBubbleComponent is rendered by cometchat-message-bubble) — verified in the 5.1.0 bundle and absent from every recipe. ui_components drives G1's mustUseComponents, so a kit-internal child made the gate demand an import a correct emit must not have. Guarded by test-suite/scripts/verify-oracle-components.mjs."
376
+ },
377
+ {
378
+ "id": "collaborative-document",
379
+ "name": "Collaborative document",
380
+ "category": "extension",
381
+ "enablement": "dashboard-extension",
382
+ "ui_components": [],
383
+ "docs_topic": "/fundamentals/collaborative-document",
384
+ "notes": "KIT-INTERNAL removed from ui_components (CometChatCollaborativeDocumentBubbleComponent is rendered by cometchat-message-bubble) — verified in the 5.1.0 bundle and absent from every recipe. ui_components drives G1's mustUseComponents, so a kit-internal child made the gate demand an import a correct emit must not have. Guarded by test-suite/scripts/verify-oracle-components.mjs."
385
+ },
386
+ {
387
+ "id": "disappearing-messages",
388
+ "name": "Disappearing messages",
389
+ "category": "extension",
390
+ "enablement": "dashboard-extension",
391
+ "ui_components": [],
392
+ "docs_topic": "/fundamentals/disappearing-messages",
393
+ "needs_stitching": true,
394
+ "notes": "NO kit component surfaces this in Angular — verify in the running app. If no affordance appears in the message menu or composer, it is HOST-COMPOSED: call it through `CometChat.callExtension()` and render your own control. Enabling it in the dashboard is necessary but NOT sufficient. Exact endpoint + payload are on https://www.cometchat.com/docs/fundamentals/disappearing-messages."
395
+ },
396
+ {
397
+ "id": "support-integrations",
398
+ "name": "Support desk integrations (Chatwoot / Intercom)",
399
+ "category": "extension",
400
+ "enablement": "dashboard-extension",
401
+ "ui_components": [],
402
+ "docs_topic": "/fundamentals/support-integrations",
403
+ "notes": "Angular's page lists Chatwoot and Intercom under Customer Support. NO kit component surfaces this in Angular — verify in the running app. If no affordance appears in the message menu or composer, it is HOST-COMPOSED: call it through `CometChat.callExtension()` and render your own control. Enabling it in the dashboard is necessary but NOT sufficient. Exact endpoint + payload are on https://www.cometchat.com/docs/fundamentals/support-integrations.",
404
+ "needs_stitching": true
405
+ },
406
+ {
407
+ "id": "smart-reply",
408
+ "name": "Smart replies",
409
+ "category": "ai",
410
+ "enablement": "dashboard-toggle",
411
+ "ui_components": [
412
+ "CometChatSmartRepliesComponent",
413
+ "CometChatMessageListComponent"
414
+ ],
415
+ "docs_topic": "/ui-kit/angular/ai-features",
416
+ "notes": "Angular ships a standalone CometChatSmartRepliesComponent; React surfaces smart replies inside the message list only."
417
+ },
418
+ {
419
+ "id": "conversation-starter",
420
+ "name": "Conversation starter",
421
+ "category": "ai",
422
+ "enablement": "dashboard-toggle",
423
+ "ui_components": [
424
+ "CometChatConversationStarterComponent"
425
+ ],
426
+ "docs_topic": "/ui-kit/angular/ai-features"
427
+ },
428
+ {
429
+ "id": "conversation-summary",
430
+ "name": "Conversation summary",
431
+ "category": "ai",
432
+ "enablement": "dashboard-toggle",
433
+ "ui_components": [
434
+ "CometChatConversationSummaryComponent",
435
+ "CometChatMessageHeaderComponent"
436
+ ],
437
+ "docs_topic": "/ui-kit/angular/ai-features"
438
+ },
439
+ {
440
+ "id": "ai-assistant",
441
+ "name": "AI assistant chat",
442
+ "category": "ai",
443
+ "enablement": "dashboard-toggle",
444
+ "ui_components": [
445
+ "CometChatAIAssistantChat",
446
+ "CometChatAIAssistantTools"
447
+ ],
448
+ "docs_topic": "/ui-kit/angular/components/cometchat-ai-assistant-chat",
449
+ "notes": "NOTE the naming break: the AI assistant exports carry NO `Component` suffix (CometChatAIAssistantChat, not …ChatComponent), unlike every other Angular component. Emitting the suffixed name fails G0. KIT-INTERNAL removed from ui_components (CometChatAIAssistantChatHistory is rendered by cometchat-ai-assistant-chat; CometChatAIAssistantMessageBubble is rendered by cometchat-message-bubble) — verified in the 5.1.0 bundle and absent from every recipe. ui_components drives G1's mustUseComponents, so a kit-internal child made the gate demand an import a correct emit must not have. Guarded by test-suite/scripts/verify-oracle-components.mjs."
450
+ },
451
+ {
452
+ "id": "voice-video-calls",
453
+ "name": "Voice & video calling",
454
+ "category": "package-install",
455
+ "enablement": "npm-package",
456
+ "ui_components": [
457
+ "CometChatCallButtonsComponent",
458
+ "CometChatIncomingCallComponent",
459
+ "CometChatCallLogsComponent",
460
+ "CometChatUIKitCalls"
461
+ ],
462
+ "docs_topic": "/ui-kit/angular/call-features",
463
+ "notes": "Requires the optional peer @cometchat/calls-sdk-javascript@^5.0.3 (per the published 5.1.0 peerDependencies). Angular also exposes IncomingCallService / OutgoingCallService / OngoingCallService / CallLogsService for headless control. KIT-INTERNAL removed (CometChatOutgoingCallComponent ← cometchat-call-buttons; CometChatOngoingCallComponent ← cometchat-call-buttons; CometChatCallBubbleComponent ← cometchat-message-bubble) — rendered by a parent kit component and written in no recipe fence. Guarded by verify-oracle-components.mjs."
464
+ },
465
+ {
466
+ "id": "call-log-details",
467
+ "name": "Call log details",
468
+ "category": "package-install",
469
+ "enablement": "npm-package",
470
+ "ui_components": [
471
+ "CometChatCallLogsComponent"
472
+ ],
473
+ "docs_topic": "/ui-kit/angular/guides/call-log-details",
474
+ "notes": "ANGULAR-ONLY row — React has no call-log-details guide."
475
+ },
476
+ {
477
+ "id": "push-notifications",
478
+ "name": "Push notifications",
479
+ "category": "dashboard-only",
480
+ "enablement": "dashboard-toggle",
481
+ "needs_dashboard": true,
482
+ "ui_components": [],
483
+ "docs_topic": "/ui-kit/angular/campaigns",
484
+ "notes": "Angular docs cover push only inside campaigns.mdx — there is no dedicated Angular push page (React has one). DOCS GAP: the push skill must fetch the product-level notifications docs instead."
485
+ },
486
+ {
487
+ "id": "notification-feed",
488
+ "name": "In-app notification feed",
489
+ "category": "dashboard-only",
490
+ "enablement": "dashboard-toggle",
491
+ "ui_components": [
492
+ "CometChatNotificationFeedComponent",
493
+ "CometChatNotificationBadgeComponent"
494
+ ],
495
+ "docs_topic": "/ui-kit/angular/components/notification-feed",
496
+ "notes": "Note the docs path has NO cometchat- prefix (components/notification-feed), unlike every other Angular component page. NotificationFeedViewModel and NotificationUnreadCountService are the supporting exports."
497
+ },
498
+ {
499
+ "id": "moderation",
500
+ "name": "Moderation (flag / report message)",
501
+ "category": "dashboard-only",
502
+ "enablement": "dashboard-toggle",
503
+ "needs_dashboard": true,
504
+ "ui_components": [],
505
+ "docs_topic": "/ui-kit/angular/core-features",
506
+ "notes": "Angular has NO CometChatModerationView (React does) — the only client surface is the flag dialog, which the message list renders when moderation is enabled in the dashboard. Zero client code beyond enabling it. KIT-INTERNAL removed (CometChatFlagMessageDialogComponent ← cometchat-message-list) — rendered by a parent kit component and written in no recipe fence. Guarded by verify-oracle-components.mjs."
507
+ },
508
+ {
509
+ "id": "campaigns",
510
+ "name": "Campaigns",
511
+ "category": "dashboard-only",
512
+ "enablement": "dashboard-toggle",
513
+ "needs_dashboard": true,
514
+ "ui_components": [
515
+ "CometChatNotificationFeedComponent"
516
+ ],
517
+ "docs_topic": "/ui-kit/angular/campaigns",
518
+ "notes": "ANGULAR-ONLY row — React's features.json has no campaigns entry, but Angular ships a dedicated campaigns page."
519
+ }
520
+ ]
521
+ }