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.