What problem does it solve? Kotlin Multiplatform projects lack consistent formatting, accumulate code smells, and suffer silent architecture violations (like :ui importing from :data) that Gradle dependency declarations alone cannot catch. This Skill wires Ktlint and Detekt into a KMP project as enforced CI gates, including the non-obvious KMP source-set wiring that makes Detekt actually analyze commonMain code. ## Core Features & Use Cases - Ktlint Setup: Convention-plugin-based Ktlint configuration with .editorconfig tuning, ktlintFormat locally and ktlintCheck as a CI gate. - Detekt Setup: Full detekt.yml with complexity, performance, naming, and comment rules, plus custom architecture rules (NoComposeInPresenter, NoDataInUi, NoDomainInUi) enforcing the 6-layer module boundary contract. - KMP Source-Set Wiring: Fixes the silent no-op where ./gradlew detekt reports BUILD SUCCESSFUL while scanning nothing on multiplatform modules, by wiring detektMetadataCommonMain and sibling tasks into check. - Conventions References: In-depth guides for Android Kotlin naming conventions, comment/KDoc conventions, scope functions, exception design, and library pattern choices. - Use Case: A team bootstrapping a KMP project runs this Skill to add both linters via build-logic convention plugins, then adds the provided GitHub Actions lint job so every PR fails on formatting or layer violations. ## Quick Start Set up Ktlint and Detekt with architecture rules as CI gates in my Kotlin Multiplatform project using convention plugins.