Setup Android App
| This documentation was generated with the assistance of AI. Please report any inaccuracies. |
Generate a complete, buildable Gradle Kotlin-DSL Android application project — wrapper, root build files, and a
single app/ com.android.application module — from explicit example templates genericized line for line from a
real reference repository’s Gradle toolchain.
Purpose
iru-setup-android-app bootstraps a standalone Android application’s Gradle project: the wrapper, root
build.gradle.kts, settings.gradle.kts, gradle.properties, and gradle/libs.versions.toml, plus a single
app/ module wired with applicationId/namespace, versionCode/versionName, build-info buildConfigField`s,
an env-var-driven `signingConfigs { release {…} } block that never fails configuration when signing secrets are
absent, a Compose-by-default UI (or a classic AppCompat + ViewBinding views variant), Robolectric + MockK
JUnit 4 unit-test tooling, an instrumented-test skeleton, and an optional inline sonar { properties {…} } }
block. It also scaffolds UI tests per the catalog’s UI contract (see
Building user interfaces): a .ui-quality.yml at the repository root,
Roborazzi plus the Accessibility Test Framework on Robolectric, a shared testing/UiScreenshots.kt helper, and a
sample screen test that captures .ui-screenshots/ across left-to-right/right-to-left × light/dark with the
accessibility check (and, unless accessibility: none, assistive-technology attributes such as contentDescription, sp font sizes and 48dp touch targets); the sample layouts use Start/End constraints and localized string resources. It never writes a Maven Central publishing block — iru-setup-android-library is the companion skill for
a library module. Every Gradle/Kotlin/plugin version is looked up at run time against the real package registries,
falling back to a recorded, CI-verified combination when a lookup fails. It announces whether it is scaffolding from
scratch or updating an existing Gradle project; for each file group it owns that already exists (each build file,
the wrapper, the app/ skeleton, .ui-quality.yml, detekt.yml) it warns and asks Update / Keep as is / Replace (and Stop on the
first question), even under mode: existing, unless on-existing decides. It never overwrites hand-edited
application source.
Plugin
Shipped by the iru-android plugin of the ai-catalog marketplace (install with /plugin install iru-android@ai-catalog; see Plugins).
Inputs
| Argument | Required | Description | Default |
|---|---|---|---|
|
No |
Pre-resolved parameters passed by an orchestrating skill (e.g. Setup Android Repository)
as newline-separated |
None — if absent or unrecognized, every field is asked interactively. |
|
Yes (unless supplied via |
Reverse-DNS application id, written to |
None |
|
No |
The module’s Kotlin/resource namespace ( |
`application-id’s value |
|
Yes (unless supplied via |
Display name shown under the launcher icon ( |
None |
|
No |
Minimum supported Android API level. |
|
|
No |
Compile and target Android API levels, looked up in Step 4. |
Current stable Android API level (e.g. |
|
No |
App version string and monotonic build integer. |
|
|
Yes (unless supplied via |
Resolved via |
None — user must choose |
|
Yes (unless supplied via |
Recorded in Step 8’s report only (no publishing block exists here to embed them in). |
None |
|
No |
Whether the repository is open source; drives the |
Asked via |
|
No |
|
|
|
No |
|
Unset (treated as matching |
|
No |
|
Unset |
|
No |
|
|
|
No |
|
|
|
No |
|
|
|
No |
|
|
|
No |
|
|
|
No |
|
|
|
No |
|
|
|
No |
|
|
|
No |
|
|
Outputs
-
Gradle wrapper files, root
build.gradle.kts,settings.gradle.kts,gradle.properties, andgradle/libs.versions.tomlat the repository root. -
An
app/module:build.gradle.kts,proguard-rules.pro,AndroidManifest.xml, theme/color/string/launcher-icon resources,MainActivity.kt(+ Compose theme wrapper, or a ViewBinding layout forui: views),robolectric.properties, a placeholder unit test, an instrumented-test skeleton, andapp/.gitignore. Resources useStart/Endconstraints and localized strings (greeting). -
.ui-quality.ymlat the repository root (accessibility,directions: [ltr, rtl],themes: [light, dark]), the sharedapp/src/test/java/<package>/testing/UiScreenshots.kthelper, a sample screen test (GreetingTest.ktforui: compose,MainActivityScreenTest.ktforui: views) capturing.ui-screenshots/, and the accessibility checks in the instrumented test; Roborazzi, Compose UI test or Espresso accessibility dependencies in the version catalog andapp/build.gradle.kts(unitTests.isIncludeAndroidResources = true). -
Any opt-in Gradle plugin blocks selected (Detekt/Spotless, Kover, JUnit 5, Firebase App Distribution, Gradle Play Publisher) applied on top of the base templates.
-
A report of resolved inputs, which toolchain versions came from a live lookup versus a recorded fallback, whether the run scaffolded from scratch or updated an existing project, the action taken per file group (created / updated / replaced / kept as is, and whether the user or
on-existingchose it, with any mismatch listed for a kept group), and explicit warnings (license/keystore/google-services.json/Sonar token/distribution credentials review).
The generated files' bytes come from template files under templates/ (and, where a template needs variant-specific notes, reference/) in .claude/skills/iru-setup-android-app/; the skill reads only the files for the variant it resolved, not the whole set, which keeps its SKILL.md small.
Execution flow
Dependencies
Invokes
None — iru-setup-android-app is a leaf skill; it does not call any other skill in this catalog. It is
self-contained and does not read iru-setup-android-library’s files at run time even when a repository ends up
with both a `lib/ and an app/ module.
Invoked by
-
Setup Android Repository — Step 4, via the
iru-isolated-skill-executoragent, when the repository’s project type is an Android application.
Related agents
-
iru-gate-runner— Step 7 runs./gradlew --offline helpand./gradlew :app:assembleDebugthrough this agent so its (potentially long) build output doesn’t fill this skill’s own context.
Source
SKILL.md on GitHub — the file this page was generated from.