Lección 1.2 · 25 min · Gratis

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:

  1. Crea la API con el pedido de esta lección, ajustándolo si quieres otro nombre de tabla o campos.
  2. Pregunta qué pasa con precios negativos o existencias menores que cero. Pide a Claude que agregue validación y una prueba para cada caso.
  3. Cambia con Shift+Tab al modo de aceptar ediciones, pide un endpoint GET /productos/bajo-minimo que liste lo que hay que resurtir y revisa el resultado con git diff desde otra terminal.
  4. Interrumpe al menos una vez con Esc y corrige la dirección (aunque sea para practicar).
  5. Haz un commit desde la conversación. Revisa que data/*.db y node_modules no se hayan incluido.
  6. Sal con /exit y vuelve a entrar con claude -c. Pregunta: "¿Qué hicimos en la sesión anterior?".

Quiz

1. Claude empieza a instalar una librería que no pediste. ¿Qué haces?
2. Quieres que Claude edite archivos sin preguntarte cada vez, pero vas a revisar todo con git diff al final. ¿Qué modo eliges?
3. Ayer trabajaste en lupita-api y hoy quieres seguir con la misma conversación. ¿Qué comando usas desde la carpeta del proyecto?
4. ¿Por qué conviene abrir claude dentro de la carpeta del proyecto?

Resumen

  • Abre claude desde 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.
  • Esc interrumpe, Shift+Tab cambia de modo, /clear limpia la conversación.
  • Los modos van de Manual (preguntar todo) a auto (clasificador en segundo plano); bypassPermissions solo en entornos aislados.
  • claude -c y claude -r retoman conversaciones anteriores.
Esta lección es gratuita. El curso completo incluye todos los módulos, quizzes, plantillas y un proyecto final con certificado. Ver precios