Agent skill

Wear Compose M3

by rosuH in rosuH/EasyWatermark

Guidance for Wear OS Compose Material3 (Wear Compose Material 3 / Wear Compose Material3) watch and wearable apps.

MITAuto-check passedMobile

Install Wear Compose M3

skills CLI
$ npx skills add rosuH/EasyWatermark --skill wear-compose-m3 -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install rosuH/EasyWatermark wear-compose-m3 --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/rosuH/EasyWatermark.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/wear-compose-m3 .claude/skills/wear-compose-m3 && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
wear-compose-m3
GitHub stars
1.9k
Used in
1 other repo
Token cost
~9.8k tokens
SKILL.md length
1,354 words
Files
54 (incl. references)
Skills in repo
28
Repo updated
First seen
Licence
MIT

At a glance

Guidance for Wear OS Compose Material3 (Wear Compose Material 3 / Wear Compose Material3) watch and wearable apps.

  • Works in 6 steps: Current Wear OS Compose version in-use:… → Wear OS Compose Material3 version: If an… → Strict compliance: If a version is… → …
  • Mobile work in your project
  • SKILL.md covers Prerequisites and compatibility, Gotchas and Capabilities and tools
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Wear Compose M3 is an agent skill from rosuH/EasyWatermark. Guidance for Wear OS Compose Material3 (Wear Compose Material 3 / Wear Compose Material3) watch and wearable apps. Covers creating, updating, and migrating projects (Material 2.5 and Horologist migration) using androidx.wear.compose.material3, androidx.wear.compose.foundation, and androidx.wear.compose.navigation3, including AppScaffold, ScreenScaffold, TransformingLazyColumn, ambient mode, and previews.

Its SKILL.md is about 9.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 60 other files, including reference files (for example `references/android/training/wearables/compose/migrate-to-material3.md`, `references/foundation/AmbientModeSample.kt.md` and `references/foundation/CurvedWorldSample.kt.md`).

It sits in Mobile. It works with Android, Gradle and Kotlin. The repository describes itself as: 🔒 🖼 Securely, easily add a watermark to your sensitive photos. 安全、简单地为你的敏感照片添加水印,防止被人泄露、利用. The licence is MIT.

When your agent uses it

  • Mobile work in your project

Example prompts

  • “/wear-compose-m3”

Workflow steps

6 steps, taken from the first numbered list in SKILL.md.

  1. Current Wear OS Compose version in-use: To find the installed library version, read gradle/libs.versions.toml or build.gradle.kts…
  2. Wear OS Compose Material3 version: If an internal tool is available to establish the latest stable version {VERSION} of…
  3. Strict compliance: If a version is listed as stable, you MUST use it, unless overridden by the user. Do not downgrade based on initial…
  4. Kotlin \& Compose compiler: Use Kotlin 2.0.0+ with the org.jetbrains.kotlin.plugin.compose Gradle plugin.
  5. Min SDK: Ensure minSdk is at least 25.
  6. Compile SDK \& AGP: Ensure compileSdk and AGP meet the library's AAR metadata floors (compileSdk >= 35 and AGP >= 8.6.0 for 1.6.x…

What it can do on your machine

Read from SKILL.md and the folder at commit 61223db. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are kotlin).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • dl.google.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Wear Compose M3 loads about 9.8k tokens when it runs, and up to ~115k if it reads all its reference files. Until then it costs about 106 tokens; SKILL.md has 1,354 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~106
When it runs · the whole SKILL.md, loaded when a task matches
~9.8k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~115k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from rosuH/EasyWatermark at commit 61223db, republished under its MIT licence (© rosuH). 1,354 words, ~9,762 tokens.

