一键导入
new-module-checklist
Step-by-step module creation checklist. Use when adding a new Gradle module and wiring build, DI, and architecture integration correctly.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Step-by-step module creation checklist. Use when adding a new Gradle module and wiring build, DI, and architecture integration correctly.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
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.
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.
Investigate Android runtime bugs with evidence-first workflows. Use for emulator targeting, logcat/AndroidRuntime/Timber inspection, Chucker HTTP/GraphQL payloads, UIAutomator hierarchy capture, Room database forensics, 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.
Use when planning or thinking of AniTrend brand identity UI & UX covering compose screens, various surfaces, interaction-heavy UI, layout hierarchy, component decomposition, preview strategy, Material3 layering, or incremental product-facing refactors before coding.
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
.agents/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 .agents/skills/koin-module-wiring/SKILL.md).Modules.kt file in the module's immediate parent Gradle
module. If that parent module is new and must load at app startup, also add the parent loader to
app/core/src/main/kotlin/co/anitrend/core/koin/Modules.kt.tag for a single query-only read, media for
multiple read contracts against one entity, medialist or review for modules that both read
and write, and favourite for a single mutation-only toggle.:domain; if the module performs both reads and
writes, split it by operation (Detail, Paged, Save, Delete, Rate, 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..agents/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 (for :app:*, :feature:*, :android:*, and :common:* modules), Koin |
:task:* | WorkManager, support-arch, Koin |
:android:* | AndroidX core, support-arch, Koin |