> android-architecture
Standards for Clean Architecture, Modularization, and Unidirectional Data Flow. Use when designing Android project structure, modularization, or data flow patterns. (triggers: build.gradle.kts, settings.gradle.kts, clean-architecture, module, layers, domain)
curl "https://skillshub.wtf/HoangNguyen0403/agent-skills-standard/android-architecture?format=md"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
setContentin 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 Navigationusing Type-Safe destinations?
Anti-Patterns
- No Logic in Activity: Host Navigation only.
- No Repo in UI: Use Type-Safe ViewModels.
- No Context in Domain: Keep Logic Pure.
References
> related_skills --same-repo
> typescript-tooling
Development tools, linting, and build config for TypeScript. Use when configuring ESLint, Prettier, Jest, Vitest, tsconfig, or any TS build tooling. (triggers: tsconfig.json, .eslintrc.*, jest.config.*, package.json, eslint, prettier, jest, vitest, build, compile, lint)
> typescript-security
Secure coding practices for TypeScript. Use when validating input, handling auth tokens, sanitizing data, or managing secrets and sensitive configuration. (triggers: **/*.ts, **/*.tsx, validate, sanitize, xss, injection, auth, password, secret, token)
> typescript-language
Modern TypeScript standards for type safety and maintainability. Use when working with types, interfaces, generics, enums, unions, or tsconfig settings. (triggers: **/*.ts, **/*.tsx, tsconfig.json, type, interface, generic, enum, union, intersection, readonly, const, namespace)
> typescript-best-practices
Idiomatic TypeScript patterns for clean, maintainable code. Use when writing or refactoring TypeScript classes, functions, modules, or async logic. (triggers: **/*.ts, **/*.tsx, class, function, module, import, export, async, promise)