Main Branch

Fundamentals first, always

Artículos

Construyendo una Automatización de Invitados con IA usando el Copilot SDK

Cómo construí un workflow de GitHub Actions que lee las solicitudes de invitados y genera mensajes de bienvenida personalizados usando el Copilot SDK. La clave no es reemplazar la atención humana—es darte un mejor punto de partida.

Andrea Griffiths 9 min de lectura 🌐 Read in English
AI GitHub Actions Automatización Copilot SDK Experiencia de Desarrollador

Construyendo una Automatización de Invitados con IA usando el Copilot SDK

Cada semana en Open Source Friday, recibimos a mantenedores de código abierto en nuestro livestream. Cuando un invitado queda confirmado, alguien del equipo etiqueta el issue para activar una acción que escribe un mensaje de bienvenida y comparte las instrucciones de preparación. A partir de ahí, creamos manualmente las publicaciones del evento y diseñamos una miniatura (si es que se puede llamar diseño a mi falta de sensibilidad visual).

¿El problema? Empezar desde cero cada vez significaba que recurríamos a la misma plantilla:

“¡Estás oficialmente programado para Open Source Friday! El stream comienza a la 1:00 PM ET. Por favor únete a las 12:45 PM ET para la preparación y pruebas técnicas.”

Funcionaba. Pero era aburrido, y teníamos mejor material justo ahí en el issue. Cada solicitud de invitado incluía los detalles de su proyecto, su background, y de qué querían hablar. Simplemente no lo estábamos aprovechando.

Así que construí una automatización que lee su solicitud y escribe un borrador personalizado. Cuando un invitado menciona que está emocionado de hablar sobre su herramienta CLI que ayuda a los desarrolladores a depurar más rápido, el workflow captura eso y genera:

“Estamos ansiosos por escuchar sobre tu herramienta CLI y cómo está ayudando a los desarrolladores a depurar más rápido. Tu enfoque para resolver este problema suena exactamente como lo que nuestra audiencia necesita escuchar.”

No es perfecto, pero es muchísimo mejor que empezar con un cuadro de comentarios vacío.

Lo que quería aquí no era reemplazar la atención humana. Solo darnos un mejor punto de partida.

Qué hace

Un workflow de GitHub Actions que se activa cuando agregamos la etiqueta scheduled al issue de un invitado. Automáticamente:

  1. Analiza la solicitud del invitado (nombre, handle de GitHub, proyecto y bio)
  2. Genera un borrador de mensaje de bienvenida personalizado usando el Copilot SDK
  3. Crea una miniatura promocional usando Puppeteer para automatizar nuestro generador de miniaturas
  4. Publica todo como un comentario estructurado que podemos revisar y personalizar más

La automatización no reemplaza la revisión humana. Nos da un borrador que ya extrae lo que escribieron, así que pasamos nuestro tiempo refinando en lugar de empezar desde un cuadro de comentarios vacío.

¿Por qué el Copilot SDK?

Quería que la automatización extrajera las partes interesantes de cada solicitud y nos diera un borrador que realmente sonara humano. El Copilot SDK hace esto posible sin tener que construir toda la infraestructura yo misma.

El SDK está en technical preview, y te da acceso programático a GitHub Copilot a través de una API simple de JavaScript. No necesitas lidiar con peticiones HTTP crudas ni configurar la autenticación tú mismo.

Esto es lo que lo hace útil:

Conversaciones multi-turno. Las sesiones mantienen el contexto a través de múltiples peticiones. Si quisieras construir algo más complejo que un solo prompt-respuesta (como un chatbot que recuerda preguntas anteriores), el SDK maneja eso.

Herramientas personalizadas. Puedes definir funciones que Copilot puede invocar durante las conversaciones. Por ejemplo, podrías darle una herramienta para obtener issues de GitHub o consultar tu base de datos, y Copilot decide cuándo usarla.

Gestión del ciclo de vida. El SDK inicia el CLI de Copilot, que se autentica usando los mismos mecanismos que el CLI mismo (login interactivo o tokens proporcionados por el entorno como GH_TOKEN/GITHUB_TOKEN con los permisos correctos), y luego hace proxy de tus peticiones a GitHub Copilot.

Para esta automatización, estoy usando el patrón más simple posible: un prompt entra, una respuesta sale. El prompt hace todo el trabajo pesado:

const promptLines = [
  'You are writing on behalf of the Open Source Friday team...',
  '',
  'Guest details:',
  '- Name: ' + guestName,
  '- Project: ' + projectName,
  '- About them (in their own words): ' + guestBackground,
  '',
  'Write a 2-3 sentence welcome message that:',
  '1. Greets them by name',
  '2. Matches their energy — if playful, be playful back; if formal, be warm but professional',
  '3. References something specific they said about themselves',
  '4. Shows genuine excitement about having them on the stream'
];

Esa instrucción de “igualar su energía” es lo que marca la diferencia. El workflow lee lo que el invitado escribió y refleja su tono de vuelta. A partir de ahí, ajustamos si es necesario o lo enviamos tal cual.

El stack

El Copilot SDK está disponible en Node.js, Python, Go y .NET. Elegimos la implementación de Node.js ya que Puppeteer (necesario para la generación de miniaturas) ya requería Node en el workflow. Un solo runtime, un solo paso de instalación, configuración más limpia.

Cómo funciona

La Arquitectura

El issue del invitado recibe la etiqueta "scheduled"

Se activa el workflow de GitHub Actions

1. Analizar issue → extraer datos del invitado
2. Copilot SDK → generar mensaje personalizado
3. Puppeteer → crear miniatura
4. Publicar comentario con todo

El equipo revisa y ajusta

El invitado recibe bienvenida personalizada

