Criar a primeira ferramenta com Claude Code: total mensal de um CSV de despesas
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.
Conteúdo verificado 2026.09.22Prompts para copiar
Ver o sumário
Para quem éUsuários iniciantes que já instalaram o Claude Code, fizeram a primeira prática de leitura de arquivos e querem tentar gerar código pela primeira vez para um único arquivo pequeno
Preparação
Ter preparada a pasta de prática vibe-expenses e o expenses.csv fictício
Entender o fluxo de revisar as alterações antes de permitir que o Claude Code modifique arquivos
Ter Python instalado e conseguir executar o comando python no terminal
Usar apenas dados fictícios, não dados pessoais nem registros reais de pagamento
01Começar com uma única entrada e uma única saída
O objetivo da primeira prática não é criar um aplicativo de despesas cheio de recursos, mas um único arquivo summarize.py que leia expenses.csv e mostre apenas o total mensal de amount. Quando o escopo é pequeno, fica mais fácil para uma pessoa verificar diretamente se o resultado criado pela IA está correto. O arquivo de entrada é um CSV UTF-8 com as colunas date, category e amount. Assumimos que date usa o formato YYYY-MM-DD e amount é um inteiro.
Item
O que fica definido nesta prática
Critério de verificação
Arquivo de entrada
expenses.csv
Não modificar o arquivo original
Colunas de entrada
date, category, amount
Não exigir outras colunas arbitrariamente
Saída
Total mensal de amount
2026-09 = 26600, 2026-10 = 9800
Escopo de implementação
Um único arquivo summarize.py
Não adicionar arquivos de configuração nem pacotes desnecessários
Bibliotecas
Biblioteca padrão do Python
Não instalar pacotes externos
O ponto importante nesta etapa é não fazer uma solicitação ampla como “crie um aplicativo de despesas”. Reduzimos a possibilidade de a IA expandir o trabalho por conta própria com recursos como interface, banco de dados, gráficos ou login e delegamos apenas uma tarefa cujo resultado pode ser comparado em uma única execução.
02Incluir na solicitação a entrada, a saída esperada e as restrições
Ao pedir o trabalho ao Claude Code, forneça tanto a estrutura do arquivo de entrada quanto a resposta esperada. Quando há uma saída esperada, fica claro o que o código deve acertar depois de ser escrito e o usuário pode comparar o resultado visualmente. Também convém incluir os limites que não devem ser ultrapassados, como “usar apenas a biblioteca padrão”, “não modificar o CSV original” e “escrever apenas summarize.py”.
Prompt
Crie summarize.py na pasta atual para ler expenses.csv e mostrar o total mensal de amount.
Entrada:
- CSV UTF-8
- Nomes das colunas: date, category, amount
- Formato de date: YYYY-MM-DD
- amount é um inteiro
Saída esperada:
2026-09 = 26600
2026-10 = 9800
Restrições:
- Usar apenas a biblioteca padrão do Python
- Não modificar expenses.csv
- O comando de execução é python summarize.py expenses.csv
- Primeiro explique os arquivos necessários e as alterações e, depois, escreva apenas summarize.py.
Este bloco de código não é uma resposta do Claude Code, mas a solicitação que o usuário digitaria. Como a própria solicitação já contém os valores corretos usados na verificação, depois não basta a saída parecer plausível: é possível verificar se os dois números coincidem exatamente.
03Verificar o que será criado antes de modificar arquivos
O Claude Code pode ler os arquivos necessários e solicitar aprovação antes de modificar arquivos ou executar comandos. Quando aparecer uma tela de aprovação, em vez de clicar em Yes imediatamente, verifique quais arquivos foram lidos, se summarize.py é o único arquivo que será criado e se expenses.csv não será alterado. Se ele tentar executar um comando desconhecido, você também pode pedir que explique a finalidade.
Prompt
Antes de modificar qualquer coisa, quero verificar.
1) Diga separadamente quais arquivos você vai ler e quais arquivos vai criar.
2) Confirme que não vai modificar expenses.csv.
3) Confirme que não vai instalar pacotes externos.
4) Diga em uma linha como comparar o resultado com a saída esperada depois da execução.
As respostas reais do Claude Code podem variar conforme o ambiente e o momento, por isso este artigo não inventa uma resposta específica como caso de sucesso. O que deve ser verificado não é o estilo da resposta, mas o escopo dos arquivos e dos comandos.
04Conferir o código final de referência e o comando de execução
O summarize.py abaixo é um código final de referência que atende aos requisitos deste artigo. Ele lê cada linha com csv.DictReader, usa os primeiros 7 caracteres de date para obter YYYY-MM, converte amount em inteiro e soma por mês. Para fixar a ordem da saída, ordena as chaves dos meses. Este código não foi copiado de uma resposta real do Claude Code; ele foi escrito para reproduzir o resultado da prática do artigo e executado separadamente para verificação.
Prompt
import csv
import sys
from collections import defaultdict
def summarize_monthly(path):
totals = defaultdict(int)
with open(path, "r", encoding="utf-8", newline="") as f:
reader = csv.DictReader(f)
for row in reader:
month = row["date"][:7]
amount = int(row["amount"])
totals[month] += amount
return totals
def main():
if len(sys.argv) != 2:
raise SystemExit("Usage: python summarize.py expenses.csv")
totals = summarize_monthly(sys.argv[1])
for month in sorted(totals):
print(f"{month} = {totals[month]}")
if __name__ == "__main__":
main()
Como ele usa apenas a biblioteca padrão, não é necessário instalar pacotes adicionais. O comando de execução é o seguinte e, se no Windows estiver configurado py em vez de python, você pode usar `py summarize.py expenses.csv`.
Prompt
python summarize.py expenses.csv
05Comparar a saída da execução linha por linha com os valores esperados
Na ferramenta Python do chat GPT, o código acima e o expenses.csv fictício foram salvos como arquivos e `python summarize.py expenses.csv` foi executado de fato. A saída padrão coincidiu exatamente com as duas linhas abaixo. Essa verificação não foi realizada no Claude Code.
Prompt
2026-09 = 26600
2026-10 = 9800
Mês
Valor esperado
Valor executado
Resultado
2026-09
26600
26600
Coincide
2026-10
9800
9800
Coincide
Nesta etapa, confirmamos apenas que essas duas linhas coincidem. Não se deve extrapolar que o programa trate todos os CSVs com outros formatos, valores vazios ou números inválidos. O resultado coincide somente para os dados de teste e os requisitos atuais.
Também é possível verificar o total manualmente uma vez. Setembro é 12000 + 1450 + 8500 + 3200 + 1450 = 26600, e outubro tem um único registro de 9800, portanto o total é 9800. Em um exemplo pequeno, essa verificação cruzada entre a saída do programa e um valor de referência calculado por uma pessoa facilita localizar depois onde o resultado mudou quando novos recursos forem adicionados.
06Parar quando a resposta estiver correta, sem adicionar mais recursos
Uma expansão de escopo comum na primeira ferramenta é pensar “já que fizemos isso, vamos adicionar totais por categoria, gráficos e salvamento automático”. No entanto, a condição de conclusão deste artigo é que as duas linhas do total mensal estejam corretas. Se ela for atendida, é melhor preservar esse estado como ponto de referência e separar os próximos recursos em solicitações diferentes.
Verificar se nenhum arquivo inesperado foi criado além de summarize.py.
Verificar se o conteúdo de expenses.csv não foi alterado.
Verificar se não foi adicionada a instalação de pacotes externos.
Verificar se as duas linhas de saída coincidem exatamente com os valores esperados.
Separar os recursos adicionais como trabalho posterior, sem misturá-los a esta solicitação.
No próximo artigo, organizaremos as regras do projeto em CLAUDE.md para não repetir restrições longas em cada solicitação. Esse arquivo também não é uma configuração coercitiva, mas contexto do projeto que o Claude Code lê no início da sessão; por isso, o ponto principal é mantê-lo curto e específico.
O que conferir por conta própria
Na ferramenta Python do chat GPT, salvar summarize.py e o expenses.csv fictício com Python 3 e executar `python summarize.py expenses.csv` · Claude Code não foi executado de fato
Verificar se o código Python usa apenas csv, sys e collections.defaultdict da biblioteca padrão
Verificar se expenses.csv é aberto em modo somente leitura UTF-8 e se o arquivo original não é modificado
Verificar se o mês é obtido pelos primeiros 7 caracteres de date e se amount é convertido para int antes da soma
Verificar se o stdout da execução real coincide exatamente com as duas linhas `2026-09 = 26600` e `2026-10 = 9800`
Verificar se a solicitação inclui a entrada, a saída esperada, a restrição de biblioteca padrão e a proibição de modificar o original
Verificar se o texto não afirma incorretamente que a execução ou a verificação foram feitas no Claude Code
Limites da verificação
A verificação foi realizada apenas com o CSV fictício de 6 linhas deste artigo. Ela não inclui resultados de teste para entradas excepcionais, como valores vazios, datas inválidas ou amount não numérico, e a geração e a interface do Claude Code não foram testadas de fato.
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.
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.
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.
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.