<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>André Ramos — Escrita</title>
  <link href="https://andreramos.dev/pt/feed.xml" rel="self"/>
  <link href="https://andreramos.dev/pt/writing/"/>
  <id>https://andreramos.dev/pt/feed.xml</id>
  <updated>2026-06-19T00:00:00Z</updated>
  <author><name>André Ramos</name></author>
  <entry>
    <title>Como eu uso agentes de IA no dia a dia sem terceirizar a decisão</title>
    <link href="https://andreramos.dev/pt/angular/ai-agents-day-to-day/"/>
    <id>https://andreramos.dev/pt/angular/ai-agents-day-to-day/</id>
    <updated>2026-06-19T00:00:00Z</updated>
    <summary>Um filtro de produção para trabalho diário com agentes de IA: o que eu delego, o que eu mantenho comigo e onde o review continua sendo a fronteira de engenharia.</summary>
  </entry>
  <entry>
    <title>Spec-driven development com Claude, Codex e o plugin Superpowers</title>
    <link href="https://andreramos.dev/pt/angular/spec-driven-development-claude-codex-superpowers/"/>
    <id>https://andreramos.dev/pt/angular/spec-driven-development-claude-codex-superpowers/</id>
    <updated>2026-06-19T00:00:00Z</updated>
    <summary>Um modelo de trabalho para usar Claude Code, Codex e Superpowers ao redor de uma spec, para agentes implementarem decisões em vez de inventá-las no meio do diff.</summary>
  </entry>
  <entry>
    <title>Escolhendo o test runner do Angular em 2026: Vitest, Jest ou Karma</title>
    <link href="https://andreramos.dev/pt/angular/choosing-an-angular-test-runner/"/>
    <id>https://andreramos.dev/pt/angular/choosing-an-angular-test-runner/</id>
    <updated>2026-06-12T00:00:00Z</updated>
    <summary>Um mapa de decisão pra pergunta do test runner no Angular, por onde a sua suíte realmente começa, e por que 'Cypress vs Vitest' é a pergunta errada.</summary>
  </entry>
  <entry>
    <title>NG0203: por que o inject() falha fora do contexto de injeção</title>
    <link href="https://andreramos.dev/pt/angular/angular-ng0203-inject-outside-injection-context/"/>
    <id>https://andreramos.dev/pt/angular/angular-ng0203-inject-outside-injection-context/</id>
    <updated>2026-06-09T00:00:00Z</updated>
    <summary>Por que o Angular estoura o NG0203 quando o inject() roda fora do contexto de injeção, a janela exata em que o inject() é válido, as armadilhas comuns (subscribe, route guard async, método de classe, getter), e os fixes ranqueados do field initializer ao runInInjectionContext.</summary>
  </entry>
  <entry>
    <title>NG0950: lendo um input obrigatório antes do Angular preencher</title>
    <link href="https://andreramos.dev/pt/angular/angular-ng0950-required-input-not-set/"/>
    <id>https://andreramos.dev/pt/angular/angular-ng0950-required-input-not-set/</id>
    <updated>2026-06-09T00:00:00Z</updated>
    <summary>Por que o NG0950 do Angular dispara quando um signal input obrigatório é lido antes do binding, quando os inputs ficam disponíveis de fato (no ngOnInit, e não no construtor), e os três consertos: ler no ngOnInit / computed / effect, dar um valor padrão e tirar o required, ou fazer o binding no pai.</summary>
  </entry>
  <entry>
    <title>O Angular CLI MCP server: setup, tools e como conectar no seu assistente de IA</title>
    <link href="https://andreramos.dev/pt/angular/angular-mcp-server-setup/"/>
    <id>https://andreramos.dev/pt/angular/angular-mcp-server-setup/</id>
    <updated>2026-06-09T00:00:00Z</updated>
    <summary>Como configurar o Angular CLI MCP server: o comando exato pra subir, o formato da config do client, as tools que ele expõe e como conectar no Claude Code, no Cursor e no VS Code.</summary>
  </entry>
  <entry>
    <title>Mockando serviços e HttpClient no Angular com Vitest: vi.fn, spies e DI</title>
    <link href="https://andreramos.dev/pt/angular/mocking-angular-services-vitest/"/>
    <id>https://andreramos.dev/pt/angular/mocking-angular-services-vitest/</id>
    <updated>2026-06-08T00:00:00Z</updated>
    <summary>O mapa de spies de Jasmine para Vitest nos testes Angular (vi.fn, vi.spyOn, mockReturnValue), por que um mock por DI vence o vi.mock para serviços, e como o HttpTestingController segue funcionando com provideHttpClientTesting.</summary>
  </entry>
  <entry>
    <title>Coverage e CI do Vitest no Angular: providers, thresholds e o gap do Karma</title>
    <link href="https://andreramos.dev/pt/angular/vitest-coverage-and-ci-angular/"/>
    <id>https://andreramos.dev/pt/angular/vitest-coverage-and-ci-angular/</id>
    <updated>2026-06-08T00:00:00Z</updated>
    <summary>Como coverage e CI funcionam com o builder Vitest do Angular: a flag ng test --coverage, os coverageThresholds que derrubam o build, o reporter junit pro CI, e a única coisa que o builder não expõe e o karma-coverage expunha.</summary>
  </entry>
  <entry>
    <title>NG0200: dependência circular na injeção de dependências</title>
    <link href="https://andreramos.dev/pt/angular/angular-ng0200-circular-dependency-di/"/>
    <id>https://andreramos.dev/pt/angular/angular-ng0200-circular-dependency-di/</id>
    <updated>2026-06-08T00:00:00Z</updated>
    <summary>O que o NG0200 Circular Dependency in DI quer dizer, como ler a cadeia A -&gt; B -&gt; A que o Angular imprime, as três formas que produzem o ciclo (serviços mútuos, uma facade que injeta o próprio serviço, um token que resolve pra si mesmo), e os consertos em ordem, da reestruturação até o forwardRef como último recurso.</summary>
  </entry>
  <entry>
    <title>Testando componentes no Angular com Vitest: TestBed, jsdom e browser mode</title>
    <link href="https://andreramos.dev/pt/angular/vitest-component-testing-angular/"/>
    <id>https://andreramos.dev/pt/angular/vitest-component-testing-angular/</id>
    <updated>2026-06-07T00:00:00Z</updated>
    <summary>Como os testes de componente do Angular se comportam de verdade no Vitest: o TestBed não muda, o DOM é jsdom (sem layout, sem CSS de verdade), e os specs que precisam de um browser real são os que vale a pena mover pro browser mode do Vitest.</summary>
  </entry>
  <entry>
    <title>Um CLAUDE.md para Angular moderno: memória, não só regras</title>
    <link href="https://andreramos.dev/pt/angular/claude-md-for-modern-angular/"/>
    <id>https://andreramos.dev/pt/angular/claude-md-for-modern-angular/</id>
    <updated>2026-06-06T00:00:00Z</updated>
    <summary>Como o sistema de memória do Claude Code funciona num codebase Angular: onde o CLAUDE.md mora, por que importar o AGENTS.md em vez de duplicar, e como regras com escopo de path mantêm orientação de componente, estado e teste fora de um arquivo só que envelhece sem ninguém ver.</summary>
  </entry>
  <entry>
    <title>Segurança de WebMCP no Angular: o agente que chama suas tools pode ser sequestrado</title>
    <link href="https://andreramos.dev/pt/angular/web-mcp-security-angular/"/>
    <id>https://andreramos.dev/pt/angular/web-mcp-security-angular/</id>
    <updated>2026-06-06T00:00:00Z</updated>
    <summary>Um guia de segurança para o WebMCP do Angular: por que uma tool exposta age com a autoridade do usuário, por que o JSON schema não é uma fronteira de confiança, e as defesas (validação de entrada em runtime, menor privilégio, autorização no servidor, confirmação humana) antes de expor qualquer coisa que altera dado.</summary>
  </entry>
  <entry>
    <title>NG0100 ExpressionChangedAfterItHasBeenCheckedError: por que ele aparece no Angular zoneless</title>
    <link href="https://andreramos.dev/pt/angular/expressionchanged-error-zoneless-angular/"/>
    <id>https://andreramos.dev/pt/angular/expressionchanged-error-zoneless-angular/</id>
    <updated>2026-06-06T00:00:00Z</updated>
    <summary>Por que o NG0100 ExpressionChangedAfterItHasBeenCheckedError aparece depois de ir pra zoneless ou Angular 22, o que ele significa agora (um binding atualizado sem notificar o Angular), a armadilha do fixture.detectChanges() no teste, e os fixes conforme de onde veio a mudança.</summary>
  </entry>
  <entry>
    <title>NG0500 Hydration Node Mismatch: o conserto de verdade não é ngSkipHydration</title>
    <link href="https://andreramos.dev/pt/angular/angular-hydration-mismatch-ng0500/"/>
    <id>https://andreramos.dev/pt/angular/angular-hydration-mismatch-ng0500/</id>
    <updated>2026-06-06T00:00:00Z</updated>
    <summary>O que o NG0500 Hydration Node Mismatch quer dizer, a lista curta de causas reais (DOM manipulado direto, HTML inválido que o browser normaliza, biblioteca de DOM de terceiro, HTML alterado no caminho), por que o ngSkipHydration é torniquete, e o fix de cada caso.</summary>
  </entry>
  <entry>
    <title>Angular 22: o que mudou de verdade, e o que fazer num app em produção</title>
    <link href="https://andreramos.dev/pt/angular/angular-22-what-changed/"/>
    <id>https://andreramos.dev/pt/angular/angular-22-what-changed/</id>
    <updated>2026-06-04T00:00:00Z</updated>
    <summary>Um guia sênior, com olhar de produção, sobre o Angular 22: o padrão OnPush, a estabilização de Signal Forms e das APIs de async signal, as migrações de teste, as mudanças de default menores que te pegam no upgrade, e um plano com critério pra adotar.</summary>
  </entry>
  <entry>
    <title>Angular moderno para times em produção</title>
    <link href="https://andreramos.dev/pt/angular/modern-angular-production-teams/"/>
    <id>https://andreramos.dev/pt/angular/modern-angular-production-teams/</id>
    <updated>2026-06-04T00:00:00Z</updated>
    <summary>Três documentos que o time concorda, as perguntas pra fazer antes de aprovar uma PR de modernização, e como dizer 'a gente não tá adotando isso ainda' sem soar conservador.</summary>
  </entry>
  <entry>
    <title>Signals sem briga com RxJS</title>
    <link href="https://andreramos.dev/pt/angular/signals-without-rxjs-war/"/>
    <id>https://andreramos.dev/pt/angular/signals-without-rxjs-war/</id>
    <updated>2026-06-04T00:00:00Z</updated>
    <summary>Uma fronteira de produção para Signals, computed, streams RxJS e interop, sem reescrever contratos Observable só para parecer atual.</summary>
  </entry>
  <entry>
    <title>Um plano de 30 dias para modernizar apps Angular maduros</title>
    <link href="https://andreramos.dev/pt/angular/angular-30-day-modernization-plan/"/>
    <id>https://andreramos.dev/pt/angular/angular-30-day-modernization-plan/</id>
    <updated>2026-06-04T00:00:00Z</updated>
    <summary>Uma sequência de modernização para times que precisam de auditoria, mudanças de baixo risco, spikes isolados e decisões que sobrevivem a code review.</summary>
  </entry>
  <entry>
    <title>Quando migrar uma suíte Angular para Vitest</title>
    <link href="https://andreramos.dev/pt/angular/move-angular-test-suite-to-vitest/"/>
    <id>https://andreramos.dev/pt/angular/move-angular-test-suite-to-vitest/</id>
    <updated>2026-06-04T00:00:00Z</updated>
    <summary>Vitest virou o test runner padrão do Angular CLI, mas migrar uma suíte existente ainda é experimental: quais specs migrar primeiro, o que o fakeAsync quebra, e como manter o CI confiável.</summary>
  </entry>
  <entry>
    <title>Como eu adotaria Signal Forms agora que são estáveis no Angular 22</title>
    <link href="https://andreramos.dev/pt/angular/signal-forms-not-my-default-yet/"/>
    <id>https://andreramos.dev/pt/angular/signal-forms-not-my-default-yet/</id>
    <updated>2026-06-04T00:00:00Z</updated>
    <summary>Um filtro de adoção para Signal Forms agora que são estáveis no Angular 22: use em forms novos, mantenha reactive forms onde já funcionam, e não migre nada por estética.</summary>
  </entry>
  <entry>
    <title>Estado HTTP sem transformar tudo em Signals</title>
    <link href="https://andreramos.dev/pt/angular/http-state-without-signals-everywhere/"/>
    <id>https://andreramos.dev/pt/angular/http-state-without-signals-everywhere/</id>
    <updated>2026-06-04T00:00:00Z</updated>
    <summary>Um guia técnico para fronteiras de estado HTTP no Angular com HttpClient, RxJS, toSignal e o httpResource agora estável.</summary>
  </entry>
  <entry>
    <title>WebMCP no Angular: como expor tools ao agente de IA do browser (e quando esperar)</title>
    <link href="https://andreramos.dev/pt/angular/web-mcp-in-angular/"/>
    <id>https://andreramos.dev/pt/angular/web-mcp-in-angular/</id>
    <updated>2026-06-04T00:00:00Z</updated>
    <summary>Como o Angular expõe tools WebMCP para um agente de IA do browser (bootstrap, rotas, services e Signal Forms), mais a superfície de segurança que se abre e onde eu ainda esperaria antes de colocar em produção.</summary>
  </entry>
  <entry>
    <title>WebMCP vs Angular CLI MCP server: tools em runtime vs ajuda em dev-time</title>
    <link href="https://andreramos.dev/pt/angular/webmcp-vs-angular-cli-mcp-server/"/>
    <id>https://andreramos.dev/pt/angular/webmcp-vs-angular-cli-mcp-server/</id>
    <updated>2026-06-04T00:00:00Z</updated>
    <summary>Qual MCP do Angular você quer de verdade: o CLI MCP server de dev-time, que ajuda um assistente a escrever seu código, ou o WebMCP de runtime, que deixa um agente do browser chamar seu app publicado.</summary>
  </entry>
  <entry>
    <title>Transformando Signal Forms em tools de agente de IA</title>
    <link href="https://andreramos.dev/pt/angular/signal-forms-as-ai-agent-tools/"/>
    <id>https://andreramos.dev/pt/angular/signal-forms-as-ai-agent-tools/</id>
    <updated>2026-06-04T00:00:00Z</updated>
    <summary>Como o Angular transforma um Signal Form numa tool que o agente consegue chamar, o que a inferência de schema precisa do seu modelo e onde eu usaria isso antes de sair do status experimental.</summary>
  </entry>
  <entry>
    <title>OnPush é o default no Angular 22: o que quebra e o que fazer</title>
    <link href="https://andreramos.dev/pt/angular/onpush-default-angular-22/"/>
    <id>https://andreramos.dev/pt/angular/onpush-default-angular-22/</id>
    <updated>2026-06-03T00:00:00Z</updated>
    <summary>Por que o Angular 22 faz do OnPush o default, o que de fato quebra (estado mutado sem avisar o Angular), os dois jeitos de corrigir, e como os `Eager` que a migração adicionou servem de backlog de limpeza.</summary>
  </entry>
  <entry>
    <title>Fake timers do Vitest no Angular: o modelo mental depois do fakeAsync</title>
    <link href="https://andreramos.dev/pt/angular/vitest-fake-timers-vs-fakeasync-angular/"/>
    <id>https://andreramos.dev/pt/angular/vitest-fake-timers-vs-fakeasync-angular/</id>
    <updated>2026-06-02T00:00:00Z</updated>
    <summary>Como pensar nos fake timers do Vitest no Angular depois do fakeAsync: os dois trabalhos que o fakeAsync fundia, o mapa de API, as partes específicas do Angular (effects, change detection, RxJS), e quando não usar fake timers.</summary>
  </entry>
  <entry>
    <title>Por que seu async validator fica PENDING com os fake timers do Vitest</title>
    <link href="https://andreramos.dev/pt/angular/angular-vitest-async-validator-pending/"/>
    <id>https://andreramos.dev/pt/angular/angular-vitest-async-validator-pending/</id>
    <updated>2026-06-02T00:00:00Z</updated>
    <summary>A falha silenciosa de tempo no Vitest: por que um async validator do Angular fica PENDING depois de uma migração de fakeAsync, por que o advanceTimersByTime não basta, e a linha exata entre uma Promise (precisa do avanço assíncrono) e RxJS mais HttpClient (não precisa).</summary>
  </entry>
  <entry>
    <title>fakeAsync e o erro ProxyZone: consertando testes Angular no Vitest</title>
    <link href="https://andreramos.dev/pt/angular/angular-vitest-fakeasync-proxyzone-error/"/>
    <id>https://andreramos.dev/pt/angular/angular-vitest-fakeasync-proxyzone-error/</id>
    <updated>2026-06-01T00:00:00Z</updated>
    <summary>Por que fakeAsync, tick e waitForAsync lançam o erro ProxyZone no runner Vitest do Angular, e as duas correções: o patch experimental de zone testing, ou a reescrita para fake timers do Vitest.</summary>
  </entry>
  <entry>
    <title>De Karma para Vitest no Angular: a config que realmente roda</title>
    <link href="https://andreramos.dev/pt/angular/karma-to-vitest-angular-config/"/>
    <id>https://andreramos.dev/pt/angular/karma-to-vitest-angular-config/</id>
    <updated>2026-06-01T00:00:00Z</updated>
    <summary>O que o test target de Vitest do Angular v21 realmente é (uma linha), de onde vêm polyfills e styles, o install que tira o Karma, e as poucas opções que valem adicionar.</summary>
  </entry>
  <entry>
    <title>O que adotar, testar ou deixar para depois no Angular 21</title>
    <link href="https://andreramos.dev/pt/angular/adopt-spike-wait-angular-21/"/>
    <id>https://andreramos.dev/pt/angular/adopt-spike-wait-angular-21/</id>
    <updated>2026-05-30T00:00:00Z</updated>
    <summary>Uma matriz curta de adoção para recursos modernos do Angular, escrita para times com apps existentes e risco real de release.</summary>
  </entry>
  <entry>
    <title>SSR, hydration e @defer sem chute</title>
    <link href="https://andreramos.dev/pt/angular/ssr-hydration-and-defer-without-guesswork/"/>
    <id>https://andreramos.dev/pt/angular/ssr-hydration-and-defer-without-guesswork/</id>
    <updated>2026-05-26T00:00:00Z</updated>
    <summary>Um guia prático de renderização no Angular com server routes, configuração de hydration, limites de @defer, incremental hydration e proteção para DOM browser-only.</summary>
  </entry>
  <entry>
    <title>Um AGENTS.md que faz a IA escrever Angular moderno</title>
    <link href="https://andreramos.dev/pt/angular/agents-md-for-modern-angular/"/>
    <id>https://andreramos.dev/pt/angular/agents-md-for-modern-angular/</id>
    <updated>2026-05-25T00:00:00Z</updated>
    <summary>Um guia de produção para escrever um arquivo de regras de agente (AGENTS.md) que nomeia a versão, a fronteira Signals/RxJS, a sintaxe de template e as armadilhas que fazem a IA gerar código desatualizado.</summary>
  </entry>
  <entry>
    <title>O código que quebra quando Angular fica zoneless</title>
    <link href="https://andreramos.dev/pt/angular/code-that-breaks-when-angular-goes-zoneless/"/>
    <id>https://andreramos.dev/pt/angular/code-that-breaks-when-angular-goes-zoneless/</id>
    <updated>2026-05-24T00:00:00Z</updated>
    <summary>Um guia técnico para revisar timers, subscriptions, forms, callbacks de terceiros e testes antes de um spike zoneless no Angular.</summary>
  </entry>
  <entry>
    <title>Strategy Pattern no Angular: trocando regras sem espalhar switches</title>
    <link href="https://andreramos.dev/pt/angular/strategy-pattern-in-angular/"/>
    <id>https://andreramos.dev/pt/angular/strategy-pattern-in-angular/</id>
    <updated>2026-05-23T00:00:00Z</updated>
    <summary>Um guia de produção sobre Strategy Pattern no Angular: quando um switch vira fronteira, como selecionar implementações com DI e como evitar indireção decorativa.</summary>
  </entry>
  <entry>
    <title>Adapter Pattern no Angular: isolando APIs e bibliotecas browser-only</title>
    <link href="https://andreramos.dev/pt/angular/adapter-pattern-in-angular/"/>
    <id>https://andreramos.dev/pt/angular/adapter-pattern-in-angular/</id>
    <updated>2026-05-22T00:00:00Z</updated>
    <summary>Um guia de produção sobre Adapter Pattern no Angular: onde traduzir contratos externos, como manter componentes limpos e quando um wrapper não compensa.</summary>
  </entry>
  <entry>
    <title>Facade Pattern no Angular: quando o componente sabe demais</title>
    <link href="https://andreramos.dev/pt/angular/facade-pattern-in-angular/"/>
    <id>https://andreramos.dev/pt/angular/facade-pattern-in-angular/</id>
    <updated>2026-05-21T00:00:00Z</updated>
    <summary>Um guia de produção sobre Facade Pattern no Angular: quando criar, o que ela deve assumir, o que não deve esconder e como testar esse limite.</summary>
  </entry>
  <entry>
    <title>Um checklist curto antes de testar zoneless</title>
    <link href="https://andreramos.dev/pt/angular/zoneless-checklist/"/>
    <id>https://andreramos.dev/pt/angular/zoneless-checklist/</id>
    <updated>2026-05-20T00:00:00Z</updated>
    <summary>Um checklist de prontidão para testar Angular zoneless em uma aplicação existente sem confundir spike de compatibilidade com rollout.</summary>
  </entry>
  <entry>
    <title>Angular CLI MCP e código Angular gerado por IA</title>
    <link href="https://andreramos.dev/pt/angular/angular-cli-mcp-ai-generated-angular-code/"/>
    <id>https://andreramos.dev/pt/angular/angular-cli-mcp-ai-generated-angular-code/</id>
    <updated>2026-05-17T00:00:00Z</updated>
    <summary>Um checklist de produção para usar Angular CLI MCP, ai-config e revisão humana em código Angular gerado por IA.</summary>
  </entry>
  <entry>
    <title>Control flow não é só sintaxe mais limpa</title>
    <link href="https://andreramos.dev/pt/angular/control-flow-not-just-cleaner-syntax/"/>
    <id>https://andreramos.dev/pt/angular/control-flow-not-just-cleaner-syntax/</id>
    <updated>2026-05-16T00:00:00Z</updated>
    <summary>Uma lente de review para control flow no Angular: quando migrar templates tocados, como escolher `track` e onde `@switch` ajuda a modelar estados.</summary>
  </entry>
  <entry>
    <title>Standalone sem transformar NgModules em vilões</title>
    <link href="https://andreramos.dev/pt/angular/standalone-without-ngmodule-dogma/"/>
    <id>https://andreramos.dev/pt/angular/standalone-without-ngmodule-dogma/</id>
    <updated>2026-05-15T00:00:00Z</updated>
    <summary>Uma regra prática para usar componentes standalone, providers por rota e NgModules remanescentes em aplicações Angular maduras.</summary>
  </entry>
</feed>
