MÓDULO 3.1

🖥️ Vibe Coding: correções de frontend ao vivo

Pare de adivinhar código. Esta skill ensina o agente a trabalhar como um dev de verdade: abre o navegador na sua tela, injeta o ajuste ao vivo, mostra o resultado e só grava no código-fonte depois da sua aprovação — sempre numa branch sandbox segura.

6
Tópicos
~50
Minutos
Inter.
Nível
Prática
Tipo
1

🔄 O fluxo invertido

Todo mundo já passou por isso: você encara um bug de CSS — uma navbar vazando por cima do conteúdo, um iframe de vídeo cortado na borda, um modal que funciona no desktop e desmonta no mobile. Você descreve o problema para o agente e ele mergulha direto no código, edita três arquivos, roda o build... e a correção sai errada. Você descreve de novo, ele edita de novo, builda de novo — e agora quebrou outra coisa.

O fluxo tradicional de IA é de trás para frente: ele chuta mudanças de código primeiro e torce para o resultado ficar certo. Não é assim que um dev trabalha. Um dev abre o navegador, inspeciona o elemento, ajusta o CSS ao vivo, vê o resultado na hora — e só então escreve o código permanente. O Vibe Coding faz o seu agente trabalhar exatamente assim.

tradicional editar 3 arquivos build quebrou ✗ loop de retrabalho vibe coding navegador vivo aprovar código ✓ uma vez, certo
Ver antes de gravar

Toda correção é validada na tela antes de tocar no código.

Zero build perdido

Acaba o ciclo "editar → buildar → reverter → repetir".

Pair programming

Como um dev com o DevTools aberto ao lado do seu.

Frontend, não arquitetura

Foco em layout e bugs visuais — não em schema de banco.

2

📂 Confirmar o workspace

Antes de fazer qualquer trabalho, a skill obriga o agente a confirmar o repositório ativo. Ele detecta o diretório de trabalho atual e te pergunta, em alto e bom som, se é o projeto certo para a sessão. Nada de git, nada de browser, nada de edição até você confirmar. É um passo barato que previne um dano caro: mexer no projeto errado.

📂 O check de repositório

O agente detecta o caminho do workspace e te apresenta a confirmação como um hard stop. Algo assim:

📂 Check de repo: estou trabalhando em /home/voce/projetos/landing-app. É o repositório certo para esta sessão, ou trocamos?

Se você disser que o workspace está errado, ele para imediatamente e te instrui a reabrir o projeto correto antes de re-disparar o fluxo.

🔌 Nota de portabilidade

A skill foi originalmente desenhada para um ambiente com um tool de "hard stop" nativo (que bloqueia esperando o usuário). Em outros agentes esse tool pode não existir.

A lição vale igual: substitua a chamada por uma pergunta direta e pare de verdade — só prossiga após a resposta. O comportamento ("pare e espere") importa mais que o nome do tool.

Detectar caminho

Descobrir o diretório ativo automaticamente.

Mostrar e esperar

Exibir o caminho e travar até a confirmação.

Errado = parar

Repo errado encerra o fluxo na hora.

Antes de tudo

Nenhuma ação destrutiva antes deste passo.

3

🌿 Branch-first & git safety

Confirmado o workspace, a próxima jogada é criar a sandbox antes de qualquer análise. O agente verifica o git status; se houver trabalho não commitado, ele pausa e oferece um backup local. Com a árvore limpa, pede uma descrição curta da tarefa e imediatamente cria e troca para uma branch local. Você experimenta sem medo: a main nunca é tocada.

terminal · branch-first git
# 1. Verifica se há trabalho não commitado
git status

# 2. (se sujo) oferece backup local antes de começar
git add . && git commit -m "wip: backup antes do vibe"

# 3. cria a sandbox ANTES de abrir o navegador
git checkout -b vibe/fix-navbar-bleed

✓ O que FAZER

  • Criar a branch antes de inspecionar ou abrir o browser.
  • Oferecer backup do trabalho não commitado.
  • Nomear a branch pela tarefa: vibe/fix-modal-ratio.
  • Uma branch dedicada por correção.

✗ O que NÃO fazer

  • Editar na main ou master direto.
  • Começar a mexer sem checar o git status.
  • Reverter arquivos em pânico se o linter reclamar.
  • Reaproveitar a mesma branch para várias correções.
git status

Estado da árvore antes de qualquer coisa.

Backup opcional

Trabalho não commitado vira commit local.

checkout -b vibe/

Sandbox isolada, criada imediatamente.

Sem medo

Experimentar à vontade sem afetar a main.

4

🌐 Navegador visível & injeção ao vivo

