Mejora de Perfiles de Autor
Esta habilidad completa campos faltantes en perfiles de autor (bio, avatar, sitio web, redes sociales) mediante investigación web.
Resumen del Flujo de Trabajo
Fase 1: Identificación del Autor
└─ Encontrar y validar el archivo del autor
Fase 2: Investigación Paralela (solo para campos faltantes)
├─ Agente de WebSearch 1: bio/antecedentes
├─ Agente de WebSearch 2: URL del avatar
└─ Agente de WebSearch 3: sitio web + redes sociales
Fase 3: Revisión del Usuario (PUNTO DE CONTROL OBLIGATORIO)
└─ Presentar hallazgos, esperar aprobación
Fase 4: Guardar Autor Mejorado
└─ Actualizar campos del frontmatter
Fase 5: Verificación de Calidad
└─ Ejecutar pnpm lint:fix && pnpm typecheck
Fase 1: Identificación del Autor
1.1 Encontrar el Archivo del Autor
Acepta un slug, nombre o nombre parcial del autor como argumento:
- Primero intentar coincidencia exacta de slug: Verificar si existe
content/authors/{slug}.md(convertir espacios a guiones, minúsculas) - Si no hay coincidencia exacta: Usar Grep para buscar el nombre en los archivos de autor:
Patrón Grep: "name:.*{término de búsqueda}" con glob: "content/authors/*.md"
Resultados:
- Una coincidencia → continuar con ese archivo
- Múltiples coincidencias → listar opciones para que el usuario elija
- Sin coincidencias → listar autores disponibles
1.2 Identificar Campos Faltantes
Leer el archivo del autor y verificar qué campos faltan o están vacíos:
Campos obligatorios (siempre presentes):
nameslug
Campos opcionales a mejorar:
bio- Antecedentes profesionales y experienciaavatar- URL de la foto de perfilwebsite- URL del sitio web personalsocials.twitter- Handle de Twitter/Xsocials.github- Nombre de usuario de GitHubsocials.linkedin- Nombre de usuario de LinkedInsocials.youtube- Canal de YouTube
Un campo está "faltante" si:
- No existe en el frontmatter
- Existe pero está vacío (
""onull)
Si todos los campos ya están completos, informar al usuario y ofrecer actualizar campos específicos.
Fase 2: Investigación Paralela
Invocar hasta 3 agentes de WebSearch en paralelo según los campos que falten:
**Agente 1 - Bio/Antecedentes:**
Herramienta Task con subagent_type: "general-purpose"
prompt: "Usa WebSearch para encontrar información de antecedentes profesionales para [Nombre del Autor].
Consulta: '[Nombre del Autor]' bio antecedentes experiencia
Extraer: Cargo, empresa, áreas de especialización, proyectos destacados.
Devolver: Una bio profesional de 1-2 oraciones."
**Agente 2 - URL del Avatar:**
Herramienta Task con subagent_type: "general-purpose"
prompt: "Usa WebSearch para encontrar una URL de foto de perfil para [Nombre del Autor].
Consulta: '[Nombre del Autor]' site:github.com OR site:twitter.com
Extraer: Nombre de usuario de GitHub o handle de Twitter para construir la URL del avatar.
Devolver: URL del avatar (preferir formato GitHub: https://github.com/{username}.png)"
**Agente 3 - Sitio Web y Redes Sociales:**
Herramienta Task con subagent_type: "general-purpose"
prompt: "Usa WebSearch para encontrar perfiles de redes sociales para [Nombre del Autor].
Consulta: '[Nombre del Autor]' twitter github linkedin youtube
Extraer: Sitio web personal, handle de Twitter, nombre de usuario de GitHub, perfil de LinkedIn, canal de YouTube.
Devolver: Lista de perfiles encontrados con URLs/handles."
Solo invocar agentes para los campos faltantes. Si bio ya existe, saltar Agente 1.
Recolectar todos los resultados mediante TaskOutput (bloqueante).
Fase 3: Revisión del Usuario (PUNTO DE CONTROL OBLIGATORIO)
Este es un paso de aprobación obligatorio. Presentar los cambios propuestos antes de guardar.
3.1 Presentar Cambios
Mostrar las actualizaciones propuestas como una tabla comparativa:
## Actualizaciones Propuestas para [Nombre del Autor]
| Campo | Actual | Propuesto |
|-------|--------|-----------|
| bio | (vacío) | "Fundador de X, creador de Y..." |
| avatar | (vacío) | "https://github.com/usuario.png" |
| website | (vacío) | "https://ejemplo.com" |
| socials.twitter | (vacío) | "usuario" |
| socials.github | (vacío) | "usuario" |
| socials.linkedin | (vacío) | "usuario" |
| socials.youtube | (vacío) | (no encontrado) |
3.2 Solicitar Aprobación
Usar la herramienta AskUserQuestion:
question: "¿Guardar estos cambios en el perfil del autor?"
header: "Revisión"
multiSelect: false
options:
- label: "Guardar"
description: "Actualizar el archivo del autor con estos valores"
- label: "Editar"
description: "Indicarme qué cambiar"
- label: "Cancelar"
description: "No modificar el archivo"
3.3 Manejar Respuesta
- Guardar: Continuar a la Fase 4
- Editar: Aplicar comentarios del usuario, mostrar vista previa actualizada
- Cancelar: Salir sin cambios
NO continuar a la Fase 4 sin aprobación explícita del usuario.
Fase 4: Guardar Autor Mejorado
4.1 Actualizar Frontmatter
Usar la herramienta Edit para actualizar solo los campos aprobados:
Antes:
---
name: "Juan Pérez"
slug: "juan-perez"
bio: ""
avatar: ""
website: ""
socials:
twitter: ""
github: ""
linkedin: ""
youtube: ""
---
Después:
---
name: "Juan Pérez"
slug: "juan-perez"
bio: "Ingeniero de software especializado en sistemas distribuidos..."
avatar: "https://github.com/juanperez.png"
website: "https://juanperez.dev"
socials:
twitter: "juanperez"
github: "juanperez"
linkedin: "juanperez"
youtube: ""
---
4.2 Preservar Valores Existentes
Crítico: Nunca sobrescribir valores existentes no vacíos a menos que se solicite explícitamente:
- Mantener
nameyslugexistentes sin cambios - Solo actualizar campos que estaban vacíos/faltantes
- Preservar cualquier campo personalizado adicional
4.3 Confirmación
Informar al usuario:
Actualizado: content/authors/{slug}.md
- bio: añadido
- avatar: añadido
- website: añadido
- socials.twitter: añadido
- socials.github: añadido
Fase 5: Verificación de Calidad
Ejecutar linter y typecheck para detectar problemas:
pnpm lint:fix && pnpm typecheck
Si se encuentran errores, corregirlos antes de completar la tarea.
Recuperación de Errores
| Error | Recuperación |
|---|---|
| Autor no encontrado | Listar autores disponibles en content/authors/ |
| No hay campos faltantes | Informar al usuario, ofrecer actualizar campos específicos |
| WebSearch falla | Intentar patrones de consulta alternativos |
| Usuario rechaza cambios | Permitir edición o cancelar |
| No se pudo encontrar información | Marcar campo como "(no encontrado)", continuar con los demás |
Lista de Verificación de Calidad
Antes de guardar, verificar:
- El archivo del autor existe en
content/authors/ - Solo se actualizan campos vacíos/faltantes
- Bio es de 1-2 oraciones, tono profesional
- URL del avatar es válida (preferir formato GitHub)
- Handles de redes sociales son solo nombres de usuario (sin URLs)
- Valores existentes no vacíos preservados
- Usuario aprobó explícitamente los cambios