Aprimorando Perfis de Autores
Esta habilidade preenche campos ausentes do perfil do autor (biografia, avatar, site, redes sociais) por meio de pesquisa na web.
Visão Geral do Fluxo de Trabalho
Fase 1: Identificação do Autor
└─ Encontrar e validar o arquivo do autor
Fase 2: Pesquisa Paralela (apenas para campos ausentes)
├─ Agente de Pesquisa 1: biografia/formação
├─ Agente de Pesquisa 2: URL do avatar
└─ Agente de Pesquisa 3: site + redes sociais
Fase 3: Revisão do Usuário (PONTO DE BLOQUEIO)
└─ Apresentar descobertas, aguardar aprovação
Fase 4: Salvar Autor Aprimorado
└─ Atualizar campos do frontmatter
Fase 5: Verificação de Qualidade
└─ Executar pnpm lint:fix && pnpm typecheck
Fase 1: Identificação do Autor
1.1 Encontrar o Arquivo do Autor
Aceite um slug, nome ou nome parcial do autor como argumento:
- Tentar correspondência exata de slug primeiro: Verificar se
content/authors/{slug}.mdexiste (converter espaços para hífens, minúsculas) - Se não houver correspondência exata: Usar Grep para pesquisar o nome nos arquivos do autor:
Padrão Grep: "name:.*{termo de busca}" com glob: "content/authors/*.md"
Resultados:
- Correspondência única → prosseguir com esse arquivo
- Múltiplas correspondências → listar opções para o usuário escolher
- Nenhuma correspondência → listar autores disponíveis
1.2 Identificar Campos Ausentes
Leia o arquivo do autor e verifique quais campos estão ausentes ou vazios:
Campos obrigatórios (sempre presentes):
nameslug
Campos opcionais para aprimorar:
bio- Formação profissional e experiênciaavatar- URL da foto de perfilwebsite- URL do site pessoalsocials.twitter- Identificador do Twitter/Xsocials.github- Nome de usuário do GitHubsocials.linkedin- Nome de usuário do LinkedInsocials.youtube- Canal do YouTube
Um campo está "ausente" se:
- Ele não existe no frontmatter
- Ele existe, mas está vazio (
""ounull)
Se todos os campos já estiverem preenchidos, informe o usuário e ofereça a opção de atualizar campos específicos.
Fase 2: Pesquisa Paralela
Gere até 3 agentes de Pesquisa Web em paralelo com base nos campos ausentes:
**Agente 1 - Biografia/Formação:**
Ferramenta Task com subagent_type: "general-purpose"
prompt: "Use WebSearch para encontrar informações de formação profissional para [Nome do Autor].
Consulta: '[Nome do Autor]' biografia formação experiência
Extrair: Cargo, empresa, áreas de especialização, projetos notáveis.
Retornar: Uma biografia profissional de 1 a 2 frases."
**Agente 2 - URL do Avatar:**
Ferramenta Task com subagent_type: "general-purpose"
prompt: "Use WebSearch para encontrar a URL da foto de perfil de [Nome do Autor].
Consulta: '[Nome do Autor]' site:github.com OU site:twitter.com
Extrair: Nome de usuário do GitHub ou identificador do Twitter para construir a URL do avatar.
Retornar: URL do avatar (preferir formato GitHub: https://github.com/{username}.png)"
**Agente 3 - Site e Redes Sociais:**
Ferramenta Task com subagent_type: "general-purpose"
prompt: "Use WebSearch para encontrar perfis de redes sociais de [Nome do Autor].
Consulta: '[Nome do Autor]' twitter github linkedin youtube
Extrair: Site pessoal, identificador do Twitter, nome de usuário do GitHub, perfil do LinkedIn, canal do YouTube.
Retornar: Lista de perfis encontrados com URLs/identificadores."
Gere apenas agentes para campos ausentes. Se a biografia já existir, pule o Agente 1.
Colete todos os resultados via TaskOutput (bloqueante).
Fase 3: Revisão do Usuário (PONTO DE BLOQUEIO)
Esta é uma etapa de aprovação obrigatória. Apresente as alterações propostas antes de salvar.
3.1 Apresentar Alterações
Exiba as atualizações propostas como uma tabela de comparação:
## Atualizações Propostas para [Nome do Autor]
| Campo | Atual | Proposto |
|-------|-------|----------|
| bio | (vazio) | "Fundador da X, criador de Y..." |
| avatar | (vazio) | "https://github.com/username.png" |
| website | (vazio) | "https://example.com" |
| socials.twitter | (vazio) | "username" |
| socials.github | (vazio) | "username" |
| socials.linkedin | (vazio) | "username" |
| socials.youtube | (vazio) | (não encontrado) |
3.2 Solicitar Aprovação
Use a ferramenta AskUserQuestion:
question: "Salvar estas alterações no perfil do autor?"
header: "Revisão"
multiSelect: false
options:
- label: "Salvar"
description: "Atualizar o arquivo do autor com estes valores"
- label: "Editar"
description: "Diga-me o que deve ser alterado"
- label: "Cancelar"
description: "Não modificar o arquivo"
3.3 Tratar Resposta
- Salvar: Prosseguir para a Fase 4
- Editar: Aplicar feedback do usuário, mostrar prévia atualizada
- Cancelar: Sair sem alterações
NÃO prossiga para a Fase 4 sem aprovação explícita do usuário.
Fase 4: Salvar Autor Aprimorado
4.1 Atualizar Frontmatter
Use a ferramenta Edit para atualizar apenas os campos aprovados:
Antes:
---
name: "João Silva"
slug: "joao-silva"
bio: ""
avatar: ""
website: ""
socials:
twitter: ""
github: ""
linkedin: ""
youtube: ""
---
Depois:
---
name: "João Silva"
slug: "joao-silva"
bio: "Engenheiro de software especializado em sistemas distribuídos..."
avatar: "https://github.com/joaosilva.png"
website: "https://joaosilva.dev"
socials:
twitter: "joaosilva"
github: "joaosilva"
linkedin: "joaosilva"
youtube: ""
---
4.2 Preservar Valores Existentes
Crítico: Nunca sobrescreva valores não vazios existentes, a menos que seja explicitamente solicitado:
- Manter
nameeslugexistentes inalterados - Atualizar apenas campos que estavam vazios/ausentes
- Preservar quaisquer campos personalizados adicionais
4.3 Confirmação
Informe o usuário:
Atualizado: content/authors/{slug}.md
- bio: adicionado
- avatar: adicionado
- website: adicionado
- socials.twitter: adicionado
- socials.github: adicionado
Fase 5: Verificação de Qualidade
Execute o linter e a verificação de tipo para detectar quaisquer problemas:
pnpm lint:fix && pnpm typecheck
Se forem encontrados erros, corrija-os antes de concluir a tarefa.
Recuperação de Erros
| Erro | Recuperação |
|---|---|
| Autor não encontrado | Listar autores disponíveis em content/authors/ |
| Nenhum campo ausente | Informar usuário, oferecer atualização de campos específicos |
| Pesquisa Web falha | Tentar padrões de consulta alternativos |
| Usuário rejeita alterações | Permitir edição ou cancelamento |
| Não foi possível encontrar informações | Marcar campo como "(não encontrado)", prosseguir com os outros |
Lista de Verificação de Qualidade
Antes de salvar, verifique:
- O arquivo do autor existe em
content/authors/ - Apenas atualizando campos vazios/ausentes
- Biografia tem 1 a 2 frases, tom profissional
- URL do avatar é válida (preferir formato GitHub)
- Identificadores de redes sociais são apenas nomes de usuário (sem URLs)
- Valores não vazios existentes foram preservados
- Usuário aprovou explicitamente as alterações