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 behaviour change, before writing any code.
69
84%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
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 assembleDebug test allTestskmpSmokeCompile to the command when the feature touches a KMP module (most features do) so cross-target compile failures surface before merge.androidApp/proguard-rules.pro and desktopApp/proguard-rules.pro, then verify release builds:
./gradlew assembleFdroidRelease :desktopApp:runReleased003a21
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.