install
Install the app on a device or emulator (auto-detects platform and build system)
Files1
View on GitHubSKILL.mdskills/install/SKILL.md
GitHubInstall App
Install the built application onto a target device, emulator, or simulator. Auto-detects the project platform and build system.
Arguments
Parse $ARGUMENTS for named flags:
--device <target>— Device target:emulator,physical,simulator, or a specific serial/UDID. Defaults to first available.--variant <variant>— Build variant (e.g.debug,release,demo). Defaults todebug.
Platform Detection (Parallel)
Launch parallel agents to detect the project platform:
Agent 1 — Android:
Check for: build.gradle.kts or build.gradle containing android, AndroidManifest.xml
- Gradle wrapper:
./gradlew installDebug - Flutter:
flutter install
Agent 2 — iOS:
Check for: *.xcodeproj, *.xcworkspace, Podfile, Package.swift with iOS platform
- Xcode:
xcodebuild -destination <dest> installor viaxcrun simctl install - Flutter:
flutter install -d <device>
Agent 3 — Web:
Check for: package.json with dev/start script, deno.json, composer.json
- Not applicable for install — skip (install is a no-op for web;
runhandles it)
Agent 4 — Cross-platform:
Check for: pubspec.yaml (Flutter), build.gradle.kts with kotlin("multiplatform") (KMP)
- Flutter:
flutter install -d <device> - KMP: detect target platform from connected devices, then use appropriate install
Device Selection
Android
- Run
adb devices -lto list connected devices - If
--device emulator: target the emulator device (name containsemulator) - If
--device physical: target the non-emulator device - If
--device <serial>: target that specific serial - If no
--deviceand exactly one device: use it - If no
--deviceand multiple devices: ask the user which to target - If no devices: report error and suggest
adb start-serveror launching an emulator
iOS
- If
--device simulator: usexcrun simctl list devices bootedto find a running simulator - If
--device physical: usexcrun devicectl list devicesfor physical devices - If
--device <udid>: target that specific UDID - If no
--deviceand exactly one target (booted sim or physical): use it - If no
--deviceand multiple targets: ask the user which to target
Execution
- Detect platform via parallel agents above
- Build the installable artifact if not already built:
- Android:
./gradlew assembleDebug(orinstallDebugwhich builds + installs) - iOS:
xcodebuild buildthen install - Flutter:
flutter buildthenflutter install
- Android:
- Install:
- Android:
./gradlew install<Variant>(e.g.installDebug,installRelease) oradb -s <serial> install -r <apk-path> - iOS Simulator:
xcrun simctl install booted <app-path> - iOS Device:
xcrun devicectl device install app --device <udid> <app-path> - Flutter:
flutter install -d <device-id>
- Android:
- Report: Confirm installation with device name and app identifier
Error Handling
If installation fails:
- Android "INSTALL_FAILED_UPDATE_INCOMPATIBLE": Run
adb uninstall <package>then retry - Android no device: Check
adb devices, suggest starting emulator - iOS signing error: Report and suggest checking signing configuration
- Build failure: Fall back to the
/skills:buildcommand, fix errors, then retry install