From mobile-design-skills
Use when the user asks to build Android screens, Jetpack Compose layouts, Material components, or any Android app UI. Also use when styling, redesigning, or beautifying any Android interface. Covers Material 3 Expressive for Android 16, spring motion, shape variety, and platform-native patterns.
npx claudepluginhub ivan-magda/mobile-design-skills --plugin mobile-design-skillsThis skill uses the workspace's default tool permissions.
This skill targets **Android 16+** with Material 3 Expressive. For apps targeting older Android versions, fall back to standard Material 3 guidelines — those patterns are well-covered by general AI knowledge.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Generates original PNG/PDF visual art via design philosophy manifestos for posters, graphics, and static designs on user request.
Share bugs, ideas, or general feedback.
This skill targets Android 16+ with Material 3 Expressive. For apps targeting older Android versions, fall back to standard Material 3 guidelines — those patterns are well-covered by general AI knowledge.
This skill guides creation of Android interfaces that feel genuinely designed for the platform — avoiding the generic "Material template" aesthetic that plagues AI-generated mobile UI. Every design decision should demonstrate understanding of Material 3 Expressive and the principles that separate professional apps from amateur ones.
The user provides Android UI requirements: a screen, flow, component, or full app interface. They may include context about purpose, audience, or technical constraints.
Before generating any UI, commit to a clear design direction:
CRITICAL: M3 Expressive is not "add bounce to everything." It's a research-backed system where six design tactics — shape variety, rich color, typographic emphasis, strategic containment, fluid spring motion, and component flexibility — work together. The target feel is natural and physical — like pulling a book from a shelf where neighboring books slide slightly, or flicking a notification away and feeling a satisfying haptic rumble. Professional apps deploy these tactics selectively at hero moments. Amateur apps apply them uniformly everywhere.
Focus on:
tween(durationMillis). Springs handle interruption seamlessly by retargeting from current velocity. Use MaterialTheme.motionScheme tokens — never hardcode spring values. Two categories: Spatial specs (bouncy, damping ~0.6) for position, size, rotation, shape. Effects specs (critically damped, damping = 1.0) for color and opacity. Never apply spatial springs to color/opacity — alpha bouncing past 100% looks broken.fastSpatialSpec for small components (switches, buttons). defaultSpatialSpec for partial-screen elements (sheets, drawers). slowSpatialSpec for full-screen transitions. A slow spring on a toggle feels sluggish. A fast spring on a page transition feels frantic.Morph class between RoundedPolygon instances) rather than simple cross-fades.ColorScheme has 48 named roles. Use them. Primary for key actions, secondary and tertiary for supporting hierarchy, the 12 fixed accent colors for elements that must look identical across light/dark themes. 5 surface container levels (surfaceContainerLowest through surfaceContainerHighest) replace opacity-based elevation — use them for layered depth. Defaulting to primary-on-white for everything wastes the system that drives 4× faster element recognition.*Emphasized variants (higher weight) exist for "editorial moments" — headlines, CTAs, key information. Using uniform bodyMedium throughout produces flat layouts. Pair headlineLargeEmphasized for hero content with bodyLarge for supporting text. The contrast between emphasized and baseline creates visual rhythm.SegmentedButton → ButtonGroup (connected buttons with overflow). BottomAppBar → Docked/Floating Toolbar (with integrated FAB). Stacked small FABs → FloatingActionButtonMenu (expandable with ToggleFloatingActionButton). Also: SplitButtonLayout for primary+secondary actions, LoadingIndicator with shape-morphing polygons instead of circular spinners.secondary color, not onSurface. Progress indicators support wavy shape option and configurable track height.dynamicLightColorScheme/dynamicDarkColorScheme on Android 12+. Provide brand-aligned static fallback for older devices. Use Material Color Utilities to harmonize brand accents with the user's dynamic palette.WindowInsets handling. Predictive back gestures show a preview of the destination as users swipe — your in-app transitions must harmonize with this system animation, not fight it.Remove animations — when ANIMATOR_DURATION_SCALE is 0, fall back to snap() or simple fades; switch from Expressive scheme to StandardUiModeManager.getContrast() for high-contrast themestween(300) or any hardcoded tween for interruptible motion — this is the #1 anti-pattern; springs retarget smoothly, tweens snap jarringlyslowSpatialSpec on a toggle switch or fastSpatialSpec on a full-screen transition — match speed to element sizeprimary color while ignoring secondary, tertiary, and all 12 fixed accent rolesbodyMedium everywhere — missing the emphasized variants eliminates the editorial quality that makes Expressive distinctive1.4.0 without checking for Expressive API availability — new components require the alpha trackSegmentedButton or BottomAppBar instead of their replacementsMaterialTheme.motionScheme and hardcoding spring parameters inlineProfessional M3 Expressive apps combine tactics at hero moments: a detail-screen transition that simultaneously morphs shapes via Morph, shifts colors via effects springs, scales elements via spatial springs, and renders the headline in headlineLargeEmphasized. This compound expressiveness at key moments — with restraint everywhere else — is what separates designed apps from defaults.
Observable markers of professional work: custom MotionScheme tuned to brand personality, strategic use of MaterialShapes beyond basic rectangles, the full 48-role color system deployed across visual hierarchy, ButtonGroup and FloatingActionButtonMenu replacing deprecated components, and shape morphing on state transitions rather than simple visibility toggles.
The highest-impact adoption order: motion scheme first (biggest delta for least effort), then shape variety, then expanded color, then new components. Every spring token, shape morph, and emphasized text style is a lever — the craft is knowing which levers to pull and when.