<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: gabrielacarvalho</title>
    <description>The latest articles on DEV Community by gabrielacarvalho (@gabrielacarvalho).</description>
    <link>https://dev.to/gabrielacarvalho</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3889938%2F654fdea5-64ec-4e63-94b6-f03fa70e9117.png</url>
      <title>DEV Community: gabrielacarvalho</title>
      <link>https://dev.to/gabrielacarvalho</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gabrielacarvalho"/>
    <language>en</language>
    <item>
      <title>Você já usa IA pra codar. Mas será que tá usando do jeito certo?</title>
      <dc:creator>gabrielacarvalho</dc:creator>
      <pubDate>Tue, 21 Apr 2026 03:55:06 +0000</pubDate>
      <link>https://dev.to/gabrielacarvalho/voce-ja-usa-ia-pra-codar-mas-sera-que-ta-usando-do-jeito-certo-1p08</link>
      <guid>https://dev.to/gabrielacarvalho/voce-ja-usa-ia-pra-codar-mas-sera-que-ta-usando-do-jeito-certo-1p08</guid>
      <description>&lt;h2&gt;
  
  
  Você já usa IA pra codar. Mas será que tá usando do jeito certo?
&lt;/h2&gt;

&lt;p&gt;Extensão instalada, atalho configurado... Você abre o painel lateral, descreve o que precisa, a IA responde. Funciona. É sensacional.&lt;/p&gt;

&lt;p&gt;Masvocê já tentou usar o Claude Code direto no terminal?&lt;/p&gt;

&lt;p&gt;A maioria das devs que usa extensões de IA nunca fez essa transição, até porque a extensão já resolve. O conforto vira um teto invisível.&lt;/p&gt;

&lt;p&gt;O problema é que extensão e CLI não são a mesma coisa com visual diferente. São formas de trabalho diferentes, com resultados diferentes.&lt;/p&gt;

&lt;p&gt;E a diferença não é só estética. Na extensão, você tende a trabalhar de forma reativa: abre um arquivo, seleciona um trecho, faz uma pergunta. A IA responde sobre aquilo. Na CLI, a dinâmica muda. Você descreve uma tarefa, e o Claude Code age sobre o projeto: lê os arquivos que precisar, propõe mudanças, cria testes, refatora. Você não dirige cada passo, você revisa o resultado.&lt;/p&gt;

&lt;p&gt;No terminal você consegue rodar &lt;strong&gt;múltiplas sessões paralelas&lt;/strong&gt;. Uma por módulo, uma por feature, sem misturar contexto. E qualquer pessoa que fez essa transição relata a mesma coisa: os prompts ficam mais precisos, porque a interface CLI te força a pensar antes de escrever.&lt;/p&gt;

&lt;p&gt;Não é sobre abandonar sua IDE. É sobre &lt;em&gt;como&lt;/em&gt; você trabalha com a IA dentro dela.&lt;/p&gt;




&lt;h2&gt;
  
  
  CLI ou extensão ? qual a diferença real?
&lt;/h2&gt;

&lt;p&gt;O Claude Code existe em duas formas: &lt;strong&gt;CLI (terminal nativo)&lt;/strong&gt; e &lt;strong&gt;extensão para VS Code&lt;/strong&gt;. E tem um mal-entendido comum sobre as duas.&lt;/p&gt;

&lt;p&gt;A extensão &lt;strong&gt;não é um produto separado&lt;/strong&gt;. Ela funciona como uma ponte que conecta o CLI ao ambiente visual do VS Code. O CLI está embutido dentro dela. Não são concorrentes: &lt;em&gt;a extensão envolve o CLI&lt;/em&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  ⌨️ CLI —&amp;gt; Terminal nativo
&lt;/h3&gt;

&lt;p&gt;É a forma original e mais poderosa. Você roda &lt;code&gt;claude&lt;/code&gt; direto no terminal (iTerm, Windows Terminal, terminal do IntelliJ) e toda a interação acontece ali.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Controle total do contexto: edita mensagens anteriores e "rebobina" o estado do código com &lt;code&gt;Double-ESC&lt;/code&gt;;&lt;/li&gt;
&lt;li&gt;Funcionalidades interativas completas que dependem de TTY: checklists de confirmação, prompts de seleção multi-step;&lt;/li&gt;
&lt;li&gt;Mais leve em recursos do sistema;&lt;/li&gt;
&lt;li&gt;Múltiplas sessões paralelas. Cada uma no seu terminal.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  🖥️ Extensão VS Code
&lt;/h3&gt;

