@cometchat/skills 4.4.2 → 5.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +55 -0
- package/.claude-plugin/plugin.json +14 -0
- package/CHANGELOG.md +36 -0
- package/LICENSE +21 -0
- package/README.md +41 -163
- package/RULES.md +114 -0
- package/bin/cometchat-skills.mjs +1180 -0
- package/bin/legacy-skills.json +95 -0
- package/catalogs/android-v6.json +1646 -0
- package/catalogs/flutter-v6.json +651 -0
- package/catalogs/ios-v5.json +1383 -0
- package/catalogs/rn-calls-v5.json +134 -0
- package/catalogs/rn-calls-v5.symbols.txt +58 -0
- package/catalogs/rn-sdk-v4.json +672 -0
- package/catalogs/rn-v5.json +449 -0
- package/catalogs/rn-v5.symbols.txt +216 -0
- package/catalogs/sdk-android-v5.json +514 -0
- package/contracts.android-calls-v5.json +122 -0
- package/contracts.android-v6.json +135 -0
- package/contracts.angular-v5.json +694 -0
- package/contracts.flutter-calls-v5.json +77 -0
- package/contracts.flutter-v6.json +126 -0
- package/contracts.ios-calls-v5.json +67 -0
- package/contracts.ios-v5.json +436 -0
- package/contracts.json +82 -0
- package/contracts.rn-calls-v5.json +77 -0
- package/contracts.rn-v5.json +727 -0
- package/contracts.sdk-android-v5.json +15 -0
- package/contracts.web-calls-v5.json +45 -0
- package/features.android-calls-v5.json +246 -0
- package/features.android-v6.json +65 -0
- package/features.angular-v5.json +521 -0
- package/features.flutter-calls-v5.json +286 -0
- package/features.flutter-v6.json +484 -0
- package/features.ios-calls-v5.json +236 -0
- package/features.ios-v5.json +573 -0
- package/features.json +61 -0
- package/features.rn-calls-v5.json +187 -0
- package/features.rn-v5.json +614 -0
- package/features.sdk-android-v5.json +40 -0
- package/features.sdk-jsv4.json +24 -0
- package/features.web-calls-v5.json +108 -0
- package/package.json +151 -74
- package/peers.yaml +312 -0
- package/registry/README.md +31 -0
- package/registry/android-calls-v5.json +54 -0
- package/registry/android-v6.json +137 -0
- package/registry/angular-v5.json +114 -0
- package/registry/flutter-calls-v5.json +54 -0
- package/registry/flutter-v6.json +119 -0
- package/registry/ios-calls-v5.json +59 -0
- package/registry/ios-v5.json +97 -0
- package/registry/rn-calls-v5.json +59 -0
- package/registry/rn-v5.json +129 -0
- package/registry/sdk-android-v5.json +53 -0
- package/registry/sdk-jsv4.json +53 -0
- package/registry/web-calls-v5.json +54 -0
- package/registry/web-v7.json +99 -0
- package/skills/cometchat/SKILL.md +42 -2096
- package/skills/cometchat-android-v5-calls-sdk/SKILL.md +206 -0
- package/skills/cometchat-android-v5-calls-sdk/references/build-truth.md +63 -0
- package/skills/cometchat-android-v5-calls-sdk/references/docs-map.md +119 -0
- package/skills/cometchat-android-v5-calls-sdk/references/method-map.md +53 -0
- package/skills/cometchat-android-v5-calls-sdk/references/pitfalls.md +72 -0
- package/skills/cometchat-android-v5-calls-sdk/references/ringing.md +92 -0
- package/skills/cometchat-android-v5-calls-sdk/references/user-switch.md +90 -0
- package/skills/cometchat-android-v5-sdk/SKILL.md +127 -0
- package/skills/cometchat-android-v5-sdk/references/app-surface.md +88 -0
- package/skills/cometchat-android-v5-sdk/references/docs-map.md +91 -0
- package/skills/cometchat-android-v6-builder-settings/SKILL.md +51 -137
- package/skills/cometchat-android-v6-calls/SKILL.md +128 -413
- package/skills/cometchat-android-v6-compose-components/SKILL.md +84 -194
- package/skills/cometchat-android-v6-compose-customization/SKILL.md +66 -411
- package/skills/cometchat-android-v6-compose-placement/SKILL.md +154 -237
- package/skills/cometchat-android-v6-core/SKILL.md +236 -672
- package/skills/cometchat-android-v6-core/references/anti-patterns.md +31 -0
- package/skills/cometchat-android-v6-core/references/component-props.md +168 -0
- package/skills/cometchat-android-v6-core/references/docs-map.md +153 -0
- package/skills/cometchat-android-v6-core/references/layout.md +112 -0
- package/skills/cometchat-android-v6-core/references/lifecycle.md +75 -0
- package/skills/cometchat-android-v6-core/references/setup-credentials.md +105 -0
- package/skills/cometchat-android-v6-core/references/troubleshooting.md +36 -0
- package/skills/cometchat-android-v6-events/SKILL.md +46 -184
- package/skills/cometchat-android-v6-extensions/SKILL.md +39 -179
- package/skills/cometchat-android-v6-features/SKILL.md +74 -143
- package/skills/cometchat-android-v6-kotlin-components/SKILL.md +75 -193
- package/skills/cometchat-android-v6-kotlin-customization/SKILL.md +67 -419
- package/skills/cometchat-android-v6-kotlin-placement/SKILL.md +77 -223
- package/skills/cometchat-android-v6-migration/SKILL.md +67 -378
- package/skills/cometchat-android-v6-production/SKILL.md +40 -179
- package/skills/cometchat-android-v6-push/SKILL.md +39 -289
- package/skills/cometchat-android-v6-testing/SKILL.md +50 -265
- package/skills/cometchat-android-v6-troubleshooting/SKILL.md +70 -254
- package/skills/cometchat-angular-v5-calls/SKILL.md +193 -0
- package/skills/cometchat-angular-v5-components/SKILL.md +131 -0
- package/skills/cometchat-angular-v5-components/references/catalog.md +111 -0
- package/skills/cometchat-angular-v5-components/references/host-composed.md +46 -0
- package/skills/cometchat-angular-v5-core/SKILL.md +300 -0
- package/skills/cometchat-angular-v5-core/references/anti-patterns.md +49 -0
- package/skills/cometchat-angular-v5-core/references/component-props.md +55 -0
- package/skills/cometchat-angular-v5-core/references/dependencies.md +66 -0
- package/skills/cometchat-angular-v5-core/references/docs-map.md +132 -0
- package/skills/cometchat-angular-v5-core/references/layout.md +64 -0
- package/skills/cometchat-angular-v5-core/references/lifecycle.md +202 -0
- package/skills/cometchat-angular-v5-core/references/setup-credentials.md +137 -0
- package/skills/cometchat-angular-v5-core/references/theming.md +70 -0
- package/skills/cometchat-angular-v5-core/references/troubleshooting.md +27 -0
- package/skills/cometchat-angular-v5-customization/SKILL.md +94 -0
- package/skills/cometchat-angular-v5-features/SKILL.md +107 -0
- package/skills/cometchat-angular-v5-features/references/custom-messages.md +133 -0
- package/skills/cometchat-angular-v5-features/references/formatters.md +28 -0
- package/skills/cometchat-angular-v5-features/references/host-composed-extensions.md +85 -0
- package/skills/cometchat-angular-v5-migration/SKILL.md +40 -0
- package/skills/cometchat-angular-v5-migration/references/migration-guide.md +165 -0
- package/skills/cometchat-angular-v5-patterns/SKILL.md +107 -0
- package/skills/cometchat-angular-v5-placement/SKILL.md +133 -0
- package/skills/cometchat-angular-v5-placement/references/combined-app.md +174 -0
- package/skills/cometchat-angular-v5-placement/references/core-surface.md +199 -0
- package/skills/cometchat-angular-v5-production/SKILL.md +101 -0
- package/skills/cometchat-angular-v5-push/SKILL.md +61 -0
- package/skills/cometchat-angular-v5-testing/SKILL.md +112 -0
- package/skills/cometchat-angular-v5-troubleshooting/SKILL.md +96 -0
- package/skills/cometchat-flutter-v5-sdk/SKILL.md +188 -0
- package/skills/cometchat-flutter-v5-sdk/references/doc-corrections.md +55 -0
- package/skills/cometchat-flutter-v5-sdk/references/docs-map.md +211 -0
- package/skills/cometchat-flutter-v5-sdk/references/platform-notes.md +48 -0
- package/skills/cometchat-flutter-v5-sdk/references/transcription.md +87 -0
- package/skills/cometchat-flutter-v6-calls/SKILL.md +75 -389
- package/skills/cometchat-flutter-v6-components/SKILL.md +88 -361
- package/skills/cometchat-flutter-v6-core/SKILL.md +154 -593
- package/skills/cometchat-flutter-v6-core/references/anti-patterns.md +55 -0
- package/skills/cometchat-flutter-v6-core/references/docs-map.md +143 -0
- package/skills/cometchat-flutter-v6-core/references/layout.md +45 -0
- package/skills/cometchat-flutter-v6-core/references/lifecycle.md +87 -0
- package/skills/cometchat-flutter-v6-core/references/setup-credentials.md +84 -0
- package/skills/cometchat-flutter-v6-core/references/troubleshooting.md +26 -0
- package/skills/cometchat-flutter-v6-customization/SKILL.md +70 -712
- package/skills/cometchat-flutter-v6-events/SKILL.md +79 -174
- package/skills/cometchat-flutter-v6-features/SKILL.md +55 -394
- package/skills/cometchat-flutter-v6-migration/SKILL.md +68 -367
- package/skills/cometchat-flutter-v6-migration/references/migration-guide.md +131 -0
- package/skills/cometchat-flutter-v6-patterns/SKILL.md +61 -0
- package/skills/cometchat-flutter-v6-placement/SKILL.md +94 -381
- package/skills/cometchat-flutter-v6-production/SKILL.md +58 -615
- package/skills/cometchat-flutter-v6-push/SKILL.md +46 -455
- package/skills/cometchat-flutter-v6-testing/SKILL.md +68 -299
- package/skills/cometchat-flutter-v6-troubleshooting/SKILL.md +54 -878
- package/skills/cometchat-ios-calls/SKILL.md +112 -563
- package/skills/cometchat-ios-components/SKILL.md +44 -834
- package/skills/cometchat-ios-core/SKILL.md +181 -1068
- package/skills/cometchat-ios-core/references/anti-patterns.md +80 -0
- package/skills/cometchat-ios-core/references/docs-map.md +123 -0
- package/skills/cometchat-ios-core/references/install.md +23 -0
- package/skills/cometchat-ios-core/references/layout.md +186 -0
- package/skills/cometchat-ios-core/references/setup-credentials.md +197 -0
- package/skills/cometchat-ios-core/references/swiftui.md +91 -0
- package/skills/cometchat-ios-core/references/troubleshooting.md +100 -0
- package/skills/cometchat-ios-customization/SKILL.md +33 -968
- package/skills/cometchat-ios-features/SKILL.md +29 -738
- package/skills/cometchat-ios-migration/SKILL.md +39 -0
- package/skills/cometchat-ios-placement/SKILL.md +51 -729
- package/skills/cometchat-ios-push/SKILL.md +24 -602
- package/skills/cometchat-ios-v5-sdk/SKILL.md +161 -0
- package/skills/cometchat-ios-v5-sdk/references/docs-map.md +326 -0
- package/skills/cometchat-js-v5-sdk/SKILL.md +95 -0
- package/skills/cometchat-js-v5-sdk/references/docs-map.md +114 -0
- package/skills/cometchat-onboarding/SKILL.md +89 -0
- package/skills/cometchat-onboarding/references/archetypes.md +51 -0
- package/skills/cometchat-onboarding/references/calling-first.md +77 -0
- package/skills/cometchat-onboarding/references/not-in-this-pack.md +8 -0
- package/skills/cometchat-onboarding/references/plan-artifact.md +133 -0
- package/skills/cometchat-onboarding/references/platforms.md +90 -0
- package/skills/cometchat-react-native-bare-patterns/SKILL.md +120 -0
- package/skills/cometchat-react-native-calls/SKILL.md +200 -0
- package/skills/cometchat-react-native-components/SKILL.md +142 -0
- package/skills/cometchat-react-native-core/SKILL.md +313 -0
- package/skills/cometchat-react-native-core/references/anti-patterns.md +79 -0
- package/skills/cometchat-react-native-core/references/component-props.md +105 -0
- package/skills/cometchat-react-native-core/references/dependencies.md +62 -0
- package/skills/cometchat-react-native-core/references/docs-map.md +126 -0
- package/skills/cometchat-react-native-core/references/layout.md +61 -0
- package/skills/cometchat-react-native-core/references/lifecycle.md +64 -0
- package/skills/cometchat-react-native-core/references/setup-credentials.md +39 -0
- package/skills/cometchat-react-native-customization/SKILL.md +198 -0
- package/skills/cometchat-react-native-expo-patterns/SKILL.md +116 -0
- package/skills/cometchat-react-native-features/SKILL.md +122 -0
- package/skills/cometchat-react-native-migration/SKILL.md +103 -0
- package/skills/cometchat-react-native-placement/SKILL.md +158 -0
- package/skills/cometchat-react-native-production/SKILL.md +78 -0
- package/skills/cometchat-react-native-push/SKILL.md +88 -0
- package/skills/cometchat-react-native-sdk/SKILL.md +126 -0
- package/skills/cometchat-react-native-sdk/references/method-map.md +239 -0
- package/skills/cometchat-react-native-sdk/references/page-map.md +96 -0
- package/skills/cometchat-react-native-testing/SKILL.md +94 -0
- package/skills/cometchat-react-native-troubleshooting/SKILL.md +116 -0
- package/skills/cometchat-react-native-v5-sdk/SKILL.md +150 -0
- package/skills/cometchat-react-native-v5-sdk/references/docs-map.md +127 -0
- package/skills/cometchat-react-native-v5-sdk/references/ringing-voip.md +369 -0
- package/skills/cometchat-react-v7-calls/SKILL.md +75 -0
- package/skills/cometchat-react-v7-components/SKILL.md +72 -0
- package/skills/cometchat-react-v7-core/SKILL.md +101 -0
- package/skills/cometchat-react-v7-core/references/anti-patterns.md +19 -0
- package/skills/cometchat-react-v7-core/references/component-props.md +82 -0
- package/skills/cometchat-react-v7-core/references/dependencies.md +23 -0
- package/skills/cometchat-react-v7-core/references/docs-map.md +117 -0
- package/skills/cometchat-react-v7-core/references/i18n-rtl-a11y.md +22 -0
- package/skills/cometchat-react-v7-core/references/layout.md +158 -0
- package/skills/cometchat-react-v7-core/references/lifecycle.md +74 -0
- package/skills/cometchat-react-v7-core/references/setup-credentials.md +58 -0
- package/skills/cometchat-react-v7-core/references/ssr.md +11 -0
- package/skills/cometchat-react-v7-core/references/theming.md +52 -0
- package/skills/cometchat-react-v7-core/references/troubleshooting.md +28 -0
- package/skills/cometchat-react-v7-customization/SKILL.md +84 -0
- package/skills/cometchat-react-v7-features/SKILL.md +92 -0
- package/skills/cometchat-react-v7-migration/SKILL.md +39 -0
- package/skills/cometchat-react-v7-migration/references/migration-guide.md +119 -0
- package/skills/cometchat-react-v7-patterns/SKILL.md +43 -0
- package/skills/cometchat-react-v7-placement/SKILL.md +106 -0
- package/skills/cometchat-react-v7-placement/references/recipes.md +354 -0
- package/skills/cometchat-react-v7-push/SKILL.md +53 -0
- package/test-suite/README.md +70 -0
- package/test-suite/catalogs/android-calls-v5.json +830 -0
- package/test-suite/catalogs/android-calls-v5.symbols.txt +499 -0
- package/test-suite/catalogs/android-v6.json +1646 -0
- package/test-suite/catalogs/android-v6.symbols.txt +298 -0
- package/test-suite/catalogs/angular-v5.json +7587 -0
- package/test-suite/catalogs/flutter-calls-v5.json +196 -0
- package/test-suite/catalogs/flutter-calls-v5.symbols.txt +59 -0
- package/test-suite/catalogs/flutter-v6.json +651 -0
- package/test-suite/catalogs/ios-calls-v5.json +158 -0
- package/test-suite/catalogs/ios-calls-v5.symbols.txt +70 -0
- package/test-suite/catalogs/ios-v5.json +1383 -0
- package/test-suite/catalogs/ios-v5.symbols.txt +699 -0
- package/test-suite/catalogs/rn-calls-v5.json +134 -0
- package/test-suite/catalogs/rn-sdk-v4.json +672 -0
- package/test-suite/catalogs/rn-v5.json +449 -0
- package/test-suite/catalogs/sdk-android-v5.json +514 -0
- package/test-suite/catalogs/sdk-android-v5.symbols.txt +254 -0
- package/test-suite/catalogs/sdk-jsv4.json +800 -0
- package/test-suite/catalogs/web-calls-v5.json +195 -0
- package/test-suite/catalogs/web-v7.json +1243 -0
- package/test-suite/scripts/build-registry.mjs +113 -0
- package/test-suite/scripts/catalog-refresh-dart.mjs +151 -0
- package/test-suite/scripts/catalog-refresh.mjs +100 -0
- package/test-suite/scripts/lint-skills.mjs +909 -0
- package/test-suite/scripts/measure-tokens.mjs +169 -0
- package/test-suite/scripts/typecheck-fences-dart.mjs +437 -0
- package/test-suite/scripts/typecheck-fences-kotlin.mjs +269 -0
- package/test-suite/scripts/typecheck-fences.mjs +206 -0
- package/test-suite/scripts/verify-catalog.mjs +242 -0
- package/test-suite/scripts/verify-contract-fences.mjs +94 -0
- package/test-suite/scripts/verify-detection.mjs +178 -0
- package/test-suite/scripts/verify-docs-base.mjs +91 -0
- package/test-suite/scripts/verify-family-agnostic.mjs +130 -0
- package/test-suite/scripts/verify-golden-path.mjs +138 -0
- package/test-suite/scripts/verify-oracle-components.mjs +133 -0
- package/test-suite/scripts/verify-template-bindings.mjs +148 -0
- package/test-suite/typecheck/angular-v5/package.json +21 -0
- package/test-suite/typecheck/angular-v5/tsconfig.json +21 -0
- package/test-suite/typecheck/flutter-v6/analysis_options.yaml +25 -0
- package/test-suite/typecheck/flutter-v6/pubspec.yaml +21 -0
- package/test-suite/typecheck/web-v7/package.json +18 -0
- package/test-suite/typecheck/web-v7/tsconfig.json +19 -0
- package/bin/install.js +0 -1003
- package/skills/.claude-plugin/marketplace.json +0 -86
- package/skills/cometchat/references/asking-questions.md +0 -48
- package/skills/cometchat-a11y/SKILL.md +0 -477
- package/skills/cometchat-android-v5/SKILL.md +0 -121
- package/skills/cometchat-android-v5-calls/SKILL.md +0 -429
- package/skills/cometchat-android-v5-calls/references/README.md +0 -53
- package/skills/cometchat-android-v5-calls/references/add-calls-to-existing-chat.md +0 -197
- package/skills/cometchat-android-v5-calls/references/audio-controls.md +0 -91
- package/skills/cometchat-android-v5-calls/references/background-handling.md +0 -168
- package/skills/cometchat-android-v5-calls/references/call-layouts.md +0 -131
- package/skills/cometchat-android-v5-calls/references/call-logs.md +0 -113
- package/skills/cometchat-android-v5-calls/references/call-session.md +0 -274
- package/skills/cometchat-android-v5-calls/references/custom-ui.md +0 -150
- package/skills/cometchat-android-v5-calls/references/event-listeners.md +0 -123
- package/skills/cometchat-android-v5-calls/references/group-calls.md +0 -205
- package/skills/cometchat-android-v5-calls/references/idle-timeout.md +0 -117
- package/skills/cometchat-android-v5-calls/references/in-call-chat.md +0 -134
- package/skills/cometchat-android-v5-calls/references/join-session.md +0 -120
- package/skills/cometchat-android-v5-calls/references/migration-v4-to-v5.md +0 -222
- package/skills/cometchat-android-v5-calls/references/participant-management.md +0 -110
- package/skills/cometchat-android-v5-calls/references/picture-in-picture.md +0 -106
- package/skills/cometchat-android-v5-calls/references/raise-hand.md +0 -248
- package/skills/cometchat-android-v5-calls/references/recording.md +0 -101
- package/skills/cometchat-android-v5-calls/references/ringing-integration.md +0 -152
- package/skills/cometchat-android-v5-calls/references/screen-sharing.md +0 -78
- package/skills/cometchat-android-v5-calls/references/server-fcm-voip.md +0 -215
- package/skills/cometchat-android-v5-calls/references/session-settings.md +0 -121
- package/skills/cometchat-android-v5-calls/references/setup.md +0 -137
- package/skills/cometchat-android-v5-calls/references/share-invite.md +0 -156
- package/skills/cometchat-android-v5-calls/references/video-controls.md +0 -87
- package/skills/cometchat-android-v5-calls/references/voip-calling.md +0 -526
- package/skills/cometchat-android-v5-components/SKILL.md +0 -431
- package/skills/cometchat-android-v5-core/SKILL.md +0 -486
- package/skills/cometchat-android-v5-customization/SKILL.md +0 -469
- package/skills/cometchat-android-v5-extensions/SKILL.md +0 -127
- package/skills/cometchat-android-v5-features/SKILL.md +0 -131
- package/skills/cometchat-android-v5-placement/SKILL.md +0 -277
- package/skills/cometchat-android-v5-production/SKILL.md +0 -95
- package/skills/cometchat-android-v5-push/SKILL.md +0 -619
- package/skills/cometchat-android-v5-testing/SKILL.md +0 -188
- package/skills/cometchat-android-v5-theming/SKILL.md +0 -167
- package/skills/cometchat-android-v5-troubleshooting/SKILL.md +0 -74
- package/skills/cometchat-android-v6/SKILL.md +0 -108
- package/skills/cometchat-android-v6-calls/references/add-calls-to-existing-chat.md +0 -97
- package/skills/cometchat-android-v6-calls/references/advanced-features.md +0 -87
- package/skills/cometchat-android-v6-calls/references/call-layouts.md +0 -100
- package/skills/cometchat-android-v6-calls/references/call-session.md +0 -163
- package/skills/cometchat-android-v6-calls/references/device-management.md +0 -172
- package/skills/cometchat-android-v6-calls/references/group-calls.md +0 -191
- package/skills/cometchat-android-v6-calls/references/idle-timeout.md +0 -110
- package/skills/cometchat-android-v6-calls/references/in-call-chat.md +0 -141
- package/skills/cometchat-android-v6-calls/references/raise-hand.md +0 -188
- package/skills/cometchat-android-v6-calls/references/ringing-integration.md +0 -176
- package/skills/cometchat-android-v6-calls/references/server-fcm-voip.md +0 -127
- package/skills/cometchat-android-v6-calls/references/share-invite.md +0 -105
- package/skills/cometchat-android-v6-compose-theming/SKILL.md +0 -250
- package/skills/cometchat-android-v6-kotlin-theming/SKILL.md +0 -233
- package/skills/cometchat-angular-calls/SKILL.md +0 -380
- package/skills/cometchat-angular-calls/references/add-calls-to-existing-chat.md +0 -96
- package/skills/cometchat-angular-calls/references/call-layouts.md +0 -123
- package/skills/cometchat-angular-calls/references/call-session.md +0 -167
- package/skills/cometchat-angular-calls/references/custom-ui.md +0 -239
- package/skills/cometchat-angular-calls/references/device-management.md +0 -154
- package/skills/cometchat-angular-calls/references/group-calls.md +0 -433
- package/skills/cometchat-angular-calls/references/idle-timeout.md +0 -161
- package/skills/cometchat-angular-calls/references/in-call-chat.md +0 -148
- package/skills/cometchat-angular-calls/references/lazy-loading-pitfalls.md +0 -205
- package/skills/cometchat-angular-calls/references/migration-v4-to-v5.md +0 -53
- package/skills/cometchat-angular-calls/references/ngzone-and-async-callbacks.md +0 -184
- package/skills/cometchat-angular-calls/references/picture-in-picture.md +0 -285
- package/skills/cometchat-angular-calls/references/raise-hand.md +0 -172
- package/skills/cometchat-angular-calls/references/recording-screen-share.md +0 -260
- package/skills/cometchat-angular-calls/references/ringing-integration.md +0 -133
- package/skills/cometchat-angular-calls/references/server-web-push-vapid.md +0 -100
- package/skills/cometchat-angular-calls/references/share-invite.md +0 -122
- package/skills/cometchat-angular-calls/references/virtual-background.md +0 -29
- package/skills/cometchat-angular-components/SKILL.md +0 -235
- package/skills/cometchat-angular-core/SKILL.md +0 -386
- package/skills/cometchat-angular-customization/SKILL.md +0 -616
- package/skills/cometchat-angular-features/SKILL.md +0 -329
- package/skills/cometchat-angular-patterns/SKILL.md +0 -256
- package/skills/cometchat-angular-placement/SKILL.md +0 -314
- package/skills/cometchat-angular-production/SKILL.md +0 -564
- package/skills/cometchat-angular-push/SKILL.md +0 -389
- package/skills/cometchat-angular-testing/SKILL.md +0 -605
- package/skills/cometchat-angular-theming/SKILL.md +0 -290
- package/skills/cometchat-angular-troubleshooting/SKILL.md +0 -364
- package/skills/cometchat-astro-patterns/SKILL.md +0 -708
- package/skills/cometchat-calls/SKILL.md +0 -364
- package/skills/cometchat-calls/references/use-case-broadcast.md +0 -199
- package/skills/cometchat-calls/references/use-case-marketplace.md +0 -157
- package/skills/cometchat-calls/references/use-case-support.md +0 -189
- package/skills/cometchat-calls/references/use-case-team.md +0 -180
- package/skills/cometchat-calls/references/use-case-telehealth.md +0 -153
- package/skills/cometchat-components/SKILL.md +0 -1142
- package/skills/cometchat-core/SKILL.md +0 -1048
- package/skills/cometchat-customization/SKILL.md +0 -580
- package/skills/cometchat-customization/references/component-catalog.md +0 -236
- package/skills/cometchat-features/SKILL.md +0 -861
- package/skills/cometchat-flutter-v5/SKILL.md +0 -173
- package/skills/cometchat-flutter-v5-calls/SKILL.md +0 -455
- package/skills/cometchat-flutter-v5-calls/references/add-calls-to-existing-chat.md +0 -193
- package/skills/cometchat-flutter-v5-calls/references/call-layouts.md +0 -103
- package/skills/cometchat-flutter-v5-calls/references/call-session.md +0 -285
- package/skills/cometchat-flutter-v5-calls/references/device-management.md +0 -124
- package/skills/cometchat-flutter-v5-calls/references/group-calls.md +0 -181
- package/skills/cometchat-flutter-v5-calls/references/idle-timeout.md +0 -99
- package/skills/cometchat-flutter-v5-calls/references/in-call-chat.md +0 -135
- package/skills/cometchat-flutter-v5-calls/references/migration-v4-to-v5.md +0 -210
- package/skills/cometchat-flutter-v5-calls/references/raise-hand.md +0 -255
- package/skills/cometchat-flutter-v5-calls/references/ringing-integration.md +0 -196
- package/skills/cometchat-flutter-v5-calls/references/server-push-bridge.md +0 -101
- package/skills/cometchat-flutter-v5-calls/references/share-invite.md +0 -148
- package/skills/cometchat-flutter-v5-conversations/SKILL.md +0 -118
- package/skills/cometchat-flutter-v5-core/SKILL.md +0 -239
- package/skills/cometchat-flutter-v5-customization/SKILL.md +0 -358
- package/skills/cometchat-flutter-v5-events/SKILL.md +0 -156
- package/skills/cometchat-flutter-v5-messages/SKILL.md +0 -259
- package/skills/cometchat-flutter-v5-production/SKILL.md +0 -216
- package/skills/cometchat-flutter-v5-push/SKILL.md +0 -285
- package/skills/cometchat-flutter-v5-testing/SKILL.md +0 -401
- package/skills/cometchat-flutter-v5-theming/SKILL.md +0 -161
- package/skills/cometchat-flutter-v5-troubleshooting/SKILL.md +0 -130
- package/skills/cometchat-flutter-v5-users-groups/SKILL.md +0 -152
- package/skills/cometchat-flutter-v6/SKILL.md +0 -446
- package/skills/cometchat-flutter-v6-calls/references/add-calls-to-existing-chat.md +0 -136
- package/skills/cometchat-flutter-v6-calls/references/advanced-features.md +0 -89
- package/skills/cometchat-flutter-v6-calls/references/call-layouts.md +0 -105
- package/skills/cometchat-flutter-v6-calls/references/call-session.md +0 -229
- package/skills/cometchat-flutter-v6-calls/references/device-management.md +0 -105
- package/skills/cometchat-flutter-v6-calls/references/group-calls.md +0 -190
- package/skills/cometchat-flutter-v6-calls/references/idle-timeout.md +0 -88
- package/skills/cometchat-flutter-v6-calls/references/in-call-chat.md +0 -125
- package/skills/cometchat-flutter-v6-calls/references/raise-hand.md +0 -275
- package/skills/cometchat-flutter-v6-calls/references/ringing-integration.md +0 -171
- package/skills/cometchat-flutter-v6-calls/references/server-push-bridge.md +0 -93
- package/skills/cometchat-flutter-v6-calls/references/share-invite.md +0 -102
- package/skills/cometchat-flutter-v6-conversations/SKILL.md +0 -238
- package/skills/cometchat-flutter-v6-messages/SKILL.md +0 -384
- package/skills/cometchat-flutter-v6-theming/SKILL.md +0 -293
- package/skills/cometchat-flutter-v6-users-groups/SKILL.md +0 -224
- package/skills/cometchat-i18n/SKILL.md +0 -419
- package/skills/cometchat-ios/SKILL.md +0 -325
- package/skills/cometchat-ios-calls/references/add-calls-to-existing-chat.md +0 -181
- package/skills/cometchat-ios-calls/references/audio-modes-and-controls.md +0 -45
- package/skills/cometchat-ios-calls/references/avaudiosession-routing.md +0 -188
- package/skills/cometchat-ios-calls/references/call-layouts.md +0 -76
- package/skills/cometchat-ios-calls/references/call-session.md +0 -218
- package/skills/cometchat-ios-calls/references/callkit-and-pushkit.md +0 -357
- package/skills/cometchat-ios-calls/references/custom-ui.md +0 -322
- package/skills/cometchat-ios-calls/references/device-management.md +0 -171
- package/skills/cometchat-ios-calls/references/group-calls.md +0 -359
- package/skills/cometchat-ios-calls/references/idle-timeout.md +0 -184
- package/skills/cometchat-ios-calls/references/in-call-chat.md +0 -179
- package/skills/cometchat-ios-calls/references/migration-v4-to-v5.md +0 -196
- package/skills/cometchat-ios-calls/references/picture-in-picture.md +0 -246
- package/skills/cometchat-ios-calls/references/raise-hand.md +0 -26
- package/skills/cometchat-ios-calls/references/recording-screen-share.md +0 -252
- package/skills/cometchat-ios-calls/references/ringing-integration.md +0 -143
- package/skills/cometchat-ios-calls/references/server-apns-pushkit.md +0 -267
- package/skills/cometchat-ios-calls/references/share-invite.md +0 -148
- package/skills/cometchat-ios-calls/references/swiftui-uikit-hosting.md +0 -246
- package/skills/cometchat-ios-calls/references/voip-cert-setup.md +0 -166
- package/skills/cometchat-ios-production/SKILL.md +0 -738
- package/skills/cometchat-ios-testing/SKILL.md +0 -376
- package/skills/cometchat-ios-theming/SKILL.md +0 -667
- package/skills/cometchat-ios-troubleshooting/SKILL.md +0 -1003
- package/skills/cometchat-native-bare-patterns/SKILL.md +0 -550
- package/skills/cometchat-native-calls/SKILL.md +0 -671
- package/skills/cometchat-native-calls/references/add-calls-to-existing-chat.md +0 -203
- package/skills/cometchat-native-calls/references/call-layouts.md +0 -125
- package/skills/cometchat-native-calls/references/call-session.md +0 -182
- package/skills/cometchat-native-calls/references/custom-ui.md +0 -254
- package/skills/cometchat-native-calls/references/device-management.md +0 -158
- package/skills/cometchat-native-calls/references/expo-vs-bare.md +0 -179
- package/skills/cometchat-native-calls/references/group-calls.md +0 -296
- package/skills/cometchat-native-calls/references/idle-timeout.md +0 -128
- package/skills/cometchat-native-calls/references/in-call-chat.md +0 -145
- package/skills/cometchat-native-calls/references/migration-v4-to-v5.md +0 -72
- package/skills/cometchat-native-calls/references/picture-in-picture.md +0 -276
- package/skills/cometchat-native-calls/references/raise-hand.md +0 -205
- package/skills/cometchat-native-calls/references/recording-screen-share.md +0 -169
- package/skills/cometchat-native-calls/references/ringing-integration.md +0 -118
- package/skills/cometchat-native-calls/references/server-push-bridge.md +0 -135
- package/skills/cometchat-native-calls/references/server-push-payloads.md +0 -193
- package/skills/cometchat-native-calls/references/share-invite.md +0 -146
- package/skills/cometchat-native-calls/references/voip-push-end-to-end.md +0 -319
- package/skills/cometchat-native-components/SKILL.md +0 -628
- package/skills/cometchat-native-core/SKILL.md +0 -679
- package/skills/cometchat-native-customization/SKILL.md +0 -716
- package/skills/cometchat-native-expo-patterns/SKILL.md +0 -552
- package/skills/cometchat-native-features/SKILL.md +0 -638
- package/skills/cometchat-native-placement/SKILL.md +0 -509
- package/skills/cometchat-native-production/SKILL.md +0 -700
- package/skills/cometchat-native-push/SKILL.md +0 -594
- package/skills/cometchat-native-testing/SKILL.md +0 -582
- package/skills/cometchat-native-theming/SKILL.md +0 -681
- package/skills/cometchat-native-troubleshooting/SKILL.md +0 -501
- package/skills/cometchat-nextjs-patterns/SKILL.md +0 -899
- package/skills/cometchat-placement/SKILL.md +0 -1360
- package/skills/cometchat-production/SKILL.md +0 -1027
- package/skills/cometchat-react-calls/SKILL.md +0 -752
- package/skills/cometchat-react-calls/references/add-calls-to-existing-chat.md +0 -146
- package/skills/cometchat-react-calls/references/call-layouts.md +0 -160
- package/skills/cometchat-react-calls/references/call-session.md +0 -235
- package/skills/cometchat-react-calls/references/custom-ui.md +0 -247
- package/skills/cometchat-react-calls/references/device-management.md +0 -210
- package/skills/cometchat-react-calls/references/group-calls.md +0 -257
- package/skills/cometchat-react-calls/references/idle-timeout.md +0 -188
- package/skills/cometchat-react-calls/references/in-call-chat.md +0 -212
- package/skills/cometchat-react-calls/references/migration-v4-to-v5.md +0 -170
- package/skills/cometchat-react-calls/references/picture-in-picture.md +0 -245
- package/skills/cometchat-react-calls/references/raise-hand.md +0 -238
- package/skills/cometchat-react-calls/references/recording-screen-share.md +0 -144
- package/skills/cometchat-react-calls/references/ringing-integration.md +0 -255
- package/skills/cometchat-react-calls/references/server-web-push-vapid.md +0 -241
- package/skills/cometchat-react-calls/references/share-invite.md +0 -175
- package/skills/cometchat-react-calls/references/testing-calls-on-web.md +0 -216
- package/skills/cometchat-react-calls/references/virtual-background.md +0 -32
- package/skills/cometchat-react-calls/references/voip-and-web-push.md +0 -165
- package/skills/cometchat-react-patterns/SKILL.md +0 -628
- package/skills/cometchat-react-push/SKILL.md +0 -634
- package/skills/cometchat-react-router-patterns/SKILL.md +0 -758
- package/skills/cometchat-react-testing/SKILL.md +0 -413
- package/skills/cometchat-theming/SKILL.md +0 -498
- 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
|
+
}
|