Corrigir erros com o Claude Code: reproduzir → causa → mudança mínima → executar novamente
Em vez de apenas dizer à IA que “está dando erro”, você praticará um fluxo em que primeiro reproduz o problema com a mesma entrada, restringe a causa com base na mensagem real de exceção e solicita somente a mudança mínima. Usaremos um CSV cujo amount contém uma vírgula para reproduzir um ValueError no Python e executaremos novamente o código corrigido para verificar o resultado.
Conteúdo verificado 2026.09.22Prompts para copiar
Ver o sumário
Para quem éUsuários iniciantes que querem controlar o processo de correção com base em mensagens de erro quando uma pequena ferramenta Python criada com Claude Code falha
Preparação
Entender o fluxo de summarize.py e expenses.csv dos artigos anteriores
Conseguir executar no terminal comandos no formato python summarize.py nome_do_arquivo
Preservar primeiro o arquivo original e a mensagem de erro mesmo quando ocorrer uma falha
Usar apenas CSV fictício, não dados pessoais reais
01Antes de corrigir, reproduza primeiro o erro com a mesma entrada
Quando ocorre um erro, o primeiro passo não é adivinhar, mas reproduzi-lo. Neste exemplo, usamos um CSV fictício em que um dos valores de amount foi alterado para a string "1,450". Pelas regras do CSV, como a vírgula está dentro do valor, ele fica entre aspas; depois de ser lido pelo módulo csv, row['amount'] contém a string '1,450'. Se o código existente chamar diretamente int(row['amount']), não conseguirá converter essa string em inteiro.
import csv
import sys
from collections import defaultdict
path = sys.argv[1]
monthly = defaultdict(int)
with open(path, encoding="utf-8", newline="") as f:
reader = csv.DictReader(f)
for row in reader:
month = row["date"][:7]
monthly[month] += int(row["amount"])
for month in sorted(monthly):
print(f"{month} = {monthly[month]}")
Ao executar esse código com `python summarize_buggy.py expenses_bad.csv`, ele para na etapa de conversão antes de exibir os totais corretos. O mesmo código foi realmente executado com a ferramenta Python do chat do GPT, e foi confirmado que a string da exceção correspondia exatamente ao texto abaixo.
Prompt
ValueError: invalid literal for int() with base 10: '1,450'
02Ao ler o erro, separe o valor que falhou da operação que falhou
Essa mensagem já contém pistas importantes. A função que falhou é int(), e o valor que falhou é '1,450'. Portanto, não é necessário assumir de início que todo o CSV está errado ou que a lógica de agregação mensal está incorreta. O problema pode ser restringido ao ponto em que a string de amount é convertida em inteiro.
Observação
Fato confirmado
O que ainda não deve ser presumido
Tipo de exceção
ValueError
Não concluir que o arquivo inteiro está corrompido
Valor que falhou
'1,450'
Não presumir que todas as outras linhas também estão erradas
Operação que falhou
Conversão com int()
Não concluir que a fórmula de agregação está incorreta
Escopo da correção
Priorizar o ponto de parsing de amount
Não reescrever o programa inteiro
Ao pedir ajuda ao Claude Code, forneça também a mensagem de erro, o comando de reprodução e as condições de entrada que causaram o problema. Assim, você pode verificar se a explicação da causa está ligada a evidências reais e reduzir novamente o escopo caso seja proposta uma alteração grande e sem relação com a falha.
03Peça primeiro a explicação da causa e depois somente a correção mínima
Os requisitos desta correção são simples. Se uma string numérica contiver vírgulas, remova-as antes de convertê-la em inteiro; se mesmo assim não for um número, deve ser gerado um erro claro informando em qual linha e com qual valor ocorreu a falha. A forma de agregação mensal e o formato de saída permanecem inalterados.
Prompt
Ao executar python summarize_buggy.py expenses_bad.csv, ocorre o erro abaixo.
ValueError: invalid literal for int() with base 10: '1,450'
Explique primeiro a causa.
Depois, faça apenas a alteração mínima na parte que converte amount.
Requisitos:
- Se uma string numérica contiver vírgulas, remova-as antes de converter para inteiro
- Se ainda assim não for um número, gere um ValueError claro que inclua o número da linha e o valor original
- Mantenha inalterados a agregação mensal e o formato de saída
- Use apenas a biblioteca padrão do Python
- Depois da correção, informe também qual comando usar para executar novamente.
Aqui não pedimos “reescreva todo o código”. Como o ponto de falha já foi restringido à conversão de amount, limitamos a alteração a essa parte. Se a IA tentar modificar outros arquivos ou as regras de agregação, peça primeiro que explique por que isso seria necessário e, sem justificativa, volte ao escopo original.
04Reúna a remoção de vírgulas e o erro com número da linha em uma função
A correção abaixo separa o parsing de amount em parse_amount(). Primeiro remove as vírgulas e tenta aplicar int(); se falhar, lança novamente um ValueError que inclui o número da linha de entrada e a string original. Como o cabeçalho de csv.DictReader ocupa a linha 1, os números das linhas de dados são ajustados com enumerate(reader, start=2).
Prompt
import csv
import sys
from collections import defaultdict
def parse_amount(text, line_number):
cleaned = text.replace(",", "")
try:
return int(cleaned)
except ValueError as exc:
raise ValueError(
f"line {line_number}: amount must be an integer, got {text!r}"
) from exc
path = sys.argv[1]
monthly = defaultdict(int)
with open(path, encoding="utf-8", newline="") as f:
reader = csv.DictReader(f)
for line_number, row in enumerate(reader, start=2):
month = row["date"][:7]
monthly[month] += parse_amount(row["amount"], line_number)
for month in sorted(monthly):
print(f"{month} = {monthly[month]}")
Esta correção não pretende ser um parser geral capaz de tratar todos os formatos monetários, como símbolos de moeda, casas decimais ou negativos entre parênteses. Ela resolve apenas o problema de separador de milhar realmente reproduzido neste exemplo. Para ampliar as regras de entrada, é mais seguro definir primeiro quais formatos serão permitidos e adicioná-los como requisitos separados.
05Execute novamente com o mesmo arquivo e compare com os valores esperados originais
Depois da correção, execute novamente com o mesmo arquivo que causou o problema. Ao executar realmente o código corrigido acima com `expenses_bad.csv` na ferramenta Python do chat do GPT, os totais mensais foram 2026-09 = 26600 e 2026-10 = 9800. Eles coincidem exatamente com os valores esperados definidos desde o início da série.
Não basta confirmar que o erro desapareceu. O ponto principal da reexecução é verificar numericamente que tanto 1450 sem vírgula quanto "1,450" com vírgula sejam interpretados como o mesmo valor e que o resultado correto anterior seja mantido.
06Faça valores não numéricos falharem com a localização, em vez de ignorá-los
Adicionar a remoção de vírgulas não significa que valores inválidos devam ser convertidos para 0 ou ignorados. Por exemplo, se o amount da linha 3 for abc, o programa deve falhar para que o erro de dados não fique oculto. O mesmo código corrigido foi realmente executado com outra entrada fictícia, e foi confirmado um ValueError que inclui `line 3` e o valor original 'abc'.
ValueError: line 3: amount must be an integer, got 'abc'
Primeiro, confirme que o erro é reproduzido com a mesma entrada.
Leia o tipo de exceção e o valor que falhou para reduzir o escopo da correção.
Peça à IA que explique a causa e depois solicite somente a alteração mínima.
Execute novamente com a entrada que causou o problema e compare com os valores esperados originais.
Não ignore silenciosamente entradas inválidas; deixe um erro que permita localizá-las.
O que conferir por conta própria
Código Python realmente executado com a ferramenta Python do chat do GPT · Apenas CSV fictício foi usado · Claude Code não foi realmente executado
Confirmar que o código existente int(row['amount']) realmente reproduz um ValueError com a entrada '1,450'
Confirmar que a string da exceção corresponda exatamente a "invalid literal for int() with base 10: '1,450'"
Confirmar que o código corrigido seja executado sem exceções com expenses_bad.csv
Confirmar que, após a correção, stdout seja exatamente 2026-09 = 26600 e 2026-10 = 9800
Confirmar que com a entrada amount=abc ocorra realmente o ValueError "line 3: amount must be an integer, got 'abc'"
Confirmar que foi usada somente a biblioteca padrão do Python
Limites da verificação
A verificação de execução do Python foi realizada com a ferramenta Python do chat do GPT, e não se afirma que tenha sido testada no Claude Code. O parser do exemplo trata apenas vírgulas como separadores de milhar; ele não é generalizado para símbolos de moeda, casas decimais ou formatos numéricos regionais.
Entendemos vibe coding não como “pedir em palavras e deixar a IA fazer tudo sozinha”, mas como uma forma de trabalho em que a pessoa define os requisitos e os critérios de verificação e depois revisa o resultado gerado pela IA. Usando como exemplo uma ferramenta fictícia para somar um CSV de despesas domésticas, organizamos em uma única nota a entrada, a saída, o que não deve ser feito e como verificar o resultado.
Verificamos o comando de instalação do Claude Code e as condições de conta de acordo com o sistema operacional e iniciamos a primeira sessão em uma pasta fictícia de prática. Em vez de gerar código imediatamente, fazemos apenas três perguntas para ler a pasta e o CSV no modo plan e depois encerramos a sessão com segurança.
Praticamos o fluxo para criar uma primeira ferramenta pequena em Python usando o expenses.csv fictício e a nota de requisitos preparada anteriormente. A solicitação inclui um exemplo de entrada, a saída esperada e as restrições e, depois, executamos o summarize.py concluído na ferramenta Python do chat GPT, e não no Claude Code, para verificar o resultado.
Organizamos de forma concisa no CLAUDE.md do projeto o comando de execução, as regras de dados, as proibições e a forma de verificar resultados que antes eram repetidos em cada solicitação. Distinguimos a função de `/init` para criar um rascunho e o propósito de cada localização de arquivo e concluímos um arquivo de regras de 35 linhas adaptado ao exemplo do CSV de despesas.
Usando como exemplo a adição da opção `--by-category` a uma ferramenta já funcional que soma despesas por mês, você aprenderá a revisar primeiro o plano de mudanças no modo plan do Claude Code. Antes de implementar, definirá o escopo da alteração e o formato de saída; depois de aprovar o plano, executará o código final para verificar tanto os totais mensais existentes quanto os totais por categoria.
Você aprenderá um fluxo mínimo para criar um ponto de referência com git antes de o Claude Code modificar arquivos e, depois do trabalho, revisar as mudanças reais com `git status` e `git diff`. É possível pedir à IA que explique o diff, mas o processo se baseia em a pessoa conferir o diff e os resultados da execução antes de fazer staging e commit diretamente.
Partindo do princípio de que o Claude Code pode ler e modificar arquivos e executar comandos, este artigo reúne as verificações de segurança que iniciantes devem fazer antes, durante e depois do trabalho. Ele conecta em uma única lista as diferenças entre os modos de permissão, as mudanças que os checkpoints não conseguem restaurar, a diferença de função em relação ao git e a regra de não inserir informações secretas.