&lt;p&gt;Interface gráfica nativa integrada ao VS Code é a forma recomendada pela Anthropic pra quem usa VS Code.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Diffs inline com accept/reject visual, parecido com o Copilot;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;@-mention&lt;/code&gt; em arquivos com intervalos de linha específicos;&lt;/li&gt;
&lt;li&gt;Histórico de conversas e múltiplas abas;&lt;/li&gt;
&lt;li&gt;Revisão e edição dos planos do Claude antes de aceitar;&lt;/li&gt;
&lt;li&gt;Curva de entrada mais suave.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;⚠️ &lt;strong&gt;Detalhe técnico:&lt;/strong&gt; quando você roda o Claude Code dentro do terminal &lt;em&gt;integrado&lt;/em&gt; do VS Code, algumas features que dependem de TTY não funcionam igual a um terminal nativo, como checklists de planos multi-step. Quem usa só a extensão pode nunca ver essas features e achar que são bugs.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Por que forçar o uso do terminal vale a pena?
&lt;/h2&gt;

&lt;p&gt;Se você está acostumada com extensões visuais, o terminal pode parecer um retrocesso. Mas quem fez essa transição relata algo consistente:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Me forcei a usar o CLI e isso realmente me fez pensar com mais clareza sobre o que estou pedindo. **Extensão = conforto. Terminal = uso mais deliberado.&lt;/em&gt;&lt;em&gt;"&lt;/em&gt;&lt;br&gt;
— r&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;No terminal, você tende a ser mais precisa. Você pensa antes de escrever. E isso muda a qualidade das respostas.&lt;/p&gt;

&lt;p&gt;Outros benefícios que aparecem na comunidade:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;"Só uso CLI porque me permite rodar múltiplas sessões em paralelo para um ou mais projetos."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Tenho 9 instâncias abertas. Nunca mais uso o app desktop. Cansei do inferno de copiar e colar."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Comecei com a extensão, migrei pro CLI no terminal do Cursor e depois passei a rodar no tmux em servidor Linux."&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;"Sua preferência por usar CLI deve estar alinhada com como você usa o Git. Se usa Git no terminal, vai se sentir natural aqui também."&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A maioria das pessoas que migrou do visual pro CLI não voltou.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 &lt;strong&gt;Por onde começar:&lt;/strong&gt; use o terminal integrado da sua própria IDE. O &lt;code&gt;Alt + F12&lt;/code&gt; do IntelliJ. Você mantém o conforto visual do ambiente, mas já desenvolve o hábito do CLI.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Instalação e configuração passo a passo
&lt;/h2&gt;

&lt;p&gt;Vou mostrar como configurar no IntelliJ IDEA, mas o processo funciona em qualquer IDE com terminal integrado (VSCode, Eclipse, etc.).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Node.js 18+ instalado&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;node &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se não tiver, baixe em &lt;a href="https://nodejs.org" rel="noopener noreferrer"&gt;nodejs.org&lt;/a&gt; ou via &lt;code&gt;nvm&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Instale via npm&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; @anthropic-ai/claude-code
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Confirme a instalação:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude &lt;span class="nt"&gt;--version&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;3. Autenticação&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Na primeira execução, ele abre o navegador pra login com sua conta Anthropic. Após autenticar, a sessão fica salva localmente.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;4. Abrindo o terminal no IntelliJ&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;Alt + F12&lt;/code&gt; (Windows/Linux) ou &lt;code&gt;⌥ F12&lt;/code&gt; (Mac) ou vá em &lt;strong&gt;View → Tool Windows → Terminal&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;5. Navegue até o projeto e inicie&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; /seu/projeto
claude
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;O Claude Code indexa seu projeto e já está pronto pra receber comandos.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight console"&gt;&lt;code&gt;&lt;span class="gp"&gt;~/projetos/meu-servico-java $&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;claude
&lt;span class="go"&gt;
─────────────────────────────────────
✦ Claude Code v1.x.x
  Analisando projeto... encontrei 47 arquivos Java
  pom.xml detectado → projeto Maven/Spring Boot
─────────────────────────────────────

Como posso ajudar?
&lt;/span&gt;&lt;span class="gp"&gt;&amp;gt;&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;_
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Primeiros comandos na prática
&lt;/h2&gt;

