작성자 프로필 보강하기
이 스킬은 웹 검색을 통해 작성자 프로필의 누락된 필드(약력, 아바타, 웹사이트, 소셜 링크)를 채웁니다.
워크플로 개요
1단계: 작성자 식별
└─ 작성자 파일 찾기 및 검증
2단계: 병렬 연구 (누락된 필드만)
├─ 웹 검색 에이전트 1: 약력/배경
├─ 웹 검색 에이전트 2: 아바타 URL
└─ 웹 검색 에이전트 3: 웹사이트 + 소셜
3단계: 사용자 검토 (차단 게이트)
└─ 결과 제시, 승인 대기
4단계: 보강된 작성자 저장
└─ 프론트매터 필드 업데이트
5단계: 품질 검사
└─ pnpm lint:fix && pnpm typecheck 실행
1단계: 작성자 식별
1.1 작성자 파일 찾기
인수로 작성자 슬러그, 이름 또는 부분 이름을 받습니다:
- 정확한 슬러그 먼저 시도:
content/authors/{slug}.md파일이 존재하는지 확인 (공백을 하이픈으로 변환, 소문자) - 정확히 일치하는 파일이 없는 경우: Grep을 사용하여 작성자 파일에서 이름 검색:
Grep 패턴: "name:.*{검색어}" 의 glob: "content/authors/*.md"
결과:
- 단일 일치 → 해당 파일로 진행
- 여러 일치 → 사용자가 선택할 수 있도록 옵션 나열
- 일치 없음 → 사용 가능한 작성자 목록 표시
1.2 누락된 필드 식별
작성자 파일을 읽고 누락되었거나 비어 있는 필드를 확인합니다:
필수 필드 (항상 존재):
nameslug
보강할 선택적 필드:
bio- 전문 배경 및 전문성avatar- 프로필 사진 URLwebsite- 개인 웹사이트 URLsocials.twitter- Twitter/X 핸들socials.github- GitHub 사용자 이름socials.linkedin- LinkedIn 사용자 이름socials.youtube- YouTube 채널
필드가 "누락"된 조건:
- 프론트매터에 존재하지 않음
- 존재하지만 비어 있음 (
""또는null)
모든 필드가 이미 채워져 있으면 사용자에게 알리고 특정 필드 업데이트를 제안합니다.
2단계: 병렬 연구
누락된 필드에 따라 최대 3개의 웹 검색 에이전트를 병렬로 실행합니다:
**에이전트 1 - 약력/배경:**
하위 에이전트 유형이 "general-purpose"인 Task 도구
프롬프트: "WebSearch를 사용하여 [작성자 이름]의 전문 배경 정보를 찾으세요.
쿼리: '[작성자 이름]' 약력 배경 전문성
추출: 직함, 회사, 전문 분야, 주목할 만한 프로젝트.
반환: 1-2문장 전문 약력."
**에이전트 2 - 아바타 URL:**
하위 에이전트 유형이 "general-purpose"인 Task 도구
프롬프트: "WebSearch를 사용하여 [작성자 이름]의 프로필 사진 URL을 찾으세요.
쿼리: '[작성자 이름]' site:github.com OR site:twitter.com
추출: GitHub 사용자 이름 또는 Twitter 핸들로 아바타 URL 구성.
반환: 아바타 URL (GitHub 형식 선호: https://github.com/{사용자이름}.png)"
**에이전트 3 - 웹사이트 및 소셜:**
하위 에이전트 유형이 "general-purpose"인 Task 도구
프롬프트: "WebSearch를 사용하여 [작성자 이름]의 소셜 미디어 프로필을 찾으세요.
쿼리: '[작성자 이름]' twitter github linkedin youtube
추출: 개인 웹사이트, Twitter 핸들, GitHub 사용자 이름, LinkedIn 프로필, YouTube 채널.
반환: 발견된 프로필 목록(URL/핸들 포함)."
누락된 필드에 대해서만 에이전트를 실행합니다. 약력이 이미 있으면 에이전트 1을 건너뜁니다.
TaskOutput을 통해 모든 결과를 수집합니다 (차단).
3단계: 사용자 검토 (차단 게이트)
이는 필수 승인 단계입니다. 저장하기 전에 제안된 변경 사항을 제시합니다.
3.1 변경 사항 제시
제안된 업데이트를 비교 표로 표시합니다:
## [작성자 이름]에 대한 제안된 업데이트
| 필드 | 현재 | 제안 |
|-------|---------|----------|
| 약력 | (비어 있음) | "X의 창립자, Y의 제작자..." |
| 아바타 | (비어 있음) | "https://github.com/username.png" |
| 웹사이트 | (비어 있음) | "https://example.com" |
| socials.twitter | (비어 있음) | "username" |
| socials.github | (비어 있음) | "username" |
| socials.linkedin | (비어 있음) | "username" |
| socials.youtube | (비어 있음) | (찾을 수 없음) |
3.2 승인 요청
AskUserQuestion 도구를 사용합니다:
question: "이 변경 사항을 작성자 프로필에 저장할까요?"
header: "검토"
multiSelect: false
options:
- label: "저장"
description: "이 값들로 작성자 파일 업데이트"
- label: "편집"
description: "무엇을 변경할지 알려주세요"
- label: "취소"
description: "파일 수정하지 않음"
3.3 응답 처리
- 저장: 4단계로 진행
- 편집: 사용자 피드백 적용, 업데이트된 미리보기 표시
- 취소: 변경 없이 종료
명시적인 사용자 승인 없이 4단계로 진행하지 마십시오.
4단계: 보강된 작성자 저장
4.1 프론트매터 업데이트
Edit 도구를 사용하여 승인된 필드만 업데이트합니다:
이전:
---
name: "John Doe"
slug: "john-doe"
bio: ""
avatar: ""
website: ""
socials:
twitter: ""
github: ""
linkedin: ""
youtube: ""
---
이후:
---
name: "John Doe"
slug: "john-doe"
bio: "분산 시스템 전문 소프트웨어 엔지니어..."
avatar: "https://github.com/johndoe.png"
website: "https://johndoe.dev"
socials:
twitter: "johndoe"
github: "johndoe"
linkedin: "johndoe"
youtube: ""
---
4.2 기존 값 유지
중요: 명시적으로 요청하지 않는 한 기존의 비어 있지 않은 값을 절대 덮어쓰지 마십시오:
- 기존
name과slug는 변경하지 않고 유지 - 비어 있거나 누락된 필드만 업데이트
- 추가 사용자 정의 필드는 유지
4.3 확인
사용자에게 보고:
업데이트됨: content/authors/{slug}.md
- 약력: 추가됨
- 아바타: 추가됨
- 웹사이트: 추가됨
- socials.twitter: 추가됨
- socials.github: 추가됨
5단계: 품질 검사
린터와 타입 검사를 실행하여 문제를 찾습니다:
pnpm lint:fix && pnpm typecheck
오류가 발견되면 작업을 완료하기 전에 수정합니다.
오류 복구
| 오류 | 복구 |
|---|---|
| 작성자를 찾을 수 없음 | content/authors/에서 사용 가능한 작성자 목록 표시 |
| 누락된 필드 없음 | 사용자에게 알리고 특정 필드 업데이트 제안 |
| WebSearch 실패 | 대체 쿼리 패턴 시도 |
| 사용자가 변경 거부 | 편집 허용 또는 취소 |
| 정보를 찾을 수 없음 | 필드를 "(찾을 수 없음)"으로 표시하고 나머지는 진행 |
품질 체크리스트
저장하기 전에 확인:
- 작성자 파일이
content/authors/에 존재 - 비어 있거나 누락된 필드만 업데이트 중
- 약력은 1-2문장, 전문적인 어조
- 아바타 URL이 유효함 (GitHub 형식 선호)
- 소셜 핸들은 사용자 이름만 포함 (URL 아님)
- 기존 비어 있지 않은 값 유지됨
- 사용자가 명시적으로 변경 사항을 승인함