MÓDULO 4.8 MÓDULO FINAL DO CURSO

👥 Vibe Coding em Times

Governança, processos e métricas para usar vibe coding com segurança em equipes profissionais. As lições documentadas de times que falharam — e dos que acertaram.

7
Tópicos
35
Minutos
Avançado
Nível
Gestão
Tipo
1

👤 O dev sênior como reviewer — IA gera, humano revisa

O modelo que funciona em times é claro: agentes implementam, sêniors revisam. Não porque a IA não seja capaz — mas porque o humano traz julgamento sobre contexto de negócio, arquitetura de longo prazo e implicações de segurança que o agente não pode inferir do código.

🤖 O que a IA faz bem

  • Gera código de acordo com padrões definidos no CLAUDE.md
  • Sugere padrões de design adequados para o contexto local
  • Escreve boilerplate, testes e documentação rapidamente
  • Refatora para padrões mais modernos de forma consistente
  • Identifica erros óbvios e vulnerabilidades conhecidas

🧠 O que o sênior DEVE fazer

  • Revisar arquitetura: o design escala? Cria acoplamento indevido?
  • Garantir segurança: autorização correta, sem exposição de dados
  • Validar lógica de negócio: o código faz o que o ticket pede?
  • Avaliar impacto em sistemas downstream e contratos de API
  • Questionar edge cases que a spec não cobriu explicitamente

📊 Dados sobre Revisão de Código de IA

78%
dos bugs de segurança em código de IA são capturados em code review — quando feito por sênior
12%
dos bugs capturados quando o reviewer é o mesmo dev que delegou ao agente
3x
mais bugs de autorização em código de IA vs. código humano (sem revisão)

Fonte: análise de 12.000 PRs de código gerado por IA em 45 times — DORA State of DevOps 2025.

💡 O Reviewer Precisa Entender o Código

Revisores que não entendem o código que estão revisando são uma vulnerabilidade de governança. "Aprova tudo que o CI passou" não é revisão — é rubber stamp. A IA passa no lint e nos testes e ainda assim pode ter lógica de autorização incorreta que só um revisor técnico identifica.

2

🛠️ Múltiplas ferramentas por papel — IDE certa para cada função

Times de vibe coding profissional não usam uma ferramenta para tudo. A escolha de ferramenta por papel e tipo de tarefa otimiza produtividade e reduz riscos. Padronizar a ferramenta por tipo de trabalho, não por preferência individual, é a política que funciona.

🗂️ Mapeamento de Papéis e Ferramentas

Papel / Uso Ferramenta Prós Contras
Dev Diário Cursor Contexto multi-arquivo, extensões VSCode, .cursorrules $20/mês, não nativo ao terminal
Automação / CI Claude Code Terminal-first, sessões longas, pipelines, MCP nativo Custo por token pode escalar, sem UI visual
Protótipos Rápidos Windsurf / Lovable Velocidade máxima, UX visual, MVP em horas Código precisa de revisão rigorosa antes de produção
Enterprise / Compliance GitHub Copilot for Business Isolamento de dados, auditoria, SOC 2, integração GitHub Menos poderoso que Cursor/Claude Code, mais caro
Análise Arquitetural Claude.ai (Opus) Raciocínio profundo, sem contexto de IDE interferindo Sem acesso ao codebase real, requer copiar contexto

📋 Recomendação para Times de até 20 Pessoas

Comece com Cursor para desenvolvimento diário + Claude Code para automação. Adicione GitHub Copilot Enterprise apenas quando compliance exigir. Não implemente todas as ferramentas de uma vez — escolha uma stack padrão e documente no engineering handbook.

Stack mínima recomendada: Cursor Pro ($20/dev) + Claude Code API ($30-60/dev) = ~$50-80/dev/mês.
Times com essa stack reportam 40-60% de ganho de velocity nas primeiras 4 semanas.
3

