Automatiza tu daily standup con IA — de 40 minutos a 2 con un solo comando
Tabla de contenidos
Cada mañana, antes del standup, hacías lo mismo: abrir Jira, filtrar el sprint, revisar quién movió qué, abrir GitHub para cruzar con commits, copiar datos en un documento, calcular métricas a mano, formatear el reporte.
30 a 40 minutos. Todos los días. Para generar información que debería existir automáticamente.
Esta guía te enseña a reemplazar ese proceso completo con un solo comando:
/daily-standup 72h notionNo necesitas saber programar. No necesitas un servidor. Solo necesitas Claude Code y acceso a Jira.
Qué genera este comando
El reporte incluye:
Todo generado automáticamente cruzando datos reales de Jira y GitHub.
Arquitectura del flujo
El núcleo siempre es el mismo: recopilar datos → analizar → generar reporte. Lo que cambia es dónde se publica. Tú eliges.
4 variantes de salida
/daily-standup 72h notion # Publica en Notion/daily-standup 24h confluence # Publica en Confluence/daily-standup 48h pdf # Genera archivo local/daily-standup 24h terminal # Solo muestra en consolaNo necesitas configurar las 4. Empieza con una — la que use tu equipo — y después agrega más si las necesitas.
Requisitos previos
Obligatorios (para todas las variantes)
| Requisito | Cómo obtenerlo |
|---|---|
| Claude Code CLI | npm install -g @anthropic-ai/claude-code |
| Cuenta de Jira (Cloud) | Necesitas acceso al proyecto que quieres reportar |
GitHub CLI (gh) | brew install gh (Mac) o winget install GitHub.cli (Windows) |
| API Token de Atlassian | Créalo en id.atlassian.com → Seguridad → API Tokens |
Según tu destino de publicación
| Destino | Requisito adicional |
|---|---|
| Notion | API Key de Notion (notion.so/my-integrations) + conectar integración a la página |
| Confluence | Mismo API Token de Atlassian (ya lo tienes) |
pandoc + navegador Chromium (Chrome, Brave o Edge). Ver instalación abajo | |
| Terminal | Ninguno — se muestra en consola |
Instalación de dependencias para generar PDF
La variante PDF convierte el reporte Markdown → HTML → PDF. Necesitas dos herramientas:
1. Pandoc (convierte Markdown a HTML):
# Macbrew install pandoc
# Ubuntu/Debiansudo apt install pandoc
# Windowswinget install JohnMacFarlane.Pandoc2. Navegador Chromium (convierte HTML a PDF vía modo headless):
Cualquier navegador basado en Chromium funciona: Google Chrome, Brave, Microsoft Edge o Chromium. Si ya tienes alguno instalado, no necesitas hacer nada más. Firefox no es compatible con --print-to-pdf.
Verificar que todo está listo:
# Verificar pandocpandoc --version# Debería mostrar pandoc 3.x
# Verificar navegador (Mac)"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" --version# o"/Applications/Brave Browser.app/Contents/MacOS/Brave Browser" --version# o"/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge" --version
# Verificar navegador (Windows PowerShell)& "C:\Program Files\Google\Chrome\Application\chrome.exe" --version# o& "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" --version
# Verificar navegador (Linux)google-chrome --version# ochromium-browser --version¿No quieres instalar nada? Usa la variante terminal y copia el output, o usa notion/confluence que no requieren dependencias extra.
Paso 1: Configurar las variables de entorno
Agrega tus credenciales al archivo de perfil de tu terminal (~/.zshrc en Mac, ~/.bashrc en Linux):
# Atlassian (Jira + Confluence)export ATLASSIAN_API_TOKEN="tu-token-de-atlassian"export ATLASSIAN_EMAIL="tu-email@empresa.com"
# Notion (solo si publicas en Notion)export NOTION_API_KEY="ntn_tu-api-key-de-notion"Después recarga tu terminal:
source ~/.zshrcNo pongas tokens directamente en archivos de configuración de Claude Code ni en repositorios. Siempre usa variables de entorno.
Paso 2: Configurar los MCP Servers
Los MCP servers (Model Context Protocol) le dan a Claude Code acceso directo a tus herramientas. Sin ellos, tendrías que copiar y pegar datos manualmente.
Verifica que estén activos:
claude mcp listDeberías ver Atlassian (y Notion si lo usas) en la lista. Si no aparecen, actívalos desde la configuración de Claude Code.
| Variante | MCP servers necesarios |
|---|---|
| Notion | Atlassian + Notion |
| Confluence | Solo Atlassian (cubre Jira y Confluence) |
| PDF / Terminal | Solo Atlassian |
Paso 3: Obtener tu Jira Cloud ID
El Cloud ID identifica tu instancia de Jira. Ejecuta esto en Claude Code:
claude "Lista mis proyectos visibles de Jira y dame el cloudId"Claude te devolverá algo como:
cloudId: 3c27f7a8-xxxx-xxxx-xxxx-xxxxxxxxxxxxProyectos: PROYECTO-A, PROYECTO-B, ...Guarda ese cloudId — lo necesitas para personalizar el comando.
Paso 4: Crear el comando
Crea la estructura de carpetas:
mkdir -p ~/.claude-plugins/daily-standup/commands4.1 El manifiesto
{ "name": "daily-standup", "version": "1.0.0", "description": "Genera reportes de daily standup cruzando GitHub y Jira"}4.2 El comando
Este es el corazón del sistema. Es un archivo Markdown con instrucciones que Claude Code ejecuta paso a paso.
Ver el archivo completo del comando (daily-standup.md)
---description: "Daily Standup — Reporte automatizado cruzando GitHub + Jira"argument-hint: "[horas]h [destino] [proyecto]. Ej: 72h notion DS, 24h pdf, 48h terminal"allowed-tools: [ "Bash", "Read", "Write", "mcp__claude_ai_Atlassian__getVisibleJiraProjects", "mcp__claude_ai_Atlassian__searchJiraIssuesUsingJql", "mcp__claude_ai_Atlassian__getJiraIssue", "mcp__claude_ai_Notion__notion-search", "mcp__claude_ai_Notion__notion-create-pages", "mcp__claude_ai_Atlassian__searchConfluenceUsingCql", "mcp__claude_ai_Atlassian__createConfluencePage", "mcp__claude_ai_Atlassian__getConfluenceSpaces", ]---
Genera un reporte de Daily Standup cruzando GitHub y Jira.
**Argumento:** `$ARGUMENTS`
## Fase 1: Configuración
1. Parsea `$ARGUMENTS`: - **Lookback**: número + `h` (ej: `24h`, `48h`, `72h`). Default: **72h** - **Destino**: `notion`, `confluence`, `pdf`, o `terminal`. Default: **notion** - **Proyecto**: clave de Jira (ej: `DS`, `QA`). Si no viene, PREGUNTA al usuario2. Calcula fecha de corte en ISO 8601
## Fase 2: Datos de GitHub
Ejecuta en paralelo con `gh` (reemplaza TU-ORG con tu organización):
- Commits: `gh api search/commits -f q="org:TU-ORG committer-date:>${FECHA}"`- PRs abiertas: `gh search prs --owner TU-ORG --state open --limit 50 --json title,author,repository,createdAt,url,isDraft`- PRs cerradas/mergeadas: `gh search prs --owner TU-ORG --state closed --limit 50 --json title,author,repository,closedAt,url`
Si GitHub no está disponible o la org no aplica, continúa solo con datos de Jira.
## Fase 3: Datos de Jira (MCP)
- Sprint activo: `project = "XX" AND sprint in openSprints() ORDER BY priority DESC`- Tickets estancados: `project = "XX" AND status = "In Progress" AND updated <= -2d`- maxResults: **100** para obtener sprint completo- Fields: summary, status, assignee, priority, updated, created, labels
## Fase 4: Análisis
1. **Mapeo de desarrolladores**: nombres GitHub ↔ assignees Jira2. **Bloqueos silenciosos**: tickets "In Progress" cuyo assignee NO tiene commits - CRÍTICO: P0/Blocker sin movimiento > 48h - ALTO: P1/High sin movimiento > 48h - MEDIO: cualquier ticket sin movimiento > 72h3. **PRs sin review**: abiertas > 48h sin aprobación y que no son drafts4. **Progreso del sprint**: Done / In Progress / To Do con porcentajes5. **Bus factor**: un dev con > 50% commits o > 40% tickets6. **Preguntas de intervención**: personalizadas por dev con datos concretos
## Fase 5: Publicar
### Si destino = "notion"
1. Busca página padre "Daily Standups" con `notion-search`2. Si no existe, créala con icono 📋3. Crea subpágina con icono 🧭 y título: `Standup — YYYY-MM-DD — PROYECTO`4. Usa el formato rico (ver Reglas de formato abajo)
### Si destino = "confluence"
1. Busca espacio del proyecto con `getConfluenceSpaces`2. Crea página: `Standup — YYYY-MM-DD`3. Contenido en formato wiki/HTML de Confluence
### Si destino = "pdf"
1. Genera Markdown en `~/standups/standup-YYYY-MM-DD-PROYECTO.md`2. Convierte a HTML con pandoc3. Convierte a PDF con navegador headless4. Informa la ruta del PDF al usuario
### Si destino = "terminal"
Muestra el reporte formateado en consola. No guarda ni publica nada.
## Fase 6: Confirmar
1. Link directo (Notion/Confluence) o ruta (PDF)2. Resumen en consola: devs activos, bloqueos, PRs pendientes, top acción
## Reglas de formato para Notion
- **Tablas**: SIEMPRE usar `fit-page-width="true"` en todas las tablas- **Colores por fila**: - `color="blue_bg"` para headers - `color="green_bg"` para Done/positivo - `color="yellow_bg"` para In Progress/medio - `color="red_bg"` para bloqueos/crítico - `color="orange_bg"` para alertas/alto - `color="gray_bg"` para tablas informativas- **Barras de progreso**: usar caracteres █ y ░ (ej: `████████░░░░░░░░░░░░ 42%`)- **Callouts de Notion**: usar para alertas importantes (tickets nuevos, bloqueos crónicos) - `<callout icon="⚠️" color="red_bg">` para alertas críticas - `<callout icon="📥" color="yellow_bg">` para información nueva- **Comparación**: si existe un reporte anterior, incluir columna "vs día anterior" con +/- deltas- **Tabla de distribución**: al final, tabla con tickets/commits/PRs por desarrollador- **Preguntas personalizadas**: mencionar al dev por nombre con datos específicos- **Emojis**: pasar como caracteres UTF-8 reales, NO como escape sequences- **Crédito**: "Generado por [tu nombre]" (NO "Generado automáticamente con Claude Code")- **Idioma**: español con tildes correctasReemplaza TU-ORG con el nombre de tu organización en GitHub. El proyecto de
Jira se pregunta en cada ejecución.
Ver ejemplo de cómo se ve el reporte en Notion
El reporte en Notion usa tablas coloreadas, barras de progreso, callouts y formato rico:
Resumen del sprint — tabla con colores por estado:
- Verde para tickets finalizados
- Amarillo para tickets en curso
- Rojo para tareas pendientes
- Cada fila incluye barra de progreso visual (
████████░░░░ 42%) - Columna de comparación vs día anterior (
+2,-1)
Bloqueos silenciosos — tabla con severidad por colores:
- Naranja para severidad ALTA
- Amarillo para severidad MEDIA
- Preguntas de intervención personalizadas:
@dev, el ticket X lleva N días sin actividad. ¿Está bloqueado?
Callouts de alerta — cajas destacadas para:
- Tickets nuevos creados que aumentaron el backlog
- Bloqueos crónicos que se repiten entre reportes
- Bugs de producción sin asignar
Top 3 acciones — tabla con justificación basada en datos y nivel de impacto (Alto/Medio)
Distribución por dev — tabla resumen con tickets asignados, commits y PRs por persona
Cada reporte queda como una subpágina dentro de “Daily Standups” en Notion, creando un historial navegable.
Paso 5: Registrar el plugin
claude plugin install ~/.claude-plugins/daily-standupVerifica:
claude plugin listPaso 6: Ejecutar
# Reporte de las últimas 72h → Notion/daily-standup 72h notion
# Reporte rápido de 24h → Terminal/daily-standup 24h terminal
# Reporte para Confluence/daily-standup 48h confluence
# Guardar como PDF local/daily-standup 72h pdf¿Cómo funciona la variante PDF por dentro?
Cuando eliges pdf, el comando ejecuta 3 pasos automáticos:
Paso 1: Genera el reporte en Markdown y lo guarda en ~/standups/standup-YYYY-MM-DD.md
Paso 2: Convierte el Markdown a HTML con pandoc:
pandoc standup-YYYY-MM-DD.md -t html -o standup-YYYY-MM-DD.html --standalonePaso 3: Convierte el HTML a PDF usando un navegador en modo headless:
# Mac — Google Chrome"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \ --headless --disable-gpu --no-margins \ --print-to-pdf="standup-YYYY-MM-DD.pdf" \ standup-YYYY-MM-DD.html
# Mac — Brave"/Applications/Brave Browser.app/Contents/MacOS/Brave Browser" \ --headless --disable-gpu --no-margins \ --print-to-pdf="standup-YYYY-MM-DD.pdf" \ standup-YYYY-MM-DD.html
# Mac — Microsoft Edge"/Applications/Microsoft Edge.app/Contents/MacOS/Microsoft Edge" \ --headless --disable-gpu --no-margins \ --print-to-pdf="standup-YYYY-MM-DD.pdf" \ standup-YYYY-MM-DD.html
# Linux — Google Chromegoogle-chrome --headless --disable-gpu --no-margins \ --print-to-pdf="standup-YYYY-MM-DD.pdf" \ standup-YYYY-MM-DD.html
# Linux — Chromiumchromium-browser --headless --disable-gpu --no-margins \ --print-to-pdf="standup-YYYY-MM-DD.pdf" \ standup-YYYY-MM-DD.html
# Windows — Google Chrome (PowerShell)& "C:\Program Files\Google\Chrome\Application\chrome.exe" ` --headless --disable-gpu --no-margins ` --print-to-pdf="standup-YYYY-MM-DD.pdf" ` standup-YYYY-MM-DD.html
# Windows — Microsoft Edge (PowerShell)& "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" ` --headless --disable-gpu --no-margins ` --print-to-pdf="standup-YYYY-MM-DD.pdf" ` standup-YYYY-MM-DD.htmlCualquier navegador basado en Chromium funciona (Chrome, Brave, Edge, Chromium). Firefox no soporta --print-to-pdf.
Resultado: 3 archivos en ~/standups/:
standup-YYYY-MM-DD.md— fuente Markdown (editable)standup-YYYY-MM-DD.html— versión HTML (para compartir por email)standup-YYYY-MM-DD.pdf— PDF final (para presentaciones o archivo)
Requisitos: pandoc y cualquier navegador Chromium instalado. Ver la sección de requisitos arriba para instrucciones de instalación.
Personalización
Cambiar los umbrales de detección de bloqueos
| Parámetro | Default | Cuándo cambiar |
|---|---|---|
| Días sin update para CRÍTICO | 2 días + P0/Blocker | Sube a 3 si tu sprint es de 3 semanas |
| Días sin update para MEDIO | 3 días | Baja a 2 si quieres alertas más agresivas |
| Bus factor threshold | 50% commits | Sube a 60% si tu equipo es de 2-3 personas |
| PRs sin review | 48h | Baja a 24h si hacen code review diario |
Edita los valores en la Fase 4 del archivo daily-standup.md.
Agregar datos de otras herramientas
El flujo es extensible. Puedes agregar fases para:
- Slack: buscar mensajes en un canal de standup
- TestRail/Zephyr: consultar ejecuciones de tests recientes
- SonarQube: métricas de calidad de código
- GitLab/Bitbucket: reemplaza los comandos de
ghpor sus equivalentes
Solo agrega la herramienta al allowed-tools y una nueva fase de recopilación.
Cambiar el formato del reporte
El formato es Markdown puro. Puedes:
- Agregar/quitar secciones
- Agregar barras de progreso:
████████░░ 80% - Cambiar el idioma a inglés
- Agregar tablas de colores para Notion
Edita la plantilla en la Fase 5 del comando.
Limitaciones
Antes y después
| Antes | Después | |
|---|---|---|
| Tiempo | 30-40 min/día | < 2 min |
| Consistencia | Depende de quién lo haga | Mismo formato siempre |
| Bloqueos | Se detectan cuando alguien los menciona | Se detectan automáticamente |
| Datos | Copiados a mano, propensos a error | Directos de la fuente |
| Frecuencia | 1x al día (si hay tiempo) | Las veces que quieras |
| Historial | Se pierde en Slack/email | Queda documentado |
Próximos pasos
Si esta guía te resultó útil, en próximas entregas voy a documentar:
- MCP para QA: conecta todas tus herramientas a la IA — cómo configurar Playwright, Jira, Notion y más como MCP servers
- Claude Code CLI para QA Engineers — setup completo orientado a testing y automatización
- Crea tu propio plugin de Claude Code — desde la estructura hasta publicarlo
Cada minuto que gastas en tareas mecánicas es un minuto que no inviertes en pensar. Y pensar es lo que hace la diferencia entre un QA que ejecuta y un QA que lidera.
Guía creada por Adriana Troche Robles — QA Senior & Scrum Master