using-chrisbanes-skills

Use when debugging, benchmarking, or profiling leads into Kotlin or Jetpack Compose source before the cause is known, or when a broad Kotlin or Compose review spans multiple design concerns.

SKILL.md

GitHub

Using chrisbanes skills

Router only. Inspect the Kotlin code and task, choose the smallest relevant focused skill set, then load those skills before giving detailed advice or editing code.

Routing procedure

  1. Read the task and the Kotlin source that makes the code-design concern concrete.
  2. If one focused skill clearly matches, load it directly and stop routing.
  3. Otherwise, match each observed code signal to the table below and load the smallest skill set that covers the work.
  4. Combine skills only when separate concerns affect the same change; do not load adjacent skills speculatively.
  5. Finish routing when every material concern has one focused owner and those skills are loaded before advice or edits.

Common routes

Task signal Start with
Broad Compose screen review or refactor compose-state-hoisting, then add effects, layout, testing, or performance skills as needed
Local Compose state, bare local var, remember { mutableStateOf(...) }, mutableStateListOf, or @ReadOnlyComposable compose-state-authoring
Deciding whether state belongs locally, hoisted, in a plain state holder, or in a screen state holder compose-state-hoisting
ViewModel, component, controller, navigation, Flow collection, or dependency wiring mixed with UI layout compose-state-hoisting
LaunchedEffect, DisposableEffect, SideEffect, rememberCoroutineScope, rememberUpdatedState, navigation, snackbar, analytics, focus requests, or event Flow collection compose-side-effects
Recomposition, jank, compiler reports, Layout Inspector counts, unstable params, scroll reads, animation reads, or back-writing state across phases compose-recomposition-performance
Known Compose stability or skippability question, compiler classes.txt / composables.txt, collection parameters, or strong skipping compose-stability-diagnostics
Frame-rate state reads from scroll, animation, gestures, layout, or draw; value-form layout/draw modifiers; measurement state back-writing compose-state-deferred-reads
Modifier parameters, root layout placement, hardcoded layout decisions, or modifier chain style compose-modifier-and-layout-style
Reusable Compose component API with variable visual content, primitive content params, optional content params, or boolean shape flags compose-slot-api-pattern
Compose visibility, value, color, size, transition, content swap, or choosing an animation API compose-animations
Keyboard, TV, desktop, D-pad, FocusRequester, focusProperties, key events, or initial focus behavior compose-focus-navigation
Compose UI tests, screenshot tests, previews, semantics, fake image loading, keyboard input, focus assertions, or interaction state tests compose-ui-testing-patterns
Coroutine scope ownership, init { launch }, non-suspending APIs that launch work, runBlocking, or cancellation handling kotlin-coroutines-structured-concurrency
Kotlin branching, when expressions, guard conditions, sealed type exhaustiveness, smart casts, nullable branching, or complex if/else chains kotlin-control-flow
StateFlow, SharedFlow, Channel, stateIn, SharingStarted, .value, one-shot events, sentinel initial values, or expensive update blocks kotlin-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 interop kotlin-multiplatform-expect-actual
Kotlin function placement, member vs top-level function, extension functions, factories, primitive receivers, or extensions on String, collections, Flow, framework, or third-party types kotlin-functions
Single-field domain types, primitive obsession, or choosing @JvmInline value class vs data class kotlin-types-value-class
One ready GitHub issue or confirmed conversation specification needs repository-aware planning before a separate implementation session to-plan
Polling or shepherding PRs/MRs, triaging review comments, fixing CI failures, or keeping reviews moving shepherd

Combining skills