Как научить Claude Code управлять iOS-симулятором
Представьте: вы сидите в терминале, общаетесь с Claude Code, и вместо того чтобы вручную открывать Xcode, искать нужную кнопку в симуляторе или копировать логи из консоли, вы просто пишете: «Проверь, как выглядит экран логина на iPhone 15, и нажми кнопку входа». И ИИ это делает. Звучит как магия, но на деле это работа набора скриптов ios-simulator-skill.
Я наткнулся на этот репозиторий, когда искал способ подружить агентный ИИ с мобильной разработкой. Автор проекта, Конор Ладди, собрал 22 скрипта на Python и Bash, которые превращают Claude в полноценного QA-инженера или помощника разработчика, способного «видеть» интерфейс приложения и взаимодействовать с ним.
Зачем это нужно, если есть Xcode
Обычно общение ИИ-агента с iOS-проектом превращается в кошмар из-за огромных логов сборки и тяжелых скриншотов. Если скормить Claude стандартный вывод xcodebuild, контекстное окно забьется мусором за пару секунд.
Этот проект решает проблему элегантно. Скрипты выступают фильтром: они отдают нейронке только суть. Вместо 400 строк лога авторизации Claude получает 15 строк чистого текста. Это экономит токены и, что важнее, не дает модели «галлюцинировать» из-за перегрузки информацией.
Что умеет этот набор инструментов
Проект закрывает две большие задачи: сборку приложения и манипуляции с симулятором.
Умная сборка без лишнего шума
Скрипт build_and_test.py оборачивает стандартные инструменты Apple. Когда вы запускаете билд, Claude видит только короткую строку со статусом и ID результата. Если что-то пошло не так, модель может точечно запросить ошибки или предупреждения по этому ID. Это называется прогрессивным раскрытием данных — мы не вываливаем всё сразу, а даем детали по запросу.
Навигация через Accessibility
Это, пожалуй, самая крутая фишка. Вместо того чтобы пытаться угадать координаты кнопки на скриншоте (что часто приводит к промахам), скрипты используют iOS Accessibility API.
Claude ищет элементы по их смысловому значению. Например, команда найти текст «Login» и нажать на него работает стабильнее, чем клик по координатам x: 320, y: 400. К тому же, текстовое описание дерева элементов занимает в сотни раз меньше токенов, чем картинка.
Оптимизация скриншотов
Если без визуальной проверки не обойтись (например, нужно сравнить дизайн или найти баг в верстке), скрипты сами сжимают и меняют размер скриншотов. В итоге нагрузка на контекст снижается на 90-95%.
Как это устроено внутри
В репозитории лежит пачка Python-скриптов, которые дергают xcrun simctl и idb (инструмент от Facebook для автоматизации iOS).
Вот пара интересных инструментов из списка:
screen_mapper.py— анализирует экран и составляет список всех интерактивных элементов.gesture.py— умеет делать свайпы, пинчи и даже pull-to-refresh.privacy_manager.py— позволяет одной командой выдать приложению права на фото, контакты или локацию. Это дико удобно для автоматических тестов, где раньше приходилось вручную кликать по системным алертам.
Интересно, что автор добавил даже accessibility_audit.py для проверки приложения на соответствие стандартам WCAG. Claude может пройтись по экранам и сказать, где вы забыли добавить подписи для VoiceOver.
Как запустить у себя
Проект позиционируется как «скилл» для Claude Code, но по факту это набор автономных скриптов, которые можно использовать и отдельно.
Если вы пользуетесь Claude Code, установка выглядит так:
/plugin marketplace add conorluddy/ios-simulator-skill
/plugin install ios-simulator-skill@conorluddy
Из зависимостей понадобятся Xcode Command Line Tools, Python 3 и желательно idb (ставится через brew). Если планируете сравнивать скриншоты, доустановите библиотеку Pillow через pip.
Практическая польза
Кому это пригодится? В первую очередь тем, кто хочет автоматизировать рутину. Например, можно попросить Claude:
- «Собери проект, запусти на iPhone 14 Pro и сделай скриншоты всех экранов для документации».
- «Найди, почему падает тест на этапе авторизации, и покажи логи только за последние 2 минуты».
- «Проверь, как приложение ведет себя при медленном интернете и выключенной геолокации».
В тестах самого автора связка Claude + ios-simulator-skill показала 100% прохождение сценариев, в то время как «голый» Claude без этих инструментов справлялся меньше чем в половине случаев.
Стоит ли пробовать
Если вы iOS-разработчик и уже начали внедрять ИИ-агентов в свой воркфлоу, то этот проект — must-have. Он убирает главную боль: несовместимость многословных инструментов Apple с лаконичностью, которая нужна языковым моделям.
Конечно, проект требует настройки окружения, и idb иногда капризничает на новых версиях macOS, но сама идея управления симулятором через семантическое дерево элементов — это именно то, как должна выглядеть современная автоматизация. Скрипты написаны просто, их легко подправить под свои нужды или вытащить только то, что нужно для ваших CI/CD пайплайнов.