PluginBench
Skill
Pass
Audit score 90

argent-ios-device-interact

software-mansion/argent

Control a physical iPhone through argent for automated testing and interaction.

What is argent-ios-device-interact?

Drive a physical iPhone connected via cable using argent's device automation tools. Use this skill only when testing against a real device (not a simulator); it provides gesture control, app launching, and UI inspection tailored to hardware constraints.

  • Launch, restart, and reinstall apps on a physical iPhone
  • Perform gestures (tap, swipe, custom) and button presses (home, volume, action button)
  • Describe screen state and take screenshots without changing the UI
  • Type text via keyboard and await UI elements or screen idle states
  • Run automation sequences while respecting hardware limitations and re-fronting behavior

How to install argent-ios-device-interact

npx skills add https://github.com/software-mansion/argent --skill argent-ios-device-interact
Prerequisites
  • Physical iPhone connected via USB cable
  • Trust established between the iPhone and the host machine
  • Proper code signing configured for the app under test
  • argent tool-server running and detecting the device
Claude Code
Cursor
Windsurf
Cline

How to use argent-ios-device-interact

  1. 1.Verify the device appears in list-devices with kind 'device' (not simulator)
  2. 2.Launch the target app using launch-app with the correct bundleId
  3. 3.Use describe or screenshot to inspect the current screen state
  4. 4.Perform interactions: gesture-tap, gesture-swipe, button presses, or keyboard input
  5. 5.After gestures or keyboard, re-describe to see the updated UI state
  6. 6.Use await-ui-element or await-screen-idle to synchronize with app changes
  7. 7.Repeat steps 3–6 for your test scenario; use run-sequence to chain multiple steps

Use cases

Good for
  • Automated testing of iOS apps on real devices to catch hardware-specific bugs
  • End-to-end testing workflows that require physical device interaction (camera, sensors, buttons)
  • Validating app behavior across different iPhone models with their specific hardware buttons
  • Testing gesture-based navigation and custom touch interactions on actual hardware
  • Debugging app state by inspecting the live screen and taking diffs between states
Who it's for
  • iOS QA engineers and testers
  • Mobile app developers validating on physical devices
  • Automation engineers building device-farm test suites
  • Teams requiring hardware-specific testing beyond simulator capabilities

argent-ios-device-interact FAQ

When should I use this skill instead of argent-device-interact?

Use this skill only for physical iPhones (kind 'device' in list-devices). Use argent-device-interact for simulators and all other platforms.

Why does describe return the old tree after pressing home?

The first describe within a second of button home may still show the previous screen; call describe again to get the current state.

How do I fix cable, trust, or signing problems?

Read the argent-ios-device-setup skill; this skill assumes those prerequisites are already met.

What gestures and buttons are supported on physical hardware?

Supported: gesture-tap, gesture-swipe, gesture-custom (within hardware limits), and buttons (home, volumeUp, volumeDown, actionButton on models that have it). Two-finger gestures, rotate, shake, and paste are not supported.

Why does open-url always land in Safari instead of my app?

On physical devices, https URLs open in Safari by default. Pass the bundleId parameter to open-url to launch the link in your app instead.

Full instructions (SKILL.md)

Source of truth, from software-mansion/argent.


name: argent-ios-device-interact description: Drive a physical iPhone through argent. Use when a physical iPhone is involved (a list-devices iOS entry with kind "device") and ONLY then; never for a simulator. For cable, trust, or signing problems read argent-ios-device-setup.

Physical iPhone interaction

Read this only for a physical iPhone. argent-device-interact still applies for everything not listed here.

Contract

  • Observation never changes the screen; mutation may. describe and await-ui-element fail on a backgrounded target instead of re-fronting it; await-screen-idle returns settled: false with no reason. The first describe within a second of button home can still return the old tree; describe again. Gestures and keyboard re-front it and return reactivated: true; re-describe before the next step.
  • launch-app, open-url and restart-app set the app under automation; reinstall-app clears it; a tool-server restart forgets it: launch again.
  • Each tool's description states its own hardware limits (named keys, gesture-custom shapes, buttons, edge swipes, tap counts). A gated tool fails with a bare not supported on ios device: the fix is in the list below, not in the error.

Tools on hardware

  • Only these exist: list-devices, launch-app, restart-app, reinstall-app, open-url, describe, screenshot, screenshot-diff, gesture-tap, gesture-swipe, gesture-custom, button (home, volumeUp, volumeDown, actionButton on models that have one), keyboard, await-ui-element, await-screen-idle, run-sequence, the flow tools, stop-simulator-server and stop-all-simulator-servers (session end). Every other device tool fails with not supported on ios device.
  • No two-finger gestures, rotate, shake, paste, settings-permissions, screen recording, debugger-*, react-profiler-*, native-profiler-*, native-*, boot-device: drive the app's own zoom and rotate UI with taps and drags, move the phone by hand, type with keyboard, change permissions in the phone's Settings, and debug, profile or record on a simulator.
  • gesture-swipe: durationMs sets drag speed, not time; momentum:false only rests 300 ms at the end, no damping. open-url https lands in Safari, never in the app that owns the link: pass bundleId.