
Opinionated Gradle plugins delivering sensible defaults for app modules: automatic namespace generation, Compose integration, DI and baseline-profile tooling, code formatting, and optimized build/test setup.
This repository contains Gradle plugins that are used to build Kotlin Multiplatform and Android
projects. They hold the setup every module would otherwise repeat (targets, compiler flags, test
dependencies), so a module's build file only declares the choices that are its own, inside a
scaffold {} block.
plugins {
id("io.github.thomaskioko.gradle.plugins.multiplatform")
}
scaffold {
addJvmTarget()
addIosTargets()
addAndroidTarget()
useMetro()
}The repository also contains a KSP code generator and a ktlint rule set. The code generator writes the navigation graph for an annotated presenter. The rules cover conventions the type system can't enforce.
https://thomaskioko.github.io/app-gradle-plugins/
scaffold {}../gradlew build # the root build
./gradlew spotlessApplyAll # format everything
./gradlew buildHealthAll # check dependencies
./gradlew dokkaAll # build the API reference
./deploy_website.sh --local # read the site while editing itReleasing is documented in RELEASING.md.
Copyright 2025 Thomas Kioko
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
This repository contains Gradle plugins that are used to build Kotlin Multiplatform and Android
projects. They hold the setup every module would otherwise repeat (targets, compiler flags, test
dependencies), so a module's build file only declares the choices that are its own, inside a
scaffold {} block.
plugins {
id("io.github.thomaskioko.gradle.plugins.multiplatform")
}
scaffold {
addJvmTarget()
addIosTargets()
addAndroidTarget()
useMetro()
}The repository also contains a KSP code generator and a ktlint rule set. The code generator writes the navigation graph for an annotated presenter. The rules cover conventions the type system can't enforce.
https://thomaskioko.github.io/app-gradle-plugins/
scaffold {}../gradlew build # the root build
./gradlew spotlessApplyAll # format everything
./gradlew buildHealthAll # check dependencies
./gradlew dokkaAll # build the API reference
./deploy_website.sh --local # read the site while editing itReleasing is documented in RELEASING.md.
Copyright 2025 Thomas Kioko
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
https://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.