OSS Reporter: Agente Inteligente con Mastra y TypeScript
Este repositorio contiene el código del workshop "Construyendo un Agente de Reporting Open Source con Mastra y TypeScript".
Requisitos Previos
Antes de comenzar el taller, asegúrate de tener instaladas las siguientes herramientas:
Configuración Inicial
-
Clona este repositorio.
-
Instala las dependencias:
pnpm install
-
Crea tu archivo de variables de entorno .env en la raíz del proyecto, tomando como base el archivo .env.example:
cp .env.example .env
-
Añade tus credenciales:
GOOGLE_GENERATIVE_AI_API_KEY="tu-api-key"
GITHUB_PERSONAL_ACCESS_TOKEN="tu-github-pat"
Módulo 1: Inicializando Mastra 🚀
Este repositorio ya viene con Mastra inicializado.
Si quieres repetir el proceso de scaffolding desde cero siguiendo la documentación actual de Mastra, puedes usar cualquiera de estas opciones:
pnpm create mastra
pnpm dlx create-mastra@latest
En este workshop partimos del proyecto ya creado, así que para el módulo 1 basta con revisar la estructura base y ejecutar Studio.
Estructura base generada
Los archivos principales del proyecto actual están en:
src/mastra/index.ts
src/mastra/agents/oss-reporter-agent.ts
src/mastra/mcp/github-mcp-client.ts
src/mastra/tools/repository-analysis-tools.ts
En este módulo, la adaptación principal consiste en limpiar el scaffold inicial y dejar un agente base enfocado en OSS Reporter.
Ejecutar Mastra Studio
Para arrancar el entorno de desarrollo local y acceder a la interfaz de prueba e interacciones:
pnpm run dev
Abre tu navegador en http://localhost:4111 e interactúa con el agente desde Studio. Allí puedes probar el agente base y revisar los logs y trazas que se guardan con la configuración de observabilidad del proyecto.
Build con IA
Para instalar las Mastra Skills siguiendo la documentación actual:
pnpm dlx skills add mastra-ai/skills
Para consultar el archivo de contexto raíz de la documentación:
https://mastra.ai/llms.txt
Si quieres configurar el Mastra MCP Docs Server en una herramienta compatible con MCP, usa la guía oficial de tu editor y una configuración equivalente a:
{
"mcpServers": {
"mastra": {
"type": "stdio",
"command": "pnpm",
"args": ["dlx", "@mastra/mcp-docs-server@latest"]
}
}
}
Documentación oficial consultada para este módulo:
- Quickstart:
https://mastra.ai/guides/getting-started/quickstart
- CLI
create-mastra: https://mastra.ai/reference/cli/create-mastra
- Mastra Skills:
https://mastra.ai/docs/build-with-ai/skills
- Build with AI:
https://mastra.ai/docs/getting-started/build-with-ai
- MCP Docs Server:
https://mastra.ai/docs/build-with-ai/mcp-docs-server
Módulo 2: Integración con GitHub vía MCP
En el estado actual del proyecto, el agente ya está conectado al GitHub MCP Server usando el cliente MCPClient de @mastra/mcp.
Configuración implementada
- El cliente MCP de GitHub vive en
src/mastra/mcp/github-mcp-client.ts
- Se usa el endpoint remoto oficial
https://api.githubcopilot.com/mcp/
- La autenticación se realiza con
GITHUB_PERSONAL_ACCESS_TOKEN
- Las tools remotas de GitHub se inyectan en el agente
OSS Reporter
Qué se puede probar en Studio
Con GITHUB_PERSONAL_ACCESS_TOKEN configurado y pnpm run dev activo, puedes pedirle al agente tareas como:
Lee el README de edsadr/oss-reporter
Lista los issues recientes de edsadr/oss-reporter
Muestra las ramas activas de edsadr/oss-reporter
Si la autenticación falla o el token no está presente, el agente debería indicarlo explícitamente.
Módulo 3: Herramientas y Análisis Estructurado
Sobre el contexto recuperado desde GitHub MCP, el proyecto ahora incluye tools nativas de Mastra para estructurar el análisis del repositorio.
Tools implementadas
src/mastra/tools/repository-analysis-tools.ts
analyzeDevelopmentTool
analyzeFeaturesTool
Qué hace cada tool
-
analyzeDevelopmentTool
- recibe texto con commits recientes y ramas activas
- devuelve un resumen estructurado del estado de desarrollo
- incluye métricas como
commitCount, branchCount, developmentMomentum, keySignals y recommendedFocus
-
analyzeFeaturesTool
- recibe texto con pull requests abiertos y contexto adicional del repositorio
- devuelve un resumen estructurado de features propuestas
- incluye métricas como
openPullRequestCount, featureMomentum, proposedCapabilities y recommendedFocus
Uso de Zod
Ambas tools usan inputSchema y outputSchema con zod para asegurar respuestas estructuradas y predecibles en formato JSON.
Flujo actual del agente
El flujo implementado hasta este punto es:
- El agente consulta GitHub usando tools remotas vía MCP.
- El agente transforma esa información con tools nativas de análisis.
- El resultado se presenta como un estado resumido y accionable del repositorio.
Módulo 4: Observational Memory y RAG local
En el estado actual del proyecto, el módulo 4 combina dos capas complementarias:
-
Observational Memory
- mantiene continuidad en conversaciones largas
- comprime contexto viejo en observaciones densas
- evita arrastrar demasiado historial crudo en cada turno
-
RAG local
- recupera conocimiento estable desde documentos del proyecto
- usa embeddings locales y almacenamiento vectorial local
- permite responder con base en una fuente documental autoritativa
Memoria implementada
El agente OSS Reporter usa @mastra/memory con:
lastMessages: 12
generateTitle: true
observationalMemory con:
model: google/gemini-2.5-flash
scope: thread
Este enfoque es especialmente útil porque el agente combina:
- tools remotas de GitHub vía MCP
- tools nativas de análisis
- conversaciones que pueden crecer bastante durante una sesión en Studio
Base de conocimiento local
La primera fuente documental del RAG es:
docs/open-source-maintainers-guide.md
Ese documento contiene buenas prácticas para maintainers open source sobre:
- onboarding
- triage
- revisión de PRs
- documentación
- sostenibilidad
- releases
- seguridad
- colaboración comunitaria
La infraestructura del knowledge base vive en:
src/mastra/rag/workshop-knowledge-base.ts
Y la tool expuesta al agente es:
src/mastra/tools/workshop-knowledge-tool.ts
searchWorkshopKnowledgeTool
Qué hace searchWorkshopKnowledgeTool
Esta tool:
- indexa localmente la guía de maintainers
- recupera los fragmentos más relevantes para una consulta
- devuelve contexto y fuentes para responder con base documental
Cómo encaja en el flujo del agente
El flujo del agente a partir del módulo 4 es:
- Usa GitHub MCP para obtener contexto vivo del repositorio.
- Usa tools nativas para resumir desarrollo y features.
- Usa Observational Memory para mantener continuidad del hilo.
- Usa RAG local para responder con conocimiento estable sobre mantenimiento open source.
Qué se puede probar en Studio
Con pnpm run dev activo, puedes hacer preguntas como:
¿Cuáles son las mejores prácticas para hacer triage de issues en un proyecto open source?
¿Qué recomienda nuestra base de conocimiento sobre sostenibilidad para maintainers?
Resume buenas prácticas para revisión de pull requests en proyectos open source
Módulo 5: Subagentes para issues y discusiones
El proyecto ahora usa un patrón supervisor + subagentes para repartir trabajo especializado.
Supervisor
El agente principal OSS Reporter ahora actúa como supervisor:
- mantiene el contexto global del análisis
- decide cuándo resolver algo por sí mismo
- delega en especialistas cuando la tarea gira alrededor de issues o discusiones
- sintetiza el resultado final cuando hay varias dimensiones involucradas
La coordinación vive en:
src/mastra/agents/oss-reporter-agent.ts
Subagentes implementados
Tools nativas del módulo 5
El análisis estructurado de la capa comunitaria vive en:
src/mastra/tools/community-analysis-tools.ts
Tools incluidas:
-
analyzeIssuesTool
- clasifica issues abiertos
- detecta temas dominantes
- estima prioridad de triage
- propone acciones para mantenedores
-
analyzeDiscussionsTool
- resume discusiones activas
- detecta decisiones, preguntas abiertas y temas de gobernanza
- propone próximos pasos accionables
Delegation hooks
El supervisor usa hooks de delegación para:
- adaptar el prompt enviado a cada subagente
- limitar el número de pasos por delegación
- recortar el contexto compartido
- manejar errores de delegación de forma explícita
Cómo encaja en el flujo general
El flujo del agente a partir del módulo 5 es:
- Usa GitHub MCP para obtener contexto vivo del repositorio.
- Usa tools nativas para resumir desarrollo, features, issues y discusiones.
- Usa subagentes especializados para delegar análisis complejos de comunidad.
- Usa Observational Memory para mantener continuidad del hilo.
- Usa RAG local para reforzar decisiones con buenas prácticas de maintainers.
Qué se puede probar en Studio
Con pnpm run dev activo, puedes probar prompts como:
Analiza los issues abiertos de owner/repo y prioriza el triage para la próxima semana
Resume las discusiones activas de owner/repo e identifica decisiones o preguntas abiertas
Coordina un análisis del repositorio owner/repo: desarrollo reciente, issues críticos y discusiones relevantes
Módulo 6: Workflow de reporte del repositorio
El siguiente paso del workshop introduce una capa determinista para ensamblar un reporte final reutilizando todo lo construido antes.
Workflow implementado
src/mastra/workflows/repository-report-workflow.ts
El workflow:
- recibe
owner, repo, reportType y focus
- usa
ossReporterAgent para desarrollo y features
- usa
issueAnalystAgent para issues
- usa
discussionAnalystAgent para discusiones
- usa
searchWorkshopKnowledgeTool para reforzar recomendaciones con buenas prácticas de maintainers
- genera un resumen ejecutivo
- propone
1 a 3 tareas accionables
- persiste un reporte Markdown en
reports/
Tipos de reporte soportados
weekly
maintainer-triage
release-readiness
Qué devuelve
El workflow produce:
- resumen ejecutivo
- secciones por dimensión del repositorio
- contexto documental relevante
- tareas sugeridas
- Markdown final del reporte
- ruta del archivo persistido
Registro en Mastra
El workflow queda registrado en src/mastra/index.ts como:
Qué se puede probar
Una vez levantado Mastra, puedes ejecutar el workflow con inputs como:
{
"owner": "edsadr",
"repo": "oss-reporter",
"reportType": "weekly",
"focus": "priorizar mantenimiento y claridad del backlog"
}
Módulo 7: Observabilidad y evaluación de agentes
El módulo 7 introduce una capa de evaluación centrada en agentes. En lugar de medir sólo la calidad del reporte final, ahora el proyecto también evalúa cómo se comportan el supervisor y los subagentes especializados.
Archivos implementados