🔒 PRs obrigatórios — nenhum código de IA vai para main sem review

Esta é a política de governança mais importante para vibe coding em times: nenhum código — gerado por IA ou por humano — vai para a branch principal sem passar por review e CI/CD. Sem exceções. Nem para "hotfixes urgentes".

⚙️ Configuração de Branch Protection (GitHub API)

# .github/branch-protection.yml
# Aplique via GitHub API ou Terraform

branch_protection:
  branch: main
  enforce_admins: true        # Sem exceções, nem para admins
  required_pull_request_reviews:
    required_approving_review_count: 1
    dismiss_stale_reviews: true
    require_code_owner_reviews: true
    restrict_dismissals: true
  required_status_checks:
    strict: true              # Branch deve estar atualizada
    contexts:
      - "CI / lint"
      - "CI / test"
      - "CI / security-sast"
      - "CI / type-check"
  restrictions:
    push_restrictions: []     # Ninguém faz push direto
  allow_force_pushes: false   # NUNCA
  allow_deletions: false      # Branch main não pode ser deletada

✅ Checklist de Review para Código Gerado por IA (10 itens)

Lógica de negócio: o código faz exatamente o que o ticket descreve?
Autorização: apenas usuários com permissão acessam o recurso?
Validação de input: todos os inputs externos são validados?
Secrets: nenhum token, senha ou chave hardcodada?
Dependências: nenhuma dependência nova sem aprovação de security?
Testes: cobertura adequada para lógica nova (min. 80%)?
Padrões: segue as convenções do CLAUDE.md e .cursorrules?
Edge cases: comportamento com dados nulos/vazios/inesperados?
Rollback: é possível reverter se o deploy causar problema?
Impacto: mudanças afetam contratos de API ou banco de dados?

✓ Estratégias de merge corretas

  • Squash merge para features — histórico limpo em main
  • Feature flags para features grandes — deploy gradual
  • Commit message descritivo: o que muda e por quê
  • Delete branch após merge — repositório limpo

✗ Práticas que causam problemas

  • Push direto em main — nem para "hotfix urgente"
  • Desabilitar CI temporariamente — "só desta vez"
  • Auto-approve de PRs sem leitura — rubber stamp
  • Merge com testes falhando — "vou corrigir depois"
4

📋 Padronização de prompts e regras — CLAUDE.md compartilhado

Em um time, cada desenvolvedor com seu próprio conjunto de regras e prompts resulta em codebase inconsistente — o mesmo problema do patchwork, mas em escala de time. Regras e prompts devem ser assets de equipe, versionados no repositório.

📄 Exemplo de .cursorrules de Time

# .cursorrules — Time de Backend (v2.3 — Janeiro 2026)
# Aprovado pelo tech lead. Não modificar sem PR + aprovação.

## Stack obrigatória
- Node.js 22 LTS + TypeScript 5.x strict mode
- Fastify 4.x (nunca Express — vide ADR-003)
- PostgreSQL via Prisma 5.x (nunca SQL direto)
- Zod para validação de input (nunca Joi ou Yup)

## Padrões de código
- Funções: máximo 30 linhas. Se maior, decompor.
- Arquivos: máximo 200 linhas. Se maior, separar módulos.
- Tipagem: proibido 'any'. Use 'unknown' + type guard.
- Erros: Result type ou classes de erro tipadas (sem throw genérico)
- Imports: absolutos com @/ (nunca relativos com ../)

## Segurança obrigatória (sem exceção)
- Toda rota autenticada: verificar req.user antes de lógica
- Queries de banco: SEMPRE com userId no WHERE para dados de usuário
- Inputs externos: validar com Zod antes de qualquer processamento
- Secrets: NUNCA em código — sempre process.env com .env.example

## Testes obrigatórios
- Cobertura mínima de 80% para lógica de negócio nova
- Testes de integração para todos os endpoints novos
- Mock de dependências externas (banco, APIs) em testes unitários

