<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"><channel><title><![CDATA[@manodeyvin]]></title><description><![CDATA[O maior boteco de tecnologia.]]></description><link>https://manodeyvin.com.br</link><image><url>https://substackcdn.com/image/fetch/$s_!0gSs!,w_256,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fcce18305-3250-4ae5-9779-dbe0dc1f4dc7_2000x2000.png</url><title>@manodeyvin</title><link>https://manodeyvin.com.br</link></image><generator>Substack</generator><lastBuildDate>Wed, 04 Nov 2026 21:39:45 GMT</lastBuildDate><atom:link href="https://manodeyvin.com.br/feed" rel="self" type="application/rss+xml"/><copyright><![CDATA[Mano Deyvin]]></copyright><language><![CDATA[pt]]></language><webMaster><![CDATA[manodeyvin@substack.com]]></webMaster><itunes:owner><itunes:email><![CDATA[manodeyvin@substack.com]]></itunes:email><itunes:name><![CDATA[Mano Deyvin]]></itunes:name></itunes:owner><itunes:author><![CDATA[Mano Deyvin]]></itunes:author><googleplay:owner><![CDATA[manodeyvin@substack.com]]></googleplay:owner><googleplay:email><![CDATA[manodeyvin@substack.com]]></googleplay:email><googleplay:author><![CDATA[Mano Deyvin]]></googleplay:author><itunes:block><![CDATA[Yes]]></itunes:block><item><title><![CDATA[🚨 O LULA NÃO VAI REVISAR SEUS PRS]]></title><description><![CDATA[Mano Rage Show EP273]]></description><link>https://manodeyvin.com.br/p/o-lula-nao-vai-revisar-seus-prs</link><guid isPermaLink="false">https://manodeyvin.com.br/p/o-lula-nao-vai-revisar-seus-prs</guid><dc:creator><![CDATA[Mano Deyvin]]></dc:creator><pubDate>Thu, 29 Oct 2026 16:18:24 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/222662244/2cc5416cb8f9657028158afe34aea82b.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Deyvin nessa live prometeu n&#227;o falar de pol&#237;tica no p&#243;s-elei&#231;&#227;o, mas a primeira pauta j&#225; foi o Smart Sampa deixando as c&#226;meras de S&#227;o Paulo ao alcance de qualquer um, com login e senha dos guardas num reposit&#243;rio do GitHub. Ser&#225; que o Brasil &#233; o primeiro pa&#237;s open data do mundo?</p><ol><li><p>Smart Sampa: 181 logins de guardas municipais expostos, a senha era o pr&#243;prio n&#250;mero de registro e n&#227;o tinha verifica&#231;&#227;o em duas etapas.</p></li><li><p>Ita&#250; compra uma startup de IA de Uberl&#226;ndia por quase R$ 3 bilh&#245;es, mas o fundador &#233; o mesmo da Zup, comprada pelo Ita&#250; em 2019. Ainda d&#225; pra ser startupeiro raiz?</p></li><li><p>QAs s&#234;niores criaram agentes de IA t&#227;o bons que a empresa extinguiu o cargo e &#8220;promoveu&#8221; todo mundo a dev j&#250;nior.</p></li><li><p>Gov Food, Gov Bank, Gov Zap: jogar tudo no peito do gov.br? S&#243; que vazaram 251 milh&#245;es de CPFs e a primeira multa da LGPD foi de R$ 14 mil.</p></li><li><p>Pra fechar, o PHP reina: se o PHP para, a sociedade treme.</p></li></ol><p><strong>Patrocinadores desse epis&#243;dio:</strong></p><p>&#128640; CONTA DEV: https://links.chorume.dev/contadev-ig</p><p>&#128640; SOLYD: https://solyd.link/deyvin</p><p>Apoie esse conte&#250;do aqui no substack ou <a href="https://www.youtube.com/channel/UC1VZDEtGNxfQzh7EYcD2frg/join">se tornando membro no YT</a></p>]]></content:encoded></item><item><title><![CDATA[🚨 AKITA NO FLOW, ROUBO DE GPUS]]></title><description><![CDATA[Mano Rage Show EP272]]></description><link>https://manodeyvin.com.br/p/akita-no-flow-roubo-de-gpus</link><guid isPermaLink="false">https://manodeyvin.com.br/p/akita-no-flow-roubo-de-gpus</guid><dc:creator><![CDATA[Mano Deyvin]]></dc:creator><pubDate>Wed, 28 Oct 2026 15:49:17 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/222510846/98713ec74f440a85cf95d0526c7fcd9d.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Deyvin nessa live levou um balde de &#225;gua fria do Akita sobre rodar IA local, mas algo chamou muito mais a aten&#231;&#227;o: sumiram dois pallets de RTX 5090 no aeroporto de Guarulhos. Ser&#225; que as fac&#231;&#245;es est&#227;o montando o pr&#243;prio data center de IA?</p><ol><li><p>R$ 2,5 milh&#245;es em placas RTX 5090 da Zotac desaparecem em Guarulhos e o dono da importadora grava um v&#237;deo estilo Nicolas Ferreira. Ser&#225; que a carga n&#227;o tinha seguro?</p></li><li><p>Akita no Flow: toda profiss&#227;o que &#233; copy paste vai acabar, e o cara que s&#243; trocava a carinha na thumbnail j&#225; era.</p></li><li><p>Akita jogou &#225;gua na minha cerveja: Qwen e os modelos open source n&#227;o servem pra programar, ent&#227;o nada de IA local por enquanto.</p></li><li><p>Layoff na Flutter, dona de casas de apostas: at&#233; 1.400 demiss&#245;es no Reino Unido e na Irlanda. Cad&#234; o Sindipd?</p></li><li><p>Pra fechar, o meme do Filipe Deschamps com 43 anos e sem rugas contra o Jovem Tranquil&#227;o deixou os front-ends ofendidos.</p></li></ol><p><strong>Patrocinadores desse epis&#243;dio:</strong></p><p>&#128640; CONTA DEV: https://links.chorume.dev/contadev-ig<br>&#128640; FULL CYCLE: https://fcycle.co/21-10-lv-md-mba-ia</p><p>Apoie esse conte&#250;do aqui no substack ou <a href="https://www.youtube.com/channel/UC1VZDEtGNxfQzh7EYcD2frg/join">se tornando membro no YT</a></p>]]></content:encoded></item><item><title><![CDATA[FUNDAMENTOS DE ENGENHARIA DE SOFTWARE PARA VIBE CODERS]]></title><description><![CDATA[Separei 5 conceitos para a tropa do vibe coding.]]></description><link>https://manodeyvin.com.br/p/fundamentos-de-engenharia-de-software</link><guid isPermaLink="false">https://manodeyvin.com.br/p/fundamentos-de-engenharia-de-software</guid><dc:creator><![CDATA[Mano Deyvin]]></dc:creator><pubDate>Mon, 26 Oct 2026 14:25:00 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/G8SeOH0qerk" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Se o teu app foi feito com IA e j&#225; t&#225; no ar, ele provavelmente tem pelo menos um destes 5 vacilos. A IA sabe consertar todos. </p><p>Esse post acompanha a aula do canal: </p><div id="youtube2-G8SeOH0qerk" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;G8SeOH0qerk&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/G8SeOH0qerk?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>L&#225; eu explico cada fundamento com calma.</p><h2>Antes de colar qualquer prompt</h2><ul><li><p>Roda num branch separado. Nada direto na main.</p></li><li><p>L&#234; o plano que a IA prop&#245;e antes de aceitar. Todos os prompts mandam ela mostrar o plano primeiro.</p></li><li><p>Migration nova voc&#234; revisa antes de rodar. Banco de produ&#231;&#227;o a IA n&#227;o toca sem voc&#234; olhar.</p></li><li><p>Se voc&#234; n&#227;o entendeu o que o prompt faz, volta no resumo. Colar sem entender &#233; deixar a IA te enrolar de novo.</p></li></ul><h2>A ordem que eu rodaria</h2><ol><li><p><strong>Teste de integra&#231;&#227;o (prompt 5)</strong>, pra travar o comportamento antes de mexer em qualquer coisa</p></li><li><p><strong>Nunca confie no cliente (prompt 3)</strong>, que &#233; a porta aberta</p></li><li><p><strong>Race condition (prompt 1)</strong> e <strong>idempot&#234;ncia (prompt 2)</strong>, que &#233; dinheiro</p></li><li><p><strong>Separa&#231;&#227;o de responsabilidades (prompt 4)</strong>, por &#250;ltimo, com os testes j&#225; te protegendo</p></li></ol><p></p><h2>1. Race condition</h2><p><strong>O que &#233;:</strong> duas requisi&#231;&#245;es chegam juntas, as duas leem o mesmo valor e as duas gravam em cima dele. </p><p><strong>Onde quebra:</strong> todo lugar que l&#234;, decide e depois grava. Estoque, cupom, saldo, cr&#233;dito, vaga, convite.</p><p><strong>Sinal de que voc&#234; tem:</strong> pedido duplicado no banco, estoque negativo, cupom usado mais de uma vez. </p><p><strong>O erro caro:</strong> subir um Redis pra fazer lock, ou ler o estoque do cache pra ficar r&#225;pido. </p><p>O Martin Kleppmann escreveu um artigo conhecido sobre isso (<a href="https://martin.kleppmann.com/2016/02/08/how-to-do-distributed-locking.html">How to do distributed locking</a>), e a corre&#231;&#227;o que ele prop&#245;e &#233; um n&#250;mero de controle conferido pelo lugar onde voc&#234; grava. Ou seja, o banco.</p><p><strong>PROMPT:</strong></p><pre><code><code>Voc&#234; &#233; um engenheiro s&#234;nior revisando um app que eu constru&#237; com IA. Quero achar e corrigir race conditions (condi&#231;&#245;es de corrida).

1. Varra o c&#243;digo e liste todo lugar que faz "ler, decidir e depois gravar": cria&#231;&#227;o de pedido, baixa de estoque, uso de cupom, saldo, cr&#233;ditos, vagas, convites, contadores, qualquer recurso limitado.
2. Para cada ocorr&#234;ncia, explique em uma frase o que acontece se 2 requisi&#231;&#245;es iguais chegarem no mesmo milissegundo (ex.: pedido duplicado, estoque negativo, cupom usado 2 vezes).
3. Proponha a corre&#231;&#227;o mais simples que resolve no banco, nesta ordem de prefer&#234;ncia:
   a. constraint &#250;nica (unique index) que impede o registro duplicado;
   b. opera&#231;&#227;o at&#244;mica no pr&#243;prio banco (ex.: UPDATE estoque SET qtd = qtd - 1 WHERE id = X AND qtd &gt; 0, conferindo as linhas afetadas);
   c. transa&#231;&#227;o com lock da linha (SELECT ... FOR UPDATE) quando a regra for mais complexa.
4. No front, desabilite o bot&#227;o durante o envio, mas trate isso como conforto de UX. A prote&#231;&#227;o de verdade fica no servidor e no banco.
5. Para cada corre&#231;&#227;o, escreva um teste que dispara 2 requisi&#231;&#245;es simult&#226;neas e prova que s&#243; uma tem efeito.

Regras: n&#227;o proponha Redis, fila, lock em mem&#243;ria ou qualquer infraestrutura nova se o banco resolve; se achar que precisa, me explique por que o banco n&#227;o basta antes. Me mostre a lista completa e o plano antes de alterar qualquer arquivo. Toda migration nova deve ser revisada por mim antes de rodar. Se j&#225; existirem dados duplicados que impe&#231;am criar a constraint, me avise e proponha como limpar, sem apagar nada sozinho.
</code></code></pre><div><hr></div><h2>2. Idempot&#234;ncia</h2><p><strong>O que &#233;:</strong> repetir a mesma opera&#231;&#227;o quantas vezes for e o resultado ser o mesmo de fazer uma vez s&#243;. </p><p><strong>Onde quebra:</strong> webhook de pagamento. </p><p><strong>Sinal de que voc&#234; tem:</strong> cliente recebendo e-mail repetido, cr&#233;dito somado duas vezes, assinatura duplicada, requisi&#231;&#245;es duplicadas em servidor de terceiros.</p><p><strong>Como resolve:</strong> uma tabela de eventos processados com o ID do evento como chave &#250;nica. </p><pre><code><code>Voc&#234; &#233; um engenheiro s&#234;nior especialista em pagamentos. Quero que todo webhook e todo endpoint de pagamento do meu app aceite repeti&#231;&#227;o sem efeito duplicado (idempot&#234;ncia).

1. Liste todos os webhooks recebidos (Stripe ou outro gateway) e todos os endpoints que cobram, liberam plano, creditam saldo ou mandam e-mail transacional.
2. Webhooks:
   a. confirme que a assinatura do webhook &#233; verificada com o corpo bruto da requisi&#231;&#227;o antes de qualquer processamento;
   b. crie uma tabela de eventos processados com o ID do evento como chave &#250;nica;
   c. ao receber um evento, tente gravar o ID primeiro; se j&#225; existir, responda 200 e n&#227;o fa&#231;a mais nada;
   d. n&#227;o dependa da ordem de chegada dos eventos: quando precisar do estado atual, busque o objeto na API do gateway;
   e. responda 2xx r&#225;pido e mande o trabalho pesado para uma fila ou processamento ass&#237;ncrono, se o projeto j&#225; tiver essa estrutura.
3. Chamadas que EU fa&#231;o ao gateway (criar cobran&#231;a, assinatura, reembolso): envie uma idempotency key (UUID v4) gerada uma vez por opera&#231;&#227;o de neg&#243;cio e reaproveitada em caso de nova tentativa.
4. Endpoints do meu app que criam pedido ou pagamento: aceite um header Idempotency-Key do cliente e devolva a mesma resposta se a chave se repetir.
5. Escreva testes que enviam o mesmo evento 2 vezes, e 2 vezes ao mesmo tempo, e provam que o efeito acontece s&#243; uma vez.