Paso 1: Analizar el issue

Los invitados envían a través de un formulario de issue de GitHub. El workflow extrae su información con regex:

const nameMatch = body.match(/### Name\s*\n\s*([^\n]+)/i);
const handleMatch = body.match(/### GitHub Handle\s*\n\s*@?([^\n\s]+)/i);
const projectMatch = body.match(/### Project Name\s*\n\s*([^\n]+)/i);

Nada elegante aquí. Los formularios de issues siguen un formato consistente, así que regex nos da lo que necesitamos. (Copilot me ayudó a escribir el regex, una cosa menos que depurar.)

Paso 2: Llamar al Copilot SDK

Por debajo, el SDK inicia el CLI de Copilot en modo servidor y se comunica con él a través de JSON‑RPC. Instalas el CLI una vez, luego agregas el SDK a tu proyecto, y el SDK gestiona el ciclo de vida del proceso del CLI por ti.

- name: Install dependencies
  run: |
    npm install -g @github/copilot
    npm install @github/copilot-sdk puppeteer

Así es como trabajan juntos:

Tu código (@github/copilot-sdk)

Copilot CLI (maneja auth, inicia servidor)

GitHub Copilot API (la IA real)

El SDK inicia el CLI, que se autentica usando tu GH_TOKEN y hace proxy de las peticiones a Copilot. Luego son solo unas pocas líneas de código:

const { CopilotClient } = await import('@github/copilot-sdk');

const client = new CopilotClient();
await client.start();

const session = await client.createSession();
const response = await session.sendAndWait({ prompt: prompt });

if (response && response.data && response.data.content) {
  personalizedMessage = response.data.content;
}

await session.destroy();
await client.stop();

El SDK maneja las sesiones y la limpieza. Paso el prompt y recibo de vuelta un borrador del mensaje.

Paso 3: Generar miniatura

Usando Puppeteer, el workflow abre nuestro generador de miniaturas, llena la información del invitado y captura el resultado:

const browser = await puppeteer.launch({ headless: true });
const page = await browser.newPage();

await page.goto('https://andreagriffiths11.github.io/thumbnail-gen/');
await page.type('#guestName', guestName);
await page.type('#username', handle);
await page.click('#generateBtn');

Puppeteer es básicamente automatización de navegador. Abre un navegador headless (sin GUI), navega a nuestro generador de miniaturas, llena los campos del formulario y extrae los datos del canvas. Esto supera hacer manualmente más de 50 miniaturas al año.

Paso 4: Publicar el comentario

Todo se ensambla en un comentario estructurado con el mensaje de bienvenida generado por IA, enlace de descarga de la miniatura, checklist de preparación y guía del invitado. Lo revisamos, hacemos cualquier ajuste, y el invitado recibe una bienvenida que muestra que realmente leímos su solicitud.

Activándolo

Un comando activa todo:

gh issue edit 195 --repo githubevents/open-source-friday --add-label "scheduled"

O simplemente haz clic en la etiqueta en la UI de GitHub. De cualquier manera, obtenemos un comentario de bienvenida estructurado en minutos que podemos revisar y enviar.

Lecciones aprendidas

Separa tus pasos. El análisis, la generación de IA y la creación de miniaturas son pasos separados del workflow. Una falla no rompe todo.

La ingeniería de prompts es trabajo real. Conseguir el tono correcto tomó iteración. El avance fue decirle a Copilot que igualara la energía del invitado, no solo que reconociera su proyecto.

Prueba con workflow_dispatch. Agregar un disparador manual hizo que depurar fuera mucho más fácil que esperar eventos de etiquetas:

on:
  issues:
    types: [labeled]
  workflow_dispatch:
    inputs:
      issue_number:
        description: 'Issue number to test with'
        required: true
        type: number

Puedes probar sin spamear tus issues reales.

La IA es un punto de partida, no la línea de llegada. La automatización nos da un borrador que ya está personalizado para la solicitud del invitado. Todavía revisamos cada mensaje antes de que salga, pero ahora estamos refinando en lugar de escribir desde cero.

Qué sigue

  • Borradores de copy para redes sociales generados automáticamente para promocionar episodios
  • Automatización de invitaciones de calendario

Pruébalo tú mismo

El Copilot SDK abre posibilidades para automatizaciones que te dan ventaja en tareas que necesitan un toque humano. Si tienes tareas de comunicación repetitivas (onboarding, respuestas, resúmenes) donde quieres ser personal pero no siempre tienes tiempo para empezar desde cero, este patrón podría ayudar.

La clave no es reemplazar la atención humana. Es darte un mejor punto de partida. Revisarás todo. Todavía agregarás personalidad. Pero en lugar de quedarte mirando un mensaje genérico, empiezas desde algo que ya está basado en quiénes son. Esa distinción importa. La automatización lee la solicitud, extrae las partes interesantes, y te da un borrador. Tú lo haces tuyo.

El código está en githubevents/open-source-friday si quieres ver el workflow completo.


Sobre la Autora: Andrea Griffiths es Senior Developer Advocate en GitHub, donde ayuda a equipos de ingeniería a adoptar y escalar tecnologías de desarrollo. Le apasiona hacer que los conceptos técnicos sean accesibles—tanto para humanos como para agentes de IA. Conéctate con ella en LinkedIn, GitHub, o Twitter/X.

Sobre la Autora: Andrea Griffiths es Senior Developer Advocate en GitHub, donde ayuda a equipos de ingeniería a adoptar y escalar tecnologías de desarrolladores. Le apasiona hacer conceptos técnicos accesibles—tanto para humanos como para agentes de IA. Conéctate con ella en LinkedIn, GitHub, o Twitter/X. · Leer en inglés