Chaining Prompts con GitHub Copilot: Limitaciones y Workarounds en Entornos Empresariales
Migración a realizar
Realizaremos la migración de un proyecto "antiguo" de Java 8 integrado con Apache Camel a Java 17 integrado con Spring Boot 3.x. Se usará GitHub Copilot Chat con su característica "Build with Agent" para realizar la migración usando la técnica de Chaining Prompts.
Prompt Chaining
Usaremos la técnica de Prompt Chaining para realizar la migración de forma eficiente y productiva que consiste en hacer una secuencia de prompts para realizar una tarea. Por ejemplo, si queremos realizar una migración de un proyecto de Java 8 a Java 17, podemos hacer una secuencia de prompts como:
Prompt 1: "¿Qué métodos y clases hay en el proyecto?"
Prompt 2: "¿Qué métodos llama el endpoint de la ruta /api/v1/users?"
Prompt 3: "¿En qué orden se deben migrar los métodos de java 8 a java 17?"
Prompt 4: "Realiza la migración de los métodos de java 8 a java 17 respetando el orden establecido en el prompt anterior"

¿Por qué usar GitHub Copilot Chat y Build with Agent?
Es válido afirmar que existen herramientas automatizadas que permiten realizar Prompt Chaining de una mejor manera; de hecho, aquí te dejo una lista (ver la sección de herramientas especializadas). También es justo decir que, al usar GitHub Copilot, en muchos casos estamos forzando un proceso manual cuando, idealmente, no debería ser así.
Sin embargo, como es mi caso y el de muchos desarrolladores, fuera de algún pasatiempo personal como este blog, en nuestros trabajos formales la única herramienta de la que disponemos suele ser un asistente de programación como este, especialmente cuando realizamos tareas repetitivas de migración.
Bajo este contexto, si conocemos los estándares a seguir, las buenas prácticas y la arquitectura de nuestro sistema, podemos sacarle un verdadero provecho a GitHub Copilot. Sorteando sus limitaciones y/o generalidades —explicadas en la sección de limitaciones—, es posible realizar Prompt Chaining de forma adecuada, o al menos acercarnos lo más posible, para ejecutar nuestro trabajo de manera eficiente y productiva, enfocándonos en lo que realmente importa: revisar el código funcional.
Forma adecuada de hacer Prompts Chaining
Herramientas especializadas para Chaining Prompts
Si quieres hacer chaining prompts real y automatizado, estas herramientas son más adecuadas:
LangChain (Python/JavaScript): Diseñado específicamente para esto. Permite crear cadenas complejas de prompts.
ChatGPT API con scripts: Puedes programar la secuencia de llamadas y controlar el flujo completamente.
Cursor: Tiene mejor contexto conversacional, puedes hacer chaining más efectivo en el chat y mantiene historial de la sesión.
Claude API / Anthropic: Excelente para mantener contexto largo y buenos para chaining complejo.
Limitaciones de GitHub Copilot
Contexto limitado
Copilot pierde información en conversaciones largas.
Cómo manejarlo:
- Reiniciar la conversación
- Usar
anotaciones.md - Máx. 3–4 pasos por cadena
Sin memoria entre sesiones
Al cerrar VS Code, olvida todo.
Cómo manejarlo:
- Documentar cada sesión
- Prompts auto-contenidos
Análisis de código limitado
No analiza proyectos grandes de una sola vez.
Cómo manejarlo:
- Trabajar por capas
- Controller → Service → Repository
No sigue el progreso
No sabe qué ya migraste ni qué falta.
Cómo manejarlo:
- Checklist manual
- Prompts de estado
Refactor limitado
Solo refactoriza un archivo a la vez.
Cómo manejarlo:
- Migración incremental
- Orden por dependencias
No gestiona el build
No actualiza dependencias automáticamente.
Cómo manejarlo:
- Pedir cambios explícitos
- Checklist de configuración
| Limitación | Qué pasa | Cómo manejarlo |
|---|---|---|
| Contexto limitado | Copilot pierde información en conversaciones largas. |
|
| Sin memoria entre sesiones | Al cerrar VS Code, olvida todo. |
|
| Análisis de código limitado | No analiza proyectos grandes de una sola vez. |
|
| No sigue el progreso | No sabe qué ya migraste ni qué falta. |
|
| Refactor limitado | Solo refactoriza un archivo a la vez. |
|
| No gestiona el build | No actualiza dependencias automáticamente. |
|
Prerrequisitos
Para este ejemplo práctico, utilizaremos un proyecto base disponible en este repositorio público de GitHub: Springboot-ApacheCamel-Rest. Se trata de una API REST desarrollada con Spring Boot 2.x, Apache Camel 3.x y Java 8, que migraremos a Spring Boot 3.x con Java 17, eliminando Apache Camel en favor de controladores REST estándar.
Paso 1: Buscar el proyecto base
Comenzamos consultando a GitHub Copilot para que nos ayude a identificar y descargar el proyecto que servirá como base para nuestra migración.

