{"id":1061,"date":"2026-08-24T08:00:00","date_gmt":"2026-08-24T11:00:00","guid":{"rendered":"https:\/\/adrianosantostreina.com.br\/blog\/?p=1061"},"modified":"2026-08-13T14:26:51","modified_gmt":"2026-08-13T17:26:51","slug":"automatizando-tarefas-repetitivas-de-dev-com-ia","status":"publish","type":"post","link":"https:\/\/adrianosantostreina.com.br\/blog\/automatizando-tarefas-repetitivas-de-dev-com-ia\/","title":{"rendered":"Automatizando Tarefas Repetitivas de Dev com IA: Recupere as Horas que Voc\u00ea Perde Todo Dia"},"content":{"rendered":"<p>Segunda-feira, nove da manh\u00e3. Antes de escrever qualquer linha de c\u00f3digo com valor real, voc\u00ea j\u00e1 gastou quarenta minutos fazendo coisas que n\u00e3o exigem racioc\u00ednio nenhum: renomeando vari\u00e1veis em oito arquivos porque o time decidiu mudar um padr\u00e3o de nomenclatura, copiando e colando a estrutura de um novo endpoint a partir de outro parecido, escrevendo manualmente a mensagem de commit de ontem porque esqueceu de fazer isso na hora, e revisando um changelog que ningu\u00e9m vai ler com aten\u00e7\u00e3o, mas que precisa existir.<\/p>\n<p>Nada disso \u00e9 dif\u00edcil. Tudo isso \u00e9 entediante. E \u00e9 justamente essa combina\u00e7\u00e3o \u2014 baixa complexidade, alto volume \u2014 que consome uma parcela desproporcional do seu tempo \u00fatil como desenvolvedor. Some esses quarenta minutos por dia ao longo de um m\u00eas, e voc\u00ea ter\u00e1 perdido dias inteiros de trabalho para tarefas que, na pr\u00e1tica, s\u00e3o puramente mec\u00e2nicas.<\/p>\n<h2>O problema n\u00e3o \u00e9 a tarefa, \u00e9 a repeti\u00e7\u00e3o<\/h2>\n<p>Existe uma diferen\u00e7a importante entre &#8220;tarefa dif\u00edcil&#8221; e &#8220;tarefa repetitiva&#8221;. Escrever um algoritmo de matching complexo \u00e9 dif\u00edcil, mas raro \u2014 voc\u00ea faz isso algumas vezes por projeto. J\u00e1 gerar um arquivo de migra\u00e7\u00e3o de banco de dados seguindo o mesmo padr\u00e3o das \u00faltimas cinquenta migra\u00e7\u00f5es \u00e9 simples, mas constante. O c\u00e9rebro humano \u00e9 p\u00e9ssimo em tarefas simples e constantes: ele se distrai, comete erros bobos e, principalmente, odeia fazer a mesma coisa pela cent\u00e9sima vez.<\/p>\n<p>\u00c9 exatamente nesse tipo de tarefa que a IA generativa entrega o maior retorno pr\u00e1tico. N\u00e3o estamos falando de pedir para a IA &#8220;resolver o projeto inteiro&#8221; \u2014 isso \u00e9 fantasia de marketing. Estamos falando de identificar os pontos de fric\u00e7\u00e3o repetitiva no seu fluxo de trabalho e delegar cada um deles para uma ferramenta ou script apoiado em IA.<\/p>\n<h2>Mapeando o que vale a pena automatizar<\/h2>\n<p>Antes de sair automatizando qualquer coisa, fa\u00e7a um exerc\u00edcio simples: durante dois ou tr\u00eas dias, anote toda tarefa que voc\u00ea repetiu mais de uma vez sem pensar muito sobre ela. Na pr\u00e1tica, a maioria dos desenvolvedores encontra padr\u00f5es parecidos:<\/p>\n<ul>\n<li>Cria\u00e7\u00e3o de boilerplate: controllers, models, componentes de UI, testes esqueleto.<\/li>\n<li>Escrita de mensagens de commit e descri\u00e7\u00f5es de pull request.<\/li>\n<li>Gera\u00e7\u00e3o de changelogs e release notes a partir do hist\u00f3rico de commits.<\/li>\n<li>Convers\u00e3o de formatos: JSON para tipos de linguagem, SQL para ORM, YAML para c\u00f3digo de configura\u00e7\u00e3o.<\/li>\n<li>Revis\u00e3o de nomenclatura e padroniza\u00e7\u00e3o de c\u00f3digo em massa.<\/li>\n<li>Preenchimento de dados de teste (fixtures, seeds, mocks).<\/li>\n<\/ul>\n<p>Cada item dessa lista tem uma caracter\u00edstica em comum: o padr\u00e3o \u00e9 previs\u00edvel. E onde h\u00e1 padr\u00e3o previs\u00edvel, h\u00e1 espa\u00e7o para automa\u00e7\u00e3o \u2014 seja com scripts tradicionais, seja com IA entrando para lidar com a parte que exige &#8220;julgamento leve&#8221;, como interpretar um contexto ou gerar texto coerente.<\/p>\n<h2>Camada 1: automa\u00e7\u00e3o cl\u00e1ssica ainda importa<\/h2>\n<p>Antes de qualquer IA entrar em cena, vale refor\u00e7ar algo que muitos desenvolvedores pulam: nem toda automa\u00e7\u00e3o precisa de intelig\u00eancia artificial. Tarefas 100% determin\u00edsticas \u2014 como renomear um arquivo em massa, rodar linters ou formatar c\u00f3digo \u2014 continuam sendo trabalho de script simples, Makefile ou hooks de Git. Usar IA para isso \u00e9 desperd\u00edcio de tokens e de previsibilidade.<\/p>\n<pre><code class=\"language-bash\">\n# Exemplo de hook de pre-commit cl\u00e1ssico, sem IA nenhuma\n#!\/bin\/sh\nnpx eslint --fix .\nnpx prettier --write .\ngit add -A\n<\/code><\/pre>\n<blockquote><p><strong>\ud83d\udca1 Dica do Mestre:<\/strong> a Funda\u00e7\u00e3o Apache mant\u00e9m o conceito de &#8220;Continuous Integration&#8221; documentado de forma muito clara \u2014 antes de automatizar com IA, garanta que o b\u00e1sico de CI\/CD j\u00e1 est\u00e1 resolvido com ferramentas determin\u00edsticas. Veja mais em <a href=\"https:\/\/martinfowler.com\/articles\/continuousIntegration.html\" target=\"_blank\" rel=\"noopener noreferrer\">martinfowler.com\/articles\/continuousIntegration.html<\/a>.<\/p><\/blockquote>\n<h2>Camada 2: onde a IA realmente ganha o jogo<\/h2>\n<p>A IA generativa se destaca quando a tarefa tem um componente de interpreta\u00e7\u00e3o, gera\u00e7\u00e3o de texto natural ou adapta\u00e7\u00e3o a contexto \u2014 algo que um script tradicional, baseado em regras fixas, tem dificuldade de cobrir. Vamos por partes, com exemplos concretos.<\/p>\n<h3>1. Gera\u00e7\u00e3o autom\u00e1tica de mensagens de commit<\/h3>\n<p>Um dos ganhos mais simples e subestimados: usar IA para ler o diff das suas mudan\u00e7as e sugerir uma mensagem de commit no padr\u00e3o que seu time usa (por exemplo, <a href=\"https:\/\/www.conventionalcommits.org\/pt-br\/v1.0.0\/\" target=\"_blank\" rel=\"noopener noreferrer\">Conventional Commits<\/a>).<\/p>\n<pre><code class=\"language-bash\">\ngit diff --staged | claude -p \"Gere uma mensagem de commit seguindo Conventional Commits, em portugu\u00eas, baseada neste diff:\"\n<\/code><\/pre>\n<p>Ferramentas como o <a href=\"https:\/\/docs.claude.com\/en\/docs\/claude-code\/overview\" target=\"_blank\" rel=\"noopener noreferrer\">Claude Code<\/a> j\u00e1 t\u00eam suporte nativo a esse tipo de fluxo integrado ao terminal, permitindo inclusive configurar isso como parte do pr\u00f3prio hook de commit, mantendo o desenvolvedor no controle final (revisar antes de aceitar), mas eliminando o trabalho de redigir do zero.<\/p>\n<h3>2. Boilerplate inteligente baseado em padr\u00e3o existente<\/h3>\n<p>Em vez de copiar um arquivo existente e ajustar manualmente cada detalhe, voc\u00ea pode instruir a IA a gerar a nova vers\u00e3o seguindo exatamente o padr\u00e3o de um arquivo de refer\u00eancia. Isso funciona muito bem em qualquer stack \u2014 Java, C#, Python, TypeScript, ou at\u00e9 Delphi, no caso de sistemas legados que ainda seguem padr\u00f5es de camadas bem definidos.<\/p>\n<pre><code class=\"language-typescript\">\n\/\/ Prompt enviado \u00e0 IA, com o arquivo de refer\u00eancia anexado\n\/\/ \"Crie um novo controller 'ProductController' seguindo\n\/\/ exatamente o padr\u00e3o de 'CustomerController.ts',\n\/\/ incluindo valida\u00e7\u00e3o, tratamento de erro e testes unit\u00e1rios.\"\n\n\/\/ Resultado gerado (resumido)\nimport { Request, Response } from \"express\";\nimport { ProductService } from \"..\/services\/ProductService\";\n\nexport class ProductController {\n  constructor(private service: ProductService) {}\n\n  async create(req: Request, res: Response) {\n    try {\n      const product = await this.service.create(req.body);\n      return res.status(201).json(product);\n    } catch (error) {\n      return res.status(400).json({ error: error.message });\n    }\n  }\n}\n<\/code><\/pre>\n<p>O ganho aqui n\u00e3o \u00e9 apenas velocidade \u2014 \u00e9 consist\u00eancia. Quando a IA replica um padr\u00e3o j\u00e1 validado pelo time, voc\u00ea reduz a chance de &#8220;deriva de estilo&#8221;, aquele fen\u00f4meno em que cada desenvolvedor escreve o mesmo tipo de arquivo de um jeito ligeiramente diferente.<\/p>\n<h3>3. Changelogs e release notes a partir do hist\u00f3rico de commits<\/h3>\n<p>Gerar um changelog manualmente \u00e9 uma das tarefas mais chatas e mais f\u00e1ceis de negligenciar. Com acesso ao hist\u00f3rico de commits, a IA consegue produzir um rascunho de release notes em segundos \u2014 que voc\u00ea revisa e ajusta, em vez de escrever do zero.<\/p>\n<pre><code class=\"language-bash\">\ngit log v1.4.0..HEAD --oneline | claude -p \"Gere um changelog em portugu\u00eas, agrupado por Adicionado, Corrigido e Alterado, a partir destes commits:\"\n<\/code><\/pre>\n<blockquote><p><strong>\ud83d\udca1 Dica do Mestre:<\/strong> vale seguir o padr\u00e3o do <a href=\"https:\/\/keepachangelog.com\/pt-BR\/1.0.0\/\" target=\"_blank\" rel=\"noopener noreferrer\">Keep a Changelog<\/a> como refer\u00eancia de formato \u2014 isso facilita tanto para humanos quanto para a IA gerar um changelog consistente ao longo do tempo.<\/p><\/blockquote>\n<h3>4. Convers\u00e3o entre formatos e linguagens<\/h3>\n<p>Transformar um JSON de exemplo em um tipo TypeScript, uma tabela SQL em um modelo de ORM, ou um schema de API em c\u00f3digo de cliente \u2014 tudo isso \u00e9 repetitivo, mec\u00e2nico e propenso a erro humano de digita\u00e7\u00e3o. A IA lida bem com esse tipo de tradu\u00e7\u00e3o estrutural.<\/p>\n<pre><code class=\"language-python\">\n# Exemplo de automa\u00e7\u00e3o com IA via API, gerando um script reutiliz\u00e1vel\nimport anthropic\n\nclient = anthropic.Anthropic()\n\ndef gerar_modelo_sqlalchemy(sql_create_table: str) -&gt; str:\n    resposta = client.messages.create(\n        model=\"claude-sonnet-4-5\",\n        max_tokens=1024,\n        messages=[{\n            \"role\": \"user\",\n            \"content\": f\"Converta este CREATE TABLE em um modelo SQLAlchemy:\\n\\n{sql_create_table}\"\n        }]\n    )\n    return resposta.content[0].text\n\nsql = \"\"\"\nCREATE TABLE clientes (\n    id SERIAL PRIMARY KEY,\n    nome VARCHAR(150) NOT NULL,\n    email VARCHAR(150) UNIQUE\n);\n\"\"\"\n\nprint(gerar_modelo_sqlalchemy(sql))\n<\/code><\/pre>\n<p>Esse script, uma vez escrito, se torna uma ferramenta permanente do seu fluxo \u2014 voc\u00ea chama ele sempre que precisar converter uma nova tabela, sem repetir o racioc\u00ednio manualmente.<\/p>\n<h3>5. Fixtures, seeds e dados de teste realistas<\/h3>\n<p>Gerar dados fict\u00edcios para testes costuma cair em dois extremos ruins: dados t\u00e3o simples que n\u00e3o representam casos reais (&#8220;teste1&#8221;, &#8220;teste2&#8221;) ou tempo perdido criando dados variados manualmente. A IA consegue gerar conjuntos de dados plaus\u00edveis e diversos rapidamente, respeitando o schema informado.<\/p>\n<pre><code class=\"language-json\">\n\/\/ Prompt: \"Gere 5 registros de clientes fict\u00edcios brasileiros,\n\/\/ respeitando o schema: nome, email, cidade, estado\"\n\n[\n  { \"nome\": \"Marina Costa Ribeiro\", \"email\": \"marina.ribeiro@exemplo.com\", \"cidade\": \"Curitiba\", \"estado\": \"PR\" },\n  { \"nome\": \"Eduardo Lima Nogueira\", \"email\": \"eduardo.nogueira@exemplo.com\", \"cidade\": \"Salvador\", \"estado\": \"BA\" },\n  { \"nome\": \"Camila Ferreira Sousa\", \"email\": \"camila.sousa@exemplo.com\", \"cidade\": \"Porto Alegre\", \"estado\": \"RS\" }\n]\n<\/code><\/pre>\n<h2>Construindo scripts pr\u00f3prios: da tarefa manual ao comando reutiliz\u00e1vel<\/h2>\n<p>O verdadeiro salto de produtividade n\u00e3o acontece quando voc\u00ea usa a IA uma vez para resolver um problema pontual, mas quando voc\u00ea transforma esse uso em um script ou comando reutiliz\u00e1vel, que qualquer pessoa do time pode chamar sem reescrever o prompt do zero.<\/p>\n<p>Ferramentas como o Claude Code permitem criar comandos personalizados (slash commands) que encapsulam prompts complexos em atalhos simples. Um exemplo pr\u00e1tico: um comando <code>\/novo-endpoint<\/code> que sempre gera um endpoint seguindo o padr\u00e3o do projeto, incluindo rota, controller, service e teste.<\/p>\n<pre><code class=\"language-markdown\">\n# .claude\/commands\/novo-endpoint.md\nGere um novo endpoint completo para o recurso \"$ARGUMENTS\",\nseguindo exatamente o padr\u00e3o de c\u00f3digo encontrado em src\/controllers,\nsrc\/services e tests\/, incluindo:\n- Controller com valida\u00e7\u00e3o\n- Service com regra de neg\u00f3cio b\u00e1sica\n- Teste unit\u00e1rio do controller\n- Registro da rota no arquivo de rotas principal\n<\/code><\/pre>\n<p>A partir da\u00ed, criar um novo recurso passa a ser um \u00fanico comando: <code>\/novo-endpoint pedido<\/code>. O que antes levava vinte minutos de c\u00f3pia e ajuste manual passa a levar segundos, com a garantia de seguir o padr\u00e3o estabelecido.<\/p>\n<h2>Cuidados ao automatizar com IA<\/h2>\n<p>Automa\u00e7\u00e3o irrefletida gera d\u00edvida t\u00e9cnica na mesma velocidade em que gera produtividade. Alguns cuidados s\u00e3o indispens\u00e1veis:<\/p>\n<ul>\n<li><strong>Sempre revise antes de aceitar.<\/strong> Automa\u00e7\u00e3o com IA acelera a gera\u00e7\u00e3o, n\u00e3o substitui a revis\u00e3o humana, especialmente em c\u00f3digo que toca regras de neg\u00f3cio cr\u00edticas.<\/li>\n<li><strong>Versionamento dos prompts e comandos.<\/strong> Trate seus comandos de automa\u00e7\u00e3o como c\u00f3digo: versione, documente e revise em pull request quando alterados.<\/li>\n<li><strong>Evite automatizar decis\u00f5es, apenas execu\u00e7\u00e3o.<\/strong> A IA deve seguir o padr\u00e3o que o time j\u00e1 decidiu, n\u00e3o decidir o padr\u00e3o por conta pr\u00f3pria em sil\u00eancio.<\/li>\n<li><strong>Me\u00e7a o ganho real.<\/strong> Se uma automa\u00e7\u00e3o exige mais tempo de manuten\u00e7\u00e3o do que economiza, ela n\u00e3o est\u00e1 cumprindo seu papel.<\/li>\n<\/ul>\n<blockquote><p><strong>\ud83d\udca1 Dica do Mestre:<\/strong> o livro <em>The Pragmatic Programmer<\/em>, de Andrew Hunt e David Thomas, j\u00e1 defendia h\u00e1 d\u00e9cadas o princ\u00edpio de &#8220;automatize tudo que for repetitivo&#8221; \u2014 a IA apenas ampliou drasticamente o alcance desse princ\u00edpio, permitindo automatizar tarefas que antes exigiam julgamento humano.<\/p><\/blockquote>\n<h2>Da tarefa isolada ao fluxo de trabalho automatizado<\/h2>\n<p>O pr\u00f3ximo passo natural, depois de identificar e automatizar tarefas isoladas, \u00e9 conect\u00e1-las em um fluxo maior. Um pipeline de CI que, ao abrir um pull request, j\u00e1 gera automaticamente uma descri\u00e7\u00e3o resumida das mudan\u00e7as usando IA; um hook de commit que sugere a mensagem; um comando que cria o boilerplate completo de uma nova feature. Cada automa\u00e7\u00e3o pequena, somada \u00e0s outras, transforma o dia a dia de desenvolvimento de uma sequ\u00eancia de tarefas manuais em um fluxo onde voc\u00ea foca energia mental apenas no que realmente exige pensamento: a l\u00f3gica de neg\u00f3cio, a arquitetura, as decis\u00f5es de design.<\/p>\n<p>\u00c9 exatamente esse tipo de discuss\u00e3o pr\u00e1tica, com exemplos reais aplicados ao trabalho de desenvolvedores brasileiros, que acontece dentro da Comunidade Dev&#8217;s AI.<\/p>\n<h2>Continue essa evolu\u00e7\u00e3o na Comunidade Dev&#8217;s AI<\/h2>\n<p>Se voc\u00ea quer ir al\u00e9m da teoria e trocar experi\u00eancias reais sobre como automatizar seu fluxo de trabalho com IA \u2014 scripts, comandos personalizados, integra\u00e7\u00f5es com Claude Code e outras ferramentas \u2014, venha para a <a href=\"https:\/\/adrianosantos.link\/ComunidadeDevAI\" target=\"_blank\" rel=\"noopener noreferrer\">Comunidade Dev&#8217;s AI<\/a>. L\u00e1, desenvolvedores de diferentes linguagens e n\u00edveis compartilham automa\u00e7\u00f5es que funcionam na pr\u00e1tica, discutem armadilhas comuns e ajudam uns aos outros a economizar tempo de verdade, todos os dias.<\/p>\n<h2>Conclus\u00e3o<\/h2>\n<p>Automatizar tarefas repetitivas com IA n\u00e3o \u00e9 sobre substituir o desenvolvedor, \u00e9 sobre devolver a ele o tempo e a energia mental que tarefas mec\u00e2nicas consomem silenciosamente. O caminho mais eficaz n\u00e3o \u00e9 tentar automatizar tudo de uma vez, mas mapear com aten\u00e7\u00e3o onde est\u00e1 a repeti\u00e7\u00e3o no seu fluxo de trabalho, come\u00e7ar com automa\u00e7\u00f5es pequenas e espec\u00edficas, e evoluir gradualmente para comandos e scripts reutiliz\u00e1veis que todo o time possa usar. Feito com disciplina, esse processo transforma minutos perdidos todos os dias em horas recuperadas ao longo do m\u00eas \u2014 tempo que volta para onde ele deveria estar: no trabalho que exige, de fato, a sua capacidade de pensar.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Segunda-feira, nove da manh\u00e3. Antes de escrever qualquer linha de c\u00f3digo com valor real, voc\u00ea j\u00e1 gastou quarenta minutos fazendo coisas que n\u00e3o exigem racioc\u00ednio nenhum: renomeando vari\u00e1veis em oito arquivos porque o time decidiu mudar um padr\u00e3o de nomenclatura, copiando e colando a estrutura de um novo endpoint a partir de outro parecido, escrevendo [&hellip;]<\/p>\n","protected":false},"author":127,"featured_media":1062,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1061","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog"],"_links":{"self":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts\/1061","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/users\/127"}],"replies":[{"embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/comments?post=1061"}],"version-history":[{"count":1,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts\/1061\/revisions"}],"predecessor-version":[{"id":1063,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/posts\/1061\/revisions\/1063"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/media\/1062"}],"wp:attachment":[{"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/media?parent=1061"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/categories?post=1061"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/adrianosantostreina.com.br\/blog\/wp-json\/wp\/v2\/tags?post=1061"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}