Skip to main content

Implementación de una característica a partir de un problema de GitHub

Asigne un GitHub problema a CLI de GitHub Copiloty, a continuación, dirija la conversación para implementar la característica.

CLI de GitHub Copilot puede leer un problema, proponer un GitHub plan de implementación y redactar cambios de código que cumplan los requisitos. Dado que el flujo de trabajo es conversacional, puede corregir las suposiciones, apuntar a los archivos pertinentes y refinar el enfoque tal como CLI de GitHub Copilot funciona.

Escenario de ejemplo

Imagine que trabaja en un equipo de plataforma que mantiene una API de facturación de Node.js interna que impulsa las suscripciones de los clientes. Un responsable de producto abre una incidencia en la que solicita un nuevo endpoint GET /subscriptions/{id}/plan que devuelva el plan asociado a una suscripción dada, junto con pruebas unitarias y una actualización de la especificación OpenAPI. La incidencia incluye el formato de respuesta deseado, los casos de error para suscripciones inexistentes o canceladas, y un enlace al endpoint existente /subscriptions/{id} que debe tomarse como referencia. Puede asignar la incidencia a CLI de GitHub Copilot y pedirle que genere la estructura base de la ruta, el controlador y las pruebas; luego, puede abrir una pull request.

Flujo de trabajo de ejemplo

CLI de GitHub Copilot puede leer el problema directamente desde GitHub, planear el trabajo, escribir el código, ejecutar las pruebas y abrir una solicitud de incorporación de cambios.

Poner el problema en contexto

Comience en la raíz del repositorio y haga referencia al problema por dirección URL o owner/repo#number. CLI de GitHub Copilot usa el GitHub servidor MCP para capturar el cuerpo del problema, los comentarios y los elementos vinculados y, a continuación, mantiene ese contexto disponible para el resto de la sesión.

Text
Read octo-org/billing-api#482 and any issues or PRs it links to. 
Summarize what needs to be implemented before we plan the work.

Borrador de un plan de implementación con /plan

Cambia al modo de planificación para que CLI de GitHub Copilot analice el cambio antes de modificar ningún archivo.

Text
/plan Implement the subscription lookup endpoint described in the issue. 
Follow the same conventions as the existing GET /subscriptions/{id} endpoint.

Nota:

La respuesta siguiente es un ejemplo. Las respuestas de Chat de Copiloto no son deterministas, por lo que puedes obtener una respuesta diferente a la aquí mostrada.

CLI de GitHub Copilot devuelve un plan similar al siguiente:

1. Add a `getPlanForSubscription` method in `src/services/subscriptionService.ts` that reuses the existing billing client, throws `NotFoundError` when the subscription or plan does not exist, and throws `CancelledSubscriptionError` when the subscription has been cancelled.
1. Add a `GET /subscriptions/:id/plan` route in `src/routes/subscriptions.ts`, mirroring the error handling in the sibling `GET /subscriptions/:id` route and mapping `CancelledSubscriptionError` to a `410` response.
1. Update `openapi/subscriptions.yaml` with the new path, response schema, and `404` and `410` responses.
1. Add unit tests in `test/services/subscriptionService.test.ts` and `test/routes/subscriptions.test.ts` covering the success case, missing subscription, cancelled subscription, and missing plan.
1. Run the test suite and update the changelog entry.

Revisa el plan, cuestiona cualquier cosa que no te parezca bien y pide a CLI de GitHub Copilot que lo revise antes de aprobarlo. Por ejemplo, puede responder con Use the existing error classes in src/errors—NotFoundError for missing subscriptions or plans and CancelledSubscriptionError for cancelled subscriptions rather than introducing new ones y hacer que actualice los pasos afectados.

Iniciar la implementación y dirigir según sea necesario

Apruebe el plan para empezar a codificar. CLI de GitHub Copilot funciona a través de los pasos uno a uno, mostrando cada edición antes de aplicarla. Si se dirige a una dirección incorrecta, interrumpa y redirija.

Por ejemplo, supongamos que CLI de GitHub Copilot añade una nueva consulta a la base de datos en tu método getPlanForSubscription en lugar de reutilizar el cliente de facturación que tu equipo ha estandarizado. Puedes detenerlo y dirigirlo:

Text
Don't add a new query here. The billing client in 
src/clients/billingClient.ts already exposes a getPlan method. 
Use that and update the service to handle its NotFound response.

CLI de GitHub Copilot revisa el código y continúa con los pasos del plan restantes.

Generación y ejecución de pruebas unitarias

Cuando CLI de GitHub Copilot llega a la fase de pruebas, genera la estructura base de pruebas que coincide con los patrones de tus archivos de pruebas existentes. Para el endpoint de plan, podría añadir casos como los siguientes:

  • Devuelve el registro de plan de una suscripción activa.
  • Devuelve 404 cuando la suscripción no existe.
  • Devuelve 410 cuando se ha cancelado la suscripción.
  • Devuelve 404 cuando la suscripción no tiene ningún plan adjunto.

Después de escribir las pruebas, CLI de GitHub Copilot las ejecuta en el terminal para que pueda ver los resultados inmediatamente.

Text
Run the test suite for the new endpoint and fix any failures.

Si se produce un error en una prueba, CLI de GitHub Copilot lee la salida del error, actualiza la implementación y vuelve a ejecutarse hasta que el conjunto de pruebas sea verde. Revise cada corrección para asegurarse de que aborda la causa principal en lugar de enmascararla.

Revisión de los cambios con /diff

Use /diff para ver una vista consolidada de los cambios realizados en la sesión.

Text
/diff

Si algo parece incorrecto, pida CLI de GitHub Copilot que lo revise antes de confirmarlo. Por ejemplo, puede responder con Revert the formatting changes in src/routes/subscriptions.ts to only keep the new route handler para limitar la diferencia a los cambios previstos.

Apertura de una solicitud de incorporación de cambios

Una vez implementada, probada y revisada la característica, pida CLI de GitHub Copilot que abra una solicitud de incorporación de cambios. Usa el servidor MCP GitHub para subir la rama y crear la solicitud de extracción.

Text
Commit the changes on a new branch, push it, and open a pull request 
against main. Link it to octo-org/billing-api#482 and summarize the 
implementation, the tests added, and any follow-up work.

CLI de GitHub Copilot devuelve la URL de la solicitud de extracción para que puedas continuar a partir de ahí.

Lectura adicional