Snap-O — скилл

Навыки для Codex читают сетевой трафик Android-приложения, подменяют ответы API и меняют значения интерфейса без пересборки.

  • 120 ★ репозитория
  • Последний коммит
  • Apache-2.0
Скилл

Расширенный доступ

Почему такой уровень

  • Утилиты общаются с приложением через adb и подменяют ответы API или значения интерфейса на устройстве.
  • Перехваченные заголовки и тела запросов могут содержать токены и личные данные.
Все причины и проверки

openai/snap-o

Установка

Работает в

Ручная установка

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

СкиллРасширенный доступ10,5 тыс.Звезды репозитория

21 скилл для Android и KMP в Claude Code, Codex и Copilot CLI: Compose, корутины, Flow, сеть, хранение, тесты и Gradle

ПлагинМинимальный доступ173Звезды репозитория

Форк opencode для мобильной разработки: агент запускает симулятор iOS или эмулятор Android и показывает устройство рядом

CLIШирокий доступ244Звезды репозитория

Скиллы и CLI, чтобы Claude Code, Codex и OpenCode управляли Android-телефоном: открывали приложения, нажимали, вводили текст и тестировали сценарии

СкиллШирокий доступ1,8 тыс.Звезды репозитория

Плагин для Codex и Claude Code: агент смотрит экран Android-телефона, нажимает и печатает по Wi-Fi, без ADB и USB.

ПлагинШирокий доступ137Звезды репозитория

Скилл и CLI для управления Android-телефоном через ADB и vision-модели: агент открывает приложения, ищет, заказывает и проверяет результат

СкиллШирокий доступ26Звезды репозитория

Коротко о 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
```

Сообщить о проблеме