{"id":"934d4568-4995-460e-910c-f60d530722e3","shortId":"JuuLZN","kind":"skill","title":"cometchat-android-v6-kotlin-components","tagline":"CometChat Android UIKit v6 Kotlin Views component catalog — all custom View chat UI components, their properties, styles, and usage","description":"> **Companion skills:** cometchat-android-v6-compose-components (Compose equivalent), cometchat-android-v6-kotlin-theming, cometchat-android-v6-kotlin-customization, cometchat-android-v6-kotlin-placement\n\n## Purpose\n\nComplete catalog of all Kotlin Views components in CometChat UIKit v6. Each component is a custom `View` class in `com.cometchat.uikit.kotlin.presentation`.\n\n## Use this skill when\n\n- Adding a CometChat Views component to an Activity or Fragment\n- Looking up component properties and methods\n- Understanding which component to use for a specific chat feature\n- Finding the style class for a component\n\n## Do not use this skill when\n\n- Working with Compose components (use `cometchat-android-v6-compose-components`)\n- Customizing bubble rendering (use `cometchat-android-v6-kotlin-customization`)\n- Placing components in navigation (use `cometchat-android-v6-kotlin-placement`)\n\n## 1. Component Catalog\n\n### 1.1 List Components\n\n| Component | Package | Type | Purpose |\n|---|---|---|---|\n| `CometChatConversations` | `presentation.conversations.ui` | View | Recent conversations list |\n| `CometChatUsers` | `presentation.users.ui` | View | User list |\n| `CometChatGroups` | `presentation.groups.ui` | View | Group list |\n| `CometChatGroupMembers` | `presentation.groupmembers.ui` | View | Members of a group |\n| `CometChatCallLogs` | `presentation.calllogs.ui` | View | Call history |\n\n### 1.2 Messaging Components\n\n| Component | Package | Type | Purpose |\n|---|---|---|---|\n| `CometChatMessageList` | `presentation.messagelist.ui` | View | Message list with bubbles |\n| `CometChatMessageComposer` | `presentation.messagecomposer.ui` | View | Message input with attachments |\n| `CometChatMessageHeader` | `presentation.messageheader.ui` | View | Chat header (name, status, actions) |\n| `CometChatMessageInformation` | `presentation.messageinformation.ui` | View | Message delivery/read info |\n| `CometChatThreadHeader` | `presentation.threadheader.ui` | View | Thread parent message header |\n\n### 1.3 Call Components\n\n| Component | Package | Type | Purpose |\n|---|---|---|---|\n| `CometChatCallButtons` | `presentation.callbuttons` | View | Audio/video call buttons |\n| `CometChatIncomingCall` | `presentation.incomingcall` | View | Incoming call screen |\n| `CometChatOutgoingCall` | `presentation.outgoingcall` | View | Outgoing call screen |\n| `CometChatOngoingCall` | `presentation.ongoingcall.ui` | View | Active call screen |\n| `CometChatCallActivity` | `calls` | Activity | Activity wrapper for calls |\n\n### 1.4 Utility Components\n\n| Component | Package | Type | Purpose |\n|---|---|---|---|\n| `CometChatSearch` | `presentation.search.ui` | View | Global search |\n| `CometChatReactionList` | `presentation.reactionlist.ui` | View | Reaction details |\n| `CometChatEmojiKeyboard` | `presentation.emojikeyboard.ui` | View | Emoji picker |\n| `CometChatStickerKeyboard` | `presentation.stickerkeyboard.ui` | View | Sticker picker |\n| `CometChatFlagMessageDialog` | `presentation.report` | Dialog | Report/flag message |\n\n### 1.5 Shared Elements\n\nLocated in `presentation.shared/`:\n\n- AI features: `aiconversationstarter/`, `aiconversationsummary/`, `aismartreplies/`\n- Base elements: `baseelements/`\n- Message bubble: `messagebubble/` (BubbleFactory, CometChatMessageBubble, InternalContentRenderer)\n- Dialog: `dialog/`\n- Media: `mediarecorder/`, `mediaselection/`, `mediaviewer/`, `inlineaudiorecorder/`\n- Message preview: `messagepreview/`\n- Moderation: `moderation/`\n- Permissions: `permission/`\n- Popup menu: `popupmenu/`\n- Reactions: `reaction/`\n- Receipts: `receipts/`\n- Search box: `searchbox/`\n- Shimmer: `shimmer/`\n- Status indicator: `statusindicator/`\n- Suggestion list: `suggestionlist/`\n- Toolbar: `toolbar/`\n- Typing indicator: `typingindicator/`\n\n### 1.6 Adapters\n\nList components use RecyclerView adapters:\n\n| Adapter | Component |\n|---|---|\n| `ConversationsAdapter` | `CometChatConversations` |\n| `MessageAdapter` | `CometChatMessageList` |\n| Group/User adapters in respective packages | `CometChatGroups`, `CometChatUsers` |\n\n## 2. Basic Usage Examples\n\n### 2.1 Conversations List in an Activity\n\n```kotlin\nimport com.cometchat.uikit.kotlin.presentation.conversations.ui.CometChatConversations\n\nclass ConversationsActivity : AppCompatActivity() {\n    override fun onCreate(savedInstanceState: Bundle?) {\n        super.onCreate(savedInstanceState)\n\n        val conversations = CometChatConversations(this)\n        conversations.setOnItemClick { conversation ->\n            // Navigate to chat\n        }\n        setContentView(conversations)\n    }\n}\n```\n\n### 2.2 Message List in XML Layout\n\n```xml\n<com.cometchat.uikit.kotlin.presentation.messagelist.ui.CometChatMessageList\n    android:id=\"@+id/messageList\"\n    android:layout_width=\"match_parent\"\n    android:layout_height=\"0dp\"\n    android:layout_weight=\"1\" />\n```\n\n```kotlin\nval messageList = findViewById<CometChatMessageList>(R.id.messageList)\nmessageList.setUser(user)\n```\n\n### 2.3 Users List\n\n```kotlin\nval users = CometChatUsers(this)\nusers.setOnItemClick { user ->\n    // Navigate to chat with user\n}\nsetContentView(users)\n```\n\n### 2.4 Full Chat Screen\n\n```kotlin\nclass MessagesActivity : AppCompatActivity() {\n    override fun onCreate(savedInstanceState: Bundle?) {\n        super.onCreate(savedInstanceState)\n        setContentView(R.layout.activity_messages)\n\n        val header = findViewById<CometChatMessageHeader>(R.id.messageHeader)\n        val messageList = findViewById<CometChatMessageList>(R.id.messageList)\n        val composer = findViewById<CometChatMessageComposer>(R.id.messageComposer)\n\n        header.setUser(user)\n        messageList.setUser(user)\n        composer.setUser(user)\n    }\n}\n```\n\n## 3. Style Classes\n\nEvery component has a corresponding style class in its `style/` subpackage:\n\n| Component | Style Class |\n|---|---|\n| `CometChatConversations` | `CometChatConversationsStyle` |\n| `CometChatUsers` | `CometChatUsersStyle` |\n| `CometChatGroups` | `CometChatGroupsStyle` |\n| `CometChatGroupMembers` | `CometChatGroupMembersStyle` |\n| `CometChatMessageList` | `CometChatMessageListStyle` |\n| `CometChatMessageComposer` | `CometChatMessageComposerStyle` |\n| `CometChatMessageHeader` | `CometChatMessageHeaderStyle` |\n| `CometChatCallLogs` | `CometChatCallLogsStyle` |\n| `CometChatThreadHeader` | `CometChatThreadHeaderStyle` |\n\nStyle classes resolve defaults from XML theme attributes and `CometChatTheme` singleton.\n\n## 4. ViewModel Integration\n\nEach component creates its own ViewModel internally via factories from `chatuikit-core`. ViewModels are shared with the Compose stack — the same `CometChatConversationsViewModel` powers both `CometChatConversations` (View) and `CometChatConversations` (@Composable).\n\n## Hard rules\n\n- Activity theme MUST inherit from `CometChatTheme.DayNight` (or `.Light` / `.Dark`) — `Theme.AppCompat.*`, `Theme.MaterialComponents.*.Bridge`, plain `Theme.MaterialComponents.*`, and `Theme.Material3.*` all crash at component inflation. See `cometchat-android-v6-kotlin-placement` \"Activity theme\" section.\n- Components create their own ViewModels internally — do NOT try to create or inject ViewModels manually\n- Use `setUser(user)` or `setGroup(group)` to configure messaging components — they need a target to load messages\n- For bubble customization, use `setBubbleFactories()` and `set*ViewProvider()` — see `cometchat-android-v6-kotlin-customization`","tags":["cometchat","android","kotlin","components","skills","agent-skills","ai-agent","chat","claude-code","cursor","messaging","nextjs"],"capabilities":["skill","source-cometchat","skill-cometchat-android-v6-kotlin-components","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-v6-kotlin-components","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 (7,405 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:46.770Z","embedding":null,"createdAt":"2026-05-07T13:05:06.005Z","updatedAt":"2026-05-18T19:04:46.770Z","lastSeenAt":"2026-05-18T19:04:46.770Z","tsv":"'1':150 '1.1':153 '1.2':188 '1.3':230 '1.4':268 '1.5':300 '1.6':357 '2':377 '2.1':381 '2.2':411 '2.3':425 '2.4':442 '3':478 '4':524 'action':216 'activ':86,258,263,264,386,559,587 'ad':79 'adapt':358,363,364,371 'ai':306 'aiconversationstart':308 'aiconversationsummari':309 'aismartrepli':310 'android':3,8,30,38,44,50,125,135,146,583,633 'appcompatact':392,449 'attach':208 'attribut':520 'audio/video':240 'base':311 'baseel':313 'basic':378 'box':342 'bridg':570 'bubbl':130,201,315,623 'bubblefactori':317 'bundl':397,454 'button':242 'call':186,231,241,247,253,259,262,267 'catalog':14,56,152 'chat':18,103,212,408,437,444 'chatuikit':538 'chatuikit-cor':537 'class':72,108,390,447,480,487,494,514 'com.cometchat.uikit.kotlin.presentation':74 'com.cometchat.uikit.kotlin.presentation.conversations.ui.cometchatconversations':389 'cometchat':2,7,29,37,43,49,63,81,124,134,145,582,632 'cometchat-android-v6-compose-components':28,123 'cometchat-android-v6-kotlin-components':1 'cometchat-android-v6-kotlin-customization':42,133,631 'cometchat-android-v6-kotlin-placement':48,144,581 'cometchat-android-v6-kotlin-theming':36 'cometchatcallact':261 'cometchatcallbutton':237 'cometchatcalllog':183,509 'cometchatcalllogsstyl':510 'cometchatconvers':160,367,402,495,552,555 'cometchatconversationsstyl':496 'cometchatconversationsviewmodel':549 'cometchatemojikeyboard':285 'cometchatflagmessagedialog':295 'cometchatgroup':171,375,499 'cometchatgroupmemb':176,501 'cometchatgroupmembersstyl':502 'cometchatgroupsstyl':500 'cometchatincomingcal':243 'cometchatmessagebubbl':318 'cometchatmessagecompos':202,505 'cometchatmessagecomposerstyl':506 'cometchatmessagehead':209,507 'cometchatmessageheaderstyl':508 'cometchatmessageinform':217 'cometchatmessagelist':195,369,503 'cometchatmessageliststyl':504 'cometchatongoingcal':255 'cometchatoutgoingcal':249 'cometchatreactionlist':280 'cometchatsearch':275 'cometchatstickerkeyboard':290 'cometchatthem':522 'cometchattheme.daynight':564 'cometchatthreadhead':223,511 'cometchatthreadheaderstyl':512 'cometchatus':166,376,431,497 'cometchatusersstyl':498 'companion':26 'complet':55 'compon':6,13,20,33,61,67,83,91,97,111,121,128,140,151,155,156,190,191,232,233,270,271,360,365,482,492,528,578,590,614 'compos':32,34,120,127,469,545,556 'composer.setuser':476 'configur':612 'convers':164,382,401,405,410 'conversations.setonitemclick':404 'conversationsact':391 'conversationsadapt':366 'core':539 'correspond':485 'crash':576 'creat':529,591,600 'custom':16,47,70,129,138,624,636 'dark':567 'default':516 'delivery/read':221 'detail':284 'dialog':297,320,321 'element':302,312 'emoji':288 'equival':35 'everi':481 'exampl':380 'factori':535 'featur':104,307 'find':105 'findviewbyid':421,462,466,470 'fragment':88 'full':443 'fun':394,451 'global':278 'group':174,182,610 'group/user':370 'hard':557 'header':213,229,461 'header.setuser':472 'histori':187 'import':388 'incom':246 'indic':347,355 'inflat':579 'info':222 'inherit':562 'inject':602 'inlineaudiorecord':326 'input':206 'integr':526 'intern':533,595 'internalcontentrender':319 'kotlin':5,11,40,46,52,59,137,148,387,418,428,446,585,635 'layout':416 'light':566 'list':154,165,170,175,199,350,359,383,413,427 'load':620 'locat':303 'look':89 'manual':604 'media':322 'mediarecord':323 'mediaselect':324 'mediaview':325 'member':179 'menu':335 'messag':189,198,205,220,228,299,314,327,412,459,613,621 'messageadapt':368 'messagebubbl':316 'messagelist':420,465 'messagelist.setuser':423,474 'messagepreview':329 'messagesact':448 'method':94 'moder':330,331 'must':561 'name':214 'navig':142,406,435 'need':616 'oncreat':395,452 'outgo':252 'overrid':393,450 'packag':157,192,234,272,374 'parent':227 'permiss':332,333 'picker':289,294 'place':139 'placement':53,149,586 'plain':571 'popup':334 'popupmenu':336 'power':550 'presentation.callbuttons':238 'presentation.calllogs.ui':184 'presentation.conversations.ui':161 'presentation.emojikeyboard.ui':286 'presentation.groupmembers.ui':177 'presentation.groups.ui':172 'presentation.incomingcall':244 'presentation.messagecomposer.ui':203 'presentation.messageheader.ui':210 'presentation.messageinformation.ui':218 'presentation.messagelist.ui':196 'presentation.ongoingcall.ui':256 'presentation.outgoingcall':250 'presentation.reactionlist.ui':281 'presentation.report':296 'presentation.search.ui':276 'presentation.shared':305 'presentation.stickerkeyboard.ui':291 'presentation.threadheader.ui':224 'presentation.users.ui':167 'preview':328 'properti':22,92 'purpos':54,159,194,236,274 'r.id.messagecomposer':471 'r.id.messageheader':463 'r.id.messagelist':422,467 'r.layout.activity':458 'reaction':283,337,338 'receipt':339,340 'recent':163 'recyclerview':362 'render':131 'report/flag':298 'resolv':515 'respect':373 'rule':558 'savedinstancest':396,399,453,456 'screen':248,254,260,445 'search':279,341 'searchbox':343 'section':589 'see':580,630 'set':628 'setbubblefactori':626 'setcontentview':409,440,457 'setgroup':609 'setus':606 'share':301,542 'shimmer':344,345 'singleton':523 'skill':27,77,116 'skill-cometchat-android-v6-kotlin-components' 'source-cometchat' 'specif':102 'stack':546 'status':215,346 'statusind':348 'sticker':293 'style':23,107,479,486,490,493,513 'subpackag':491 'suggest':349 'suggestionlist':351 'super.oncreate':398,455 'target':618 'theme':41,519,560,588 'theme.appcompat':568 'theme.material3':574 'theme.materialcomponents':569,572 'thread':226 'toolbar':352,353 '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' 'tri':598 'type':158,193,235,273,354 'typingind':356 'ui':19 'uikit':9,64 'understand':95 'usag':25,379 'use':75,99,114,122,132,143,361,605,625 'user':169,424,426,430,434,439,441,473,475,477,607 'users.setonitemclick':433 'util':269 'v6':4,10,31,39,45,51,65,126,136,147,584,634 'val':400,419,429,460,464,468 'via':534 'view':12,17,60,71,82,162,168,173,178,185,197,204,211,219,225,239,245,251,257,277,282,287,292,553 'viewmodel':525,532,540,594,603 'viewprovid':629 'work':118 'wrapper':265 'xml':415,417,518","prices":[{"id":"141bee49-480d-4737-9965-7fa7147b073b","listingId":"934d4568-4995-460e-910c-f60d530722e3","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:06.005Z"}],"sources":[{"listingId":"934d4568-4995-460e-910c-f60d530722e3","source":"github","sourceId":"cometchat/cometchat-skills/cometchat-android-v6-kotlin-components","sourceUrl":"https://github.com/cometchat/cometchat-skills/tree/main/skills/cometchat-android-v6-kotlin-components","isPrimary":false,"firstSeenAt":"2026-05-07T13:05:06.005Z","lastSeenAt":"2026-05-18T19:04:46.770Z"}],"details":{"listingId":"934d4568-4995-460e-910c-f60d530722e3","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"cometchat","slug":"cometchat-android-v6-kotlin-components","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":"587efa20cdeca3a7024037bcc08d3d60fd72247e","skill_md_path":"skills/cometchat-android-v6-kotlin-components/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/cometchat/cometchat-skills/tree/main/skills/cometchat-android-v6-kotlin-components"},"layout":"multi","source":"github","category":"cometchat-skills","frontmatter":{"name":"cometchat-android-v6-kotlin-components","license":"MIT","description":"CometChat Android UIKit v6 Kotlin Views component catalog — all custom View chat UI components, their properties, styles, and usage","compatibility":"Android 9.0+ (API 28); Kotlin 1.9+; com.cometchat:chatuikit-kotlin-android:6.x"},"skills_sh_url":"https://skills.sh/cometchat/cometchat-skills/cometchat-android-v6-kotlin-components"},"updatedAt":"2026-05-18T19:04:46.770Z"}}