&lt;p&gt;Vou mostrar como uso no dia a dia com Java e Spring Boot.&lt;/p&gt;

&lt;h3&gt;
  
  
  Entendendo um erro de compilação
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nc"&gt;Estou&lt;/span&gt; &lt;span class="n"&gt;com&lt;/span&gt; &lt;span class="nc"&gt;NullPointerException&lt;/span&gt; &lt;span class="n"&gt;na&lt;/span&gt; &lt;span class="n"&gt;linha&lt;/span&gt; &lt;span class="mi"&gt;42&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="nc"&gt;PedidoService&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt; &lt;span class="nc"&gt;Pode&lt;/span&gt; &lt;span class="n"&gt;analisar&lt;/span&gt;&lt;span class="o"&gt;?&lt;/span&gt;

&lt;span class="nl"&gt;Claude:&lt;/span&gt; &lt;span class="nc"&gt;Vou&lt;/span&gt; &lt;span class="n"&gt;verificar&lt;/span&gt; &lt;span class="n"&gt;o&lt;/span&gt; &lt;span class="nc"&gt;PedidoService&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;java&lt;/span&gt;&lt;span class="o"&gt;...&lt;/span&gt;

&lt;span class="no"&gt;O&lt;/span&gt; &lt;span class="n"&gt;problema&lt;/span&gt; &lt;span class="n"&gt;está&lt;/span&gt; &lt;span class="n"&gt;em&lt;/span&gt; &lt;span class="n"&gt;pedido&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getCliente&lt;/span&gt;&lt;span class="o"&gt;().&lt;/span&gt;&lt;span class="na"&gt;getNome&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;sem&lt;/span&gt; &lt;span class="n"&gt;verificar&lt;/span&gt; &lt;span class="n"&gt;se&lt;/span&gt; &lt;span class="nf"&gt;getCliente&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="n"&gt;retorna&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;

&lt;span class="nl"&gt;Sugestão:&lt;/span&gt;
&lt;span class="nc"&gt;Optional&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;ofNullable&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pedido&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;getCliente&lt;/span&gt;&lt;span class="o"&gt;())&lt;/span&gt;
    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;map&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="nl"&gt;Cliente:&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt;&lt;span class="n"&gt;getNome&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
    &lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;orElse&lt;/span&gt;&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Cliente não identificado"&lt;/span&gt;&lt;span class="o"&gt;);&lt;/span&gt;

&lt;span class="nc"&gt;Quer&lt;/span&gt; &lt;span class="n"&gt;que&lt;/span&gt; &lt;span class="n"&gt;eu&lt;/span&gt; &lt;span class="n"&gt;aplique&lt;/span&gt; &lt;span class="n"&gt;essa&lt;/span&gt; &lt;span class="n"&gt;correção&lt;/span&gt; &lt;span class="n"&gt;no&lt;/span&gt; &lt;span class="n"&gt;arquivo&lt;/span&gt;&lt;span class="o"&gt;?&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Gerando testes unitários
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight java"&gt;&lt;code&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nc"&gt;Gera&lt;/span&gt; &lt;span class="n"&gt;testes&lt;/span&gt; &lt;span class="nc"&gt;JUnit&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="n"&gt;com&lt;/span&gt; &lt;span class="nc"&gt;Mockito&lt;/span&gt; &lt;span class="n"&gt;pro&lt;/span&gt; &lt;span class="n"&gt;método&lt;/span&gt; &lt;span class="n"&gt;calcularDesconto&lt;/span&gt;&lt;span class="o"&gt;()&lt;/span&gt; &lt;span class="k"&gt;do&lt;/span&gt; &lt;span class="nc"&gt;DescontoService&lt;/span&gt;

