wenubey
UserReusable Claude Code skills for Android — Kotlin, Jetpack Compose, unit + UI testing, animations
Categories
Indexed Skills (4)
wnb-compose-animation
Use this skill when a Jetpack Compose UI is about to gain an animation, or when reviewing existing motion. Enforces the decision-aware gate — first ask "should this UI animate at all?"; only if yes, then pick the smallest API (AnimatedVisibility, animate*AsState, rememberTransition, AnimatedContent, Animatable). Requires every animation to earn its frame budget, carry a label, respect reduce-motion accessibility, and stay off scroll-adjacent recomposition paths. Triggers on "add animation", "animate", "fade in", "make it smooth", "smooth transition", "fancy transition", "AnimatedVisibility", "animate*AsState", "AnimatedContent", "rememberTransition", "Animatable", "Crossfade", "animateContentSize", "should this animate", "reduce motion".
wnb-compose-ui-test
Use this skill when writing, reviewing, or refactoring a Jetpack Compose UI test on Android. Enforces the canonical skeleton — @get:Rule createComposeRule(), an inline DispatcherProvider using Dispatchers.Unconfined so state propagates synchronously to the tree, a renderScreen(...) factory that constructs the ViewModel + sets content and returns the VM for assertion, semantics-first finders (onNodeWithText, onNodeWithTag, onNodeWithContentDescription, hasTestTag), Truth assertions on state, no Thread.sleep (waitForIdle / waitUntil instead), no hardcoded coordinates, no mocking of repositories (use fakes). Applies to instrumentation-style tests under app/src/androidTest. Triggers on "compose ui test", "createComposeRule", "androidTest", "instrumentation test", "onNodeWithText", "onNodeWithTag", "performClick", "performTextInput", "waitForIdle", "setContent", "compose test dispatcher", "test Screen composable".
wnb-koin-feature-module
Use this skill when adding a new feature to an Android + Koin project, or when reviewing dependency injection wiring. Enforces feature-scoped Koin modules — one `Module` per feature package (customerModule, sellerModule, authModule, …) that bundles the feature's ViewModels and feature-only bindings, alongside concern-scoped modules (databaseModule, ktorModule, dispatcherModule, firebaseModule) for cross-cutting infrastructure. Requires `viewModelOf(::XxxViewModel)` for simple constructors, `viewModel { … }` for manual wiring, `single` vs `factory` semantics, `named(...)` qualifier for parallel bindings of the same type, all modules merged into a single `appModules` list, `startKoin { modules(appModules) }` only in `Application.onCreate`. Triggers on "add koin module", "koin binding", "viewModelOf", "koin module", "single vs factory", "named qualifier", "startKoin", "loadKoinModules", "feature module", "DI wiring", "inject viewmodel".
wnb-viewmodel-udf
Use this skill when writing, reviewing, or refactoring an Android ViewModel that follows unidirectional data flow (UDF). Enforces a single StateFlow<XxxState>, a sealed XxxAction, one onAction() entry point, injected DispatcherProvider for IO, MutableSharedFlow only for one-shot navigation/toast events, Result.onSuccess/onFailure from repositories, Timber for logging. Applies to Kotlin + Jetpack Compose projects using MVVM + UDF. Triggers on "new viewmodel", "add viewmodel", "refactor viewmodel", "UDF", "UiState", "XxxState", "onAction", "sealed action", "StateFlow", "MutableStateFlow", "unidirectional data flow", "MVI-lite", "one-shot event", "SharedFlow event".
Bio shown is the top-scored skill's repo description as a fallback — real GitHub bios land in a future update.