Skill: Gradle Build Commands

SkillDev tools

Use Gradle commands to build and run the app by platform.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Skill: Gradle Build Commands skill

What this skill tells your AI

The instructions your AI receives, as published by championswimmer/twofac in .agents/skills/gradle-build/SKILL.md and read by ahel’s review.

Use these commands to build and run the app by platform.

Common checks

  • Repository baseline: ./gradlew check
  • Shared library tests: ./gradlew :sharedLib:test
  • CLI tests: ./gradlew :cliApp:test
  • Compose tests: ./gradlew :composeApp:test

Guidance

  • Prefer module-scoped tasks for faster feedback.
  • Run full checks only when change scope spans multiple modules.

Build and Run by Platform

CLI App (cliApp)

Native CLI executables for desktop platforms:

PlatformBuild DebugBuild ReleaseOutput Location
macOS (Apple Silicon)./gradlew :cliApp:linkDebugExecutableMacosArm64./gradlew :cliApp:linkReleaseExecutableMacosArm64cliApp/build/bin/macosArm64/
Linux./gradlew :cliApp:linkDebugExecutableLinuxX64./gradlew :cliApp:linkReleaseExecutableLinuxX64cliApp/build/bin/linuxX64/
Windows./gradlew :cliApp:linkDebugExecutableMingwX64./gradlew :cliApp:linkReleaseExecutableMingwX64cliApp/build/bin/mingwX64/

Run the CLI: ./cliApp/build/bin/<target>/debugExecutable/twofac.kexe

Desktop GUI App (composeApp - Desktop)

ActionCommand
Run dev build./gradlew :composeApp:run
Run release build./gradlew :composeApp:runRelease
Create distributable./gradlew :composeApp:createDistributable
Package for current OS./gradlew :composeApp:packageDistributionForCurrentOS
Package release for current OS./gradlew :composeApp:packageReleaseDistributionForCurrentOS

Platform-specific packages (run on respective OS):

PlatformPackage Commands
macOS:composeApp:packageDmg, :composeApp:packageReleaseDmg
Linux:composeApp:packageDeb, :composeApp:packageReleaseDeb
Windows:composeApp:packageMsi, :composeApp:packageReleaseMsi

Uber JAR (cross-platform):

ActionCommand
Debug uber JAR./gradlew :composeApp:packageUberJarForCurrentOS
Release uber JAR./gradlew :composeApp:packageReleaseUberJarForCurrentOS

Output: composeApp/build/compose/binaries/main/

Android Mobile App (androidApp)

ActionCommand
Build debug APK./gradlew :androidApp:assembleDebug
Build release APK./gradlew :androidApp:assembleRelease
Install debug./gradlew :androidApp:installDebug
Uninstall./gradlew :androidApp:uninstallDebug
Build bundle (AAB)./gradlew :androidApp:bundle

Output: androidApp/build/outputs/apk/ or androidApp/build/outputs/bundle/

Run/install on a specific emulator and launch the app explicitly:

ANDROID_SERIAL=emulator-5554 ./gradlew :androidApp:installDebug
adb -s emulator-5554 shell am start -n tech.arnav.twofac.app/.MainActivity
adb -s emulator-5554 shell dumpsys activity activities | rg 'Resumed: ActivityRecord|mCurrentFocus|mFocusedApp'

When multiple Android devices are connected, always set ANDROID_SERIAL for Gradle and use adb -s <serial> for launch/verification commands.

Wear OS Watch App (watchApp)

ActionCommand
Build debug APK./gradlew :watchApp:assembleDebug
Build release APK./gradlew :watchApp:assembleRelease
Install debug./gradlew :watchApp:installDebug
Uninstall./gradlew :watchApp:uninstallDebug
Build bundle (AAB)./gradlew :watchApp:bundle

Output: watchApp/build/outputs/apk/ or watchApp/build/outputs/bundle/

iOS App (composeApp + iosApp)

Framework linking (for Xcode integration):

ActionCommand
Debug framework (device)./gradlew :composeApp:linkDebugFrameworkIosArm64
Debug framework (simulator)./gradlew :composeApp:linkDebugFrameworkIosSimulatorArm64
Release framework (device)./gradlew :composeApp:linkReleaseFrameworkIosArm64
Release framework (simulator)./gradlew :composeApp:linkReleaseFrameworkIosSimulatorArm64

Output: composeApp/build/bin/<target>/debugFramework/ or releaseFramework/

Running the iOS app: Open iosApp/iosApp.xcworkspace in Xcode and run from there. Xcode triggers embedAndSignAppleFrameworkForXcode automatically.

Xcode integration: The task embedAndSignAppleFrameworkForXcode is called by Xcode's build phase.

watchOS (future)

Not yet implemented. See .agents/plans/02-watchos-companion-app.md for planned architecture.

Web/Wasm (composeApp - Wasm)

ActionCommand
Dev server./gradlew :composeApp:wasmJsBrowserDevelopmentRun
Production build./gradlew :composeApp:wasmJsBrowserProductionWebpack
Combined distribution./gradlew :composeApp:composeCompatibilityBrowserDistribution

Output: composeApp/build/dist/wasmJs/

Signals

GitHub stars
125
Forks
8
Last commit
Jun 2026
Advanced
Catalog kind
skill
Gateway key
gradle-build
Source
github.com/championswimmer/twofac