{"id":"3d13a10d-3f49-496b-bf7f-058b71006b9c","shortId":"hgfYQW","kind":"skill","title":"cometchat-android-v5-features","tagline":"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.","description":"> **Companion skills:** `cometchat-android-v5-core` covers initialization;\n> `cometchat-android-v5-customization` covers deeper component customization;\n> `cometchat-android-v5-extensions` covers the extension architecture.\n\n## Purpose\n\nThis 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).\n\n---\n\n## Use this skill when\n\n- \"Add reactions to my chat\"\n- \"Add video calling\"\n- \"Enable polls\"\n- \"Add file sharing\"\n- \"Enable smart replies\"\n\n## Do not use this skill when\n\n- Customizing how a feature looks → use `cometchat-android-v5-customization`\n- Setting up the initial integration → use `cometchat-android-v5-core`\n\n---\n\n## 1. Feature types\n\n| Type | What it means | Action required |\n|---|---|---|\n| Type 1 — Default | Built into the UI Kit at compile time | None — already there |\n| Type 2a — Extension | Backend extension, pure boolean toggle | `cometchat apply-feature <id> --app-id <X>` (CLI hits dashboard API) |\n| Type 2b — AI feature | Backend AI feature requiring an OpenAI key | `cometchat apply-feature <id> --app-id <X> --openai-key sk-...` |\n| Type 2c — Dashboard-only | Third-party API key / multi-field config (Giphy, Stipop, Tenor, Chatwoot, Intercom) | Open https://app.cometchat.com → Extensions → configure |\n| Type 3 — Package-install | Requires a separate SDK dependency | Add Gradle dependency |\n| Type 4 — Component-toggle | Hide/show via `setHide*` / `disable*` methods on the relevant component | Call the setter on the component instance (see catalog) |\n\n---\n\n## 2. Type 1 — Default features (already enabled)\n\n| Feature | Component | Notes |\n|---|---|---|\n| Text messaging | `CometChatMessageComposer` + `CometChatMessageList` | Core feature |\n| Media sharing (image/video/audio/file) | `CometChatMessageComposer` | Attachment button |\n| Read receipts | `CometChatMessageList` | `setReceiptsVisibility()` |\n| Typing indicators | `CometChatMessageList` + `CometChatConversations` | Auto-enabled |\n| User presence (online/offline) | `CometChatConversations`, `CometChatUsers` | Requires `subscribePresenceForAllUsers()` in init |\n| Reactions | `CometChatMessageList` | Long-press message → react |\n| Mentions (@user, @all) | `CometChatMessageComposer` | Type `@` to trigger |\n| Threaded conversations | `CometChatMessageList` | `setReplyInThreadOptionVisibility()` |\n| Quoted replies | `CometChatMessageList` | Swipe to reply |\n| Edit/delete messages | `CometChatMessageList` | Long-press options |\n| Group chat | All components | Use `setGroup()` instead of `setUser()` |\n| Report message | `CometChatMessageList` | Long-press → Report |\n| Search | `CometChatSearch` | Standalone component |\n\n---\n\n## 3. Type 2 — Backend toggle features (no code needed)\n\nAndroid projects don't run `cometchat apply`, so call the CLI in stateless mode with `--app-id`:\n\n```bash\n# Pure boolean extensions:\ncometchat apply-feature polls --app-id <your-app-id>\ncometchat apply-feature stickers --app-id <your-app-id>\n\n# AI features (require OpenAI key):\ncometchat apply-feature smart-replies --app-id <your-app-id> --openai-key sk-...\ncometchat apply-feature conversation-summary --app-id <your-app-id>\ncometchat apply-feature conversation-starter --app-id <your-app-id>\n```\n\nRequires `cometchat auth login` once per machine.\n\n**Extensions (CLI-toggleable — pure boolean):**\n- User Engagement: Polls, Message Translation, Reminders\n- Collaboration: Collaborative Document, Collaborative Whiteboard\n- Security: Disappearing Messages, E2E Encryption (Enterprise)\n- Moderation: Profanity Filter, Image Moderation, Data Masking, Sentiment Analysis, XSS Filter\n\n**AI Features (CLI-toggleable — needs `--openai-key`):**\nConversation Starter, Conversation Summary, Smart Reply\n\n**Dashboard-only (third-party config — open https://app.cometchat.com → Extensions):**\nStickers (Stipop), Giphy, Tenor, Chatwoot, Intercom — these require API keys / webhooks the user must enter manually.\n\n---\n\n## 4. Type 3 — Package-install features\n\n### Voice/Video Calling\n\nAdd the calling SDK:\n\n```groovy\nimplementation 'com.cometchat:calls-sdk-android:4.+'\n```\n\nThe UI Kit auto-detects the calling SDK and enables call buttons in `CometChatMessageHeader`. No additional code needed — `CometChatIncomingCall`, `CometChatOutgoingCall`, and `CometChatOngoingCall` activate automatically.\n\nConfigure call buttons visibility:\n\n```java\nCometChatMessageHeader header = findViewById(R.id.header);\nheader.setVoiceCallButtonVisibility(View.VISIBLE);\nheader.setVideoCallButtonVisibility(View.VISIBLE);\n```\n\n---\n\n## Hard rules\n\n- **Don't write code for Type 1 features.** They're already there. Tell the user where to find them.\n- **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.\n- **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.\n- **For Type 3 (calls), just add the Gradle dependency.** The UI Kit handles the rest.\n- **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.","tags":["cometchat","android","features","skills","agent-skills","ai-agent","chat","claude-code","cursor","messaging","nextjs","react"],"capabilities":["skill","source-cometchat","skill-cometchat-android-v5-features","topic-agent-skills","topic-ai-agent","topic-chat","topic-claude-code","topic-cometchat","topic-cursor","topic-messaging","topic-nextjs","topic-react","topic-react-native","topic-ui-kit"],"categories":["cometchat-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/cometchat/cometchat-skills/cometchat-android-v5-features","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add cometchat/cometchat-skills","source_repo":"https://github.com/cometchat/cometchat-skills","install_from":"skills.sh"}},"qualityScore":"0.463","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 27 github stars · SKILL.md body (5,671 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:04:45.004Z","embedding":null,"createdAt":"2026-05-07T13:05:03.857Z","updatedAt":"2026-05-18T19:04:45.004Z","lastSeenAt":"2026-05-18T19:04:45.004Z","tsv":"'1':158,168,283,609 '2':281,376 '2a':182 '2a/2b':628 '2b':201 '2c':223,681 '3':246,374,544,719 '4':259,542,562 'action':165,714 'activ':104,586 'ad':106 'add':6,114,119,124,255,551,722 'addit':579 'ai':13,101,202,205,421,501,645,671,742 'ai-featur':644,670 'almost':753 'alreadi':18,86,179,286,613 'already-integr':17 'alway':732,754 'analysi':498 'android':3,37,44,53,144,155,383,561 'api':199,230,534,654 'app':194,216,399,411,419,434,448,458,636 'app-id':193,215,398,410,418,433,447,457,635 'app.cometchat.com':242,524 'appli':97,191,213,389,407,415,428,442,452,633,709,736 'apply-featur':96,190,212,406,414,427,441,451,632,708,735 'architectur':59 'attach':301 'auth':462 'auto':312,567 'auto-detect':566 'auto-en':311 'autom':689 'automat':587 'backend':184,204,377 'base':29 'bash':401 'boolean':187,403,472 'built':87,170 'button':302,575,590 'call':8,109,121,272,391,550,553,559,570,574,589,720,764 'calls-sdk-android':558 'cannot':688 'catalog':280 'chat':118,355 'chatwoot':239,530 'cli':99,196,393,469,504,648,677,687,759 'cli-toggl':468,503 'code':82,381,580,606,625 'collabor':479,480,482 'com.cometchat':557 'cometchat':2,20,36,43,52,65,95,143,154,189,211,388,405,413,426,440,450,461,631,707,734 'cometchat-android-v5-core':35,153 'cometchat-android-v5-customization':42,142 'cometchat-android-v5-extensions':51 'cometchat-android-v5-features':1 'cometchatconvers':310,317 'cometchatincomingcal':582 'cometchatmessagecompos':293,300,333 'cometchatmessagehead':577,593 'cometchatmessagelist':294,305,309,324,339,343,349,365 'cometchatongoingcal':585 'cometchatoutgoingcal':583 'cometchatsearch':371 'cometchatus':318 'companion':33 'compil':176 'compon':49,261,271,277,289,357,373 'component-toggl':260 'config':235,522,697 'configur':244,588 'convers':338,445,455,510,512 'conversation-start':454 'conversation-summari':444 'core':39,157,295 'cover':40,47,56 'custom':46,50,136,146 'dashboard':198,225,517,651,662,683,703 'dashboard-on':224,516,682 'data':495 'deeper':48 'default':169,284 'depend':108,254,257,725 'detect':568 'disabl':266 'disappear':485 'document':481 'e2e':487 'edit/delete':347 'either':85 'enabl':75,122,127,287,313,573 'encrypt':488 'engag':474 'enter':540 'enterpris':489 'etc':14 'extens':55,58,100,183,185,243,404,467,525,638,668,740 'featur':5,7,31,66,79,98,102,139,159,192,203,206,214,285,288,296,379,408,416,422,429,443,453,502,548,610,629,634,646,672,685,710,737,743,750 'field':234,696 'file':11,125 'filter':492,500 'find':620 'findviewbyid':595 'first':738 'fix':761 'flip':649 'flow':28 'giphi':236,528 'gradl':256,724 'groovi':555 'group':354 'handl':729 'hard':601 'header':594 'header.setvideocallbuttonvisibility':599 'header.setvoicecallbuttonvisibility':597 'hide/show':263 'hit':197 'id':195,217,400,412,420,435,449,459,637 'imag':493 'image/video/audio/file':299 'implement':556 'indic':308 'init':322 'initi':41,150 'instal':249,547 'instanc':278 'instead':360 'integr':19,151 'intercom':240,531 'java':592 'key':210,220,231,425,438,509,535,642,693 'kit':91,174,565,728 'login':463 'long':326,351,367 'long-press':325,350,366 'look':140 'machin':466 'manual':541,713 'manual-action-requir':712 'mask':496 'mean':164 'media':297 'mention':330 'messag':292,328,348,364,476,486 'method':267 'miss':749 'mode':396 'moder':490,494 'multi':233,695 'multi-field':232,694 'must':539 'need':382,506,581 'never':655 'none':178 'note':290 'one':77,763 'online/offline':316 'open':241,523,660 'openai':209,219,424,437,508,641 'openai-key':218,436,507,640 'option':353 'packag':248,546 'package-instal':247,545 'parti':229,521,692 'path':704 'per':465 'poll':10,123,409,475 'presenc':315 'press':327,352,368 'profan':491 'project':21,384 'pure':186,402,471 'purpos':60 'quot':341 'r.id.header':596 're':612 'react':329 'reaction':9,115,323 'read':303 'receipt':304 'relev':270 'remind':478 'repli':129,342,346,432,515 'report':363,369,747 'requir':73,80,166,207,250,319,423,460,533,715 'respons':716 'rest':731 'return':705 'right':25 'rout':22 'rule':602 'run':387,630,733 'sdk':253,554,560,571 'search':370 'secur':484 'see':279 'sentiment':497 'separ':252 'set':147 'setgroup':359 'sethid':265 'setreceiptsvis':306 'setreplyinthreadoptionvis':340 'setter':274 'setus':362 'share':12,126,298 'sk':221,439,643 'skill':34,62,112,134 'skill-cometchat-android-v5-features' 'smart':128,431,514 'smart-repli':430 'source-cometchat' 'standalon':372 'starter':456,511 'stateless':395 'sticker':417,526 'stipop':237,527 'structur':68 'sub':27 'sub-flow':26 'subscribepresenceforallus':320 'summari':446,513 'swipe':344 'teach':63 'tell':615,656 'tenor':238,529 'text':291 'third':228,520,691 'third-parti':227,519,690 'thread':337 'time':177 'toggl':92,188,262,378,652,664,757 'toggleabl':470,505 'topic-agent-skills' 'topic-ai-agent' 'topic-chat' 'topic-claude-code' 'topic-cometchat' 'topic-cursor' 'topic-messaging' 'topic-nextjs' 'topic-react' 'topic-react-native' 'topic-ui-kit' 'translat':477 'trigger':336 'type':32,160,161,167,181,200,222,245,258,282,307,334,375,543,608,627,680,718 'ui':90,173,564,727 'unflip':756 'use':110,132,141,152,358 'user':314,331,473,538,617,658,700,746 'v5':4,38,45,54,145,156 'via':93,264,653 'video':120 'view.visible':598,600 'visibl':591 'voice/video':549 'walk':698 'webhook':536 'whiteboard':483 'work':71 'write':605,624 'x':665 'xss':499 'zero':81","prices":[{"id":"6abc4e10-6715-4778-9f6e-bd23e3f974df","listingId":"3d13a10d-3f49-496b-bf7f-058b71006b9c","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"cometchat","category":"cometchat-skills","install_from":"skills.sh"},"createdAt":"2026-05-07T13:05:03.857Z"}],"sources":[{"listingId":"3d13a10d-3f49-496b-bf7f-058b71006b9c","source":"github","sourceId":"cometchat/cometchat-skills/cometchat-android-v5-features","sourceUrl":"https://github.com/cometchat/cometchat-skills/tree/main/skills/cometchat-android-v5-features","isPrimary":false,"firstSeenAt":"2026-05-07T13:05:03.857Z","lastSeenAt":"2026-05-18T19:04:45.004Z"}],"details":{"listingId":"3d13a10d-3f49-496b-bf7f-058b71006b9c","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"cometchat","slug":"cometchat-android-v5-features","github":{"repo":"cometchat/cometchat-skills","stars":27,"topics":["agent-skills","ai-agent","chat","claude-code","cometchat","cursor","messaging","nextjs","react","react-native","ui-kit"],"license":null,"html_url":"https://github.com/cometchat/cometchat-skills","pushed_at":"2026-05-18T05:04:24Z","description":"Add CometChat chat to any React, Next.js, React Native, Angular, Android, iOS, or Flutter project through your AI coding agent. Works with Claude Code, Cursor, Codex, VS Code Copilot, Windsurf, Cline, Kiro, and 50+ more agents.","skill_md_sha":"401724408b791690e3e46ec020fd090516700288","skill_md_path":"skills/cometchat-android-v5-features/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/cometchat/cometchat-skills/tree/main/skills/cometchat-android-v5-features"},"layout":"multi","source":"github","category":"cometchat-skills","frontmatter":{"name":"cometchat-android-v5-features","license":"MIT","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.","compatibility":"Android 7.0+; Java 8+; Kotlin 1.8+; com.cometchat:chat-uikit-android:5.x"},"skills_sh_url":"https://skills.sh/cometchat/cometchat-skills/cometchat-android-v5-features"},"updatedAt":"2026-05-18T19:04:45.004Z"}}