Course · GS Core · Lab 1 Curso · GS Core · Práctica 1

Turn the order around in ten minutes Dar vuelta el orden en diez minutos

One thing only: write the WHAT before a single line of code, and watch the difference it makes to what the AI builds. This lab does not teach a complete spec, live verification, or gates — just the order. Una sola cosa: escribí el QUÉ antes de una sola línea de código, y mirá la diferencia en lo que construye la IA. Esta práctica no enseña una spec completa, ni la verificación en vivo, ni los gates — solo el orden.

The prompts and the spec file below are the real artifacts from the recorded session, on the Spanish-domain project Cancha Libre (a court-booking app). The English twin project ships with the English course; the steps are identical either way. Los prompts y el archivo de spec de abajo son los artefactos reales de la sesión grabada, sobre Cancha Libre (una app de reservas de canchas). El proyecto gemelo en inglés viene con el curso en inglés; los pasos son idénticos.

Follow along Seguime

on Cancha Libre · everyone sees the same thing sobre Cancha Libre · todos ven lo mismo
↓
Download the project from github.com/jghiringhelli/cancha-libre — then npm install and npm test (18 tests green). Bajá el proyecto de github.com/jghiringhelli/cancha-libre — después npm install y npm test (18 tests en verde).
00
See what happens without writing anything (optional, two minutes). In the project root: Mirá qué pasa sin escribir nada (opcional, dos minutos). En la raíz del proyecto:
Run this — no specCorré esto — sin specclaude -p "Agregá la posibilidad de reprogramar una reserva (cambiarla de fecha y hora)."
Find the phrase "la decisión que tomé por vos" (the decision I made for you) in the answer — a business decision the machine made on its own. Reset: git checkout . && git clean -fd. Buscá en la respuesta la frase "la decisión que tomé por vos". Esa decisión de negocio la tomó la máquina. Volvé al estado limpio: git checkout . && git clean -fd.
01
Write the WHAT, before a single line of code. Create docs/features/F-004-reprogramar.md. The rules are business decisions — you make them. Want different ones? Change them here, not in the code. Escribí el QUÉ, antes de una sola línea de código. Creá docs/features/F-004-reprogramar.md. Las reglas son decisiones de negocio: las tomás vos. Si querés otras, cambialas acá, no en el código.
docs/features/F-004-reprogramar.md# F-004 — Reprogramar una reserva (el QUÉ, escrito antes del código) **Qué:** el cliente puede mover su reserva confirmada a otro día y hora, en la misma cancha. **Reglas** 1. Se puede reprogramar hasta dos horas antes del inicio original. Con menos, no. 2. La seña ya pagada vale para la fecha nueva; no se cobra otra. 3. La fecha nueva respeta la regla 1 del archivo raíz (no superposición), sin contar la reserva que se está moviendo. 4. Una reserva reprogramada, si después se cancela, NO reembolsa la seña, aunque falten más de 24 horas. 5. Se avisa al cliente con la fecha nueva. **Fuera:** no se cambia de cancha ni de precio; para eso, cancelar y reservar de nuevo. **Criterios de aceptación** - [ ] reprogramar a un horario libre devuelve la reserva con inicio y fin nuevos, mismo pagoId, estado CONFIRMADA - [ ] reprogramar a un horario que se pisa con otra reserva confirmada de la cancha → SUPERPOSICION_DE_RESERVA - [ ] reprogramar la reserva sobre su propio horario corrido (18–19 a 18:30–19:30) funciona - [ ] con menos de dos horas para el inicio original → error ANTICIPACION_INSUFICIENTE - [ ] una reserva reprogramada que se cancela con más de 24 h → no hay reembolso - [ ] una reserva cancelada o inexistente no se puede reprogramar → RESERVA_INEXISTENTE - [ ] se envía una notificación con la fecha nueva
02
Ask it to implement — without assuming. Pedile que lo implemente sin asumir.
Run this — with specCorré esto — con specclaude -p "Leé CANCHA-LIBRE.md y docs/features/F-004-reprogramar.md. Implementá F-004 exactamente como está escrito: código, tests para cada criterio de aceptación, y actualizá la documentación del módulo. No tomes decisiones de negocio que no estén en F-004; si algo falta, decímelo en vez de asumirlo. Al final corré los tests y el gate."
03
Verify. npm test (one test per criterion) · npm run gate. Read the end of the answer: the list of "what F-004 does not define" is what you still have to write — add it to the document, not the code. Verificá. npm test (un test por criterio) · npm run gate. Leé el final de la respuesta: la lista de "lo que F-004 no define" es lo que te falta escribir. Agregalo al documento, no al código.
04
The question. In the same session: La pregunta. En la misma sesión:
Ask the AIPreguntale a la IAclaude -p "Acabás de implementar F-004 a partir de docs/features/F-004-reprogramar.md, que escribí antes de pedirte el código. ¿Qué diferencia debería hacer que te diera ese documento antes que el código, comparado con pedirte 'agregá reprogramar reservas' y nada más? Cinco líneas como máximo."
Compare its answer with the one in the video. It won't be identical — check whether it says the same thing. Compará su respuesta con la del video. No va a ser idéntica; fijate si dice lo mismo.
Without the spec, the machine made a business decision for you and moved on. With it, the machine built exactly what you wrote — and told you what you left undecided. That is the whole lab: the order. Sin la spec, la máquina tomó una decisión de negocio por vos y siguió. Con ella, la máquina construyó exactamente lo que escribiste — y te dijo qué dejaste sin decidir. Esa es toda la práctica: el orden.

On your own project Hacelo en el tuyo

same steps, your codebase los mismos pasos, tu código
01
Pick one small feature of your project that doesn't exist yet. Elegí una funcionalidad chica de tu proyecto, que no exista todavía.
02
Write its WHAT in the same shape: what it is, the rules (your decisions), what's out of scope, testable acceptance criteria. Escribí su QUÉ con la misma forma: qué es, las reglas (tus decisiones), qué queda afuera, criterios de aceptación verificables.
03
Use the step-02 prompt, swapping the root file name for yours (AGENTS.md, CLAUDE.md, or whatever your tool reads). Usá el prompt del paso 02, cambiando el nombre del archivo raíz por el tuyo (AGENTS.md, CLAUDE.md o el que use tu herramienta).
04
Steps 03 and 04 the same. Paso 03 y paso 04 iguales.
No root file or tests in your project? Doesn't matter for this lab — the WHAT is enough. The root file comes in Lab 4; the gates that stop the build, in Lab 3. ¿Tu proyecto no tiene archivo raíz ni tests? No importa para este práctico: el QUÉ alcanza. El archivo raíz lo armamos en la Práctica 4; los tests que frenan, en la Práctica 3.

What this lab does not teach Lo que esta práctica no enseña

one thing at a time una cosa a la vez

How to write a complete spec (video 14 and /spec), how to make the AI test the live system (Lab 2), or the gates (Lab 3). Here it's one thing only: the order. Cómo escribir una spec completa (video 14 y /spec), ni cómo hacer que la IA pruebe el sistema vivo (Práctica 2), ni los gates (Práctica 3). Acá es una sola cosa: el orden.

← Course index← Índice del curso Lab 2: test your live app →Práctica 2: probá tu app viva →