‹ 首页

resume-apply

@toongri · 收录于 昨天 · 上游提交 昨天

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.

适合你,如果每次投递都需要根据JD手动修改简历

/ 通过 npx 安装 校验哈希
npx oh-my-skill add toongri/oh-my-toong-playground/resume-apply
/ 通过 bash 安装
curl -fsSL https://oh-my-skill.com/install.sh | bash -s -- toongri/oh-my-toong-playground/resume-apply
/ 已经装过?验证本机副本,不用重装
npx oh-my-skill verify toongri/oh-my-toong-playground/resume-apply
安装目标可用 --agent / --scope 或 --to 明确指定;省略时只会在唯一已存在的 agent 目录上自动选择,零命中或多命中会停止并提示。content_hash 缺失或不一致均拒装。
25GitHub stars
~2.3K最小装载
~2.3K含声明引用
~5K文本包总量
索引托管

怎么用

商店整理自技能原文 · 版本 731a80a · 表述以原文为准
它做什么

该技能会获取职位描述(JD),然后根据JD定制简历、生成PDF,并自动保存到您指定的位置。整个过程包括创建分支、调用审阅、修改配置文件等步骤。

什么时候触发

当您提供职位描述(文字、文件或链接),或表达想申请某公司(如“支持简历定制”),或想让Claude帮忙查找职位时触发。

装好后可以这样说
Claude会读取JD并启动定制流程。
Claude会尝试发现JD并引导您选择。
Claude会从配置的JD来源列出选项。
技能原文 SKILL.md作者撰写 · MIT · 731a80a

Resume Apply Workflow

End-to-end workflow that tailors a resume to a specific JD, generates a PDF, and delivers it to a configured output path.

Prerequisites
  • Current directory: resume-manage project root
  • Docker running (required for PDF generation)
  • bun installed
Core Principle

All 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.

Workflow

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.

Step Completion Tracking

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.

Step 1: Acquire JD

Get the Job Description. Two paths depending on whether the user already has one.

1-A. JD Provided

The user provided a JD directly. Read it using the appropriate method:

  • Text pasted directly → use as-is
  • File path → read with the Read tool
  • URL → fetch with WebFetch

Skip to Extract from JD below.

1-B. JD Discovery

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.

  • Key exists → go to step 3 (Browse JD Source)
  • Key missing → go to step 2 (First-Run Interview)

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:

  • Local directory → list files. 파일명에서 company/position/date를 먼저 추론하고 (예: 2026-03-25_toss_backend.md), 파일명만으로 정보가 부족한 경우에만 최근 10개 이내의 파일 본문을 읽어 추출한다.
  • URL → fetch with WebFetch, parse page content to extract JD listings (company/position/date)
  • Natural language rule (e.g., "노션 취업 준비 페이지") → interpret the rule using available tools. If the source is not directly accessible, ask the user to provide the JD list or content.

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.

Extract from JD
  • Company name: English lowercase, kebab-case for multi-word names
  • Application date: default to today (YYMMDD format)

Confirm the extracted company name and date with the user before proceeding.

Example:

JD: "라인망가 백엔드 엔지니어 채용"
→ company: linemanga
→ date: 260320 (today)
→ branch: linemanga/260320
Step 2: Create Branch

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.

Step 3: Review & Improve Resume

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로 진행하지 마라.

Step 4: Apply Review Findings & Commit

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.

Step 5: Generate PDF
bun run pdf {company}/{YYMMDD}

This script:

  1. Checks out the target branch
  2. Starts Jekyll server via Docker
  3. Converts to PDF via Playwright → produces resume.pdf in project root
  4. Shuts down Docker and restores the original branch

This may take some time. Report errors to the user if they occur.

Step 6: Deliver PDF
6-1. Check Configuration

Read the output configuration file:

$OMT_DIR/resume-apply/config.yaml
  • File not found → go to 6-2 (first-run interview)
  • File exists → go to 6-3 (copy PDF)
6-2. First-Run Interview

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.

6-3. Copy PDF
  1. Resolve output directory: Read pdf_output_dir_rule from config.
  2. If it's a fixed path, use directly.
  3. If it's a natural language rule (e.g., "~/Documents/cv 내에서 가장 숫자가 큰 기존 디렉토리"), interpret the rule: list the directory contents, apply the rule logic, and determine the correct path.
  4. Read the name field from _config.yml for the {name} variable
  5. Extract {position} from the JD's position title (use as-is from JD, do not translate)
  6. Substitute variables in pdf_naming_format
  7. Create resolved output directory if it doesn't exist
  8. Copy the PDF: ```bash cp resume.pdf "{resolved_output_dir}/{substituted_filename}" ```
  9. Report the final path to the user
Step 7: Push & Cleanup

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.

Completion Verification

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.

按 MIT 许可原样转载,未经改动 · 在 GitHub 查看 →

评论

登录即可评论;带「已验证安装」的,是发布者名下有本店的安装或持有记录。