Pinguy Learning
Temario · lección 39 de 74
0Empieza aquí
1Por qué fallan los agentes
2Qué es un harness
3Patrones de agentes
4Herramientas
5Ingeniería de contexto
6El repositorio como memoria
7Tareas largas
8Alcance y “hecho” de verdad
9Observabilidad y estado limpio
10Loops y grafos
11Harness reales
12Proyecto final
Tareas largas· 7 min de lectura

El contrato de inicialización

En 30 segundos

Un documento corto y un script init que dicen cómo instalar, arrancar y probar, cómo se organiza el proyecto y qué tareas hay. Es lo primero que lee cada sesión nueva.

Las instrucciones de la lavadora

Cuando compras una lavadora, el manual dice dónde enchufarla, cómo ponerla en marcha y cómo saber si funciona. Nadie lo adivina probando botones.

El contrato de inicialización (en la lección, «contrato de bootstrap») es ese manual para el proyecto. Recoge las condiciones bajo las que una sesión nueva puede trabajar sin ambigüedad: puede arrancar, puede probar, ve el progreso y sabe por dónde seguir.

Pieza 1: el documento del contrato

Tres partes: comandos, estado y estructura. Ejemplo para copiar y adaptar:

# Contrato de inicialización

## Comandos
- Instalar dependencias: `make setup`
- Arrancar en desarrollo: `make dev`
- Ejecutar pruebas: `make test`
- Verificación completa: `make check`

## Estado actual
- Dependencias instaladas y bloqueadas
- Pruebas configuradas (Vitest + React Testing Library)
- Prueba de ejemplo pasando (1/1)
- Reglas de lint configuradas

## Estructura
- src/ código fuente
- src/components/ componentes
- src/api/ cliente de la API
- tests/ pruebas

Los nombres de herramientas son del ejemplo de la lección; sustitúyelos por los de tu proyecto. Lo importante es que haya un único comando canónico de arranque y uno de verificación.

Pieza 2: el script de arranque

La plantilla init.sh del curso es un script corto que hace tres cosas: sincroniza dependencias, ejecuta la verificación base y muestra el comando de arranque (solo lo lanza si se lo pides con RUN_START_COMMAND=1). Su esqueleto:

#!/usr/bin/env bash
set -euo pipefail

INSTALL_CMD=(npm install)
VERIFY_CMD=(npm test)
START_CMD=(npm run dev)

"${INSTALL_CMD[@]}"      # 1. dependencias
"${VERIFY_CMD[@]}"       # 2. verificación base
echo "Arranque: ${START_CMD[*]}"   # 3. cómo arrancar

La versión completa está en las plantillas del curso; cambia las tres variables por las de tu repo. Para Windows existe la misma idea en PowerShell. Así «arrancar el proyecto» deja de ser un conjunto de pasos que hay que recordar y pasa a ser un solo comando.

Pieza 3: el desglose de tareas

El proyecto entero se divide en una lista ordenada de tareas, cada una con su criterio de aceptación:

## Tarea 1: Autenticación básica
- Implementar middleware JWT
- Añadir endpoints de login y registro
- Aceptación: pytest tests/test_auth.py pasa entero

## Tarea 2: Página de perfil
- CRUD de perfil y formulario de edición
- Aceptación: pytest tests/test_profile.py pasa entero

Más adelante veremos que este desglose evoluciona hacia la lista de funciones en formato de máquina. De momento basta con que cada tarea diga cómo se comprueba.

Revisión de salida del inicializador

Antes de cerrar la sesión de inicialización pregúntate:

  • ¿Hay un comando de arranque canónico?
  • ¿Hay un comando de verificación canónico?
  • ¿Existe un primer artefacto de progreso?
  • ¿Hay un primer commit estable?
  • ¿Hay una lista de funciones visible para las sesiones posteriores?

Cinco síes y tienes unos cimientos útiles.

Comprueba lo aprendido

¿Qué debe ofrecer el contrato de inicialización para cada acción clave (arrancar, verificar)?

Un comando único y probado elimina las conjeturas; con varias opciones o con prosa vaga, cada sesión improvisa un camino distinto.

Fuentes: Learn Harness Engineering, lección 06 · Learn Harness Engineering, plantilla init.sh · Anthropic, Effective harnesses for long-running agents

¡Hecho! Pinguy crece.Siguiente: Una cosa a la vez →