
Claude Skills by ronjunevaldoz
github.com/ronjunevaldozMongoDB Kotlin Coroutine Driver pattern for Kotlin Multiplatform full-stack apps. Covers: server-side MongoDB access, document mapping, repository boundaries, typed database errors, reactive reads with Flow, change streams, and a scaffold script for repeated database setup. Use this for the backend data layer, not shared client persistence.
MVI (Model-View-Intent) architecture pattern for Kotlin Multiplatform + Compose Multiplatform. Covers: the Contract pattern (State/Intent/Effect per screen), MviViewModel base class with StateFlow for state and Channel for one-shot effects, atomic state updates, Compose screen/content split, testing ViewModels with Turbine, and the most common MVI pitfalls in KMP. Zero new dependencies — builds on androidx.lifecycle.ViewModel and kotlinx.coroutines already present in feature-scaffold.
Scaffolds and structures brand-new, first-party C/C++ source for a Kotlin Multiplatform library's native core (a custom renderer, codec, or engine you are writing yourself) — directory layout, CMake setup, public C-ABI header design, and native-side testing. Produces the artifact kmp-jni-pro's Phase 0 discovery expects to find. Does NOT cover bridging Kotlin to native code — that is kmp-jni-pro's job, always used after this skill, never instead of it. Does NOT cover wrapping an existing 3rd-p...
Sets up type-safe navigation in a Kotlin Multiplatform Compose project using Jetpack Navigation Compose for KMP (org.jetbrains.androidx.navigation). Covers: route definitions with kotlinx.serialization, NavHost setup in a :app:shared or :feature:*:ui nav graph, type-safe arguments, deep links, and bottom navigation wiring. Works on Android, iOS, Desktop (JVM), and Web (JS/WasmJs). Assumes the project was scaffolded with kmp-feature-scaffold.
Scaffolds a production-ready Ktor 3 network layer inside :core:network for a Kotlin Multiplatform project. Covers: platform engines (OkHttp/Darwin/CIO/Js) for Android, iOS, Desktop (JVM), and Web (JS + WasmJs), ContentNegotiation, Bearer auth with automatic token refresh (race-condition-safe), structured error mapping to a NetworkResult<T> sealed type, request/response logging, and Koin wiring. Assumes the project was scaffolded with kmp-feature-scaffold.
Offline-first architecture for Kotlin Multiplatform apps — local-first reads, background sync, optimistic updates, conflict resolution, and sync state tracking. Covers: single-source-of-truth via SQLDelight, a SyncManager pattern using WorkManager/BGTaskScheduler, optimistic mutation with rollback, and a SyncState sealed class surfaced to the UI via MVI. Does NOT cover FCM-triggered sync (see push-notifications) or RPC streaming (see kotlin-rpc).
Paging 3 in Kotlin Multiplatform — PagingSource, Pager, PagingData, and collectAsLazyPagingItems for cursor-based and offset-based list loading. Covers layer placement (PagingSource in :data, Pager in :presenter, LazyPagingItems in :ui), load-state handling, RemoteMediator for network+DB, Koin wiring, and testing PagingSource in isolation. Keeps PagingData out of UiState.
Runtime permission handling for Kotlin Multiplatform — a sealed PermissionState type in commonMain, expect/actual PermissionController, Android Activity-based launcher, iOS Info.plist keys and AVFoundation/CoreLocation usage, and cross-platform Compose UI for rationale dialogs.
Sets up the :presenter module in a KMP feature — pure Kotlin ViewModels, MVI UiState/UiIntent contracts, Koin wiring, and convention plugin. No Compose dependency so ViewModels are testable on plain JVM without an Android device or emulator.
ProGuard and R8 obfuscation for KMP Android builds — keep rules for KMP artifacts, Koin, Ktor, SQLDelight, kotlinx.serialization, and Compose. Covers: when to enable minification, writing keep rules without breaking KMP shared code, validating the release APK, and the most common shrinking crashes in KMP projects.
Maintains downstream consumer-facing KMP project documentation only: README, GETTING_STARTED, INSTALL, RELEASING, docs/reference pages, onboarding guides, architecture notes, and architecture diagrams. Use this skill when project docs need to match the actual code, commands, config, folder layout, or app/library structure. Does NOT cover consumer release-note generation, per-skill changelogs, or skills-repo documentation.
Push notification handling for Kotlin Multiplatform — a shared PushToken and NotificationPayload domain type in commonMain, Android FCM token registration and FirebaseMessagingService, iOS APNs token bridging to FCM, NotificationHandler expect/actual for foreground display and tap routing, and deep-link navigation from a notification tap.
Decides whether a rename/move/copy/delete is safe to do as a textual sweep (markdown, config, scripts, skill directories) or must be delegated to a real symbol-aware tool (Android Studio / IntelliJ Refactor, for Kotlin source). Covers the verified textual-rename procedure (git mv, frontmatter/header fix, bulk regex sweep, residue check, full test+gate run) and the module-move checklist against this collection's 6-layer clean-architecture contract. Does NOT implement an AST-level Kotlin rename...
End-to-end KMP library and app release pipeline. Covers versioning strategy (gradle.properties as source of truth), Maven Central publishing via the vanniktech plugin, GPG signing, Sonatype Central Portal, changelog generation with git-cliff and Conventional Commits, GitHub Release creation, secrets management patterns, and — for app targets — deriving platform-native version fields (Android versionCode, iOS CFBundleVersion) from a single semver source. Distinct from the CI skill (which owns ...
Repository pattern in Kotlin Multiplatform — the data layer between domain logic and storage/network. Covers: repository interface in :feature:x:api, implementation in :feature:x:data, single source of truth via SQLDelight Flow, the three fetch strategies (network-first, cache-first, offline-first), NetworkResult-to-domain mapping at the repository boundary, optimistic updates, and the common mistakes of leaking network types into domain and skipping local cache. Requires kmp-network-layer an...
Resilience patterns for Kotlin Multiplatform — retry with exponential backoff and jitter, timeouts, circuit breakers, rate limiting, idempotency keys for safe mutation retries, and transient-vs-fatal error classification. Covers Ktor's built-in HttpRequestRetry (client) and RateLimit (server) plugins, kotlinx.coroutines' withTimeout, and why KMP has no cross-platform circuit-breaker library (Resilience4j is JVM-only) — a hand-rolled state machine is the honest default. Also covers auditing re...
Complete UI layer testing for KMP: semantic test tags on composables, Compose UI interaction tests in commonTest (runComposeUiTest, onNodeWithTag, performClick, assertIsDisplayed) that run on every target — JVM, Android instrumented, iOS simulator, Wasm — and Roborazzi screenshot tests that capture @Preview composables on JVM/Desktop for visual regression detection. Covers the full stack from testTag conventions to CI golden image diffs. Replaces kmp-testing-robot for UI regression testing.
Mobile app security for Kotlin Multiplatform beyond Android-only R8 obfuscation — certificate/SSL pinning (expect/actual, no cross-platform Ktor support exists natively), root/jailbreak/tamper detection via freeRASP's real KMP variant, encrypted local storage via KSafe, iOS/ Kotlin-Native release-binary symbol stripping, and an OWASP Mobile Top 10 2024 coverage map across this collection. Does NOT cover Android-specific R8/ProGuard obfuscation — that's kmp-proguard-r8's own scope, cross- refe...
Composes shadcn-compose's individual Shadcn* components into full page layouts — login/auth forms, generic data-entry forms, data table screens, and admin/dashboard shells — using recipes verified directly against the library's own real source, not assumed by analogy to real shadcn/ui's React blocks. Also audits an existing screen for underutilized shadcn-compose primitives (hand-rolled form fields instead of ShadcnField, hand-rolled tables instead of ShadcnTable, admin shells missing ShadcnS...
Consumes the published shadcn-compose library (io.github.ronjunevaldoz:shadcn-compose) — a shadcn/ui-inspired Compose Multiplatform component library with 70+ components. Covers Maven Central setup, the required @OptIn(ExperimentalFoundationStyleApi::class), the ShadcnTheme wrapper and its preset/baseColor/accent/isDark/baseRadius/ring parameters, and real component usage (ShadcnButton, ShadcnCard, etc.) verified against the library's own source. Alternative to kmp-compose-design-system's gen...
Sets up Compose Multiplatform Resources (compose-resources) for sharing strings, plurals, images, fonts, and raw files across all KMP targets (Android, iOS, Desktop, Web). Covers: resource directory structure, string localization, plurals, image assets, custom fonts, accessing resources from Composables and non-Composable code, and resource module setup. Assumes the project was scaffolded with kmp-feature-scaffold.
Reads docs/lessons/*.md files from one or more consumer KMP projects and proposes concrete amendments to the source skills in kmp-agent-skills. Use this skill when the user wants to incorporate consumer feedback into the skills collection, when lessons have accumulated in a project and need upstreaming, or when running a skills governance review. Produces a structured amendment report and optionally drafts the actual skill diffs. Trigger when the user says "harvest lessons", "upstream the les...
Sets up SQLDelight 2 in a Kotlin Multiplatform project. Covers: Gradle plugin configuration, schema (.sq) files, migrations, type adapters, platform-specific drivers via expect/actual (Android, iOS, Desktop/JVM, Web/JS), coroutines Flow queries, and Koin wiring inside :core:database. Assumes the project was scaffolded with kmp-feature-scaffold.
Token-saving workflow for KMP agent work. Use when the user asks to reduce token usage, shorten replies, compress noisy tool output, or choose the smallest correct solution. Covers Ponytail for YAGNI and overengineering checks, Caveman for terse replies, RTK for shell output compression, and Headroom for tool/log/file/RAG compression when the host is already configured. Headroom stays optional until setup exists; do not block the task on it.
Unit testing patterns for KMP: runTest + Turbine for Flow assertions, fake-over-mock rule, :core:testing shared fixtures module, and ViewModel tests that run on plain JVM via the :presenter module with no Android dependency.
Background task scheduling for Kotlin Multiplatform — WorkManager (Android) and BGTaskScheduler / BGProcessingTask (iOS) behind an expect/actual BackgroundScheduler. Covers one-time work, periodic work, retry with backoff, input/output data, and chained work on Android. iOS uses BGAppRefreshTask for short frequent tasks and BGProcessingTask for long network or maintenance jobs.
Builds an XCFramework from a Kotlin Multiplatform shared module and publishes it as a Swift Package Manager (SPM) binary target. Covers: Gradle XCFramework configuration, assembleReleaseXCFramework task, local SPM Package.swift for development, remote binary SPM target for distribution (GitHub Releases), and Xcode project integration. Assumes AGP 9+ and the project structure from kmp-feature-scaffold.