--- 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 ` 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 `: 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 ``` For a remote ADB endpoint, append `--adb-host --adb-port ` to `list`, `requests`, `show`, or `intercept`; the script uses the ADB server directly. Otherwise, its localhost forward is removed automatically when the command exits. Use `--no-app-info` to skip package and process lookup. 2. Pick a target serial and socket. If multiple devices or sockets are available, select them explicitly. 3. Pull captured events. ```bash "$SNAPO_BIN" requests -s -n --filter '' --no-stream --json ``` `--filter` uses the same case-insensitive URL syntax as the Network Tool search bar. Separate terms must all match, a term prefixed with `-` is excluded, and quotes or backslashes can escape whitespace. `snapo-network requests` replaces request `Authorization` and `Cookie` values and response `Set-Cookie` values with `[REDACTED]`. 4. Inspect one request deeply when full request or response details are required. ```bash "$SNAPO_BIN" show -s -n -r --json ``` This output can contain URL query values and request or response bodies. 5. Re-check command help if output differs. ```bash "$SNAPO_BIN" --help "$SNAPO_BIN" list --help "$SNAPO_BIN" requests --help "$SNAPO_BIN" show --help "$SNAPO_BIN" intercept --help ``` ## Output Notes - `--json` emits NDJSON, so process it line by line. - `snapo-network requests` emits Chrome DevTools Protocol-style records with top-level `method` and `params` fields. - Use `--no-stream` for a one-shot buffered snapshot. - `snapo-network intercept` writes runner logs to stderr and does not accept `--json`, `--filter`, or `--no-stream`. - Network protocol 2 uses a tool-owned `/network/protocol` version check, HTTP history and body reads, and SSE for live events. Interception registers routes with a POST that returns its own SSE connection. The CLI requires an updated Android Network library.