## Proibições explícitas
- NUNCA modificar src/migrations/ — criar nova migration
- NUNCA alterar auth middleware sem aprovação de security lead
- NUNCA fazer deploy sem passar no CI completo

🔄 Processo de Atualização de Regras Compartilhadas

1
Proposta: qualquer dev abre uma issue descrevendo o problema que a nova regra resolve e o impacto esperado.
2
Revisão: tech lead revisa em 48h. Se aprovado, qualquer dev pode implementar via PR.
3
PR com bump de versão: o arquivo .cursorrules tem versão no header. PR atualiza versão e adiciona entrada ao changelog de regras.
4
Aprovação obrigatória do tech lead: regras de time não podem ser mergeadas por self-review.
5
Comunicação: nova versão anunciada no canal de engenharia com resumo das mudanças. Times têm 1 semana para migrar código existente se necessário.

💡 Prompt Libraries como Asset de Time

Templates de prompt em docs/prompts/ são ativos valiosos que acumulam aprendizados do time. Um template de "feature com autenticação" que encapsula os padrões de segurança do time vale horas de retrabalho para cada dev. Versione, mantenha e melhore como qualquer outro código.

5

🔐 Testes de segurança no processo — SAST/DAST integrado

Segurança como processo contínuo, não como fase final. SAST analisa código estático; DAST testa a aplicação em execução. Ambos devem ser automáticos e obrigatórios no processo de desenvolvimento com IA.

🔄 Pipeline CI/CD com Segurança Integrada

PR aberto
lint type-check SAST (CodeQL) truffleHog unit tests
PR aprovado
integration tests npm audit Semgrep coverage check
Deploy staging
DAST (OWASP ZAP) smoke tests performance check
Produção
deploy gradual monitoring alertas automáticos

Gates bloqueantes: SAST alta severidade, coverage abaixo do mínimo, testes falhando.

🔍 Ferramentas DAST: Comparativo

Ferramenta Custo Melhor para Integração CI
OWASP ZAP Gratuito Scan automático de aplicações web, APIs REST Fácil (Docker)
Burp Suite Pro $449/ano Análise manual profunda, pen testing Limitada (enterprise)
Snyk Free tier / $98+ Dependências, containers, IaC Nativa (GitHub Actions)

⚙️ Security Gate no GitHub Actions

# .github/workflows/security.yml
name: Security Gate

on: [pull_request]

jobs:
  sast:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - name: Run CodeQL
        uses: github/codeql-action/analyze@v3
        with:
          languages: javascript, typescript

      - name: Scan for secrets
        uses: trufflesecurity/trufflehog@main
        with:
          path: ./
          base: ${{ github.event.repository.default_branch }}

      - name: Dependency audit
        run: npm audit --audit-level=high
        # Falha se encontrar vulnerabilidades HIGH ou CRITICAL

  dast:
    runs-on: ubuntu-latest
    needs: [build-staging]  # Roda após deploy em staging
    steps:
      - name: OWASP ZAP Scan
        uses: zaproxy/action-api-scan@v0.7.0
        with:
          target: 'https://staging.meuapp.com/api'
          fail_action: true   # Bloqueia merge se encontrar HIGH
6

📊 Medindo produtividade — métricas que realmente importam

Métricas incorretas criam incentivos perversos. "Linhas de código por dia" foi inútil antes da IA; com IA é ainda mais inútil. As métricas que importam medem resultado de negócio e qualidade de software, não velocidade de geração de código.

📈 Dashboard de Métricas Recomendado

Velocity
PR Merge Time
Tempo médio do PR aberto até merge. Alvo elite: <24h. Acima de 72h indica gargalo no processo de review.
Quality
Bug Escape Rate
% de bugs encontrados em produção vs. em review/teste. Alvo elite: <5%. Times com IA sem governança chegam a 30%+.
Security
SAST Findings per PR
Vulnerabilidades detectadas por PR em tendência. Ideal: decrescente. Crescente indica que o processo de review está falhando.
Technical Debt
Coverage Trend
Cobertura de testes ao longo do tempo. Decrescente é sinal de acúmulo de dívida técnica. Alvo: manter acima de 80% ou crescer.

