Resumen de Reuniones
Herramientas: pasos que requieren operaciones de roles (
pm.*,email.*,calendar.*,docs.*,files.*,comms.*). Resuelve cada uno a través deContext/agent-config.md→ Pila de Herramientas y el adaptador que nombre (.claude/adapters/README.md). Un rol configurado comonone→ salta ese paso.
Obtén todas las reuniones de un día objetivo, encuentra las notas o la transcripción de cada una, produce un resumen estructurado y guárdalo localmente. El día objetivo por defecto es hoy; pasa "yesterday" para procesar el día anterior.
Configuración
Lee Context/agent-config.md al inicio. Usa:
timezone— para todos los cálculos de fechabase_directory— para la construcción de rutas de archivo y la verificación de idempotenciacalendar_exclusions— lista de patrones de títulos de reuniones a omitir- Pila de Herramientas → Notas de reuniones — de dónde proviene el contenido de la reunión
Lee el archivo de objetivos (ruta en agent-config) para reconocer nombres de proyectos e hitos en el Paso 4.
Instrucciones
Ejecuta todos los pasos en secuencia. No pidas confirmación entre pasos a menos que se indique explícitamente que hagas una pausa.
Paso 1 — Obtén todas las reuniones no procesadas del día objetivo
Fase A — Calendario: obtén la lista de reuniones
-
Calcula la fecha objetivo en la zona horaria del usuario. Por defecto = hoy; si el usuario pasó "yesterday", resta un día.
-
calendar.events(inicio de la fecha objetivo, fin de la fecha objetivo)en la zona horaria del usuario. -
Filtra solo reuniones reales. Elimina cualquier evento donde:
summarycoincida con un patrón encalendar_exclusions- sea un bloque de tiempo de concentración o ubicación de trabajo
- la lista de
attendeesesté vacía o contenga solo al usuario (bloques individuales)
-
Ordena cronológicamente (el más antiguo primero). Esta es la lista ordenada de reuniones a procesar.
Fase B — Verificación de idempotencia
Para cada reunión:
- Deriva el nombre de archivo de notas esperado:
YYYY-MM-DD - [Nombre de la Reunión].mdusando elsummarydel evento del calendario. Limpia el nombre: reemplaza/,\,:y|con-, elimina emojis, colapsa espacios repetidos. - Verifica si ya existe un archivo con ese nombre en
[base_directory]/Context/Meeting Notes/. - Si existe y ya tiene una sección
## Resumen→ salta esta reunión. Salida: "Ya existen notas para [nombre de la reunión] — se omite." - Si existe como notas sin procesar (sin
## Resumen) → usa su contenido como fuente y continúa. - Si no existe → continúa con la Fase C.
Fase C — Encuentra el contenido de la reunión
Revisa las fuentes en este orden y usa la primera que tenga contenido:
- Archivo de notas sin procesar — de la Fase B paso 4.
- Fuentes configuradas — cada entrada en agent-config → Fuentes de notas de reuniones, en orden. Las típicas incluyen:
- Archivos adjuntos del calendario — un documento de notas adjunto al evento →
files.readcon su ID de archivo. "No encontrado" significa que no está compartido con el usuario — salta silenciosamente. docs.meeting_notes(fecha)— coincide por título o ventana de tiempo (±30 min); lee condocs.read.
- Archivos adjuntos del calendario — un documento de notas adjunto al evento →
- Descripción del evento del calendario — usa solo si contiene notas reales, no solo una agenda o un enlace de video.
- Pregunta al usuario — enumera las reuniones que aún no tienen contenido en un solo mensaje: "No se encontraron notas para: [lista]. Pega notas o una transcripción de las que quieras procesar, o di 'skip'."
Si una reunión aún no tiene contenido → márcala como "sin notas disponibles" y salta.
Fase D — Reporte
Después de procesar todas las reuniones, reporta:
- Cuántas se procesaron
- Cuántas se saltaron (con razón: ya existe / sin notas)
Paso 2 — Lee el contexto
Antes de procesar cualquier contenido de notas, lee:
GOALS.md— para entender los proyectos y objetivos activosContext/Memory/brain.md— para entender cómo piensa el usuario, su vocabulario y lo que considera una decisión vs. una discusión
Paso 3 — Analiza el contenido de las notas
Para cada reunión con contenido, extrae cuatro cosas:
A. Resumen 2–3 oraciones. Primero la señal: ¿de qué trató la reunión y cuál fue el resultado clave o cambio? No es una lista de temas cubiertos, sino una declaración de resultado coherente. Usa la voz del usuario: directa, sin rodeos, lidera con el resultado.
B. Decisiones Compromisos explícitos que cambiaron la dirección, aseguraron algo o cerraron una pregunta abierta. Solo decisiones reales — no sugerencias, no "tal vez". Formato: qué se decidió y quién tomó la decisión (si se puede atribuir).
C. Elementos de acción Próximos pasos concretos con un responsable nombrado. Aplica esta lógica por elemento:
- Si la nota nombra a una persona específica como responsable con alta confianza → asígnale a esa persona
- Si la responsabilidad es ambigua o compartida → asígnale al usuario
- Solo incluye un elemento de gestión de proyecto o proyecto si fue mencionado explícitamente en la reunión (por clave, nombre o referencia clara). No infieras ni adivines — si no se mencionó ninguno, deja la columna Proyecto en blanco (
—) - Anota la fecha de vencimiento sugerida si se mencionó en la reunión, de lo contrario déjala en blanco
D. Preguntas abiertas / Bloqueadores Preguntas sin resolver, bloqueadores planteados o temas pospuestos para una reunión futura. Estos van solo en el archivo de notas.
Paso 4 — Referencias de proyectos
Solo registra una clave de elemento o nombre de proyecto cuando fue mencionado explícitamente en la reunión — por clave (ej. ENG-123), por nombre (ej. "el hito de renovación de incorporación"), o por referencia inequívoca.
No infieras, busques o adivines proyectos del contexto de la reunión. Es mejor dejarlo en blanco que asignar uno incorrecto.
Paso 5 — Escribe el archivo de notas de la reunión
Guarda el resumen en Context/Meeting Notes/ usando este formato de nombre de archivo:
YYYY-MM-DD - [Nombre de la Reunión].md
Usa el summary del evento del calendario como nombre de la reunión.
Formato del archivo:
# [Nombre de la Reunión]
*[YYYY-MM-DD] | [Duración si está disponible] | [Asistentes del calendario si están disponibles]*
## Resumen
[Resumen de 2–3 oraciones, primero la señal. Qué sucedió y qué cambió.]
## Decisiones
- [Decisión 1 — quién la tomó si se sabe]
- [Decisión 2]
## Elementos de Acción
| # | Tarea | Responsable | Proyecto | Vencimiento |
|---|------|-------|---------|-----|
| 1 | [Descripción de la tarea] | [Nombre / yo] | [Nombre del proyecto (KEY-123) o —] | [Fecha o —] |
| 2 | ... | ... | ... | ... |
## Preguntas Abiertas y Bloqueadores
- [Pregunta o bloqueador — qué no está resuelto y por qué es importante]
## Contexto
[Cualquier antecedente, enlace o marco de la reunión que sea útil para referencia futura. Máximo 3–5 viñetas.]
Si las notas sin procesar fueron la fuente (Fase B paso 4), mantenlas debajo de una sección ## Notas sin procesar al final — nunca elimines las notas del usuario.
Antes de guardar, agrega [[wiki-links]] a la nota para la conectividad del grafo de Obsidian:
- Todas las personas mencionadas por nombre →
[[Nombre]] - Todas las claves de elementos →
[[KEY-123]] - Conceptos clave, proyectos y temas que se repiten en las notas →
[[Concepto]] - Solo vincula menciones significativas — no cada palabra, no dentro de bloques de código o URLs
Confirma al usuario: "Notas de reunión guardadas en Context/Meeting Notes/[nombre de archivo].md"
Paso 6 — Conexión con otros elementos
Después de guardar:
- Verifica si alguna decisión o bloqueador de esta reunión se relaciona con una tarea abierta en
Tasks/— si es así, anótalo en línea. - Si se planteó un bloqueador que ya existe en
GOALS.mdcomo bloqueador conocido, márcalo: "Este bloqueador ([nombre]) también se planteó en [contexto anterior]. Considera si es sistémico." - Si la reunión es un 1:1 recurrente con una persona nombrada que tiene un documento en
Context/121s/, agrega una entrada de registro de sesión a su documento: fecha, resumen de 1 línea, cualquier bucle abierto agregado.
Las notas de reuniones contienen datos personales y nunca se confirman ni se envían.
Paso 7 — Muestra el resumen en el chat
Después de guardar todas las notas localmente, muestra un resumen combinado del resumen del día completo.
Estructura: reunión → tema → decisiones + acciones debajo de cada tema.
📝 **Resumen de reuniones completo — [YYYY-MM-DD]** | [N] procesadas | [N] omitidas
*[Nombre de la Reunión]*
[Tema / objetivo o hito]
Decisiones
- [Decisión]
- [Decisión]
Elementos de Acción
- [tarea] → [responsable] [vencimiento si se conoce]
[Tema 2]
Decisiones
- [Decisión]
Elementos de Acción
- [tarea] → [responsable]
Notas guardadas en `Context/Meeting Notes/`
Reglas de agrupación:
- Primer nivel: nombre de la reunión
- Segundo nivel: tema, objetivo o hito discutido dentro de esa reunión — usa el nombre simple, nunca una clave de problema desnuda
- Tercer nivel: Decisiones y Elementos de Acción como subsecciones etiquetadas debajo de cada tema
- Si un tema no tiene decisiones, omite la subsección Decisiones. Si no tiene elementos de acción, omite la subsección Elementos de Acción.
- Si una reunión tiene solo un tema, muestra el nombre del tema igualmente — no lo colapses
- Omite la columna Proyecto de los elementos de acción en el resumen del chat — pertenece solo al archivo de notas
Paso 8 — Ofrece actualizar el registro de decisiones
Este paso solo se ejecuta si se extrajo al menos una decisión en todas las reuniones procesadas.
Pregunta una vez, en un solo mensaje:
"¿Quieres registrar alguna de estas decisiones en el registro de decisiones de un PRD?
Decisiones de hoy:
[Nombre de la Reunión] [Tema] 1. [Decisión] 2. [Decisión]
Si es así, dime en qué documento (un archivo local en
Context/Document Hub/o una página en la herramienta de documentos) y qué números de decisión agregar."
Numera las decisiones secuencialmente en todas las reuniones para que el usuario pueda referirse a ellas por número.
Espera la respuesta del usuario.
- Si no / skip: termina la skill.
- Si sí: continúa con los pasos siguientes para cada documento que especifique.
Para cada documento proporcionado:
A. Obtén el documento
- Archivo local → léelo.
- Página de herramienta de documentos →
docs.read.
B. Localiza el Registro de Decisiones
Escanea una sección cuyo encabezado contenga "Registro de Decisiones", "Decisiones" o "Decision Log" (sin distinción de mayúsculas/minúsculas).
- Si existe una sección de Registro de Decisiones con una tabla: se agregarán nuevas filas a ella.
- Si existe una sección de Registro de Decisiones pero sin tabla: inserta la tabla inmediatamente debajo del encabezado.
- Si no existe una sección de Registro de Decisiones: inserta una nueva sección
## Registro de Decisionesy tabla al final del documento.
C. Construye las filas
Para cada decisión que el usuario haya seleccionado, crea una fila de tabla:
| [YYYY-MM-DD] | [Texto de la decisión] | [Estado] |
- Fecha: la fecha de la reunión.
- Decisión: texto exacto del resumen — no parafrasees.
- Estado:
Decididasi es explícita y final.Pendientesi el texto contiene "TBD", "por confirmar", "pendiente", "esperando" o estaba marcado como no resuelto.
Si la tabla aún no existe, créala primero con esta fila de encabezado:
| Fecha | Decisión | Notas/Estado |
|------|----------|--------------|
D. Previsualiza, luego actualiza
Muestra las filas que se agregarán. Para un archivo local, escríbelas. Para una página de herramienta de documentos, espera la confirmación explícita del usuario, luego docs.update(ref, "Registro de Decisiones", filas) — cambia solo esa sección.
E. Confirma
"Registro de Decisiones actualizado en [título del documento] — se agregaron [N] decisión(es)."
Casos extremos
- Sin decisiones encontradas: Escribe "No se tomaron decisiones — reunión de discusión/actualización." No inventes decisiones.
- Sin elementos de acción encontrados: Escribe "Sin elementos de acción."
- Reunión es una daily o <5 min: Aún ejecuta el resumen, pero manten el resumen en 1 oración.
- Múltiples notas coinciden con el mismo evento: Usa la más cercana a la hora de inicio del evento.
- Una fuente no está disponible: Saltala silenciosamente y pasa a la siguiente en la Fase C.
- Página de documentos no encontrada (Paso 8): Reporta el error, pide al usuario que verifique la URL y ofrece reintentar.
- Sección de Registro de Decisiones ambigua (Paso 8): Si múltiples encabezados podrían coincidir (ej. "Decisiones Clave" y "Registro de Decisiones"), muestra ambos y pregunta a cuál agregar.
- Decisiones duplicadas (Paso 8): Antes de insertar, escanea las filas existentes. Si el mismo texto de decisión ya aparece, saltalo y anota el salto.