using chrisbanes skills

Skill

Use when a Kotlin, Android, or Jetpack Compose task is too broad for any single focused skill to obviously apply, especially for general review, refactor, architecture, state, performance, testing, or UI API design work.

Files1
  • @skills/using-chrisbanes-skills/SKILL.md

Using chrisbanes skills

Router only. Use this skill to choose the focused skill or skills for the task, then load those focused skills before giving detailed advice or editing code.
If a request already clearly matches a focused skill, use that skill directly. If several areas affect the work, load each relevant focused skill before acting on that area.

Common routes

Task signalStart with
Broad Compose screen review or refactorcompose-state-holder-ui-split, then add state, effects, layout, testing, or performance skills as needed
Local Compose state, bare local var, remember { mutableStateOf(...) }, mutableStateListOf, or @ReadOnlyComposablecompose-state-authoring
Deciding whether state belongs locally, hoisted, in a plain state holder, or in a screen state holdercompose-state-hoisting
ViewModel, component, controller, navigation, Flow collection, or dependency wiring mixed with UI layoutcompose-state-holder-ui-split
LaunchedEffect, DisposableEffect, SideEffect, rememberCoroutineScope, rememberUpdatedState, navigation, snackbar, analytics, focus requests, or event Flow collectioncompose-side-effects
Recomposition, jank, compiler reports, Layout Inspector counts, unstable params, scroll reads, animation reads, or back-writing state across phasescompose-recomposition-performance
Known Compose stability or skippability question, compiler classes.txt / composables.txt, collection parameters, or strong skippingcompose-stability-diagnostics
Frame-rate state reads from scroll, animation, gestures, layout, or draw; value-form layout/draw modifiers; measurement state back-writingcompose-state-deferred-reads
Modifier parameters, root layout placement, hardcoded layout decisions, or modifier chain stylecompose-modifier-and-layout-style
Reusable Compose component API with variable visual content, primitive content params, optional content params, or boolean shape flagscompose-slot-api-pattern
Compose visibility, value, color, size, transition, content swap, or choosing an animation APIcompose-animations
Keyboard, TV, desktop, D-pad, FocusRequester, focusProperties, key events, or initial focus behaviorcompose-focus-navigation
Compose UI tests, screenshot tests, previews, semantics, fake image loading, keyboard input, focus assertions, or interaction state testscompose-ui-testing-patterns
Coroutine scope ownership, init { launch }, non-suspending APIs that launch work, runBlocking, or cancellation handlingkotlin-coroutines-structured-concurrency
Kotlin branching, when expressions, guard conditions, sealed type exhaustiveness, smart casts, nullable branching, or complex if/else chainskotlin-control-flow
StateFlow, SharedFlow, Channel, stateIn, SharingStarted, .value, one-shot events, sentinel initial values, or expensive update blockskotlin-flow-state-event-modeling
Kotlin Multiplatform platform APIs, source set boundaries, expect/actual, interfaces for platform services, permissions, files, sensors, native SDKs, or Compose Multiplatform interopkotlin-multiplatform-expect-actual
Single-field domain types, primitive obsession, or choosing @JvmInline value class vs data classkotlin-types-value-class
Polling or shepherding PRs/MRs, triaging review comments, fixing CI failures, or keeping reviews movingshepherd

Combining skills

using-chrisbanes-skills — Kortix Marketplace | Kortix