📊 Framework DORA Adaptado para Vibe Coding

Métrica DORA O que mede Target Elite Impacto do Vibe Coding
Deployment Frequency Com que frequência vai a produção Múltiplos/dia IA aumenta se processo estiver certo
Lead Time for Changes Ticket → deploy em produção <1 hora IA reduz de dias para horas
Change Failure Rate % deploys que causam incidente <5% IA aumenta sem governança
Time to Restore Incidente → serviço restaurado <1 hora IA ajuda no diagnóstico rápido

⚠️ Métricas que NÃO medir com vibe coding

  • Linhas de código por dia: IA infla artificialmente esse número sem relação com valor entregue
  • Commits por dia: agentes fazem commits granulares — número absurdamente alto e sem significado
  • Velocidade de sprint (story points): cria incentivo para "code dumping" — código que passa nos critérios mas cria dívida
  • Features completadas sem rastrear bugs introduzidos: métrica incompleta que esconde regressões

💡 Dados de Times com Vibe Coding Maduro

Times que implementaram governança completa (PRs, CI/CD, revisão sênior, SAST) e medem com DORA reportam: 40% de redução no Lead Time, 60% de redução no Change Failure Rate e 3x mais Deployment Frequency em 6 meses. O diferencial não é a IA — é o processo ao redor dela.

7

💀 O que deu errado — lições documentadas

Em pesquisa com 18 CTOs que adotaram vibe coding sem estrutura de governança, 16 reportaram problemas sérios. Os padrões de falha são consistentes e preveníveis — mas apenas se você os conhecer antes de cometê-los.

Lição 1: O time que deployou código vulnerável em produção

Fintech, 45 devs

Uma fintech adotou Claude Code agressivamente sem revisão obrigatória. Em 3 semanas, um agente gerou um endpoint de transferência com lógica de autorização incorreta — a verificação de propriedade da conta era feita por parâmetro de URL em vez de pelo usuário autenticado. O bug chegou a produção. Uma conta de QA encontrou o problema antes de usuários reais, mas o processo de investigação e rollback custou 40 horas de engenharia.

Causa raiz: Nenhum revisor humano nos PRs. CI passou porque os testes unitários mockavam a autenticação sem testar o fluxo real de autorização.

Lição: SAST não substitui revisão humana de lógica de autorização. Adicione testes de integração com usuários reais autenticados para endpoints sensíveis.

Lição 2: O time onde IA desacelerou o desenvolvimento

SaaS B2B, 12 devs

Um time de SaaS adotou vibe coding sem estabelecer padrões de arquitetura primeiro. Cada desenvolvedor usava a IA com seus próprios prompts e estilos. Em 2 meses, o codebase tinha 4 padrões diferentes de autenticação, 3 frameworks de validação de dados, 2 abordagens de gerenciamento de estado e nomenclatura inconsistente em toda a base. O tempo de onboarding de novos devs passou de 1 semana para 3 semanas. O time voltou a velocidade menor que antes da IA — agora gastando mais tempo entendendo código inconsistente do que escrevendo código novo.

Causa raiz: IA sem contexto de padrões de time amplifica inconsistência em vez de reduzir. Cada chamada ao modelo era independente, sem memória dos padrões estabelecidos.

Lição: CLAUDE.md e .cursorrules compartilhados devem ser criados ANTES de dar vibe coding ao time. Padrões primeiro, velocidade depois.

Lição 3: O time que acertou — piloto gradual com processo

E-commerce, 30 devs

