# Android (Gradle/Kotlin) ## Признаки платформы - `settings.gradle` или `settings.gradle.kts` - `build.gradle` или `build.gradle.kts` - `gradle.properties`, `gradle/libs.versions.toml` - `gradlew`, `gradle/wrapper/gradle-wrapper.properties` - `app/src/main/AndroidManifest.xml` ## Признаки многомодульного проекта - Несколько `include(...)` в `settings.gradle*` - Несколько каталогов с `build.gradle*` + `src/` - Типичные корневые каталоги: `feature/`, `core/`, `library/`, `domain/`, `data/` ## Источники перед созданием навыка - `settings.gradle*` (список модулей) - `build.gradle*` (корневой проект и модули) - `gradle/libs.versions.toml` (зависимости) - `config/detekt/detekt.yml` (если есть) - `**/AndroidManifest.xml` ## Что искать в кодовой базе ### Корневые каталоги исходников - `*/src/main/java/`, `*/src/main/kotlin/` ### Типовые слои и каталоги: зафиксируй найденные `features/`, `core/`, `common/`, `data/`, `domain/`, `presentation/`, `ui/`, `di/`, `navigation/`, `network/` ### Признаки шаблонов | Шаблон | Критерии обнаружения | Имя навыка | |---------|-------------------|------------| | ViewModel | `@HiltViewModel`, `ViewModel()`, `MVI<` | viewmodel-mvi | | Repository | `*Repository`, `*RepositoryImpl` | data-repository | | UseCase | `operator fun invoke`, `*UseCase` | domain-usecase | | Room Entity | `@Entity`, `@PrimaryKey`, `@ColumnInfo` | room-entity | | Room DAO | `@Dao`, `@Query`, `@Insert`, `@Update` | room-dao | | Migration | `Migration(`, `@Database(version=` | room-migration | | Type Converter | `@TypeConverter`, `@TypeConverters` | type-converter | | DTO | `@SerializedName`, `*Request`, `*Response` | network-dto | | Compose Screen | `@Composable`, `NavGraphBuilder.` | compose-screen | | Bottom Sheet | `ModalBottomSheet`, `*BottomSheet(` | bottomsheet-screen | | Navigation | `@Route`, `NavGraphBuilder.`, `composable(` | navigation-route | | Hilt Module | `@Module`, `@Provides`, `@Binds`, `@InstallIn` | hilt-module | | Worker | `@HiltWorker`, `CoroutineWorker`, `WorkManager` | worker-task | | DataStore | `DataStore`, `preferencesDataStore` | datastore-preference | | Retrofit API | `@GET`, `@POST`, `@PUT`, `@DELETE` | retrofit-api | | Mapper | `*.toModel()`, `*.toEntity()`, `*.toDto()` | data-mapper | | Interceptor | `Interceptor`, `intercept()` | network-interceptor | | Paging | `PagingSource`, `Pager(`, `PagingData` | paging-source | | Broadcast Receiver | `BroadcastReceiver`, `onReceive(` | broadcast-receiver | | Android Service | `: Service()`, `ForegroundService` | android-service | | Notification | `NotificationCompat`, `NotificationChannel` | notification-builder | | Analytics | `FirebaseAnalytics`, `logEvent` | analytics-event | | Feature Flag | `RemoteConfig`, `FeatureFlag` | feature-flag | | App Widget | `AppWidgetProvider`, `GlanceAppWidget` | app-widget | | Unit Test | `@Test`, `MockK`, `mockk(`, `every {` | unit-test | ## Обязательные разделы результата Добавь, если найдено; перечисли реальные имена: - **Состав функциональных модулей**: каталоги в `feature/` - **Основные модули**: каталоги в `core/`, `library/` - **Графы навигации**: `*Graph.kt`, `*Navigator*.kt` - **Модули Hilt**: `@Module` классы, `di/` содержимое - **API Retrofit**: `*Api.kt` интерфейсы - **Базы данных Room**: `@Database` классы - **Фоновые обработчики**: `@HiltWorker` классы - **Proguard**: `proguard-rules.pro`, если есть ## Откуда брать команды - README и документация с вызовами `./gradlew` - Сценарии CI с командами Gradle - Обычные команды: `./gradlew assemble`, `./gradlew test`, `./gradlew lint` - Добавляй только команды, которые есть в репозитории ## Основные пути - `app/src/main/`, `app/src/main/res/` - `app/src/main/java/`, `app/src/main/kotlin/` - `app/src/test/`, `app/src/androidTest/` - `library/database/migration/` (миграции Room)