Install any skill in seconds. Free to start, no credit card required.
Get Started Free →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+.
.claude/skills/hoangnguyen0403-android-edge-to-edge/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 10% | 0% |
| case-12 | ✗→✓ | ▲ Improved | -11% | 0% |
| case-16 | ✗→✓ | ▲ Improved | 14% | 0% |
| case-17 | ✗→✓ | ▲ Improved | -25% | 0% |
| case-05 | ✓→✓ | = Same ✓ | -3% | 0% |
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.| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-05 | pass→pass | 13,706 | 9,308 | -32% | 1 | 1 | 0% | 2,658 | 2,588 | -3% | 0 | 0 | — |
case-01 | fail→fail | 20,986 | 8,835 | -58% | 1 | 1 | 0% | 4,265 | 2,357 | -45% | 0 | 0 | — |
case-02 | fail→pass | 14,899 | 11,831 | -21% | 1 | 1 | 0% | 2,885 | 3,186 | +10% | 0 | 0 | — |
case-03 | pass→pass | 13,153 | 10,669 | -19% | 1 | 1 | 0% | 2,074 | 2,847 | +37% | 0 | 0 | — |
case-04 | pass→pass | 15,569 | 10,609 | -32% | 1 | 1 | 0% | 2,900 | 2,759 | -5% | 0 | 0 | — |
case-06 | pass→pass | 9,599 | 4,670 | -51% | 1 | 1 | 0% | 1,626 | 1,489 | -8% | 0 | 0 | — |
case-07 | fail→fail | 11,759 | 2,939 | -75% | 1 | 1 | 0% | 2,208 | 1,111 | -50% | 0 | 0 | — |
case-08 | pass→pass | 10,532 | 3,226 | -69% | 1 | 1 | 0% | 1,644 | 1,283 | -22% | 0 | 0 | — |
case-09 | pass→pass | 10,253 | 8,510 | -17% | 1 | 1 | 0% | 1,873 | 2,073 | +11% | 0 | 0 | — |
case-10 | pass→pass | 7,749 | 5,504 | -29% | 1 | 1 | 0% | 1,399 | 1,712 | +22% | 0 | 0 | — |
case-11 | pass→pass | 11,582 | 8,695 | -25% | 1 | 1 | 0% | 2,164 | 2,549 | +18% | 0 | 0 | — |
case-12 | fail→pass | 10,980 | 5,042 | -54% | 1 | 1 | 0% | 1,908 | 1,703 | -11% | 0 | 0 | — |
case-13 | pass→pass | 10,455 | 7,321 | -30% | 1 | 1 | 0% | 2,053 | 2,053 | 0% | 0 | 0 | — |
case-14 | fail→fail | 8,947 | 6,411 | -28% | 1 | 1 | 0% | 1,607 | 1,890 | +18% | 0 | 0 | — |
case-15 | pass→pass | 9,089 | 5,165 | -43% | 1 | 1 | 0% | 1,703 | 1,638 | -4% | 0 | 0 | — |
case-21 | fail→fail | 10,007 | 4,276 | -57% | 1 | 1 | 0% | 1,788 | 1,477 | -17% | 0 | 0 | — |
case-16 | fail→pass | 5,578 | 3,383 | -39% | 1 | 1 | 0% | 1,072 | 1,223 | +14% | 0 | 0 | — |
case-17 | fail→pass | 7,135 | 1,719 | -76% | 1 | 1 | 0% | 1,265 | 943 | -25% | 0 | 0 | — |
case-18 | pass→pass | 7,504 | 5,007 | -33% | 1 | 1 | 0% | 1,384 | 1,616 | +17% | 0 | 0 | — |
case-19 | pass→pass | 9,731 | 4,104 | -58% | 1 | 1 | 0% | 1,888 | 1,483 | -21% | 0 | 0 | — |
case-20 | pass→pass | 6,947 | 4,551 | -34% | 1 | 1 | 0% | 1,299 | 1,489 | +15% | 0 | 0 | — |
case-22 | pass→pass | 6,559 | 2,733 | -58% | 1 | 1 | 0% | 1,120 | 1,188 | +6% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +18 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.