skills/kmp/bill-kmp-code-review-ui/SKILL.md
Use when reviewing or building KMP UI surfaces. Today this skill is implemented with Jetpack Compose-specific guidance, but it is the canonical KMP UI review capability so future platform UI guidance can live behind the same slash command. Enforces state hoisting, proper recomposition handling, slot-based APIs, accessibility, theming, string resources, preview annotations, and official UI framework guidelines. Use when user mentions Compose review, UI review, recomposition, state hoisting, or Composable code.
npx skillsauth add sermilion/mobile-development-plugin bill-kmp-code-review-uiInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
If .agents/skill-overrides.md exists in the project root and contains a ## bill-kmp-code-review-ui section, read that section and apply it as the highest-priority instruction for this skill. The matching section may refine or replace parts of the default workflow below.
If an AGENTS.md file exists in the project root, apply it as project-wide guidance.
Precedence for this skill: matching .agents/skill-overrides.md section > AGENTS.md > built-in defaults.
The canonical KMP UI review command stays bill-kmp-code-review-ui. Governed add-ons apply only after the parent review has already routed to kmp.
When the parent KMP review selects the android-compose add-on, scan android-compose-review.md first. If the add-on is split into topic files, open only the linked topic files whose cues match the diff, such as android-compose-edge-to-edge.md and android-compose-adaptive-layouts.md.
When the parent KMP review selects android-navigation, scan android-navigation-review.md first and apply any Android-specific UI risks from it alongside the base Compose review rubric.
When the parent KMP review selects android-interop, scan android-interop-review.md first and apply any Android-specific UI risks from it alongside the base Compose review rubric.
When the parent KMP review selects android-design-system, scan android-design-system-review.md first and apply any Android-specific UI risks from it alongside the base Compose review rubric.
When no governed add-on applies, keep Selected add-ons: none and use the base Compose review rubric by itself.
For review enforcement, read compose-guidelines.md as the Compose review rubric covering: state hoisting, signature conventions, recomposition & performance, theming, string resources, composable structure, side effects, navigation, previews, error/loading states, UI element selection, modifier best practices, and ViewModel integration.
Apply every section from compose-guidelines.md as a review checklist when reviewing @Composable code. Use the governed add-on only to extend the routed KMP review with transferable Android/Compose concerns; do not treat it as a standalone review command.
Every finding must use this exact bullet format for downstream tooling:
- [F-001] <Severity> | <Confidence> | <file:line> | <description>
Do NOT use markdown tables, numbered lists, or any other format for findings.
Before considering a composable done, verify:
modifier: Modifier = Modifier on every public/internal composable below screen levelmodifier applied only to root elementstringResource@Immutable / ImmutableList / primitivescollectAsStateWithLifecycle() for flow collectionrememberSaveable for state surviving config changesLazyColumn / LazyRow items have key and contentTypecontentDescriptionLaunchedEffect, DisposableEffect, etc.)NavController in screen composables — navigation via lambdasModifier.testTag on key interactive elementsdevelopment
Use when running a governed editorial assignment desk from Readian recommendations through candidate selection and source-backed story packs.
testing
Use when reviewing unit tests in a file, current changes, or a commit to flag low-value, tautological, or coverage-only tests that do not validate real behavior. Use when user mentions check test quality, review tests, tautological tests, weak tests, or coverage-padding.
data-ai
Use when removing an existing skill or platform skill set and cleaning up agent installs, manifests, and supporting links.
development
Use when you want a generic quality-check entry point that detects the dominant stack in scope and delegates to the matching stack-specific quality-check skill. Use when user mentions run checks, validate, lint, format, quality check, or run quality.