android-clean-architecture
Use when designing the architecture, data layer, domain models, or business logic for Android apps.
Skill by prasad-vennam
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/prasad-vennam-android-clean-architecture
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: data
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/android-clean-architecture
What's inside
- Skill name
android-clean-architecture- Description
- Use when designing the architecture, data layer, domain models, or business logic for Android apps.
- License
- MIT
- Instructions
- 81 lines in SKILL.md · view on GitHub
Files (1)
- SKILL.md
SKILL.md (first lines)
# Android Clean Architecture Excellence 🏗️
Standardized architectural patterns for scalable, testable, and maintainable Android applications.
## ⚡ When to Use
- **App Structure**: Planning or refactoring the module/package layout.
- **Data Fetching**: Implementing Retrofit or Room repositories.
- **Business Logic**: Writing Use Cases or Interactors.
- **UI Architecture**: Choosing between MVI, MVVM, or custom patterns.
- **State Management**: Consuming data from Flow/StateFlow in ViewModels.
## 🏗️ The Three Pillars
### 1. Presentation Layer (UI & ViewModels)
- **Pattern**: Always use **Jetpack ViewModel**.
- **State**: Use `MutableStateFlow` in ViewModel. In Compose UI, ALWAYS collect using `collectAsStateWithLifecycle()` (requires `androidx.lifecycle:lifecycle-runtime-compose`). NEVER use `collectAsState()` as it wastes resources in the background.
- **MVI/MVVM**: Prefer **State + Events + Effects** for complex screens.
- **Anti-Pattern (No Stubs)**: NEVER generate stubbed empty callbacks (e.g., `onClicked = { /* Future implementation */ }`) when scaffolding. If tasked to build a feature, ALWAYS implement the full event flow from UI to ViewModel to Repository.
- **Navigation**: Use **Compose Navigation** with Safe Args (Type-safe routing via Kotlinx Serialization) instead of manual screen swapping.
### 2. Domain Layer (The Core)
- **Rule**: NO Android dependencies (except maybe `@Inject`). Pure Kotlin.
- **Use Cases**: Each Use Case should have a single responsibility.
```kotlin
class GetUserUseCase @Inject constructor(private val repository: UserRepository) {
operator fun invoke(id: String): Flow<User> = repository.getUser(id)
}
```
- **Models**: Pure Kotlin data classes (Domain-specific).
- **CRITICAL ANTI-HALLUCINATION GUARD**: NEVER assume or guess the properties of a data class (e.g., guessing a `TodoItem` has a `dueDate`). You MUST explicitly read the data classes in `domain/model/` before writing ViewModel or Repository mapping logic to prevent `Unresolved reference` or constructor errors.
### 3. Data Layer (Sources & Repositories)
- **Pattern**: Repository as a single source of truth.
- **DTOs**: Data Transfer Objects (e.g., Json objects from Retrofit). Always map DTOs to Domain Models before passing to the Domain Layer.
- **Sources**: Remote (Retrofit/Ktor) and Local (Room/DataStore).
- **Room TypeConverters (CRITICAL)**: If your domain model contains non-primitive types (e.g., `LocalDateTime`, Enums, Custom Objects), you MUST create a `@TypeConverter` class and explicitly register it on the `@Database` class before compiling. Room cannot natively store them!
## 💉 Dependency Injection (Hilt)
Hilt is the standard DI library. Ensure the following foundational setup is ALWAYS present:
### 1. Mandatory Application Class
- **Rule**: Create a class inheriting from `Application` and annotate it with `@HiltAndroidApp`.
```kotlin
@HiltAndroidApp
class BaseApplication : Application()
```
### 2. Manifest Registration
- **Rule**: Register your application class in `AndroidManifest.xml` using `android:name=".BaseApplication"`.
### 3. Usage Patterns
- Use `@HiltViewModel` for ViewModels.
- Use `@AndroidEntryPoint` for Activities/Fragments (if any).
- Use `@Inject constructor` for Use Cases and Repositories.
- Create `@Module` and `@InstallIn(SingletonComponent::class)` for platform dependencies.
## 🧪 Testing Strategy
- **Unit Tests**: Place in `test/`. Use **MockK** for mocking interfaces.
- **Test Coroutines**: Use `runTest` and `TestDispatcher`.
- **Fakes vs Mocks**: Prefer **Fakes** for complex Data sources and **Mocks** for simple verification.
## 🚀 Modern Reactive Flows
- [ ] **StateFlow**: For state that needs initial value and persistence.
- [ ] **SharedFlow**: For one-off events (e.g., Navigation, Snackbar).
- [ ] **Error Handling**: Use a `Result` wrapper or `Resource` object to encapsulate Success/Error states.
## 🔗 Related Resources
- [Google Official Architecture Guide](https://developer.android.com/topic/architecture)
- [Compose Skill](../android-jetpack-compose/SKILL.md)From prasad-vennam/Awesome-Android-AI-Agent-Skills, MIT.
More from prasad-vennam/Awesome-Android-AI-Agent-Skills
- 0.477score
android-design-system-m3
prasad-vennam
Use when creating Material 3 design systems, custom themes, or dynamic color implementations in Android apps with Jetpack Compose.
SkillDFreshness: D★ 11Claude Code +9 - 0.477score
android-code-review-expert
prasad-vennam
Use when performing a code review for Android pull requests, focusing on architecture, memory safety, and UI excellence.
SkillDFreshness: D★ 11Claude Code +9 - 0.477score
android-kmp-shared
prasad-vennam
Use when building Kotlin Multiplatform (KMP) shared modules, integrating with iOS, or sharing business logic across platforms.
SkillDFreshness: D★ 11Claude Code +9 - 0.477score
android-navigation-expert
prasad-vennam
Use when scaffolding or debugging Jetpack Compose Navigation.
SkillDFreshness: D★ 11Claude Code +9 - 0.477score
android-custom-drawing-canvas
prasad-vennam
Use when creating custom UI components, charts, shaders, or hardware-accelerated drawing in Android with Jetpack Compose Canvas.
SkillDFreshness: D★ 11Claude Code +9 - 0.477score
android-media-and-image-expert
prasad-vennam
Use when loading images with Coil/Glide, implementing video playback with Media3/ExoPlayer, or handling media metadata in Android.
SkillDFreshness: D★ 11Claude Code +9 - 0.477score
android-ci-cd-expert
prasad-vennam
Use when setting up continuous integration/deployment (GitHub Actions), Gradle Play Publisher, Fastlane, or R8 Proguard rules for Release builds.
SkillDFreshness: D★ 11Claude Code +9 - 0.476score
android-gemini-nano
prasad-vennam
Use when integrating Google Gemini Nano via AICore for on-device ML.
SkillDFreshness: D★ 11Claude Code +9 - 0.476score
android-adb-terminal
prasad-vennam
Use when interacting with Android emulators or physical devices via ADB (Android Debug Bridge).
SkillDFreshness: D★ 11Claude Code +9 - 0.476score
android-google-workspace-expert
prasad-vennam
Use when integrating Google Workspace APIs (Calendar, Drive, Docs) or implementing Google Sign-In with OAuth Scopes.
SkillDFreshness: D★ 11Claude Code +9 - 0.476score
android-accessibility
prasad-vennam
Use when improving app accessibility, ensuring WCAG compliance, or fixing TalkBack navigation for Android.
SkillDFreshness: D★ 11Claude Code +9 - 0.476score
android-design-to-code
prasad-vennam
Use when translating Figma, Sketch, or Adobe XD designs into Jetpack Compose code for Android.
SkillDFreshness: D★ 11Claude Code +9
Signals
- Stars
- 11
- Forks
- 0
- Open issues
- 0
- Last commit (this folder)
- Apr 1, 2026 (7 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from prasad-vennam
- 0.477score
android-design-system-m3
prasad-vennam
Use when creating Material 3 design systems, custom themes, or dynamic color implementations in Android apps with Jetpack Compose.
SkillDFreshness: D★ 11Claude Code +9 - 0.477score
android-kmp-shared
prasad-vennam
Use when building Kotlin Multiplatform (KMP) shared modules, integrating with iOS, or sharing business logic across platforms.
SkillDFreshness: D★ 11Claude Code +9 - 0.477score
android-ci-cd-expert
prasad-vennam
Use when setting up continuous integration/deployment (GitHub Actions), Gradle Play Publisher, Fastlane, or R8 Proguard rules for Release builds.
SkillDFreshness: D★ 11Claude Code +9 - 0.477score
android-custom-drawing-canvas
prasad-vennam
Use when creating custom UI components, charts, shaders, or hardware-accelerated drawing in Android with Jetpack Compose Canvas.
SkillDFreshness: D★ 11Claude Code +9 - 0.477score
android-code-review-expert
prasad-vennam
Use when performing a code review for Android pull requests, focusing on architecture, memory safety, and UI excellence.
SkillDFreshness: D★ 11Claude Code +9 - 0.477score
android-media-and-image-expert
prasad-vennam
Use when loading images with Coil/Glide, implementing video playback with Media3/ExoPlayer, or handling media metadata in Android.
SkillDFreshness: D★ 11Claude Code +9
Cite this page
android-clean-architecture skill. Agent Mart. https://agentmart.dev/skills/prasad-vennam-android-clean-architecture (last updated 2026-10-24)