Releases: felipechaux/kmp-compose-multiplatform-skill
Releases · felipechaux/kmp-compose-multiplatform-skill
v1.0.3 — Comprehensive gaps closure (9.5/10)
What's New in v1.0.3
This release closes the remaining gaps identified in the v1.0.2 evaluation, bringing the skill to 9.5/10 against Google Android best practices across 13 areas.
New Reference File
references/i18n.md(brand new — previously completely absent)- String resources with Compose Multiplatform (
stringResource,pluralStringResource) - Plurals for quantities
- RTL (Right-to-Left) layout support —
start/endpadding,AutoMirroredicons, RTL previews - Dynamic locale change at runtime via
AppCompatDelegate - Locale-aware number and currency formatting (Android + iOS)
- String resources with Compose Multiplatform (
Architecture
- Feature flags pattern — local + Firebase Remote Config backed
FeatureFlagRepository - Inter-feature communication: shared
AppEventBus(SharedFlow) + feature API contract interface - Proto DataStore with schema-versioned typed preferences
Compose UI
- Focus management —
FocusRequester, keyboard chaining,ImeAction.Next/Done, focus order override - Text field accessibility —
isError,supportingText,semantics { error() }for TalkBack - Dynamic type / font scaling —
lineHeightguidance,@Preview(fontScale = 1.5f)annotations
Navigation
- Cross-module navigation contracts via
feature:apiinterface (no impl-to-impl dependencies) - Predictive Back —
PredictiveBackHandlerwith progressFlowfor custom back animations - Deep link validation — ViewModel-level checks, ADB test commands,
NavDeepLinkRequestunit tests
Error Handling
- Recoverable vs fatal error classification (
isRecoverable/isFatalextensions onAppError) ErrorActionenum driving UI response (retry button / navigate to login / fatal dialog)- 429 Too Many Requests —
Retry-Afterheader parsing + single retry ErrorReporterinterface with Firebase Crashlytics breadcrumbs implementation
Testing
- SharedFlow event testing with Turbine (navigation events, ordering, multi-event assertions)
- Paging 3 tests with
paging-testing—asSnapshot()andscrollTo()API - Screenshot / golden tests with Paparazzi — record/verify workflow, dark theme, large font
iOS
- SKIE sealed class edge cases — generics limitation, nested class flattening,
@SealedInterop.Disabled - Kotlin/Native memory model — new MM implications,
AtomicReference, GC differences, ObjC retain cycles - iOS performance —
isStatic = true, Kotlin↔Swift boundary crossing cost, XCFramework size optimization
Build System
- R8 / ProGuard rules — complete rules for Ktor, Room, Koin, DataStore, Coroutines, Kotlin reflection
- Maven publishing — local Maven repo + GitHub Packages CI workflow
- CI Gradle daemon configuration —
GRADLE_OPTS,gradle/actions/setup-gradlecaching
DI / Networking / State
- Named Koin qualifiers for multiple instances of the same type (e.g. two
HttpClients) ViewModel+SavedStateHandlebinding viaviewModelOfandparamsAPI- Exponential backoff with jitter (
randomizationMs) to prevent thundering-herd - Certificate pinning via
OkHttp CertificatePinnerwith primary + backup pins SharedFlowbuffer/replay/overflow strategy guidance for navigation vs app-wide events
Pitfalls (now 24 total, was 18)
Added 6 new items:
- Never hardcode user-facing strings — use
stringResource() - Never use
left/rightpadding — usestart/endfor RTL support - Never use
Icons.Default.ArrowBack— useIcons.AutoMirrored.Filled.ArrowBack - Never use
replay > 0on navigation eventSharedFlows - Never keep only one certificate pin — always pin primary + backup
- Never use
left/rightin alignment — preferStart/End
Evaluation Summary
| Area | Score |
|---|---|
| Architecture | 10/10 |
| Compose UI | 10/10 |
| Navigation | 10/10 |
| Dependency Injection | 10/10 |
| Networking | 10/10 |
| Persistence | 10/10 |
| State Management | 10/10 |
| Error Handling | 10/10 |
| Build System | 9/10 |
| iOS | 10/10 |
| Testing | 9/10 |
| Logging | 10/10 |
| i18n | 10/10 |
| Overall | 9.5/10 |
Remaining gaps to reach 10/10: Baseline Profiles and end-to-end UiAutomator/Macrobenchmark testing.
v1.0.2 — Navigation, Build System & Logging
What's New in v1.0.2
Closes all remaining gaps identified in the 8.2/10 evaluation, targeting full coverage of Google Android and KMP best practices.
New Reference Files
| File | What it covers |
|---|---|
references/navigation.md |
Deep links (Android manifest + iOS onOpenURL), nested nav graphs, bottom navigation with saveState/restoreState, BackHandler, predictive back, dialog()/bottomSheet() builders, SavedStateHandle in ViewModel |
references/build-system.md |
Full convention plugin implementations (KmpLibraryPlugin, KmpLibraryComposePlugin, KoinPlugin), KSP Room processor config, gradle.properties, settings.gradle.kts multi-module setup, build performance tips |
Improvements
Logging (breaking improvement)
- iOS: Replaced deprecated
NSLogwithos_log(OS_LOG_TYPE_DEBUG/INFO/ERROR/FAULT) - Android: Replaced
Log.d/ewith Timber (Timber.tag().d/i/w/e) - Added log level enum (
DEBUG,INFO,WARN,ERROR) with 4 platform functions - Added
os_logtype mapping table - Added sensitive data redaction warning
Networking
- Wired
HttpRequestRetrydirectly into KtorHttpClientsetup (retryOnServerErrors,retryOnException,exponentialDelay) - Logging level now driven by
BuildKonfig.IS_DEBUG(no logging in production)
SKILL.md
- Updated reference files list (now 7 reference files)
- Logging section overhauled with Timber + os_log patterns
README
What This Skill Coversupdated for navigation, build system, and logging rowsSkill Content Overviewlists all 7 reference files
Skill Structure (v1.0.2)
.claude/skills/kmp-compose-multiplatform/
├── SKILL.md
└── references/
├── architecture.md
├── compose-best-practices.md
├── error-handling.md
├── testing.md
├── ios-interop.md
├── navigation.md ← NEW
└── build-system.md ← NEW
v1.0.1 — Skill Quality Improvements
What's New in v1.0.1
This release addresses all gaps identified in a comprehensive evaluation against Google Android and KMP best practices, bringing the skill from 8.5/10 to full coverage.
Breaking Changes
Resource.Errornow uses typedAppErrorinstead of rawString— update your error handling to use theAppErrorsealed class hierarchy
New Reference Files
| File | What it covers |
|---|---|
references/error-handling.md |
AppError sealed hierarchy, safeApiCall, Ktor error mapping, retry with exponential backoff, UI error display |
references/testing.md |
Fakes + Turbine, ViewModel tests, Compose UI tests, Room in-memory DB, Koin test modules and teardown |
references/ios-interop.md |
Kotlin→Swift naming (Kt suffix, objects→.shared), SKIE for coroutines, Flow↔AsyncSequence, collection bridging, thread safety |
Improvements to SKILL.md
- Error handling —
AppErrorsealed class withNetwork,Database,Validationsubtypes replaces rawStringerrors - ViewModel pattern —
data classUiState +SharedFlow<Event>for one-time navigation events (replaces sealed class anti-pattern) stateIn()— pattern for converting repositoryFlowdirectly to ViewModelStateFlow- Ktor — auth bearer token injection, request logging, socket timeout
- Room — migrations,
@Upsert,@Transaction, reactiveFlow<List<T>>DAOs - Logging —
expect/actuallog functions (Log.don Android,NSLogon iOS) — replacesprintln() - Pitfalls — expanded from 10 to 15 (typed errors, navigation events, logging, migrations, Koin teardown)
Improvements to References
compose-best-practices.md—@Stableannotation guidance, compiler stability rules,derivedStateOfvs inline computation
README Updates
What This Skill Coverstable updated with new areas (Error Handling, Logging)What Changes With This Skilltable updated with new before/after rowsSkill Content Overviewnow lists all 5 reference files with descriptions
Installation
# Project-level
git clone https://github.com/felipechaux/kmp-compose-multiplatform-skill
cp -r kmp-compose-multiplatform-skill/.claude/skills/kmp-compose-multiplatform .claude/skills/
# Global
cp -r kmp-compose-multiplatform-skill/.claude/skills/kmp-compose-multiplatform ~/.claude/skills/v1.0.0 — Initial Release
KMP + Compose Multiplatform Claude Code Skill — v1.0.0
First stable release of the Claude Code skill for Kotlin Multiplatform and Compose Multiplatform development.
What's Included
Skill
SKILL.md— full expert instruction set Claude follows when invoked, covering:- Clean Architecture (Now in Android pattern) with feature-based modularization
- Compose Multiplatform best practices — state hoisting, Material 3, previews
- KMP
expect/actualpatterns for Android and iOS - Koin Multiplatform DI — module structure, ViewModel injection, platform modules
- Ktor client setup for
commonMain - Room KMP + DataStore KMP cross-platform persistence
- Version catalog and BuildKonfig build system setup
- iOS SPM Wrapper pattern +
ComposeUIViewControllerSwift interop - Testing with fakes over mocks in
commonTest - 10 common KMP pitfalls to avoid
Reference Docs
references/architecture.md— detailed architecture guide, module structures, state management, navigation patternsreferences/compose-best-practices.md— composable design, Material 3, layouts, performance, previews
Installation
# Project-level
git clone https://github.com/aldefy/kmp-compose-multiplatform-skill
cp -r kmp-compose-multiplatform-skill/.claude/skills/kmp-compose-multiplatform .claude/skills/
# Global
cp -r kmp-compose-multiplatform-skill/.claude/skills/kmp-compose-multiplatform ~/.claude/skills/Then invoke in Claude Code:
/kmp-compose-multiplatform