This repository contains an Android application project. When working on the project interactively with an AI coding agent, please follow the guidelines below to ensure architectural consistency, maximum performance, and a smooth development experience.
- Minimum SDK: 24 (or defined by project)
- Target SDK: 34
- Language: Kotlin (1.9+)
- Build System: Gradle (Kotlin DSL preferred)
We follow the official Android Architecture Guidelines:
- Presentation Layer: StateFlow/SharedFlow in ViewModels. UI defined in Jetpack Compose (or XML if legacy). Unidirectional Data Flow (UDF).
- Domain Layer: Optional UseCases for complex business logic.
- Data Layer: Repository pattern to abstract data sources (Room for local, Retrofit for remote).
- Dependency Injection: Hilt/Dagger (preferred) or Koin.
- Concurrency: Kotlin Coroutines exclusively. Avoid RxJava for new code (migrate if possible).
- Dispatchers: Inject Dispatchers (don't hardcode
Dispatchers.IO) to allow testing.
- Jetpack Compose: Default choice for all new features. Follow Compose best practices (state hoisting, modifiers, no side-effects in composables).
- Navigation: Jetpack Navigation Compose.
- Unit Tests: JUnit4/JUnit5, MockK for mocking, Turbine for Flow testing.
- UI Tests: Compose Test Rule for UI components, Espresso for legacy XML.
- Prefer testing ViewModel state emission over testing implementation details.
- When asked to implement a functionality that you are not sure of, refer to the official Android Developer Documentation or Kotlin Documentation for additional context and best practices.
| Skill Folder | Purpose |
|---|---|
architecture/ |
Clean architecture, ViewModels, and Data Layer. |
ui/ |
Jetpack Compose best practices, Coil, Accessibility. |
performance/ |
Auditing Compose and Gradle build performance. |
migration/ |
XML to Compose, RxJava to Coroutines. |
testing_and_automation/ |
Unit/UI Testing setup, Emulator automation scripts. |
concurrency_and_networking/ |
Coroutines fixes, Retrofit networking. |
Following these practices ensures that the agent-assisted development workflow stays reliable and consistent. When in doubt, always refer to the specific agent skills provided in .github/skills/ for deeper task-specific context!
Note to developers: Update this file whenever the project makes architectural shifts to ensure AI agents stay aligned with your conventions.