KMP Bump Version
| This documentation was generated with the assistance of AI. Please report any inaccuracies. |
Set a Kotlin Multiplatform (Android + iOS) app’s version to an exact literal value in every file that must agree with
it: the shared Gradle side (gradle.properties’ `VERSION_NAME/VERSION_CODE, read by the Android app) and the iOS
host app’s Xcode build settings (MARKETING_VERSION/CURRENT_PROJECT_VERSION). This skill never computes a version
itself; it applies exactly the string it is given, after validating its shape.
Purpose
iru-kmp-bump-version is the two-platform counterpart of iru-android-bump-version and iru-swift-bump-version.
VERSION_NAME always becomes the new version; for a release value only (plain X.Y.Z — no -SNAPSHOT or other pre-release suffix), VERSION_CODE is
incremented by one and the iOS MARKETING_VERSION is set to the release with CURRENT_PROJECT_VERSION set to the
new VERSION_CODE, so the Android and iOS build numbers stay identical. A -SNAPSHOT (or any pre-release) value is
never written to an iOS file, because App Store Connect rejects it. The skill detects the layout at runtime and falls
back to libs.versions.toml entries, literals in the Android app module’s build script, XcodeGen project.yml, a
literal Info.plist, or a committed project.pbxproj when the iru-setup-kmp-app layout isn’t present. Step 5 of
the skill is the authoritative statement of the KMP pre-release convention for callers such as iru-release.
Plugin
Shipped by the iru-kmp plugin of the ai-catalog marketplace (install with /plugin install iru-kmp@ai-catalog; see Plugins).
Inputs
| Argument | Required | Description | Default |
|---|---|---|---|
|
Yes |
The exact target version (e.g. |
None — the skill asks for it if omitted. |
|
No |
Whether to also update README/Antora version mentions ( |
Ask — once, after Step 2 confirms such mentions exist. |
|
No |
The upcoming pre-release version. Only meaningful with |
None — a development marker is then updated only if |
|
No |
When |
|
Outputs
-
gradle.properties:VERSION_NAMEset to the new version;VERSION_CODEincremented by exactly 1 only for a release (unchanged for a snapshot). Fallbacks:gradle/libs.versions.tomlversion entries, orversionName/versionCodeliterals in the Android app module’s build script. -
iOS, release values only:
iosApp/Configuration/Config.xcconfigMARKETING_VERSIONset to the release andCURRENT_PROJECT_VERSIONset to the newVERSION_CODE. Fallbacks: XcodeGenproject.yml, a literalInfo.plist, or a committedproject.pbxproj. For a snapshot the iOS side is left untouched and the report says so. -
Optionally, README/Antora version mentions mapped by release vs. development marker, if
sync-fileswas accepted. -
A sanity check (
./gradlew -q help, apropertiesread-back, and anxcodegen/xcodebuildround-trip when available), skipped on a dry run. -
A report of old and new values for every field and file, the fallback used (if any), and a warning to review the diff before committing.
-
No commit or tag is created.
Execution flow
Dependencies
Invokes
None — iru-kmp-bump-version is a leaf skill; it only runs shell/python3 file rewrites and sanity checks
(./gradlew, optionally xcodegen/xcodebuild). Its Step 4b reuses the project.yml rewrite snippet from
Swift Bump Version by reference, but does not invoke that skill.
Invoked by
-
Release — Step 6, version bump for
kmp-appprojects (called once for the release value and once for the next development value). -
Java Bump Version — redirects here when the Kotlin Multiplatform plugin is detected, since this skill owns the KMP app’s
VERSION_NAME/VERSION_CODEand the iOSMARKETING_VERSION.
Source
SKILL.md on GitHub — the file this page was generated from.