cometchat-android-v5-features

$npx mdskill add cometchat/cometchat-skills/cometchat-android-v5-features

Add features like calls, reactions, polls, and AI to CometChat projects.

  • Enables features on an already-integrated CometChat Android project.
  • Depends on CometChat UI Kit, calls SDK, and extension architecture.
  • Routes to sub-flows based on feature type like calls or AI.
  • Delivers zero-code toggles, CLI commands, or dependency instructions.

SKILL.md

.github/skills/cometchat-android-v5-featuresView on GitHub ↗
---
name: cometchat-android-v5-features
description: "Add features (calls, reactions, polls, file sharing, AI, etc.) to an already-integrated CometChat project. Routes to the right sub-flow based on feature type."
license: "MIT"
compatibility: "Android 7.0+; Java 8+; Kotlin 1.8+; com.cometchat:chat-uikit-android:5.x"
metadata:
  author: "CometChat"
  version: "3.0.0"
  tags: "cometchat android features extensions calls reactions polls ai-features"
---

> **Ground truth:** `com.cometchat:chat-uikit-android:5.x` (legacy/maintenance-only; +`calls-sdk-android:5.x`) — resolved AAR (javap) + `ui-kit/android`. **Official docs:** https://www.cometchat.com/docs/fundamentals/extensions-overview · **Docs MCP:** `claude mcp add --transport http cometchat-docs https://www.cometchat.com/docs/mcp` (or fetch the URL directly without MCP). Verify symbols against the installed package/source before relying on them.

> **Companion skills:** `cometchat-android-v5-core` covers initialization;
> `cometchat-android-v5-customization` covers deeper component customization;
> `cometchat-android-v5-extensions` covers the extension architecture.

## Purpose

This skill teaches how CometChat features are structured and what work is required to enable each one. Most features require zero code — they are either already built into the UI Kit, toggled via the `cometchat apply-feature` CLI (extensions + AI features), or activated by adding a dependency (calls).

---

## Use this skill when

- "Add reactions to my chat"
- "Add video calling"
- "Enable polls"
- "Add file sharing"
- "Enable smart replies"

## Do not use this skill when

- Customizing how a feature looks → use `cometchat-android-v5-customization`
- Setting up the initial integration → use `cometchat-android-v5-core`

---

## 1. Feature types

| Type | What it means | Action required |
|---|---|---|
| Type 1 — Default | Built into the UI Kit at compile time | None — already there |
| Type 2a — Extension | Backend extension, pure boolean toggle | `cometchat apply-feature <id> --app-id <X>` (CLI hits dashboard API) |
| Type 2b — AI feature | Backend AI feature requiring an OpenAI key | `cometchat apply-feature <id> --app-id <X> --openai-key sk-...` |
| Type 2c — Dashboard-only | Third-party API key / multi-field config (Giphy, Stipop, Tenor, Chatwoot, Intercom) | Open https://app.cometchat.com → Chat & Messaging → Features → configure |
| Type 3 — Package-install | Requires a separate SDK dependency | Add Gradle dependency |
| Type 4 — Component-toggle | Hide/show via `setHide*` / `disable*` methods on the relevant component | Call the setter on the component instance (see catalog) |

---

## 2. Type 1 — Default features (already enabled)

| Feature | Component | Notes |
|---|---|---|
| Text messaging | `CometChatMessageComposer` + `CometChatMessageList` | Core feature |
| Media sharing (image/video/audio/file) | `CometChatMessageComposer` | Attachment button |
| Read receipts | `CometChatMessageList` | `setReceiptsVisibility()` |
| Typing indicators | `CometChatMessageList` + `CometChatConversations` | Auto-enabled |
| User presence (online/offline) | `CometChatConversations`, `CometChatUsers` | Requires `subscribePresenceForAllUsers()` in init |
| Reactions | `CometChatMessageList` | Long-press message → react |
| Mentions (@user, @all) | `CometChatMessageComposer` | Type `@` to trigger |
| Threaded conversations | `CometChatMessageList` | `setReplyInThreadOptionVisibility()` |
| Quoted replies | `CometChatMessageList` | Swipe to reply |
| Edit/delete messages | `CometChatMessageList` | Long-press options |
| Group chat | All components | Use `setGroup()` instead of `setUser()` |
| Report message | `CometChatMessageList` | Long-press → Report |
| Search | `CometChatSearch` | Standalone component |

---

## 3. Type 2 — Backend toggle features (no code needed)

Android projects don't run `cometchat apply`, so call the CLI in stateless mode with `--app-id`:

```bash
# Pure boolean extensions:
cometchat apply-feature polls --app-id <your-app-id>
cometchat apply-feature stickers --app-id <your-app-id>

# AI features (require OpenAI key):
cometchat apply-feature smart-replies --app-id <your-app-id> --openai-key sk-...
cometchat apply-feature conversation-summary --app-id <your-app-id>
cometchat apply-feature conversation-starter --app-id <your-app-id>
```

