Tu primera sesión con Abarrotes Lupita
Doña Lupita tiene una tienda de abarrotes en Guadalajara. Lleva el inventario en un cuaderno y cada semana se le acaba el aceite o el frijol sin darse cuenta. Su sobrino, que programa un poco, quiere hacerle una API sencilla: registrar productos, descontar existencias cuando hay una venta y avisar qué hay que resurtir.
Ese es el proyecto del curso: lupita-api. En esta lección lo creas con Claude Code y aprendes la mecánica básica de una sesión. Al terminar podrás:
- arrancar una sesión y leer lo que muestra la pantalla;
- pedir un cambio, revisarlo y aprobarlo o rechazarlo;
- cambiar entre modos de permisos con
Shift+Tab; - interrumpir, retomar conversaciones y hacer un commit desde la sesión.
Qué ves al abrir una sesión
Entra a la carpeta que creaste en la lección anterior y ejecuta claude:
cd lupita-api
claude
Arriba aparecen la versión, el modelo que estás usando y la carpeta de trabajo. Esa carpeta importa: es el directorio de trabajo. Claude puede leer libremente lo que está ahí y debajo, y para tocar algo fuera de esa carpeta necesita tu aprobación o que la agregues con /add-dir. Si abres la sesión en tu carpeta personal en lugar de en el proyecto, Claude verá un montón de archivos que no tienen nada que ver.
Abajo está el cuadro donde escribes. No hace falta ningún formato especial: escribes como le explicarías la tarea a un colega. Algunas teclas que vas a usar desde hoy:
| Tecla o comando | Qué hace |
|---|---|
Enter |
Envía tu mensaje |
Esc |
Detiene a Claude en medio de una respuesta para que corrijas el rumbo |
Shift+Tab |
Cambia el modo de permisos |
/help |
Muestra los comandos disponibles |
/clear |
Empieza una conversación nueva con el contexto vacío |
/exit |
Sale de la sesión |
Crea la primera versión de la API
Pídele a Claude que arme la estructura. Fíjate en que el pedido incluye el contexto del negocio, la tecnología y lo que no quieres:
Vamos a crear lupita-api, una API de inventario para una tienda de abarrotes
en Guadalajara. Usa Node.js 22, Express y better-sqlite3. Estructura:
- src/app.js con la app de Express
- src/db.js que crea data/lupita.db y la tabla productos
(sku TEXT PRIMARY KEY, nombre TEXT, precio_centavos INTEGER,
existencias INTEGER, minimo INTEGER)
- src/rutas/productos.js con GET /productos y POST /productos
- test/productos.test.js usando node:test y supertest
Agrega scripts "dev" y "test" en package.json. Los precios van en centavos
de peso mexicano para evitar decimales. No agregues autenticación todavía.
Claude va a leer la carpeta, decidir qué archivos crear y mostrarte cada acción. Según el modo de permisos en el que estés, te pedirá aprobación antes de crear archivos o de ejecutar npm install. Cuando aparezca una solicitud, lee qué va a hacer exactamente: qué archivo, qué comando. Puedes aceptar una vez, aceptar ese tipo de acción por el resto de la sesión o rechazar y explicar qué prefieres.
Si ves que va por mal camino (por ejemplo, empieza a instalar un ORM que no pediste), presiona Esc. Claude se detiene, conserva lo que ya hizo y espera tus indicaciones: "No uses un ORM, quiero SQL directo con better-sqlite3".
Cuando termine, pídele que lo compruebe:
Corre las pruebas y dime si pasan. Si alguna falla, explícame por qué antes de corregirla.
Los modos de permisos
Claude Code tiene varios modos que deciden cuánto puede hacer sin preguntarte. Los más importantes para empezar son estos:
| Modo | Qué hace sin preguntar | Cuándo usarlo |
|---|---|---|
Manual (default) |
Solo leer | Cuando quieres aprobar cada acción |
Aceptar ediciones (acceptEdits) |
Leer, editar archivos y comandos básicos de archivos como mkdir o mv |
Cuando vas a revisar los cambios después con git diff |
Plan (plan) |
Investigar sin editar | Para explorar y diseñar antes de cambiar código |
Auto (auto) |
Casi todo, con un clasificador que revisa cada acción en segundo plano | Tareas largas en las que confías en el entorno |
Shift+Tab recorre los modos y la barra de estado te muestra el activo. En versiones recientes, las sesiones de terminal pueden empezar directamente en modo auto si está disponible para tu cuenta; si no, arrancan en Manual. Mira siempre el indicador antes de pedir algo delicado.
Hay un modo más, bypassPermissions, que se salta todas las revisiones. La documentación lo recomienda solo para contenedores o máquinas virtuales aisladas. No lo uses en tu computadora de trabajo.
Si quieres que tus sesiones siempre arranquen en un modo concreto, se configura con permissions.defaultMode en tu archivo de ajustes. Lo veremos cuando trabajemos con settings.json.
Pregunta antes de cambiar
Una buena costumbre es empezar cada sesión con preguntas, no con órdenes. Claude lee los archivos que necesita para responder:
Explícame cómo fluye una petición POST /productos desde que llega hasta que se guarda.
¿Qué pasa si mando un precio negativo?
Esto te da dos cosas. Primero, entiendes el código que se generó (no aceptes código que no podrías explicar). Segundo, aparecen huecos: lo más probable es que la API acepte precios negativos. Ese hallazgo se convierte en tu siguiente tarea.
Git desde la conversación
Claude Code maneja Git con lenguaje natural. Cuando las pruebas pasen:
¿Qué archivos cambiaron? Crea un .gitignore para node_modules y data/*.db
y luego haz un commit con un mensaje descriptivo en español.
Antes de que se ejecute git commit verás la solicitud de permiso (o el clasificador la revisará si estás en modo auto). Lee el mensaje propuesto. Si no te gusta, recházalo y pide otro.
Retomar el trabajo
Cerrar la terminal no borra la conversación. Desde la carpeta del proyecto tienes estas opciones:
claude -c # continúa la conversación más reciente de esta carpeta
claude -r # abre un selector para retomar una conversación anterior
claude "agrega GET /productos/:sku" # abre una sesión con una primera instrucción
Dentro de una sesión, /resume hace lo mismo que claude -r.
También fuera de la terminal
Todo el curso usa la terminal porque es donde se ve mejor lo que pasa. Claude Code también existe como extensión para VS Code y para IDE de JetBrains, como aplicación de escritorio y en la web. Los conceptos (permisos, CLAUDE.md, subagentes, hooks, MCP) son los mismos; cambia la interfaz.
Práctica
Lleva lupita-api a su primera versión estable:
- Crea la API con el pedido de esta lección, ajustándolo si quieres otro nombre de tabla o campos.
- Pregunta qué pasa con precios negativos o existencias menores que cero. Pide a Claude que agregue validación y una prueba para cada caso.
- Cambia con
Shift+Tabal modo de aceptar ediciones, pide un endpointGET /productos/bajo-minimoque liste lo que hay que resurtir y revisa el resultado congit diffdesde otra terminal. - Interrumpe al menos una vez con
Escy corrige la dirección (aunque sea para practicar). - Haz un commit desde la conversación. Revisa que
data/*.dbynode_modulesno se hayan incluido. - Sal con
/exity vuelve a entrar conclaude -c. Pregunta: "¿Qué hicimos en la sesión anterior?".
Quiz
Resumen
- Abre
claudedesde la carpeta del proyecto: define qué puede ver y tocar. - Pide tareas con contexto, tecnología y límites claros; revisa cada solicitud de permiso.
Escinterrumpe,Shift+Tabcambia de modo,/clearlimpia la conversación.- Los modos van de Manual (preguntar todo) a auto (clasificador en segundo plano);
bypassPermissionssolo en entornos aislados. claude -cyclaude -rretoman conversaciones anteriores.