원클릭으로
new-module-checklist
// Step-by-step module creation checklist. Use when adding a new Gradle module and wiring build, DI, and architecture integration correctly.
// Step-by-step module creation checklist. Use when adding a new Gradle module and wiring build, DI, and architecture integration correctly.
Use ADB to connect devices, install Android debug builds, and troubleshoot deployment failures. Use for device detection errors, install failures, launch failures, package selection across flavors, and first-pass process checks. For deeper runtime investigation, prefer the Argent workflow.
Investigate Android runtime bugs with evidence-first Argent workflows. Use for emulator targeting, runtime console/network inspection, UI hierarchy capture, optional native traffic inspection, and root-cause analysis before changing code.
Capture quick Android UI evidence with explicit launches, UIAutomator dumps, and adb screenshots for fast visual debugging and reproducible repro notes.
Instruction-to-skill navigation map. Use when routing tasks to the right instruction and skill files or migrating legacy guidance to the split-doc model.
Android platform/helper layer guide for AniTrend. Use when working in `:android:*` modules or deciding whether to reuse or extend existing Android-side helpers for configuration/theme, context or fragment utilities, notification permission flows, deep links, drawer/app-shell behavior, or other platform APIs.
Diagnose and fix silent empty-UI bugs caused by CacheRequest enum collisions in AniTrend. Use when a new offline-first source variant produces blank UI with no crash, no exception, and the Room tables have zero rows. Covers: cache_log collision diagnosis, ADB Room database forensics, WAL checkpoint, Chucker traffic check, CacheRequest isolation fix, and Koin factory update pattern.
| name | new-module-checklist |
| description | Step-by-step module creation checklist. Use when adding a new Gradle module and wiring build, DI, and architecture integration correctly. |
The build system is convention-driven: naming a module correctly causes buildSrc/CorePlugin to
automatically apply the right plugins, dependencies, and Room options. Follow this checklist when
adding any new Gradle module.
Before creating a new module, confirm the work does not belong in an existing :android:* or
:app:core helper surface. Theme/configuration, notification, deep-link, drawer, and general
Android utility work often extends those modules rather than introducing a new module.
buildSrc/src/main/java/co/anitrend/buildSrc/module/Modules.kt — central registry of all
module paths; must be updated for every new modulebuildSrc/src/main/java/co/anitrend/buildSrc/plugins/CorePlugin.kt — the convention plugin
applied to every modulebuildSrc/src/main/java/co/anitrend/buildSrc/plugins/components/ProjectDependencies.kt —
determines which libraries are automatically injected based on module typesettings.gradle.kts — where the include(":your:new:module") declaration lives:android:*, :app:core, and
.github/skills/android-platform-patterns/SKILL.md first.feature/, data/, common/, etc.).build.gradle.kts applying the CorePlugin (copy from a similar existing module).src/main/kotlin/ and src/main/AndroidManifest.xml (for Android library modules).include(":your:new:module") to settings.gradle.kts.Modules.kt under the correct category
(Feature, Data, Common, Android, Task, etc.).<module>/src/main/kotlin/.../koin/Modules.kt (see .github/skills/koin-module-wiring/SKILL.md).app/core/src/main/kotlin/co/anitrend/core/koin/Modules.kt for top-level modules, including
:android:* modules).tag for simple query-only, media for
multi-contract reads, medialist or review for hybrid flows, favourite for mutation-only.:domain; for hybrid modules split it by operation
(Detail, Paged, Save, Delete, etc.) instead of one broad interface.:domain; do not keep repository contracts or
concrete interactor implementations inside the module Types.kt.Types.kt.usecase/; simple modules may use
XxxUseCaseImpl, while multi-operation modules may use nested XxxInteractor classes.:task:* worker and router plumbing instead of calling the mutation interactor directly from
feature code..github/skills/room-entity-pattern/SKILL.md)../gradlew :your:new:module:assembleDebug to verify plugin and dependency resolution../gradlew spotlessCheck to validate formatting.data/schemas/.| Module prefix | Auto-included libraries |
|---|---|
:feature:* | support-arch UI/domain/data, Compose, AndroidX core, Koin, Timber |
:data:* | Room + KSP, Retrofit, OkHttp, Kotlinx Serialization, Chucker (debug) |
:common:* | support-arch UI, Compose (if name matches pattern), Koin |
:task:* | WorkManager, support-arch, Koin |
:android:* | AndroidX core, support-arch, Koin |