适用于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重新设计。
# 个人安装
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
xcode-select --install)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
详见SKILL.md以获取完整参考。
Claude Code会根据您的请求自动检测何时使用此技能。您无需手动调用它。
示例对话:
您:"设置我的iOS应用进行测试"
Claude:[自动使用simctl_boot.py和app_launcher.py]
您:"点击登录按钮"
Claude:[使用navigator.py查找并点击]
您:"检查表单是否可用"
Claude:[使用accessibility_audit.py]
您也可以在需要时手动运行脚本。
# 启动应用
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
# 记录测试执行
python scripts/test_recorder.py --test-name "登录流程" --output test-reports/
# 生成:
# - 每步的截图
# - 辅助功能树
# - 包含时间戳的Markdown报告
# 捕获基线
python scripts/app_state_capture.py --output baseline/
# 进行更改...
# 对比
python scripts/visual_diff.py baseline/screenshot.png current/screenshot.png
# 授予权限
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
# 创建测试设备
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或格式化文本,而非原始日志。易于解析、集成和理解。
自动学习:构建系统学习您的设备偏好并记住下次使用。
系统:
可选:
pip3 install pillow)所有脚本默认最小化输出:
| 任务 | 原始工具 | 本技能 | 节省 |
|---|---|---|---|
| 屏幕分析 | 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/CDMIT许可 - 允许商业使用和分发。
为AI代理构建。为开发者优化。