Regras: mostre o plano antes de alterar c&#243;digo. N&#227;o mude valores, pre&#231;os nem regras de cobran&#231;a. N&#227;o use dado pessoal (e-mail, CPF) como chave de idempot&#234;ncia.
</code></code></pre><div><hr></div><h2>3. Nunca confie no cliente</h2><p><strong>O que &#233;:</strong> tudo que roda no navegador o usu&#225;rio controla. Ele abre o DevTools, muda o que quiser e chama a tua API direto. Valida&#231;&#227;o no front serve pra experi&#234;ncia ficar boa; quem decide &#233; o servidor.</p><p><strong>Onde quebra:</strong> pre&#231;o, desconto, permiss&#227;o ou limite de plano calculado s&#243; no front. </p><p><strong>Sinal de que voc&#234; tem:</strong> o Matt Palmer analisou 1.645 apps feitos no Lovable, olhando s&#243; a p&#225;gina inicial, e achou 170 com o RLS quebrado.</p><p><strong>Como resolve:</strong> o servidor recalcula tudo e ignora o valor que veio do cliente. </p><p>PROMPT</p><pre><code><code>Voc&#234; &#233; um auditor de seguran&#231;a. Parta do princ&#237;pio de que qualquer coisa que roda no navegador pode ser lida e alterada pelo usu&#225;rio. Quero uma auditoria completa e um plano de corre&#231;&#227;o.

1. Regras de neg&#243;cio no front: liste todo c&#225;lculo de pre&#231;o, desconto, frete, permiss&#227;o, papel de admin, limite de plano ou valida&#231;&#227;o que s&#243; existe no cliente. Para cada um, mova a regra para o servidor (API route, server action, edge function) e fa&#231;a o servidor recalcular tudo, ignorando valores vindos do cliente.
2. Segredos: procure chaves e tokens no c&#243;digo do front e em vari&#225;veis que v&#227;o para o navegador (NEXT_PUBLIC_, VITE_, EXPO_PUBLIC_ ou equivalente). Classifique cada uma como p&#250;blica por design (ex.: publishable/anon key do Supabase, publishable key do Stripe) ou secreta (service_role/secret key, chaves de OpenAI, Stripe secret, tokens de terceiros). Toda secreta sai do front, vai para o servidor, e me diga quais eu preciso rotacionar porque j&#225; foram publicadas.
3. Supabase (ou banco equivalente exposto por API):
   a. liste todas as tabelas dos schemas expostos e diga quais est&#227;o com RLS desligado;
   b. para cada policy existente, explique em portugu&#234;s quem pode ler, inserir, alterar e apagar o qu&#234;;
   c. aponte policies permissivas demais, como USING (true), WITH CHECK (true) ou regras que n&#227;o comparam com auth.uid();
   d. proponha policies m&#237;nimas: cada usu&#225;rio s&#243; acessa as pr&#243;prias linhas, e campos sens&#237;veis (ex.: status de pagamento, papel, saldo) s&#243; mudam pelo servidor;
   e. confirme que a chave secreta (service_role) nunca &#233; usada no navegador.
4. Gere um relat&#243;rio final com: achado, risco (alto, m&#233;dio, baixo), arquivo e linha, corre&#231;&#227;o proposta.

Regras: primeiro s&#243; o relat&#243;rio, sem alterar nada. Depois aplique as corre&#231;&#245;es uma por vez, com migration separada para as policies, esperando meu OK em cada uma. N&#227;o desligue nenhuma prote&#231;&#227;o existente para "fazer funcionar".
</code></code></pre><div><hr></div><h2>4. Separa&#231;&#227;o de responsabilidades</h2><p><strong>O que &#233;:</strong> cada coisa na sua gaveta. A tela numa, a regra de neg&#243;cio em outra, e quem conversa com banco, gateway de pagamentos e APIs de fora numa terceira. </p><p><strong>Onde quebra:</strong> naquele arquivo gigante onde voc&#234; pede pra IA mexer numa coisa e quebra outra do outro lado. </p><p><strong>Sinal de que voc&#234; tem:</strong> um arquivo que voc&#234; tem medo de abrir, e toda altera&#231;&#227;o nele vira efeito colateral.</p><p><strong>Como resolve:</strong> dividir em passos pequenos, sem mudar comportamento, com testes registrando como o arquivo funciona hoje antes do primeiro passo. </p><p>PROMPT</p><pre><code><code>Voc&#234; &#233; um engenheiro s&#234;nior especialista em refatora&#231;&#227;o segura. O arquivo [CAMINHO DO ARQUIVO] ficou grande demais e toda altera&#231;&#227;o quebra outra coisa. Quero dividir em camadas sem mudar comportamento.

1. Mapeie o arquivo: liste cada fun&#231;&#227;o, componente e trecho, e classifique em uma destas camadas:
   a. UI (o que aparece na tela e captura evento do usu&#225;rio);
   b. regra de neg&#243;cio (c&#225;lculos, valida&#231;&#245;es, decis&#245;es);
   c. acesso a dados e servi&#231;os externos (banco, Supabase, Stripe, APIs).
2. Aponte depend&#234;ncias cruzadas, c&#243;digo duplicado e estado global que dificultam a separa&#231;&#227;o.
3. Proponha a nova estrutura de pastas e arquivos, seguindo o padr&#227;o que o projeto j&#225; usa. Nada de framework ou biblioteca nova.
4. Monte um plano em passos pequenos. Cada passo move um peda&#231;o s&#243;, mant&#233;m os mesmos nomes p&#250;blicos e deixa o app funcionando.
5. Antes do primeiro passo, confira se existem testes cobrindo o comportamento atual. Se n&#227;o existirem, escreva testes de caracteriza&#231;&#227;o (que registram o comportamento de hoje, mesmo que pare&#231;a errado) para os fluxos principais desse arquivo.
6. Execute um passo por vez, rodando os testes ao final de cada um.

Regras: n&#227;o corrija bugs nem mude regra de neg&#243;cio durante a refatora&#231;&#227;o; se achar bug, anote numa lista separada. N&#227;o renomeie rotas, props p&#250;blicas ou colunas do banco. Mostre o plano e espere meu OK antes do passo 1.
</code></code></pre><div><hr></div><h2>5. Teste de integra&#231;&#227;o</h2><p><strong>O que &#233;:</strong> um teste que chama a tua rota de verdade, com um banco de teste de verdade, e s&#243; finge o que &#233; de fora (o webhook do gateway, o envio de e-mail). </p><p><strong>Por que esse e n&#227;o os outros:</strong> o agente de IA adora teste unit&#225;rio porque mocka tudo, e a&#237; o teste passa sem testar nada. O E2E (com <a href="https://playwright.dev/">Playwright</a>, por exemplo) &#233; lento e quebra &#224; toa.</p><p><strong>Como fica:</strong> no jeit&#227;o do RSpec, a frase do comportamento vem antes do teste. Em JS, com <a href="https://vitest.dev/guide/">Vitest</a>, &#233; assim (exemplo ilustrativo):</p><pre><code><code>describe('webhook de pagamento', () =&gt; {
  it('quando o mesmo evento chega 2 vezes, libera o plano 1 vez s&#243;', async () =&gt; {
    await post(webhook, eventoPago)
    await post(webhook, eventoPago)
    expect(await assinaturas(usuario)).toBe(1)
  })

  it('quando as 2 c&#243;pias chegam juntas, libera 1 vez s&#243;', async () =&gt; {
    await Promise.all([post(webhook, eventoPago), post(webhook, eventoPago)])
    expect(await assinaturas(usuario)).toBe(1)
  })
})
</code></code></pre><p>Voc&#234; n&#227;o precisa escrever isso. Precisa ler a frase do <code>it</code> e concordar com ela; a IA escreve o resto.</p><p><strong>Onde quebra:</strong> sem esses testes, a IA mexe num lugar, quebra outro e quem descobre &#233; o cliente. </p><p><strong>Cuidado:</strong> teste de RLS s&#243; vale com banco de verdade. Supabase local ou um projeto s&#243; de teste. Banco de produ&#231;&#227;o, nunca.</p><p>PROMPT:</p><pre><code><code>Voc&#234; &#233; um engenheiro de qualidade. Quero cobrir os fluxos cr&#237;ticos do meu app com testes de integra&#231;&#227;o, no estilo request spec do RSpec: cada teste chama a rota de verdade, com banco de teste de verdade, e s&#243; simula o que &#233; de fora (gateway de pagamento, envio de e-mail, APIs de terceiros).

