Install the M3 Expressive skill
The skill is a folder with a SKILL.md and seven reference files. Your agent reads the short
SKILL.md on every Compose UI task, and opens a reference file only when it needs it.
1. Install it
Section titled “1. Install it”/plugin marketplace add sanikantv/m3-expressive-skill/plugin install m3-expressive-compose@m3-expressive-skillclaude plugin marketplace add sanikantv/m3-expressive-skillclaude plugin install m3-expressive-compose@m3-expressive-skillnpx --yes skills add sanikantv/m3-expressive-skill --skill m3-expressive-compose -ygit clone https://github.com/sanikantv/m3-expressive-skill.gitcp -r m3-expressive-skill/skills/m3-expressive-compose .claude/skills/Check that it loaded. In Claude Code, /m3-expressive-compose should appear when you type /m3.
2. Point your project at material3 1.5.0
Section titled “2. Point your project at material3 1.5.0”Expressive needs material3 1.5.0. In 1.4.0 most of it is internal. The skill checks your
version first and tells you if it is too old, but you can set it up now:
[versions]material3 = "1.5.0-beta02"
[libraries]androidx-compose-material3 = { group = "androidx.compose.material3", name = "material3", version.ref = "material3" }A Compose BOM won’t move material3 to a beta, so pin it explicitly as above.
3. Switch the theme
Section titled “3. Switch the theme”@Composablefun AppTheme( darkTheme: Boolean = isSystemInDarkTheme(), dynamicColor: Boolean = true, content: @Composable () -> Unit,) { val context = LocalContext.current val colorScheme = when { dynamicColor && Build.VERSION.SDK_INT >= Build.VERSION_CODES.S -> if (darkTheme) dynamicDarkColorScheme(context) else dynamicLightColorScheme(context) darkTheme -> darkColorScheme() else -> expressiveLightColorScheme() } MaterialExpressiveTheme( colorScheme = colorScheme, motionScheme = MotionScheme.expressive(), content = content, )}4. Ask for something
Section titled “4. Ask for something”Build a settings screen with segmented list items, a large flexible top app bar,and a floating toolbar with a FAB./m3-expressive-compose review app/src/main/java/com/example/HomeScreen.ktWhat you should see the agent do:
- Read
material3from your version catalog before writing code. - Use
SegmentedListItemwithListItemDefaults.segmentedShapes(index, count), not cards ofListItems. - Add
@OptIn(ExperimentalMaterial3ExpressiveApi::class)only where it usesLoadingIndicatororMaterialShapes. - Animate with
MaterialTheme.motionSchemesprings, nottween(300).
What to read next
Section titled “What to read next”- Expressive design rules: what the skill changes when you say “make it expressive”.
- API status by version: stable, opt-in, internal and deprecated.
- Components: code and live demos for every Expressive component.
Built by Sanikant. Set in Google Sans Flex (SIL Open Font License), icons from Material Symbols (Apache 2.0). Material Design is a Google trademark; this project is not affiliated with Google.