enforcing-stability-in-ci

Configures a CI gate that fails builds on Jetpack Compose stability regressions using committed baselines.

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

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Jetpack Compose stability silently regresses when a new var or unstable parameter slips into a shared data class, disabling skipping across many screens with no build warning. This Skill sets up a CI gate that diffs a committed stability baseline on every pull request and fails the build when stability regresses. ## Core Features & Use Cases - Baseline generation and validation: Applies the skydoves/compose-stability-analyzer Gradle plugin, configures the composeStabilityAnalyzer { stabilityValidation { ... } } DSL, generates .stability baseline files with :stabilityDump, and enforces them with :stabilityCheck. - CI integration: Wires stabilityCheck into a GitHub Actions job alongside assemble, uploads stability diff reports on failure, and defines rules for justified baseline updates and conservative ignore lists. - Multiplatform alternative: Points to j-roskopf/ComposeGuard for Compose Multiplatform (KMP, desktop, iOS) projects outside the Android Gradle plugin. - Use Case: A team migrating a large app to strong skipping adds the plugin to every UI module, commits the .stability baseline, and any PR that turns a val into a var in a shared data class turns the PR check red with the regressed composable named. ## Quick Start Ask the AI to set up the compose-stability-analyzer plugin in your Gradle modules, generate and commit the stability baseline, and add a stabilityCheck step to your CI workflow.

Frequently Asked Questions about enforcing-stability-in-ci

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

FAQPage Schema
How do I fail the build on Compose stability regressions in CI?▼

Apply the skydoves compose-stability-analyzer Gradle plugin, enable stabilityValidation with failOnStabilityChange set to true, commit the .stability baseline generated by :stabilityDump, and run :stabilityCheck in your CI job. The task diffs the current snapshot against the baseline and fails on regression.

compose-stability-analyzer vs ComposeGuard for stability checks?▼

The skydoves compose-stability-analyzer is the primary choice for Android-only projects and integrates with @TraceRecomposition for runtime correlation. ComposeGuard is the alternative for Compose Multiplatform projects (KMP, desktop, iOS) outside the Android Gradle plugin, exposing equivalent generate and check tasks.

Does the compose-stability-analyzer plugin work with Kotlin Multiplatform?▼

The skydoves plugin targets Android projects using the Android Gradle plugin. For Compose Multiplatform targets like desktop or iOS via KMP, use j-roskopf/ComposeGuard, which implements the same commit-a-baseline and fail-on-diff workflow.

Why does stabilityCheck always pass in my CI pipeline?▼

The most common cause is writing the .stability baseline into the build/ directory, which is gitignored and never committed. Every CI run then starts without a baseline and the check no-ops. Set outputDir to a path inside the module and commit the files.

When should I update the Compose stability baseline?▼

Update the baseline with :stabilityDump only when a regression is intentional, such as an interop boundary requiring a Java POJO. Commit the updated baseline with a PR description explaining the justification, since the plain-text diff is reviewable like a binary-compatibility baseline.

When should I not set up a Compose stability CI gate?▼

Skip it for single-developer throwaway prototypes where baseline maintenance costs more than it saves. Also do not baseline a known-bad state; diagnose and fix existing stability problems first, otherwise the gate locks the brokenness in.