Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .agents/rules/android-architecture.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
trigger: always_on
---

## Android: Architecture

- Follow Clean Architecture and Google's official architecture for Android apps
- ViewModels must NOT contain any Android framework references (no `Context`, `View`, etc.)
11 changes: 11 additions & 0 deletions .agents/rules/android-tech-stack.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
trigger: always_on
---

## Android: Tech Stack & Libraries

- Language: Kotlin. Use idiomatic Kotlin features (extension functions, scoped functions, data classes, sealed interfaces)
- UI Toolkit: Jetpack Compose. DO NOT use XML layouts, Fragments, or ViewBinding.
- Asynchronous Programming: Kotlin Coroutines and StateFlow/SharedFlow. DO NOT use RxJava or LiveData.
- Dependency Injection: Hilt.
- Networking: Retrofit with OkHttp and Kotlinx Serialization.
8 changes: 8 additions & 0 deletions .agents/rules/android-testing-quality.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
trigger: always_on
---

## Android: Testing & Quality

- Write unit tests for all business logic code and view models
- Hardcoded strings are strictly forbidden. Always extract to `res/values/strings.xml`.
102 changes: 102 additions & 0 deletions .agents/skills/build/agp/agp-9-upgrade/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
---
name: agp-9-upgrade
description: Upgrades, or migrates, an Android project to use Android Gradle Plugin
(AGP) version 9. Do not use this skill for migrating Kotlin Multiplatform (KMP) projects.
license: Complete terms in LICENSE.txt
metadata:
author: Google LLC
keywords:
- Android Gradle Plugin 9
- AGP 9
- AGP Upgrade
- AGP Migration
- New AGP DSL
- Migrate to built-in Kotlin
---

## Migration guide

See the [AGP 9 migration guide](references/android/build/releases/agp-9-0-0-release-notes.md) for the major changes, many
breaking, in AGP 9 compared to AGP 8.

## Requirements

If the user requests to update or migrate to AGP 9, first check the AGP version
used in the project. If it is lower than 9, stop and ask the user to run the AGP
Upgrade Assistant in Android Studio to update to the latest stable version of
AGP, and confirm when done. The user may also request that this requirement be
skipped; if this is the case, you should update the version of AGP to the latest
stable version as part of the AGP 9 migration. See the
[AGP 9 migration guide](references/android/build/releases/agp-9-0-0-release-notes.md)
for how to do this.

Each version of AGP has its own set of compatibilities with other tools, such as
Gradle, JDK, and Kotlin. The release notes for each of these versions will
include a **Compatibility** table indicating the minimum versions for these
tools.

Do not use this skill for KMP projects, as they are unsupported.

## Steps

If AGP is already at 9 or higher, then do the following:

### Step 1: Update dependencies

If KSP (`com.google.devtools.ksp`) is used in the project, ensure it is on
version 2.3.6 or higher.

If Hilt is used in the project, ensure it is on version 2.59.2 or higher.

### Step 2: Migrate to built-in Kotlin.

See [the guide](references/android/build/migrate-to-built-in-kotlin.md) for detailed information.

### Step 3. Migrate to the new AGP DSL.

See [the guide](references/android/build/releases/agp-9-0-0-release-notes.md) for detailed information.

See also [gradle-recipes](references/recipes.md) for examples on how to migrate old code to code
that is compatible with AGP 9 and the new DSL.

### Step 4. Migrate kapt to KSP or legacy-kapt

If KSP (`com.google.devtools.ksp`) or kapt (`org.jetbrains.kotlin.kapt`) are
used in the project, [KSP, kapt, and legacy-kapt](references/ksp-kapt.md)
for detailed migration steps.

### Step 5. BuildConfig

If any Android module contains custom BuildConfig fields, see [BuildConfig](references/buildconfig.md)
for detailed information.

### Step 6. Update gradle.properties

After the migration, check gradle.properties. Remove the following flags:

1. android.builtInKotlin
2. android.newDsl
3. android.uniquePackageNames
4. android.enableAppCompileTimeRClass

Additionally, delete all temporary files you've created.

## Guidelines

- Never write or run python scripts.
- Only search the Gradle dependency cache when inspecting external dependencies, and only as a last resort.
- Never add `android.disallowKotlinSourceSets=false` to `gradle.properties`.
- When verifying changes, don't run the `clean` task. This is a waste of time.

## Verification

After migration, verify the following:

1. Gradle IDE sync succeeds.
2. `./gradlew help` succeeds.
3. `./gradlew build --dry-run` succeeds.

## Troubleshooting

Paparazzi v2.0.0-alpha04 and lower versions have issues with AGP 9. See
[references/paparazzi-gradle-9.md](references/paparazzi-gradle-9.md) for details.
Loading
Loading