Categorías
Desarrollo ia

De Necesidad a Feature en 15 minutos: caso de uso con Cursor 2.0

En este artículo práctico aprenderemos a usar Cursor 2.0, en modo Agentes, para implementar una feature nueva en 15 minutos

El Problema

La otra tarde, Alberto nos planteó una necesidad clara y sencilla sobre el directorio de empleados de la compañía (un desarrollo que habíamos actualizado recientemente):

«Estaría bien poder buscar los contactos del directorio por email»

En nuestro Directorio, los usuarios podían buscar empleados por apellidos (además de por centro de trabajo y/o departamento), pero no por su correo electrónico. Una funcionalidad que, aunque simple y muy acotada, requería cambios coordinados entre el frontend y el backend.

La Solución: Cursor 2.0 en Modo Agente

Decidimos abordar el problema utilizando el modo Agente de Cursor 2.0, dividiéndolo en dos fases distintas con prompts específicos.

AGENTE 1: Planificación e Implementación

El primer agente recibió la primera instrucción con el Modo Thinking de Sonnet 4.5:

Planifica un cambio en Front, y si es necesario en Back, para que el campo de búsqueda por emails busque también alternativamente por el correo electrónico del usuario

A continuación se acotó la búsqueda por el campo de email correcto:

Incorpora solamente la búsqueda por el campo de email que se muestra en el front asociado al usuario

Finalmente, una vez realizados los cambios se le indicó que los incorporase a una rama aparte del repositorio:

Crea una rama en ambos proyectos (front y back) con los cambios, llamada feature/busqueda-mail

Resultado: Planificación Detallada

El agente analizó el código y planificó los cambios necesarios:

Cambios en Backend (SQL Query):

  • Modificación del filtro en SpringJdbcDirectorioDao.java
  • Nueva búsqueda adicional en ambas fuentes de email
  • Uso del operador OR para que coincida con cualquiera de los tres campos
  • Mantenimiento del parámetro :apellidos con formato LIKE para búsqueda parcial

Cambios en Frontend (UI):

  • Actualización del label del campo en home.component.html
  • Nueva descripción: «Filtrar Apellidos o Email» y placeholder
  • Texto más descriptivo para el usuario

Review de Cambios

El agente implementó los cambios de forma limpia, manteniendo la estructura existente y agregando la funcionalidad de manera no invasiva.

AGENTE 2: Integración

Para el segundo agente, usamos un prompt más directo con menos contexto:

cambia en ambos proyectos a la rama demo-vitaly y haz un merge de las ramas de cada proyecto llamadas feature/busqueda-mail sobre demo-vitaly

Nota sobre buenas prácticas: Como comentamos después, para este caso hubiera funcionado mejor usar cherry-pick en lugar de merge, especialmente si queremos mantener un historial más limpio de commits específicos y no mergear cambios no deseados.

El Resultado

Los cambios quedaron desplegados y funcionando correctamente:

Búsqueda por Email (nueva funcionalidad) manteniendo la funcionalidad original

Como podemos ver en las capturas, ahora es posible:

  • Buscar empleados por sus apellidos (funcionalidad original)
  • Buscar empleados por su correo electrónico completo o parcial
  • El sistema busca combinando los distintos campos: centro, departamento y/o apellidos o email

Aprendizajes

Lo que Funcionó Bien

  1. División en agentes: Separar la implementación del merge nos permitió tener contextos más limpios
  2. Modo Thinking: Permitió al agente analizar el código existente antes de proponer cambios
  3. Especificidad en los prompts: Indicar exactamente qué ramas crear y cómo nombrarlas

Áreas de Mejora

  1. Estrategia de integración: Para casos como este, cherry-pick habría sido más apropiado que merge
  2. Testing: Podríamos haber incluido en el prompt la creación de tests automáticos
  3. Documentación: Agregar actualización automática de la documentación técnica (ups!)

Conclusión

De una petición informal de Alberto a una funcionalidad desplegada y funcionando en minutos. El modo Agente de Cursor 2.0 demostró ser una herramienta poderosa para:

  • Analizar código existente
  • Planificar cambios coordinados entre frontend y backend
  • Implementar modificaciones siguiendo las mejores prácticas
  • Gestionar el control de versiones

¿Resultado? Una mejora significativa en la experiencia de usuario del Directorio Vitaly, implementada de forma rápida, limpia y efectiva.

Por Luis Miguel Martín

Trabajo como Jefe de Equipo de Desarrollo en Vitaly. Soy un apasionado del desarrollo front y el UX, enamorado de la filosofía DevOps, que monta en bicicleta... Puedes seguirme en Linkedin o Strava

Deja un comentario