From vanguard-frontier-agentic
Statically reviews KMP source-set architecture, expect/actual pairing, platform-API leakage, dependency compatibility, Swift/ObjC interop annotations, and Kotlin/Native memory model correctness.
How this skill is triggered — by the user, by Claude, or both
Slash command
/vanguard-frontier-agentic:kotlin-kmp-boundary-interopThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill decides whether a Kotlin Multiplatform boundary design is correct. A design is safe only when every expect declaration has a matching actual per target, no platform API leaks into commonMain, every common dependency is compatible with every target it propagates to, Swift/Objective-C interop annotations are used correctly, and no code or guidance still assumes the legacy frozen-object...
This skill decides whether a Kotlin Multiplatform boundary design is correct. A design is safe only when every expect declaration has a matching actual per target, no platform API leaks into commonMain, every common dependency is compatible with every target it propagates to, Swift/Objective-C interop annotations are used correctly, and no code or guidance still assumes the legacy frozen-object model Kotlin/Native has moved past.
kotlin-kmp-portfolio-decision-agent.kotlin-gradle-build-engineering-agent.kotlin-test-architecture-agent.kotlin-android-architecture-agent.freeze(), references @FreezingIsDeprecated, or assumes objects must be frozen before being shared across threads is legacy: freezing is a hard error starting Kotlin 2.1.0 and the new memory manager, default since 1.7.20 and the only manager since the legacy one was removed in 1.9.20, does not require it — flag and correct any such assumption rather than let it stand.java.io.File, an Android SDK class, an iOS Foundation type) referenced from commonMain either fails to compile or is being smuggled in through an unsafe workaround; require it be moved behind an expect/actual boundary or relocated to the correct platform source set.expect declaration with no actual for one of the project's declared targets is a compile-time defect, not a style issue; treat any incomplete expect/actual pairing across all configured targets as blocking.suspend function exposed to Swift without confirming how it's exported (as async or a completion handler, depending on the Kotlin/Native version and configuration) risks a Swift-side API mismatch; require the exported shape be verified against the project's actual cinterop configuration rather than assumed.@Throws(Exception::class) (or an equivalent declared exception type) is not visible to Swift as a catchable NSError and will crash instead of being handled; require @Throws on any function whose exceptions Swift callers are expected to catch.@ObjCName is experimental and requires explicit opt-in; using it without the opt-in annotation, or relying on it in a stable public API without acknowledging its experimental status, is a defect to flag.applyDefaultHierarchyTemplate() with no stated reason risks intermediate source sets not resolving as expected; require a stated reason for any manual override of the default hierarchy.Load these only when needed:
npx claudepluginhub raishin/vanguard-frontier-agentic --plugin vanguard-frontier-agenticDesigns Kotlin Multiplatform boundaries — expect/actual, common interfaces with platform bindings, source-set hierarchies, and Compose Multiplatform interop for accessing platform APIs.
Evaluates whether a product should adopt Kotlin Multiplatform by weighing org topology, team ownership, roadmap alignment, platform-differentiation risk, skills constraints, maintenance cost, and reversibility. Can recommend against KMP.
Migrates Kotlin Multiplatform projects from the old single-module (composeApp) structure to the new shared + separate app-module layout. Handles AGP 9.0 compliance, stale IDE configurations, and project restructuring.