Using chrisbanes skills

Core principle

Route by the decision the code needs, not by the number of APIs mentioned in the prompt. Load one cluster when its shared procedure owns the concern; add a specialist only when its independent behavior changes the same work.

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. Before loading a Compose skill, point to a concrete Compose API or composable in the inspected source, or to an explicit request to create or design Compose code. A hypothetical UI consumer is not evidence. If neither form of evidence exists, stay in the Kotlin cluster even when the task mentions UI, routes, or navigation.
  4. Otherwise, match each observed code signal to the table below and load the smallest skill set that covers the work.
  5. Combine skills only when separate concerns affect the same change; do not load adjacent skills speculatively.
  6. Finish routing when every material concern has one focused owner and those skills are loaded before advice or edits.

Common routes

Task signalStart with
Broad Compose screen review, local or hoisted UI state, screen state holders, effect APIs, navigation effects, snackbar, analytics, focus requests, or event Flow collection where Compose APIs, a composable screen, or an explicit greenfield Compose request is evidencedcompose-state-and-effects
Recomposition, jank, compiler reports, skippability, unstable parameters, frame-rate State reads, back-writing, or @ReadOnlyComposablecompose-performance
Modifier parameters, root layout placement, variable visual content, primitive content parameters, optional content, or Boolean shape flagscompose-component-design
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 launch APIs, runBlocking, cancellation, StateFlow, SharedFlow, Channel, stateIn, or one-shot eventskotlin-concurrency-and-flow
Kotlin branching, when expressions, guard conditions, sealed type exhaustiveness, smart casts, nullable branching, or complex if/else chainskotlin-control-flow
Kotlin function placement, member versus top-level or extension functions, factories, single-field domain types, value classes, Kotlin Multiplatform source sets, expect/actual, or platform serviceskotlin-api-design
Planned Gradle execution, a compact Gradle workflow ledger, repeated Gradle failure fingerprints, or a Gradle-centered build, check, warning-cleanup, or failure workflow, including a diagnosis that should stop before another rungradle-run
One ready GitHub issue or in-chat task needs repository-aware planning before a separate implementation sessionto-plan
Polling or shepherding PRs/MRs, triaging review comments, fixing CI failures, or keeping reviews movingshepherd

Combining skills

RED/GREEN agent scenarios

  1. RED loads every Compose skill for a screen with local state and a snackbar. GREEN loads compose-state-and-effects first and adds another skill only for an evidenced concern.
  2. Novel case: a reusable card has a modifier problem and animated height. GREEN uses compose-component-design plus compose-animations, not the state cluster by default.
  3. Counterexample: a request only changes a guard condition in common Kotlin. GREEN loads kotlin-control-flow and does not route through API design.
  4. Novel case: plain Kotlin one-shot route delivery and a sealed data-route renderer are reviewed together. GREEN loads kotlin-concurrency-and-flow and kotlin-control-flow, not the Compose state cluster; mentioning a hypothetical UI collector is not Compose evidence.
  5. Greenfield case: a task explicitly asks to design a new composable that collects a one-shot Flow. GREEN loads compose-state-and-effects and kotlin-concurrency-and-flow even though the composable does not exist yet.
  6. Stop case: a compact Gradle ledger repeats the same primary source failure. GREEN loads gradle-run, stops the rerun loop, and names focused source inspection before any fix or command.

Run your whole company from one repo you own.

Start with one job and grow from there.