| name | ha-android-ui |
| description | Home Assistant Android UI guidance. Use when building or reviewing Compose screens, ViewModels, screen state, navigation, dialogs, widgets, or anything using HATheme and the design system. |
HA Android UI
Use this skill when creating or changing screens, ViewModels, navigation, or widgets.
The screen pattern is documented in depth at https://developers.home-assistant.io/docs/android/ui_architecture.
Compose Only
- All new UI uses Jetpack Compose; no new XML, databinding, or viewbinding. Legacy XML screens are migrated over time.
- All new widgets use Jetpack Glance; legacy RemoteViews widgets must not be extended.
Design System
- Use
io.homeassistant.companion.android.common.compose.theme.HATheme and the HA* components (HAButton, HAText, HATextField, HACheckbox, HALoading, HADropdownMenu, HAModalBottomSheet, ...) instead of Material components directly. Apply the theme in setContent, not inside the screen composable.
- Never mix Material 2 and Material 3 in a screen; use
HATextStyle for typography, HADimens.SPACE* tokens for spacing and sizes — no magic numbers for padding.
- Access colors via
LocalHAColorScheme.current with the tokens from HAColorScheme; never hardcode colors. Raw Material 3 elements get the wrong light/dark colors — if an HA* wrapper is missing, create it first (own PR, added to the Compose catalog with screenshots) instead of styling a Material component inline.
- Use Snackbars for errors and transient feedback, not Toasts.