iphone-use-setup

Installation
SKILL.md

把 iPhone 配置为 READY

使用本插件的 MCP 工具完成可重复的探测、构建、启动和连接;不要在每次任务中临时生成 Python 客户端。已有可用 PUA 时先复用,避免每个任务都重建或重装。

先确定当前状态

本对话首次使用手机、尚未取得 READY 时,先直接调用 pua_setup(action="status"),按下节复用健康服务或活动工作,缺少服务才 start 一次;服务就绪后调用 pua_ready(recover=true, screenshot=false),再执行用户手机任务。不要先 READY 失败再 setup;不以之前聊天的 READY 或已安装插件代替当前证明。本对话已 READY 且通道未失效时直接继续,不为每项任务重复 doctor、discover、build 和 start。首次配置或 READY 返回具体缺项时,使用 pua_doctor 与 pua_setup(action="discover") 读取 Xcode、已连接设备、签名、端口及进程状态。多台 iPhone 按用户提供的设备选择;只有一台符合条件时可以直接使用。设备 UDID、Team ID、日志和签名配置保存在用户本机,不写进源码或 Git。

正常任务调用 pua_ready(recover=true) 或省略 recover 使用默认 true,不因预检或谨慎主动关闭恢复。只读诊断或用户明确禁止重启时传 recover=false,保留限制。常规任务无需截图时可传 screenshot=false;截图能力待实际需要截图时再使用。返回 ready=true, state="ready" 的 proof 包含 PUA status、可用会话、真实前台 App、设备视口、解锁状态与当前观察;直接用嵌套 observation 准备下一步,不立即重复 observe 或再做一轮导航测试。若镜像占用且控件树为空,工具返回 mirroring_conflict,退出镜像后重验 READY。Runner 图标、BUILD SUCCEEDED 或端口开放不足以声明 READY。READY 同时关联手机屏幕侧边栏,宿主支持时默认打开;已有通道要重新打开画面用 pua_screen(),不要重复 READY。预览走独立 USB MJPEG 通道(默认设备端口 9100),不使用 XML 或截图轮询;预览不可用本身不否定控制通道 READY,也不要求循环重启。READY 证明控制通道可用;常规 App 操作默认乐观执行,下一步所需观察顺带判断进度,最终关键结果才显式验收。

phone_locked 会自动暂停预览并记录 device_locked,无需再显式 pause。等待用户实际解锁通知后重验 READY;成功时仅解除同一次锁屏暂停,App 认证与旧版未知暂停保持显式恢复。READY 的 preview 返回暂停原因;不要把预览空白当成控制通道失效。

服务未启动时继续初始化

先区分请求超时和连接失败。READY 返回 pua_timeout 时,按返回的 retry_after_seconds 在宿主侧等待(当前为 2 秒),再用相同参数重试 READY;最多两次延迟尝试,仍超时只调用 pua_setup(action="status") 检查服务、工作和日志,不直接 start / recover。不要用 pua_wait 代替等待或立即重读树,手机端原请求可能仍在执行。普通观察 / 动作后观察超时同样先等待,再取一次 screenshot;最多两次延迟观察后只诊断,不重放动作。重复超时本身不授权重启。

pua_unreachable 表示 HTTP 通道连接拒绝、重置、管道关闭或 EOF 等连接失败,不直接证明 USB 已拔出;pua_transport_error 表示其他传输或协议异常,按具体细节诊断,不统一当成断连。动作的 action_uncertain 保留执行不确定性,按 transport_error 和 recovery 处理后先观察真实状态,不重发输入、提交或其他业务动作。

recover=true 对持久 local.pid.0 / XCTest 故障可排队恢复已核验归属的服务;它不代表自动完成首次配置或冷启动。READY 的 pua_unreachable、连接拒绝、not_ready 等连接 / 未启动结果,应进入以下检查分支,不能直接 final 宣布手机任务失败:

Installs
7
GitHub Stars
4.7K
First Seen
Oct 9, 2026