Intent-Driven Development
Desarrollo con agentes de IA en el que la intención (objetivo, restricciones y criterios de aceptación) se escribe explícita para que el agente acierte.
Pronunciación
Qué es
Intent-Driven Development (IDD) es un enfoque emergente para desarrollar software con agentes de AI donde:
- El desarrollador hace explícita la intención: qué se quiere lograr, restricciones y criterios de aceptación
- Esa intención se trata como un artefacto de primera clase (no un prompt suelto) y se acompaña del contexto necesario
- La AI genera el código contra esa intención
- El desarrollador revisa, verifica y refina el resultado
Nota: es un término reciente y sin definición estándar. Lo usan, por ejemplo, intent-driven.dev (“hacer explícita tu intención y estructurar el contexto a su alrededor, para que los agentes produzcan lo que realmente quisiste decir”) y consultoras como Keyhole Software. Está muy relacionado con el spec-driven development.
De código a intención
┌─────────────────────────────────────────────────────────┐
│ EVOLUCIÓN DEL DESARROLLO │
├─────────────────────────────────────────────────────────┤
│ │
│ 1940s-50s: Código máquina y ensamblador │
│ → MOV AX, 5 │
│ │
│ Desde fines de los 50: Lenguajes de alto nivel │
│ → int x = 5; │
│ │
│ 2000s: Frameworks │
│ → const user = await User.findById(id); │
│ │
│ 2020s: Copilot/Autocompletado │
│ → Escribe inicio, AI completa │
│ │
│ Mediados de 2020s: Intent-Driven Development │
│ → "Crea endpoint para obtener usuario por ID │
│ con validación y manejo de errores" │
│ → AI genera todo el código │
│ │
└─────────────────────────────────────────────────────────┘
Cómo funciona
Flujo tradicional
Requisito → Diseño → Código línea por línea → Test → Deploy
↓
Desarrollador escribe CADA línea de código
Flujo Intent-Driven
Intención → AI genera código → Desarrollador revisa → Refinamiento → Deploy
↓
Desarrollador describe QUÉ quiere, no CÓMO hacerlo
Ejemplos prácticos
Ejemplo 1: Crear un endpoint
INTENCIÓN:
"Necesito un endpoint GET /api/users/:id que:
- Valide que el ID sea un UUID válido
- Busque el usuario en la base de datos
- Retorne 404 si no existe
- Retorne el usuario sin el campo password"
AI GENERA:
// app/api/users/[id]/route.ts (Next.js App Router)
import { z } from "zod";
import { db } from "@/lib/db";
const paramsSchema = z.object({
id: z.string().uuid("ID must be a valid UUID"),
});
export async function GET(
req: Request,
{ params }: { params: Promise<{ id: string }> }
) {
const parsed = paramsSchema.safeParse(await params);
if (!parsed.success) {
return Response.json({ error: "Invalid ID" }, { status: 400 });
}
const { id } = parsed.data;
const user = await db.user.findUnique({
where: { id },
select: {
id: true,
email: true,
name: true,
createdAt: true,
// password excluded
},
});
if (!user) {
return Response.json({ error: `User ${id} not found` }, { status: 404 });
}
return Response.json(user);
}
Ejemplo 2: Refactoring
INTENCIÓN:
"Refactoriza este componente para usar React Query
en lugar de useEffect + useState para el fetch"
AI analiza el código actual y genera la versión refactorizada
manteniendo el mismo comportamiento pero con mejor manejo de estado.
Niveles de abstracción
| Nivel | Ejemplo de intención | Complejidad |
|---|---|---|
| Micro | “Agrega validación de email” | Baja |
| Función | “Crea función de autenticación JWT” | Media |
| Feature | “Implementa sistema de notificaciones” | Alta |
| Arquitectura | “Migra a microservicios” | Muy alta |
Mejores prácticas
1. Sé específico en la intención
❌ "Haz un login"
✅ "Crea un flujo de login con:
- Formulario con email y password
- Validación client-side con Zod
- Llamada a /api/auth/login
- Manejo de errores con toast
- Redirección a /dashboard en éxito"
2. Proporciona contexto
❌ "Agrega un botón"
✅ "Agrega un botón de 'Guardar cambios' al formulario
de perfil que:
- Use el componente Button existente
- Esté deshabilitado mientras no hay cambios
- Muestre loading mientras guarda"
3. Itera en refinamientos
Intención inicial → Código generado →
"Ahora agrega tests" →
"Mejora el manejo de errores" →
Código final
Herramientas que soportan IDD
| Herramienta | Fortaleza |
|---|---|
| Claude Code | Contexto de repositorio completo |
| Cursor | Integración IDE profunda |
| GitHub Copilot | Integración con GitHub |
El rol del desarrollador cambia
ANTES: DESPUÉS:
├── Escribir código ├── Definir intenciones claras
├── Debuggear syntax ├── Revisar código generado
├── Buscar documentación ├── Validar lógica de negocio
└── Copiar/pegar de Stack └── Guiar refinamientos
Overflow
Limitaciones actuales
- Contexto limitado - AI no siempre entiende todo el proyecto
- Alucinaciones - Puede generar código incorrecto
- Seguridad - Requiere revisión humana siempre
- Casos edge - Puede ignorar escenarios límite
Términos relacionados
- Agentic AI - AI que ejecuta tareas autónomamente
- Repository Intelligence - AI que entiende tu código
- Prompt Engineering - Arte de escribir buenas intenciones
Recuerda: Intent-Driven Development no reemplaza al desarrollador—cambia su rol de “escribir código” a “dirigir y validar”. El conocimiento técnico sigue siendo esencial para revisar lo que genera la AI.