返回市场
iOS模拟器技能

iOS模拟器技能

作者:conorluddy119 星标更新:2025-11-10

项目介绍

iOS模拟器技能用于Claude Code

适用于iOS应用测试和构建的生产就绪自动化工具。21个脚本优化了人类开发者和AI代理的使用体验。

这基本上是我XCode MCP的技能版本:https://github.com/conorluddy/xc-mcp

当MCP处于活动状态时,会加载大量令牌到上下文窗口中,但似乎效果很好。技能不会加载任何上下文。接下来我会制作一个插件,并尝试找到平衡点...

更新:插件版本允许您轻松禁用不同工具组中的MCP。通过仅启用您正在使用的工具来优化您的上下文窗口,例如xcodebuild:https://github.com/conorluddy/xclaude-plugin

功能概述

代替基于像素的导航,当UI更改时会中断:

# 脆弱 - UI更改时会中断
idb ui tap 320 400

# 坚固 - 按意义查找
python scripts/navigator.py --find-text "登录" --tap

使用语义导航在辅助功能API上与元素进行交互,而不是坐标。适用于不同的屏幕尺寸,并能承受UI重新设计。

特性

  • 21个生产脚本用于构建、测试和自动化
  • 语义导航 - 通过文本、类型或ID查找元素
  • 令牌优化 - 相比原始工具减少96%(默认3-5行)
  • 零配置 - 在macOS上立即与Xcode一起工作
  • 结构化输出 - JSON和格式化文本,易于解析
  • 自动UDID检测 - 不需要每次指定设备
  • 批量操作 - 启动、删除、重置多个模拟器
  • 全面测试 - WCAG合规性检查、视觉差异比较、辅助功能审计
  • CI/CD准备 - JSON输出、退出码、自动化设备生命周期

安装

作为Claude Code技能

# 个人安装
git clone https://github.com/conorluddy/ios-simulator-skill.git ~/.claude/skills/ios-simulator-skill

# 项目安装
git clone https
://github.com/conorluddy/ios-simulator-skill.git .claude/skills/ios-simulator-skill

重启Claude Code。技能会自动加载。

从发布版

# 下载最新发布版
curl -L https://github.com/conorluddy/ios-simulator-skill/releases/download/vX.X.X/ios-simulator-skill-vX.X.X.zip -o skill.zip

# 解压
unzip skill.zip -d ~/.claude/skills/ios-simulator-skill