Paso 2: Activar Build with Agent
Antes de comenzar, verificamos que la característica "Build with Agent" de GitHub Copilot Chat esté activa, ya que la necesitaremos para ejecutar los prompts de forma secuencial.

Paso 3: Preparar el proyecto
Una vez descargado el proyecto, creamos una carpeta llamada "instrucciones" donde colocaremos los archivos de prompts que ejecutaremos en secuencia para realizar la migración de manera ordenada.

Ejecutando la migración
A continuación se presentan los 4 prompts que utilizaremos en secuencia para completar la migración. Haz clic en cada uno para ver su contenido completo:
Ejecutando los prompts
Con la preparación completa, procedemos a indicarle a GitHub Copilot que ejecute los prompts en secuencia. El asistente procesará cada archivo de la carpeta "instrucciones" de forma ordenada.

Progreso de la migración por lotes
A medida que ejecutamos los prompts, GitHub Copilot procesa cada lote y documenta el progreso en el archivo @anotaciones.md. Los lotes del 1 al 4 corresponden a diferentes capas de la aplicación. Haz clic en cada botón para ver la captura del resultado:
Finalizando la migración
Una vez completada la migración del código, debemos actualizar la configuración del proyecto para utilizar Java 17 oficialmente. Esto incluye modificar el archivo pom.xml según corresponda.

Resolviendo errores comunes
El proceso de migración rara vez es perfecto en el primer intento. Al ejecutar el proyecto, es probable encontrar algunos errores. En este caso particular, fue necesario actualizar y agregar dependencias faltantes. Un error muy común es el cambio de namespace de javax a jakarta, requerido para Java 17 y Spring Boot 3.x.

Validación final
Una vez resueltos los errores de compilación y configuración, ejecutamos el proyecto y procedemos a validar los endpoints mediante Postman. Esta verificación nos permite confirmar que la migración se completó exitosamente y que la funcionalidad permanece intacta.

Las pruebas confirman el éxito de la migración. El proyecto se ejecuta sin errores y los endpoints responden correctamente, retornando los datos esperados con la misma estructura y funcionalidad que la versión original.

Conclusiones
GitHub Copilot Chat con Build with Agent representa una herramienta valiosa para migraciones y refactorizaciones, especialmente en entornos laborales donde las opciones de IA están restringidas. Si bien presenta limitaciones significativas en comparación con herramientas especializadas en chaining prompts, aplicando las estrategias adecuadas y manteniendo una documentación rigurosa, es posible maximizar la productividad y completar trabajos complejos de manera eficiente.
La experiencia práctica demostró que el proceso rara vez es perfecto en el primer intento. Surgieron errores relacionados con cambios de librerías, como la transición de javax a jakarta, que requirieron intervención manual. No obstante, el enfoque de chaining prompts combinado con la documentación centralizada en @anotaciones.md permitió mantener el contexto y completar la migración de manera ordenada y sistemática.
El éxito radica en tres pilares fundamentales: reconocer las limitaciones inherentes de la herramienta, implementar workarounds efectivos para sortearlas, y mantener una documentación meticulosa que compense la falta de persistencia y memoria del contexto entre sesiones. Esta técnica demostró ser viable para migrar exitosamente un proyecto de Java 8 con Apache Camel a Java 17 con Spring Boot 3.x, validando su aplicabilidad en entornos empresariales con restricciones de herramientas.
Artículos relacionados
Si te interesa conocer más sobre automatización y desarrollo: