VTEX IO Workspace — abrir, esperar login e debugar no navegador
Skill específica de VTEX IO para abrir workspaces VTEX IO (que são privados e exigem login) no navegador via MCP user-chrome-devtools, esperar o usuário logar e então debugar/validar/ajustar com console, network, screenshots e viewport. Use quando o usuário mandar uma URL de workspace VTEX IO ({workspace}--{conta}.myvtex.com) e pedir para "abrir no navegador", "testar", "debugar", "validar o ajuste" ou "ver o console/erro".
Pré-requisito
- Server MCP
user-chrome-devtools com status ready. Se estiver "needsAuth", chamar mcp_auth desse server.
- O Chrome controlado é o navegador real do usuário (compartilha cookies/sessão). Por isso o usuário loga manualmente e a navegação seguinte já fica autenticada — o agente NUNCA deve tentar digitar credenciais.
Como reconhecer um workspace VTEX
Padrão de URL:
https://{workspace}--{conta}.myvtex.com/{rota}
Exemplos:
https://task14783--lojamm.myvtex.com/ → workspace task14783, conta lojamm
https://mytest--leeloo.myvtex.com/lancamentos → workspace mytest, conta leeloo
O -- separa workspace de conta. Workspaces (diferentes de master) são privados: sem sessão VTEX válida, a página redireciona/bloqueia (login VTEX ID, tela de acesso, 401/403).
Fluxo
Passo 1 — Abrir o workspace
Abrir em uma aba nova:
server: user-chrome-devtools
toolName: new_page
arguments: { "url": "https://{workspace}--{conta}.myvtex.com/{rota}" }
- Se já houver uma aba do projeto, usar
list_pages + select_page em vez de abrir outra.
- Guardar o
pageId retornado para as próximas chamadas.
Passo 2 — Detectar se precisa de login
Tirar um snapshot de acessibilidade (mais barato que screenshot) para ver o estado:
server: user-chrome-devtools
toolName: take_snapshot
Sinais de parede de login / workspace privado (precisa o usuário logar):
- URL redirecionou para
.../login, vtexid, /_v/segment/admin-login/... ou domínio de login.
- Snapshot mostra tela de "Entrar", "Login", "Acesse sua conta", campos de e-mail/senha, botão Google/VTEX ID.
- Console/network com 401/403 nas requisições principais (
list_network_requests, list_console_messages).
Se não houver parede de login (a loja renderizou normal), pular para o Passo 4.
Passo 3 — PAUSAR e esperar o usuário logar (regra central)
Se detectou parede de login:
NÃO tentar preencher login, senha ou clicar em "Entrar". Não usar fill/type_text/click na tela de login.
Avisar o usuário e parar, pedindo que ele logue manualmente na aba já aberta:
O workspace {workspace}--{conta} é privado e está pedindo login.
Abri a página no seu Chrome. Faça o login manualmente nessa aba
(VTEX ID / Google) e me avise quando estiver logado e na página
{rota} que eu continuo o debug/ajuste.
Esperar a confirmação do usuário. Não prosseguir sozinho. Duas formas de retomar:
Preferida: aguardar o usuário responder "logado"/"pode seguir" no chat.
Opcional (se o usuário pedir para você detectar): usar wait_for por um texto que só aparece depois do login (um elemento da loja, ex.: nome de um produto, menu, footer):
server: user-chrome-devtools
toolName: wait_for
arguments: { "text": ["<texto que aparece só na loja logada>"], "timeout": 120000 }
Depois do "ok", recarregar/navegar para a rota alvo e confirmar que está autenticado:
server: user-chrome-devtools
toolName: navigate_page
arguments: { "type": "url", "url": "https://{workspace}--{conta}.myvtex.com/{rota}" }
Tirar novo take_snapshot para confirmar que a loja renderizou (sem login).
Passo 4 — Debugar / validar / ajustar
Com a página autenticada, usar as ferramentas conforme a necessidade:
| Objetivo |
Ferramenta(s) |
Ver estrutura/elementos (com uid) |
take_snapshot (preferir a screenshot) |
| Evidência visual / comparar layout |
take_screenshot (fullPage: true p/ página inteira) |
| Erros de JS / logs |
list_console_messages (+ get_console_message p/ detalhe) |
| Falhas de requisição, 4xx/5xx, payloads |
list_network_requests (+ get_network_request) |
| Inspecionar/checar valores no DOM/JS |
evaluate_script (função JSON-serializável) |
| Testar responsivo (mobile/tablet/desktop) |
emulate (viewport) ou resize_page |
| Interagir (clicar, preencher form, hover) |
click, fill, fill_form, hover, press_key |
| Throttle rede/CPU, dark mode, geoloc |
emulate |
| Performance (LCP, INP, CLS) |
performance_start_trace / performance_stop_trace |
| Acessibilidade/SEO/best practices |
lighthouse_audit |
Viewports comuns para validar responsivo
server: user-chrome-devtools
toolName: emulate
arguments: { "viewport": "375x812x3,mobile,touch" } // mobile
arguments: { "viewport": "1440x900x1" } // desktop
Passo 5 — Loop de ajuste (código ↔ workspace)
Em VTEX IO, com vtex link rodando, as mudanças aparecem no workspace após alguns segundos. Ciclo típico:
- Fazer o ajuste no código (CSS/componente) — usar
vtex-css / vtex-io-component conforme o caso.
- Aguardar o
vtex link propagar (o terminal do link mostra o rebuild).
navigate_page (type: "reload", ignoreCache: true) para recarregar o workspace.
- Reconferir com
take_snapshot / take_screenshot / list_console_messages.
- Repetir até validar. A sessão continua logada — não precisa refazer o login a cada reload (só se a sessão expirar).
server: user-chrome-devtools
toolName: navigate_page
arguments: { "type": "reload", "ignoreCache": true }
Regras
- Nunca tentar logar por conta própria em workspace privado: o usuário loga manualmente; o agente só espera e retoma.
- Sempre detectar a parede de login (snapshot + URL + 401/403) antes de assumir que a página carregou.
- Ao pausar para login, deixar claro qual aba/rota e aguardar confirmação antes de seguir.
- Preferir
take_snapshot a take_screenshot para inspeção (mais barato); usar screenshot para evidência visual.
- Reutilizar a aba existente (
list_pages + select_page) em vez de abrir várias.
- Se a sessão cair no meio do trabalho (voltou o login), repetir o Passo 3 (pausar e esperar).
- Prints de evidência: seguir
upload-image-cloudinary / runrunit-pr-commit para hospedar e anexar na task/PR.
Integração com outras skills
runrunit-pr-commit: no Flow A (executar/validar) e Flow B (evidências), use esta skill para abrir o workspace da task, esperar o login e capturar prints antes/depois.
vtex-css / vtex-io-component: fazer o ajuste no código; esta skill valida no navegador.
registrar-evidencias: capturar screenshots em múltiplos viewports para o comentário/PR.
Ferramentas MCP (server user-chrome-devtools)
| Ferramenta |
Uso |
new_page / list_pages / select_page / close_page |
Gerenciar abas |
navigate_page |
Ir para URL, voltar/avançar, reload |
take_snapshot |
Árvore a11y com uid dos elementos (inspeção principal) |
take_screenshot |
Imagem da página/elemento (evidência) |
wait_for |
Esperar um texto aparecer (ex.: confirmar login) |
list_console_messages / get_console_message |
Logs e erros de JS |
list_network_requests / get_network_request |
Requisições, status, payloads |
evaluate_script |
Rodar JS na página (checar valores/estado) |
emulate / resize_page |
Viewport, rede/CPU, dark mode, geoloc |
click / fill / fill_form / hover / press_key / type_text |
Interações |
performance_start_trace / performance_stop_trace |
Performance (Core Web Vitals) |
lighthouse_audit |
Acessibilidade / SEO / best practices |
mcp_auth |
Autenticar o server quando needsAuth |
1---2name: vtex-io-workspace-debug3description: VTEX IO Workspace — abrir, esperar login e debugar no navegador4---5# VTEX IO Workspace — abrir, esperar login e debugar no navegador67Skill **específica de VTEX IO** para abrir **workspaces VTEX IO** (que são **privados** e exigem login) no navegador via MCP `user-chrome-devtools`, **esperar o usuário logar** e então **debugar/validar/ajustar** com console, network, screenshots e viewport. Use quando o usuário mandar uma URL de workspace VTEX IO (`{workspace}--{conta}.myvtex.com`) e pedir para "abrir no navegador", "testar", "debugar", "validar o ajuste" ou "ver o console/erro".89## Pré-requisito1011- Server MCP `user-chrome-devtools` com status **ready**. Se estiver "needsAuth", chamar `mcp_auth` desse server.12- O Chrome controlado é o **navegador real do usuário** (compartilha cookies/sessão). Por isso o **usuário loga manualmente** e a navegação seguinte já fica autenticada — o agente **NUNCA** deve tentar digitar credenciais.1314## Como reconhecer um workspace VTEX1516Padrão de URL:1718```19https://{workspace}--{conta}.myvtex.com/{rota}20```2122Exemplos:23- `https://task14783--lojamm.myvtex.com/` → workspace `task14783`, conta `lojamm`24- `https://mytest--leeloo.myvtex.com/lancamentos` → workspace `mytest`, conta `leeloo`2526O `--` separa **workspace** de **conta**. Workspaces (diferentes de `master`) são **privados**: sem sessão VTEX válida, a página redireciona/bloqueia (login VTEX ID, tela de acesso, 401/403).2728---2930# Fluxo3132## Passo 1 — Abrir o workspace3334Abrir em uma aba nova:3536```37server: user-chrome-devtools38toolName: new_page39arguments: { "url": "https://{workspace}--{conta}.myvtex.com/{rota}" }40```4142- Se já houver uma aba do projeto, usar `list_pages` + `select_page` em vez de abrir outra.43- Guardar o `pageId` retornado para as próximas chamadas.4445## Passo 2 — Detectar se precisa de login4647Tirar um snapshot de acessibilidade (mais barato que screenshot) para ver o estado:4849```50server: user-chrome-devtools51toolName: take_snapshot52```5354Sinais de **parede de login / workspace privado** (precisa o usuário logar):55- URL redirecionou para `.../login`, `vtexid`, `/_v/segment/admin-login/...` ou domínio de login.56- Snapshot mostra tela de "Entrar", "Login", "Acesse sua conta", campos de e-mail/senha, botão Google/VTEX ID.57- Console/network com **401/403** nas requisições principais (`list_network_requests`, `list_console_messages`).5859Se **não** houver parede de login (a loja renderizou normal), pular para o Passo 4.6061## Passo 3 — PAUSAR e esperar o usuário logar (regra central)6263Se detectou parede de login:64651. **NÃO** tentar preencher login, senha ou clicar em "Entrar". Não usar `fill`/`type_text`/`click` na tela de login.662. Avisar o usuário e **parar**, pedindo que ele logue manualmente na aba já aberta:6768 ```69 O workspace {workspace}--{conta} é privado e está pedindo login.70 Abri a página no seu Chrome. Faça o login manualmente nessa aba71 (VTEX ID / Google) e me avise quando estiver logado e na página72 {rota} que eu continuo o debug/ajuste.73 ```74753. **Esperar a confirmação do usuário.** Não prosseguir sozinho. Duas formas de retomar:76 - **Preferida:** aguardar o usuário responder "logado"/"pode seguir" no chat.77 - **Opcional (se o usuário pedir para você detectar):** usar `wait_for` por um texto que só aparece **depois** do login (um elemento da loja, ex.: nome de um produto, menu, footer):7879 ```80 server: user-chrome-devtools81 toolName: wait_for82 arguments: { "text": ["<texto que aparece só na loja logada>"], "timeout": 120000 }83 ```84854. Depois do "ok", recarregar/navegar para a rota alvo e confirmar que está autenticado:8687 ```88 server: user-chrome-devtools89 toolName: navigate_page90 arguments: { "type": "url", "url": "https://{workspace}--{conta}.myvtex.com/{rota}" }91 ```9293 Tirar novo `take_snapshot` para confirmar que a loja renderizou (sem login).9495## Passo 4 — Debugar / validar / ajustar9697Com a página autenticada, usar as ferramentas conforme a necessidade:9899| Objetivo | Ferramenta(s) |100|---|---|101| Ver estrutura/elementos (com `uid`) | `take_snapshot` (preferir a screenshot) |102| Evidência visual / comparar layout | `take_screenshot` (`fullPage: true` p/ página inteira) |103| Erros de JS / logs | `list_console_messages` (+ `get_console_message` p/ detalhe) |104| Falhas de requisição, 4xx/5xx, payloads | `list_network_requests` (+ `get_network_request`) |105| Inspecionar/checar valores no DOM/JS | `evaluate_script` (função JSON-serializável) |106| Testar responsivo (mobile/tablet/desktop) | `emulate` (`viewport`) ou `resize_page` |107| Interagir (clicar, preencher form, hover) | `click`, `fill`, `fill_form`, `hover`, `press_key` |108| Throttle rede/CPU, dark mode, geoloc | `emulate` |109| Performance (LCP, INP, CLS) | `performance_start_trace` / `performance_stop_trace` |110| Acessibilidade/SEO/best practices | `lighthouse_audit` |111112### Viewports comuns para validar responsivo113114```115server: user-chrome-devtools116toolName: emulate117arguments: { "viewport": "375x812x3,mobile,touch" } // mobile118```119120```121arguments: { "viewport": "1440x900x1" } // desktop122```123124## Passo 5 — Loop de ajuste (código ↔ workspace)125126Em VTEX IO, com `vtex link` rodando, as mudanças aparecem no workspace após alguns segundos. Ciclo típico:1271281. Fazer o ajuste no código (CSS/componente) — usar `vtex-css` / `vtex-io-component` conforme o caso.1292. Aguardar o `vtex link` propagar (o terminal do link mostra o rebuild).1303. `navigate_page` (`type: "reload"`, `ignoreCache: true`) para recarregar o workspace.1314. Reconferir com `take_snapshot` / `take_screenshot` / `list_console_messages`.1325. Repetir até validar. A sessão continua logada — **não** precisa refazer o login a cada reload (só se a sessão expirar).133134```135server: user-chrome-devtools136toolName: navigate_page137arguments: { "type": "reload", "ignoreCache": true }138```139140---141142## Regras143144- **Nunca** tentar logar por conta própria em workspace privado: o usuário loga manualmente; o agente só **espera** e retoma.145- **Sempre** detectar a parede de login (snapshot + URL + 401/403) antes de assumir que a página carregou.146- Ao pausar para login, **deixar claro** qual aba/rota e **aguardar confirmação** antes de seguir.147- Preferir `take_snapshot` a `take_screenshot` para inspeção (mais barato); usar screenshot para evidência visual.148- Reutilizar a aba existente (`list_pages` + `select_page`) em vez de abrir várias.149- Se a sessão cair no meio do trabalho (voltou o login), repetir o Passo 3 (pausar e esperar).150- Prints de evidência: seguir `upload-image-cloudinary` / `runrunit-pr-commit` para hospedar e anexar na task/PR.151152## Integração com outras skills153154- **`runrunit-pr-commit`**: no Flow A (executar/validar) e Flow B (evidências), use esta skill para abrir o workspace da task, esperar o login e capturar prints antes/depois.155- **`vtex-css` / `vtex-io-component`**: fazer o ajuste no código; esta skill valida no navegador.156- **`registrar-evidencias`**: capturar screenshots em múltiplos viewports para o comentário/PR.157158## Ferramentas MCP (server `user-chrome-devtools`)159160| Ferramenta | Uso |161|---|---|162| `new_page` / `list_pages` / `select_page` / `close_page` | Gerenciar abas |163| `navigate_page` | Ir para URL, voltar/avançar, **reload** |164| `take_snapshot` | Árvore a11y com `uid` dos elementos (inspeção principal) |165| `take_screenshot` | Imagem da página/elemento (evidência) |166| `wait_for` | Esperar um texto aparecer (ex.: confirmar login) |167| `list_console_messages` / `get_console_message` | Logs e erros de JS |168| `list_network_requests` / `get_network_request` | Requisições, status, payloads |169| `evaluate_script` | Rodar JS na página (checar valores/estado) |170| `emulate` / `resize_page` | Viewport, rede/CPU, dark mode, geoloc |171| `click` / `fill` / `fill_form` / `hover` / `press_key` / `type_text` | Interações |172| `performance_start_trace` / `performance_stop_trace` | Performance (Core Web Vitals) |173| `lighthouse_audit` | Acessibilidade / SEO / best practices |174| `mcp_auth` | Autenticar o server quando `needsAuth` |