先决条件

  • macOS 12+
  • Xcode命令行工具 (xcode-select --install)
  • Python 3
  • IDB(可选,用于互动特性:brew tap facebook/fb && brew install idb-companion

快速开始

# 1. 检查环境
bash ~/.claude/skills/ios-simulator-skill/scripts/sim_health_check.sh

# 2. 启动应用
python ~/.claude/skills/ios-simulator-skill/scripts/app_launcher.py --launch com.example.app

# 3. 查看屏幕上显示的内容
python ~/.claude/skills/ios-simulator-skill/scripts/screen_mapper.py
# 输出:
# 屏幕:LoginViewController (45个元素,7个可交互)
# 按钮:"登录","取消","忘记密码"
# 文本框:2 (0已填写)

# 4. 点击登录按钮
python ~/.claude/skills/ios-simulator-skill/scripts/navigator.py --find-text "登录" --tap

# 5. 输入文本
python ~/.claude/skills/ios-simulator-skill/scripts/navigator.py --find-type TextField --enter-text "user@test.com"

# 6. 检查辅助功能
python ~/.claude/skills/ios-simulator-skill/scripts/accessibility_audit.py

按类别组织的21个脚本

构建与开发

  • build_and_test.py - 构建项目,运行测试,解析结果
  • log_monitor.py - 实时日志监控

导航与交互

  • screen_mapper.py - 分析当前屏幕
  • navigator.py - 查找并交互元素
  • gesture.py - 滑动、滚动、捏合
  • keyboard.py - 文本输入和硬件按钮
  • app_launcher.py - 应用生命周期控制

测试与分析

  • accessibility_audit.py - WCAG合规性检查
  • visual_diff.py - 截图比较
  • test_recorder.py - 自动测试文档记录
  • app_state_capture.py - 调试快照
  • sim_health_check.sh - 环境验证

高级测试与权限

  • clipboard.py - 剪贴板管理
  • status_bar.py - 状态栏控制
  • push_notification.py - 推送通知
  • privacy_manager.py - 权限管理

设备生命周期

  • simctl_boot.py - 启动模拟器
  • simctl_shutdown.py- 关闭模拟器
  • simctl_create.py - 创建模拟器
  • simctl_delete.py - 删除模拟器
  • simctl_erase.py - 工厂重置

详见SKILL.md以获取完整参考。

如何与Claude Code配合使用

Claude Code会根据您的请求自动检测何时使用此技能。您无需手动调用它。

示例对话:

您:"设置我的iOS应用进行测试"
Claude:[自动使用simctl_boot.py和app_launcher.py]

您:"点击登录按钮"
Claude:[使用navigator.py查找并点击]

您:"检查表单是否可用"
Claude:[使用accessibility_audit.py]

您也可以在需要时手动运行脚本。

使用示例

示例1:登录流程

# 启动应用
python scripts/app_launcher.py --launch com.example.app

# 映射屏幕以查找字段
python scripts/screen_mapper.py

# 输入凭据
python scripts/navigator.py --find-type TextField --index 0 --enter-text "user@test.com"
python scripts/navigator.py --find-type SecureTextField --enter-text "password"

# 点击登录
python scripts/navigator.py --find-text "登录" --tap

# 验证辅助功能
python scripts/accessibility_audit.py

示例2:测试文档记录

# 记录测试执行
python scripts/test_recorder.py --test-name "登录流程" --output test-reports/

# 生成:
# - 每步的截图
# - 辅助功能树
# - 包含时间戳的Markdown报告

示例3:视觉测试

# 捕获基线
python scripts/app_state_capture.py --output baseline/

# 进行更改...

# 对比
python scripts/visual_diff.py baseline/screenshot.png current/screenshot.png

示例4:权限测试

# 授予权限
python scripts/privacy_manager.py --bundle-id com.example.app --grant camera,location

# 测试应用行为...

# 撤销权限
python scripts/privacy_manager.py --bundle-id com.example.app --revoke camera,location

示例5:CI/CD中的设备生命周期

# 创建测试设备
DEVICE_ID=$(python scripts/simctl_create.py --device "iPhone 16 Pro" --json | jq -r '.new_udid')

# 运行测试
python scripts/build_and_test.py --project MyApp.xcodeproj

# 清理
python scripts/simctl_delete.py --udid $DEVICE_ID --yes

设计原则

语义导航:按意义(文本、类型、ID)查找元素,而非像素坐标。能够承受UI更改并在不同设备尺寸上工作。

令牌效率:默认输出为3-5行。使用--verbose获取详细信息或使用--json供机器解析。相比原始工具减少96%。

辅助功能优先:基于iOS辅助功能API构建,确保可靠性。对有辅助功能需求的用户更友好,且更适于自动化。

零配置:在任何配备Xcode的macOS上立即工作。无需复杂设置,无需配置文件。

结构化数据:脚本输出JSON或格式化文本,而非原始日志。易于解析、集成和理解。

自动学习:构建系统学习您的设备偏好并记住下次使用。

要求

系统:

  • macOS 12或更高版本
  • Xcode命令行工具
  • Python 3

可选:

  • IDB(用于互动特性)
  • Pillow(用于visual_diff.py:pip3 install pillow

文档

  • SKILL.md - 完整脚本参考和目录
  • CLAUDE.md - 架构和开发者指南
  • references/ - 特定主题的深入文档
  • examples/ - 完整自动化工作流

输出效率

所有脚本默认最小化输出:

任务原始工具本技能节省
屏幕分析200+ 行5 行97.5%
查找并点击按钮100+ 行1 行99%
输入文本50+ 行1 行98%
登录流程400+ 行15 行96%

这种效率使AI代理对话保持专注且成本效益高。

故障排除

环境问题

# 运行健康检查
bash ~/.claude/skills/ios-simulator-skill/scripts/sim_health_check.sh

# 检查:macOS、Xcode、simctl、IDB、Python、模拟器、包

脚本帮助

# 所有脚本支持 --help
python scripts/navigator.py --help
python scripts/accessibility_audit.py --help

无法找到元素

# 使用详细模式查看所有元素
python scripts/screen_mapper.py --verbose

# 检查精确文本匹配
python scripts/navigator.py --find-text "精确按钮文本" --tap

贡献

贡献应:

  • 维持令牌效率(最小默认输出)
  • 遵循辅助功能优先设计
  • 支持--help文档
  • 支持--json用于CI/CD
  • 通过Black格式化器和Ruff静态分析器
  • 包括类型提示
  • 更新SKILL.md

许可

MIT许可 - 允许商业使用和分发。

支持


为AI代理构建。为开发者优化。