1. Leia o projeto e liste os fluxos cr&#237;ticos: cadastro, login, checkout, webhooks de pagamento e qualquer rota que mexe com dinheiro, permiss&#227;o ou dado de outro usu&#225;rio.
2. Para cada fluxo, escreva em portugu&#234;s as frases de comportamento no formato describe / it ("quando..., ent&#227;o..."), cobrindo:
   a. o caminho feliz;
   b. erros esperados (pagamento recusado, campo inv&#225;lido, usu&#225;rio sem permiss&#227;o);
   c. repeti&#231;&#227;o (clicar 2 vezes, webhook duplicado, 2 requisi&#231;&#245;es ao mesmo tempo);
   d. limites (estoque zerado, plano expirado, valor zero ou negativo);
   e. acesso indevido (usu&#225;rio A tentando ler ou alterar dado do usu&#225;rio B).
3. Me mostre as frases e espere eu confirmar ou corrigir. Eu sou a fonte da verdade sobre o comportamento esperado.
4. Configure o ambiente de teste com a ferramenta que o projeto j&#225; tem (se n&#227;o tiver nenhuma, sugira a mais simples para a stack e espere meu OK). O banco de teste &#233; separado: Supabase local, container ou projeto s&#243; de teste. Nunca aponte para o banco de produ&#231;&#227;o.
5. Escreva os testes batendo nas rotas (API routes, server actions, edge functions). Mock s&#243; de servi&#231;o externo; banco, regras de neg&#243;cio e policies rodam de verdade. Para repeti&#231;&#227;o simult&#226;nea, dispare as requisi&#231;&#245;es ao mesmo tempo (Promise.all ou equivalente).
6. Opcional, s&#243; se eu aprovar: um &#250;nico teste E2E de fuma&#231;a (ex.: Playwright) para o caminho cadastro at&#233; checkout.
7. Rode tudo e me diga o que passa e o que falha. Teste que falha por bug real fica falhando e entra numa lista de bugs; n&#227;o ajuste o teste para passar.
8. Me diga o comando &#250;nico para rodar todos os testes, para eu rodar depois de toda altera&#231;&#227;o feita por IA.

Regras: &#233; proibido apagar, pular (skip) ou afrouxar um teste para faz&#234;-lo passar. N&#227;o mocke o banco nem a regra que est&#225; sendo testada. Se um teste parecer errado, pare e me pergunte.</code></code></pre><p></p><h2>Prompt de auditoria (os 5 de uma vez, sem alterar nada)</h2><pre><code><code>Voc&#234; &#233; um engenheiro s&#234;nior fazendo uma auditoria de um app que eu constru&#237; com IA. Nesta tarefa voc&#234; N&#195;O altera nenhum arquivo do projeto, n&#227;o roda migration e n&#227;o instala nada. Voc&#234; s&#243; l&#234; o c&#243;digo, roda comandos de leitura e escreve um relat&#243;rio.

Siga esta ordem e, ao final de cada etapa, anote os achados antes de passar para a pr&#243;xima:

1. Testes de integra&#231;&#227;o
   - Existe ferramenta de teste configurada? Existe banco de teste separado do de produ&#231;&#227;o? Qual o comando para rodar tudo? Rode (s&#243; se n&#227;o tocar em produ&#231;&#227;o) e diga quantos passam e quantos falham.
   - Liste os fluxos cr&#237;ticos (cadastro, login, checkout, assinatura, webhooks) e diga quais t&#234;m teste batendo na rota de verdade, quais s&#243; t&#234;m teste unit&#225;rio com mock e quais n&#227;o t&#234;m nada.

2. Confian&#231;a no cliente
   - Regras de pre&#231;o, desconto, permiss&#227;o, papel de admin ou limite de plano que existem s&#243; no front.
   - Chaves e tokens em c&#243;digo de front ou em vari&#225;veis que v&#227;o para o navegador (NEXT_PUBLIC_, VITE_, EXPO_PUBLIC_ ou equivalente). Classifique como p&#250;blica por design ou secreta.
   - Se houver Supabase (ou banco exposto por API): tabelas expostas com RLS desligado e policies permissivas demais (USING (true), WITH CHECK (true), regras que n&#227;o comparam com auth.uid()). Explique cada policy em portugu&#234;s.

3. Race condition
   - Todo trecho que l&#234;, decide e depois grava sobre recurso limitado (estoque, cupom, saldo, cr&#233;dito, vaga, convite). Para cada um, diga o que acontece se 2 requisi&#231;&#245;es iguais chegarem juntas e se existe constraint &#250;nica, opera&#231;&#227;o at&#244;mica ou lock de linha no banco protegendo.
   - Aponte prote&#231;&#227;o que depende de lock em mem&#243;ria, lock no Redis com expira&#231;&#227;o ou leitura de cache, e diga se o banco sozinho resolveria.

4. Idempot&#234;ncia
   - Webhooks recebidos: a assinatura &#233; verificada com o corpo bruto? Existe registro de eventos processados com ID &#250;nico? O que acontece se o mesmo evento chegar 2 vezes?
   - Chamadas ao gateway de pagamento: usam idempotency key?

5. Separa&#231;&#227;o de responsabilidades
   - Os arquivos mais longos do projeto e, em cada um, se mistura tela, regra de neg&#243;cio e acesso a banco ou servi&#231;o externo. Aponte o candidato n&#250;mero 1 para refatorar.

Entrega: crie AUDITORIA.md na raiz com uma tabela por etapa (achado, risco alto/m&#233;dio/baixo, arquivo e linha, corre&#231;&#227;o sugerida) e, no topo, os 5 achados de maior risco em ordem. Se n&#227;o conseguir verificar algo, escreva "n&#227;o verificado" e o motivo, sem chutar. Termine dizendo qual dos 5 prompts de corre&#231;&#227;o eu devo rodar primeiro e por qu&#234;.
</code></code></pre><p></p><p>O canal existe pra trazer conhecimento atrav&#233;s de resenha. Aqui n&#227;o tem mentoria e n&#227;o tem curso.</p><p>Esse v&#237;deo, e todos os outros do canal, s&#243; foram roteirizados, gravados e editados gra&#231;as aos nossos patrocinadores:</p><p><a href="https://appmax.com.br/desenvolvedores/?utm_source=mano-deyvin&amp;utm_medium=social&amp;utm_campaign=influencer-tech">&#128176; Appmax: Pix com taxa zero pra quem integrar via API por este link</a></p><p><a href="https://hostinger.com.br/deyvin">&#128640; Hostinger: use o cupom MANODEYVIN e ganhe desconto na primeira compra</a></p><p>&#11088; E aos membros do canal, que bancam o boteco todo m&#234;s. </p><p><a href="https://www.youtube.com/channel/UC1VZDEtGNxfQzh7EYcD2frg/join">Quer fazer parte do clube?</a></p><p></p>]]></content:encoded></item><item><title><![CDATA[🚨 O CAOS DA ENGENHARIA REVERSA ]]></title><description><![CDATA[Mano Rage Show EP271]]></description><link>https://manodeyvin.com.br/p/o-caos-da-engenharia-reversa</link><guid isPermaLink="false">https://manodeyvin.com.br/p/o-caos-da-engenharia-reversa</guid><dc:creator><![CDATA[Mano Deyvin]]></dc:creator><pubDate>Wed, 14 Oct 2026 18:05:25 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/220408064/192bba5d6285de124da04e1c7dba854d.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Deyvin nessa live voltou atr&#225;s quando deu HATE nesse assunto de engenharia reversa, mas algo chamou muito mais a aten&#231;&#227;o: A J&#233;ssica Fazendeira uma modelo de IA que est&#225; conquistando cora&#231;&#245;es dos homens 60+</p><ol><li><p>Homem viaja do Maranh&#227;o at&#233; BH em busca da J&#233;ssica Fazendeira.</p></li><li><p>Avaliei o que a comunidade est&#225; fazendo com Engenharia Reversa.</p></li><li><p>Nosso grande amigo Yudi Ganeko PRETENDE voltar ao CLT pq est&#225; com saudades de um escrit&#243;rio.</p></li></ol><p><strong>Patrocinadores desse epis&#243;dio:</strong></p><p>&#128640; CONTA DEV: https://links.chorume.dev/contadev-ig<br>&#128640; SOLYD: https://solyd.link/deyvin<br></p><p>Apoie esse conte&#250;do aqui no substack ou <a href="https://www.youtube.com/channel/UC1VZDEtGNxfQzh7EYcD2frg/join">se tornando membro no YT</a></p>]]></content:encoded></item><item><title><![CDATA[🚨 PASSARALHOS E FOFOCAS]]></title><description><![CDATA[Mano Rage Show #270]]></description><link>https://manodeyvin.com.br/p/passaralhos-e-fofocas</link><guid isPermaLink="false">https://manodeyvin.com.br/p/passaralhos-e-fofocas</guid><dc:creator><![CDATA[Mano Deyvin]]></dc:creator><pubDate>Wed, 07 Oct 2026 21:05:05 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/219332439/0267172b74f5138a4c167c9aed0caa91.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>&#128640; VOTE EM MIM NO IBEST: https://premioibest.vote/483718727</p><p>Deyvin nessa live transformou num programa de r&#225;dio dos anos 90 testando seu projeto fullvibecoded para o chat enviar &#225;udio.</p><ol><li><p>Q4 chegou e com ele algumas pessoas OPEN-TO-WORK e nem nosso profeta do tranquilismo escapou dessa.</p></li><li><p>O chat pediu para o mano avaliar o v&#237;deo do <a href="https://www.youtube.com/@GutoGalego">Augusto Galego</a> sobre as dificuldades do dev junior.</p></li><li><p>Pra fechar realizamos um bloco s&#243; pra compartilhar fofocas de forma pra entender como est&#225; esse Q4.</p></li></ol><p><strong>Patrocinadores desse epis&#243;dio:</strong></p><p>&#128640; CONTA DEV: https://links.chorume.dev/contadev-ig<br>&#128640; FULL CYCLE:  https://fcycle.co/07-10-lv-md-mba-ia</p><p>Apoie esse conte&#250;do aqui no substack ou <a href="https://www.youtube.com/channel/UC1VZDEtGNxfQzh7EYcD2frg/join">se tornando membro no YT</a><br></p>]]></content:encoded></item><item><title><![CDATA[FIM DAS BETS E FIM DO RUBY ON RAILS]]></title><description><![CDATA[Mano Rage Show EP268]]></description><link>https://manodeyvin.com.br/p/fim-das-bets-e-fim-do-ruby-on-rails</link><guid isPermaLink="false">https://manodeyvin.com.br/p/fim-das-bets-e-fim-do-ruby-on-rails</guid><dc:creator><![CDATA[Mano Deyvin]]></dc:creator><pubDate>Thu, 01 Oct 2026 15:02:42 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/218238141/4dde2cc63368d4c3ecd4a1ee298bc078.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Deyvin nessa live voltou ser o MANO DEYVIN do velho testamento e perde a paci&#234;ncia nos primeiros 30 minutos de live</p><ol><li><p>DHH troca ruby on rails por Rusty no seu principal projeto, diz que ingl&#234;s &#233; a melhor linguagem de programa&#231;&#227;o, melhor que Ruby.</p></li><li><p>Lucas Montano faz declara&#231;&#227;o pol&#234;mica no X dizendo que TODO dev deveria ter uma assinatura de $ 200 dolls do claude.</p></li><li><p>Caso do dev senior do ITA que foi promovido a s&#234;nior em 2 anos no nubank.</p></li><li><p>Pra fechar nasce a nova categoria na bolha tech, o fiscal de github.</p></li></ol><p><strong>Patrocinador desse epis&#243;dio:</strong></p><ul><li><p>CONTA DEV - CONTABILIDADE PARA DEVS BR E NA GRINGA: <a href="https://www.youtube.com/redirect?event=video_description&amp;redir_token=QUZZTVljSHlBdWdfaXBOcDN0NGlKOTNhWXQzdXxBTl9pYzRjMGFJeVdYSGdxeGRuSk9kZjlRWW85WWFEV205VXdGWmdPaWc5Q1ZKYk80ZEE1YlFzVUlKNnRNQkxkWWJ2UWNFX1RYTEh6c3ZnSmRndEJRYXBxT0VmTVdxZTh2MS1C&amp;q=https%3A%2F%2Flinks.chorume.dev%2Fcontadev-ig&amp;v=2uGCcEUG26c">https://links.chorume.dev/contadev-ig</a></p></li></ul><p>Apoie esse conte&#250;do aqui no substack ou <a href="https://www.youtube.com/channel/UC1VZDEtGNxfQzh7EYcD2frg/join">se tornando membro no YT</a></p>]]></content:encoded></item><item><title><![CDATA[PROIBIDO FALAR DE IA]]></title><description><![CDATA[Mano Rage Show EP 267]]></description><link>https://manodeyvin.com.br/p/proibido-falar-de-ia</link><guid isPermaLink="false">https://manodeyvin.com.br/p/proibido-falar-de-ia</guid><dc:creator><![CDATA[Mano Deyvin]]></dc:creator><pubDate>Wed, 30 Sep 2026 20:27:48 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/218238097/4e524c2b689e3fe3e9c63a931c276392.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Deyvin faz um pacto solene com o chat pra n&#227;o falar de IA na live e quebra a promessa antes dos 15 minutos&#8230;</p><ol><li><p>Trustly demite ~100 pessoas em Vit&#243;ria por e-mail pessoal, dissolve times inteiros e tem gestor que s&#243; ficou sabendo porque o liderado avisou.</p></li><li><p>E dessa vez a culpa n&#227;o foi da IA: 534 milh&#245;es de coroas de preju&#237;zo. Acabou a era do &#8220;demiti por efici&#234;ncia&#8221; &#8212; pergunta pra Stone como foi em mar&#231;o.</p></li><li><p>&#8220;A organiza&#231;&#227;o virou uma empresa grande demais e perdeu o esp&#237;rito empreendedor&#8221;: o layoff de 2022 e as mil camadas de lideran&#231;a do modelo Spotify, o &#225;gil que virou burocracia com nome bonito.</p></li><li><p>Yuri Dev hackeia a loja do Buzeira feita no Lovable: token de super admin trocado no localStorage, 2FA liberado no mass assignment e uma quadrilha de vibe hackers que mandou relat&#243;rio gerado por IA.</p></li><li><p>Pra fechar, o plot twist: o dev do Buzeira &#233; da bolha, tava no chat, no Discord, e foi quem registrou o dom&#237;nio do chorume.</p></li></ol><p></p><p><strong>Patrocinadores desse epis&#243;dio:</strong></p><ul><li><p>SOLYD - SEJA UM PENTESTER, LINK COM DESCONTO: <a href="https://www.youtube.com/redirect?event=video_description&amp;redir_token=QUZZTVljRVZaMjFXc2NIZDh4a0pneXNfZTRNSnxBTl9pYzRkNTRpbGg4TGFsbjh2bWkzU2RwampkdTB0Z1poMWszZFNMcWotV0RQVU81TmVMY0NzdTFlOHRlV2I4anEtbXlUaTdIM0FScWRrd01nZGZzU1pWWXY0RXdZMWYtUmZK&amp;q=https%3A%2F%2Fsolyd.link%2Fdeyvin&amp;v=2uGCcEUG26c">https://solyd.link/deyvin</a></p></li><li><p>CONTA DEV - CONTABILIDADE PARA DEVS BR E NA GRINGA: <a href="https://www.youtube.com/redirect?event=video_description&amp;redir_token=QUZZTVljSHlBdWdfaXBOcDN0NGlKOTNhWXQzdXxBTl9pYzRjMGFJeVdYSGdxeGRuSk9kZjlRWW85WWFEV205VXdGWmdPaWc5Q1ZKYk80ZEE1YlFzVUlKNnRNQkxkWWJ2UWNFX1RYTEh6c3ZnSmRndEJRYXBxT0VmTVdxZTh2MS1C&amp;q=https%3A%2F%2Flinks.chorume.dev%2Fcontadev-ig&amp;v=2uGCcEUG26c">https://links.chorume.dev/contadev-ig</a></p></li></ul><p></p><p>Apoie esse conte&#250;do aqui no substack ou <a href="https://www.youtube.com/channel/UC1VZDEtGNxfQzh7EYcD2frg/join">se tornando membro no YT</a> </p>]]></content:encoded></item><item><title><![CDATA[OpenClaw 2.0 ficou mais confiável? ]]></title><description><![CDATA[Analisei as 242 vers&#245;es do projeto e montei um PDF de 14 p&#225;ginas que qualquer pessoa entende. Download gr&#225;tis.]]></description><link>https://manodeyvin.com.br/p/openclaw-20-ficou-mais-confiavel</link><guid isPermaLink="false">https://manodeyvin.com.br/p/openclaw-20-ficou-mais-confiavel</guid><dc:creator><![CDATA[Mano Deyvin]]></dc:creator><pubDate>Wed, 23 Sep 2026 17:25:37 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!-paW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd692b7e1-5d70-4ec9-8a11-668252a41d41_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Todo mundo t&#225; falando que o OpenClaw 2.0 t&#225; mais maduro. Eu tamb&#233;m achava. S&#243; que achar n&#227;o prova nada.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!-paW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd692b7e1-5d70-4ec9-8a11-668252a41d41_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!-paW!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd692b7e1-5d70-4ec9-8a11-668252a41d41_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!-paW!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd692b7e1-5d70-4ec9-8a11-668252a41d41_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!-paW!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd692b7e1-5d70-4ec9-8a11-668252a41d41_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!-paW!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd692b7e1-5d70-4ec9-8a11-668252a41d41_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!-paW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd692b7e1-5d70-4ec9-8a11-668252a41d41_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/d692b7e1-5d70-4ec9-8a11-668252a41d41_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:929400,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://manodeyvin.com.br/i/215680579?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd692b7e1-5d70-4ec9-8a11-668252a41d41_1280x720.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!-paW!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd692b7e1-5d70-4ec9-8a11-668252a41d41_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!-paW!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd692b7e1-5d70-4ec9-8a11-668252a41d41_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!-paW!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd692b7e1-5d70-4ec9-8a11-668252a41d41_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!-paW!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd692b7e1-5d70-4ec9-8a11-668252a41d41_1280x720.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p style="text-align: center;"><a href="https://youtu.be/7vqxsEBg1Cc">Assista em v&#237;deo aqui</a></p><p>Ent&#227;o fui no hist&#243;rico p&#250;blico do projeto, baixei as 242 vers&#245;es j&#225; lan&#231;adas e contei e criei um script em ruby para ler item por item e jogar no peito de uma LLM pra gerar alguns insights.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://manodeyvin.com.br/subscribe?&quot;,&quot;text&quot;:&quot;Subscrever&quot;,&quot;language&quot;:&quot;pt&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">@manodeyvin &#233; uma publica&#231;&#227;o apoiada pelos leitores. Para receber novos posts e apoiar o meu trabalho, considere tornar-se um subscritor gratuito ou pago.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Digite o seu e-mail..." tabindex="-1"><input type="submit" class="button primary" value="Subscrever"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Gastei tokens pra voc&#234; n&#227;o precisar gastar e o resultado virou esse material.</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!Ptw0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fda0c0e-f294-462a-8d08-fa7335491dcd_1630x856.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!Ptw0!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fda0c0e-f294-462a-8d08-fa7335491dcd_1630x856.png 424w, https://substackcdn.com/image/fetch/$s_!Ptw0!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fda0c0e-f294-462a-8d08-fa7335491dcd_1630x856.png 848w, https://substackcdn.com/image/fetch/$s_!Ptw0!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fda0c0e-f294-462a-8d08-fa7335491dcd_1630x856.png 1272w, https://substackcdn.com/image/fetch/$s_!Ptw0!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fda0c0e-f294-462a-8d08-fa7335491dcd_1630x856.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!Ptw0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fda0c0e-f294-462a-8d08-fa7335491dcd_1630x856.png" width="1456" height="765" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/8fda0c0e-f294-462a-8d08-fa7335491dcd_1630x856.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:765,&quot;width&quot;:1456,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:315552,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:&quot;https://manodeyvin.com.br/i/215680579?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fda0c0e-f294-462a-8d08-fa7335491dcd_1630x856.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!Ptw0!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fda0c0e-f294-462a-8d08-fa7335491dcd_1630x856.png 424w, https://substackcdn.com/image/fetch/$s_!Ptw0!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fda0c0e-f294-462a-8d08-fa7335491dcd_1630x856.png 848w, https://substackcdn.com/image/fetch/$s_!Ptw0!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fda0c0e-f294-462a-8d08-fa7335491dcd_1630x856.png 1272w, https://substackcdn.com/image/fetch/$s_!Ptw0!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F8fda0c0e-f294-462a-8d08-fa7335491dcd_1630x856.png 1456w" sizes="100vw"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><h2>O que voc&#234; vai encontrar no PDF:</h2><p>- O que &#233; o OpenClaw e o que mudou no lan&#231;amento do 2.0, em 31 de agosto de 2026</p><p>- Uma compara&#231;&#227;o com carro saindo de f&#225;brica, que explica tudo sem voc&#234; precisar ser programador</p><p>- Um dicion&#225;rio r&#225;pido com as 5 palavras t&#233;cnicas que aparecem no material</p><p>- As 5 provas de maturidade, cada uma com gr&#225;fico e explica&#231;&#227;o em portugu&#234;s simples:</p><p>  - Os consertos ca&#237;ram 88% em 5 dias depois do lan&#231;amento</p><p>  - Em abril, a vers&#227;o antiga passava de 200 consertos por entrega, sem nunca baixar</p><p>  - Nenhum remendo de emerg&#234;ncia desde o 2.0, contra 8 no primeiro m&#234;s da vers&#227;o antiga</p><p>  - 16 dias de teste antes de lan&#231;ar, enquanto as vers&#245;es antigas sa&#237;am sem teste nenhum</p><p>  - Uma vers&#227;o de longa dura&#231;&#227;o mantida em paralelo, recebendo pouqu&#237;ssimo conserto</p><p>- O tamanho do esfor&#231;o por tr&#225;s do 2.0: 16.977 altera&#231;&#245;es revisadas e 987 pessoas contribuindo</p><p>- As 3 coisas que esse levantamento n&#227;o prova, pra ningu&#233;m usar o dado errado</p><p>- Um resumo em 5 frases e todas as fontes, pra voc&#234; conferir cada n&#250;mero</p><p></p><blockquote><p>Dados levantados em 10 de setembro de 2026.</p></blockquote><div class="file-embed-wrapper" data-component-name="FileToDOM"><div class="file-embed-container-reader"><div class="file-embed-container-top"><image class="file-embed-thumbnail-default" src="https://substackcdn.com/image/fetch/$s_!0Cy0!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack.com%2Fimg%2Fattachment_icon.svg"></image><div class="file-embed-details"><div class="file-embed-details-h1">Openclaw 2 Maturidade</div><div class="file-embed-details-h2">1.05MB &#8729; PDF file</div></div><a class="file-embed-button wide" href="https://manodeyvin.com.br/api/v1/file/3d257eca-e912-4ad9-a21c-595cc5a8b294.pdf"><span class="file-embed-button-text">Download</span></a></div><a class="file-embed-button narrow" href="https://manodeyvin.com.br/api/v1/file/3d257eca-e912-4ad9-a21c-595cc5a8b294.pdf"><span class="file-embed-button-text">Download</span></a></div></div><blockquote><p>&#128205; Hospede seu OpenClaw com a <a href="https://www.hostinger.com/br/deyvin">Hostinger</a>, VPS a partir de R$ 29,99, use meu cupom MANODEYVIN pra fortalecer o canal e ainda ganhar mais desconto.</p></blockquote><p></p><p>Se isso te ajudou, manda pra aquele amigo vibe coder safado.</p><p> </p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://manodeyvin.com.br/subscribe?&quot;,&quot;text&quot;:&quot;Subscrever&quot;,&quot;language&quot;:&quot;pt&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">@manodeyvin &#233; uma publica&#231;&#227;o apoiada pelos leitores. Para receber novos posts e apoiar o meu trabalho, considere tornar-se um subscritor gratuito ou pago.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Digite o seu e-mail..." tabindex="-1"><input type="submit" class="button primary" value="Subscrever"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[MONARK ODEIA OS DEVS]]></title><description><![CDATA[Assista agora (116 minutos) | Mano Rage Show EP266]]></description><link>https://manodeyvin.com.br/p/monark-odeia-os-devs</link><guid isPermaLink="false">https://manodeyvin.com.br/p/monark-odeia-os-devs</guid><dc:creator><![CDATA[Mano Deyvin]]></dc:creator><pubDate>Wed, 16 Sep 2026 18:36:12 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/216036411/f89a04a955f9132918f378182f76f892.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Deyvin decreta que n&#227;o &#233; mais s&#237;ndico de treta alheia e mergulha no chorume da semana&#8230;</p><ol><li><p>Monark diz que milhares de programadores foram substitu&#237;dos em um instante e entra oficialmente na lista de inimigos da bolha.</p></li><li><p>Por que todo CEO tem um orgasmo depois de subir um CRM no Lovable em 5 minutos?</p></li><li><p>A era do Software as a Toy: o SaaS deixou de ser diferencial e quem paga a conta agora &#233; servi&#231;o.</p></li><li><p>Maycon Braga, o dev mais agoniado do TikTok: PHP na unha, t&#243;tem de senha, TV indoor e sistema de replay vendidos na porta do cliente.</p></li><li><p>Pra fechar, o casal que largou S&#227;o Paulo pra morar na ro&#231;a.</p></li></ol><p></p><p><strong>Patrocinadores desse epis&#243;dio:</strong></p><ul><li><p>FULL CYCLE: https://fcycle.co/pr-md-mba-ia</p></li><li><p>ELEMENTS (cupom MANO): https://loja.elements.com.br/?utm_source=youtube&amp;utm_medium=legenda&amp;utm_campaign=manodeyvin</p></li><li><p>CONTA DEV: https://links.chorume.dev/contadev-ig</p></li></ul><p>Apoie esse conte&#250;do aqui no substack ou <a href="https://www.youtube.com/channel/UC1VZDEtGNxfQzh7EYcD2frg/join">se tornando membro no YT</a></p>]]></content:encoded></item><item><title><![CDATA[Prompt em inglês é frescura ou vale a pena?]]></title><description><![CDATA[Fiz o teste real em 3 cen&#225;rios e o resultado foi bem inesperado.]]></description><link>https://manodeyvin.com.br/p/prompt-em-ingles-e-frescura-ou-vale</link><guid isPermaLink="false">https://manodeyvin.com.br/p/prompt-em-ingles-e-frescura-ou-vale</guid><dc:creator><![CDATA[Mano Deyvin]]></dc:creator><pubDate>Thu, 10 Sep 2026 21:01:30 GMT</pubDate><enclosure url="https://substackcdn.com/image/youtube/w_728,c_limit/Cz7dYWM2hKc" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Um inscrito comentou no v&#237;deo da auditoria dos SaaS: &#8220;ser&#225; que escrever o prompt em ingl&#234;s n&#227;o economiza mais token?&#8221;. Tem estudo dizendo que economiza uns 30%. Fui medir.</p><div id="youtube2-Cz7dYWM2hKc" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;Cz7dYWM2hKc&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/Cz7dYWM2hKc?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p>Mesmo modelo nos 2 lados (Claude Code com Opus 5), mesma m&#225;quina, mesma configura&#231;&#227;o. A &#250;nica vari&#225;vel &#233; a l&#237;ngua do prompt.</p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://manodeyvin.com.br/subscribe?&quot;,&quot;text&quot;:&quot;Subscrever&quot;,&quot;language&quot;:&quot;pt&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">@manodeyvin &#233; uma publica&#231;&#227;o apoiada pelos leitores. Para receber novos posts e apoiar o meu trabalho, considere tornar-se um subscritor gratuito ou pago.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Digite o seu e-mail..." tabindex="-1"><input type="submit" class="button primary" value="Subscrever"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><h2>Os resultados</h2><p><strong>N&#237;vel 1: texto puro, 3 notas em Markdown</strong><br>Portugu&#234;s: US$ 0,2385<br>Ingl&#234;s: US$ 0,2310<br>&#128073; Ingl&#234;s 3% mais barato. Empate t&#233;cnico.</p><p><strong>N&#237;vel 2: API em Ruby on Rails do zero</strong><br>Portugu&#234;s: US$ 4,78<br>Ingl&#234;s: US$ 6,16<br>&#128073; Ingl&#234;s 29% mais caro.</p><p><strong>N&#237;vel 3: auditoria de seguran&#231;a num SaaS real</strong><br>Portugu&#234;s: US$ 8,94<br>Ingl&#234;s: US$ 11,35<br>&#128073; Ingl&#234;s 27% mais caro.</p><div class="captioned-image-container"><figure><div class="image-link image2" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!KHaL!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d92f508-118c-44dd-8a80-b0b1e865db33_315x225.gif 424w, https://substackcdn.com/image/fetch/$s_!KHaL!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d92f508-118c-44dd-8a80-b0b1e865db33_315x225.gif 848w, https://substackcdn.com/image/fetch/$s_!KHaL!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d92f508-118c-44dd-8a80-b0b1e865db33_315x225.gif 1272w, https://substackcdn.com/image/fetch/$s_!KHaL!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d92f508-118c-44dd-8a80-b0b1e865db33_315x225.gif 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!KHaL!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d92f508-118c-44dd-8a80-b0b1e865db33_315x225.gif" width="320" height="228.57142857142856" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/6d92f508-118c-44dd-8a80-b0b1e865db33_315x225.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:225,&quot;width&quot;:315,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!KHaL!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d92f508-118c-44dd-8a80-b0b1e865db33_315x225.gif 424w, https://substackcdn.com/image/fetch/$s_!KHaL!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d92f508-118c-44dd-8a80-b0b1e865db33_315x225.gif 848w, https://substackcdn.com/image/fetch/$s_!KHaL!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d92f508-118c-44dd-8a80-b0b1e865db33_315x225.gif 1272w, https://substackcdn.com/image/fetch/$s_!KHaL!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F6d92f508-118c-44dd-8a80-b0b1e865db33_315x225.gif 1456w" sizes="100vw" fetchpriority="high"></picture><div></div></div></div></figure></div><p>Os 30% apareceram, s&#243; que invertidos. Em texto puro deu empate. Nas 2 tarefas de agente, o portugu&#234;s saiu mais barato.</p><h2>O que eu tirei disso</h2><p><strong>O prompt n&#227;o &#233; a conta.</strong> O que pesou foi o que o agente leu e o que ele escreveu. Cache lido na casa dos milh&#245;es de token contra um prompt de alguns milhares.</p><p><strong>Escreve na l&#237;ngua que voc&#234; pensa melhor.</strong> A diferen&#231;a &#233; troco de pinga.</p><p></p><p><strong>Quer economizar de verdade?</strong> COMPRE MEU CURSO&#8230; zoeira.</p><p>Aprende controlar o que o agente l&#234;, humilha ele at&#233; ele come&#231;ar a te dar respostas curtas e deixa o cache sempre ativado.</p><p></p><p>E outra&#8230;<strong> 1 rodada n&#227;o &#233; medi&#231;&#227;o.</strong> Foi s&#243; um teste, n&#227;o um veredito. Roda no teu projeto e me fala oq rolou.</p><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://manodeyvin.com.br/subscribe?&quot;,&quot;text&quot;:&quot;Subscrever&quot;,&quot;language&quot;:&quot;pt&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">@manodeyvin &#233; uma publica&#231;&#227;o apoiada pelos leitores. Para receber novos posts e apoiar o meu trabalho, considere tornar-se um subscritor gratuito ou pago.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Digite o seu e-mail..." tabindex="-1"><input type="submit" class="button primary" value="Subscrever"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div>]]></content:encoded></item><item><title><![CDATA[AGI: O COLAPSO ESTÁ PRÓXIMO]]></title><description><![CDATA[Mano Rage Show EP265]]></description><link>https://manodeyvin.com.br/p/agi-o-colapso-esta-proximo</link><guid isPermaLink="false">https://manodeyvin.com.br/p/agi-o-colapso-esta-proximo</guid><dc:creator><![CDATA[Mano Deyvin]]></dc:creator><pubDate>Wed, 09 Sep 2026 18:42:46 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/214931486/6a7530bc07e730ae32e467906a43999e.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Deyvin larga o emprego de bab&#225; de problema alheio e mergulha nas piores treta da semana&#8230;</p><ul><li><p>Pesquisador se demite da Anthropic dizendo AGI est&#225; pr&#243;xima.</p></li><li><p>O jaquetinha de couro, vulgo CEO da Nvidia crava que GPT-6 Astra &#233; AGI.</p></li><li><p>Jansen Moreira se infiltra no Discord da Lof Gang, gangue que caiu por um mod falso de Hello Kitty.</p></li><li><p>Dev com 20 anos de PHP vira motorista de app e abre o papo de etarismo.</p></li><li><p>Pra fechar o speed run do RH que corta seu acesso antes de te avisar que voc&#234; foi demitido.</p></li></ul><p><strong>Patrocinadores desse epis&#243;dio:</strong></p><p><span>CONTA DEV: </span><a href="https://www.youtube.com/redirect?event=video_description&amp;redir_token=QUM4Zm9rUXlMYk1Jak81RXZpZTdtZ1VZa3oybXxBTl9pYzRlaVBKLVhIaWd0QUFVRGFqb2R5VFhWdnp6VHVYTVFERVV4b1Y1MW5oNlNFYkRsZ2QyeDNNN3NKX21lNlRIbEVkb3NBTEkwR2lpT1prdjMydWdjNTNMUlNmVVJ2b2VU&amp;q=https%3A%2F%2Flinks.chorume.dev%2Fcontadev-ig&amp;v=U_Icb2Dt30M"><span>https://links.chorume.dev/contadev-ig</span></a><span><br>SOLYD: </span><a href="https://www.youtube.com/redirect?event=video_description&amp;redir_token=QUM4Zm9rU21oYll0ZXYyUlV1NzhBUGxJYmRNOXxBTl9pYzRmeTRSdXJwOXJDNktjZEY4SWNVNE9FNVljYjRMRm4yVlFuTVZQQk0yeGs5R3BpUDNTWk8zQ0JVM056bEVuZ3MzZkI3U2plREZ5ZmN0YXFFWFM2UE5PeFpvR0g3ZXJy&amp;q=https%3A%2F%2Fsolyd.link%2Fdeyvin&amp;v=U_Icb2Dt30M"><span>https://solyd.link/deyvin</span></a></p><p>Apoie esse conte&#250;do aqui no substack ou se <a href="https://www.youtube.com/channel/UC1VZDEtGNxfQzh7EYcD2frg/join">tornando membro no YT</a></p>]]></content:encoded></item><item><title><![CDATA[ALGEMA DE OURO]]></title><description><![CDATA[Assista agora | Emprego de prest&#237;gio, sal&#225;rio bom e um telefone que toca de madrugada. A hist&#243;ria de quem ganhou o suficiente pra ficar preso.]]></description><link>https://manodeyvin.com.br/p/algema-de-ouro</link><guid isPermaLink="false">https://manodeyvin.com.br/p/algema-de-ouro</guid><dc:creator><![CDATA[Mano Deyvin]]></dc:creator><pubDate>Mon, 07 Sep 2026 18:01:28 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/214597039/3d206cdf69a3f03f0f98579450286674.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>O Damon tem 31 anos, mestrado em f&#237;sica, trabalha com chip na China e tem exatamente aquilo que a sociedade cobra de algu&#233;m aos 30 por l&#225;: emprego numa empresa grande, sal&#225;rio bom, vida est&#225;vel. </p><p>No papel o contrato dele &#233; das 9 &#224;s 18, mas a ind&#250;stria roda 24 horas e o telefone toca de madrugada, ent&#227;o ele dorme 2 ou 3 horas por noite, vive assombrado esperando o pr&#243;ximo plant&#227;o e s&#243; consegue desligar a cabe&#231;a quando sai pra correr. </p><p>Isso tem nome, algema de ouro, e ela existe aqui do mesmo jeito: nesse v&#237;deo eu conto o caso do dev brasileiro que me procurou num evento e cujo chefe cobre toda proposta que ele recebe pra ele nunca sair, e a hist&#243;ria de L&#250;cio Aneu S&#234;neca, que ficou milion&#225;rio como professor particular de Nero, escreveu um livro inteiro convencendo um amigo a largar o emprego e, aos 60 anos, ofereceu devolver o patrim&#244;nio todo pra poder ir embora. </p><p>O chefe dele disse n&#227;o. Esse v&#237;deo n&#227;o conclui nada, a resenha fica nos coment&#225;rios.</p>]]></content:encoded></item><item><title><![CDATA[🚨 PAPINHO ANTI-REGULAMENTAÇÃO DE TI]]></title><description><![CDATA[Mano Rage Show #264]]></description><link>https://manodeyvin.com.br/p/papinho-anti-regulamentacao-de-ti</link><guid isPermaLink="false">https://manodeyvin.com.br/p/papinho-anti-regulamentacao-de-ti</guid><dc:creator><![CDATA[Mano Deyvin]]></dc:creator><pubDate>Wed, 02 Sep 2026 20:44:56 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/213918377/8f7c77cee458fddbf13eff0aa7ea7ead.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p>Epis&#243;dio 264: A treta da regulamenta&#231;&#227;o da profiss&#227;o de &#8220;informata&#8221; (PL 1979), depois de um coment&#225;rio dizendo que foram os devs que estragaram a &#225;rea. Passamos pelo PL, por medicina e odonto regulamentadas e mal pagas, e pelo que sobrou pra TI: porte de 4rma e MEI. </p><p>Ainda tivemos o depoimento do Harley Bastos sobre layoff, o dev que fechou vaga na gringa por 3.5k num fluxo de IA conversando com IA, e o direito de resposta ao desafio do Eric Wendel. Mais a jaqueta do Mega Brain e os super chats de sempre.</p><p>Patrocinador desse epis&#243;dio:</p><p>BLACK FRIDAY ANTECIPADA DA FULL CYCLE: <br><a href="https://fcycle.co/02-09-lv-md-mba-ia">https://fcycle.co/02-09-lv-md-mba-ia</a></p><div><hr></div><p>Links das tretas:</p><p>Thread no X sobre anti-regulamenta&#231;&#227;o: </p><div class="twitter-embed" data-attrs="{&quot;url&quot;:&quot;https://x.com/manodeyvin/status/2093735501773545658?s=20&quot;,&quot;full_text&quot;:&quot;Xiiiiiiiiiiiiii &quot;,&quot;username&quot;:&quot;manodeyvin&quot;,&quot;name&quot;:&quot;manodeyvin&quot;,&quot;profile_image_url&quot;:&quot;https://pbs.substack.com/profile_images/1934937824945639424/kYBa4JWD_normal.jpg&quot;,&quot;date&quot;:&quot;2026-08-29T16:20:18.000Z&quot;,&quot;photos&quot;:[{&quot;img_url&quot;:&quot;https://pbs.substack.com/media/HQ5xSn_XAAAClTD.jpg&quot;,&quot;link_url&quot;:&quot;https://t.co/5BLRG882fg&quot;}],&quot;quoted_tweet&quot;:{},&quot;reply_count&quot;:71,&quot;retweet_count&quot;:13,&quot;like_count&quot;:782,&quot;impression_count&quot;:70142,&quot;expanded_url&quot;:null,&quot;video_url&quot;:null,&quot;video_preview_media_key&quot;:null,&quot;belowTheFold&quot;:false}" data-component-name="Twitter2ToDOM"></div><p>PL sobre regulamenta&#231;&#227;o: <a href="https://www.camara.leg.br/proposicoesWeb/prop_mostrarintegra?codteor=2199105">https://www.camara.leg.br/proposicoesWeb/prop_mostrarintegra?codteor=2199105</a></p><p>PL sobre 4rmas para TI: <a href="https://www.tecmundo.com.br/internet/409044-deputado-cria-pl-para-liberar-armas-de-fogo-a-profissionais-de-ti-e-seguranca.htm">https://www.tecmundo.com.br/internet/409044-deputado-cria-pl-para-liberar-armas-de-fogo-a-profissionais-de-ti-e-seguranca.htm</a> </p><p>Programadores poder&#227;o ser MEI: <a href="https://www.bradojornal.com/noticias/politica/2026/03/09/programadores-poderao-se-formalizar-como-mei/">https://www.bradojornal.com/noticias/politica/2026/03/09/programadores-poderao-se-formalizar-como-mei/</a></p><p>Outros Links</p><p><a href="https://youtu.be/TII_sts7H64?si=mo3sfYoRg0CaVTYc">V&#237;deo do Harley</a></p><p><a href="https://www.reddit.com/r/brdev/comments/1w3x03z/consegui_minha_vaga_na_gringa_mas_agora_estou_100/">Thread no /r/brdev sobre vaga arrombada na gringa</a> </p>]]></content:encoded></item><item><title><![CDATA[Manual de remoção do carimbo de IA da Anthropic (para estudo)]]></title><description><![CDATA[Lista de links de reposit&#243;rios para fins acad&#234;micos, n&#227;o estou influenciando ningu&#233;m a nada.]]></description><link>https://manodeyvin.com.br/p/manual-de-remocao-do-carimbo-de-ia</link><guid isPermaLink="false">https://manodeyvin.com.br/p/manual-de-remocao-do-carimbo-de-ia</guid><dc:creator><![CDATA[Mano Deyvin]]></dc:creator><pubDate>Tue, 01 Sep 2026 21:30:33 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!x3dJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29009870-a663-4f04-aa92-3e724700ed6b_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>A Anthropic foi obrigada inserir uma marca d&#8217;&#225;gua em tudo que gera, o motivo oficial? Compliance! O artigo 50 do AI Act Europeu. </p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!x3dJ!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29009870-a663-4f04-aa92-3e724700ed6b_1280x720.png" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!x3dJ!,w_424,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29009870-a663-4f04-aa92-3e724700ed6b_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!x3dJ!,w_848,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29009870-a663-4f04-aa92-3e724700ed6b_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!x3dJ!,w_1272,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29009870-a663-4f04-aa92-3e724700ed6b_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!x3dJ!,w_1456,c_limit,f_webp,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29009870-a663-4f04-aa92-3e724700ed6b_1280x720.png 1456w" sizes="100vw"><img src="https://substackcdn.com/image/fetch/$s_!x3dJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29009870-a663-4f04-aa92-3e724700ed6b_1280x720.png" width="1280" height="720" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/29009870-a663-4f04-aa92-3e724700ed6b_1280x720.png&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:720,&quot;width&quot;:1280,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:1393494,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:&quot;image/png&quot;,&quot;href&quot;:null,&quot;belowTheFold&quot;:false,&quot;topImage&quot;:true,&quot;internalRedirect&quot;:&quot;https://manodeyvin.com.br/i/213770640?img=https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29009870-a663-4f04-aa92-3e724700ed6b_1280x720.png&quot;,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!x3dJ!,w_424,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29009870-a663-4f04-aa92-3e724700ed6b_1280x720.png 424w, https://substackcdn.com/image/fetch/$s_!x3dJ!,w_848,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29009870-a663-4f04-aa92-3e724700ed6b_1280x720.png 848w, https://substackcdn.com/image/fetch/$s_!x3dJ!,w_1272,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29009870-a663-4f04-aa92-3e724700ed6b_1280x720.png 1272w, https://substackcdn.com/image/fetch/$s_!x3dJ!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F29009870-a663-4f04-aa92-3e724700ed6b_1280x720.png 1456w" sizes="100vw" fetchpriority="high"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>S&#243; que a Anthropic &#233; americana, a lei ela &#233; europeia, e a aplica&#231;&#227;o foi global e sem bot&#227;ozinho para desabilitar.</p><p>Mas por motivos acad&#234;micos estou deixando aqui uma lista de reposit&#243;rios <em><strong>PARA ESTUDO</strong></em> para entender como fazer essa remo&#231;&#227;o.</p><p><strong>Guillaume Meyer / watermarks-remover</strong></p><ul><li><p>Link: <a href="https://github.com/guillaumemeyer/watermarks-remover">github.com/guillaumemeyer/watermarks-remover</a></p></li><li><p>Estrelas: ~19 mil</p></li><li><p>Stack: Python 3.10+ (stdlib, sem deps) + skill</p></li></ul><p><strong>blader / humanizer</strong></p><ul><li><p>Link: <a href="https://github.com/blader/humanizer">github.com/blader/humanizer</a></p></li><li><p>39,4 mil estrelas</p></li><li><p>Stack: Markdown (skill), multi-modelo</p></li></ul><p><strong>lynote-ai / humanize-text</strong></p><ul><li><p>Link: <a href="https://github.com/lynote-ai/humanize-text">github.com/lynote-ai/humanize-text</a></p></li><li><p>1,3 mil estrelas</p></li><li><p>Stack: IA/LLM (HTML/JS, multil&#237;ngue)</p></li></ul><p><strong>devswha / patina</strong></p><ul><li><p>Link: <a href="https://github.com/devswha/patina">github.com/devswha/patina</a></p></li><li><p>167 estrelas</p></li><li><p>Stack: Markdown em Coreano (en/ch/ja), skill</p></li></ul><p><strong>gonta223 / humanizer-ja</strong></p><ul><li><p>Link: <a href="https://github.com/gonta223/humanizer-ja">github.com/gonta223/humanizer-ja</a></p></li><li><p>88 estrelas</p></li><li><p>Stack: Markdown em Japon&#234;s</p></li></ul><p><strong>ilyautov / humanizer-ru</strong></p><ul><li><p>Link: <a href="https://github.com/ilyautov/humanizer-ru">github.com/ilyautov/humanizer-ru</a></p></li><li><p>86 estrelas</p></li><li><p>Vers&#227;o em Russo</p></li></ul><p><strong>MohamedAbdallah-14 / unslop</strong></p><ul><li><p>Link: <a href="https://github.com/MohamedAbdallah-14/unslop">github.com/MohamedAbdallah-14/unslop</a></p></li><li><p>58 estrelas</p></li><li><p>plugins de agente, markdown</p></li></ul><p></p><p>Esse conte&#250;do &#233; complemento desse v&#237;deo aqui:</p><div id="youtube2-l881Vh5IhiI" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;l881Vh5IhiI&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/l881Vh5IhiI?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://manodeyvin.com.br/subscribe?&quot;,&quot;text&quot;:&quot;Subscrever&quot;,&quot;language&quot;:&quot;pt&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">@manodeyvin is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Digite o seu e-mail..." tabindex="-1"><input type="submit" class="button primary" value="Subscrever"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[A PRECARIZAÇÃO CHEGOU...]]></title><description><![CDATA[Na China, programador tem prazo de validade. E o Brasil est&#225; mais perto disso do que voc&#234; imagina.]]></description><link>https://manodeyvin.com.br/p/a-precarizacao-chegou</link><guid isPermaLink="false">https://manodeyvin.com.br/p/a-precarizacao-chegou</guid><dc:creator><![CDATA[Mano Deyvin]]></dc:creator><pubDate>Mon, 31 Aug 2026 15:37:08 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/213562814/9cabb039b99e0d704676f45867e14bf4.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<blockquote><p>A bolha tech BR se parece muito mais com a bolha tech chinesa do que com a dos EUA. S&#243; que as redes sociais apodreceram tanto a cabe&#231;a da galera que ningu&#233;m percebe o quanto estamos perto de um per&#237;odo de precariza&#231;&#227;o.</p></blockquote><p></p>]]></content:encoded></item><item><title><![CDATA[VIBE CODING: O PROMPT QUE AUDITA SEU SAAS SOZINHO (V2)]]></title><description><![CDATA[funciona pra full vibe coding ou n&#227;o]]></description><link>https://manodeyvin.com.br/p/vibe-coding-o-prompt-que-audita-seu</link><guid isPermaLink="false">https://manodeyvin.com.br/p/vibe-coding-o-prompt-que-audita-seu</guid><dc:creator><![CDATA[Mano Deyvin]]></dc:creator><pubDate>Fri, 28 Aug 2026 19:01:42 GMT</pubDate><enclosure url="https://substack-post-media.s3.amazonaws.com/public/images/77506bf4-3280-4c17-b894-ca8870ed24a6_1280x720.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Salve rapazeada, h&#225; uns dias atr&#225;s eu gravei esse v&#237;deo:</p><div id="youtube2-6DJFl-g83dM" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;6DJFl-g83dM&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/6DJFl-g83dM?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><blockquote><p>Eu falo das falhas de seguran&#231;as mais comum nos SaaS, v&#237;deo bateu mais de 100 mil views em pouco tempo e gerou uma repercuss&#227;o boa.</p></blockquote><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://manodeyvin.com.br/subscribe?&quot;,&quot;text&quot;:&quot;Subscrever&quot;,&quot;language&quot;:&quot;pt&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">@manodeyvin is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Digite o seu e-mail..." tabindex="-1"><input type="submit" class="button primary" value="Subscrever"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p>Da&#237; um dos inscritos me deu um feedback sobre os resultados e o que poderia ser melhorado no PROMPT, da&#237; resolvi fazer a V2 e pra garantir que ele funciona em qualquer projeto, eu busquei 4 SaaS aleat&#243;rios com tecnologias diferentes e executei o prompt, t&#225; documentado nesse v&#237;deo aqui:</p><div id="youtube2-mjSOFCDV_wA" class="youtube-wrap" data-attrs="{&quot;videoId&quot;:&quot;mjSOFCDV_wA&quot;,&quot;startTime&quot;:null,&quot;endTime&quot;:null}" data-component-name="Youtube2ToDOM"><div class="youtube-inner"><iframe src="https://www.youtube-nocookie.com/embed/mjSOFCDV_wA?rel=0&amp;autoplay=0&amp;showinfo=0&amp;enablejsapi=0" frameborder="0" loading="lazy" gesture="media" allow="autoplay; fullscreen" allowautoplay="true" allowfullscreen="true" width="728" height="409"></iframe></div></div><p></p><h2><strong>&#129302; O prompt (copia e cola no Claude Code, Cursor, OpenCode, no que voc&#234; usar)</strong></h2><p>Abre o teu agente <strong>na raiz do projeto</strong> e cola isso inteiro:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;markdown&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-markdown">Revisa este c&#243;digo atr&#225;s de cinco falhas de seguran&#231;a. Antes de come&#231;ar, detecte a stack do projeto (linguagem, framework, ORM/query builder, mecanismo de auth, frontend, arquivos de deploy como Docker/CI/Helm/Terraform) e adapte cada categoria ao equivalente dessa stack:

1. BANCO SEM TRANCA (isolamento de inquilino/dono) &#8212; em Supabase &#233; RLS ausente; em APIs pr&#243;prias s&#227;o queries de listagem/busca/agrega&#231;&#227;o/relat&#243;rio/exporta&#231;&#227;o que n&#227;o filtram pelo usu&#225;rio autenticado ou pela organiza&#231;&#227;o/workspace/tenant ao qual ele pertence. Identifique primeiro QUAL &#233; o mecanismo de isolamento do projeto (RLS, middleware de tenant, filtro manual por user_id, etc.) e aponte onde ele est&#225; ausente ou furado.

2. PERMISS&#195;O DEFINIDA NO NAVEGADOR &#8212; opera&#231;&#245;es privilegiadas (admin, configura&#231;&#245;es, gest&#227;o de usu&#225;rios, a&#231;&#245;es de escrita) em que o frontend esconde a UI por papel (isAdmin, canEdit, role...) mas o servidor N&#195;O faz a verifica&#231;&#227;o equivalente. Cruze cada gate de papel do frontend com o endpoint correspondente e confirme se o backend valida o privil&#233;gio em toda rota sens&#237;vel.

3. IDOR &#8212; rotas que buscam, alteram ou deletam um objeto por ID (path, query ou body) sem verificar se o objeto pertence ao usu&#225;rio/tenant do chamador. Percorra sistematicamente TODOS os handlers de rota do backend, n&#227;o amostras.

4. CHAVES EXPOSTAS (hardcode) &#8212; API keys, tokens, senhas, segredos de assinatura (JWT, webhooks), chaves privadas e credenciais padr&#227;o embutidos no c&#243;digo-fonte, configs, docker-compose, charts, CI, scripts e documenta&#231;&#227;o. Aten&#231;&#227;o especial a defaults p&#250;blicos que viram segredo real se n&#227;o forem sobrescritos (ex: ${VAR:-valor-default}) e &#224; aus&#234;ncia de valida&#231;&#227;o de startup que rejeite esses defaults. Verifique tamb&#233;m o hist&#243;rico git por segredos commitados e o bundle do frontend por chaves embutidas.

5. INPUTS SEM TRATAMENTO (XSS) &#8212; no frontend: innerHTML/dangerouslySetInnerHTML/equivalentes do framework (v-html, [innerHTML], dangerouslySet...), renderiza&#231;&#227;o de markdown/HTML sem sanitiza&#231;&#227;o, URLs controladas por usu&#225;rio em href/src (javascript:), eval/new Function. No backend: input do usu&#225;rio entrando em HTML de e-mails, templates ou respostas sem escape. Verifique se existe lib de sanitiza&#231;&#227;o no projeto e se ela &#233; aplicada nos pontos encontrados.

REGRAS DA AUDITORIA:
- Reporte apenas achados verificados no c&#243;digo real. Nada de especula&#231;&#227;o. Para cada achado: caminho do arquivo, n&#250;mero(s) exato(s) da linha, trecho do c&#243;digo, por que &#233; explor&#225;vel e severidade (cr&#237;tica/alta/m&#233;dia/baixa/informativa).
- Liste arquivo por arquivo, linha por linha.
- Registre tamb&#233;m o que foi verificado e est&#225; CORRETO (ex: "router X valida posse em todos os handlers") &#8212; isso vira a se&#231;&#227;o de pontos fortes e prova a cobertura da auditoria.
- Quando a categoria n&#227;o se aplicar &#224; stack (ex: projeto sem frontend), diga isso explicitamente em vez de for&#231;ar achados.
- Note condi&#231;&#245;es de explorabilidade (feature flags, config insegura necess&#225;ria, etc.).

DEPOIS DA AUDITORIA, gere um RELAT&#211;RIO EM PDF, visualmente amig&#225;vel, em pt-BR, salvo em docs/security-audit/relatorio-auditoria-seguranca.pdf, contendo:

a) Capa: t&#237;tulo "Relat&#243;rio de Auditoria de Seguran&#231;a &#8212; &lt;nome do projeto&gt;", data, escopo auditado e nota metodol&#243;gica (como cada categoria foi mapeada para a stack detectada).
b) Resumo executivo: total de achados por severidade, gr&#225;fico de rosca por severidade e gr&#225;fico de barras por categoria. Paleta: cr&#237;tica #B91C1C, alta #EA580C, m&#233;dia #D97706, baixa #2563EB, ponto forte #059669.
c) Pontos fortes (o que est&#225; protegido, com evid&#234;ncia) e pontos fracos (os riscos centrais).
d) Tabela de achados detalhados por categoria: Severidade | Arquivo:linha | Descri&#231;&#227;o, com chip de severidade colorido.
e) Recomenda&#231;&#245;es priorizadas (P1, P2, P3...).
f) AO FINAL DO PDF, uma se&#231;&#227;o "ISSUES PARA O GITHUB": para cada achado acion&#225;vel, o texto COMPLETO de uma issue em Markdown, pronto para copiar e colar, dentro de um bloco delimitado (ex: entre --- ISSUE n --- e --- FIM ISSUE n ---). Cada issue deve conter:
- T&#237;tulo no formato "[Seguran&#231;a] &lt;descri&#231;&#227;o curta da falha&gt;"
- Labels sugeridas: security + severidade
- Descri&#231;&#227;o do problema e por que &#233; explor&#225;vel
- Evid&#234;ncia: arquivo:linha com trecho de c&#243;digo
- Impacto
- Sugest&#227;o de corre&#231;&#227;o
- Crit&#233;rios de aceite (checklist verific&#225;vel)
Agrupe achados triviais relacionados numa issue &#250;nica quando fizer sentido (ex: v&#225;rios defaults de segredo no mesmo tema), para n&#227;o gerar spam de issues.

