MUST USE this skill when ANY of these appear: (1) a JD or job posting is present — look for keywords like 채용, 채용공고, 주요업무, 자격요건, Requirements, Qualifications, 우대사항, 포지션; (2) user mentions applying to a specific company — '지원', '지원하려고', '지원 준비', '이력서 지원', 'resume apply', 'apply'; (3) user wants to tailor resume for a position — '이력서 맞춤', '이력서 준비', 'JD 이력서', 'JD 기반', 'JD 보고'; (4) user provides a JD via text, file path, or URL; (5) user mentions a company name with intent to apply (e.g. '토스 지원', '네이버 준비', '카카오 이력서'); (6) user wants to find or browse JDs — '어디 넣을까', '지원할 곳', 'JD 찾아', 'JD 골라', '공고 뭐 있지', '지원 준비 시작'. This skill handles the FULL workflow: acquire JD (provided or discovered from configured source) → create branch ({company}/{YYMMDD}) → tailor resume via review-resume → commit → generate PDF → deliver to configured output. Do NOT confuse with review-resume (general review without a target JD) or simple _config.yml edits.
End-to-end workflow that tailors a resume to a specific JD, generates a PDF, and delivers it to a configured output path.
resume-manage project rootbun installedAll resume modifications are made by directly editing _config.yml. Do not create intermediate files, scratch documents, or temporary drafts. Every change — whether applying review-resume feedback, tailoring content for a JD, or adjusting any resume field — happens in _config.yml itself.
Execute the 7 steps below in order. Each step proceeds automatically to the next, except Step 3 (review-resume) which involves user interaction and follows the review-resume skill's protocol.
After completing each step, output: [Step N/7: {step name} ✓]
Before starting the next step, verify the previous step's completion marker was output. Step 3 (review-resume) often involves extensive user interaction — after it concludes, re-read this Step list to locate your position and continue with Step 4. Steps 5-7 are the most commonly skipped because Step 3 consumes significant context.
Get the Job Description. Two paths depending on whether the user already has one.
The user provided a JD directly. Read it using the appropriate method:
Read toolWebFetchSkip to Extract from JD below.
The user wants to apply but didn't provide a specific JD. Help them find one.
1. Check Configuration
Read $OMT_DIR/resume-apply/config.yaml for the jd_source key.
2. First-Run Interview
Ask the user:
Q1. JD Storage Location
"JD 쌓아놓은 곳이 있나요? (로컬 폴더, 노션 페이지, 북마크 파일 등)"
Q2. Preference Criteria (optional)
"보통 어떤 회사나 포지션에 관심 있으세요? JD 고르는 기준이 있나요?"
없으면 최신순으로 보여드립니다.
Save to $OMT_DIR/resume-apply/config.yaml:
jd_source: "<user answer — path, URL, or natural language rule>"
jd_selection_order: "latest" # default, or user-specified criteria
jd_preferences: # optional — only if user provided
target_companies: [...]
target_positions: [...]
criteria: "<natural language>"
If the config file already has pdf_output_dir_rule etc., append the new keys without overwriting existing ones.
3. Browse JD Source
Interpret jd_source and list available JDs:
2026-03-25_toss_backend.md), 파일명만으로 정보가 부족한 경우에만 최근 10개 이내의 파일 본문을 읽어 추출한다.Sort by jd_selection_order (default: newest first). If jd_preferences exists, highlight matching JDs.
Present the list to the user:
Found 3 JDs in ~/Documents/jd/:
1. [2026-03-25] 토스 - Backend Engineer
2. [2026-03-20] 네이버 - Server Developer
3. [2026-03-15] 카카오 - Platform Engineer
→ 어떤 JD로 진행할까요?
4. User Selects
Read the selected JD and proceed to extraction.
YYMMDD format)Confirm the extracted company name and date with the user before proceeding.
Example:
JD: "라인망가 백엔드 엔지니어 채용"
→ company: linemanga
→ date: 260320 (today)
→ branch: linemanga/260320
Switch to main first (to avoid carrying over another company's changes), then create a new branch:
git checkout main
git checkout -b {company}/{YYMMDD}
If the branch already exists, ask the user whether to overwrite or use a different name.
Invoke the review-resume skill via the Skill tool.
Keep the full JD text in context — the review-resume skill needs the target position/company to perform accurate evaluation.
review-resume 스킬은 유저와의 인터랙션을 포함한 전체 평가 프로세스를 수행한다. 유저 승인까지 포함된 모든 과정이 완료될 때까지 Step 4로 진행하지 마라.
review-resume에서 승인된 수정사항을 _config.yml에 적용한다.
적용 완료 후 커밋:
git add _config.yml
git commit -m "docs: {company} JD-based resume tailoring"
Include any other modified files in the commit if applicable.
bun run pdf {company}/{YYMMDD}
This script:
resume.pdf in project rootThis may take some time. Report errors to the user if they occur.
Read the output configuration file:
$OMT_DIR/resume-apply/config.yaml
Ask the user two questions:
Q1. PDF output directory rule
"What rule should determine the PDF output directory?"
Example:
~/Documents/cv 내에서 가장 숫자가 큰 기존 디렉토리 사용You can specify a fixed path (e.g.,
~/Desktop/지원서/) or a dynamic rule that the AI will resolve each time.
Q2. PDF naming format
"What naming convention should be used? You can combine these variables:"
{company}— company name{date}— application date (YYMMDD){name}— name field from _config.yml{position}— position title extracted from the JD (use as-is from JD, do not translate)Example:
이력서_{name}_{company}_{date}.pdf
Save the answers as YAML:
# $OMT_DIR/resume-apply/config.yaml
pdf_output_dir_rule: "<user answer>"
pdf_naming_format: "<user answer>"
Create the directory with mkdir -p if it doesn't exist.
pdf_output_dir_rule from config.
name field from _config.yml for the {name} variable{position} from the JD's position title (use as-is from JD, do not translate)pdf_naming_formatcp resume.pdf "{resolved_output_dir}/{substituted_filename}"
Push the branch to origin and delete the local branch:
git push origin {company}/{YYMMDD}
git branch -D {company}/{YYMMDD}
The local branch is safe to delete because the remote now has the full history. If the push fails, do not delete the local branch — report the error to the user.
Before reporting completion to the user, output this checklist:
[Resume Apply Completion]
- [ ] Step 1: JD acquired (provided or discovered), company/date confirmed
- [ ] Step 2: Branch created from main
- [ ] Step 3: review-resume completed (user approval included)
- [ ] Step 4: Review findings applied to _config.yml and committed
- [ ] Step 5: PDF generated
- [ ] Step 6: PDF delivered to configured output
- [ ] Step 7: Branch pushed and local deleted
Every step must be DONE. If any step shows incomplete, complete it before finalizing.