AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
SKILL verified MIT Self-run

Android Kotlin

skill-maroffo-claude-forge-android-kotlin · by maroffo

Android development with Kotlin, Jetpack Compose, Clean Architecture, and performance. Use when working with .kt files, build.gradle.kts, AndroidManifest.xml, or Compose UI.

No reviews yet
0 installs
33 views
0.0% view→install

Install

$ agentstack add skill-maroffo-claude-forge-android-kotlin

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access Used
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/skill-maroffo-claude-forge-android-kotlin)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
3mo ago

Declared compatibility

Claude CodeClaude Desktop

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Android Kotlin? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

ABOUTME: Android/Kotlin, Compose, Clean Architecture, testing, performance

ABOUTME: MVVM + DI conventions, state/side-effect patterns, review checklists

Android/Kotlin

Commands

./gradlew assembleDebug|assembleRelease|test|connectedAndroidTest|lint|ktlintFormat
./gradlew :feature:home:build                    # Module-specific

See: _AST_GREP.md (sg patterns) | _PATTERNS.md | source-control


Version (determine, don't assume)

Never assume Kotlin / AGP / Gradle versions from prior knowledge: they rot fast and you miss CVE fixes. Fetch the truth:

./gradlew --version                                         # Gradle + JVM
grep -E 'kotlin|agp|compose' gradle/libs.versions.toml      # version catalog (preferred)
grep -E 'kotlin|android' build.gradle.kts                   # fallback
cat gradle.properties                                       # AGP / Kotlin flags
curl -s https://api.github.com/repos/JetBrains/kotlin/releases/latest | jq -r .tag_name   # latest Kotlin
curl -s https://api.github.com/repos/gradle/gradle/releases/latest | jq -r .tag_name      # latest Gradle

For a new project, pin to the latest stable. For an existing one, read gradle/libs.versions.toml / build.gradle.kts / gradle.properties and prefer idioms gated to that version or lower.


Pre-Commit Verification (MANDATORY)

Before every commit, both of these MUST pass:

make check       # project-wide gate (lint, detekt, ktlint, unit tests)
make test-e2e    # end-to-end tests (connectedAndroidTest or the project's e2e target)

If make check is missing, scaffold it with the project-checks skill. If there is no e2e target, do NOT silently skip: flag it to the user and ask whether to proceed or add one.

Full raw toolchain (what make check should expand to):

./gradlew ktlintCheck                           # formatting
./gradlew detekt                                # static analysis
./gradlew lint                                  # Android lint
./gradlew test                                  # unit tests (all variants)
./gradlew connectedAndroidTest                  # instrumented / e2e (device/emulator)

Architecture

Clean Architecture Structure

feature/
├── data/repository/, datasource/local/, datasource/remote/
├── domain/model/, repository/ (interface), usecase/
└── presentation/screen/, viewmodel/

Use Cases

Single responsibility, orchestration here (NOT in ViewModel).

class SignInUseCase(private val auth: AuthRepository, private val user: UserRepository) {
    suspend operator fun invoke(email: String, password: String): Result {
        val result = auth.signIn(email, password).getOrElse { return Result.failure(it) }
        user.saveUserLocally(result)
        return Result.success(result)
    }
}

ViewModel Pattern

class FeedViewModel(private val getFeed: GetFeedUseCase) : ViewModel() {
    private val _uiState = MutableStateFlow(FeedUiState.Loading)
    val uiState = _uiState.asStateFlow()

    private val _sideEffects = Channel(Channel.BUFFERED)
    val sideEffects = _sideEffects.receiveAsFlow()

    fun loadFeed() = viewModelScope.launch {
        _uiState.value = FeedUiState.Loading
        getFeed().onSuccess { _uiState.value = FeedUiState.Success(it) }
                 .onFailure { _uiState.value = FeedUiState.Error(it.message) }
    }
}

sealed interface FeedUiState { /* Loading, Success, Error */ }
sealed interface FeedSideEffect { /* NavigateToDetail, ShowSnackbar */ }

Dependency Injection

| Aspect | Hilt | Koin | |--------|------|------| | Type | Compile-time | Runtime | | Build time | Slower | Faster | | Error detection | Compile | Runtime | | KMP support | No | Yes | | Best for | Large/enterprise | Small-medium/KMP |

Hilt: @HiltAndroidApp, @AndroidEntryPoint, @HiltViewModel, @Inject constructor Koin: module { }, single, factory, viewModelOf, koinViewModel()

See references/compose-patterns.md for setup examples.


Compose Essentials

State hoisting: lift state to the caller, pass callbacks down.

State APIs:

  • remember { mutableStateOf() }, lost on config change
  • rememberSaveable { mutableStateOf() }, survives config change
  • derivedStateOf, computed state

Side effects: LaunchedEffect(key), DisposableEffect. Collect flows with collectAsStateWithLifecycle() (not collectAsState).

Type-safe navigation: @Serializable routes.

See references/compose-patterns.md for detailed examples.


Code Review Checklists

Architecture

  • [ ] VMs don't chain use cases (orchestration in domain)
  • [ ] VMs don't call repositories directly
  • [ ] Use cases have single responsibility
  • [ ] State immutable (use copy())
  • [ ] Side effects use Channel/SharedFlow (not StateFlow)

Compose

  • [ ] State hoisted appropriately
  • [ ] remember vs rememberSaveable correct
  • [ ] Side effects use correct APIs
  • [ ] Stable types for parameters
  • [ ] key used in LazyColumn/LazyRow

Red Flags

| Critical | High | |----------|------| | Network/DB on main thread | Use case chaining in VM | | StateFlow for one-time events | Mutable state exposed from VM | | Hardcoded strings in UI | Missing key in LazyColumn | | Missing error handling | collectAsState vs collectAsStateWithLifecycle | | R8 disabled in release | |


Detailed References

  • references/kotlin-features.md - Kotlin language features and idioms
  • references/compose-patterns.md - State, side effects, navigation, image loading
  • references/data-layer.md - Retrofit, Ktor, Room, DataStore
  • references/testing-patterns.md - Compose UI tests, ViewModel tests, snapshot tests (Paparazzi), Turbine
  • references/performance.md - R8, Baseline Profiles, Compose optimization

Resources

Official: android.com/kotlin | compose | architecture | type-safe nav | baseline profiles

Libraries: Coil | Koin | Hilt | Retrofit | Ktor | Room

Testing: Compose testing | Paparazzi | Turbine

Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.