Requires `cometchat auth login` once per machine.

**Extensions (CLI-toggleable — pure boolean):**
- User Engagement: Polls, Message Translation, Reminders
- Collaboration: Collaborative Document, Collaborative Whiteboard
- Security: Disappearing Messages, E2E Encryption (Enterprise)
- Moderation: Profanity Filter, Image Moderation, Data Masking, Sentiment Analysis, XSS Filter

**AI Features (CLI-toggleable — needs `--openai-key`):**
Conversation Starter, Conversation Summary, Smart Reply

**Dashboard-only (third-party config — open https://app.cometchat.com → Chat & Messaging → Features):**
Stickers (Stipop), Giphy, Tenor, Chatwoot, Intercom — these require API keys / webhooks the user must enter manually.

---

## 4. Type 3 — Package-install features

### Voice/Video Calling

Add the calling SDK:

```groovy
implementation 'com.cometchat:calls-sdk-android:5.+'
```

The UI Kit auto-detects the calling SDK and enables call buttons in `CometChatMessageHeader`. No additional code needed — `CometChatIncomingCall`, `CometChatOutgoingCall`, and `CometChatOngoingCall` activate automatically.

Configure call buttons visibility:

```java
CometChatMessageHeader header = findViewById(R.id.header);
header.setVoiceCallButtonVisibility(View.VISIBLE);
header.setVideoCallButtonVisibility(View.VISIBLE);
```

---

## Hard rules

- **Don't write code for Type 1 features.** They're already there. Tell the user where to find them.
- **Don't write code for Type 2a/2b features.** Run `cometchat apply-feature <id> --app-id <X>` (extension) or `... --openai-key sk-...` (ai-feature). The CLI flips the dashboard toggle via API. Never tell the user to "open the dashboard and toggle X" for an extension or ai-feature — that's what the CLI does.
- **For Type 2c (dashboard-only) features**, the CLI cannot automate (third-party keys / multi-field config). Walk the user through the dashboard path returned by `cometchat apply-feature <id>`'s `manual-action-required` response.
- **For Type 3 (calls), just add the Gradle dependency.** The UI Kit handles the rest.
- **Always run `cometchat apply-feature <id>` first** for extensions and AI features. If the user reports a "missing feature," it's almost always an unflipped toggle the CLI can fix in one call.

More from cometchat/cometchat-skills

SkillDescription
cometchatEntry-point for CometChat integration in any React, React Native, Angular, Android, Flutter, or iOS project — web (React/Next.js/React Router/Astro), React Native (Expo/bare), Angular (12-15), native Android (V6 stable, V5 legacy), Flutter (V6 stable, V5 legacy), and native iOS (V5 stable). Detects the framework, gathers requirements through an interactive conversation, and writes production-quality integration code.
cometchat-a11yAccessibility (a11y) for CometChat UI Kit integrations across all families — React, React Native, Angular, Android (V5/V6), iOS, Flutter. Covers WCAG 2.1 AA targets, keyboard navigation in chat, screen reader announcements (live regions for new messages), color contrast, focus management on call screens, motion-reduction support, and the cross-family checks that catch the common production a11y bugs. Cross-family — applies wherever the agent is checking accessibility.
cometchat-android-v5Entry-point dispatcher for CometChat Android UI Kit v5. Detects project setup, understands what the dev is building, and routes to the right sub-skills.
cometchat-android-v5-callsCometChat Calls SDK v5 integration for native Android (V5 stable, Java + Kotlin Views). Covers SDK setup (Cloudsmith Maven, CallAppSettings, init), the dual-SDK ringing pattern (Chat SDK initiateCall + Calls SDK joinSession), session settings, event listeners, call logs, recording, screen sharing, picture-in-picture, foreground service for ongoing calls, VoIP push via FCM + ConnectionService, audio/video/participant controls, custom UI, and in-call chat. Use in standalone mode (calls is the product) or additive mode (calls layered on top of an existing CometChat Android v5 chat integration).
cometchat-android-v5-componentsComplete catalog of CometChat Android UI Kit v5 components. Reference before writing integration code — never invent component names.
cometchat-android-v5-coreFoundational rules for CometChat Android UI Kit v5. Initialization, login, UIKitSettings builder, dependency setup, and anti-patterns. Read this first.
cometchat-android-v5-customizationCustomize CometChat components beyond theming — custom message templates, DataSource decorators, event listeners, and custom view slots.
cometchat-android-v5-extensionsExtension architecture for CometChat Android — ExtensionsDataSource, decorators, built-in extensions, and how to create custom extensions.
cometchat-android-v5-placementWhere to put CometChat in your Android app — Activity, Fragment, BottomSheet, Dialog, Tab, or embedded patterns.
cometchat-android-v5-productionProduction readiness for CometChat Android — server-side token auth, user management CRUD, ProGuard rules, and security checklist.