# Argent Tv Interact > Controla e inspecciona apps de TV con argent (Apple TV/tvOS, Android TV/leanback, Fire TV/Vega): arranca el dispositivo, lee el foco, navega con el mando D-pad, escribe, captura pantalla y depura el runtime JS en Vega. Fuente: https://skillsagentes.com/skills/software-mansion/argent/argent-tv-interact Markdown: https://skillsagentes.com/skills/software-mansion/argent/argent-tv-interact.md Repositorio: https://github.com/software-mansion/argent Autor: software-mansion Licencia: Apache-2.0 Actualizado: hace 7 días Coste de contexto: 103 tok instalada, 1.9k tok al activarse, 1.9k tok con todos los archivos del bundle Bundle: 1 archivo, 7 KB Permisos que pide: ninguno declarado ## Instalación Un skill son archivos markdown: los mismos archivos valen para cualquier agente y lo único que cambia es el directorio de destino, es decir la bandera `--agent`. Añade `-g` para instalarlo en todos los proyectos de la máquina. ```bash # Claude Code npx -y skills add software-mansion/argent --skill argent-tv-interact --agent claude-code # Cursor npx -y skills add software-mansion/argent --skill argent-tv-interact --agent cursor # Codex npx -y skills add software-mansion/argent --skill argent-tv-interact --agent codex # Gemini CLI npx -y skills add software-mansion/argent --skill argent-tv-interact --agent gemini # Windsurf npx -y skills add software-mansion/argent --skill argent-tv-interact --agent windsurf # Cline npx -y skills add software-mansion/argent --skill argent-tv-interact --agent cline ``` ## Qué hace - Arranca el dispositivo TV objetivo (Apple TV, Android TV o Fire TV/Vega) y detecta la plataforma automáticamente por el udid - Navega con el mando D-pad (`tv-remote`) guiándose por el elemento con foco que devuelve `describe`, nunca por gestos táctiles - Escribe texto en el campo con foco (`keyboard`) y captura pantalla (`screenshot`) - En Vega, depura el runtime JS: evalúa código, lee logs de consola e inspecciona la red ## Cuándo usarla - La tarea apunta a una TV (runtimeKind "tv" o platform "vega") - Se menciona Apple TV, tvOS, Android TV, leanback, Vega, Fire TV o VVD ## Cuándo no - Ninguna plataforma de TV es táctil: nunca uses gestos ni toques por coordenadas, todo se controla por foco y D-pad ## Qué la activa - "Navega el menú de esta app de Apple TV" - "Controla la app de Fire TV con el mando" - "Depura el runtime JS de esta app en Vega" ## Antes de instalar - Necesita el udid o serial del dispositivo desde `list-devices`, y en Vega el modo desarrollador activado con `vsm developer-mode enable`. ## Archivos - SKILL.md — 7 KB ## SKILL.md Reproducido tal cual desde software-mansion/argent bajo Apache-2.0. Esta sección es el documento original y está en inglés. # Argent TV (Apple TV + Android TV + Fire TV) ## Critical - A TV is **focus-driven, not touch-driven.** Drive every interaction with `describe` + `tv-remote` + `keyboard`; never use `gesture-*` / coordinate taps — they don't apply on any TV platform. - **Always `describe` before navigating** to find the live cursor and your target — never guess focus from a screenshot. The cursor is the focused element; on **Vega** the toolkit often leaves `focused` false and marks the highlighted item `[selected]`, so treat `[selected]` as the cursor when nothing reports `[focused]`. - Pass the `udid` from `list-devices` — an Apple TV simulator UDID or an Android TV / Vega `serial`. Dispatch is automatic from the id; the same tools drive all three. ## The navigation loop 1. `describe` — find the cursor and your target (returns the focused element + all focusable ones, not a tap tree). 2. `tv-remote` — move focus toward the target. Prefer **one** call with a path ending in `select`, e.g. `{button:["down","right","select"]}`; count rows/columns from the frames to build the path. 3. `describe` again to confirm. On a miss, repeat. ## Tools - `describe {udid}` — focus view: the focused / `[selected]` element + focusable elements with labels and normalized frames. The discovery tool — call before and after navigating. Empty tree → see the per-platform notes. - `tv-remote {udid, button}` — D-pad / remote. `button` is one key **or a whole path** (run in one call). Keys: `up`/`down`/`left`/`right`, `select`, `back`, `menu`, `home`, `playPause`, plus media keys `rewind`/`fastForward`/`next`/`previous`/`volumeUp`/`volumeDown`/`mute`. Single: `{button:"down"}`; repeat: `{button:"down", repeat:3}`; path: `{button:["up","right","select"]}`. - `keyboard {udid, text}` — type into the focused field (focus it with `tv-remote` first). One call carries `text` or `key`, never both — to type and then press a key, send two `keyboard` steps in one `run-sequence`. Named `key` presses (e.g. `{key:"enter"}`) work on Vega; on Apple TV / Android TV move focus with `tv-remote` instead. - `launch-app` / `restart-app` / `reinstall-app {udid, bundleId}` — `bundleId` from the app manifest. Vega `reinstall-app` takes `appPath` = a `.vpkg`. - `screenshot {udid, scale?}` — Apple TV via `xcrun simctl io` (downscaled); Android TV / Vega host-side via `adb` / `screencap`. ## Per-platform ### Apple TV (tvOS simulator) - Boot like any iOS sim (`boot-device`); the AX + HID daemons auto-start on the first `describe` / `tv-remote` (first call may take a few seconds). Give the RN bundle a few seconds to render before the first `describe`. - Media-transport / volume keys are **rejected** — the sim's HID stack ignores them (they work on Android TV / Vega). - Dev build: `open-url {udid, url:"://expo-development-client/?url=http%3A%2F%2F%3A8081"}` (`` = your Mac's LAN IP, shown on the launcher). ### Android TV (leanback emulator) - Boot the leanback AVD like any emulator — see `argent-android-emulator-setup`. - **`describe` may report zero focusables on a screen with visible tiles**: many `react-native-tvos` screens use RN's own focus engine, invisible to the OS accessibility tree. `describe` auto-falls-back to the full UI tree (and says so in the hint); `tv-remote` still moves focus, so drive blind + `screenshot` to confirm. - Dev build: `adb -s reverse tcp:8081 tcp:8081`, deep-link `://expo-development-client/?url=http%3A%2F%2F10.0.2.2%3A8081`, dismiss the first dev-menu with `adb shell input keyevent KEYCODE_DPAD_CENTER` (not Back — Back exits the app). ### Fire TV (Vega / VVD) - `list-devices` shows a `serial` (use as `udid`) and a `vvdImage`. `boot-device {vvdImage}` (e.g. `"tv"`) starts the single SDK-managed VVD; skip if one already runs. - **Stop the VVD** with `vega virtual-device stop` in your shell. The CLI only tracks VVDs it started in the foreground, so it may report "not running" for one started via `boot-device`; to restart that one use `boot-device {vvdImage, force:true}` (stops then re-boots). - Empty `describe` tree → `restart-app` (the automation toolkit attaches at launch), then retry. Input ignored → enable developer mode in the VVD: `vsm developer-mode enable`. - Editing `node_modules` has no effect on a Release build — only Debug `.vpkg` builds load patchable JS. - Profiling / crashes → `amazon-devices-buildertools-mcp` server (`analyze_perfetto_traces`, `get_app_hot_functions`, `symbolicate_acr`); docs via its `search_documentation` tool. ## Common gotchas - **Empty focus right after `launch-app` / `restart-app`** is the splash / loading window — `describe` retries internally; wait ~2-3s and retry on a cold start. - Passing a phone/tablet (`runtimeKind: "mobile"`) udid to `tv-remote` fails with a clear "tvOS-only" / "Android-TV-only" error — pick a TV target from `list-devices`. ## Fast Refresh (dev builds) Needs a Debug build + Metro running. argent only _connects_ to Metro — start Metro and port-forward yourself (any platform). Metro is fixed on **:8081**. - **Apple TV / Android TV:** use the dev-build deep-links above; `npm start` for Metro. - **Vega:** build/install a Debug `.vpkg` (`vega device install-app -p `), `npm start`, `vega device start-port-forwarding --port 8081 --forward false`, then `vega device launch-app -a `. Confirm `http://localhost:8081/json/list` shows a `Hermes React Native` target; `.tsx` edits then hot-reload. ## Debugging the JS runtime (Vega) Once that same Debug build + Metro setup is in place, the JS-runtime tools work on a Vega VVD: `debugger-connect`, `debugger-status`, `debugger-evaluate`, `debugger-log-registry` (console logs), `view-network-logs`, and `view-network-request-details`. Verify with `debugger-status`: it returns a status result rather than an error when not connected — `status: "connected"` means the setup works; `status: "not_connected"` carries a `reason` and `guidance` (e.g. `metro_not_running` → Metro itself is not up). Vega-specific: on `no_app_connected`, check `vega device start-port-forwarding` **before** relaunching the app — a down device→host forward is the usual cause, and the generic guidance can't know about it. See the `argent-metro-debugger` skill. Vega's React Native forks RN 0.72 and serves the legacy Hermes inspector, so three things differ from iOS / Android: - `debugger-component-tree`, `debugger-inspect-element`, `debugger-reload-metro` and the `react-profiler-*` / `profiler-*` tools are **not supported**. Component-tree and inspect-element are hard-blocked: they need `Runtime.addBinding`, which this Hermes acknowledges but never installs. The rest are simply unverified on the legacy inspector. Use `describe` for on-screen structure; with both component tools gated off, component `file:line` tracing has no path on Vega. - `debugger-status` reports `isNewDebugger: false`. - `projectRoot` is empty (RN 0.72's Metro sends no project-root header), so lookups that resolve paths against the project root return no location. ## Dónde encaja - Categoría: [Testing y QA](https://skillsagentes.com/categorias/testing-qa.md) — Flujos de testing unitario, de integración y end-to-end. - Creador: [software-mansion](https://skillsagentes.com/creators/software-mansion.md) — 0 skills en el directorio - [Todas las skills](https://skillsagentes.com/skills.md) - [Ranking de instalaciones](https://skillsagentes.com/ranking.md) ## Otras skills del mismo repositorio - [Argent Create Flow](https://skillsagentes.com/skills/software-mansion/argent/argent-create-flow.md): Crea, graba, edita, repite o repara flujos YAML reutilizables de Argent. Úsalo para grabar/repetir un recorrido de dispositivo, montar perfiles o comparaciones A/B, o antes de repetir tres o más interacciones. - [Argent Device Interact](https://skillsagentes.com/skills/software-mansion/argent/argent-device-interact.md): Interactúa con un simulador iOS, un emulador Android o una app Chromium (CDP) con las herramientas MCP de argent: toques, gestos, scroll, texto, botones físicos, lanzar apps, abrir URLs, capturas y esperas de elementos. - [Argent Test Ui Flow](https://skillsagentes.com/skills/software-mansion/argent/argent-test-ui-flow.md): Prueba de forma autónoma la interfaz de una app (iOS o Android) con bucles de interactuar-capturar-verificar usando las herramientas MCP de argent, para flujos de UI, login, navegación o pruebas end-to-end. - [Argent Metro Debugger](https://skillsagentes.com/skills/software-mansion/argent/argent-metro-debugger.md): Depura un runtime JS vía CDP con las herramientas de debugger de argent. La vía principal es React Native por Metro (iOS/Android/Vega); un subconjunto también controla el renderer de una app Chromium (CDP). - [Argent Qa Flows](https://skillsagentes.com/skills/software-mansion/argent/argent-qa-flows.md): Crea tests E2E de regresión QA reproducibles como flujos Argent a partir de casos de prueba, tickets o criterios de aceptación, con configuración determinista y dos pasadas consecutivas exitosas. Cubre iOS, Android, Chromium y Vega. --- Skills Agentes · [Índice de páginas en markdown](https://skillsagentes.com/sitemap.md) · [Inicio](https://skillsagentes.com/index.md)