Download SKILL.mdSave it as .claude/skills/wear-compose-m3/SKILL.md (or your agent's skills folder). This skill also uses 53 other files; get the full folder from GitHub.
name
wear-compose-m3
description
Guidance for Wear OS Compose Material3 (Wear Compose Material 3 / Wear Compose Material3) watch and wearable apps. Covers creating, updating, and migrating projects (Material 2.5 and Horologist migration) using androidx.wear.compose.material3, androidx.wear.compose.foundation, and androidx.wear.compose.navigation3, including AppScaffold, ScreenScaffold, TransformingLazyColumn, ambient mode, and previews.
license
Complete terms in LICENSE.txt
metadata.author
Google LLC
metadata.last-updated
2026-09-24
metadata.keywords
Wear OS, Compose, Material3, Horologist, TransformingLazyColumn, ScalingLazyColumn, AppScaffold, ScreenScaffold, EdgeButton, SwipeDismissableSceneStrategy…

Prerequisites and compatibility

  1. Current Wear OS Compose version in-use: To find the installed library version, read gradle/libs.versions.toml or build.gradle.kts directly. Don't run ./gradlew dependencies or other shell commands to resolve versions.
  2. Wear OS Compose Material3 version: If an internal tool is available to establish the latest stable version {VERSION} of androidx.wear.compose:compose-material3, use that tool.
  3. Strict compliance: If a version is listed as stable, you MUST use it, unless overridden by the user. Do not downgrade based on initial "Unresolved reference" errors in the editor or outdated web search results.
  4. Kotlin & Compose compiler: Use Kotlin 2.0.0+ with the org.jetbrains.kotlin.plugin.compose Gradle plugin.
  5. Min SDK: Ensure minSdk is at least 25.
  6. Compile SDK & AGP: Ensure compileSdk and AGP meet the library's AAR metadata floors (compileSdk >= 35 and AGP >= 8.6.0 for 1.6.x; compileSdk >= 37 and AGP >= 9.1.0 for 1.7.x).

Gotchas

  1. Mandatory sync and validation: After updating versions in libs.versions.toml or build.gradle.kts, perform a Gradle sync (or ./gradlew assembleDebug) before refactoring, and run ./gradlew assembleDebug after refactoring to verify the build.
  2. Prohibition of guessing (error protocol): If you encounter an 'Unresolved Reference' or API mismatch after a successful sync, do not attempt to 'fix' it by downgrading the library version.

Capabilities and tools

Capability 1: Migration, updates, and adding features

Use this guidance when migrating from an older version of Wear OS Compose or Horologist, updating an existing Wear Compose Material3 project, or adding features.

  1. Unless otherwise indicated by the developer, use the latest stable version of Wear Compose Material3 from {VERSION} (superseding any literal version strings in the migration guide).
  2. When migrating from Material 2.5 or Horologist, read the migration guide and use its official component mappings.
  3. Before refactoring any component (for example, Chip -> Button), check the parameter names, slot types, and "Expressive" design tokens.
  4. Do not use the Horologist Composables, Compose Layout, or Compose Material libraries; replace Horologist components with Wear Compose M3 equivalents (AppScaffold -> M3 AppScaffold, ScreenScaffold -> M3 ScreenScaffold, ScalingLazyColumn -> TransformingLazyColumn, ResponsiveListHeader -> ListHeader, PagerScreen -> HorizontalPagerScaffold, Chip -> Button, Confirmation -> ConfirmationDialog).
  5. Always check against the component guidance in Capability 3.
  6. Expect screenshot tests to fail when migrating or updating components: expected defaults for padding and positioning will have changed. Do not seek to artificially match the previous screenshot, but give preference to the Material3 defaults.
Capability 2: Component samples

Use this table of reference to find canonical samples for Wear Compose components. When working with a Wear Compose component, you must use the samples linked from the table to ensure you know how to correctly use it.

Important: Symbols marked with [alpha], [beta], or [rc] are only available in that pre-release track and are not in stable {VERSION}. Do not use them unless the project explicitly targets that pre-release version.

Material 3 components in androidx.wear.compose.material3.*
Component / SymbolReference Samples
AlertDialog, AlertDialogDefaultsAlertDialogSample
AnimatedPage, HorizontalPagerScaffold, VerticalPagerScaffoldOneHandedGestureSamples, PageIndicatorSample, PagerScaffoldSample
AnimatedText, rememberAnimatedTextFontRegistryAnimatedTextSample
AppCardCardSample
AppScaffoldListHeaderSample, PagerScaffoldSample, ScaffoldSample, SurfaceTransformationSample, TransformingLazyColumnNotificationsSample, TransformingLazyColumnSample
ArcProgressIndicator, ArcProgressIndicatorDefaults, CircularProgressIndicator, CircularProgressIndicatorDefaults, ProgressIndicatorDefaults, SegmentedCircularProgressIndicator, drawCircularProgressIndicatorProgressIndicatorSample
ButtonAlertDialogSample, AnimatedTextSample, ButtonGroupSample, ButtonSample, DatePickerSample, DynamicColorSchemeSample, FadingExpandingLabelSample, ListHeaderSample, OneHandedGestureSamples, PageIndicatorSample, PagerScaffoldSample, PickerSample, ScaffoldSample, ScrollIndicatorSample, StepperSample, SurfaceTransformationSample, SwipeDismissableSceneStrategySample, SwipeToRevealSample, TimePickerSample, TransformationSpecSample, TransformingLazyColumnSample, TransformingLazyColumnSample
ButtonDefaultsButtonSample, CurvedTextSamples, DynamicColorSchemeSample, EdgeButtonSample, ListHeaderSample, OneHandedGestureSamples, PlaceholderSample, ScaffoldSample, ScrollAwaySample, ScrollIndicatorSample, SurfaceTransformationSample, TextButtonSample, TransformationSpecSample, TransformingLazyColumnSample, TransformingLazyColumnSample
ButtonGroupButtonGroupSample, TransformationSpecSample
CardCardSample, SwipeDismissableSceneStrategySample, SwipeToRevealSample, TransformingLazyColumnSample
CardDefaultsCardSample, SurfaceTransformationSample, SwipeToRevealSample, TransformingLazyColumnSample, TransformingLazyColumnSample
CheckboxButtonCheckboxButtonSample, SwipeToDismissBoxSample
ChildButton, OutlinedButtonButtonSample
ColorScheme, dynamicColorSchemeDynamicColorSchemeSample
CompactButton, CompactButtonDefaultsButtonSample, TransformingLazyColumnSample
ConfirmationDialog, ConfirmationDialogDefaults, FailureConfirmationDialog, SuccessConfirmationDialog, confirmationDialogCurvedTextConfirmationDialogSample
CurvedTextDefaultsCurvedTextSamples
DatePicker, DatePickerTypeDatePickerSample
EdgeButtonEdgeButtonSample, OneHandedGestureSamples, ScaffoldSample, SwipeDismissableSceneStrategySample, TransformingLazyColumnSample
EdgeButtonSizeEdgeButtonSample
FadingExpandingLabelFadingExpandingLabelSample
FilledIconButton, FilledTonalIconButton, IconButtonColors, IconButtonShapes, OutlinedIconButtonIconButtonSample
FilledTonalButtonAlertDialogSample, ButtonSample, ConfirmationDialogSample, OpenOnPhoneDialogSample, PlaceholderSample, ScrollAwaySample, SwipeToDismissBoxSample
HorizontalPageIndicator, VerticalPageIndicatorPageIndicatorSample
IconAlertDialogSample, ButtonSample, CardSample, CheckboxButtonSample, ConfirmationDialogSample, CurvedTextSamples, DatePickerSample, EdgeButtonSample, IconButtonSample, ListHeaderSample, PlaceholderSample, ProgressIndicatorSample, RadioButtonSample, SwipeToRevealSample, SwitchButtonSample, TimePickerSample
IconButtonIconButtonSample, LevelIndicatorSample, ProgressIndicatorSample
IconButtonDefaultsIconButtonSample, ProgressIndicatorSample
IconToggleButton, IconToggleButtonDefaultsIconToggleButtonSample
LevelIndicatorLevelIndicatorSample
LinearProgressIndicatorLinearProgressIndicatorSample
ListHeaderListHeaderSample, ScrollAwaySample, SwipeDismissableSceneStrategySample, TransformingLazyColumnNotificationsSample, TransformingLazyColumnSample
ListHeaderDefaultsListHeaderSample, ScrollAwaySample, TransformingLazyColumnSample
ListSubHeaderListHeaderSample
LocalOneHandedGestureEnabled [rc], OneHandedGestureDefaults [rc], OneHandedGestureHorizontalPageIndicator [rc], OneHandedGesturePageIndicatorState [rc], OneHandedGesturePriority [rc], OneHandedGestureScrollIndicator [rc], OneHandedGestureScrollIndicatorState [rc], OneHandedGestureVerticalPageIndicator [rc]OneHandedGestureSamples
MaterialThemeAlertDialogSample, ButtonSample, CardSample, CurvedTextSamples, DynamicColorSchemeSample, LinearProgressIndicatorSample, PagerScaffoldSample, ProgressIndicatorSample, SwipeToDismissBoxSample, TimeTextSample, TransformingLazyColumnNotificationsSample
OneHandedGestureAction [rc], OneHandedGestureClickIndicator [rc], OneHandedGestureClickIndicatorState [rc], oneHandedGesture [rc], rememberOneHandedGestureConfiguration [rc]ButtonSample, CardSample, OneHandedGestureSamples
OpenOnPhoneDialog, OpenOnPhoneDialogDefaults, openOnPhoneDialogCurvedTextOpenOnPhoneDialogSample
OutlinedCardCardSample, TransformingLazyColumnSample
PagerScaffoldDefaultsPageIndicatorSample, PagerScaffoldSample
PickerPickerSample
PickerGroupPickerGroupSample
RadioButton, SplitRadioButtonRadioButtonSample
ResponsiveTransformationSpec, TransformationVariableSpecSurfaceTransformationSample, TransformationSpecSample
RevealValue, SwipeToReveal, SwipeToRevealDefaults, rememberRevealStateSwipeToRevealSample
ScreenScaffoldListHeaderSample, OneHandedGestureSamples, PagerScaffoldSample, ScaffoldSample, SurfaceTransformationSample, SwipeDismissableSceneStrategySample, TransformingLazyColumnNotificationsSample, TransformingLazyColumnSample
ScreenScaffoldDefaults, ScrollIndicatorScrollIndicatorSample
ScreenStage, scrollAwayScrollAwaySample
Slider, SliderDefaultsSliderSample
SplitCheckboxButtonCheckboxButtonSample
SplitSwitchButtonSwitchButtonSample
Stepper, StepperLevelIndicator, rangeSemanticsStepperSample
StepperDefaultsLevelIndicatorSample, StepperSample
SurfaceTransformationAlertDialogSample, DynamicColorSchemeSample, ListHeaderSample, ScaffoldSample, SurfaceTransformationSample, SwipeDismissableSceneStrategySample, TransformationSpecSample, TransformingLazyColumnNotificationsSample, TransformingLazyColumnSample, TransformingLazyColumnSample
SwipeToDismissBoxSwipeToDismissBoxSample
SwitchButtonAlertDialogSample, OneHandedGestureSamples, SwitchButtonSample
TextAlertDialogSample, AnimatedTextSample, ButtonGroupSample, ButtonSample, CardSample, CheckboxButtonSample, ConfirmationDialogSample, DatePickerSample, DynamicColorSchemeSample, EdgeButtonSample, ListHeaderSample, OneHandedGestureSamples, OpenOnPhoneDialogSample, PageIndicatorSample, PagerScaffoldSample, PickerGroupSample, PickerSample, PlaceholderSample, RadioButtonSample, ScaffoldSample, ScrollAwaySample, ScrollIndicatorSample, StepperSample, SurfaceTransformationSample, SwipeDismissableSceneStrategySample, SwipeToDismissBoxSample, SwipeToRevealSample, SwitchButtonSample, TextButtonSample, TextToggleButtonSample, TimePickerSample, TransformationSpecSample, TransformingLazyColumnNotificationsSample, TransformingLazyColumnSample
TextButtonTextButtonSample
TextButtonDefaultsTextButtonSample, TextToggleButtonSample
TextToggleButton, TextToggleButtonDefaults, touchTargetAwareSizeTextToggleButtonSample
TimePicker, TimePickerTypeTimePickerSample
TimeTextScrollAwaySample, ScrollIndicatorSample, TimeTextSample
TimeTextDefaults, timeTextCurvedTextTimeTextSample
TitleCardCardSample, SurfaceTransformationSample, SwipeDismissableSceneStrategySample, SwipeToRevealSample, TransformingLazyColumnNotificationsSample, TransformingLazyColumnSample
TransformationSpecTransformationSpecSample
curvedTextCurvedTextSamples, ScrollAwaySample, TimeTextSample
firstVisibleItemLayoutItemInfo [rc], layoutItemInfoOf [rc], rememberTransformingLazyColumnFirstLayoutItemProvider [rc]TransformingLazyColumnSample
placeholder, placeholderShimmer, rememberPlaceholderStatePlaceholderSample
rememberPickerStatePickerGroupSample, PickerSample
rememberTransformationSpec, transformedHeightAlertDialogSample, DynamicColorSchemeSample, ListHeaderSample, ScaffoldSample, SurfaceTransformationSample, SwipeDismissableSceneStrategySample, SwipeToRevealSample, TransformationSpecSample, TransformingLazyColumnNotificationsSample, TransformingLazyColumnSample, TransformingLazyColumnSample
timeTextSeparatorScrollAwaySample, TimeTextSample
Show full SKILL.md (596 more words)Show less
Foundation components in androidx.wear.compose.foundation.*
Component / SymbolReference Samples
AmbientMode, LocalAmbientModeManager, rememberAmbientModeManagerAmbientModeSample, OneHandedGestureSamples
AmbientTickEffectAmbientModeSample
BasicSwipeToDismissBoxSwipeToDismissBoxSample
CurvedAlignment, CurvedTextStyle, angularGradientBackground, angularSize, basicCurvedText, clearAndSetSemantics, curvedColumn, padding, radialGradientBackground, radialSize, semantics, sizeCurvedWorldSample
CurvedDirection, CurvedLayout, angularSizeDp, background, curvedBox, curvedComposable, curvedRowCurvedTextSamples, CurvedWorldSample
CurvedModifierCurvedTextSamples, CurvedWorldSample, TimeTextSample
HorizontalPager, VerticalPager, rememberPagerStateOneHandedGestureSamples, PageIndicatorSample, PagerSamples, PagerScaffoldSample
PagerDefaultsPagerScaffoldSample
RotaryScrollableDefaultsPagerScaffoldSample, RotarySamples, TransformingLazyColumnSample
RotarySnapLayoutInfoProvider, rotaryScrollableRotarySamples
ScrollInfoProviderScrollAwaySample
SwipeToDismissValue, edgeSwipeToDismiss, rememberSwipeToDismissBoxStateSwipeToDismissBoxSample, SwipeToDismissBoxSample
TransformingLazyColumnDynamicColorSchemeSample, ListHeaderSample, OneHandedGestureSamples, ScaffoldSample, ScrollAwaySample, ScrollIndicatorSample, SurfaceTransformationSample, SwipeDismissableSceneStrategySample, SwipeToRevealSample, TransformationSpecSample, TransformingLazyColumnNotificationsSample, TransformingLazyColumnSample, TransformingLazyColumnSample
TransformingLazyColumnDefaultsTransformingLazyColumnSample
TransformingLazyColumnItemScrollProgressTransformationSpecSample
expandableButton, expandableItem, expandableItems, rememberExpandableStateExpandableSample
hierarchicalFocusGroupHierarchicalFocusSample
itemsSwipeDismissableSceneStrategySample, SwipeToRevealSample, TransformingLazyColumnNotificationsSample
itemsIndexedTransformingLazyColumnSample
rememberTransformingLazyColumnStateListHeaderSample, OneHandedGestureSamples, ScaffoldSample, ScrollAwaySample, ScrollIndicatorSample, SurfaceTransformationSample, SwipeDismissableSceneStrategySample, SwipeToRevealSample, TransformingLazyColumnNotificationsSample, TransformingLazyColumnSample, TransformingLazyColumnSample
requestFocusOnHierarchyActiveHierarchicalFocusSample, RotarySamples
weightCurvedWorldSample, TimeTextSample
Navigation 3 components in androidx.wear.compose.navigation3.*
Component / SymbolReference Samples
rememberSwipeDismissableSceneStrategySwipeDismissableSceneStrategySample
Capability 3: Component guidance

Mandatory: Use this capability as a checklist against any component use. It provides more holistic guidance on how to use each component in practice, beyond the component syntax.

  1. AppScaffold and ScreenScaffold

    • [ ] Use AppScaffold as the outer container, with ScreenScaffold children.
    • [ ] Use only ONE AppScaffold and any number of ScreenScaffold.
  2. ScalingLazyColumn - Use TransformingLazyColumn instead.

  3. TransformingLazyColumn - You will need the following imports:

    kotlin
    import androidx.wear.compose.foundation.lazy.TransformingLazyColumn
    import androidx.wear.compose.foundation.lazy.TransformingLazyColumnDefaults
    import androidx.wear.compose.foundation.lazy.rememberTransformingLazyColumnState
    // ...
    import androidx.wear.compose.material3.lazy.rememberTransformationSpec
    import androidx.wear.compose.material3.lazy.transformedHeight
    <br />

    Canonical example:

    kotlin
    val columnState = rememberTransformingLazyColumnState()
    val transformationSpec = rememberTransformationSpec()
    ScreenScaffold(
        scrollState = columnState
    ) { contentPadding ->
        TransformingLazyColumn(
            state = columnState,
            contentPadding = contentPadding
        ) {
            item {
                ListHeader(
                    modifier = Modifier
                        .fillMaxWidth()
                        .transformedHeight(this, transformationSpec)
                        .minimumVerticalContentPadding(ListHeaderDefaults.minimumTopListContentPadding),
                    transformation = SurfaceTransformation(transformationSpec)
                ) {
                    Text(text = "Header")
                }
            }
            // ... other items
            item {
                Button(
                    modifier = Modifier
                        .fillMaxWidth()
                        .transformedHeight(this, transformationSpec)
                        .minimumVerticalContentPadding(ButtonDefaults.minimumVerticalListContentPadding),
                    transformation = SurfaceTransformation(transformationSpec),
                    onClick = { /* ... */ },
                    icon = {
                        Icon(
                            imageVector = Icons.Default.Build,
                            contentDescription = "build",
                        )
                    },
                ) {
                    Text(
                        text = "Build",
                        maxLines = 1,
                        overflow = TextOverflow.Ellipsis,
                    )
                }
            }
        }
    }
    <br />
    • [ ] Use TransformingLazyColumn instead of ScalingLazyColumn.
    • [ ] You must pass the contentPadding parameter from ScreenScaffold to the TransformingLazyColumn.
    • [ ] Use the minimumVerticalContentPadding modifier to achieve required padding top and bottom.
      • This expects a value from defaults, such as ButtonDefaults, CardDefaults, ListHeaderDefaults.
      • Note: This is a scoped modifier available within TransformingLazyColumnItemScope.
    • [ ] Ensure items morph and scale (apply to components within TransformingLazyColumn, not the list itself):
      • [ ] Use Modifier.transformedHeight(this, transformationSpec).
      • [ ] Use transformation = SurfaceTransformation(transformationSpec).
    • [ ] If configuring a list for snapping, use flingBehavior and rotaryScrollableBehavior together:
    kotlin
    val columnState = rememberTransformingLazyColumnState()
    ScreenScaffold(scrollState = columnState) { contentPadding ->
        TransformingLazyColumn(
            state = columnState,
            flingBehavior = TransformingLazyColumnDefaults.snapFlingBehavior(columnState),
            rotaryScrollableBehavior = RotaryScrollableDefaults.snapBehavior(columnState)
        ) {
            // ...
            // ...
        }
    }
    <br />
  4. ScreenScaffold

    • [ ] Guard the scrollIndicator with !LocalScrollCaptureInProgress.current (androidx.compose.ui.platform).
  5. EdgeButton

    • [ ] Do NOT use as the final item within a TransformingLazyColumn. Instead, use the slot in ScreenScaffold.
    • [ ] When used in a TransformingLazyColumn, add the required overscroll behavior:
    kotlin
    val columnState = rememberTransformingLazyColumnState()
    ScreenScaffold(
        scrollState = columnState,
        edgeButton = {
            EdgeButton(
                onClick = { /* TODO */ },
                modifier = Modifier.scrollable(
                    columnState,
                    orientation = Orientation.Vertical,
                    reverseDirection = true,
                    // Apply overscroll to the EdgeButton for proper scrolling behavior.
                    overscrollEffect = rememberOverscrollEffect(),
                )
            ) {
                Text("More")
            }
        }
    ) { contentPadding ->
        TransformingLazyColumn(
            contentPadding = contentPadding,
            state = columnState,
        ) {
            // ...
            // ...
        }
    }
    <br />
  6. Column

    • [ ] USE as a direct child of ScreenScaffold if the screen will never scroll, even with the largest system font.
    • [ ] Use TransformingLazyColumn instead for all other cases.
  7. Styles

    • [ ] Do NOT hard-code text sizes, use typography from MaterialTheme.
    • [ ] Do NOT hard-code colors, use colorScheme from MaterialTheme.
  8. Use component defaults:

    • [ ] Components such as Button have a corresponding ButtonDefaults object.
    • [ ] Check for and use the *Defaults object for any component when working with padding and styling values, in preference to hard-coded values.
  9. Use Wear-specific preview annotations (androidx.wear.compose.ui.tooling.preview):

    • [ ] @WearPreviewDevices
    • [ ] @WearPreviewFontScales
    • [ ] Ensure the androidx.wear.compose:compose-ui-tooling dependency is included.
  10. Ambient mode

    • [ ] Use LocalAmbientModeManager (provided by CompositionLocalProvider and rememberAmbientModeManager()) instead of AmbientLifecycleObserver.
  11. Navigation

    • [ ] When adding navigation fresh, use Navigation3 (androidx.wear.compose:compose-navigation3).
    • [ ] Use rememberSwipeDismissableSceneStrategy() / SwipeDismissableSceneStrategy (androidx.wear.compose.navigation3).
  12. Comments

    • [ ] Where any Kotlin file has been modified, ensure that the existing comments are up to date and accurately reflect any changes to the implementation.
  13. HorizontalPager or VerticalPager

    • [ ] Use the Composable hierarchy in this order: AppScaffold, HorizontalPagerScaffold, HorizontalPager, AnimatedPage, ScreenScaffold. Or similarly for VerticalPager.

© rosuH, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 53 other files (references) in skills/wear-compose-m3 of rosuH/EasyWatermark.

  • SKILL.md
  • references/android/training/wearables/compose/migrate-to-material3.md
  • references/foundation/AmbientModeSample.kt.md
  • references/foundation/CurvedWorldSample.kt.md
  • references/foundation/ExpandableSample.kt.md
  • references/foundation/HierarchicalFocusSample.kt.md
  • references/foundation/PagerSamples.kt.md
  • references/foundation/RotarySamples.kt.md
  • references/foundation/SwipeToDismissBoxSample.kt.md
  • references/foundation/TransformingLazyColumnSample.kt.md
  • references/material3/AlertDialogSample.kt.md
  • references/material3/AnimatedTextSample.kt.md
  • references/material3/ButtonGroupSample.kt.md
  • references/material3/ButtonSample.kt.md
  • … and 40 more

Open the folder on GitHubat commit 61223db

Used in 1 other repository

We found 3 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in rosuH/EasyWatermark, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Wear Compose M3 next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Wear Compose M3 compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Wear Compose M3 this skillrosuH/EasyWatermark1.9k1 repos~9.8kAutomated safety check: PassMIT
Android Developmentdpconde/claude-android-skill336—~1.7kAutomated safety check: PassMIT
Claude Android NinjaDrjacky/claude-android-ninja124—~5.2kAutomated safety check: PassApache-2.0
Expo Brownfield Integrationmweinbach/agent-coworker1562 repos~900Automated safety check: NotesCustom licence
Wear Compose M3jameshnsears/QuoteUnquote1001 repos~3.2kAutomated safety check: PassApache-2.0
Build Foremannekomangaorg/Neko2.8k—~807Automated safety check: PassApache-2.0

Similar skills

  • Android Development

    dpconde/claude-android-skill

    Create production-quality Android applications following Google's official architecture guidance and NowInAndroid best practices.

    336 GitHub stars~1.7k tokensUpdated 10 mo ago
    MobileAuto-check passed
  • Claude Android Ninja

    Drjacky/claude-android-ninja

    Build and migrate Android apps with Kotlin, Jetpack Compose, MVVM, Hilt, Room 3 (KSP, SQLiteDriver, Flow/suspend DAOs), Navigation3, and multi-module Gradle.

    124 GitHub stars~5.2k tokensUpdated 8 days ago
    MobileAuto-check passed
  • Expo Brownfield Integration

    mweinbach/agent-coworker

    Helps add Expo and React Native to an existing native iOS or Android app, and choose between a prebuilt AAR or XCFramework and a fully integrated build.

    156 GitHub starsUsed in 2 repos~900 tokens
    MobileAuto-check: notes
  • Wear Compose M3

    jameshnsears/QuoteUnquote

    Expert guidance for working with Wear OS Compose Material3. An agent skill from jameshnsears/QuoteUnquote.

    100 GitHub starsUsed in 1 repo~3.2k tokens
    MobileAuto-check passed
  • Build Foreman

    nekomangaorg/Neko

    Optimizes Gradle build scripts, compilation times, and Android Studio sync performance.

    2.8k GitHub stars~807 tokensUpdated today
    MobileAuto-check passed
  • Android Audio E2E

    hyochan/react-native-nitro-sound

    Build and run device-backed Android end-to-end checks for react-native-nitro-sound permissions, recording, playback, listeners, pause/resume, seek, speed, audio focus, lifecycle behavior, and rapid…

    961 GitHub stars~814 tokensUpdated 7 days ago
    MobileAuto-check passed

More from rosuH/EasyWatermark

All 28 skills in this repo
  • Deferring State Reads

    rosuH/EasyWatermark

    A skill your agent uses to push frequently-changing Jetpack Compose state reads (scroll position, animation values, drag offsets) out of the Composition phase and down into Layout or Draw using…

    1.9k GitHub starsUsed in 1 repo~3.8k tokens
    Auto-check passed
  • Diagnosing Compose Stability

    rosuH/EasyWatermark

    A skill your agent uses to diagnose Jetpack Compose stability problems by enabling and reading the Compose Compiler Reports (classes.txt, composables.txt, composables.csv, module.json).

    1.9k GitHub starsUsed in 1 repo~3.3k tokens
    Auto-check passed
  • Generating Baseline Profiles

    rosuH/EasyWatermark

    A skill your agent uses to generate and measure Jetpack Compose Baseline Profiles end-to-end with the AGP 8.2+ Baseline Profile Generator module and the Macrobenchmark harness.

    1.9k GitHub starsUsed in 1 repo~5k tokens
    Auto-check passed
  • Migrating To Modifier Node

    rosuH/EasyWatermark

    A skill your agent uses to author new custom Jetpack Compose modifiers and migrate legacy ones from Modifier.composed { } to Modifier.Node + ModifierNodeElement<T.

    1.9k GitHub starsUsed in 1 repo~5k tokens
    Auto-check passed
  • ML Kit Genai Prompt API

    rosuH/EasyWatermark

    Analyzes Android codebases to implement ML Kit GenAI Prompt API.

    1.9k GitHub starsUsed in 1 repo~1k tokens
    Auto-check passed
  • Stabilizing Compose Types

    rosuH/EasyWatermark

    A skill your agent uses to fix unstable Jetpack Compose types once a stability diagnosis has identified them.

    1.9k GitHub starsUsed in 1 repo~4.4k tokens
    Auto-check passed

Categories

Questions about Wear Compose M3

What does Wear Compose M3 do?

Guidance for Wear OS Compose Material3 (Wear Compose Material 3 / Wear Compose Material3) watch and wearable apps. Wear Compose M3 is an agent skill from rosuH/EasyWatermark. Guidance for Wear OS Compose Material3 (Wear Compose Material 3 / Wear Compose Material3) watch and wearable apps.

When should I use Wear Compose M3?

Wear Compose M3 fits situations like: mobile work in your project.

How do I install Wear Compose M3 in Claude Code?

Run `npx skills add rosuH/EasyWatermark --skill wear-compose-m3 -a claude-code`. Or copy the skill folder (skills/wear-compose-m3 in rosuH/EasyWatermark) into .claude/skills/wear-compose-m3 in your project. Claude Code loads it when a task matches its description.

How do I install Wear Compose M3 in Codex?

Run `npx skills add rosuH/EasyWatermark --skill wear-compose-m3 -a codex`. Or copy the skill folder (skills/wear-compose-m3 in rosuH/EasyWatermark) into .agents/skills/wear-compose-m3 in your project. Codex loads it when a task matches its description.

Can I use Wear Compose M3 in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add rosuH/EasyWatermark --skill wear-compose-m3 -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/wear-compose-m3, .gemini/skills/wear-compose-m3, .github/skills/wear-compose-m3 and .opencode/skills/wear-compose-m3 in your project.

What does Wear Compose M3 need to run?

SKILL.md names no scripts, command-line tools or credentials: Wear Compose M3 is instructions for the agent only.

Does Wear Compose M3 access the network?

SKILL.md names 1 domain. As links in the text: dl.google.com. This is read from the text; nothing was executed.

Is Wear Compose M3 safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Wear Compose M3 use?

Wear Compose M3 is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Wear Compose M3 use?

About 9.8k tokens (SKILL.md is roughly 39k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 105k tokens, read only when the agent opens those files.

What are the alternatives to Wear Compose M3?

Skills that share tags, products or a category with Wear Compose M3: Android Development (dpconde/claude-android-skill, 336 stars), Claude Android Ninja (Drjacky/claude-android-ninja, 124 stars), Expo Brownfield Integration (mweinbach/agent-coworker, 156 stars) and Wear Compose M3 (jameshnsears/QuoteUnquote, 100 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Wear Compose M3?

rosuH (a GitHub user) maintains it in rosuH/EasyWatermark, which has 1,894 GitHub stars. The repository holds 28 skills in this directory. The repository was last updated on October 6, 2026.

Source: rosuH/EasyWatermark on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.