Claude Info
Мобильная разработка

iOS Simulator Skill

conorluddy/ios-simulator-skill

Скилл для Claude Code, оборачивающий xcodebuild и xcrun simctl в 22 оптимизированных скрипта. Семантическая навигация по UI через accessibility API, прогрессивное раскрытие ошибок сборки и минимизация токенов — для разработчиков и AI-агентов.

Установка

terminal
bash
git clone https://github.com/conorluddy/ios-simulator-skill.git

README

Ask DeepWiki

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

bash
# Личная установка
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]

Затем можно запросить детали по требованию:

bash
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 для поиска элементов по смыслу:

bash
# Хрупко — ломается при изменении 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

Похожие скиллы