Setup KMP Gitignore
| This documentation was generated with the assistance of AI. Please report any inaccuracies. |
iru-setup-kmp-gitignore composes the root .gitignore plus a one-line /build .gitignore for each Gradle module
of a Kotlin Multiplatform (Android + iOS) app — the shared/ + androidApp/ + iosApp/ layout produced by
iru-setup-kmp-app, or the JetBrains wizard’s older single composeApp/ module. It announces whether it is creating
files from scratch or updating existing ones, and never overwrites an existing .gitignore silently.
Purpose
The skill merges this catalog’s two mobile gitignore skills (iru-setup-android-gitignore and
iru-setup-swift-gitignore) into one template trimmed to what a KMP app produces. The unconditional root base covers
Gradle and Kotlin noise (including the root .kotlin/ cache), local.properties, IDE files, APK/AAB/IPA outputs,
signing material (.jks, .keystore, .p8, .p12, .mobileprovision, .cer), Firebase/Google service
files, Xcode output, the Antora docs/build/ output, the transient .integration-test.lock/ directory and the UI tests' regenerated
.ui-screenshots/ capture directory (.ui-quality.yml stays tracked: it is committed configuration).
Conditional sections are added only when detected: the XcodeGen-generated iosApp/iosApp.xcodeproj/ (only when a
project.yml exists, so a hand-maintained .xcodeproj stays tracked), CocoaPods Pods/ and Fastlane output.
It deliberately has no *.jar pattern so gradle/wrapper/gradle-wrapper.jar stays tracked, and it confirms this
with git check-ignore. For every pre-existing file whose proposed content differs, it shows a diff and asks Update
(merge, keep hand-added lines) / Keep as is / Replace, unless on-existing decides. iosApp/ never gets its own
.gitignore.
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 |
|---|---|---|---|
|
No |
|
Detected from whether a root |
|
No |
Comma- or space-separated Gradle module directories that each get their own |
Every |
|
No |
|
|
Outputs
-
A root
.gitignore— created, or when it already existed, updated (merged), replaced with the bare template, or kept as is; it now ignores.ui-screenshots/but never.ui-quality.yml. -
A
<module>/.gitignorecontaining/buildfor each resolved module, handled the same way; skipped when its content already matches. -
A closing report with the setup mode, the per-file action (created / updated / replaced / kept as is, and whether the user or
on-existingchose it, with the template lines a kept file still lacks), which conditional sections (XcodeGen, CocoaPods, Fastlane) were included or skipped and why, and confirmation thatgradle/wrapper/gradle-wrapper.jaris still not ignored. -
Warnings to review the files before committing, to untrack newly ignored paths with
git rm -r --cached, and never to commit keystores,.p8/.p12keys, provisioning profiles or Google service files.
Execution flow
Dependencies
Invokes
None — iru-setup-kmp-gitignore is a leaf skill; it does not call any other skill in this catalog. It only mirrors
iru-setup-android-gitignore and iru-setup-swift-gitignore as reference templates.
Invoked by
-
Setup KMP Repository — Step 6 runs
iru-setup-kmp-gitignore(through an isolated skill executor) afteriru-setup-kmp-appandiru-setup-antora, so it can detect the generatedsettings.gradle.ktsmodules,iosApp/project.ymland the Antora build output.
Related agents
None — this skill does not delegate any part of its work to an agent itself (its orchestrator runs it inside an Isolated Skill Executor).
Source
SKILL.md on GitHub — the file this page was generated from.