Uso de IA en el trabajo

Crear la primera herramienta con Claude Code: total mensual de un CSV de gastos

Practicamos el flujo para crear una primera herramienta pequeña en Python usando el expenses.csv ficticio y la nota de requisitos preparados antes. La solicitud incluye un ejemplo de entrada, la salida esperada y las restricciones, y después ejecutamos el summarize.py terminado en la herramienta Python del chat de GPT, no en Claude Code, para comprobar el resultado.

Ver el índice

Para quién esUsuarios principiantes que ya instalaron Claude Code y practicaron la primera lectura de archivos y quieren intentar generar por primera vez código para un único archivo pequeño

Preparación
  • Tener preparada la carpeta de práctica vibe-expenses y el expenses.csv ficticio
  • Comprender el flujo de revisar los cambios antes de permitir que Claude Code modifique archivos
  • Tener Python instalado y poder ejecutar el comando python desde la terminal
  • Usar solo datos ficticios, no datos personales ni extractos reales de pagos

01Empezar con una sola entrada y una sola salida

El objetivo de la primera práctica no es una aplicación de gastos con muchas funciones, sino un único archivo summarize.py que lea expenses.csv y muestre solo el total mensual de amount. Si el alcance es pequeño, resulta más fácil que una persona compruebe directamente si el resultado generado por la IA es correcto. El archivo de entrada es un CSV UTF-8 con las columnas date, category y amount. Suponemos que date usa el formato YYYY-MM-DD y amount es un entero.

ElementoLo que se fija en esta prácticaCriterio de comprobación
Archivo de entradaexpenses.csvNo modificar el archivo original
Columnas de entradadate, category, amountNo exigir otras columnas arbitrariamente
SalidaTotal mensual de amount2026-09 = 26600, 2026-10 = 9800
Alcance de implementaciónUn solo archivo summarize.pyNo añadir archivos de configuración ni paquetes innecesarios
BibliotecasBiblioteca estándar de PythonNo instalar paquetes externos

Lo importante en este paso es no hacer una solicitud amplia como «hazme una aplicación de gastos». Reducimos la posibilidad de que la IA amplíe por su cuenta el trabajo con funciones como interfaz, base de datos, gráficos o inicio de sesión, y solo encargamos una tarea cuyo resultado se puede comparar en una sola ejecución.

02Incluir en la solicitud la entrada, la salida esperada y las restricciones

Al pedir el trabajo a Claude Code, proporciona tanto la estructura del archivo de entrada como la respuesta esperada. Si existe una salida esperada, queda claro qué debe acertar el código después de escribirlo y el usuario puede comparar el resultado visualmente. También conviene incluir los límites que no deben cruzarse, como «usar solo la biblioteca estándar», «no modificar el CSV original» y «escribir solo summarize.py».

Instrucción
Crea summarize.py en la carpeta actual para leer expenses.csv y mostrar el total mensual de amount.

Entrada:
- CSV UTF-8
- Nombres de columnas: date, category, amount
- Formato de date: YYYY-MM-DD
- amount es un entero

Salida esperada:
2026-09 = 26600
2026-10 = 9800

Restricciones:
- Usar solo la biblioteca estándar de Python
- No modificar expenses.csv
- El comando de ejecución es python summarize.py expenses.csv
- Explica primero los archivos necesarios y los cambios y después escribe solo summarize.py.

Este bloque de código no es una respuesta de Claude Code, sino la solicitud que introduciría el usuario. Como la propia solicitud ya contiene los valores correctos con los que se comprobará el resultado, después no basta con que la salida parezca plausible: se puede verificar si los dos números coinciden exactamente.

03Comprobar qué se pretende crear antes de modificar archivos

Claude Code puede leer los archivos necesarios y solicitar aprobación antes de modificar archivos o ejecutar comandos. Cuando aparezca una pantalla de aprobación, en lugar de pulsar Yes de inmediato, comprueba qué archivos se leyeron, si el único archivo que se va a crear es summarize.py y si expenses.csv no se tocará. Si intenta ejecutar un comando desconocido, también puedes pedir que explique para qué sirve.

Instrucción
Antes de modificar nada, quiero comprobarlo.
1) Indícame por separado qué archivos vas a leer y qué archivos vas a crear.
2) Confirma que no modificarás expenses.csv.
3) Confirma que no instalarás paquetes externos.
4) Dime en una línea cómo compararás el resultado con la salida esperada después de ejecutarlo.

