cometchat-ios-placement
Companion skills (read first)
cometchat-ios-coreowns the default surface (list → pushed chat screen) and the five layout rules. This skill ADDS composition beyond that one screen. The five rules still apply to EVERY screen you add.
Use this skill when
"tab-based chat", "let people browse users and groups", "open group details", "add a thread screen", "make it work on iPad".
The shape of an iOS CometChat app
UITabBarController (yours) → per tab a UINavigationController (yours) → a kit list → push your own chat screen. The kit supplies screens; you own every container and every transition. There is no composite component and no built-in tab shell.
Recipes
The kit's lists draw their OWN navigation bar — the host's navigationItem is unused. Setting navigationItem.rightBarButtonItems (a "New Group" button is the first thing anyone adds) silently renders NOTHING: measured with the button installed and both bars inspected, the control never appears, and setting hideNavigationBar = true removes the visible bar, proving it is the kit's. Put custom controls in the kit's own affordances — CometChatMessageHeader.set(options:) for the header overflow menu, or assign the list components' menus property ([UIBarButtonItem]?) — there is no set(menus:) method; menus is a settable property, not a setter. Otherwise hide the kit bar and use your own — do not attach them to a navigationItem nobody draws.
Tabs. One UINavigationController per tab, each rooted at CometChatConversations / CometChatUsers / CometChatGroups / CometChatCallLogs. Every list's selection callback pushes your chat screen — wire all of them, or a tab dead-ends.