cometchat-android-v5-extensions
SkillDev toolsExtension architecture for CometChat Android — ExtensionsDataSource, decorators, built-in extensions, and how to create custom extensions.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the cometchat-android-v5-extensions skill
What this skill tells your AI
The instructions your AI receives, as published by cometchat/cometchat-skills in skills/cometchat-android-v5-extensions/SKILL.md and read by ahel’s review.
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-customizationcovers DataSource decorators;cometchat-android-v5-featurescovers the feature catalog.
Purpose
This skill covers the CometChat extension architecture — how extensions plug into the UI Kit, the built-in extensions, and how to create custom ones.
Use this skill when
- "How do extensions work?"
- "How do I add a custom extension?"
- "How do I disable an extension?"
- Working with
ExtensionsDataSourceorExtensionDecorator
Do not use this skill when
- Enabling a backend extension or AI feature → use
cometchat-android-v5-features(which routes tocometchat apply-feature <id> --app-id <X>) - Writing custom message templates → use
cometchat-android-v5-customization
1. Extension architecture
Extensions are split into two class types:
- Registrar classes (e.g.
PollsExtension,StickerExtension) — extendExtensionsDataSource. These are what you pass tosetExtensions(...)to enable a built-in extension. - Decorator classes (e.g.
PollsExtensionDecorator,StickerExtensionDecorator) — extendDataSourceDecorator. These are the runtime decorators that wrap the activeDataSourcechain. The kit creates them internally; you don't construct them directly.
ChatConfigurator.getDataSource()
└── SmartRepliesExtensionDecorator (created by SmartRepliesExtension)
└── PollsExtensionDecorator (created by PollsExtension)
└── StickerExtensionDecorator (created by StickerExtension)
└── MessagesDataSource (base)
2. Built-in extensions
| Extension | Package | What it adds |
|---|---|---|
| Polls | com.cometchat.chatuikit.extensions.polls | Poll creation and voting in messages |
| Stickers | com.cometchat.chatuikit.extensions.sticker | Sticker keyboard and sticker bubbles |
| Collaborative Document | com.cometchat.chatuikit.extensions.collaborative | Shared document editing |
| Collaborative Whiteboard | com.cometchat.chatuikit.extensions.collaborative | Shared whiteboard |
| Smart Replies | com.cometchat.chatuikit.extensions.smartreplies | AI-powered reply suggestions |
| Message Translation | com.cometchat.chatuikit.extensions.messagetranslation | Translate messages |
| Text Moderation | com.cometchat.chatuikit.extensions.textmoderation | Profanity filtering |
| Thumbnail Generation | com.cometchat.chatuikit.extensions.thumbnailgeneration | Image thumbnails |
3. Enabling/disabling extensions
Extensions are enabled by default. To customize which extensions are active, pass a custom list to UIKitSettingsBuilder:
List<ExtensionsDataSource> extensions = new ArrayList<>();
extensions.add(new PollsExtension()); // registrar, NOT PollsExtensionDecorator
extensions.add(new StickerExtension()); // registrar, NOT StickerExtensionDecorator
extensions.add(new SmartRepliesExtension());
// Omit extensions you don't want
UIKitSettings settings = new UIKitSettings.UIKitSettingsBuilder()
.setAppId(APP_ID)
.setRegion(REGION)
.setAuthKey(AUTH_KEY)
.setExtensions(extensions)
.build();
Why not
PollsExtensionDecorator?*ExtensionDecoratorextendsDataSourceDecorator, notExtensionsDataSource— so it won't compile when added to aList<ExtensionsDataSource>. The kit's runtime decorator chain is built by the registrar'senable()method internally; you don't add decorators directly.
4. Creating a custom extension
A custom extension has TWO classes:
- A registrar that extends
ExtensionsDataSource(gets added tosetExtensions(...)) - A decorator that extends
DataSourceDecorator(created by the registrar viaChatConfigurator.enable(...))
// 1. Decorator — extends DataSourceDecorator, overrides per-message behavior
public class MyExtensionDecorator extends DataSourceDecorator {
public MyExtensionDecorator(DataSource dataSource) {
super(dataSource);
}
// Override methods to add custom behavior
}
// 2. Registrar — extends ExtensionsDataSource, implements getExtensionId() + addExtension()
public class MyExtension extends ExtensionsDataSource {
@Override
public String getExtensionId() {
return "my-custom-extension";
}
@Override
public void addExtension() {
// addExtension() is the ABSTRACT method you must implement. The inherited
// concrete enable() calls it after confirming the extension is on (dashboard).
ChatConfigurator.enable(dataSource -> new MyExtensionDecorator(dataSource));
}
}
// Then add the registrar to UIKitSettings:
extensions.add(new MyExtension());
Hard rules
- Two classes per extension. A registrar (
ExtensionsDataSource, implements abstractgetExtensionId()+addExtension();enable()is inherited) and a decorator (DataSourceDecorator, holds the per-message override).setExtensions(...)wants registrars; the chain builds decorators automatically. - Register after init.
ChatConfigurator.enable()must be called afterCometChatUIKit.init()succeeds. - Backend extension toggle still applies. Even if an extension is registered client-side, it needs to be enabled on the app's backend. Use
cometchat apply-feature <id> --app-id <X>(the CLI hits the dashboard API). For dashboard-only extensions (Giphy / Stipop / Tenor / Chatwoot / Intercom — those needing third-party API keys), the user has to enter the third-party config in the dashboard manually.
Signals
- GitHub stars
- 105
- Forks
- 2
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
cometchat-android-v5-extensions- Source
- github.com/cometchat/cometchat-skills