ios-qa

Runs vision-driven QA on live iPhone apps via an embedded HTTP StateServer.

Updated Jun 22, 2026
One-click install
npx skills add https://github.com/aicodepro/ai-agent-nexi --skill ios-qa-aicodepro
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: ios-qa
Source: https://github.com/aicodepro/ai-agent-nexi/tree/main/agent/skills/gstack/ios-qa
Command: npx skills add https://github.com/aicodepro/ai-agent-nexi --skill ios-qa-aicodepro

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Testing SwiftUI apps on a real iPhone normally requires manual tapping through screens or brittle simulator-based UI tests. This Skill connects to a physical device over a USB CoreDevice tunnel and drives an autonomous screenshot-analyze-act-verify loop against the running app, finding real bugs on real hardware. ## Core Features & Use Cases - Live-device agent loop: Connects to an iPhone via CoreDevice IPv6 tunnel, reads Swift source to understand every screen, then iterates screenshot → analyze → decide → act → verify. - Embedded StateServer bridge: Ships Swift/Objective-C templates (StateServer, DebugBridge, KIF-derived touch synthesis, accessibility tree snapshot) that expose screenshots, element trees, and tap/swipe/type mutations over authenticated HTTP inside the app under test. - Remote QA over Tailscale: Optionally exposes the device so remote HTTP-capable agents can run iOS QA without physical access to the hardware. - Use Case: Ask to "qa the iOS app" after installing the DebugBridge package; the agent walks every screen of your SwiftUI app on a connected iPhone and reports bugs with screenshot evidence. ## Quick Start Ask the assistant to run iOS QA on my iPhone app connected over USB and report any bugs it finds on each screen.

Frequently Asked Questions about ios-qa

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I test a SwiftUI app on a real iPhone with an AI agent?

Embed the DEBUG-only DebugBridge package into your app, connect the iPhone over USB, and invoke the skill. It opens a CoreDevice IPv6 tunnel, authenticates with a rotated bearer token, then runs a screenshot-analyze-act-verify loop against the live UI.

How does automated tapping work on SwiftUI buttons?

The skill uses KIF-derived in-process touch synthesis that builds real UITouch and IOHIDEvent objects and dispatches them via UIApplication.sendEvent. On iOS 18+ it uses _UIHitTestContext so SwiftUI Buttons, which return a UIKitGestureContainer rather than a UIView, receive taps correctly.

Can remote agents run iOS QA without physical access to the iPhone?

Yes. The skill can expose the device over Tailscale so any HTTP-capable remote agent can drive QA from anywhere. The on-device StateServer stays loopback-only; all tailnet ingress is handled by the Mac-side daemon with bearer-token authentication.

Does the DebugBridge code ship in Release builds?

No. Every bridge file is gated with #if DEBUG, and the SPM package uses .when(configuration: .debug) conditional dependencies so SwiftPM refuses to link DebugBridge in Release. A CI invariant checks the Release binary contains no DebugBridge symbols.

What happens if two agents try to drive the same iPhone at once?

The StateServer enforces a per-device session lock with a five-minute sliding TTL on mutations. A second agent calling /session/acquire receives a 423 device_locked response until the first session is released or times out.