ios-qa

Runs vision-driven QA loops against SwiftUI apps on physical iPhones over a CoreDevice tunnel.

Updated Aug 9, 2026
One-click install
npx skills add https://github.com/raghavbadhwar/rstack --skill ios-qa-raghavbadhwar
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: ios-qa
Source: https://github.com/raghavbadhwar/rstack/tree/main/ios-qa
Command: npx skills add https://github.com/raghavbadhwar/rstack --skill ios-qa-raghavbadhwar

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? Testing iOS apps on real hardware normally requires manual tapping through screens or brittle simulator-based UI tests. This Skill connects an AI agent to a physical iPhone over USB, reads the app's Swift source to understand every screen, and then autonomously drives the device — screenshotting, analyzing, tapping, typing, and verifying — to find real bugs on real hardware. ## Core Features & Use Cases - Live-device agent loop: Connects via a CoreDevice IPv6 tunnel and runs a screenshot → analyze → decide → act → verify cycle against an embedded HTTP StateServer inside the app under test. - DebugBridge instrumentation: Ships Swift/Objective-C templates (StateServer, ScreenshotBridge, ElementsBridge, MutationBridge, KIF-derived touch synthesis) that expose screenshots, the accessibility tree, and tap/swipe/type mutations over authenticated HTTP, DEBUG-only so Release builds are unaffected. - Remote QA over Tailscale: Optionally exposes the device so remote agents (OpenClaw, Codex, any HTTP-capable agent) can run iOS QA without physical access to the hardware. - Use Case: Ask the agent to "qa the iOS app" after a feature change; it walks every screen on your connected iPhone, taps through flows, and reports concrete bugs with screenshots as evidence. ## Quick Start Ask the agent to run iOS QA on my iPhone app with the device connected over USB.

Frequently Asked Questions about ios-qa

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

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

Connect the iPhone over USB, embed the DEBUG-only DebugBridge package in your app, and invoke the ios-qa skill. The agent reaches the device through a CoreDevice IPv6 tunnel and runs a screenshot-analyze-act-verify loop against the app's embedded StateServer.

How does automated tapping work on SwiftUI buttons?▼

The bridge prefers accessibility activation for SwiftUI buttons, falling back to KIF-derived UITouch synthesis with IOHIDEvent and iOS 18's _UIHitTestContext. Accessibility automation is enabled first so SwiftUI exposes its full control tree.

Does the DebugBridge code ship in Release builds?▼

No. All bridge code is gated behind #if DEBUG, and the SwiftPM package uses .when(configuration: .debug) conditional dependencies so Release builds refuse to link DebugBridge targets. The documented CI invariant greps the Release binary for DebugBridge symbols.

Can a remote agent run iOS QA without physical access to the device?▼

Yes. The skill can expose the device over Tailscale so any HTTP-capable remote agent, such as OpenClaw or Codex, can drive QA. The on-device server itself stays loopback-only; tailnet ingress is handled by the Mac-side daemon.

How is the on-device HTTP server secured?▼

The StateServer binds only to loopback and CoreDevice ULA addresses, requires a bearer token that is rotated within seconds of boot, and enforces a per-device session lock with a five-minute sliding TTL on all mutating endpoints.

What are the limitations of swipe and type automation?▼

Swipes are implemented as programmatic UIScrollView offset changes rather than synthesized touch drags, so gesture-only interactions may not trigger. Typing sets text directly on the first responder UITextField or UITextView, which bypasses per-keystroke delegate callbacks.