validating-compose-stability

Gate CI on Jetpack Compose stability regressions using stabilityDump and stabilityCheck baselines.

1|Updated Jul 6, 2026
One-click install
npx skills add https://github.com/citytexi/team-yg-pesonal-agent --skill validating-compose-stability-citytexi
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: validating-compose-stability
Source: https://github.com/citytexi/team-yg-pesonal-agent/tree/main/.claude/skills/validating-compose-stability
Command: npx skills add https://github.com/citytexi/team-yg-pesonal-agent --skill validating-compose-stability-citytexi

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Jetpack Compose stability issues — a composable becoming unskippable or a parameter flipping from stable to unstable — are invisible until recomposition regressions hit production. This Skill turns stability into a build gate: snapshot every composable's stability into a committed .stability baseline and fail CI when a change makes anything less stable. ## Core Features & Use Cases - Baseline generation: Run stabilityDump to write a human-readable .stability file per module and commit it as the team's shared contract. - CI regression gating: Run stabilityCheck after compilation to compare current output against the baseline, failing the build on ~ regressions while optionally ignoring non-regressive changes. - Deliberate baseline updates: Accept intentional stability changes through reviewed stabilityDump commits with justification, and exclude @Preview or scaffolding composables via @IgnoreStabilityReport and ignored* lists. - Use Case: A PR adds a List<Pokemon> parameter to a hot composable; the CI stability job (with needs: build) fails, naming the composable and its stability change, before the regression ships. ## Quick Start Set up the Compose Stability Analyzer plugin in my Gradle module, generate and commit the stability baseline, and wire a stabilityCheck job into my GitHub Actions CI that fails on regressions.

Frequently Asked Questions about validating-compose-stability

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I fail CI on Jetpack Compose stability regressions?▼

Apply the Compose Stability Analyzer Gradle plugin, generate a baseline with stabilityDump, commit the .stability file, then run stabilityCheck in CI with failOnStabilityChange set to true. The build fails when a composable becomes less stable, naming the affected composables.

What is the difference between stabilityDump and stabilityCheck?▼

stabilityDump writes the current stability of every composable into a .stability baseline file. stabilityCheck compares the current compilation against that committed baseline and reports regressions (~), additions (+), and removals (-), failing the build on regressions.

Why does stabilityCheck fail or give wrong results in CI?▼

The analyzer reads compiled Compose compiler output, so stabilityCheck must run after Kotlin compilation. In GitHub Actions, give the stability job needs: build, or run compileDebugKotlin in the same Gradle invocation before the check.

How do I exclude @Preview composables from the stability baseline?▼

Annotate preview or scaffolding composables with @IgnoreStabilityReport so they drop out of both the dump and the check. For whole packages, classes, or modules, use the ignoredPackages, ignoredClasses, and ignoredProjects options in the stabilityValidation block.

Can stabilityCheck run in warning-only mode locally but strict in CI?▼

Yes. Set failOnStabilityChange based on the CI environment variable, for example failOnStabilityChange.set(System.getenv("CI") == "true"). Most CI platforms set CI=true, so local builds warn while the server hard-fails on regressions.

When should I not regenerate the stability baseline?▼

Never run stabilityDump just to make a failing check pass — that silently ships the regression. Only regenerate the baseline after investigating the ~ entries and deciding the change is justified, with a commit message documenting the reason.