git-cliff: o changelog que se escreve sozinho (ou quase)

107 commits. Conventional commits impecáveis desde o primeiro dia. Feat, fix, refactor, chore — tudo perfeitamente etiquetado. E o CHANGELOG? Vazio. Inexistente. Um arquivo que “já vou escrever amanhã” durante dois meses. Se isso soa familiar, você não está sozinho. Escrever um changelog manualmente é um saco de categoria olímpica. Não é que seja difícil — é que é tedioso, repetitivo, e sempre há algo mais urgente para fazer. E justamente por isso existe o git-cliff. ...

22 de fevereiro de 2026 · Fernando

Como estimar sua cota do Claude quando a Anthropic cortar o acesso

Estou construindo o Tokamak, um app de menu bar para macOS que monitora sua cota do Claude Max. Há algumas semanas, a Anthropic publicou isso nos seus Terms of Service: “You may not use OAuth or similar authorization mechanisms to allow third-party applications to access Claude on behalf of users.” E eu, que estou lendo a cota do Claude Max usando os cookies do navegador para chamar um endpoint não documentado, fiquei encarando a tela pensando: “E agora?” ...

22 de fevereiro de 2026 · Fernando

Notarização no macOS: o segurança de balada que a Apple colocou no seu app

São duas da manhã. Seu app compila. Você assina. Empacota num DMG. Executa notarytool submit. A Apple diz “In Progress”. Você espera 5 minutos. 10. 20. Uma hora. Duas horas. A submission continua “In Progress”. Você vai dormir. Na manhã seguinte: Invalid. Sem mais explicação que “The signature of the binary is invalid”. Para ambas as arquiteturas. Obrigado, Apple. Muito útil. A notarização é um desses processos que funciona perfeitamente… até não funcionar. E quando falha, te deixa com um .dmg que o Gatekeeper não vai permitir abrir e um erro que não diz nada. Depois de brigar com isso por alguns dias com o Tokamak (meu app de menu bar para monitorar a cota do Claude), decidi documentar tudo que aprendi e escrever um linter para nunca mais passar por isso. ...

22 de fevereiro de 2026 · Fernando

Máquinas virtuais do macOS com um único comando

Estou construindo um app de menu bar para macOS. Funciona perfeitamente no meu Mac. Agora preciso saber se funciona num macOS limpo: sem minhas configurações, sem minhas permissões, sem meus dados. Um usuário que o instale do zero. Como você testa isso? Precisa de uma máquina virtual. “Fácil”, pensei. “Tenho o UTM instalado. Abro o wizard, crio uma VM macOS, e rodo.” Não ia ser tão fácil. UTM: bonito mas indomável UTM é uma aplicação excelente. Interface cuidada, suporte para macOS como guest no Apple Silicon, tela cheia, clipboard compartilhado. Para usar manualmente é ótimo. ...

21 de fevereiro de 2026 · Fernando

Por que 99% do que você envia para o Claude já está em cache

Estou construindo um app que monitora meu consumo de tokens no Claude Code. Alguns dias atrás, olhando os números brutos, me deparei com isso: cacheReadInputTokens: 4.241.579.174 inputTokens: 1.293.019 Quatro bilhões e duzentos milhões de tokens lidos do cache. Um milhão e trezentos mil tokens “frescos”. Isso é um 99,97% de cache hit. Minha primeira reação foi pensar que algo estava quebrado. Ninguém tem 99% de cache. Nem Redis. Nem Cloudflare. Nem sua mãe quando ela diz que já sabe o que você vai pedir para comer. ...

19 de fevereiro de 2026 · Fernando

Invocando os sábios: como usar um LLM como sessão de mentoria com qualquer especialista

Minha esposa invoca Charlie Munger para planejar o orçamento familiar. No ChatGPT. Não é brincadeira. Ela fala algo como “atue como Charlie Munger revisando nossas finanças familiares” e coloca os gastos do mês. A coisa devolve coisas como “você está confundindo investimento com gasto na categoria de educação” ou “esse fundo tem um custo oculto que você não está contabilizando”. Coisas que Munger diria. Com o tom que Munger usaria. ...

18 de fevereiro de 2026 · Fernando

Beads morreu. Vida longa ao CLI do Linear

Há menos de um mês escrevi um post inteiro explicando como usar três camadas de memória com Claude Code: Linear para estratégia, Beads para tática e Tasks para execução. Uma pirâmide bonita e elegante. Pois é, não rolou. Hoje aposento o Beads. E não por capricho, mas porque a realidade se encarregou de demonstrar que uma ferramenta que te dá mais problemas do que resolve não é uma ferramenta. É um peso morto. ...

18 de fevereiro de 2026 · Fernando

Git Worktrees: como ter vários agentes de IA trabalhando ao mesmo tempo sem se atropelarem

O gargalo do checkout único Estou desenvolvendo um app de barra de menu no macOS. Tenho três features no backlog: um sparkline de consumo, notificações nativas, e um widget de desktop. As três são independentes. As três vou fazer com Claude Code. O problema: Claude Code trabalha em um diretório. Um diretório tem uma branch. E git checkout é como uma rotatória de uma pista só: só passa um. Se quero avançar as três ao mesmo tempo, minhas opções clássicas são: ...

16 de fevereiro de 2026 · Fernando

5 defesas contra alucinações de código (e por que apenas 3 funcionam)

Na semana passada contei como minha IA inventou uma estrutura JSON completa e a envolveu em DTOs, fixtures e testes que passaram. 90 testes no verde. Tudo mentira. Esse post foi o diagnóstico. Este é o tratamento. Depois de descobrir o desastre, fiz o que faz qualquer engenheiro com orgulho ferido: investigar obsessivamente durante dias para que não volte a acontecer. Li papers, testei ferramentas, analisei dados reais das minhas APIs, e construí um sistema de defesas para minha app. ...

16 de fevereiro de 2026 · Fernando

Silent failure: quando sua IA inventa e os testes dizem que tudo está bem

Ontem descobri que metade de um módulo da minha app estava baseado em dados inventados. Não por um júnior distraído. Pela minha IA. O pior não é que inventou. O pior é que tudo compilava e os 90 testes passavam. A ficção coerente Estou construindo BFClaude-9000, um app de barra de menu para macOS que monitora a cota do Claude Max. Parte da funcionalidade requer distinguir se uma conta do Claude é paga ou gratuita, chamando a API de claude.ai. ...

13 de fevereiro de 2026 · Fernando