GERA&#199;&#195;O DO PDF &#8212; REGRAS T&#201;CNICAS:
- N&#227;o instale nada globalmente. Use ambiente isolado (venv Python com reportlab+matplotlib, ou ferramenta equivalente da stack local; se houver navegador headless/wkhtmltopdf/pandoc dispon&#237;vel, HTML&#8594;PDF tamb&#233;m vale).
- Deixe o script gerador em docs/security-audit/ para regerar o relat&#243;rio depois.
- Verifique o PDF gerado: n&#250;mero de p&#225;ginas, renderiza&#231;&#227;o dos gr&#225;ficos e legibilidade das tabelas (rasterize as p&#225;ginas se poss&#237;vel). Corrija defeitos visuais antes de entregar.
- P&#225;ginas A4, margens ~2cm, cabe&#231;alho/rodap&#233; com nome do relat&#243;rio e n&#250;mero de p&#225;gina.

Me entregue ao final: o relat&#243;rio em PDF, a lista de achados no chat (arquivo por arquivo, linha por linha) e o caminho de todos os arquivos gerados.</code></pre></div><p></p><h2><strong>&#129504; O que tem de novo na vers&#227;o desse prompt?</strong></h2><p><strong>1&#65039;&#8419; Ele detecta a stack antes de procurar.</strong> </p><p>&#8220;RLS desligado&#8221; s&#243; existe em Supabase. Se o teu projeto &#233; Rails, Laravel, Next ele faz um filtro manual por <code>user_id</code>, middleware de tenant, scope no ORM. </p><p><strong>2&#65039;&#8419; An&#225;lise linha por linha</strong></p><p>Ele acha a falha e aponta exatamente a linha que est&#225; com problema, por exemplo:</p><blockquote><p>&#8220;<code>routes/orders.ts:42</code> busca por ID sem checar o dono&#8221;</p></blockquote><p>A vers&#227;o anterior ele dizia apenas:</p><blockquote><p>&#8220;Voc&#234; tem problema de IDOR&#8221;</p></blockquote><p></p><p><strong>3&#65039;&#8419; Ele vasculha o hist&#243;rico do Git.</strong> </p><p>O prompt anterior o foco era a codebase, essa vers&#227;o ele vasculha todo seu hist&#243;rico do git em busca de alguns vacilos como por exemplo uma chave que vc commitou e apagou, mas continua no hist&#243;rico</p><p></p><p><strong>4&#65039;&#8419; Ele registra tamb&#233;m o que t&#225; CERTO.</strong> </p><p>Pra n&#227;o bater a s&#237;ndrome do impostor achando que tudo que vc faz t&#225; errado, eu adicionei nele uma sess&#227;o que lista o que t&#225; certo na sua condebase.</p><p></p><p>E pra fechar, ele gera um PDF lind&#227;o com todas as issues escritas em markdown, que voc&#234; pode usar pra abrir uma issue no github ou ent&#227;o jogar no peito do seu agente.</p><p></p><h2><strong>&#127919; Os 4 projetos que eu rodei</strong></h2><p>Achei os quatro em posts do <a href="https://www.reddit.com/r/brdev/">r/brdev</a> </p><p><strong>1&#65039;&#8419; Curi&#243;</strong> - app de notas, tarefas e lembretes em Flutter.<br>&#128279; <a href="https://reddit.com/r/brdev/comments/1uh8ddx/">post no r/brdev</a> &#183; <code>homi-lindo/curio</code> <em>(GPL-3.0)</em></p><p><strong>2&#65039;&#8419; Cofre Investimentos</strong> - carteira, c&#225;lculo de imposto de renda com importa&#231;&#227;o do CSV da B3. <br>&#128279; <a href="https://reddit.com/r/brdev/comments/1u4wu63/">post no r/brdev</a> &#183; <code>claudiorico/gestao-de-ativos-ai</code> <em>(MIT)</em> &#183; <a href="https://cofreinvestimentos.com.br/">app no ar</a></p><p><strong>3&#65039;&#8419; Login com WhatsApp</strong> - um &#8220;entra com o WhatsApp&#8221; que voc&#234; sobe na tua pr&#243;pria infra, em Docker, sem depender de Twilio nem de ningu&#233;m.<br>&#128279; <a href="https://reddit.com/r/brdev/comments/1p6qgza/">post no r/brdev</a> &#183; <code>caiopizzol/whatsapp-web-api</code> <em>(MIT)</em></p><p><strong>4&#65039;&#8419; OpenBSP</strong> - o chef&#227;o, mais de 550 estrelas, roda em produ&#231;&#227;o, atende cliente por WhatsApp e Instagram ligado direto na API da Meta.<br>&#128279; <a href="https://reddit.com/r/brdev/comments/1so0lve/">post no r/brdev</a> &#183; <code>matiasbattocchia/open-bsp-api</code> &#183; <code>open-bsp-ui</code> <em>(Unlicense)</em></p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://manodeyvin.com.br/subscribe?&quot;,&quot;text&quot;:&quot;Subscreva agora&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://manodeyvin.com.br/subscribe?"><span>Subscreva agora</span></a></p><p></p><h2><strong>&#9989; EXTRA: O checklist antes de voc&#234; fazer o deploy</strong></h2><ul><li><p>Rodei o prompt e li o PDF inteiro, n&#227;o s&#243; o resumo executivo</p></li></ul><ul><li><p>Todo endpoint que recebe um ID <strong>valida o dono</strong> antes de responder</p></li><li><p>Toda listagem/busca/exporta&#231;&#227;o <strong>filtra pelo usu&#225;rio ou tenant</strong> logado</p></li><li><p>Toda permiss&#227;o que o frontend esconde, o <strong>servidor confere de novo</strong></p></li><li><p>Nenhum segredo no c&#243;digo, no bundle do front, no <code>docker-compose</code> ou no CI</p></li><li><p>Rodei a busca <strong>no hist&#243;rico do Git</strong> e revoguei o que apareceu, n&#227;o s&#243; apaguei</p></li><li><p>Todo input do usu&#225;rio &#233; validado e sanitizado antes de virar HTML</p></li><li><p>Se &#233; Supabase: <strong>RLS ligado em toda tabela</strong> e <code>service_role</code> fora do frontend</p></li><li><p>Os achados viraram issue (endurecimento) ou advisory privado (explor&#225;vel)</p><p></p></li></ul><p>&#128225; E se voc&#234; quer acompanhar a bolha de tecnologia sem romantiza&#231;&#227;o e sem papinho de vendedor de curso <a href="https://www.youtube.com/channel/UC1VZDEtGNxfQzh7EYcD2frg/join">cola na live, </a><strong><a href="https://www.youtube.com/channel/UC1VZDEtGNxfQzh7EYcD2frg/join">quarta, 10 da manh&#227;</a></strong>.</p><p></p><p>Tmj, forte abra&#231;o,<br><strong>Mano Deyvin</strong> &#129305;</p><p></p><p class="button-wrapper" data-attrs="{&quot;url&quot;:&quot;https://manodeyvin.com.br/?utm_source=substack&utm_medium=email&utm_content=share&action=share&quot;,&quot;text&quot;:&quot;Partilhar @manodeyvin&quot;,&quot;action&quot;:null,&quot;class&quot;:null}" data-component-name="ButtonCreateButton"><a class="button primary" href="https://manodeyvin.com.br/?utm_source=substack&utm_medium=email&utm_content=share&action=share"><span>Partilhar @manodeyvin</span></a></p><p></p>]]></content:encoded></item><item><title><![CDATA[🚨 A BOLHA DEV SE ODEIA NO X ]]></title><description><![CDATA[Mano Rage Show EP263]]></description><link>https://manodeyvin.com.br/p/a-bolha-dev-se-odeia-no-x</link><guid isPermaLink="false">https://manodeyvin.com.br/p/a-bolha-dev-se-odeia-no-x</guid><dc:creator><![CDATA[Mano Deyvin]]></dc:creator><pubDate>Wed, 26 Aug 2026 18:32:06 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/212891611/be8004f6a50f9e56fe566703d009046f.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p><span>Isso aqui &#233; fofoca. Cheque sempre as fontes. N&#227;o acredite em youtubers.<br>Seja membro: https://www.youtube.com/channel/UC1VZDEtGNxfQzh7EYcD2frg/join<br></span></p><p><span>&#128640; PARCEIROS<br><br>CONTA DEV: https://links.chorume.dev/contadev-ig<br>FULL CYCLE: https://fcycle.co/26-8-lv-md-mba-ia<br>SOLYD: https://solyd.link/deyvin<br></span></p>]]></content:encoded></item><item><title><![CDATA[🚨 TODO MUNDO ODEIA A BOLHA DEV | Mano Rage Show #261]]></title><description><![CDATA[Mano Rage Show EP261]]></description><link>https://manodeyvin.com.br/p/todo-mundo-odeia-a-bolha-dev-mano</link><guid isPermaLink="false">https://manodeyvin.com.br/p/todo-mundo-odeia-a-bolha-dev-mano</guid><dc:creator><![CDATA[Mano Deyvin]]></dc:creator><pubDate>Thu, 13 Aug 2026 13:03:32 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/210960034/262ecb66109a7550ded7646cf8cd8dcb.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p><a href="https://youtube.com/live/mHkzepv5eQk?feature=share">Para visualizar o chat da live e os coment&#225;rios clique aqui</a></p><p></p><p><span>&#128640; PATROCINADORES</span></p><ul><li><p><span>CONTA DEV: https://links.chorume.dev/contadev-ig</span></p></li><li><p><span>APP MAX: https://links.chorume.dev/appmax</span></p></li><li><p><span>FULL CYCLE: https://fcycle.co/22-06-lv-mba-ia</span></p></li><li><p><span>CONTA DEV: https://links.chorume.dev/contadev-ig</span></p></li><li><p><span>FIND MY SAAS: https://find-my-saas.com/</span></p></li><li><p><span>CADEIRA ELEMENTS: https://links.chorume.dev/elements (CUPOM: MANO)</span></p></li></ul><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://manodeyvin.com.br/subscribe?&quot;,&quot;text&quot;:&quot;Subscrever&quot;,&quot;language&quot;:&quot;pt&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">@manodeyvin is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Digite o seu e-mail..." tabindex="-1"><input type="submit" class="button primary" value="Subscrever"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[TRANQUILISMO + GUANABARA NO FLOW | Mano Rage Show #260]]></title><description><![CDATA[Mano Rage Show EP260]]></description><link>https://manodeyvin.com.br/p/tranquilismo-guanabara-no-flow-mano</link><guid isPermaLink="false">https://manodeyvin.com.br/p/tranquilismo-guanabara-no-flow-mano</guid><dc:creator><![CDATA[Mano Deyvin]]></dc:creator><pubDate>Wed, 12 Aug 2026 21:22:17 GMT</pubDate><enclosure url="https://api.substack.com/feed/podcast/210959083/50f1af446986861b5d55f8dbf2a93ca8.mp3" length="0" type="audio/mpeg"/><content:encoded><![CDATA[<p><span>&#128640; PATROCINADORES</span></p><ul><li><p><span>CONTA DEV: https://links.chorume.dev/contadev-ig</span></p></li><li><p><span>APP MAX: https://links.chorume.dev/appmax</span></p></li><li><p><span>FULL CYCLE: https://fcycle.co/22-06-lv-mba-ia</span></p></li><li><p><span>CONTA DEV: https://links.chorume.dev/contadev-ig</span></p></li><li><p><span>FIND MY SAAS: https://find-my-saas.com/</span></p></li><li><p><span>CADEIRA ELEMENTS: https://links.chorume.dev/elements (CUPOM: MANO)</span></p></li></ul><p></p><div class="subscription-widget-wrap-editor" data-attrs="{&quot;url&quot;:&quot;https://manodeyvin.com.br/subscribe?&quot;,&quot;text&quot;:&quot;Subscrever&quot;,&quot;language&quot;:&quot;pt&quot;}" data-component-name="SubscribeWidgetToDOM"><div class="subscription-widget show-subscribe"><div class="preamble"><p class="cta-caption">@manodeyvin is a reader-supported publication. To receive new posts and support my work, consider becoming a free or paid subscriber.</p></div><form class="subscription-widget-subscribe"><input type="email" class="email-input" name="email" placeholder="Digite o seu e-mail..." tabindex="-1"><input type="submit" class="button primary" value="Subscrever"><div class="fake-input-wrapper"><div class="fake-input"></div><div class="fake-button"></div></div></form></div></div><p></p>]]></content:encoded></item><item><title><![CDATA[5 vacilações de segurança que a IA deixa no teu código.]]></title><description><![CDATA[Essa &#233; a lista &#233; o que eu vejo quebrar na pr&#225;tica com o fix de cada uma.]]></description><link>https://manodeyvin.com.br/p/5-vacilacoes-de-seguranca-que-a-ia</link><guid isPermaLink="false">https://manodeyvin.com.br/p/5-vacilacoes-de-seguranca-que-a-ia</guid><dc:creator><![CDATA[Mano Deyvin]]></dc:creator><pubDate>Mon, 10 Aug 2026 21:01:14 GMT</pubDate><enclosure url="https://substackcdn.com/image/fetch/$s_!bsVU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c03c436-9d2f-4492-a8b1-717aa01682c8_700x700.gif" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p><em>Esse aqui &#233; um complemento do v&#237;deo &#128073; <a href="https://youtu.be/6DJFl-g83dM">SEU SAAS FEITO COM IA VAI SER HACKEADO EM 10 MINUTOS</a>. </em></p><p>Meu jogador, primeiro vou te falar das 5 vacila&#231;&#245;es e depois vou te mostrar quais ferramentas open source vc vai usar para resolver isso.</p><p></p><h2>&#128680; Os 5 problemas comuns </h2><h4><strong>1 -  RLS desligado no Supabase/Firebase</strong></h4><p>RLS desligado no Supabase/Firebase da&#237; qualquer um com conhecimento b&#225;sico leva seus dados pelo terminal do chrome.</p><h4>2 - <strong>Regra de neg&#243;cio no frontend (admin)</strong> </h4><p>Basicamenteo deixar toda responsabilidade de valida&#231;&#227;o de qualquer coisa do lado do frontend, e o pior decidir que &#233; admin ou n&#227;o atrav&#233;s de um <code>Ifzinho</code> num menu (sidebar).</p><h4>3 - <strong>Fetch de dados no backend sem Auth</strong></h4><p>Quando voc&#234; chama uma rota de um backend ele devolve os dados sem validar se o usu&#225;rio (autenticado por bearer token) que est&#225; pedindo tem permiss&#227;o para ver aquele dado.</p><h4>4 - <strong>Chave Secreta exposta</strong></h4><p><em>O que &#233;:</em> API key / <code>.env</code> no bundle do front ou no reposit&#243;rio Git p&#250;blico.</p><h4>5 - <strong>Confiar em tudo que digitam</strong></h4><p><em>O que &#233;:</em> input sem tratar &#8594; XSS, upload de qualquer arquivo, sem rate limit.</p><div><hr></div><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!bsVU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c03c436-9d2f-4492-a8b1-717aa01682c8_700x700.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!bsVU!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c03c436-9d2f-4492-a8b1-717aa01682c8_700x700.gif 424w, https://substackcdn.com/image/fetch/$s_!bsVU!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c03c436-9d2f-4492-a8b1-717aa01682c8_700x700.gif 848w, https://substackcdn.com/image/fetch/$s_!bsVU!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c03c436-9d2f-4492-a8b1-717aa01682c8_700x700.gif 1272w, https://substackcdn.com/image/fetch/$s_!bsVU!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c03c436-9d2f-4492-a8b1-717aa01682c8_700x700.gif 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!bsVU!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c03c436-9d2f-4492-a8b1-717aa01682c8_700x700.gif" width="700" height="700" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/0c03c436-9d2f-4492-a8b1-717aa01682c8_700x700.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:700,&quot;width&quot;:700,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:&quot;&quot;,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" title="" srcset="https://substackcdn.com/image/fetch/$s_!bsVU!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c03c436-9d2f-4492-a8b1-717aa01682c8_700x700.gif 424w, https://substackcdn.com/image/fetch/$s_!bsVU!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c03c436-9d2f-4492-a8b1-717aa01682c8_700x700.gif 848w, https://substackcdn.com/image/fetch/$s_!bsVU!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c03c436-9d2f-4492-a8b1-717aa01682c8_700x700.gif 1272w, https://substackcdn.com/image/fetch/$s_!bsVU!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0c03c436-9d2f-4492-a8b1-717aa01682c8_700x700.gif 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Antes que vc se sinta burro calma&#8230;</p><ul><li><p>&#129514; A galera da <a href="https://www.symbioticsec.ai/blog/we-scanned-1-072-vibe-coded-apps-98-had-security-flaws">Symbiotic Security escaneou </a><strong><a href="https://www.symbioticsec.ai/blog/we-scanned-1-072-vibe-coded-apps-98-had-security-flaws">1.072 apps vibe-coded</a></strong>. <strong>98% tinham pelo menos uma falha.</strong> S&#243; <strong>26 dos 1072</strong> passaram limpos. </p></li></ul><ul><li><p>&#128201; A <a href="https://getautonoma.com/blog/vibe-coding-security-risks">Veracode achou falha do OWASP Top 10 em </a><strong><a href="https://getautonoma.com/blog/vibe-coding-security-risks">45% do c&#243;digo gerado por IA</a></strong>, e um <a href="https://www.nowsecure.com/blog/2026/05/19/what-owasp-vulnerabilities-in-ai-generated-code-mean-for-mobile-app-security/">estudo de Stanford mediu que dev usando IA produz ~</a><strong><a href="https://www.nowsecure.com/blog/2026/05/19/what-owasp-vulnerabilities-in-ai-generated-code-mean-for-mobile-app-security/">40% mais</a></strong><a href="https://www.nowsecure.com/blog/2026/05/19/what-owasp-vulnerabilities-in-ai-generated-code-mean-for-mobile-app-security/"> vulnerabilidade</a> e n&#227;o porque a IA seja burra, mas porque o dev <strong>confia e n&#227;o revisa</strong> e/ou acreditou naquele papo de ser prompt engineer sem saber fundamentos era suficiente.</p></li></ul><p></p><h2>&#128736;&#65039; As 4 ferramentas pra voc&#234; resolver (+ b&#244;nus)</h2><h4>1 - OWASP ZAP: escaneia o app <em>no ar</em></h4><p>Repo: <a href="https://github.com/zaproxy/zaproxy">https://github.com/zaproxy/zaproxy</a></p><p>&#201; da <strong><a href="https://www.zaproxy.org/">OWASP Foundation</a></strong>, ONG, sem dono comercial. </p><p>Das quatro, &#233; a &#250;nica &#8220;comunidade pura&#8221; de verdade. Voc&#234; aponta pra URL da sua aplica&#231;&#227;o e ela sai batendo em tudo procurando porta aberta.</p><p>&#9989; Baixa ela em <strong><a href="https://www.zaproxy.org/">zaproxy.org</a></strong>.</p><p>&#9989; D&#225; pra integrar com o <strong>Claude Code / OpenCode</strong>.</p><h4>2 - Gitleaks: ca&#231;adora de API-KEY vazado</h4><p>Repo: <a href="https://github.com/gitleaks/gitleaks">https://github.com/gitleaks/gitleaks</a></p><p>MIT, comunidade. Acha <strong>chave e senha</strong> no seu c&#243;digo <strong>e no hist&#243;rico do Git</strong> inclusive naquele commit que voc&#234; apagou e achou que tinha sumido (n&#227;o sumiu).</p><pre><code><code># instala (mac)
brew install gitleaks