Las respuestas reales de Claude Code pueden variar según el entorno y el momento, por lo que este artículo no inventa una respuesta concreta como caso de éxito. Lo que debe comprobarse no es el estilo de la respuesta, sino el alcance de los archivos y de los comandos.

04Revisar el código final de referencia y el comando de ejecución

El summarize.py siguiente es un código final de referencia que cumple los requisitos de este artículo. Lee cada fila con csv.DictReader, toma los primeros 7 caracteres de date para obtener YYYY-MM, convierte amount a entero y suma por mes. Para fijar el orden de salida, ordena las claves de mes. Este código no se copió de una respuesta real de Claude Code; se escribió para reproducir el resultado de la práctica del artículo y se ejecutó por separado para comprobarlo.

Instrucción
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 solo usa la biblioteca estándar, no necesita instalar paquetes adicionales. El comando de ejecución es el siguiente y, si en Windows está configurado py en lugar de python, se puede usar `py summarize.py expenses.csv`.

Instrucción
python summarize.py expenses.csv

05Comparar la salida de ejecución línea por línea con los valores esperados

En la herramienta Python del chat de GPT se guardaron el código anterior y el expenses.csv ficticio como archivos y se ejecutó realmente `python summarize.py expenses.csv`. La salida estándar coincidió exactamente con las dos líneas siguientes. Esta verificación no se realizó en Claude Code.

Instrucción
2026-09 = 26600
2026-10 = 9800
MesValor esperadoValor ejecutadoResultado
2026-092660026600Coincide
2026-1098009800Coincide

En este paso solo confirmamos que estas dos líneas coinciden. No debe extrapolarse que el programa gestione todos los CSV con otros formatos, valores vacíos o números inválidos. El resultado coincide únicamente para los datos de prueba y los requisitos actuales.

También se puede comprobar una vez el total manualmente. Septiembre es 12000 + 1450 + 8500 + 3200 + 1450 = 26600 y octubre tiene un único registro de 9800, por lo que el total es 9800. En un ejemplo pequeño, esta comprobación cruzada entre la salida del programa y un valor de referencia calculado por una persona facilita después localizar dónde cambia el resultado al ampliar funciones.

06Detenerse cuando la respuesta sea correcta, sin añadir más funciones

Una ampliación de alcance habitual en una primera herramienta es pensar «ya que está hecha, añadamos totales por categoría, gráficos y guardado automático». Sin embargo, la condición de finalización de este artículo es que las dos líneas del total mensual sean correctas. Si se cumple, conviene conservar ese estado como punto de referencia y separar las funciones siguientes en solicitudes distintas.

  • Comprobar que no se hayan creado archivos inesperados además de summarize.py.
  • Comprobar que el contenido de expenses.csv no haya cambiado.
  • Comprobar que no se haya añadido la instalación de paquetes externos.
  • Comprobar que las dos líneas de salida coincidan exactamente con los valores esperados.
  • Separar las funciones adicionales como trabajo posterior, sin mezclarlas con esta solicitud.

En el siguiente artículo organizaremos en CLAUDE.md las reglas del proyecto para no repetir restricciones largas en cada solicitud. Ese archivo tampoco es una configuración coercitiva, sino contexto de proyecto que Claude Code lee al inicio de la sesión, por lo que la clave es mantenerlo breve y concreto.

Qué comprobar por tu cuenta

En la herramienta Python del chat de GPT, guardar summarize.py y el expenses.csv ficticio con Python 3 y ejecutar `python summarize.py expenses.csv` · Claude Code no se ejecutó realmente

  • Comprobar que el código Python use solo csv, sys y collections.defaultdict de la biblioteca estándar
  • Comprobar que expenses.csv se abra en modo de solo lectura UTF-8 y no se modifique el original
  • Comprobar que se obtenga el mes con los primeros 7 caracteres de date y se convierta amount a int antes de sumarlo
  • Comprobar que stdout de la ejecución real coincida exactamente con las dos líneas `2026-09 = 26600` y `2026-10 = 9800`
  • Comprobar que la solicitud incluya la entrada, la salida esperada, la restricción de biblioteca estándar y la prohibición de modificar el original
  • Comprobar que no se exprese incorrectamente que la ejecución o la verificación se hicieron en Claude Code
Límites de la verificación

La verificación se realizó únicamente con el CSV ficticio de 6 filas de este artículo. No incluye resultados de prueba para entradas excepcionales como valores vacíos, fechas inválidas o amount no numérico, y no se probó realmente la generación ni la interfaz de Claude Code.