hoangnguyen0403/android-edge-to-edge
Migrate a Jetpack Compose app to edge-to-edge display and fix system bar inset issues. Use when UI components are obscured by navigation/status bars, fixing IME insets, or enabling edge-to-edge for SDK 35+.
npx skills add https://github.com/HoangNguyen0403/agent-skills-standard --skill android-edge-to-edge
Structured workflow for migrating a Compose app to edge-to-edge display.
compileSdk to 35.enableEdgeToEdge(), plan to add it.TextField/OutlinedTextField is present, plan IME inset handling.enableEdgeToEdge() before setContent in every Activity.onCreate.android:windowSoftInputMode="adjustResize" in AndroidManifest for Activities with soft keyboard.Choose ONE method per component to avoid double padding:
PaddingValues to content lambda.TopAppBar, NavigationBar, etc.).Modifier.safeDrawingPadding() or windowInsetsPadding.See inset patterns for RIGHT/WRONG code examples.
For Activities with soft keyboard:
adjustResize in manifest (NOT deprecated SOFT_INPUT_ADJUST_RESIZE).imePadding() or fitInside(WindowInsetsRulers.Ime.current) to content container.imePadding BEFORE verticalScroll().See inset patterns for IME-specific RIGHT/WRONG patterns.
contentPadding of LazyColumn/LazyRow, NOT as Modifier.padding() on parent.safeDrawingPadding().Activity calls enableEdgeToEdge().adjustResize set in AndroidManifest for keyboard Activities.contentPadding../gradlew build succeeds.contentWindowInsets = WindowInsets.safeDrawing with imePadding() on the same content — causes double padding when IME opens.contentPadding, not parent Modifier.padding() — parent padding clips scrolling content.SOFT_INPUT_ADJUST_RESIZE: Deprecated. Use manifest adjustResize attribute.Take hoangnguyen0403/android-edge-to-edge from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.