← ClaudeAtlas

android-module-structurelisted

Module layout, dependency rules, and Gradle convention plugins for Android and Kotlin Multiplatform (KMP) projects. Use this skill whenever setting up a new Android/KMP project, deciding where a new module should live, asking "how should I structure this", creating a new feature module, adding a core submodule, configuring Gradle convention plugins, working with version catalogs, or making any decision about project-level architecture. Trigger on phrases like "set up the project", "add a module", "create a feature", "how should I structure", "project structure", "convention plugin", "build-logic", or "where does X live".
lenorebreakneck630/claude-zero-to-hero-android-KMP · ★ 1 · AI & Automation · score 64
Install: claude install-skill lenorebreakneck630/claude-zero-to-hero-android-KMP
# Android / KMP Module Structure ## Core Philosophy - **Feature-layered modularization**: split by feature first, then by layer within each feature. - **Clean Architecture layers**: `presentation` → `domain` ← `data`. Domain is innermost and depends on nothing. - **Code lives in a feature module unless it is needed by more than one feature** — then it moves to the appropriate `core` submodule. - Features **never depend on each other**. Cross-feature shared data belongs in `core:domain` (domain models) or `core:presentation` (shared composables/UI logic), not in the owning feature. --- ## Module Layout ``` :app :build-logic ← Gradle convention plugins :core:domain ← Shared domain models, repository interfaces, error types, Result :core:data ← Shared data logic, Ktor HttpClient factory, shared DB schemas/DAOs :core:presentation ← Shared UI utilities (ObserveAsEvents, UiText, etc.) :core:design-system ← Reusable Compose components, colors, theme, typography :feature:<name>:domain ← Feature-specific domain models, repo interfaces, error types :feature:<name>:data ← Repo implementations, DTOs, mappers, Room DAOs :feature:<name>:presentation ← ViewModel, screen composables, state, actions, events ``` For standalone, self-contained concerns that involve meaningful complexity (multiple classes, configuration, or a non-trivial API surface), create a dedicated module u