Setup Android Library
| This documentation was generated with the assistance of AI. Please report any inaccuracies. |
iru-setup-android-library generates the standard Gradle/Kotlin toolchain for a new Android library at the
repository root — the Gradle wrapper, root project files, a lib/ library module, and an app/ Jetpack Compose
sample module that depends on lib — from explicit example templates embedded in the skill itself.
Purpose
This skill bootstraps an Android/Kotlin library’s entire Gradle build from a house template genericized from a
real reference repository, https://github.com/albertoirurueta/irurueta-android-glutils. It writes the Gradle
wrapper (pinned to a run-time-resolved Gradle version and checksum), the root build.gradle.kts /
settings.gradle.kts / gradle.properties / gradle/libs.versions.toml, the lib/ module (build script,
ProGuard rules, manifests, Robolectric properties, .gitignore, one placeholder source + unit test
instrumented test), and an app/ Jetpack Compose sample module that depends on lib and is genuinely a working
Compose consumer, not just a declared-but-unused dependency. The sample app also carries the catalog’s UI-contract
test scaffolding (see Building user interfaces): a root .ui-quality.yml,
Roborazzi plus Accessibility Test Framework dependencies, a shared testing/UiScreenshots.kt helper and a sample
GreetingTest.kt capturing .ui-screenshots/ across left-to-right/right-to-left × light/dark. Every toolchain version (Gradle, AGP, Kotlin, Dokka,
Sonar/publish/Detekt/Spotless/Kover/JUnit-bridge plugins, JUnit, AndroidX Test, Compose BOM, Material3, MockK,
Robolectric) is looked up at run time, falling back to the versions this skill recorded in September 2026 only if
a live lookup fails. It gates several optional toggles (publish, Sonar, built-in Kotlin, JUnit major, coverage
tool, static-analysis stack) that each add or remove specific blocks from the generated files. 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 lib//app/ skeletons, .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.
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 |
Maven Central |
None |
|
Yes (unless supplied via |
Maven Central |
None |
|
Yes (unless supplied via |
Android |
None |
|
No |
One line used in |
None |
|
No |
The |
|
|
No |
|
|
|
No |
API level both modules compile against; resolved against locally installed SDK platforms or the latest stable Android release, coupled to the resolved Compose BOM version. |
Fallback |
|
Yes (unless supplied via |
Resolved via |
None — user must choose |
|
Yes (unless supplied via |
Populates the |
None |
|
No |
Whether the repository is open source; drives the recommended defaults for |
None — asked first when unresolved |
|
No |
Whether to wire the |
Yes when open source, otherwise No (recommended) |
|
No |
|
|
|
No |
|
Unset (treated as matching |
|
No |
|
Unset |
|
No |
|
|
|
No |
|
|
|
No |
|
|
|
No |
|
|
|
No |
|
|
|
No |
|
|
|
No |
|
|
Outputs
-
Gradle wrapper:
gradle/wrapper/gradle-wrapper.properties(pinned Gradle version +distributionSha256Sum),gradlew,gradlew.bat,gradle/wrapper/gradle-wrapper.jar. -
Root project files:
build.gradle.kts,settings.gradle.kts,gradle.properties,gradle/libs.versions.toml, and (only if missing)local.properties. -
lib/library module:build.gradle.kts,proguard-rules.pro,.gitignore,src/main/AndroidManifest.xml,src/androidTest/AndroidManifest.xml,src/test/resources/<namespace-path>/robolectric.properties, one placeholderExample.ktsource,ExampleUnitTest.kt, andExampleInstrumentedTest.kt;detekt.ymlat the repository root whenstatic-analysis: lint+detekt+ktlint. -
app/Jetpack Compose sample module:build.gradle.kts,.gitignore,src/main/AndroidManifest.xml, a real ComposeMainActivity.kt(with a working@Preview),values/strings.xml,values/colors.xml,values/themes.xml,values-night/themes.xml, and the adaptive launcher-icon drawables/mipmaps; plus the UI-test files undersrc/test/:robolectric.properties,testing/UiScreenshots.ktand the sampleGreetingTest.kt(ComposeGreeting(name)is localized and documented as the contract’s sample component). -
.ui-quality.ymlat the repository root (accessibility,directions: [ltr, rtl],themes: [light, dark]), and theroborazzi*andandroidx-ui-test-*entries ingradle/libs.versions.toml. -
A report of every resolved input, which optional blocks were included/omitted and why, which toolchain versions came from a live lookup versus the 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 an explicit warning block (review before building/publishing, Sonar token and Maven Central credentials still needed, no root.gitignorewritten, unverified toggle combinations).
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-library/; 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 directly by Skill() call — iru-setup-android-library is a leaf skill with respect to other catalog
skills; it does not call another skill.
Invoked by
-
Setup Android Repository — Step 4 runs
iru-setup-android-library(viairu-isolated-skill-executor) when thelibraryflavor is chosen, passing every pre-resolved identity and shared-pipelineargskey so this skill’s own Step 2 questions are skipped.
Related agents
-
iru-gate-runner— Step 11 runs./gradlew --offline helpthen./gradlew :lib:assembleDebugthrough this agent, so the caller gets a compact pass/fail summary instead of raw Gradle output.
Source
SKILL.md on GitHub — the file this page was generated from.