mcpField
J
jetpack-compose

jetpack-compose

github.com/aldefyDevelopment59838 installsUpdated 16w ago
Repository

About jetpack-compose

jetpack-compose is a practical guidance skill for developers writing Jetpack Compose code. It combines topic-specific references with bundled AndroidX source code to help diagnose pitfalls and verify implementation details.

Key features

  1. 01Guidance across Compose layers and topics
  2. 02References for state, layout, effects, and navigation
  3. 03Bundled AndroidX implementation source
  4. 04Performance and accessibility guidance
  5. 05Source-file citations for internals

Use cases

  1. 01Troubleshooting Compose state or layout issues
  2. 02Reviewing code for Compose anti-patterns
  3. 03Checking how Compose internals work

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/aldefy/compose-skill --skill jetpack-compose

After installing, type/jetpack-composein Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
accessibility.md
animation.md
composition-locals.md
deprecated-patterns.md
lists-scrolling.md
modifiers.md
navigation.md
performance.md
side-effects.md
state-management.md
styles-experimental.md
theming-material3.md
view-composition.md
references/source-code/
navigation-source.md
runtime-source.md
ui-source.md

Details

From the project README

Jetpack Compose Expert Skill

Non-opinionated, practical guidance for writing correct, performant Jetpack Compose code. Focuses on real pitfalls developers encounter daily, backed by analysis of the actual androidx/androidx source code (branch: androidx-main).

Workflow

When helping with Compose code, follow this checklist:

1. Understand the request
  • What Compose layer is involved? (Runtime, UI, Foundation, Material3, Navigation)
  • Is this a state problem, layout problem, performance problem, or architecture question?
2. Consult the right reference

Read the relevant reference file(s) from references/ before answering:

TopicReference File
@State, remember, mutableStateOf, state hoisting, derivedStateOf, snapshotFlowreferences/state-management.md
Structuring composables, slots, extraction, previewreferences/view-composition.md
Modifier ordering, custom modifiers, Modifier.Nodereferences/modifiers.md
LaunchedEffect, DisposableEffect, SideEffect, rememberCoroutineScopereferences/side-effects.md
CompositionLocal, LocalContext, LocalDensity, custom localsreferences/composition-locals.md
LazyColumn, LazyRow, LazyGrid, Pager, keys, content typesreferences/lists-scrolling.md
NavHost, type-safe routes, deep links, shared element transitionsreferences/navigation.md
animate*AsState, AnimatedVisibility, Crossfade, transitionsreferences/animation.md
MaterialTheme, ColorScheme, dynamic color, Typography, shapesreferences/theming-material3.md
Recomposition skipping, stability, baseline profiles, benchmarkingreferences/performance.md
Semantics, content descriptions, traversal order, testingreferences/accessibility.md
Removed/replaced APIs, migration paths from older Compose versionsreferences/deprecated-patterns.md
Styles API (experimental): Style {}, MutableStyleState, Modifier.styleable()references/styles-experimental.md
3. Apply and verify
  • Write code that follows the patterns in the reference
  • Flag any anti-patterns you see in the user's existing code
  • Suggest the minimal correct solution — don't over-engineer
4. Cite the source

When referencing Compose internals, point to the exact source file:

// See: compose/runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/Composer.kt

Key Principles

  1. Compose thinks in three phases: Composition → Layout → Drawing. State reads in each phase only trigger work for that phase and later ones.

  2. Recomposition is frequent and cheap — but only if you help the compiler skip unchanged scopes. Use stable types, avoid allocations in composable bodies.

  3. Modifier order matters. Modifier.padding(16.dp).background(Color.Red) is visually different from Modifier.background(Color.Red).padding(16.dp).

  4. State should live as low as possible and be hoisted only as high as needed. Don't put everything in a ViewModel just because you can.

  5. Side effects exist to bridge Compose's declarative world with imperative APIs. Use the right one for the job — misusing them causes bugs that are hard to trace.

Source Code Receipts

Beyond the guidance docs, this skill bundles the actual source code from androidx/androidx (branch: androidx-main). When you need to verify how something works internally, or the user asks "show me the actual implementation", read the raw source from references/source-code/:

ModuleSource ReferenceKey Files Inside
Runtimereferences/source-code/runtime-source.mdComposer.kt, Recomposer.kt, State.kt, Effects.kt, CompositionLocal.kt, Remember.kt, SlotTable.kt, Snapshot.kt
UIreferences/source-code/ui-source.mdAndroidCompositionLocals.android.kt, Modifier.kt, Layout.kt, LayoutNode.kt, ModifierNodeElement.kt, DrawModifier.kt
Foundationreferences/source-code/foundation-source.mdLazyList.kt, LazyGrid.kt, BasicTextField.kt, Clickable.kt, Scrollable.kt, Pager.kt
Material3references/source-code/material3-source.mdMaterialTheme.kt, ColorScheme.kt, Button.kt, Scaffold.kt, TextField.kt, NavigationBar.kt
Navigationreferences/source-code/navigation-source.mdNavHost.kt, ComposeNavigator.kt, NavGraphBuilder.kt, DialogNavigator.kt
Two-layer approach
  1. Start with guidance — read the topic-specific reference (e.g., references/state-management.md)
  2. Go deeper with source — if the user wants receipts or you need to verify, read from references/source-code/
Source tree map
compose/
├── runtime/runtime/src/commonMain/kotlin/androidx/compose/runtime/
├── ui/ui/src/androidMain/kotlin/androidx/compose/ui/platform/
├── ui/ui/src/commonMain/kotlin/androidx/compose/ui/
├── foundation/foundation/src/commonMain/kotlin/androidx/compose/foundation/
├── material3/material3/src/commonMain/kotlin/androidx/compose/material3/
└── navigation/navigation-compose/src/commonMain/kotlin/androidx/navigation/compose/

Comments

Markdown supported