&lt;span class="nl"&gt;Claude:&lt;/span&gt; &lt;span class="nc"&gt;Lendo&lt;/span&gt; &lt;span class="nc"&gt;DescontoService&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;java&lt;/span&gt; &lt;span class="n"&gt;e&lt;/span&gt; &lt;span class="n"&gt;suas&lt;/span&gt; &lt;span class="n"&gt;dependências&lt;/span&gt;&lt;span class="o"&gt;...&lt;/span&gt;
&lt;span class="nc"&gt;Criando&lt;/span&gt; &lt;span class="nc"&gt;DescontoServiceTest&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;java&lt;/span&gt; &lt;span class="n"&gt;com&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="nl"&gt;cenários:&lt;/span&gt;

  &lt;span class="err"&gt;✓&lt;/span&gt; &lt;span class="n"&gt;desconto&lt;/span&gt; &lt;span class="n"&gt;aplicado&lt;/span&gt; &lt;span class="n"&gt;para&lt;/span&gt; &lt;span class="n"&gt;cliente&lt;/span&gt; &lt;span class="no"&gt;VIP&lt;/span&gt;
  &lt;span class="err"&gt;✓&lt;/span&gt; &lt;span class="n"&gt;sem&lt;/span&gt; &lt;span class="n"&gt;desconto&lt;/span&gt; &lt;span class="n"&gt;para&lt;/span&gt; &lt;span class="n"&gt;cliente&lt;/span&gt; &lt;span class="n"&gt;comum&lt;/span&gt;
  &lt;span class="err"&gt;✓&lt;/span&gt; &lt;span class="n"&gt;lança&lt;/span&gt; &lt;span class="n"&gt;exceção&lt;/span&gt; &lt;span class="n"&gt;quando&lt;/span&gt; &lt;span class="n"&gt;valor&lt;/span&gt; &lt;span class="n"&gt;é&lt;/span&gt; &lt;span class="n"&gt;negativo&lt;/span&gt;
  &lt;span class="err"&gt;✓&lt;/span&gt; &lt;span class="n"&gt;desconto&lt;/span&gt; &lt;span class="n"&gt;máximo&lt;/span&gt; &lt;span class="n"&gt;não&lt;/span&gt; &lt;span class="n"&gt;ultrapassa&lt;/span&gt; &lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="o"&gt;%&lt;/span&gt;

&lt;span class="err"&gt;✓&lt;/span&gt; &lt;span class="nc"&gt;Arquivo&lt;/span&gt; &lt;span class="nl"&gt;criado:&lt;/span&gt; &lt;span class="n"&gt;src&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;test&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="n"&gt;java&lt;/span&gt;&lt;span class="o"&gt;/.../&lt;/span&gt;&lt;span class="nc"&gt;DescontoServiceTest&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="na"&gt;java&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Revisando antes de um PR
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;&lt;span class="gi"&gt;&amp;gt; Revisa as mudanças no branch atual antes de eu abrir o PR.
&lt;/span&gt;&lt;span class="err"&gt;
&lt;/span&gt;&lt;span class="p"&gt;Claude: Analisando diff do branch feature/pagamento-pix...
&lt;/span&gt;&lt;span class="err"&gt;
&lt;/span&gt;⚠ PagamentoController.java (linha 87):
   Tratamento de exceção muito genérico,pode esconder erros
⚠ PixService.java (linha 134):
   Timeout hardcoded, considera externalizar no application.yml
✓ Cobertura de testes: adequada para os métodos alterados
✓ Nomenclatura: seguindo padrões do projeto
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h2&gt;
  
  
  Casos de uso do dia a dia
&lt;/h2&gt;

&lt;p&gt;Esses são os cenários em que o Claude Code realmente brilha numa rotina de backend:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🧟 &lt;strong&gt;Código legado&lt;/strong&gt; — peça pra Claude explicar um método de 200 linhas sem comentário. Ela lê o arquivo inteiro e resume o que está acontecendo.&lt;/li&gt;
&lt;li&gt;🧪 &lt;strong&gt;Geração de testes&lt;/strong&gt; — JUnit + Mockito com happy path e edge cases. Salva muito tempo quando a cobertura está baixa.&lt;/li&gt;
&lt;li&gt;📝 &lt;strong&gt;Documentação rápida&lt;/strong&gt; — gera Javadoc em métodos sem documentação. Útil antes de compartilhar código com o time.&lt;/li&gt;
&lt;li&gt;🔄 &lt;strong&gt;Refatoração&lt;/strong&gt; — peça pra extrair um método, aplicar um design pattern ou reduzir duplicação. Ela propõe, você aprova.&lt;/li&gt;
&lt;li&gt;🐛 &lt;strong&gt;Debug assistido&lt;/strong&gt; — cole a stack trace e peça análise. Ela cruza com o código do projeto pra apontar a causa raiz.&lt;/li&gt;
&lt;li&gt;⚙️ &lt;strong&gt;Config e boilerplate&lt;/strong&gt; — beans Spring, DTOs, mappers. As partes chatas que consomem tempo sem agregar raciocínio.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;💡 &lt;strong&gt;Dica de fluxo:&lt;/strong&gt; mantenha o Claude Code aberto em uma aba do terminal integrado do IntelliJ e o código na outra. Você nunca precisa minimizar nada.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Limitações que ninguém te conta
&lt;/h2&gt;

