Skillshub android-architecture

Standards for Clean Architecture, Modularization, and Unidirectional Data Flow. Use when anyone sets up Android project structure, asks where code belongs in Clean Architecture layers, discusses modularization (feature/core modules), or questions UDF (events up, state down). (triggers: build.gradle.kts, settings.gradle.kts, clean-architecture, module, layers, domain, UDF, unidirectional, feature module, core module, presentation layer, data layer)

install
source · Clone the upstream repo
git clone https://github.com/ComeOnOliver/skillshub
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ComeOnOliver/skillshub "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/HoangNguyen0403/agent-skills-standard/android-architecture" ~/.claude/skills/comeonoliver-skillshub-android-architecture && rm -rf "$T"
manifest: skills/HoangNguyen0403/agent-skills-standard/android-architecture/SKILL.md
source content

Android Architecture Standards

Priority: P0 (CRITICAL)

Implementation Guidelines

Layering (Clean Architecture)

  • Domain: Pure Kotlin (No Android deps). Contains UseCases/Models.
  • Data: Repository impl, DataSources (API/DB). Maps DTO -> Domain.
  • UI: ViewModel + Composable. Maps Domain -> UiState.

Modularization

  • Feature Modules:
    :feature:home
    ,
    :feature:profile
    .
  • Core Modules:
    :core:ui
    (Design System),
    :core:network
    ,
    :core:database
    .
  • App Module: DI Root and Navigation Guard.

Unidirectional Data Flow (UDF)

  • Events: UI -> ViewModel (Events).
  • State: ViewModel -> UI (StateFlow<UiState>).

Jetpack Compose

  • Hosting: Are you using
    setContent
    in Activity? (No XML Layouts)
  • State: Is state hoisted to ViewModel using
    collectAsStateWithLifecycle
    ?
  • Unidirectional: Are events passed UP and state passed DOWN?
  • Recomposition: Are Composables stable? (Check for unstable types in parameters)
  • Navigation: Is
    Compose Navigation
    using Type-Safe destinations?

Anti-Patterns

  • No Logic in Activity: Host Navigation only.
  • No Repo in UI: Access data exclusively via ViewModel.
  • No Context in Domain: Keep Logic Pure.

References