Calidad sin Humo
Guías / Recurso técnico

Automatiza tu daily standup con IA — de 40 minutos a 2 con un solo comando

2026.03.26
30 min de setup
intermedio
Automatiza tu daily standup con IA — de 40 minutos a 2 con un solo comando

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:

Terminal window
/daily-standup 72h notion
40 min Antes (manual)
2 min Después (IA)
95% Reducción

No necesitas saber programar. No necesitas un servidor. Solo necesitas Claude Code y acceso a Jira.


Qué genera este comando

El reporte incluye:

Resumen del sprint — tickets totales, porcentaje de avance, días restantes
Quién avanzó — commits por desarrollador cruzados con tickets de Jira
Bloqueos silenciosos — tickets 'In Progress' sin actividad en 48-72h
PRs sin review — pull requests abiertas que nadie ha revisado
Análisis de riesgos — bus factor, tickets P0 sin empezar
Top 3 acciones recomendadas — basadas en datos, no en intuición

Todo generado automáticamente cruzando datos reales de Jira y GitHub.


Arquitectura del flujo

GitHub API Jira API Claude analiza y cruza Genera reporte Publica donde elijas

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

Terminal window
/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 consola
Elige la que te sirva

No 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)

RequisitoCómo obtenerlo
Claude Code CLInpm 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 AtlassianCréalo en id.atlassian.com → Seguridad → API Tokens

Según tu destino de publicación

DestinoRequisito adicional
NotionAPI Key de Notion (notion.so/my-integrations) + conectar integración a la página
ConfluenceMismo API Token de Atlassian (ya lo tienes)
PDFpandoc + navegador Chromium (Chrome, Brave o Edge). Ver instalación abajo
TerminalNinguno — 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):

Terminal window
# Mac
brew install pandoc
# Ubuntu/Debian
sudo apt install pandoc
# Windows
winget install JohnMacFarlane.Pandoc

2. 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:

Terminal window
# Verificar pandoc
pandoc --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
# o
chromium-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):

~/.zshrc
# 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:

Terminal window
source ~/.zshrc
Nunca expongas tus tokens

No 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:

Terminal window
claude mcp list

Deberías ver Atlassian (y Notion si lo usas) en la lista. Si no aparecen, actívalos desde la configuración de Claude Code.

VarianteMCP servers necesarios
NotionAtlassian + Notion
ConfluenceSolo Atlassian (cubre Jira y Confluence)
PDF / TerminalSolo Atlassian

Paso 3: Obtener tu Jira Cloud ID

El Cloud ID identifica tu instancia de Jira. Ejecuta esto en Claude Code:

Terminal window
claude "Lista mis proyectos visibles de Jira y dame el cloudId"

Claude te devolverá algo como:

cloudId: 3c27f7a8-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Proyectos: PROYECTO-A, PROYECTO-B, ...

Guarda ese cloudId — lo necesitas para personalizar el comando.


Paso 4: Crear el comando

Crea la estructura de carpetas:

Terminal window
mkdir -p ~/.claude-plugins/daily-standup/commands

4.1 El manifiesto

~/.claude-plugins/daily-standup/plugin.json
{
"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)
~/.claude-plugins/daily-standup/commands/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 usuario
2. 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 Jira
2. **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 > 72h
3. **PRs sin review**: abiertas > 48h sin aprobación y que no son drafts
4. **Progreso del sprint**: Done / In Progress / To Do con porcentajes
5. **Bus factor**: un dev con > 50% commits o > 40% tickets
6. **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 pandoc
3. Convierte a PDF con navegador headless
4. 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 correctas
Personaliza antes de usar

Reemplaza 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

Terminal window
claude plugin install ~/.claude-plugins/daily-standup

Verifica:

Terminal window
claude plugin list

Paso 6: Ejecutar

Terminal window
# 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:

Terminal window
pandoc standup-YYYY-MM-DD.md -t html -o standup-YYYY-MM-DD.html --standalone

Paso 3: Convierte el HTML a PDF usando un navegador en modo headless:

Terminal window
# 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 Chrome
google-chrome --headless --disable-gpu --no-margins \
--print-to-pdf="standup-YYYY-MM-DD.pdf" \
standup-YYYY-MM-DD.html
# Linux — Chromium
chromium-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.html

Cualquier 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ámetroDefaultCuándo cambiar
Días sin update para CRÍTICO2 días + P0/BlockerSube a 3 si tu sprint es de 3 semanas
Días sin update para MEDIO3 díasBaja a 2 si quieres alertas más agresivas
Bus factor threshold50% commitsSube a 60% si tu equipo es de 2-3 personas
PRs sin review48hBaja 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 gh por 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

No reemplaza la conversación del standup — reemplaza la preparación
Depende de datos actualizados en Jira — si no mueven tickets, el reporte es incompleto
GitHub es opcional — si usan GitLab/Bitbucket, quita la Fase 2
Primera ejecución ~30 segundos — las siguientes son más rápidas
Sprints de 200+ tickets pueden truncarse — filtra por equipo o componente

Antes y después

AntesDespués
Tiempo30-40 min/día< 2 min
ConsistenciaDepende de quién lo hagaMismo formato siempre
BloqueosSe detectan cuando alguien los mencionaSe detectan automáticamente
DatosCopiados a mano, propensos a errorDirectos de la fuente
Frecuencia1x al día (si hay tiempo)Las veces que quieras
HistorialSe pierde en Slack/emailQueda 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