Claude for Safari — навык, который даёт AI-агенту контроль над вашим Safari
📂 Исходный код на GitHubНавык для AI-агентов: управление реальным Safari на macOS через AppleScript и JavaScript. Список вкладок, чтение страниц, выполнение JS, скриншоты, клики, заполнение форм. Без расширений, прокси и отдельных браузеров. MIT.
Хотите, чтобы AI-агент работал с браузером — но не с отдельным экземпляром Playwright и не через Chrome-расширение, а именно с вашим настоящим Safari, как если бы это делали вы сами? Навык Claude for Safari решает ровно эту задачу. Установка занимает одну команду, а дальше агенту можно сказать «покажи, что открыто в моём Safari» — и он прочитает и начнёт управлять вашим реальным браузером.
Проблема, которую решает навык
Любая попытка поручить AI-агенту браузерные задачи упирается в одну из трёх проблем:
- Playwright — запускает отдельный экземпляр браузера и перехватывает вашу сессию
- Claude for Chrome — требует Chrome-расширение и не работает с Safari
- Copy & paste — приходится вручную каждый раз подкармливать агента содержимым страницы
Всё, что нужно на самом деле — чтобы AI использовал ваш Safari так, как будто вы делаете это сами. Claude for Safari как раз это и обеспечивает.
Установка
Команда установки стандартная для навыков:
npx skills add SDLLL/claude-for-safari
После этого запускаем агента:
claude
и говорим «покажи, какие вкладки открыты в Safari». Агент сам проведёт через настройку разрешений.
Навык совместим с любым AI-агентом, поддерживающим Skills: Claude Code, Cursor, Windsurf и другие.
Настройка разрешений при первом запуске
Агент умеет автоматически определять, чего не хватает, и подсказывать, но можно настроить заранее:
- System Settings > Privacy & Security > Automation → разрешить терминалу управлять Safari
- Safari > Settings > Advanced → включить «Show features for web developers»
- Safari > Develop menu → отметить «Allow JavaScript from Apple Events»
- (Опционально) System Settings > Privacy & Security > Screen Recording → разрешить терминалу или хосту агента (обеспечивает надёжные фоновые скриншоты)
- (Опционально) System Settings > Privacy & Security > Accessibility → нужно только для кликов и ввода с клавиатуры через System Events
Возможности
Никаких расширений браузера, прокси и постоянных демонов. Ядро использует нативные возможности macOS; опциональные хелперы для окон требуют установленного Swift-тулчейна.
| Возможность | Что делает агент | Как реализовано |
|---|---|---|
| Список вкладок | Перечисляет все окна и вкладки с заголовками и URL | AppleScript |
| Чтение страниц | Извлекает текст, структурированные данные, упрощённый DOM | AppleScript + JavaScript |
| Выполнение JS | Запускает произвольный JavaScript в контексте страницы | AppleScript do JavaScript |
| Скриншот | Снимает окно Safari — агент может «видеть» страницу | screencapture |
| Навигация | Открывает URL, новые вкладки, новые окна | AppleScript |
| Клик | Кликает по элементам (совместимо с React/Vue/Angular) | JavaScript dispatchEvent |
| Ввод текста | Заполняет формы, симулирует ввод с клавиатуры | JavaScript + System Events |
| Безопасное заполнение форм | Находит поля и заполняет поддерживаемые нечувствительные контролы с проверкой каждого поля | Встроенный JavaScript + JXA |
| Наблюдение за сетью | Наблюдает за отредактированными метаданными fetch/XHR на уровне страницы; тела запросов — только по явному согласию | Встроенный JavaScript |
| Индикатор управления | Показывает, что агент меняет страницу, и убирает следы после | Встроенный JavaScript |
| Скролл | Прокручивает вверх/вниз, до конкретного элемента | JavaScript scrollBy/scrollTo |
| Переключение вкладок | Переключается по индексу или ключевому слову в URL | AppleScript |
| Ожидание загрузки | Ждёт полной загрузки страницы | JavaScript readyState |
Режимы скриншотов
| Режим | Требуемое разрешение | Переключение окон | Когда использовать |
|---|---|---|---|
| Фоновый | Screen Recording | Не требуется | Рекомендуемый, без помех |
| Видимый пользователю | Зависит от политики macOS | Да | Запасной, когда фоновый недоступен |
Как это работает
Claude Code ──osascript──► Safari (читает и управляет вашим реальным браузером)
│
└──screencapture──► скриншот ──► Claude видит страницу
Никаких расширений, прокси-серверов и фоновых служб. Навык использует AppleScript, JavaScript на странице, screencapture и опциональные встроенные хелперы. Инжектируемые на страницу хелперы могут обнаруживаться сайтами и удаляются после использования.
Безопасность
Вопрос «не натворит ли ИИ лишнего» в README закрыт явно:
- Требуется подтверждение цели (target verification) перед действиями
- Сохраняются системные диалоги подтверждения сайтов
- Чувствительные поля форм исключаются
- Запрос авторизации перед значимыми действиями
- Политика разрешений вашего хоста агента всё равно применяется
Частые вопросы
Что нужно устанавливать? Ядро работает без расширений и отдельного браузер-автоматизатора. Используются нативные AppleScript и screencapture; компиляция опционального хелпера для нескольких окон требует swiftc / Command Line Tools.
Поддерживает ли Chrome, Firefox, Arc? Только Safari. Для других браузеров — Playwright MCP или Chrome ACP. Safari — единственный браузер на macOS с полной поддержкой автоматизации через AppleScript.
Окно мигает при скриншотах? Дайте терминалу или хосту агента разрешение Screen Recording для надёжного фонового захвата. Без него используйте видимый пользователю сценарий и проверяйте итоговое изображение.
Итог
Claude for Safari — редкий пример навыка, который закрывает конкретную боль: работа с настоящим браузером пользователя без костылей. Одна команда установки, нативные механизмы macOS вместо расширений и встроенные предохранители — всё, чтобы агент мог «пользоваться Safari как вы». Полезно всем, кто на macOS и хотел бы поручить агенту браузерные задачи — от проверки вкладок до заполнения форм.