<< All versions
Skill v1.0.1
currentAutomated scan100/100meshtastic/meshtastic-android/design-standards
+3 new
──Details
PublishedJuly 28, 2026 at 02:15 PM
Content Hashsha256:4447452f3281d5db...
Git SHA92e33006dad4
Bump Typepatch
──Files
Files (1 file, 3.6 KB)
SKILL.md3.6 KBactive
SKILL.md · 60 lines · 3.6 KB
version: "1.0.1"
Skill: Meshtastic Design Standards
Description
Android-specific guidance for applying the Meshtastic design standards. All visual rules, color palettes, accessibility requirements, and cross-platform conventions live upstream.
Source of truth: `meshtastic/design/standards/`Readmeshtastic_design_standards_latest.md(a pointer to the current versioned spec —meshtastic_design_standards_v1_4.mdat time of writing) for the full spec (colors, M3 mapping, accessibility, units/locale, agent checklist).If this skill diverges from upstream, upstream wins.
1. How to Use the Standards
Before implementing any UI:
- Read the upstream standards — they include a full agent implementation checklist
- Check the settings validation matrix — `meshtastic/design/standards/audits/settings-validation-matrix.md` has field-by-field validation rules for every config/module setting
- Apply the Android-specific mappings below
2. Android / Compose Mappings
Theme Tokens
The upstream standards define M3 role mappings (Section 8). In this codebase:
- Theme is defined in
core/ui/— theAppThemecomposable (core/ui/src/commonMain/kotlin/org/meshtastic/core/ui/theme/Theme.kt) - Use M3 tokens (
MaterialTheme.colorScheme.primary,.surface, etc.) — never raw hex values - Dynamic color (Android 12+): on by default via
dynamicColorScheme()(AppTheme(dynamicColor = true)for all flavors); the Androidactualis gated by SDK ≥ S, while desktop/iOS return null
Brand Colors → Compose
| Standard Name | Hex | Compose Usage | |
|---|---|---|---|
| Primary | #2C2D3C | MaterialTheme.colorScheme.primary | |
| Accent | #67EA94 | MaterialTheme.colorScheme.tertiary (never as text on light bg) | |
| Green 600 | #3FB86D | Use for success text on light backgrounds | |
| Error | #E05252 | MaterialTheme.colorScheme.error | |
| Link | #9BA8E0 | Blue 400 — for clickable text |
Raw palette defined incore/ui/src/commonMain/kotlin/org/meshtastic/core/ui/theme/CustomColors.kt(e.g.N800,G500,G600,E500,B400) — reference the M3 token, not the rawCustomColorsentry, in UI code.
Key Rules (Android-specific)
- Icons: Use
MeshtasticIcons(fromcore/ui/icon/), notmaterial.icons.Icons - Touch targets: 44×44dp minimum (M3 default is 48dp — compliant)
- Typography: Default body = 16sp. Support Dynamic Type via
MaterialTheme.typography - Message bubbles: Use
onSurfacefor text color, never node identity colors
3. App Icons
- Launcher icon:
ic_launcher— adaptive (androidApp/src/main/res/mipmap-anydpi/ic_launcher.xml) with foreground/background layers. The Play-Store listing asset isandroidApp/src/main/ic_launcher2-playstore.png. - When regenerating, use Image Asset Studio and keep the
ic_launcherresource name.
4. Settings Validation Reference
When implementing or modifying settings screens, consult the upstream validation spec: `settings-validation-android.md`
It documents every field's:
- Valid ranges and byte limits
- UI component type (stepper, picker, secure input, etc.)
- Dirty-tracking patterns
- Edge cases (e.g., BLE PIN must be exactly 6 digits, Wi-Fi SSID max 32 UTF-8 bytes)