← ClaudeAtlas

android-project-standardlisted

Enforce a strict, model-agnostic, AI-navigable Kotlin/Android project standard: the Kotlin compiler's null-safety + sealed/`when` exhaustiveness as the static guarantee, plus `allWarningsAsErrors` + library-module `explicitApi()` + a detekt static-analysis gate as a one-command zero-warning gate, the escape hatches (`!!` non-null assertion / unchecked `as` / `lateinit` abuse / platform-type leaks / `GlobalScope`) shut via detekt-as-error, kotlinx.serialization + `@JvmInline value class` newtypes at boundaries (parse don't validate), a Gradle multi-module module-per-domain structure, a zero-SDK zero-framework `:domain` module behind provider interface seams with a default `MockProvider`, Hilt composition-root injection in `:app`, a version catalog pinning every version, an ktlint + detekt double lint gate, a CLAUDE.md in every module, and scaffold/conformance scripts. Use whenever starting or scaffolding a Kotlin or Android project; setting up Gradle / settings.gradle.kts / libs.versions.toml / detekt / ktlint
VoldemortGin/AI-Coding-Skill-Bible · ★ 1 · Code & Development · score 72
Install: claude install-skill VoldemortGin/AI-Coding-Skill-Bible
# Android Project Standard This skill is the guiding standard for **any** Kotlin/Android work. Apply it by default; don't wait to be asked. Its spine: **trust is placed not in the model, but in the machine-checkable code that constrains it.** In Kotlin, a large part of that scaffold is the compiler — null-safety, sealed `when` exhaustiveness, and (with `explicitApi()`) an explicit public API surface are enforced at compile time. But Kotlin lacks Rust's `Send`/`Sync` or Swift 6's compile-time data-race safety, so structured concurrency discipline + detekt's coroutine rules backstop it. The job here is to (a) keep the escape hatches shut and turn on `allWarningsAsErrors` + `explicitApi()` + a detekt error-gate, (b) push every external dependency behind an interface so the model is hot-swappable, (c) organize deep with module-per-domain and name-navigable structure, and (d) mechanize the implicit knowledge a human would otherwise hold — via a zero-warning gate, a per-module contract, and the two lint gates. The agent's output ceiling equals the tightness of that loop. Baseline: **Kotlin 2.x** (`kotlin("jvm")`/`com.android.application`), `allWarningsAsErrors = true` at every module, `explicitApi()` on library modules, **detekt** (`io.gitlab.arturbosch.detekt`, escape-hatch rules as `error`) + **ktlint** (`org.jlleitschuh.gradle.ktlint`, format), kotlinx.serialization + `@JvmInline value class` newtypes, a version catalog (`gradle/libs.versions.toml`) pinning everything, Hilt +