PluginBench
Skill
Pass
Audit score 90

mobile-android-design

wshobson/agents

Master Material Design 3 and Jetpack Compose for modern Android app interfaces.

What is mobile-android-design?

Build native Android apps using Material Design 3 (Material You) and Jetpack Compose. Use this skill when designing Android interfaces, implementing Compose UI layouts, or following Google's Material Design guidelines for phones, tablets, and foldables.

  • Design Android app interfaces following Material Design 3 standards
  • Build Jetpack Compose UI components and layouts
  • Implement Android navigation patterns with Navigation Compose
  • Create adaptive layouts for phones, tablets, and foldable devices
  • Apply Material 3 theming with dynamic colors and dark mode support
  • Build accessible Android interfaces with proper touch targets and content descriptions

How to install mobile-android-design

npx skills add https://github.com/wshobson/agents --skill mobile-android-design
Prerequisites
  • Android Studio or compatible IDE
  • Kotlin knowledge
  • Jetpack Compose library setup
  • Android SDK 21 or higher
Claude Code
Cursor
Windsurf
Cline

How to use mobile-android-design

  1. 1.Review Material Design 3 guidelines and color system for your app
  2. 2.Set up MaterialTheme in your app's root composable
  3. 3.Create reusable components using @Composable functions with proper state hoisting
  4. 4.Use MaterialTheme.colorScheme for all colors to support dark mode automatically
  5. 5.Implement adaptive layouts with WindowSizeClass for different screen sizes
  6. 6.Add contentDescription to all interactive elements for accessibility
  7. 7.Use LazyColumn for long lists and remember for state management
  8. 8.Test with @Preview annotations using different device configurations

Use cases

Good for
  • Creating a Material 3-compliant card list component with proper theming
  • Designing responsive layouts that adapt to different device sizes and orientations
  • Building an accessible navigation system using Navigation Compose
  • Implementing dynamic color theming for Android 12+ devices
  • Developing a tablet-optimized layout using WindowSizeClass
Who it's for
  • Android app developers
  • UI/UX designers building for Android
  • Mobile engineers implementing Jetpack Compose
  • Teams following Material Design guidelines

mobile-android-design FAQ

How do I enable dynamic color on Android 12+?

Set up Material 3 theming and enable dynamic color in your MaterialTheme configuration. The system will automatically apply user-selected colors from their wallpaper on compatible devices.

What's the minimum touch target size for accessibility?

Use 48dp as the minimum touch target size for all interactive elements to meet accessibility standards.

How do I prevent state loss during configuration changes?

Use rememberSaveable instead of remember for state that should persist across configuration changes like screen rotation.

Should I use Column or LazyColumn for lists?

Use LazyColumn for long lists to improve performance by only composing visible items. Use Column only for small, fixed-size lists.

How do I support both phones and tablets with one layout?

Use WindowSizeClass to detect screen size and create adaptive layouts that adjust content arrangement based on available space.

Full instructions (SKILL.md)

Source of truth, from wshobson/agents.


name: mobile-android-design description: Master Material Design 3 and Jetpack Compose patterns for building native Android apps. Use when designing Android interfaces, implementing Compose UI, or following Google's Material Design guidelines.

Android Mobile Design

Master Material Design 3 (Material You) and Jetpack Compose to build modern, adaptive Android applications that integrate seamlessly with the Android ecosystem.

When to Use This Skill

  • Designing Android app interfaces following Material Design 3
  • Building Jetpack Compose UI and layouts
  • Implementing Android navigation patterns (Navigation Compose)
  • Creating adaptive layouts for phones, tablets, and foldables
  • Using Material 3 theming with dynamic colors
  • Building accessible Android interfaces
  • Implementing Android-specific gestures and interactions
  • Designing for different screen configurations

Detailed section: Core Concepts

Originally a 9201-byte section in this SKILL.md. Moved to references/details.md to fit Codex's 8 KB skill body cap.

Quick Start Component

@Composable
fun ItemListCard(
    item: Item,
    onItemClick: () -> Unit,
    modifier: Modifier = Modifier
) {
    Card(
        onClick = onItemClick,
        modifier = modifier.fillMaxWidth(),
        shape = RoundedCornerShape(12.dp)
    ) {
        Row(
            modifier = Modifier
                .padding(16.dp)
                .fillMaxWidth(),
            verticalAlignment = Alignment.CenterVertically
        ) {
            Box(
                modifier = Modifier
                    .size(48.dp)
                    .clip(CircleShape)
                    .background(MaterialTheme.colorScheme.primaryContainer),
                contentAlignment = Alignment.Center
            ) {
                Icon(
                    imageVector = Icons.Default.Star,
                    contentDescription = null,
                    tint = MaterialTheme.colorScheme.onPrimaryContainer
                )
            }

            Spacer(modifier = Modifier.width(16.dp))

            Column(modifier = Modifier.weight(1f)) {
                Text(
                    text = item.title,
                    style = MaterialTheme.typography.titleMedium
                )
                Text(
                    text = item.subtitle,
                    style = MaterialTheme.typography.bodyMedium,
                    color = MaterialTheme.colorScheme.onSurfaceVariant
                )
            }

            Icon(
                imageVector = Icons.Default.ChevronRight,
                contentDescription = null,
                tint = MaterialTheme.colorScheme.onSurfaceVariant
            )
        }
    }
}

Best Practices

  1. Use Material Theme: Access colors via MaterialTheme.colorScheme for automatic dark mode support
  2. Support Dynamic Color: Enable dynamic color on Android 12+ for personalization
  3. Adaptive Layouts: Use WindowSizeClass for responsive designs
  4. Content Descriptions: Add contentDescription to all interactive elements
  5. Touch Targets: Minimum 48dp touch targets for accessibility
  6. State Hoisting: Hoist state to make components reusable and testable
  7. Remember Properly: Use remember and rememberSaveable appropriately
  8. Preview Annotations: Add @Preview with different configurations

Common Issues

  • Recomposition Issues: Avoid passing unstable lambdas; use remember
  • State Loss: Use rememberSaveable for configuration changes
  • Performance: Use LazyColumn instead of Column for long lists
  • Theme Leaks: Ensure MaterialTheme wraps all composables
  • Navigation Crashes: Handle back press and deep links properly
  • Memory Leaks: Cancel coroutines in DisposableEffect