Enhance author profiles by filling missing fields. Use when asked to "enhance author", "complete author profile", "find author info", or "update author details"...
This skill fills in missing author profile fields (bio, avatar, website, socials) via web research.
Phase 1: Author Identification
└─ Find and validate author file
Phase 2: Parallel Research (for missing fields only)
├─ WebSearch agent 1: bio/background
├─ WebSearch agent 2: avatar URL
└─ WebSearch agent 3: website + socials
Phase 3: User Review (BLOCKING GATE)
└─ Present findings, await approval
Phase 4: Save Enhanced Author
└─ Update frontmatter fields
Phase 5: Quality Check
└─ Run vp check && pnpm typecheck
Accept an author slug, name, or partial name as argument:
content/authors/{slug}.md exists (convert spaces to hyphens, lowercase)Grep pattern: "name:.*{search term}" with glob: "content/authors/*.md"
Outcomes:
Read the author file and check which fields are missing or empty:
Required fields (always present):
nameslugOptional fields to enhance:
bio - Professional background and expertiseavatar - URL to profile picturewebsite - Personal website URLsocials.twitter - Twitter/X handlesocials.github - GitHub usernamesocials.linkedin - LinkedIn usernamesocials.youtube - YouTube channelA field is "missing" if:
"" or null)If all fields are already populated, inform the user and offer to update specific fields.
Spawn up to 3 WebSearch agents in parallel based on what fields are missing:
**Agent 1 - Bio/Background:**
Task tool with subagent_type: "general-purpose"
prompt: "Use WebSearch to find professional background info for [Author Name].
Query: '[Author Name]' bio background expertise
Extract: Job title, company, areas of expertise, notable projects.
Return: A 1-2 sentence professional bio."
**Agent 2 - Avatar URL:**
Task tool with subagent_type: "general-purpose"
prompt: "Use WebSearch to find a profile picture URL for [Author Name].
Query: '[Author Name]' site:github.com OR site:twitter.com
Extract: GitHub username or Twitter handle to construct avatar URL.
Return: Avatar URL (prefer GitHub format: https://github.com/{username}.png)"
**Agent 3 - Website & Socials:**
Task tool with subagent_type: "general-purpose"
prompt: "Use WebSearch to find social media profiles for [Author Name].
Query: '[Author Name]' twitter github linkedin youtube
Extract: Personal website, Twitter handle, GitHub username, LinkedIn profile, YouTube channel.
Return: List of found profiles with URLs/handles."
Only spawn agents for missing fields. If bio already exists, skip Agent 1.
Collect all results via TaskOutput (blocking).
This is a mandatory approval step. Present the proposed changes before saving.
Display proposed updates as a comparison table:
## Proposed Updates for [Author Name]
| Field | Current | Proposed |
| ---------------- | ------- | --------------------------------- |
| bio | (empty) | "Founder of X, creator of Y..." |
| avatar | (empty) | "https://github.com/username.png" |
| website | (empty) | "https://example.com" |
| socials.twitter | (empty) | "username" |
| socials.github | (empty) | "username" |
| socials.linkedin | (empty) | "username" |
| socials.youtube | (empty) | (not found) |
Use the AskUserQuestion tool:
question: "Save these changes to the author profile?"
header: "Review"
multiSelect: false
options:
- label: "Save"
description: "Update the author file with these values"
- label: "Edit"
description: "Tell me what to change"
- label: "Cancel"
description: "Don't modify the file"
Do NOT proceed to Phase 4 without explicit user approval.
Use the Edit tool to update only the approved fields:
Before:
---
name: "John Doe"
slug: "john-doe"
bio: ""
avatar: ""
website: ""
socials:
twitter: ""
github: ""
linkedin: ""
youtube: ""
---
After:
---
name: "John Doe"
slug: "john-doe"
bio: "Software engineer specializing in distributed systems..."
avatar: "https://github.com/johndoe.png"
website: "https://johndoe.dev"
socials:
twitter: "johndoe"
github: "johndoe"
linkedin: "johndoe"
youtube: ""
---
Critical: Never overwrite existing non-empty values unless explicitly requested:
name and slug unchangedReport to user:
Updated: content/authors/{slug}.md
- bio: added
- avatar: added
- website: added
- socials.twitter: added
- socials.github: added
Run linter and type check to catch any issues:
vp check && pnpm typecheck
If errors are found, fix them before completing the task.
| Error | Recovery |
|---|---|
| Author not found | List available authors in content/authors/ |
| No missing fields | Inform user, offer to update specific fields |
| WebSearch fails | Try alternative query patterns |
| User rejects changes | Allow editing or cancel |
| Could not find info | Mark field as "(not found)", proceed with others |
Before saving, verify:
content/authors/