Workflow: De Spec a Codigo con IA¶
Proposito¶
Proceso paso a paso para convertir una spec.md en codigo funcional, testeado, y listo para produccion usando IA como copiloto.
Cuando usarlo¶
- Cada vez que empiezas a implementar una feature nueva.
- Como checklist para asegurar que no te saltas ningun paso.
1. El Pipeline Spec-to-Code¶
spec.md
|
v
[1. Validar Spec] -----> Spec completa y sin ambiguedades
|
v
[2. Generar Domain Model] -----> Entidades, VOs, Aggregates
|
v
[3. Generar API Contract] -----> Endpoints, requests, responses
|
v
[4. Generar BDD Scenarios] -----> Given/When/Then testeables
|
v
[5. Implementar Domain Layer] -----> Services, entities, VOs
|
v
[6. Implementar Infrastructure] -----> Repos, controllers, DTOs
|
v
[7. Implementar Tests] -----> Unit + integration + E2E
|
v
[8. Review y Refinamiento] -----> Code review + ajustes
|
v
Codigo en produccion
2. Paso a Paso con Ejemplos¶
Paso 1: Validar la Spec¶
Input: feature-booking-system.spec.md
Prompt:
Revisa esta spec de feature. Identifica:
1. Ambiguedades (cosas que pueden interpretarse de 2 formas)
2. Reglas de negocio que faltan
3. Edge cases no cubiertos
4. Inconsistencias entre secciones
[pegar spec]
Output esperado: Lista de issues. Los resuelves antes de seguir.
Criterio para avanzar: La spec no tiene ambiguedades y cubre todos los flujos.
Paso 2: Generar Domain Model¶
Input: Spec validada + ubiquitous language
Prompt:
A partir de esta spec, genera el modelo de dominio:
1. Entidades con sus atributos e invariantes
2. Value Objects con reglas de validacion
3. Aggregates con sus limites
4. Domain Events
Usa TypeScript. Sigue los nombres del ubiquitous language:
[pegar ubiquitous language relevante]
Spec:
[pegar secciones 3 y 4 de la spec: reglas de negocio y modelo de datos]
Output esperado: Clases TypeScript de dominio.
Que revisar: - Las invariantes se validan en el constructor o metodos de negocio? - Los value objects son inmutables? - Las transiciones de estado son explicitas?
Paso 3: Generar API Contract¶
Input: Spec + domain model
Si ya tienes el API contract en 04-api-contracts/, este paso es verificar que el contrato y el domain model estan alineados.
Prompt:
Verifica que este API contract es consistente con el domain model:
API Contract:
[pegar api-bookings.md]
Domain Model:
[pegar entidades generadas]
Identifica discrepancias entre:
- Nombres de campos (API vs dominio)
- Campos faltantes en la API
- Validaciones del dominio no reflejadas en la API
Paso 4: Generar BDD Scenarios¶
Input: Spec (seccion criterios de aceptacion) + reglas de negocio
Prompt:
Convierte estos criterios de aceptacion en escenarios BDD
formato Gherkin (Given/When/Then):
Criterios:
[pegar criterios de aceptacion de la spec]
Reglas de negocio:
[pegar reglas]
Genera al menos:
- 1 scenario por happy path
- 1 scenario por cada flujo de error
- 1 scenario por cada edge case
Output esperado: Archivo estilo bdd-scenarios-booking.md.
Paso 5: Implementar Domain Layer¶
Input: Domain model + reglas de negocio + un servicio existente como ejemplo
Prompt:
Implementa el domain service para [nombre de la feature].
Domain model:
[pegar entidades y VOs generados]
Reglas de negocio a implementar:
[listar reglas]
Patron a seguir (ejemplo de servicio existente):
[pegar servicio existente como referencia]
Genera:
1. Domain service con toda la logica de negocio
2. Unit tests que cubran cada regla de negocio
3. Custom exceptions para cada caso de error
Que revisar: - Cada regla de negocio tiene un test? - Los tests fallan si rompes la logica? - No hay dependencias de infraestructura en el domain service?
Paso 6: Implementar Infrastructure Layer¶
Input: Domain service + API contract + controller existente como ejemplo
Prompt:
Implementa la capa de infraestructura:
1. Repository (TypeORM) para persistir las entidades:
[pegar entidades]
2. Controller (NestJS) con los endpoints:
[pegar API contract]
3. DTOs (class-validator) para validar requests:
[pegar request schemas del API contract]
Patron a seguir:
[pegar controller existente]
Paso 7: Implementar Tests¶
Input: BDD scenarios + codigo implementado
Prompt:
Genera integration tests para estos endpoints basandote en los BDD scenarios:
Scenarios:
[pegar BDD scenarios]
Codigo del controller:
[pegar controller]
Convenciones de testing del proyecto:
- Jest + Supertest
- BD de test que se limpia entre tests
- Helpers: seedDoctor(), loginAsPatient()
Genera tests que cubran cada scenario BDD.
Paso 8: Review y Refinamiento¶
Prompt de review final:
Haz un review completo de esta implementacion:
Domain Service:
[pegar]
Controller:
[pegar]
Tests:
[pegar]
Revisa:
1. Todas las reglas de negocio de la spec estan implementadas?
2. Hay bugs sutiles en edge cases?
3. Los tests realmente validan el comportamiento?
4. Hay problemas de seguridad?
5. Hay problemas de performance?
Spec original para referencia:
[pegar spec]
3. Tiempos Estimados por Paso¶
| Paso | Sin IA | Con IA | Nota |
|---|---|---|---|
| 1. Validar spec | 30 min | 10 min | La IA encuentra ambiguedades rapido |
| 2. Domain model | 2h | 30 min | Requiere revision humana cuidadosa |
| 3. API contract | 1h | 15 min | Mayormente generado de la spec |
| 4. BDD scenarios | 1h | 15 min | La IA es muy buena en esto |
| 5. Domain layer | 4h | 1.5h | La revision y ajuste toma mas que la generacion |
| 6. Infrastructure | 3h | 1h | Mucho boilerplate que la IA elimina |
| 7. Tests | 3h | 1h | Los BDD scenarios son excelente input |
| 8. Review | 1h | 30 min | Combinacion humano + IA |
| Total | ~15h | ~5h | ~3x mas rapido |
4. Criterios de Calidad del Output¶
Antes de considerar la feature "lista", verifica:
- Cada regla de negocio de la spec tiene un test que la valida.
- Los tests fallan cuando rompes la logica intencionalmente.
- El codigo sigue las convenciones del proyecto.
- No hay
anyen TypeScript. - Los errores tienen codigos especificos (no errores genericos).
- La API responde segun el contrato documentado.
- No hay datos sensibles expuestos en las respuestas.
- Un companero puede entender el codigo sin explicacion verbal.
Checklist de Completitud¶
- Pipeline completo documentado (8 pasos)
- Prompts especificos por paso
- Que revisar en cada paso
- Tiempos comparativos (con y sin IA)
- Criterios de calidad
- Revisada por otro ingeniero
Archivos relacionados¶
- prompt-engineering-guide.md - Como escribir prompts
- ai-workflow-daily.md - Flujo diario
- context-window-strategy.md - Gestion de contexto
- ../01-specs/_template.spec.md - Donde empieza el pipeline