Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Use when the user asks for an Android app, Compose UI, Material 3, Material You, Material 3 Expressive, Pixel-style app, foldable/adaptive layout, Play Store deliverable, React Native Android, Flutter Android, Compose Multiplatform, or any Android deliverable. Builds Android apps across system-like Compose, branded Compose, React Native, Flutter, and Compose Multiplatform while preserving UX decisions, state coverage, adaptive navigation, Material motion, accessibility, and product-specific visu
.claude/skills/hashgraph-online-android-design/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-01 | ✗→✓ | ▲ Improved | 30% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 44% | 0% |
| case-03 | ✗→✓ | ▲ Improved | 16% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 71% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 99% | 0% |
Android has multiple stacks with different visual ceilings. Ask the user which one before any code.
> Which track for this app? > > 1. System-like native (Jetpack Compose + Material 3 Expressive strict) — feels like Pixel Launcher, Google Calendar, Settings. Best for: utilities, system tools, productivity. Spring physics, shape morphing, wavy progress, dynamic color (Material You). Examples: Read You, Androidify sample, Files by Google. > > 2. Branded native (Compose + custom Material theme) — native chrome (M3E motion, predictive back, edge-to-edge) but bespoke content surface (custom typography, hero atmospheres, magazine layouts). Visual ceiling: high. Examples: Fitbit redesign, Google Calendar's editorial moments, Niantic apps. > > 3. React Native (New Architecture + Fabric + Hermes) — real Android views, decent native feel, JavaScript codebase, cross-platform with iOS. Material themable but won't get spring physics or shape morphing without manual work. Examples: Discord mobile, Coinbase, Microsoft Office. > > 4. Flutter — Skia-painted custom rendering. Cross-platform single codebase. Lags Material updates (no M3 Expressive parity, no real dynamic color). Visual ceiling: high if you ship your own design language; weak if mimicking Material. Examples: Google Pay, BMW My BMW, Toyota. > > 5. Compose Multiplatform (1.8+) — same Compose code, runs Android + iOS + Desktop + Web (Wasm experimental). Native on Android, Material-look on iOS (you must Cupertino-skin or accept). Best for: Kotlin shop wanting cross-platform from one codebase. > > Which? Or describe priorities (Play Store launch, cross-platform reach, brand vs Material fit) and I'll pick.
If brief gives strong signal (e.g. "Pixel-style camera" → 1; "cross-platform with React team" → 3; "Kotlin shop, ship to all platforms" → 5), state your pick + reasoning in one sentence. If ambiguous, ask.
| Track | Reference docs | Default stack | |---|---|---| | 1. System-like Compose | ../../references/material3-expressive.md | Compose BOM 2026.06.00 + Material3 1.4 + adaptive layouts strict | | 2. Branded Compose | Same as 1 | Same as 1 + custom display font + hero atmospheres + bespoke surfaces | | 3. React Native | ../../references/web-fonts.md + cross-platform docs | RN 0.86 New Architecture + Expo Router | | 4. Flutter | None for native fidelity | Flutter 3+ stable | | 5. Compose Multiplatform | ../../references/material3-expressive.md | Current stable CMP + shared Compose |
For tracks 3 and 4: web/cross-platform anti-slop rules apply. Read web references.
State the chosen aesthetic direction and track in one sentence at top of response.
Before code, read:
../../references/ui-patterns/surface-taxonomy.md../../references/ui-patterns/ui-decision-brief.md../../references/ui-patterns/visual-hierarchy.md../../references/ui-patterns/motion-budget.mdWrite the UI decision brief and adapt it to the chosen Android track. Compact screens need thumb-reachable primary actions, sheets, edge-to-edge, and adaptive navigation; tablets/foldables need list-detail or supporting panes; operational tools should stay dense and scannable while preserving Material 3 Expressive motion, dynamic color, and predictive back.
Launched at I/O 2025. Default for Pixel 10 / Android 16 QPR1. Generated UI must adopt:
MotionScheme.expressive(). Never FastOutSlowIn on M3E surfaces.MaterialShapes.Cookie4Sided, Pill, etc. Buttons/chips/loaders morph between states.MaterialTheme.typography.displayLarge with intent.FloatingToolbar (pill-shaped, drifts with content)ButtonGroup / SplitButtonFloatingActionButtonMenuContainedLoadingIndicator (cycles through M3E shapes)LinearWavyProgressIndicator, CircularWavyProgressIndicator with variable amplitudeModifier.shadow() for elevationdynamicColorScheme() from wallpaper on Android 12+Read ../../references/material3-expressive.md for the M3E adoption checklist.
kotlinimplementation(platform("androidx.compose:compose-bom:2026.04.01")) implementation("androidx.compose.material3:material3:1.4.0") // or for shape-morphing chips: implementation("androidx.compose.material3:material3:1.5.0-alpha18")
Use:
currentWindowAdaptiveInfo() + NavigationSuiteScaffold (auto-swaps Bar/Rail/Drawer by WindowSizeClass)ListDetailPaneScaffold, SupportingPaneScaffold, NavigableListDetailPaneScaffoldSharedTransitionLayout { ... } for shared element transitions (stable)PredictiveBackHandler / BackHandler — mandatory on Android 16, default ON Android 15+LookaheadAnimationVisualDebugging for inspecting bounds during devAndroid 16 (API 36) deprecated windowOptOutEdgeToEdgeEnforcement. Every screen:
Scaffold with content padding from insetsWindowInsets.systemBars, .statusBars, .navigationBarsNavigationBar (3–5 items)NavigationRailNavigationDrawer (modal or permanent) + ListDetailPaneScaffoldWindowInfoTrackerNavigationBar (3–5 items) or NavigationRail fitsModifier.shadow(elevation = 8.dp) — use tonalElevation on Surface insteadMotionScheme.expressive() onlyContainedLoadingIndicator cycling shapes; floating toolbarViewModel + StateFlow + collectAsStateWithLifecycle()Token JSON: see ../../assets/tokens/material3-expressive.json
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→pass | 39,694 | 52,847 | +33% | 1 | 1 | 0% | 8,282 | 10,759 | +30% | 0 | 0 | — |
case-02 | fail→pass | 48,535 | 39,561 | -18% | 1 | 1 | 0% | 7,485 | 10,759 | +44% | 0 | 0 | — |
case-03 | fail→pass | 58,373 | 66,053 | +13% | 1 | 1 | 0% | 8,275 | 9,571 | +16% | 0 | 0 | — |
case-04 | fail→pass | 28,188 | 32,439 | +15% | 1 | 1 | 0% | 5,022 | 8,609 | +71% | 0 | 0 | — |
case-05 | pass→pass | 23,595 | 38,607 | +64% | 1 | 1 | 0% | 3,403 | 7,738 | +127% | 0 | 0 | — |
case-06 | fail→pass | 23,060 | 33,040 | +43% | 1 | 1 | 0% | 3,847 | 7,645 | +99% | 0 | 0 | — |
case-07 | fail→pass | 28,578 | 25,326 | -11% | 1 | 1 | 0% | 3,797 | 7,780 | +105% | 0 | 0 | — |
case-08 | pass→pass | 19,144 | 20,231 | +6% | 1 | 1 | 0% | 3,510 | 6,587 | +88% | 0 | 0 | — |
case-09 | pass→pass | 16,037 | 19,930 | +24% | 1 | 1 | 0% | 3,049 | 6,382 | +109% | 0 | 0 | — |
case-10 | pass→pass | 20,956 | 26,370 | +26% | 1 | 1 | 0% | 3,233 | 8,633 | +167% | 0 | 0 | — |
case-11 | pass→pass | 21,052 | 30,160 | +43% | 1 | 1 | 0% | 3,130 | 8,246 | +163% | 0 | 0 | — |
case-12 | fail→fail | 20,239 | 18,552 | -8% | 1 | 1 | 0% | 2,940 | 6,302 | +114% | 0 | 0 | — |
case-13 | pass→fail | 26,505 | 4,901 | -82% | 1 | 1 | 0% | 2,149 | 3,138 | +46% | 0 | 0 | — |
case-14 | fail→pass | 11,134 | 15,511 | +39% | 1 | 1 | 0% | 2,311 | 5,377 | +133% | 0 | 0 | — |
case-15 | fail→pass | 24,649 | 22,313 | -9% | 1 | 1 | 0% | 2,930 | 5,959 | +103% | 0 | 0 | — |
case-16 | pass→pass | 21,355 | 25,842 | +21% | 1 | 1 | 0% | 2,617 | 6,693 | +156% | 0 | 0 | — |
case-17 | fail→fail | 30,520 | 29,261 | -4% | 1 | 1 | 0% | 3,880 | 3,337 | -14% | 0 | 0 | — |
case-18 | pass→pass | 11,427 | 20,139 | +76% | 1 | 1 | 0% | 2,158 | 4,809 | +123% | 0 | 0 | — |
case-19 | fail→pass | 23,655 | 15,039 | -36% | 1 | 1 | 0% | 2,822 | 4,783 | +69% | 0 | 0 | — |
case-20 | fail→fail | 19,040 | 28,508 | +50% | 1 | 1 | 0% | 4,302 | 8,708 | +102% | 0 | 0 | — |
case-21 | pass→fail | 21,902 | 25,072 | +14% | 1 | 1 | 0% | 3,603 | 8,400 | +133% | 0 | 0 | — |
case-22 | pass→pass | 17,600 | 25,795 | +47% | 1 | 1 | 0% | 2,658 | 6,583 | +148% | 0 | 0 | — |
case-23 | pass→fail | 17,647 | 9,631 | -45% | 1 | 1 | 0% | 2,683 | 3,797 | +42% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted. The headline lift of +26 percentage points is the difference between those two pass rates over the 23 comparable cases. 3 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.