iOS Simulator Skill
conorluddy/ios-simulator-skillСкилл для Claude Code, оборачивающий xcodebuild и xcrun simctl в 22 оптимизированных скрипта. Семантическая навигация по UI через accessibility API, прогрессивное раскрытие ошибок сборки и минимизация токенов — для разработчиков и AI-агентов.
Установка
git clone https://github.com/conorluddy/ios-simulator-skill.gitREADME
iOS Simulator Skill для Claude Code
Готовый к продакшену скилл для сборки, тестирования и автоматизации iOS-приложений. 22 скрипта, оптимизированных как для разработчиков, так и для AI-агентов.
Сборка в Xcode + автоматизация симулятора
Скилл охватывает обе стороны iOS-разработки:
- Сборка в Xcode через
xcodebuild— компиляция, тестирование и разбор результатов с прогрессивным раскрытием ошибок - Взаимодействие с симулятором через
xcrun simctlиidb— семантическая навигация по UI, тестирование доступности, управление жизненным циклом устройства
Если нужен только инструментарий для сборки в Xcode без скриптов симулятора, смотрите плагин-версию: xclaude-plugin
Установка
Через маркетплейс плагинов (рекомендуется)
В Claude Code:
/plugin marketplace add conorluddy/ios-simulator-skill
/plugin install ios-simulator-skill@conorluddy
Через Git Clone
# Личная установка
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. Скилл загружается автоматически.
Требования
- macOS 12+
- Xcode Command Line Tools (
xcode-select --install) - Python 3
- IDB (опционально, для интерактивных функций:
brew tap facebook/fb && brew install idb-companion) - Pillow (опционально, для визуального сравнения:
pip3 install pillow)
Возможности
Сборка в Xcode с прогрессивным раскрытием
Скрипт build_and_test.py оборачивает xcodebuild с токен-эффективным выводом. Сборка возвращает одну строку-сводку с идентификатором xcresult:
Build: SUCCESS (0 errors, 3 warnings) [xcresult-20251018-143052]
Затем можно запросить детали по требованию:
python scripts/build_and_test.py --get-errors xcresult-20251018-143052
python scripts/build_and_test.py --get-warnings xcresult-20251018-143052
python scripts/build_and_test.py --get-log xcresult-20251018-143052Это позволяет агентным диалогам оставаться сфокусированными — никакого потока вывода сборки, пока вы сами не попросите.
Навигация по симулятору через Accessibility
Вместо хрупкого тапа по пиксельным координатам вся навигация использует iOS accessibility API для поиска элементов по смыслу:
# Хрупко — ломается при изменении UI
idb ui tap 320 400
# Надёжно — поиск по смыслу
python scripts/navigator.py --find-text "Login" --tapДерево доступности даёт структурированные данные (типы элементов, метки, фреймы, цели тапов) — около 10 токенов при выводе по умолчанию против 1 600–6 300 токенов для скриншота. Подробнее о том, почему навигация через accessibility важна для AI-агентов: AI-Accessible Apps.
Оптимизация токенов для скриншотов
Когда скриншоты всё же нужны (визуальная верификация, баг-репорты, сравнение), скилл автоматически изменяет размер и сжимает их для минимизации расхода токенов. Вывод по умолчанию для всех 22 скриптов — 3–5 строк, что на 96% меньше, чем у сырого вывода инструментов.
| Задача | Сырые инструменты | Этот скилл | Экономия |
|---|---|---|---|
| Анализ экрана | 200+ строк | 5 строк | 97,5% |
| Найти и нажать кнопку | 100+ строк | 1 строка | 99% |
| Поток входа в систему | 400+ строк | 15 строк | 96% |
Все 22 скрипта
Каждый скрипт поддерживает флаги --help и --json. Полный справочник — в SKILL.md.
Сборка и разработка
| Скрипт | Что делает | Ключевые флаги |
|---|---|---|
build_and_test.py | Сборка Xcode-проектов, запуск тестов, разбор xcresult-бандлов | --project, --scheme, --test, --get-errors, --get-warnings |
log_monitor.py | Мониторинг логов в реальном времени с фильтрацией по уровню | --app, --severity, --follow, --duration |
Навигация и взаимодействие
| Скрипт | Что делает | Ключевые флаги |
|---|---|---|
screen_mapper.py | Анализ текущего экрана, список интерактивных элементов | --verbose, --hints |
navigator.py | Семантический поиск элементов и взаимодействие с ними | --find-text, --find-type, --find-id, --tap, --enter-text |
gesture.py | Свайпы, прокрутка, пинч, долгое нажатие, pull-to-refresh | --swipe, --scroll, --pinch, --long-press, --refresh |
keyboard.py | Ввод текста и управление аппаратными кнопками | --type, --key, --button, --clear, --dismiss |
app_launcher.py | Запуск, завершение, установка приложений, deep link | --launch, --terminate, --install, --open-url, --list |
Тестирование и анализ
| Скрипт | Что делает | Ключевые флаги |
|---|---|---|
accessibility_audit.py | Проверка соответствия WCAG на текущем экране | --verbose, --output |
visual_diff.py | Сравнение двух скриншотов для выявления визуальных изменений | --threshold, --output, --details |
test_recorder.py | Автоматическая документация тестов со скриншотами | --test-name, --output |
app_state_capture.py | Отладочные снимки состояния (скриншот, иерархия, логи) | --app-bundle-id, --output, --log-lines |
sim_health_check.sh | Проверка окружения (Xcode, simctl, IDB, Python) | — |
model_inspector.py | Инспекция моделей Core Data / SwiftData из файлов проекта | --project-path, --raw, --show-versions |
Разрешения и окружение
| Скрипт | Что делает | Ключевые флаги |
|---|---|---|
clipboard.py | Копирование текста в буфер обмена симулятора для тестирования вставки | --copy, --test-name |
status_bar.py | Переопределение строки состояния (время, батарея, сеть) | --preset, --time, --battery-level, --clear |
push_notification.py | Отправка симулированных push-уведомлений | --bundle-id, --title, --body, --payload |
privacy_manager.py | Выдача, отзыв и сброс разрешений приложения (13 сервисов) | --bundle-id, --grant, --revoke, --reset |
Жизненный цикл устройства
| Скрипт | Что делает | Ключевые флаги |
|---|---|---|
simctl_boot.py | Загрузка симуляторов с проверкой готовности | --name, --wait-ready, --timeout, --all, --type |