&lt;p&gt;Seria desonesto não falar das limitações. Saber quando &lt;em&gt;não&lt;/em&gt; usar o Claude Code é tão importante quanto saber quando usar.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;📦 Projetos muito grandes:&lt;/strong&gt; o contexto tem limite. Seja específica. Aponte o arquivo ou módulo que quer analisar em vez de pedir uma análise geral.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;💰 Custo de tokens:&lt;/strong&gt; Claude Code usa a API da Anthropic, cobrada por token. Acompanhe seu consumo no painel.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🌐 Precisa de internet:&lt;/strong&gt; diferente de modelos locais (LM Studio, Ollama), depende da API. Offline não funciona.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🔒 Código sensível:&lt;/strong&gt; cuidado com dados confidenciais. Cheque a política da sua empresa antes de enviar código pra API.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;🤔 Quando a extensão ainda ganha:&lt;/strong&gt; pra conversas exploratórias e conceituais, a interface visual ainda é mais confortável.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;✅ Sempre revise o diff:&lt;/strong&gt; Claude propõe mudanças e você aprova. Nunca aceite sem ler. Código correto em isolamento pode não funcionar no contexto do seu sistema.&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Muda o onde, muda o como
&lt;/h2&gt;

&lt;p&gt;Usar IA pela extensão funciona. Mas quando você coloca ela dentro do terminal, dentro do seu fluxo, sem atrito, a relação muda. Você deixa de usar IA como ferramenta de consulta e começa a usar como parceira de desenvolvimento.&lt;/p&gt;

&lt;p&gt;Não é sobre substituição. É sobre &lt;strong&gt;reduzir a resistência&lt;/strong&gt; entre a dúvida e a resposta, entre o erro e a solução.&lt;/p&gt;

&lt;p&gt;Experimenta. Abre o terminal do IntelliJ agora e digita &lt;code&gt;claude&lt;/code&gt;. E me conta como foi 💜&lt;/p&gt;




&lt;p&gt;&lt;em&gt;Me segue no Instagram e LinkedIn: *&lt;/em&gt;&lt;a href="https://www.linkedin.com/in/mgcarvalho/" rel="noopener noreferrer"&gt;@deployada&lt;/a&gt;** · Conteúdo de tech pra mulheres que codam 💜*&lt;/p&gt;

</description>
      <category>claudecode</category>
      <category>terminal</category>
      <category>ia</category>
      <category>desenvolvimento</category>
    </item>
    <item>
      <title>Vercel Hackeada: A história por trás do ataque</title>
      <dc:creator>gabrielacarvalho</dc:creator>
      <pubDate>Tue, 21 Apr 2026 02:37:45 +0000</pubDate>
      <link>https://dev.to/gabrielacarvalho/vercel-hackeada-a-historia-por-tras-do-ataque-106</link>
      <guid>https://dev.to/gabrielacarvalho/vercel-hackeada-a-historia-por-tras-do-ataque-106</guid>
      <description>&lt;p&gt;🔍 O que aconteceu ?&lt;/p&gt;

&lt;p&gt;Um funcionário da Vercel usava uma ferramenta de IA chamada Context.ai com sua conta corporativa do Google Workspace.&lt;/p&gt;

&lt;p&gt;Em fevereiro de 2026, um funcionário da Context.ai foi infectado por um infostealer chamado Lumma, que foi baixado junto com um script malicioso de jogo. Isso comprometeu as credenciais OAuth da ferramenta.&lt;/p&gt;

&lt;p&gt;O atacante usou esse acesso em três pontos principais:&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Tomar conta do Google Workspace do funcionário da Vercel;
Escalar privilégios dentro dos sistemas internos;
Acessar variáveis de ambiente não marcadas como sensíveis.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;A Vercel confirmou que variáveis marcadas como sensíveis estavam criptografadas e não foram acessadas. Mas as demais estavam expostas, e foi por aí que o atacante escalou ainda mais o acesso.&lt;/p&gt;

&lt;p&gt;A empresa classificou o atacante como altamente sofisticado, com "velocidade operacional e conhecimento detalhado dos sistemas da Vercel". Estão trabalhando com a Mandiant na resposta ao incidente.&lt;/p&gt;

