diff --git a/build/agp/agp-9-upgrade/SKILL.md b/build/agp/agp-9-upgrade/SKILL.md
index e39dd14..c021a22 100644
--- a/build/agp/agp-9-upgrade/SKILL.md
+++ b/build/agp/agp-9-upgrade/SKILL.md
@@ -6,7 +6,7 @@ description: Upgrades, or migrates, an Android project to use Android Gradle Plu
license: Complete terms in LICENSE.txt
metadata:
author: Google LLC
- last-updated: '2026-04-17'
+ last-updated: '2026-06-03'
keywords:
- Android Gradle Plugin 9
- AGP 9
diff --git a/identity/verified-email/SKILL.md b/identity/verified-email/SKILL.md
index 6e4a9fa..872570e 100644
--- a/identity/verified-email/SKILL.md
+++ b/identity/verified-email/SKILL.md
@@ -8,7 +8,7 @@ description: Provides a complete workflow for implementing verified email retrie
license: Complete terms in LICENSE.txt
metadata:
author: Google LLC
- last-updated: '2026-05-16'
+ last-updated: '2026-05-22'
keywords:
- implementation
- Android
diff --git a/identity/verified-email/references/android/identity/digital-credentials/email-verification-implementation.md b/identity/verified-email/references/android/identity/digital-credentials/email-verification-implementation.md
index e1d5b32..e34dc18 100644
--- a/identity/verified-email/references/android/identity/digital-credentials/email-verification-implementation.md
+++ b/identity/verified-email/references/android/identity/digital-credentials/email-verification-implementation.md
@@ -1,3 +1,7 @@
+> [!IMPORTANT]
+> **Important:** We released an agent skill to help you implement email verification with the Digital Credentials API. Try out the skill from the [Android skills
+> repository](https://github.com/android/skills).
+
This guide describes how to implement verified email retrieval using the
[Digital Credentials Verifier API](https://developer.android.com/identity/digital-credentials/credential-verifier) through an [OpenID for Verifiable
Presentations (OpenID4VP)](https://openid.net/specs/openid-4-verifiable-presentations-1_0.html) request.
diff --git a/jetpack-compose/theming/styles/SKILL.md b/jetpack-compose/theming/styles/SKILL.md
index 70d3d44..ac12ecb 100644
--- a/jetpack-compose/theming/styles/SKILL.md
+++ b/jetpack-compose/theming/styles/SKILL.md
@@ -8,7 +8,7 @@ description: Use this skill to integrate the Jetpack Compose Styles API into an
license: Complete terms in LICENSE.txt
metadata:
author: Google LLC
- last-updated: '2026-05-19'
+ last-updated: '2026-05-30'
keywords:
- Jetpack Compose
- Styles
diff --git a/jetpack-compose/theming/styles/references/android/develop/ui/compose/styles/fundamentals.md b/jetpack-compose/theming/styles/references/android/develop/ui/compose/styles/fundamentals.md
index 5361bf5..4a61620 100644
--- a/jetpack-compose/theming/styles/references/android/develop/ui/compose/styles/fundamentals.md
+++ b/jetpack-compose/theming/styles/references/android/develop/ui/compose/styles/fundamentals.md
@@ -14,8 +14,9 @@ of properties.
| Grouping | Properties | Inherited by children |
|---|---|---|
| **Layout and sizing** | | |
-| Padding | `contentPadding` (inner) and `externalPadding` (outer). Available in directional, horizontal, vertical, and all-side variants. | No |
-| Dimensions | `fillWidth/Height/Size()` and `width`, `height`, and `size` (supports `Dp`, `DpSize`, or `Float` fractions). | No |
+| Content Padding (inner) | - `contentPadding(all: Dp)` - `contentPadding(horizontal: Dp, vertical: Dp)` - `contentPadding(start: Dp, top: Dp, end: Dp, bottom: Dp)` - `contentPaddingHorizontal(value: Dp)` / `contentPaddingVertical(value: Dp)` - `contentPaddingStart(value: Dp)` / `contentPaddingTop(value: Dp)` / `contentPaddingEnd(value: Dp)` / `contentPaddingBottom(value: Dp)` | No |
+| External Padding (outer) | - `externalPadding(all: Dp)` - `externalPadding(horizontal: Dp, vertical: Dp)` - `externalPadding(start: Dp, top: Dp, end: Dp, bottom: Dp)` - `externalPaddingHorizontal(value: Dp)` / `externalPaddingVertical(value: Dp)` - `externalPaddingStart(value: Dp)` / `externalPaddingTop(value: Dp)` / `externalPaddingEnd(value: Dp)` / `externalPaddingBottom(value: Dp)` | No |
+| Dimensions | `fillWidth()/fillHeight()/fillSize()` and `width`, `height`, and `size` (supports `Dp`, `DpSize`, or `Float` fractions). | No |
| Positioning | `left/top/right/bottom` offsets. | No |
| **Visual Appearance** | | |
| Fills | `background` and `foreground` (supports `Color` or `Brush`). | No |
@@ -23,7 +24,7 @@ of properties.
| Shape | `shape` | No - but used in conjunction with other properties. `clip` and `border` use this defined shape. |
| Shadows | `dropShadow`, `innerShadow` | No |
| **Transformations** | | |
-| Graphics layer spatial movement | `translationX`, `translationY`, `scaleX/Y`, `rotationX/Y/Z` | No |
+| Graphics layer spatial movement | `translationX`, `translationY`, `scaleX/scaleY`, `rotationX/rotationY/rotationZ` | No |
| Control | `alpha`, `zIndex` (stacking order), and `transformOrigin` (pivot point) | No |
| **Typography** | | |
| Styling | `textStyle`, `fontSize`, `fontWeight`, `fontStyle`, and `fontFamily` | Yes |
@@ -82,8 +83,8 @@ Row(
-Similar to the `style` parameter, you can include properties like `background`
-or `padding` inside the lambda.
+Similar to the `style` parameter, you can include properties like `background`,
+`contentPadding`, or `externalPadding` inside the lambda.
```kotlin
diff --git a/navigation/navigation-3/SKILL.md b/navigation/navigation-3/SKILL.md
index ef1f7ff..e32b602 100644
--- a/navigation/navigation-3/SKILL.md
+++ b/navigation/navigation-3/SKILL.md
@@ -8,7 +8,7 @@ description: Learn how to install and migrate to Jetpack Navigation 3, and how t
license: Complete terms in LICENSE.txt
metadata:
author: Google LLC
- last-updated: '2026-05-15'
+ last-updated: '2026-06-02'
keywords:
- recipe
- Android
diff --git a/play/engage-sdk-integration/SKILL.md b/play/engage-sdk-integration/SKILL.md
index 7c4548d..349d48c 100644
--- a/play/engage-sdk-integration/SKILL.md
+++ b/play/engage-sdk-integration/SKILL.md
@@ -6,7 +6,7 @@ description: Helps developers integrate, debug, and resolve Play Engage SDK impl
license: Complete terms in LICENSE.txt
metadata:
author: Google LLC
- last-updated: '2026-05-15'
+ last-updated: '2026-06-02'
keywords:
- android
- engage
diff --git a/play/play-billing-library-version-upgrade/SKILL.md b/play/play-billing-library-version-upgrade/SKILL.md
index 0a63a95..4db8953 100644
--- a/play/play-billing-library-version-upgrade/SKILL.md
+++ b/play/play-billing-library-version-upgrade/SKILL.md
@@ -6,7 +6,7 @@ description: Use this skill when upgrading or migrating an Android project from
license: Complete terms in LICENSE.txt
metadata:
author: Google LLC
- last-updated: '2026-05-20'
+ last-updated: '2026-06-02'
keywords:
- android
- play billing
@@ -33,7 +33,7 @@ upgrade Play Billing Library to the latest version."
Version"** ---defined as the version where those specific APIs were **last
available**, not when they were introduced.
- **Example** : If `SkuDetails` is present, treat the baseline as **PBL v7** or earlier (regardless of the version string in `build.gradle`).
-4. **Identify Target \& Path:** Access the version tool or release notes to find the latest stable version and calculate a \[Direct/Stepped\] migration path based on the **Effective Version** baseline.
+4. **Identify Target \& Path** : Access the version tool or release notes to find the latest stable version and calculate a \[Direct/Stepped\] migration path based on the **Effective Version** baseline.
- **Calculate Migration Path** :
- If the **Effective Version** is within 2 major versions of the target: Plan a **Direct Migration**.
@@ -59,7 +59,7 @@ accomplished afterwards.*
### Step 1: SDK \& Environment Alignment
-- **Action** : Update `build.gradle` to meet SDK requirements (e.g., "PBL 8 requires `compileSdk` 35").
+- **Action** : Update `build.gradle` to meet SDK requirements (e.g., "PBL 9 requires `compileSdk` 35").
- **Gradle Version**: Verify if the new library requires a newer Android Gradle Plugin (AGP) or Kotlin version.
### Step 2: Intent-based Refactoring
@@ -78,7 +78,7 @@ string replacement.
### Step 4: Final Validation Checklist
-1. **Smart Checklist Verification:**
+1. **Smart Checklist Verification**:
2. Open [references/version-checklist.md](references/version-checklist.md) and locate the **Smart Version-Specific Checklist**.
3. **Action**: For every version between your \[Detected Effective Version\] and \[Detected New Version\], verify that every item has been addressed in the code using "Find in Files" or structural analysis.
4. **Tests** : Run all unit and implementation tests (`./gradlew test`).
diff --git a/play/play-billing-library-version-upgrade/references/migration-logic.md b/play/play-billing-library-version-upgrade/references/migration-logic.md
index ac4d9c5..227a537 100644
--- a/play/play-billing-library-version-upgrade/references/migration-logic.md
+++ b/play/play-billing-library-version-upgrade/references/migration-logic.md
@@ -63,7 +63,8 @@ checks.
### 6. SDK \& Environment Requirements
- **PBL 7.0** : Requires `compileSdk 34` or higher.
-- **PBL 8.0** : Requires `compileSdk 35`.
+- **PBL 8.0** : Requires `compileSdk 34` or higher.
+- **PBL 9.0** : Requires `compileSdk 35` or higher.
- **Kotlin** : Verify that `kotlin-stdlib` is updated to at least 1.9.x to support new library coroutine extensions.
### 7. User-Facing Features (Post-Upgrade Recommendations)
@@ -73,4 +74,5 @@ versions:
- **v7** : **Installments** (Monthly payments for annual plans).
- **v8** : **Prepaid Plans** (Users can top-up time without auto-renewing).
-- **v8** : **Personalized Pricing** (Show legal disclosure if price varies by user).
\ No newline at end of file
+- **v8** : **Personalized Pricing** (Show legal disclosure if price varies by user).
+- **v9** : **In-App Price Reviews** (Users can accept upcoming subscription price increases directly inside the app without leaving for the Play Store; capped by Google at a maximum of once every 7 days).
\ No newline at end of file
diff --git a/play/play-billing-library-version-upgrade/references/version-checklist.md b/play/play-billing-library-version-upgrade/references/version-checklist.md
index 24ffd41..98f5831 100644
--- a/play/play-billing-library-version-upgrade/references/version-checklist.md
+++ b/play/play-billing-library-version-upgrade/references/version-checklist.md
@@ -34,13 +34,21 @@ Use this checklist to verify that every technical requirement between your
## PBL v8.x Series
-- \[ \] **SDK Compliance** : `compileSdk` is set to 35.
+- \[ \] **SDK Compliance** : `compileSdk` is set to 34 or higher.
- \[ \] **Terminology Shift**: Rename "in-app items" to "one-time products" in UI/strings.
- \[ \] **Signature Enforcement** : `onProductDetailsResponse` signature MUST be `(BillingResult, QueryProductDetailsResult)`.
+- \[ \] **SUBS Offer Token** : For `SUBS` type, `ProductDetailsParams` MUST include an `offerToken`.
- \[ \] **Auto-Reconnection** : Verify `enableAutoServiceReconnection()` is used in the builder.
- \[ \] **Min SDK Increase** : Verify `minSdkVersion` is at least 23.
-## Future Versions (PBL 9.0.0+)
+## PBL v9.x Series
-- \[ \] **Dynamic Checklist Generation** : For any version \>=9.0.0, you **MUST** synthesize a new checklist for each new version header found in the [Release Notes](https://developer.android.com/google/play/billing/release-notes).
+- \[ \] **SDK Compliance** : `compileSdk` is set to 35 or higher.
+- \[ \] **API Removals** : Ensure all usages of `SkuDetails`, `SkuDetailsParams`, and `SkuDetailsResponseListener` are removed and replaced with their `ProductDetails` equivalents.
+- \[ \] **Blocked Store Error Handling** : If targeting restricted device modes (e.g., kids modes), ensure `androidx.core` is at v1.9+ and update error logic to catch `BILLING_UNAVAILABLE` instead of `ERROR`.
+- \[ \] **External Payment Program Null-Safety** : If using developer-provided billing, update `DeveloperProvidedBillingDetails.getLinkUri()` logic to explicitly check for both `null` and empty string (`""`) values before parsing.
+
+## Future Versions (PBL 10.0.0+)
+
+- \[ \] **Dynamic Checklist Generation** : For any version \>=10.0.0, you **MUST** synthesize a new checklist for each new version header found in the [Release Notes](https://developer.android.com/google/play/billing/release-notes).
- \[ \] **Identify Version Delta** : Review "Breaking Changes" and "Removed APIs" for the new version and create a list of terms to `grep`.
\ No newline at end of file
diff --git a/testing/testing-setup/SKILL.md b/testing/testing-setup/SKILL.md
index 6223de3..d92e36f 100644
--- a/testing/testing-setup/SKILL.md
+++ b/testing/testing-setup/SKILL.md
@@ -6,7 +6,7 @@ description: Analyze and create a testing strategy for native Android apps - ins
license: Complete terms in LICENSE.txt
metadata:
author: Google LLC
- last-updated: '2026-05-15'
+ last-updated: '2026-06-02'
keywords:
- android
- testing
diff --git a/testing/testing-setup/references/android/studio/preview/compose-screenshot-testing.md b/testing/testing-setup/references/android/studio/preview/compose-screenshot-testing.md
index ed72c2b..b1f7876 100644
--- a/testing/testing-setup/references/android/studio/preview/compose-screenshot-testing.md
+++ b/testing/testing-setup/references/android/studio/preview/compose-screenshot-testing.md
@@ -52,7 +52,7 @@ project must meet the following requirements:
- Android Studio Panda 1 Canary 4 or higher.
- Android Gradle Plugin (AGP) version 9.0 or higher.
-- Compose Preview Screenshot Testing plugin version [0.0.1-alpha14](https://developer.android.com/studio/preview/compose-screenshot-testing-release-notes#alpha14) or higher.
+- Compose Preview Screenshot Testing plugin version [0.0.1-alpha15](https://developer.android.com/studio/preview/compose-screenshot-testing-release-notes#alpha15) or higher.
- Kotlin version 2.2.10 or higher.
- JDK version 17 or higher.
- Compose enabled for your project. We recommend enabling Compose using the [Compose Compiler Gradle plugin](https://developer.android.com/develop/ui/compose/compiler).
@@ -61,7 +61,7 @@ If you only want to use the underlying Gradle tasks without the IDE integration,
the requirements are as follows:
- Android Gradle Plugin (AGP) version 8.5.0 or higher.
-- Compose Preview Screenshot Testing plugin version [0.0.1-alpha14](https://developer.android.com/studio/preview/compose-screenshot-testing-release-notes#alpha14) or higher.
+- Compose Preview Screenshot Testing plugin version [0.0.1-alpha15](https://developer.android.com/studio/preview/compose-screenshot-testing-release-notes#alpha15) or higher.
- Kotlin version 1.9.20 or higher. We recommend using Kotlin 2.0 or higher so you can use the Compose Compiler Gradle plugin.
- JDK version 17 or higher.
- Compose enabled for your project. We recommend enabling Compose using the [Compose Compiler Gradle plugin](https://developer.android.com/develop/ui/compose/compiler).
@@ -85,15 +85,15 @@ Preview Screenshot Testing plugin. To set up the plugin, follow these steps:
experimentalProperties["android.experimental.enableScreenshotTest"] = true
}
-3. Add the `com.android.compose.screenshot` plugin, version `0.0.1-alpha14` to
+3. Add the `com.android.compose.screenshot` plugin, version `0.0.1-alpha15` to
your project.
1. Add the plugin to your version catalogs file:
[versions]
agp = "9.0.0-rc03"
- kotlin = "2.1.20"
- screenshot = "0.0.1-alpha14"
+ kotlin = "2.2.10"
+ screenshot = "0.0.1-alpha15"
[plugins]
screenshot = { id = "com.android.compose.screenshot", version.ref = "screenshot"}
diff --git a/wear/jetpack-compose-m3/SKILL.md b/wear/jetpack-compose-m3/SKILL.md
index 6dd5ade..cd15d13 100644
--- a/wear/jetpack-compose-m3/SKILL.md
+++ b/wear/jetpack-compose-m3/SKILL.md
@@ -8,7 +8,7 @@ description: Expert guidance for working with Wear OS Compose Material3. Use thi
license: Complete terms in LICENSE.txt
metadata:
author: Google LLC
- last-updated: '2026-05-20'
+ last-updated: '2026-05-23'
keywords:
- Wear OS
- Compose
@@ -19,31 +19,25 @@ metadata:
- ScreenScaffold
---
-## Prerequisites \& Compatibility
+## Prerequisites and compatibility
1. **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.
- - Otherwise, fetch the [official Maven metadata XML](https://dl.google.com/dl/android/maven2/androidx/wear/compose/compose-material3/maven-metadata.xml) to identify `{VERSION}` (highest number, ignoring `-alpha`, `-beta`, or `-rc`)
- 1. **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.
-2. **Kotlin Version:** For Wear Compose Material3, use Kotlin **2.0.0 or
+ - Otherwise, fetch the [official Maven metadata XML](https://dl.google.com/dl/android/maven2/androidx/wear/compose/compose-material3/maven-metadata.xml) to identify `{VERSION}` (highest number, ignoring `-alpha`, `-beta`, or `-rc`).
+2. **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.
+3. **Kotlin version:** For Wear Compose Material3, use Kotlin **2.0.0 or
higher**.
-3. **Compose Compiler:**
+4. **Compose compiler:**
- If Kotlin version is **2.0.0+** , the project must use the `org.jetbrains.kotlin.plugin.compose` Gradle plugin.
- - If Kotlin version is **\< 2.0.0** , the project must use `kotlinCompilerExtensionVersion` in `composeOptions`, matching the [Compose to Kotlin Compatibility
- Map](https://developer.android.com/jetpack/androidx/releases/compose-kotlin).
- 1. **Min SDK:** Ensure `minSdk` is at least **25** (Wear OS 2.0).
-4. **Sample Extraction Mandate**: Wear Compose libraries ship with an
- additional JAR file which contains individual samples for each and every
- component. You MUST NOT propose code changes until the samples in Capability
-
- files are incomplete and NOT a substitute for these samples; bypassing
- extraction is an environment setup failure.
+ - If Kotlin version is **\< 2.0.0** , the project must use `kotlinCompilerExtensionVersion` in `composeOptions`, matching the [Compose to Kotlin Compatibility Map](https://developer.android.com/jetpack/androidx/releases/compose-kotlin).
+5. **Min SDK:** Ensure `minSdk` is at least **25** (Wear OS 2.0).
+6. **Sample extraction mandate**: Wear Compose libraries ship with an additional JAR file which contains individual samples for each and every component. You MUST NOT propose code changes until the samples in Capability 2 are extracted to the local cache. Library source files are incomplete and NOT a substitute for these samples; bypassing extraction is an environment setup failure.
## Gotchas
-1. **Mandatory Sync \& Validation:** After updating versions in `libs.versions.toml` or `build.gradle.kts`, you **must** perform a Gradle sync before refactoring any code. This ensures the environment has resolved the libraries correctly.
-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.
+1. **Mandatory sync and validation:** After updating versions in `libs.versions.toml` or `build.gradle.kts`, you **must** perform a Gradle sync before refactoring any code. This ensures the environment has resolved the libraries correctly.
+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
+## Capabilities and tools
### Capability 1: Migration
@@ -51,11 +45,11 @@ Use this guidance when migrating from an older version of Wear OS Compose or
Horologist.
1. Unless otherwise indicated by the developer, use the latest stable version of Wear Compose Material3 from `{VERSION}`.
-2. Read the [migration guide](references/android/training/wearables/compose/migrate-to-material3.md)
+2. Read the [migration guide](references/android/training/wearables/compose/migrate-to-material3.md).
3. Use the official component mappings from the migration guide.
-4. Before refactoring any component (e.g., `Chip` -\> `Button`), check the parameter names, slot types, and "Expressive" design tokens.
+4. Before refactoring any component (for example, `Chip` -\> `Button`), check the parameter names, slot types, and "Expressive" design tokens.
5. Do not use the Horologist Composables, Compose Layout, or Compose Material libraries.
-6. **Always** check against the component guidance in Capability #3.
+6. **Always** check against the component guidance in Capability 3.
7. Expect screenshot tests to fail when a migration has been performed: Even when migrating to very similar components, expected defaults for padding and positioning will have changed. Do not seek to artificially match the pre-migration screenshot, but give preference to the Material3 defaults.
### Capability 2: Component samples
@@ -79,17 +73,17 @@ before proceeding.
1. Check the `build.gradle.kts` or `libs.versions.toml` to ensure the Wear Compose version matches `{VERSION}`.
2. Ensure that the necessary dependencies are downloaded by doing a Gradle sync.
-#### Step 2: Check the Local Cache
+#### Step 2: Check the local cache
1. Define the cache directory path: `/samples/{VERSION}/`. Do NOT choose your own different location.
2. Check if this directory exists and contains subdirectories with `.kt` files.
- - **IF YES (Cache Hit):** Proceed to **Step 4**.
- - **IF NO (Cache Miss):** Proceed to **Step 3**.
+ - **IF YES (cache hit):** Proceed to **Step 4**.
+ - **IF NO (cache miss):** Proceed to **Step 3**.
-#### Step 3: Check the Gradle Cache
+#### Step 3: Check the Gradle cache
1. Sample sources are stored in the Gradle cache. To avoid slow, brute-force searches:
- - Determine the Gradle User Home (usually `~/.gradle`, or check `$GRADLE_USER_HOME`).
+ - Determine the Gradle user home (usually `~/.gradle`, or check `$GRADLE_USER_HOME`).
- The cache root is `/caches`. Call this ``.
2. Define `{ARTIFACT}` as the items in the list `["material3", "foundation"]`. Also include "navigation3" in the list if the `androidx.wear.compose.navigation3` library is being used.
3. For each `{ARTIFACT}` in the list:
@@ -109,14 +103,14 @@ before proceeding.
6. Proceed **directly to step 4**.
-#### Step 4: Read Samples and Implement
+#### Step 4: Read samples and implement
1. Read the relevant `.kt` sample files.
2. Use these official, version-matched samples as the for:
- Required parameters and slot names.
- Default styling and typography tokens.
- - Interactive behaviors (e.g., `onClick`, `onLongClick`).
- - Component nesting (e.g., `AppScaffold` -\> `ScreenScaffold`).
+ - Interactive behaviors (for example: `onClick`, `onLongClick`).
+ - Component nesting (for example: `AppScaffold` -\> `ScreenScaffold`).
### Capability 3: Component guidance
@@ -128,9 +122,7 @@ the component syntax.
- \[ \] 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:
+3. `TransformingLazyColumn` - You will need the following imports:
```kotlin
@@ -197,7 +189,7 @@ the component syntax.
- - \[ \] Use `TransformingLazyColumn` instead of `ScalingLazyColumn`
+ - \[ \] 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.
@@ -226,7 +218,7 @@ the component syntax.
4. `ScreenScaffold`
- - \[ \] Guard the `scrollIndicator` with `!LocalScrollCaptureInProgress.current`
+ - \[ \] Guard the `scrollIndicator` with `!LocalScrollCaptureInProgress.current`.
5. `EdgeButton`
- \[ \] Do **NOT** use as the final item within a `TransformingLazyColumn`. Instead, use the slot in `ScreenScaffold`.
@@ -272,11 +264,11 @@ the component syntax.
- \[ \] Do **NOT** hard-code text sizes, use `typography` from `MaterialTheme`.
- \[ \] Do **NOT** hard-code colors, use `colorScheme` from `MaterialTheme`.
-8. Use component defaults
+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 previews
+9. Use Wear specific previews:
- \[ \] `WearPreviewDevices`
- \[ \] `WearPreviewFontScales`
diff --git a/xr/display-glasses-with-jetpack-compose-glimmer/SKILL.md b/xr/display-glasses-with-jetpack-compose-glimmer/SKILL.md
index 321f178..52d6c81 100644
--- a/xr/display-glasses-with-jetpack-compose-glimmer/SKILL.md
+++ b/xr/display-glasses-with-jetpack-compose-glimmer/SKILL.md
@@ -9,7 +9,7 @@ description: Provides guidelines for developing projected Android XR apps for di
license: Complete terms in LICENSE.txt
metadata:
author: Google LLC
- last-updated: '2026-05-20'
+ last-updated: '2026-06-03'
keywords:
- Jetpack Compose Glimmer
- audio glasses
diff --git a/xr/display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/access-hardware-projected-context.md b/xr/display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/access-hardware-projected-context.md
index ee543de..cecef35 100644
--- a/xr/display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/access-hardware-projected-context.md
+++ b/xr/display-glasses-with-jetpack-compose-glimmer/references/android/develop/xr/jetpack-xr-sdk/access-hardware-projected-context.md
@@ -141,8 +141,10 @@ audioRecord.startRecording()
define a sample rate of 16kHz and a channel configuration of either mono or
stereo (using [`CHANNEL_IN_MONO`](https://developer.android.com/reference/kotlin/android/media/AudioFormat#channel_in_mono) or [`CHANNEL_IN_STEREO`](https://developer.android.com/reference/kotlin/android/media/AudioFormat#channel_in_stereo)).
-- While there is no fixed requirement for buffer size, [get the minimum buffer
- size](https://developer.android.com/reference/kotlin/android/media/AudioRecord#getminbuffersize) to minimize perceived latency.
+- Use [`AudioRecord.getMinBufferSize()`](https://developer.android.com/reference/kotlin/android/media/AudioRecord#getminbuffersize) to determine the minimum buffer
+ size to create the `AudioRecord` object. However, to prevent audio drops
+ from the glasses, you should read from this buffer in short, frequent chunks
+ (ideally 20ms slices) rather than waiting for the entire buffer to fill.
> [!WARNING]
> **Preview:** Support for using the [`MediaRecorder`](https://developer.android.com/reference/kotlin/android/media/MediaRecorder) API with a projected context will be available in an upcoming Android Beta release.