# roda na raiz do projeto
gitleaks detect --source . -v
</code></code></pre><p>&#9989; Apareceu chave? Considere ela <strong>vazada</strong>. J&#225; revoga e gera outra.</p><h4>3 -  Bandit: Se o teu SaaS &#233; Python</h4><p>Repo: <a href="https://github.com/pycqa/bandit">https://github.com/pycqa/bandit</a></p><p>Do <strong><a href="https://github.com/PyCQA/bandit">PyCQA</a></strong>, a comunidade do Python. Acha os padr&#245;es perigosos: input sem tratar, senha hardcoded, fun&#231;&#227;o insegura.</p><pre><code><code>pip install bandit
bandit -r ./seu_projeto
</code></code></pre><h4>4 - Opengrep: motor de an&#225;lise est&#225;tica de c&#243;digo (SAST)</h4><p>Repo: <a href="https://github.com/opengrep/opengrep">https://github.com/opengrep/opengrep</a></p><p>Esse &#233; o fork da Semgrep que falei anteriormente, tocado por um cons&#243;rcio justamente pra n&#227;o ter dono. </p><p>Roda regra em cima do c&#243;digo procurando SQLi, XSS, segredo.</p><div><hr></div><h2>&#129519; C&#243;digo illuminatti pra executar agora&#8230;</h2><blockquote><p><em><strong>Supabase + Vibecoding == vazamento em massa</strong></em></p></blockquote><p>Ferramenta tipo <strong>Supabase e Firebase</strong> funciona diferente do que voc&#234; t&#225; acostumado: o banco fala <strong>direto com o navegador do cliente</strong>, sem servidor no meio filtrando nada. Pra travar isso tem uma parada que se chama <strong>RLS</strong> (Row Level Security) &#233; a regra onde diz que &#8220;esse usu&#225;rio s&#243; v&#234; os dados <strong>dele</strong>&#8220;.</p><p>O grande problema &#233;: <strong>ela vem desligada.</strong> </p><p>Pra <strong>cada</strong> tabela do teu banco, faz o seguinte:</p><pre><code><code>ALTER TABLE public.sua_tabela ENABLE ROW LEVEL SECURITY;
</code></code></pre><p>S&#243; isso j&#225; fecha a porta pra quem n&#227;o t&#225; logado. </p><p>Depois voc&#234; configura as <strong>policies</strong>.</p><blockquote><p>&#128308; <strong>A chave </strong><code>service_role</code><strong> NUNCA vai pro frontend.</strong> Ela pula todo o RLS, &#233; a chave mestra. No navegador s&#243; a <code>anon</code>.</p></blockquote><p><strong><a href="https://www.wiz.io/blog/common-security-risks-in-vibe-coded-apps">CVE-2025-48757</a></strong><a href="https://www.wiz.io/blog/common-security-risks-in-vibe-coded-apps"> vazou dado de mais de </a><strong><a href="https://www.wiz.io/blog/common-security-risks-in-vibe-coded-apps">170 aplicativos</a></strong><a href="https://www.wiz.io/blog/common-security-risks-in-vibe-coded-apps"> de uma vez</a>. </p><p>1 linha de SQL resolvia toda essa parada.</p><div><hr></div><h2>&#128273; E a chave de API paiz&#227;o? </h2><p>Esse &#233; o vacilo 4. Pra gente ficar na mesma p&#225;gina:</p><p>Toda integra&#231;&#227;o te d&#225; uma chave (gateway, e-mail, a pr&#243;pria API de IA). E tem uma parada que muito vibe coder n&#227;o sabe: <strong>quando voc&#234; faz o build do frontend, toda vari&#225;vel vira JavaScript que qualquer um l&#234;</strong> abrindo o &#8220;inspecionar&#8221;. </p><p>Voc&#234; acha que escondeu. Mas t&#225; l&#225; exposto bonitinho pra qualquer um ver.</p><p>E n&#227;o &#233; exagero n&#227;o: s&#243; em <strong>2024</strong> vazaram <strong><a href="https://blog.gitguardian.com/stop-leaking-api-keys-the-backend-for-frontend-bff-pattern-explained/">24 milh&#245;es de segredos</a></strong><a href="https://blog.gitguardian.com/stop-leaking-api-keys-the-backend-for-frontend-bff-pattern-explained/"> no GitHub</a>, e o tempo m&#233;dio pra um bot colher uma chave exposta &#233; de <strong>poucos minutos</strong> depois do commit. </p><p></p><p style="text-align: center;">&#8220;Ahh mas mas ser&#225; que eu sou t&#227;o importante assim??&#8221;</p><div class="captioned-image-container"><figure><a class="image-link image2 is-viewable-img" target="_blank" href="https://substackcdn.com/image/fetch/$s_!tSZW!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F538631ba-5bc6-473a-9f30-ba50b1925b0c_480x346.gif" data-component-name="Image2ToDOM"><div class="image2-inset"><picture><source type="image/webp" srcset="https://substackcdn.com/image/fetch/$s_!tSZW!,w_424,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F538631ba-5bc6-473a-9f30-ba50b1925b0c_480x346.gif 424w, https://substackcdn.com/image/fetch/$s_!tSZW!,w_848,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F538631ba-5bc6-473a-9f30-ba50b1925b0c_480x346.gif 848w, https://substackcdn.com/image/fetch/$s_!tSZW!,w_1272,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F538631ba-5bc6-473a-9f30-ba50b1925b0c_480x346.gif 1272w, https://substackcdn.com/image/fetch/$s_!tSZW!,w_1456,c_limit,f_webp,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F538631ba-5bc6-473a-9f30-ba50b1925b0c_480x346.gif 1456w" sizes="auto, 100vw"><img src="https://substackcdn.com/image/fetch/$s_!tSZW!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F538631ba-5bc6-473a-9f30-ba50b1925b0c_480x346.gif" width="480" height="346" data-attrs="{&quot;src&quot;:&quot;https://substack-post-media.s3.amazonaws.com/public/images/538631ba-5bc6-473a-9f30-ba50b1925b0c_480x346.gif&quot;,&quot;srcNoWatermark&quot;:null,&quot;fullscreen&quot;:null,&quot;imageSize&quot;:null,&quot;height&quot;:346,&quot;width&quot;:480,&quot;resizeWidth&quot;:null,&quot;bytes&quot;:null,&quot;alt&quot;:null,&quot;title&quot;:null,&quot;type&quot;:null,&quot;href&quot;:null,&quot;belowTheFold&quot;:true,&quot;topImage&quot;:false,&quot;internalRedirect&quot;:null,&quot;isProcessing&quot;:false,&quot;align&quot;:null,&quot;offset&quot;:false}" class="sizing-normal" alt="" srcset="https://substackcdn.com/image/fetch/$s_!tSZW!,w_424,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F538631ba-5bc6-473a-9f30-ba50b1925b0c_480x346.gif 424w, https://substackcdn.com/image/fetch/$s_!tSZW!,w_848,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F538631ba-5bc6-473a-9f30-ba50b1925b0c_480x346.gif 848w, https://substackcdn.com/image/fetch/$s_!tSZW!,w_1272,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F538631ba-5bc6-473a-9f30-ba50b1925b0c_480x346.gif 1272w, https://substackcdn.com/image/fetch/$s_!tSZW!,w_1456,c_limit,f_auto,q_auto:good,fl_lossy/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F538631ba-5bc6-473a-9f30-ba50b1925b0c_480x346.gif 1456w" sizes="auto, 100vw" loading="lazy"></picture><div class="image-link-expand"><div class="pencraft pc-display-flex pc-gap-8 pc-reset"><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container restack-image buttonBase-GK1x3M"><svg aria-hidden="true" width="20" height="20" viewBox="0 0 20 20" fill="none" stroke-width="1.5" stroke="var(--color-fg-primary)" stroke-linecap="round" stroke-linejoin="round" xmlns="http://www.w3.org/2000/svg" class="icon-noB79L"><g><path d="M2.53001 7.81595C3.49179 4.73911 6.43281 2.5 9.91173 2.5C13.1684 2.5 15.9537 4.46214 17.0852 7.23684L17.6179 8.67647M17.6179 8.67647L18.5002 4.26471M17.6179 8.67647L13.6473 6.91176M17.4995 12.1841C16.5378 15.2609 13.5967 17.5 10.1178 17.5C6.86118 17.5 4.07589 15.5379 2.94432 12.7632L2.41165 11.3235M2.41165 11.3235L1.5293 15.7353M2.41165 11.3235L6.38224 13.0882"></path></g></svg></button><button tabindex="0" type="button" class="pencraft pc-reset pencraft icon-container view-image buttonBase-GK1x3M"><svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-maximize2 lucide-maximize-2 icon-noB79L"><polyline points="15 3 21 3 21 9"></polyline><polyline points="9 21 3 21 3 15"></polyline><line x1="21" x2="14" y1="3" y2="10"></line><line x1="3" x2="10" y1="21" y2="14"></line></svg></button></div></div></div></a></figure></div><p>Calma&#8230; segura sua s&#237;ndrome do protagonista&#8230; n&#227;o &#233; nenhum hacker que est&#225; te monitorando &#233; <strong>bot arrendo o GitHub inteiro</strong>, 24h por dia.</p><p>O padr&#227;o pra resolver chama <strong>BFF</strong> (<em>Backend for Frontend</em>): o front nunca fala com a API de terceiro, ele fala com <strong>um endpoint teu</strong>, e o teu servidor que ningu&#233;m abre no inspecionar guarda a chave. </p><p>T&#225; explicado direitinho <a href="https://blog.gitguardian.com/stop-leaking-api-keys-the-backend-for-frontend-bff-pattern-explained/">no post do GitGuardian</a>.</p><p>E o <code>.env</code> no <code>.gitignore </code>antes do primeiro commit e n&#227;o depois. (eu sei que isso &#233; b&#225;sico, mas &#233; bom avisar).</p><div><hr></div><h2>&#129302; O prompt da auditoria illuminati [copia e cola no Claude Code / Cursor]</h2><p>Se voc&#234; leu tudo e ficou com pregui&#231;a e n&#227;o quer instalar nada agora, calma.</p><p>Copia isso aqui e joga no peito do teu agente:</p><div class="highlighted_code_block" data-attrs="{&quot;language&quot;:&quot;markdown&quot;,&quot;nodeId&quot;:null}" data-component-name="HighlightedCodeBlockToDOM"><pre class="shiki"><code class="language-markdown">Revisa este c&#243;digo atr&#225;s das 5 falhas mais comuns 
em app gerado por IA: (1) tabelas de Supabase/Firebase sem RLS; 
(2) autoriza&#231;&#227;o decidida no frontend em vez do servidor; 
(3) rotas que buscam por ID sem checar o dono (IDOR); 
(4) segredos/API keys expostos no c&#243;digo ou no bundle; 
(5) input do usu&#225;rio sem valida&#231;&#227;o/sanitiza&#231;&#227;o e upload sem checar tipo de arquivo. 
Lista cada achado com arquivo, linha e como corrigir.</code></pre></div><p>Ele vai achar, vai doer, mas &#233; melhor chorar agora do que depois.</p><div><hr></div><h2>&#9989; Salva o checklist illuminati [antes de todo deploy]</h2><ul><li><p>RLS <strong>ligado</strong> em toda tabela do Supabase/Firebase + policies por usu&#225;rio</p></li><li><p><code>service_role</code> / chave de admin <strong>fora</strong> do frontend</p></li><li><p>Toda decis&#227;o de permiss&#227;o <strong>conferida no servidor</strong> (n&#227;o s&#243; no navegador)</p></li><li><p>Todo endpoint que recebe ID <strong>valida o dono</strong> antes de responder</p></li><li><p>Nenhuma API key / segredo no c&#243;digo do front ou no Git (<code>.env</code> no <code>.gitignore</code>)</p></li><li><p>Todo input <strong>validado e sanitizado</strong>; upload <strong>checa o tipo</strong> de arquivo</p></li><li><p>Rate limit nos endpoints sens&#237;veis (login, resgate, verifica&#231;&#227;o)</p></li><li><p>Rodei <strong>um scanner</strong> (ZAP / Gitleaks / Bandit / Opengrep) antes de subir</p></li></ul><div><hr></div><h2>Conclus&#227;o</h2><p>Resumindo:</p><blockquote><p>&#129504; <strong>A IA n&#227;o deixou essas portas abertas de sacanagem. Ela fez o que voc&#234; pediu e ningu&#233;m pede &#8220;e deixa trancado&#8221;. Seguran&#231;a &#233; a &#250;nica parte que VOC&#202; tem que lembrar de colocar nos seus prompts, mas ningu&#233;m faz pq ela n&#227;o tem nenhum resultado visual.</strong></p></blockquote><p>Por isso eu acho que o mundo deveria ter mais backends do que frontends, pq n&#243;s backends estamos acostumados de nosso trabalho n&#227;o ter nenhum prest&#237;gio por pessoas de fora.</p><p></p><h3>&#128172; Agora &#233; congito meu PRO PLAYER de Claude Code</h3><ul><li><p>&#128275; <strong>Qual desses 5 vacilos voc&#234; j&#225; cometeu?</strong> </p></li><li><p>&#129514; <strong>Rodou o scanner e achou coisa?</strong> Conta o que apareceu.</p></li></ul><p></p><p>&#128250; Se voc&#234; ainda n&#227;o viu, o v&#237;deo completo com os casos reais t&#225; aqui </p><p>&#128073; <strong><a href="https://youtu.be/6DJFl-g83dM">SEU SAAS FEITO COM IA VAI SER HACKEADO EM 10 MINUTOS</a></strong></p><div><hr></div><h2>&#128218; Todas as fontes, na ordem do texto</h2><ol><li><p>&#129514; <a href="https://www.symbioticsec.ai/blog/we-scanned-1-072-vibe-coded-apps-98-had-security-flaws">Symbiotic Security &#8212; 1.072 apps vibe-coded escaneados, 98% com falha</a></p></li><li><p>&#128201; <a href="https://getautonoma.com/blog/vibe-coding-security-risks">Veracode / OWASP Top 10 em c&#243;digo gerado por IA (45%)</a></p></li><li><p>&#127891; <a href="https://www.nowsecure.com/blog/2026/05/19/what-owasp-vulnerabilities-in-ai-generated-code-mean-for-mobile-app-security/">NowSecure &#8212; o que as falhas OWASP em c&#243;digo de IA significam (Stanford, +40%)</a></p></li><li><p>&#128737;&#65039; <a href="https://www.zaproxy.org/">OWASP ZAP &#8212; scanner din&#226;mico da OWASP Foundation</a></p></li><li><p>&#128268; <code>dtkmn/mcp-zap-server</code><a href="https://github.com/dtkmn/mcp-zap-server"> &#8212; ZAP via MCP no Claude Code / OpenCode</a></p></li><li><p>&#128273; <a href="https://github.com/gitleaks/gitleaks">Gitleaks &#8212; ca&#231;a segredo no c&#243;digo e no hist&#243;rico do Git</a></p></li><li><p>&#128013; <a href="https://github.com/PyCQA/bandit">Bandit (PyCQA) &#8212; an&#225;lise est&#225;tica pra Python</a></p></li><li><p>&#127988; <a href="https://github.com/opengrep/opengrep">Opengrep &#8212; o fork livre da Semgrep</a></p></li><li><p>&#129512; <a href="https://www.wiz.io/blog/common-security-risks-in-vibe-coded-apps">Wiz &#8212; riscos comuns em apps vibe-coded (CVE-2025-48757, +170 apps)</a></p></li><li><p>&#128272; <a href="https://vibeappscanner.com/supabase-security">vibeappscanner &#8212; Supabase, RLS e o CVE</a></p></li><li><p>&#128184; <a href="https://blog.gitguardian.com/stop-leaking-api-keys-the-backend-for-frontend-bff-pattern-explained/">GitGuardian &#8212; 24 milh&#245;es de segredos vazados e o padr&#227;o BFF</a></p></li><li><p>&#128290; <a href="https://xhack.io/blog/bola-vulnerability-idor-api-guide">XHack &#8212; BOLA/IDOR, o #1 do OWASP API Security</a></p></li><li><p>&#128203; <a href="https://owasp.org/API-Security/">OWASP API Security Top 10</a></p></li></ol>]]></content:encoded></item></channel></rss>