&lt;p&gt;A boa notícia é que a supply chain foi preservada. O CEO Guillermo Rauch confirmou que Next.js, Turbopack e os projetos open source da Vercel não foram comprometidos.&lt;/p&gt;

&lt;p&gt;🧠 Pontos que deveriam ter atenção:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;O vetor foi uma ferramenta de IA com acesso amplo demais&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Um funcionário autorizou o Context.ai com permissões "Allow All" no Google Workspace corporativo. Isso não deveria ser possível, e se for possível no seu ambiente, é um risco real agora.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;OAuth mal configurado é uma porta aberta&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Quantas ferramentas têm OAuth ativo no Google Workspace, GitHub ou Slack da sua empresa hoje? Cada uma dessas integrações é uma superfície de ataque em potencial.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;"Não sensível" não significa "sem risco"&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A Vercel tem criptografia para variáveis marcadas como sensíveis. O problema foi exatamente as que não estavam marcadas. O atacante usou isso para escalar o acesso progressivamente.&lt;/p&gt;

&lt;p&gt;⚠️ É necessário tratar toda variável de ambiente como sensível por padrão.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A cadeia de ataque começou com um script de jogo&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Um funcionário de uma empresa terceira baixou um "auto-farm" de Roblox. Isso infectou a máquina com um infostealer. Que comprometeu credenciais OAuth. Que deu acesso a uma empresa completamente diferente. Esse é o supply chain attack na vida real.&lt;/p&gt;

&lt;p&gt;🛡️ Como se prevenir ?&lt;/p&gt;

&lt;p&gt;→ Audite integrações OAuth: Revogue tudo que não está em uso ativo.&lt;/p&gt;

&lt;p&gt;→ Nunca autorize "Allow All" : Em ferramentas de terceiros no ambiente corporativo. Princípio do menor privilégio sempre.&lt;/p&gt;

&lt;p&gt;→ Classifique ativamente seus secrets: Não deixe o padrão decidir por você.&lt;/p&gt;

&lt;p&gt;→ Treine seu time sobre infostealers: A origem do ataque foi um download malicioso num computador pessoal/corporativo de um funcionário de uma empresa parceira.&lt;/p&gt;

&lt;p&gt;→ Configure alertas de acesso anômalo: No seu stack de observabilidade (Datadog, Splunk, CloudWatch).&lt;/p&gt;

&lt;p&gt;→ Tenha um processo periódico de rotação de secrets — não espere um incidente para criar esse hábito.&lt;/p&gt;

&lt;p&gt;Segurança é sobre os hábitos que você constrói antes.&lt;/p&gt;

&lt;p&gt;📌 Fontes:&lt;/p&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Boletim oficial da Vercel (atualizado) → &lt;a href="https://vercel.com/kb/bulletin/vercel-april-2026-security-incident" rel="noopener noreferrer"&gt;https://vercel.com/kb/bulletin/vercel-april-2026-security-incident&lt;/a&gt;&lt;br&gt;
BleepingComputer → &lt;a href="https://www.bleepingcomputer.com/news/security/vercel-confirms-breach-as-hackers-claim-to-be-selling-stolen-data/" rel="noopener noreferrer"&gt;https://www.bleepingcomputer.com/news/security/vercel-confirms-breach-as-hackers-claim-to-be-selling-stolen-data/&lt;/a&gt;&lt;br&gt;
The Hacker News → &lt;a href="https://thehackernews.com/2026/04/vercel-breach-tied-to-context-ai-hack.html" rel="noopener noreferrer"&gt;https://thehackernews.com/2026/04/vercel-breach-tied-to-context-ai-hack.html&lt;/a&gt;&lt;br&gt;
InfoStealers / Hudson Rock → &lt;a href="https://www.infostealers.com/article/breaking-vercel-breach-linked-to-infostealer-infection-at-context-ai/" rel="noopener noreferrer"&gt;https://www.infostealers.com/article/breaking-vercel-breach-linked-to-infostealer-infection-at-context-ai/&lt;/a&gt;&lt;br&gt;
Context.ai security bulletin (via The Hacker News)&lt;br&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;h1&gt;
&lt;br&gt;
  &lt;br&gt;
  &lt;br&gt;
  segurança #devops #backend #cloud #vercel #supplychainattack #oauth #infosec #developers&lt;br&gt;
&lt;/h1&gt;

</description>
      <category>cybersecurity</category>
      <category>infosec</category>
      <category>news</category>
      <category>security</category>
    </item>
  </channel>
</rss>