Agora vem a parte que dá nome à skill. O agente identifica a URL alvo — pode ser um dev server local (http://localhost:3000) ou uma URL hospedada de staging/produção. Se for local, ele sobe o servidor em background; se for hospedada, pula esse passo. Então dispara um navegador automatizado visível, NÃO headless, na sua tela — você assiste a automação acontecer ao vivo.

Com a página aberta, o agente inspeciona o DOM (te poupando de copiar/colar HTML) e injeta CSS/JS ao vivo para testar correções — sem editar nenhum arquivo do projeto. Ele tira screenshots dos ajustes e mostra para você. Alternativamente, gera um snippet de JavaScript puro para você colar no console do seu próprio navegador.

Recriação ilustrativa — não é screenshot real
localhost:3000 · navegador visível
página ao vivo
DevTools · injeção
document.querySelector('.navbar')
  .style.position = 'relative';

💡 Dica prática: recuperação de sessão

Se o navegador for recarregado (de propósito ou por acidente) e as injeções ao vivo se perderem, é simples: re-inspecione o DOM e re-aplique o CSS/JS. Nada de scratch files ou logs de injeção complexos — o caminho é manter o processo leve.

Local ou hospedado

localhost com dev server, ou URL de staging.

Visível, não headless

Você assiste a automação na sua tela.

Injeção ao vivo

CSS/JS na página em execução, zero arquivo.

Screenshots

Prova visual do ajuste, mostrada a você.

5

⛔ Os hard stops

Esta é a alma da skill. São quatro portões de aprovação obrigatórios. O agente literalmente não consegue pular etapas: ele pausa e espera o seu "pode ir" em cada momento crítico. Seu código, suas regras. Cada portão tem uma fronteira clara e nenhum permite que o próximo aconteça sozinho.

1

Aprovação visual

No loop de troubleshooting

Depois de injetar a correção, o agente para e pergunta: "Como ficou? Quer iterar mais no design, ou estamos prontos para pensar a estratégia de código?". Aprovação aqui só libera ir para a estratégia — não aplica código.

2

Aprovação da estratégia

Antes de mexer no código

O agente busca no repositório onde os elementos são definidos e propõe a abordagem mais robusta (um _overrides.scss global? um componente React aninhado? uma utility do Tailwind?). Ele explica por quê e pede aprovação explícita.

3

Revisão do código

Depois de salvar os arquivos

Aplicadas as mudanças na branch local, o agente para e pede: "Revise o diff no painel de Source Control e confira no navegador antes do push". Quem decide se o código está bom é você, conferindo localmente — não ele.

4

Aprovação do push

Antes de qualquer comando git de envio

Só agora ele pergunta o remote de destino e confirma "pronto para commitar e dar push?". Cada push vai numa branch nova e dedicada — nunca direto na main.

🚫 Regra anti-steamroll

É estritamente proibido combinar passos numa só resposta. Frases como "vou esboçar a estratégia e aplicar de uma vez" ou "como você aprovou, já vou aplicando" são uma violação do fluxo.

Apresentar a estratégia e aplicar o código na mesma resposta quebra a regra. Cada passo exige sua própria aprovação explícita. Se o agente se pegar prestes a juntar os dois — ele para.

4 portões

Visual · estratégia · código · push.

Gate rule

Aprovar um passo não libera o próximo.

Anti-merge

Estratégia e aplicação, nunca juntas.

Você decide

O usuário aprova cada momento crítico.

6

✏️ Persistir, revisar & encerrar

Com a estratégia aprovada, o agente traduz a injeção temporária do navegador em código-fonte limpo e permanente. Ele remove utility classes temporárias, console logs e gambiarras usadas no teste ao vivo. Repare na mudança de vocabulário: é "persistir na fonte", não "hardcodar". Só a correção final e perfeita vira código — o histórico do git fica limpo, sem uma dúzia de tentativas falhas.

Durante o "persistir": sem terminal, sem reverter

Neste passo o agente é proibido de rodar qualquer comando de terminal — nada de npm, npx, e nenhum comando git (nem git diff, nem git add). Ele apenas edita os arquivos e salva.

E se um compilador em background reclamar: não entre em pânico nem reverta (git checkout -- file). Deixe os arquivos como estão — o usuário cuida da compilação.

terminal · push (só após aprovação) git · um por vez
# Em PowerShell (Windows) NÃO encadeie com &&.
# Rode um comando por vez:
git add .
git commit -m "Fix: navbar bleed-through on staging"
git push origin vibe/fix-navbar-bleed

Encerramento de sessão (obrigatório)

Depois do push bem-sucedido, a sessão de vibe coding está completa. O agente avisa que terminou e pede que você abra um chat novo para a próxima correção.

Por quê? Para evitar context bleed entre tarefas: um chat limpo previne conflitos de branch e confusão de contexto da correção anterior.

Limite de escopo: se você pedir nova arquitetura (ex.: um schema de banco) no meio de uma sessão de vibe, ele lembra gentilmente que Vibe Coding é para layout e bugs visuais, e recomenda um plano/tarefa padrão.

Persistir na fonte

Código limpo, não "hardcode".

Sem reverter

Linter reclamou? Deixa que o user resolve.

Um comando por vez

Compatível com PowerShell, sem &&.

Chat novo

Próxima correção começa do zero.

Exemplo de saída — uma sessão completa

Veja como o agente conduz a correção de um iframe de vídeo cortado dentro de um modal — do check de repo ao push, parando em cada portão.

📂 [check de repo] "Estou em /app/landing. É o repo certo?" → você: sim
🌿 [branch] git status limpo → git checkout -b vibe/fix-video-modal
🌐 [browser] abre localhost:3000/curso visível, inspeciona o .modal iframe, vê o corte na borda inferior
🔧 [live] injeta max-width: 680px no container com padding-bottom → screenshot
⛔ [hard stop #1] "Como ficou?" → você: perfeito, persista
📋 [estratégia] grep localiza VideoModal.jsx → propõe ajustar o max-width do wrapper lá
⛔ [hard stop #2] aprova estratégia → você: pode
✏️ [persistir] edita o componente, limpa as classes temporárias, salva
⛔ [hard stop #3] "Revise o diff no Source Control" → você: aprovado
🚀 [push] "remote? → origin" → add, commit, push em vibe/fix-video-modal
✅ [fim] "Sessão completa. Abra um chat novo para a próxima."

🛠️ Exercícios práticos

Exercício 1 — Mapeie os portões

Pegue um bug visual real do seu projeto (navbar, modal, iframe). Escreva, em uma linha cada, o que o agente diria em cada um dos 4 hard stops. Isso treina seu olho para reconhecer quando ele está prestes a atropelar.

Exercício 2 — Prompt de disparo

Use este prompt copiável para abrir uma sessão de vibe coding no seu próprio agente:

Quero fazer vibe coding. O bug: [descreva o problema visual]. A URL: [localhost:3000/pagina ou URL de staging]. Antes de qualquer coisa: confirme o workspace, crie uma branch sandbox, e abra o navegador visível. NÃO edite nenhum arquivo até eu aprovar o ajuste na tela.

Exercício 3 — Crie um SKILL.md rodável

Escreva sua própria versão enxuta da skill. Salve como vibe-coding/SKILL.md na pasta de skills do seu projeto e dispare-a pedindo uma correção visual. Adapte os tools de "hard stop" e "navegador" aos equivalentes nativos do seu agente.

--- name: vibe-coding description: Conserta bugs de frontend (CSS/HTML/DOM) priorizando feedback visual ao vivo no navegador antes de gravar no código. Use ao testar mudanças de CSS/HTML, corrigir elementos cortados ou ajustar layouts visualmente. --- # Vibe Coding DIRETIVA CRÍTICA: NÃO edite nenhum arquivo do repo ao ler o pedido. Abra a URL alvo PRIMEIRO. Só persista no código após aprovação visual. ## Workflow - [ ] Confirmar workspace: detectar o diretório ativo, mostrar e ESPERAR confirmação. - [ ] Branch-first: checar `git status`, oferecer backup, criar `git checkout -b vibe/[desc]`. - [ ] Navegador visível: abrir a URL (NÃO headless), inspecionar DOM, injetar CSS/JS ao vivo, screenshot. - [ ] HARD STOP #1 — aprovação visual: "Como ficou?" Só prosseguir com "sim, persista". - [ ] Estratégia (sem código): grep a fonte, propor a abordagem mais robusta e por quê. - [ ] HARD STOP #2 — aprovação da estratégia. - [ ] Persistir na fonte: traduzir a injeção em código limpo. SEM terminal, SEM reverter. - [ ] HARD STOP #3 — revisão do diff pelo usuário. - [ ] Push: pedir o remote, então add/commit/push em branch dedicada (um comando por vez). - [ ] Encerrar: sessão completa, pedir chat novo para a próxima correção. ## Regras duras - Anti-merge: estratégia e aplicação NUNCA na mesma resposta. - Uma branch por correção. Nunca push direto na main. - Escopo: só frontend/layout. Arquitetura → plano padrão.

🎯 Resumo do Módulo

Fluxo invertido — ver o ajuste no navegador antes de tocar no código, como um dev de verdade.
Confirmar workspace — repo certo antes de qualquer git, browser ou edição.
Branch-first — sandbox vibe/ criada imediatamente; a main fica intocada.
Navegador visível — injeção de CSS/JS ao vivo, screenshots, zero arquivo editado.
4 hard stops — visual, estratégia, código e push; o agente não atropela.
Persistir e encerrar — só a correção final vira código; chat novo para a próxima.

Próximo Módulo:

3.2 — Funnel Builder: um prompt, funil inteiro