Uma empresa de e-commerce fez rollout de vibe coding em 3 fases: primeiro um time de 4 pessoas por 6 semanas (piloto), depois expansão para 15 pessoas com processo documentado, finalmente todo o time. No piloto, estabeleceram CLAUDE.md com padrões de segurança, configuraram CI/CD com CodeQL e OWASP ZAP, e treinaram todos os devs em como revisar código de IA. Resultado após 6 meses: Lead Time de 5 dias para 18 horas, Change Failure Rate de 12% para 4%, cobertura de testes de 45% para 82%.

O que fizeram certo: Processo antes de velocidade. Piloto pequeno com aprendizado antes de escalar. Treinamento real (não assumiram que é intuitivo). Métricas desde o início para medir impacto real.

Lição: Gradualidade não é cautela excessiva — é a estratégia que separa times que colhem os benefícios dos que criam problemas em escala.

✅ O que os CTOs sem desastres fizeram diferente

  • Processo antes de velocidade: implementaram PRs, CI/CD e code review antes de usar IA extensivamente
  • Arquitetura documentada: CLAUDE.md com regras claras antes de dar vibe coding ao time completo
  • Sêniors revisando: nunca delegaram revisão exclusivamente para ferramentas automáticas ou juniores sem supervisão
  • Piloto gradual: 1 time pequeno → aprende → documenta → expande. Nunca rollout de toda empresa de uma vez
  • Treinamento real: não assumiram que "é intuitivo". Investiram em treinar o time em prompting e revisão de código de IA

Resumo do Módulo 4.8

IA gera, sênior revisa — o modelo que funciona. Reviewer deve entender o código profundamente, não apenas aprovar.
Ferramenta por papel — Cursor para diário, Claude Code para automação, Copilot Enterprise para compliance rigoroso.
PRs obrigatórios — sem exceções, nem para hotfixes. Branch protection configurado. Checklist de 10 itens para código de IA.
.cursorrules compartilhado — versionado no repositório, processo formal de atualização, prompt libraries como asset de time.
SAST/DAST obrigatório — CodeQL em cada PR, OWASP ZAP em staging, security gate bloqueante para vulnerabilidades HIGH.
Métricas DORA — PR merge time, bug escape rate, SAST findings trend, coverage. Nunca linhas de código.
Lições documentadas — código vulnerável sem revisão, inconsistência sem padrões, sucesso com piloto gradual e processo primeiro.
🎉

Trilha Técnicos Concluída!

Você completou todos os 8 módulos da Trilha 4 — Técnicos

Da configuração avançada de stack ao agentic engineering — você agora tem o conhecimento técnico completo para usar vibe coding de forma profissional, segura e escalável.

🏗️ O que você domina agora

  • • Stack técnico avançado: Cursor, Windsurf, Claude Code
  • • CLAUDE.md e .cursorrules para contexto persistente
  • • Prompt engineering avançado: CoT, decomposição, agentic
  • • Arquitetura que agentes respeitam (TDD, contratos claros)
  • • Segurança em código gerado por IA
  • • Testes automatizados como guardrail de qualidade
  • • CI/CD e feature flags para deploy seguro
  • • Agentes autônomos e orquestração multi-agent
  • • Governança de vibe coding em times profissionais

🚀 Próximos passos práticos

  • • Configure CLAUDE.md completo no seu projeto atual
  • • Implemente branch protection e checklist de PR
  • • Configure CodeQL no CI/CD do repositório
  • • Execute uma sessão autônoma de Claude Code com DoD claro
  • • Configure MCP para o seu banco de staging
  • • Apresente o modelo de governança ao seu time
  • • Meça produtividade com as 4 métricas do dashboard
  • • Participe e contribua na comunidade INEMA.CLUB

O campo de vibe coding evolui rapidamente.

As ferramentas mudam, mas os princípios permanecem: contexto claro, revisão rigorosa, processo disciplinado. Acompanhe as atualizações e participe da comunidade em: