Snap-O — скилл
Навыки для Codex читают сетевой трафик Android-приложения, подменяют ответы API и меняют значения интерфейса без пересборки.
- 120 ★ репозитория
- Последний коммит
- Apache-2.0
Расширенный доступ
Почему такой уровень
- Утилиты общаются с приложением через adb и подменяют ответы API или значения интерфейса на устройстве.
- Перехваченные заголовки и тела запросов могут содержать токены и личные данные.
Установка
- Работает в
Ручная установка
mkdir -p ~/.local/bin && curl -fsSL https://raw.githubusercontent.com/openai/snap-o/main/skills/snap-o-network-inspector/scripts/snapo-network -o ~/.local/bin/snapo-network && chmod +x ~/.local/bin/snapo-networkСкачивает утилиту сетевого инспектора. Для Tweaks скрипт `snapo-tweaks` лежит рядом, в каталоге навыка `snap-o-tweaks`.
Доступ и проверки
Как мы проверяемРасширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.
- Утилиты общаются с приложением через adb и подменяют ответы API или значения интерфейса на устройстве.
- Перехваченные заголовки и тела запросов могут содержать токены и личные данные.
Это чужой код. Посмотрите файлы в репозитории перед установкой.
Что делает
Snap-O от OpenAI — набор отладочных инструментов для Android. В репозитории лежат плагин Codex и два навыка: `snap-o-network-inspector` и `snap-o-tweaks`. Первый читает HTTP-запросы и ответы, события SSE и сообщения WebSocket через утилиту `snapo-network`, а по Python-скрипту подменяет или задерживает ответы API. Второй работает через `snapo-tweaks` с живыми значениями интерфейса: читает, меняет и сбрасывает их, запускает действия, которые приложение зарегистрировало. Обе утилиты запускаются на macOS и Linux, им нужны Python 3 и Android Platform Tools. Приложение Snap-O для macOS не требуется. В сам Android-проект надо добавить библиотеки Snap-O: сеть перехватывается в OkHttp, Ktor на движке OkHttp и HttpURLConnection.
Для кого. Android-разработчикам, которые отлаживают сетевые вызовы и подбирают значения интерфейса вместе с Codex.
Подходит, если
- Приложение получает неожиданный ответ API, и надо посмотреть заголовки и тело запроса на устройстве.
- Экран проверяют на ошибку сервера или медленный ответ без правки бэкенда.
- Отступ, цвет или кривую анимации подбирают на запущенном приложении без пересборки.
- Подобранные значения агент переносит в исходный код.
Не подходит, если
- Приложение не под Android: утилиты работают через adb.
- В проект нельзя добавить отладочные зависимости Snap-O.
- Трафик надо снять у чужого приложения, к сборке которого нет доступа.
Пример запроса к агенту
Покажи последние запросы приложения к API и подмени ответ со списком заказов на пустой массив с задержкой две секунды.Ограничения
Навыки видят только приложения с интеграцией Snap-O: без библиотек в сборке перехватывать нечего. Нужны Python 3, adb из Android Platform Tools и устройство с отладкой по USB или эмулятор. Подмена ответов требует поддержки перехвата OkHttp в приложении. В релизную сборку подключают пустые артефакты `noop`: они пропускают трафик и не запускают сервер Snap-O. Отдельной команды установки навыка для Codex README не дает: плагин лежит в каталоге `.codex-plugin`, а утилиты скачивают командой `curl`.
Как отключить. Удалите плагин или утилиты `snapo-network` и `snapo-tweaks` из каталога навыков агента. В Android-проекте замените отладочные зависимости Snap-O на варианты `noop` либо уберите их.
Частые вопросы
Какие HTTP-клиенты перехватывает Snap-O?
OkHttp, Ktor на движке OkHttp и HttpURLConnection. Подмена ответов через `snapo-network intercept` идет по соединению OkHttp.
Нужно ли приложение Snap-O для macOS?
Нет. Обе утилиты работают на macOS и Linux без приложения, им хватает Python 3 и Android Platform Tools.
Как найти нужное приложение на устройстве?
Выполните `snapo-network list --json`: в строках будут `pid`, `processName` и `packageName`. Устройство выбирают флагами `-s`, `-d` или `-e`.
Как изменить значение интерфейса на лету?
Выполните `snapo-tweaks apps --json`, затем `snapo-tweaks list -s SERIAL -n SOCKET --json` и `snapo-tweaks set 'Typography/Font size' 42 -s SERIAL -n SOCKET`. Имя значения берут из своего приложения.
Как подменить ответ API?
Напишите Python-скрипт с обработчиками маршрутов и запустите `snapo-network intercept <file.py>`. Приложение должно поддерживать перехват OkHttp.
Обсуждение
Вопросов и отзывов пока нет.
Похожие
СкиллыОфициальные 30 скиллов команды Android: Jetpack Compose, обновление AGP 9, R8, профилирование Perfetto, Navigation 3, CameraX и политики Google Play
21 скилл для Android и KMP в Claude Code, Codex и Copilot CLI: Compose, корутины, Flow, сеть, хранение, тесты и Gradle
Форк opencode для мобильной разработки: агент запускает симулятор iOS или эмулятор Android и показывает устройство рядом
Скиллы и CLI, чтобы Claude Code, Codex и OpenCode управляли Android-телефоном: открывали приложения, нажимали, вводили текст и тестировали сценарии
Плагин для Codex и Claude Code: агент смотрит экран Android-телефона, нажимает и печатает по Wi-Fi, без ADB и USB.
Скилл и CLI для управления Android-телефоном через ADB и vision-модели: агент открывает приложения, ищет, заказывает и проверяет результат
Коротко о README
Основной продукт — приложение для macOS: захват экрана, сетевой инспектор и панель Tweaks. Сеть и Tweaks получили отдельные командные утилиты и навыки Codex для macOS и Linux.
Бейдж для README
Исходный SKILL.md
--- name: snap-o-network-inspector description: Inspect Android network captures and intercept HTTP calls with the Snap-O CLI for a selected device/socket. Use for request/response details, websocket events, API response overrides, mock responses, or delays with Python route handlers. --- # Snap-O Network Tool Use this skill to inspect network traffic or override API responses in an Android app. ## CLI Path Use the Network CLI bundled with the Snap-O plugin: ```bash SNAPO_BIN=/path/to/snap-o/skills/snap-o-network-inspector/scripts/snapo-network ``` Resolve `scripts/snapo-network` relative to the directory containing this `SKILL.md`; do not assume the current working directory. The script requires Python 3 and Android Platform Tools; no Python packages, compiler toolchain, or macOS application are required. The script resolves `adb` from `PATH`, `ANDROID_SDK_ROOT`, or `ANDROID_HOME`. Use `--adb <path>` or `SNAPO_ADB` to select a specific ADB executable or wrapper. Wrappers selecting a remote ADB server must tunnel Snap-O forwards back to localhost; otherwise, pass both `--adb-host` and `--adb-port`. Listings use ADB process and package information without contacting the app. JSON rows contain `pid`, `processName`, and `packageName`; unresolved identity fields are `null`. Friendly app labels and icons are not loaded. ## Current Command Surface - `snapo-network list`: lists available Snap-O Network Tool servers. - `snapo-network requests`: emits CDP network events for a server. - `snapo-network show`: shows full details for a request id, including headers and bodies. - `snapo-network intercept <file.py>`: runs [Python route handlers](references/interception.md) to edit or mock HTTP responses; requires Snap-O OkHttp interception support in the app. Useful global selectors: - `-s`, `--serial`: use a specific device serial. - `-d`: use the single connected USB device. - `-e`: use the single connected emulator. - `--adb`: use a specific ADB executable or wrapper. - `--adb-host`, `--adb-port`: connect directly to an explicit remote ADB server; otherwise the configured ADB command selects its endpoint. ## Inspection Flow 1. List available servers. ```bash "$SNAPO_BIN" list --json ```