Setup KMP Repository
| This documentation was generated with the assistance of AI. Please report any inaccuracies. |
End-to-end bootstrap for a Kotlin Multiplatform (Android + iOS) app repository. It resolves the UI shape, branching model and mode once, collects the app’s identity and shared pipeline parameters once, prints a setup-mode statement (from scratch, or an inventory of the prior setup it found), then orchestrates six other skills in a fixed order so nothing is asked twice.
Purpose
iru-setup-kmp-repository is the KMP stack orchestrator invoked by iru-setup-repository (project type kmp-app)
or run standalone. Rather than duplicating Gradle/Xcode scaffolding, documentation setup, .gitignore generation,
CI/CD authoring, changelog bootstrapping or README generation, it passes each downstream skill only the args keys
that skill’s own Step 0 accepts. It always invokes the scaffold skill, even in mode: existing: every component
sub-skill announces whether it is creating or updating, warns about the prior setup it owns, and asks Update / Keep
as is / Replace per file (or applies on-existing when it arrived via args).
Unlike the Android and Swift orchestrators there is no flavor question: only KMP apps are scaffolded (a shared
KMP module consumed by an Android app and an iOS app); a KMP library published to Maven Central is out of scope.
ui is compose (Compose Multiplatform shared UI) or native (Jetpack Compose on Android plus SwiftUI on iOS over
shared logic). Pipeline questions are cost-aware: visibility drives recommendations about Actions minutes, the
roughly 10x macOS multiplier (ios-ci), SonarCloud pricing and GitHub Pages availability, and ci: no skips the
workflows step entirely (security block included).
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 or asked (Compose Multiplatform recommended) |
|
No |
|
Asked; |
|
No |
|
Detected from disk |
|
No |
|
|
Identity fields ( |
Yes (unresolved ones) |
Free-text identity asked in Step 2 using the keys |
None — user must supply |
|
No |
Shared pipeline parameters asked in Step 3 with defaults; branch and Java values are skipped when |
|
|
No |
|
Asked or detected |
|
No |
|
Asked |
|
No |
|
Asked; |
|
No |
|
Asked |
|
No |
|
|
|
No |
|
|
|
No |
|
Asked (Enforce recommended) |
|
No |
|
Asked |
|
No |
Passed through only if supplied; otherwise left to the scaffold or workflows skill. |
Resolved downstream |
|
No |
Accepted and ignored (an app has no Maven Central path); noted in the report. |
None |
Outputs
-
The Gradle/Xcode scaffold —
shared/KMP module,androidApp/, XcodeGeniosApp/, quality and Sonar wiring, plus.ui-quality.ymland the UI tests that capture.ui-screenshots/(viairu-setup-kmp-app; see Building user interfaces), created or updated per file group according to the user’s answers. -
A scaffolded Antora documentation site under
docs/(viairu-setup-antora). -
Root and per-module
.gitignorefiles (viairu-setup-kmp-gitignore;.ui-screenshots/is ignored). -
CI/CD workflows —
build.yml,release.yml,sync.yml+sync_versions.py(gitflow),security.ymland.github/dependabot.yml(viairu-setup-kmp-github-workflows); none whenci: no. -
A root
CHANGELOG.md(viairu-setup-changelog) and a rootREADME.md(viairu-setup-readme). -
A final report: setup mode, resolved
ui/branching/mode, identity, license and pipeline parameters, a per-component table with the action taken (created / updated / replaced / kept as is / skipped (ci: no)), the.ui-quality.ymlwith theaccessibilitylevel it holds (CI uploads the captures as a 7-day artifact), the consolidated required-secrets table (omitted when no workflows were generated), toolchain versions from live lookup versus fallback, decisions made on the user’s behalf, and an explicit warning block.
Execution flow
Dependencies
Invokes
Each of the following is invoked via the iru-isolated-skill-executor
agent rather than a direct Skill call, so only a short completion summary flows back and the scaffold’s long
template listings stay out of this orchestrator’s context. Every sub-agent is launched with
run_in_background: false since each step depends on the previous one’s files being on disk:
-
Setup KMP App — Step 4: writes or updates the
shared/,androidApp/andiosApp/scaffold, passing Step 2’s identity fields and Step 3’s pipeline parameters asargs. Always invoked, even inmode: existing. The first Gradle run downloads Gradle, the Android SDK platform and the Kotlin/Native toolchain, so it is the slow step. -
Setup Antora — Step 5: scaffolds or updates the Antora site, with no
args(onlyon-existingwhen supplied). -
Setup KMP Gitignore — Step 6: writes or updates root and per-module
.gitignorefiles, with noargs(onlyon-existingwhen supplied). -
Setup KMP GitHub Workflows — Step 7, skipped entirely when
ci: no: writes the CI/CD, release and security workflows, passingbranching, branches,java-version,ios-ci,ci-tests,pages,distribution, Sonar keys and related args. -
Setup Changelog — Step 8: bootstraps or updates
CHANGELOG.mdfrom the repository’s tag and release history. -
Setup Readme — Step 9, last: bootstraps or updates
README.md, passing onlysonar,ci,pages(andon-existingwhen supplied).
Invoked by
-
Setup Repository — Step 4,
kmp-appbootstrap (uitaken from the detected project type), via theiru-isolated-skill-executoragent.
It can also be run directly by a person.
Related agents
-
iru-isolated-skill-executor— spawned once per sub-skill (Steps 4–9), so all six sub-skills' exploration transcripts don’t accumulate in this orchestrator’s context.
Source
SKILL.md on GitHub — the file this page was generated from.