The end-to-end workflow for adding a feature to Meshtastic-Android, in the order that keeps KMP source sets and the architecture intact. Use this whenever you start implementing a new feature or a sizeable behavior change, before writing any code.
90%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
A step-by-step workflow for implementing a new feature in the Meshtastic-Android codebase, ensuring KMP compatibility and proper architecture.
gradle/libs.versions.toml before adding libraries.jetbrains-* aliases for lifecycle/navigation/adaptive dependencies in commonMain.compose-multiplatform-* aliases for CMP dependencies.feature/<name>/src/commonMain/kotlin/org/meshtastic/feature/<name>/<Name>ViewModel.kt.stateInWhileSubscribed (from core:ui) for sharing state flows.core:resources (see the compose-ui skill).core:navigation.EntryProviderScope<NavKey> in commonMain (e.g., fun EntryProviderScope<NavKey>.myFeatureGraph()).@Factory, @Single, @KoinViewModel) in commonMain.AppKoinModule.kt, DesktopKoinModule.kt) and the navigation is injected into the root entry provider in the host shell.commonMain, implement it in the host shell, and inject it via CompositionLocal or Koin.testing-ci skill):
./gradlew spotlessApply spotlessCheck detekt detektTypeResolved assembleDebug test allTestskmpSmokeCompile to the command when the feature touches a KMP module (most features do) so cross-target compile failures surface before merge.config/proguard/shared-rules.pro (both R8 and desktop ProGuard apply it), or to androidApp/proguard-rules.pro / desktopApp/proguard-rules.pro when only one platform needs them, then verify release builds:
./gradlew assembleFdroidRelease :desktopApp:runReleasemeshtastic/Meshtastic-Android
1bedc5d
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.