cometchat-android-v6-compose-theming — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited cometchat-android-v6-compose-theming (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Ground truth:com.cometchat:chatuikit-{compose,kotlin}-android:6.x(+calls-sdk-android:5.x) — resolved AAR (javap) +ui-kit/android/v6. Official docs: https://www.cometchat.com/docs/ui-kit/android/v6/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-v6-kotlin-theming (Views equivalent), cometchat-android-v6-compose-components, cometchat-android-v6-compose-customization
Apply and customize the CometChat theme in Jetpack Compose — color schemes, typography, shapes, dark mode, and per-component style overrides using the CompositionLocal-based theme system.
CometChatTheme {}cometchat-android-v6-kotlin-theming)cometchat-android-v6-compose-customization)All CometChat Compose components must be wrapped in CometChatTheme {}:
import com.cometchat.uikit.compose.theme.CometChatTheme
setContent {
CometChatTheme {
// CometChat components go here
CometChatConversations()
}
}CometChatTheme is a composable that provides theme values via CompositionLocalProvider:
LocalColorScheme → CometChatColorSchemeLocalTypography → CometChatTypographyLocalShapes → Shapesimport com.cometchat.uikit.compose.theme.*
// Light mode (default)
CometChatTheme(colorScheme = lightColorScheme()) {
// ...
}
// Dark mode
CometChatTheme(colorScheme = darkColorScheme()) {
// ...
}
// Auto based on system setting
CometChatTheme(
colorScheme = if (isSystemInDarkTheme()) darkColorScheme() else lightColorScheme()
) {
// ...
}CometChatTheme(
colorScheme = lightColorScheme(primary = Color(0xFF6851D6))
) {
// All extended primary colors (50-900) auto-generate from the primary
}The CometChatColorScheme class contains these token groups:
Primary Colors:
primary — Main brand colorExtended Primary (auto-generated from primary):
extendedPrimaryColor50 through extendedPrimaryColor900 — 10 shades blended with white (light) or black (dark)Neutral Colors:
neutralColor50 through neutralColor900 — 10 neutral shadesAlert Colors:
infoColor, successColor, warningColor, errorColor, messageReadColorBackground Colors:
backgroundColor1 (lightest) through backgroundColor4 (darkest)Stroke/Border Colors:
strokeColorDefault, strokeColorLight, strokeColorDark, strokeColorHighlightborderColorLight, borderColorDefault, borderColorDark, borderColorHighlightText Colors:
textColorPrimary, textColorSecondary, textColorTertiary, textColorDisabled, textColorWhite, textColorHighlightIcon Tint Colors:
iconTintPrimary, iconTintSecondary, iconTintTertiary, iconTintWhite, iconTintHighlightButton Colors:
primaryButtonBackgroundColor, primaryButtonIconTint, primaryButtonTextColorsecondaryButtonBackgroundColor, secondaryButtonIconTint, secondaryButtonTextColorlinkButtonColor, fabButtonBackgroundColor, fabButtonIconTint, whiteButtonPressedStatic Colors:
colorWhite, colorBlackval customScheme = lightColorScheme(
primary = Color(0xFF6851D6),
neutralColor50 = Color(0xFFFAFAFA),
neutralColor900 = Color(0xFF141414),
errorColor = Color(0xFFFF3B30),
successColor = Color(0xFF34C759),
// ... override any token
)
CometChatTheme(colorScheme = customScheme) {
// ...
}// Access typography in composables
val style: TextStyle = CometChatTheme.typography.heading1Bold
val bodyStyle: TextStyle = CometChatTheme.typography.bodyRegular
val titleStyle: TextStyle = CometChatTheme.typography.titleRegularCustom typography:
CometChatTheme(
typography = CometChatTypography(/* custom TextStyles */)
) {
// ...
}// Access shapes
val shapes: Shapes = CometChatTheme.shapes
// Custom shapes
CometChatTheme(
shapes = Shapes(/* custom corner radii */)
) {
// ...
}@Composable
fun MyCustomView() {
val colors = CometChatTheme.colorScheme
val typography = CometChatTheme.typography
Text(
text = "Hello",
color = colors.textColorPrimary,
style = typography.bodyRegular
)
Box(
modifier = Modifier.background(colors.backgroundColor1)
)
}Extended primary colors are auto-generated by blending the primary color with white (light mode) or black (dark mode):
// Light mode: primary blended with white at various percentages
// extendedPrimaryColor50 = blend(primary, white, 0.96) // lightest
// extendedPrimaryColor500 = blend(primary, white, 0.44) // mid
// extendedPrimaryColor900 = blend(primary, black, 0.08) // darkest
// Dark mode: primary blended with black at various percentages
// extendedPrimaryColor50 = blend(primary, black, 0.80) // lightest
// extendedPrimaryColor900 = blend(primary, white, 0.11) // lightest in darkYou can override individual extended colors:
lightColorScheme(
primary = Color(0xFF6851D6),
extendedPrimaryColor500 = Color(0xFF9B8AE0) // manual override
)To translate the UI, switch the active language, or override individual strings, route to the dedicated `cometchat-i18n` skill — the canonical cross-family localization reference. Android uses CometChatLocalize.setLocale(context, Language.Code.<lang>) / getLocale(context) (a separate method, not an init object — unlike web/RN). cometchat-i18n covers bundled languages, custom translations, and RTL. Docs: https://www.cometchat.com/docs/ui-kit/android/localize
Sounds are a behavioral customization — driven by CometChatSoundManager, an instance class that needs a Context. The UI Kit plays the built-in cues automatically; use this to override a cue with your own raw resource. V6 package (NOT the V5 com.cometchat.chatuikit.* path):
import com.cometchat.uikit.core.resources.soundmanager.CometChatSoundManager
import com.cometchat.uikit.core.resources.soundmanager.Sound
val soundManager = CometChatSoundManager(context)
// Play a default cue — Sound enum is SCREAMING_SNAKE_CASE: INCOMING_CALL |
// OUTGOING_CALL | INCOMING_MESSAGE | INCOMING_MESSAGE_FROM_OTHER | OUTGOING_MESSAGE
soundManager.play(Sound.INCOMING_CALL)
// Override with your own raw resource (R.raw.*)
soundManager.play(Sound.INCOMING_MESSAGE, R.raw.my_ping)
// Stop whatever is playing
soundManager.pause()CometChatTheme {} — components will crash or look wrong without itMaterialTheme tokens inside CometChat components — use CometChatTheme.colorScheme / .typography / .shapesCometChatTheme does NOT extend MaterialTheme — they are separate theme systemslightColorScheme() and darkColorScheme() are factory functions, not data class constructors — use named parameters to override specific tokens~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.