Help us improve
Share bugs, ideas, or general feedback.
Share bugs, ideas, or general feedback.
Share bugs, ideas, or general feedback.
By chrisbanes
Guides Kotlin developers through Jetpack Compose best practices: animation selection, focus navigation, layout patterns, recomposition debugging, side effects, state hoisting, and UI testing. Covers Kotlin Multiplatform expect/actual design, coroutine structured concurrency, and Flow state/event modeling.
npx claudepluginhub chrisbanes/skills --plugin chrisbanes-skillsUse when writing or reviewing Jetpack Compose motion: visibility enter/exit, animating one property toward a target, color or size transitions, multiple properties from one state, switching composable content, or choosing between AnimatedVisibility, animate*AsState, rememberTransition, AnimatedContent, and Crossfade.
Use when writing or reviewing Jetpack Compose UI for TV, keyboard, desktop, accessibility focus, D-pad navigation, FocusRequester, focusProperties, key events, or initial focus behavior.
Use when writing or reviewing Jetpack Compose layout APIs, modifier parameters, modifier chain construction, hardcoded root layout decisions, or layout wrappers around a single conditional.
Use when investigating Jetpack Compose recomposition performance, skippable/restartable composables, composables.txt or compiler reports, Layout Inspector recomposition counts, back-writing snapshot state across phases, or frame-rate State reads in composition vs layout/draw, and it is not yet clear whether the cause is parameter stability, deferred reads, or cross-phase back-writing.
Use when writing or reviewing Jetpack Compose code with LaunchedEffect, DisposableEffect, SideEffect, rememberCoroutineScope, rememberUpdatedState, snapshotFlow, snackbar, navigation, focus requests, analytics, or event Flow collection.
Share bugs, ideas, or general feedback.
Own this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge.
Sign in to claimOwn this plugin?
Verify ownership to unlock analytics, metadata editing, and a verified badge.
Sign in to claimBased on adoption, maintenance, documentation, and repository signals. Not a security audit or endorsement.
Compose and Compose Multiplatform expert skill — state, animations, navigation, performance, design-to-code, PR review mode, M3 motion.
Android and Kotlin development with Jetpack Compose
Expert guidance for Kotlin Coroutines: structured concurrency, safe scopes, Dispatchers, cancellation, exception handling, and testing. Use when reviewing or writing Kotlin/Android async code. Includes a playbook and per-practice reference files.
Production best practices for Decompose — Kotlin Multiplatform navigation and component lifecycle library. Provides slash commands and auto-invoked skills covering component structure, all navigation models (Stack, Slot, Pages, Panels), Compose UI integration, and platform setup (Android, iOS, Desktop, Web).
Material Design 3 (Material You) implementation skill for Jetpack Compose, Flutter, and web.
Advanced Kotlin programming skills for coroutines and DSL patterns
Orchestration and plan-to-project skills for Vibe Kanban — checks for open tasks, manages workspace lifecycle, starts new workspaces, and creates issues from plans.
A set of skills for Kotlin, Jetpack Compose, and Android development.
With the skills CLI:
npx skills add chrisbanes/skills
Or install as a Claude Code plugin:
/plugin marketplace add chrisbanes/skills
/plugin install chrisbanes-skills@chrisbanes-skills
compose-state-authoring, compose-state-hoisting, compose-state-holder-ui-split, or compose-side-effects.compose-recomposition-performance.kotlin-flow-state-event-modeling or kotlin-coroutines-structured-concurrency.compose-state-authoring — author Compose local mutable state and read-only composable accessors correctly.compose-state-hoisting — decide whether Compose UI element state belongs in local remember state, hoisted parameters, a plain state holder class, or a screen-level state holder.compose-state-holder-ui-split — split Compose state-holder wiring from plain-state UI for previewable and testable screens.compose-side-effects — choose and key Compose effect APIs for event Flow collection, callbacks, cleanup, navigation, snackbar, analytics, and other side effects.compose-recomposition-performance — route stability, deferred reads, and cross-phase back-writing.compose-stability-diagnostics — diagnose Compose compiler reports, strong skipping behavior, unstable parameters, and stability fixes.compose-state-deferred-reads — move frame-rate reads out of composition; avoid back-writing snapshot state across phases and cross-row measurement reads in composition.compose-modifier-and-layout-style — keep Compose layout APIs caller-placeable and modifier chains readable.compose-slot-api-pattern — design reusable Compose components whose variable visual regions are caller-provided slots.compose-animations — choose Compose animation APIs for visibility, value targets, coordinated transitions, and content swaps; align with official quick guide and decision tree.compose-focus-navigation — design and test keyboard, TV, D-pad, and focus-first Compose navigation behavior.compose-ui-testing-patterns — choose between plain UI tests, semantics assertions, key/focus tests, interaction state tests with MutableInteractionSource, screenshot tests, and integration tests.kotlin-coroutines-structured-concurrency — review coroutine scope ownership, init and fire-and-forget boundaries, cancellation handling, and blocking boundaries.kotlin-flow-state-event-modeling — model StateFlow, SharedFlow, Channel, stateIn, sharing policy, and one-shot events without lossy defaults.kotlin-multiplatform-expect-actual — design semantic expect/actual and interface boundaries for Kotlin Multiplatform platform interop.kotlin-types-value-class — choose @JvmInline value class over data class for single-field domain types, including Compose stability implications.Skills live at skills/<skill-name>/SKILL.md, flat (no language nesting). The name: in the SKILL.md frontmatter must match the directory name.
Frontmatter is validated against skills.schema.json — name and description are required, name must be kebab-case.
Before pushing, lint skills (frontmatter schema + markdown):
npm install
npm run lint
This also runs on CI for all PRs.