关于 resume-tailoring
resume-tailoring 是面向求职者的简历定制 Skill,根据目标职位描述匹配并调整现有简历内容。它通过对话发掘未记录的经历,并以事实准确为边界。
主要功能
- 01解析职位描述并研究公司与职位
- 02扫描 Markdown 简历并建立经历库
- 03对内容匹配进行置信度评分
- 04通过分支式提问发掘经历
- 05生成 Markdown、DOCX、PDF 和报告
- 06支持多个职位的批量流程
适用场景
- 01针对特定职位调整已有简历
- 02从多份 Markdown 简历中筛选经历
- 03通过访谈补充简历中未记录的经验
- 04为多个职位批量准备定制简历
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ varunr89/ resume-tailoring-skill --skill resume-tailoring安装后在 Claude Code 中输入/resume-tailoring确认已加载。
详细介绍
简历定制技能
概述
生成高质量、针对特定职位描述优化的定制简历,同时确保事实准确。通过对话式探索,发掘未记录的经历,以全面展现个人。
核心原则: 在保留事实的前提下优化——最大限度地提高匹配度,同时确保事实准确。绝不捏造经历,而是巧妙地重新表述并突出相关方面。
使命: 求职者能否获得工作,应取决于他们的经历和能力,而不是简历写作技巧。
适用场景
以下情况使用此技能:
- 用户提供职位描述并希望定制简历
- 用户有多份 Markdown 格式的现有简历
- 用户希望针对特定职位或公司优化申请材料
- 用户需要帮助发掘并阐述未记录的经历
不要用于:
- 从零开始撰写通用简历(用户需要先有现成的简历库)
- 求职信(使用其他技能)
- 优化 LinkedIn 个人资料(使用其他技能)
快速开始
用户需提供:
- 职位描述(文本或 URL)
- 简历库位置(默认为当前目录下的
resumes/)
工作流:
- 根据现有简历建立简历库
- 调研公司和职位
- 创建模板(需用户确认)
- 可选:通过分支提问探索经历
- 对内容进行匹配并评估可信度
- 生成 MD、DOCX、PDF 和报告
- 用户审核 → 可选更新简历库
实现
参见支持文件:
research-prompts.md- 用于公司和职位调研的结构化提示词matching-strategies.md- 内容匹配算法与评分branching-questions.md- 经历探索对话模式
工作流详情
多职位检测
用户提供以下内容时触发:
- 多个职位描述 URL(以逗号或换行分隔)
- 短语:“多个工作”“多个职位”“批量”“3 个工作”
- 公司或职位列表:“Microsoft PM、Google TPM、AWS PM”
检测逻辑:
# Pseudo-code
def detect_multi_job(user_input):
indicators = [
len(extract_urls(user_input)) > 1,
any(phrase in user_input.lower() for phrase in
["multiple jobs", "several positions", "batch of", "3 jobs", "5 jobs"]),
count_company_mentions(user_input) > 1
]
return any(indicators)
如果检测到:
"I see you have multiple job applications. Would you like to use
multi-job mode?
BENEFITS:
- Shared experience discovery (faster - ask questions once for all jobs)
- Batch processing with progress tracking
- Incremental additions (add more jobs later)
TIME COMPARISON (3 similar jobs):
- Sequential single-job: ~45 minutes (15 min × 3)
- Multi-job mode: ~40 minutes (15 min discovery + 8 min per job)
Use multi-job mode? (Y/N)"
如果用户确认 Y:
- 使用多职位工作流(参见 multi-job-workflow.md)
如果用户确认 N 或检测到单个职位:
- 使用现有的单职位工作流(从阶段 0 开始)
向后兼容性: 单职位工作流完全不变。
多职位工作流:
启用多职位模式后,参见 multi-job-workflow.md 了解完整工作流。
多职位流程概览:
┌─────────────────────────────────────────────────────────────┐
│ PHASE 0: Intake & Batch Initialization │
│ - Collect 3-5 job descriptions │
│ - Initialize batch structure │
│ - Run library initialization (once) │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ PHASE 1: Aggregate Gap Analysis │
│ - Extract requirements from all JDs │
│ - Cross-reference against library │
│ - Build unified gap map (deduplicate) │
│ - Prioritize: Critical → Important → Job-specific │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ PHASE 2: Shared Experience Discovery │
│ - Single branching interview covering ALL gaps │
│ - Multi-job context for each question │
│ - Tag experiences with job relevance │
│ - Enrich library with discoveries │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ PHASE 3: Per-Job Processing (Sequential) │
│ For each job: │
│ ├─ Research (company + role benchmarking) │
│ ├─ Template generation │
│ ├─ Content matching (uses enriched library) │
│ └─ Generation (MD + DOCX + Report) │
│ Interactive or Express mode │
└─────────────────────────────────────────────────────────────┘
↓
┌─────────────────────────────────────────────────────────────┐
│ PHASE 4: Batch Finalization │
│ - Generate batch summary │
│ - User reviews all resumes together │
│ - Approve/revise individual or batch │
│ - Update library with approved resumes │
└─────────────────────────────────────────────────────────────┘
节省时间:
- 3 个职位:约 40 分钟(而顺序处理需 45 分钟)=节省 11%
- 5 个职位:约 55 分钟(而顺序处理需 75 分钟)=节省 27%
质量: 与单职位工作流深度相同(调研、匹配、生成)
参见 multi-job-workflow.md 了解完整实现细节。
阶段 0:初始化简历库
始终首先运行——建立最新的简历数据库
流程:
-
定位简历目录:
User provides path OR default to ./resumes/ Validate directory exists -
扫描 Markdown 文件:
Use Glob tool: pattern="*.md" path={resume_directory} Count files found Announce: "Building resume library... found {N} resumes" -
解析每份简历: 对于每个简历文件:
- 使用 Read 工具加载内容
- 提取各部分:职位、要点、技能、教育经历
- 识别模式:要点结构、长度、格式
-
建立经历数据库结构:
{ "roles": [ { "role_id": "company_title_year", "company": "Company Name", "title": "Job Title", "dates": "YYYY-YYYY", "description": "Role summary", "bullets": [ { "text": "Full bullet text", "themes": ["leadership", "technical"], "metrics": ["17x improvement", "$3M revenue"], "keywords": ["cross-functional", "program"], "source_resumes": ["resume1.md"] } ] } ], "skills": { "technical": ["Python", "Kusto", "AI/ML"], "product": ["Roadmap", "Strategy"], "leadership": ["Stakeholder mgmt"] }, "education": [...], "user_preferences": { "typical_length": "1-page|2-page", "section_order": ["summary", "experience", "education"], "bullet_style": "pattern" } } -
自动标记内容:
- 主题:扫描关键词(领导力、技术、分析等)
- 指标:提取数字、百分比和金额
- 关键词:高频技术术语、行动动词
输出: 可供匹配的内存数据库
代码模式:
# Pseudo-code for reference
library = {
"roles": [],
"skills": {},
"education": []
}
for resume_file in glob("resumes/*.md"):
content = read(resume_file)
roles = extract_roles(content)
for role in roles:
role["bullets"] = tag_bullets(role["bullets"])
library["roles"].append(role)
return library
阶段 1:调研阶段
目标: 构建全面的“成功画像”,不局限于职位描述
输入:
- 职位描述(用户提供的文本或 URL)
- 可选:职位描述中未提及的公司名称
流程:
1.1 解析职位描述:
Use research-prompts.md JD parsing template
Extract: requirements, keywords, implicit preferences, red flags, role archetype
1.2 公司调研:
WebSearch queries:
- "{company} mission values culture"
- "{company} engineering blog"
- "{company} recent news"
Synthesize: mission, values, business model, stage
1.3 职位基准分析:
WebSearch: "site:linkedin.com {job_title} {company}"
WebFetch: Top 3-5 profiles
Analyze: common backgrounds, skills, terminology
If sparse results, try similar companies
1.4 综合形成成功画像:
Combine all research into structured profile (see research-prompts.md template)
Include:
- Core requirements (must-have)
- Valued capabilities (nice-to-have)
- Cultural fit signals
- Narrative themes
- Terminology map (user's background → their language)
- Risk factors + mitigations
确认点:
Present success profile to user:
"Based on my research, here's what makes candidates successful for this role:
{SUCCESS_PROFILE_SUMMARY}
Key findings:
- {Finding 1}
- {Finding 2}
- {Finding 3}
Does this match your understanding? Any adjustments?"
Wait for user confirmation before proceeding.
输出: 经确认的成功画像文档
第 2 阶段:模板生成
目标: 创建针对这一特定职位优化的简历结构
输入:
- 成功画像(来自第 1 阶段)
- 用户的简历库(来自第 0 阶段)
流程:
2.1 分析用户的简历库:
Extract from library:
- All roles, titles, companies, date ranges
- Role archetypes (technical contributor, manager, researcher, specialist)
- Experience clusters (what domains/skills appear frequently)
- Career progression and narrative
2.2 职位整合决策:
适合整合的情况:
- 同一家公司,职责相似
- 目标职位更看重连续性,而非细分的职业发展历程
- 合并后的叙述比拆分开更有力
- 页面空间有限
适合分开的情况:
- 不同公司(始终分开)
- 职责截然不同,且两者都很重要
- 目标职位看重具体的职业发展历程
- 其中一个职位的相关经验显著更多
决策模板:
For {Company} with {N} positions:
OPTION A (Consolidated):
Title: "{Combined_Title}"
Dates: "{First_Start} - {Last_End}"
Rationale: {Why consolidation makes sense}
OPTION B (Separate):
Position 1: "{Title}" ({Dates})
Position 2: "{Title}" ({Dates})
Rationale: {Why separate makes sense}
RECOMMENDED: Option {A/B} because {reasoning}
2.3 职称重新表述原则:
核心规则: 如实反映实际工作,突出与目标职位最相关的方面
策略:
-
突出不同方面:
- “研究生研究员” → “研究软件工程师”(如果工作以编码为主)
- “数据科学负责人” → “技术项目经理”(如果主要负责领导工作)
-
使用行业标准术语:
- “Scientist III” → “高级研究科学家”(更清楚地体现资历)
- “项目协调员” → “项目经理”(标准术语)
-
如实注明专业方向:
- “工程师” → “ML 工程师”(如果 ML 工作占比较大)
- “研究员” → “计算生态学家”(如果使用了计算方法)
-
调整资历级别标识:
- 根据职责范围选择“负责人”“高级”或“资深”
限制:
- 绝不声称做过未实际从事的工作
- 绝不夸大到无法合理证明的资历级别
- 公司名称和日期必须准确无误
- 核心职责必须准确
2.4 生成模板结构:
## Professional Summary
[GUIDANCE: {X} sentences emphasizing {themes from success profile}]
[REQUIRED ELEMENTS: {keywords from JD}]
## Key Skills
[STRUCTURE: {2-4 categories based on JD structure}]
[SOURCE: Extract from library matching success profile]
## Professional Experience
### [ROLE 1 - Most Recent/Relevant]
[CONSOLIDATION: {merge X positions OR keep separate}]
[TITLE OPTIONS:
A: {emphasize aspect 1}
B: {emphasize aspect 2}
Recommended: {option with rationale}]
[BULLET ALLOCATION: {N bullets based on relevance + recency}]
[GUIDANCE: Emphasize {themes}, look for {experience types}]
Bullet 1: [SEEKING: {requirement type}]
Bullet 2: [SEEKING: {requirement type}]
...
### [ROLE 2]
...
## Education
[PLACEMENT: {top if required/recent, bottom if experience-heavy}]
## [Optional Sections]
[INCLUDE IF: {criteria from success profile}]
检查点:
Present template to user:
"Here's the optimized resume structure for this role:
STRUCTURE:
{Section order and rationale}
ROLE CONSOLIDATION:
{Decisions with options}
TITLE REFRAMING:
{Proposed titles with alternatives}
BULLET ALLOCATION:
Role 1: {N} bullets (most relevant)
Role 2: {N} bullets
...
Does this structure work? Any adjustments to:
- Role consolidation?
- Title reframing?
- Bullet allocation?"
Wait for user approval before proceeding.
输出: 经批准的模板框架,以及每个部分的填写指导
第 2.5 阶段:经验挖掘(可选)
目标: 通过对话挖掘未记录的经验
触发时机:
After template approval, if gaps identified:
"I've identified {N} gaps or areas where we have weak matches:
- {Gap 1}: {Current confidence}
- {Gap 2}: {Current confidence}
...
Would you like to do a structured brainstorming session to surface
any experiences you haven't documented yet?
This typically takes 10-15 minutes and often uncovers valuable content."
User can accept or skip.
分支式访谈流程:
方式: 通过对话进行,并根据回答提出后续问题
针对每个差距进行分支式对话(见 branching-questions.md):
-
从开放式问题开始:
- 技术差距:“你使用过 {skill} 吗?”
- 软技能差距:“请讲讲你展示过 {demonstrated_skill} 的经历。”
- 近期工作:“你最近做了哪些工作?”
-
根据回答选择分支:
- 是/经验扎实 → 深入了解(规模、挑战、指标)
- 间接相关 → 了解职责及经验的可迁移性
- 有相邻经验 → 了解相关经历
- 个人项目 → 评估其近期程度和实质内容
- 没有 → 尝试更宽泛的类别,或继续下一项
-
系统性地追问:
- 通过询问“做了什么”“如何做”“为什么”来获取细节
- 量化:“有具体指标吗?”
- 补充背景:“这是生产环境中的工作吗?”
- 验证:“这能弥补这个差距吗?”
-
立即记录:
- 记录用户分享的经验
- 提出澄清问题(日期、范围、影响)
- 帮助将其表述为简历要点
- 标注其对应的差距
记录结构:
## Newly Discovered Experiences
### Experience 1: {Brief description}
- Context: {Where/when}
- Scope: {Scale, duration, impact}
- Addresses: {Which gaps}
- Bullet draft: "{Achievement-focused bullet}"
- Confidence: {How well fills gap - percentage}
### Experience 2: ...
整合选项:
发现环节结束后:
"Great! I captured {N} new experiences. For each one:
1. ADD TO CURRENT RESUME - Integrate now
2. ADD TO LIBRARY ONLY - Save for future, not needed here
3. REFINE FURTHER - Think more about articulation
4. DISCARD - Not relevant enough
Let me know for each experience."
重要说明:
- 严守真实性标准——帮助用户清晰表述,绝不捏造
- 重点关注差距和匹配度较低的方面,而非优势领域
- 如有需要,控制时长(通常为 10–15 分钟)
- 如果用户对现有简历库有信心,可以完全跳过
- 注意适时结束,不要让用户疲于应答
输出: 新经验已整合到简历库中,可用于匹配
阶段 3:组装阶段
目标: 使用最匹配的内容填充已批准的模板,并提供透明的评分
输入:
- 已批准的模板(来自阶段 2)
- 简历库 + 已发现的经历(来自阶段 0 + 2.5)
- 成功画像(来自阶段 1)
流程:
3.1 对每个模板槽位:
-
从库中提取所有候选要点
- 库数据库中的所有要点
- 所有新发现的经历
- 为每项内容注明来源简历
-
为每项候选内容评分(参见 matching-strategies.md)
- 直接匹配(40%):关键词、领域、技术、成果
- 可迁移(30%):能力相同,情境不同
- 相邻匹配(20%):相关工具、方法、问题领域
- 影响力(10%):成就类型的匹配程度
总分 =(直接匹配 × 0.4)+(可迁移 × 0.3)+(相邻匹配 × 0.2)+(影响力 × 0.1)
-
按分数排列候选内容
- 按分数从高到低排序
- 按置信度分组:
- 90-100%:直接匹配
- 75-89%:可迁移
- 60-74%:相邻匹配
- <60%:较弱/缺口
-
展示排名前 3 的匹配项并进行分析:
TEMPLATE SLOT: {Role} - Bullet {N} SEEKING: {Requirement description} MATCHES: [DIRECT - 95%] "{bullet_text}" ✓ Direct: {what matches directly} ✓ Transferable: {what transfers} ✓ Metrics: {quantified impact} Source: {resume_name} [TRANSFERABLE - 78%] "{bullet_text}" ✓ Transferable: {what transfers} ✓ Adjacent: {what's adjacent} ⚠ Gap: {what's missing} Source: {resume_name} [ADJACENT - 62%] "{bullet_text}" ✓ Adjacent: {what's related} ⚠ Gap: {what's missing} Source: {resume_name} RECOMMENDATION: Use DIRECT match (95%) ALTERNATIVE: If avoiding repetition, use TRANSFERABLE (78%) with reframing -
处理缺口(置信度 <60%):
GAP IDENTIFIED: {Requirement} BEST AVAILABLE: {score}% - "{bullet_text}" REFRAME OPPORTUNITY: {If applicable} Original: "{text}" Reframed: "{adjusted_text}" (truthful because {reason}) New confidence: {score}% OPTIONS: 1. Use reframed version ({new_score}%) 2. Acknowledge gap in cover letter 3. Omit bullet slot (reduce allocation) 4. Use best available with disclosure RECOMMENDATION: {Most appropriate option}
3.2 内容重构:
匹配良好(>60%)但术语不一致时:
应用 matching-strategies.md 中的策略:
- 关键词对齐(保留原意,调整术语)
- 调整侧重点(事实不变,突出不同重点)
- 抽象层级(调整技术细节程度)
- 突出规模(强调相关方面)
展示调整前后内容,确保透明:
REFRAMING APPLIED:
Bullet: {template_slot}
Original: "{original_bullet}"
Source: {resume_name}
Reframed: "{reframed_bullet}"
Changes: {what changed and why}
Truthfulness: {why this is accurate}
检查点:
"I've matched content to your template. Here's the complete mapping:
COVERAGE SUMMARY:
- Direct matches: {N} bullets ({percentage}%)
- Transferable: {N} bullets ({percentage}%)
- Adjacent: {N} bullets ({percentage}%)
- Gaps: {N} ({percentage}%)
REFRAMINGS APPLIED: {N}
- {Example 1}
- {Example 2}
GAPS IDENTIFIED:
- {Gap 1}: {Recommendation}
- {Gap 2}: {Recommendation}
OVERALL JD COVERAGE: {percentage}%
Review the detailed mapping below. Any adjustments to:
- Match selections?
- Reframings?
- Gap handling?"
[Present full detailed mapping]
Wait for user approval before generation.
输出: 逐条要点的完整映射,包含置信度评分和重构内容
阶段 4:生成阶段
目标: 创建专业的多格式输出
输入:
- 已批准的内容映射(来自阶段 3)
- 用户的格式偏好(来自库分析)
- 目标职位信息(来自阶段 1)
流程:
4.1 Markdown 生成:
将映射后的内容整理为简洁的 Markdown:
# {User_Name}
{Contact_Info}
---
## Professional Summary
{Summary_from_template}
---
## Key Skills
**{Category_1}:**
- {Skills_from_library_matching_profile}
**{Category_2}:**
- {Skills_from_library_matching_profile}
{Repeat for all categories}
---
## Professional Experience
### {Job_Title}
**{Company} | {Location} | {Dates}**
{Role_summary_if_applicable}
• {Bullet_1_from_mapping}
• {Bullet_2_from_mapping}
...
### {Next_Role}
...
---
## Education
**{Degree}** | {Institution} ({Year})
**{Degree}** | {Institution} ({Year})
采用用户的偏好:
- 库分析得出的格式风格
- 要点结构模式
- 章节顺序
- 常见篇幅(1 页或 2 页)
输出: {Name}_{Company}_{Role}_Resume.md
4.2 DOCX 生成:
使用 document-skills:docx:
REQUIRED SUB-SKILL: Use document-skills:docx
Create Word document with:
- Professional fonts (Calibri 11pt body, 12pt headers)
- Proper spacing (single within sections, space between)
- Clean bullet formatting (proper numbering config, NOT unicode)
- Header with contact information
- Appropriate margins (0.5-1 inch)
- Bold/italic emphasis (company names, titles, dates)
- Page breaks if 2-page resume
See docx skill documentation for:
- Paragraph and TextRun structure
- Numbering configuration for bullets
- Heading levels and styles
- Spacing and margins
输出: {Name}_{Company}_{Role}_Resume.docx
4.3 PDF 生成(可选):
如果用户要求 PDF:
OPTIONAL SUB-SKILL: Use document-skills:pdf
Convert DOCX to PDF OR generate directly
Ensure formatting preservation
Professional appearance for direct submission
输出: {Name}_{Company}_{Role}_Resume.pdf
4.4 生成摘要报告:
创建元数据文件:
# Resume Generation Report
**{Role} at {Company}**
**Date Generated:** {timestamp}
## Target Role Summary
- Company: {Company}
- Position: {Role}
- IC Level: {If known}
- Focus Areas: {Key areas}
## Success Profile Summary
- Key Requirements: {top 5}
- Cultural Fit Signals: {themes}
- Risk Factors Addressed: {mitigations}
## Content Mapping Summary
- Total bullets: {N}
- Direct matches: {N} ({percentage}%)
- Transferable: {N} ({percentage}%)
- Adjacent: {N} ({percentage}%)
- Gaps identified: {list}
## Reframing Applied
- {bullet}: {original} → {reframed} [Reason: {why}]
...
## Source Resumes Used
- {resume1}: {N} bullets
- {resume2}: {N} bullets
...
## Gaps Addressed
### Before Experience Discovery:
{Gap analysis showing initial state}
### After Experience Discovery:
{Gap analysis showing final state}
### Remaining Gaps:
{Any unresolved gaps with recommendations}
## Key Differentiators for This Role
{What makes user uniquely qualified}
## Recommendations for Interview Prep
- Stories to prepare
- Questions to expect
- Gaps to address
输出: {Name}_{Company}_{Role}_Resume_Report.md
向用户展示:
"Your tailored resume has been generated!
FILES CREATED:
- {Name}_{Company}_{Role}_Resume.md
- {Name}_{Company}_{Role}_Resume.docx
- {Name}_{Company}_{Role}_Resume_Report.md
{- {Name}_{Company}_{Role}_Resume.pdf (if requested)}
QUALITY METRICS:
- JD Coverage: {percentage}%
- Direct Matches: {percentage}%
- Newly Discovered: {N} experiences
Review the files and let me know:
1. Save to library (recommended)
2. Need revisions
3. Save but don't add to library"
阶段 5:更新库(有条件)
目标: 可选择将成功生成的简历添加到库中,以便将来使用
时机: 用户审阅并批准生成的简历后
检查点问题:
"Are you satisfied with this resume?
OPTIONS:
1. YES - Save to library
→ Adds resume to permanent location
→ Rebuilds library database
→ Makes new content available for future resumes
2. NO - Need revisions
→ What would you like to adjust?
→ Make changes and re-present
3. SAVE BUT DON'T ADD TO LIBRARY
→ Keep files in current location
→ Don't enrich database
→ Useful for experimental resumes
Which option?"
如果选择选项 1(是——保存到库中):
流程:
-
将简历移至库中:
Source: {current_directory}/{Name}_{Company}_{Role}_Resume.md Destination: {resume_library}/{Name}_{Company}_{Role}_Resume.md Also move: - .docx file - .pdf file (if exists) - _Report.md file -
重建库数据库:
Re-run Phase 0 library initialization Parse newly created resume Add bullets to experience database Update keyword/theme indices Tag with metadata: - target_company: {Company} - target_role: {Role} - generated_date: {timestamp} - jd_coverage: {percentage} - success_profile: {reference to profile} -
保留生成元数据:
{ "resume_id": "{Name}_{Company}_{Role}", "generated": "{timestamp}", "source_resumes": ["{resume1}", "{resume2}"], "reframings": [ { "original": "{text}", "reframed": "{text}", "reason": "{why}" } ], "match_scores": { "bullet_1": 95, "bullet_2": 87, ... }, "newly_discovered": [ { "experience": "{description}", "bullet": "{text}", "addresses_gap": "{gap}" } ] } -
宣布完成:
"Resume saved to library! Library updated: - Total resumes: {N} - New content variations: {N} - Newly discovered experiences added: {N} This resume and its new content are now available for future tailoring sessions."
如果选择选项 2(否——需要修改):
"What would you like to adjust?"
[Collect user feedback]
[Make requested changes]
[Re-run relevant phases]
[Re-present for approval]
[Repeat until satisfied or user cancels]
如果选择选项 3(保存但不添加到库中):
"Resume files saved to current directory:
- {Name}_{Company}_{Role}_Resume.md
- {Name}_{Company}_{Role}_Resume.docx
- {Name}_{Company}_{Role}_Resume_Report.md
Not added to library - you can manually move later if desired."
更新库的好处:
- 每份成功生成的简历都会扩充简历库
- 可供使用的要点变体增加
- 可重复使用有效的重构方式
- 永久记录已发现的经历
- 后续会话可以使用更丰富的简历库
- 系统会随着时间不断自我改进
输出: 已更新的库数据库 + 元数据保留(如果选择选项 1)
错误处理与边缘情况
边缘情况 1:简历库不足
SCENARIO: User has only 1-2 resumes, limited content
HANDLING:
"⚠️ Limited resume library detected ({N} resumes).
This may result in:
- Fewer matching options
- More gaps in coverage
- Less variety in bullet phrasing
RECOMMENDATIONS:
- Proceed with available content (I'll do my best!)
- Consider adding more resumes after this generation
- Experience Discovery phase will be especially valuable
Continue? (Y/N)"
边缘情况 2:没有合适的匹配项(关键要求的置信度 <60%)
SCENARIO: Template slot requires experience user doesn't have
HANDLING:
"❌ GAP: {Requirement}
No matches found with confidence >60%
OPTIONS:
1. Run Experience Discovery - might surface undocumented work
2. Reframe best available ({score}%) - I'll show you the reframing
3. Omit bullet slot - reduce template allocation
4. Note for cover letter - emphasize learning ability
Which approach?"
[Don't force matches - be transparent about gaps]
边缘情况 3:研究阶段失败
SCENARIO: WebSearch fails, LinkedIn unavailable, company info sparse
HANDLING:
"⚠️ Limited company research available.
What I found:
- {Available info}
What's missing:
- {Missing areas}
Falling back to job description-only analysis.
Result: Template will be optimized for JD but may miss cultural nuances.
Do you have additional context about:
- Company culture?
- Team structure?
- Technologies used?
(Optional - you can share or skip)"
[Proceed with best-effort approach]
边缘情况 4:职位描述质量问题
SCENARIO: Vague JD, missing requirements, poorly written
HANDLING:
"⚠️ Job description lacks detail in areas:
- {Missing area 1}
- {Missing area 2}
This may limit template optimization.
Do you have additional context about:
- {Question 1}
- {Question 2}
(Optional - I'll work with what's available)"
[Extract what's possible, proceed]
边缘情况 5:职位合并存在歧义
SCENARIO: Unclear whether to merge roles or keep separate
HANDLING:
"🤔 Ambiguous consolidation decision for {Company}
OPTION A (Consolidated): {Rationale}
OPTION B (Separate): {Rationale}
Both are defensible. Which do you prefer?
(This becomes your preference for similar situations)"
[Remember preference for future]
边缘情况 6:简历长度限制
SCENARIO: Too much good content, exceeds 2 pages
HANDLING:
"⚠️ Content exceeds 2 pages (current: {N} bullets, ~{pages} pages)
PRUNING SUGGESTIONS (ranked by relevance):
Remove:
- {Bullet X}: {score}% match (lowest)
- {Bullet Y}: {score}% match
...
Keep all bullets and accept >2 pages?
OR
Remove {N} bullets to fit 2 pages?
Your preference?"
[User decides priority]
错误恢复:
- 所有检查点都允许返回上一阶段
- 用户可以在任何检查点请求调整
- 生成失败(DOCX/PDF)时,回退为仅提供 Markdown
- 各阶段之间会保存进度(中断后可以继续)
优雅降级:
- 研究受限 → 回退为仅分析职位描述
- 库内容较少 → 使用现有内容,并着重进行信息发现
- 匹配较弱 → 透明地指出差距
- 生成失败 → 提供 Markdown 和错误详情
使用示例
示例 1:内部职位(同一家公司)
USER: "I want to apply for Principal PM role in 1ES team at Microsoft.
Here's the JD: {paste}"
SKILL:
1. Library Build: Finds 29 resumes
2. Research: Microsoft 1ES team, internal culture, role benchmarking
3. Template: Features PM2 Azure Eng Systems role (most relevant)
4. Discovery: Surfaces VS Code extension, Bhavana AI side project
5. Assembly: 92% JD coverage, 75% direct matches
6. Generate: MD + DOCX + Report
7. User approves → Library updated with new resume + 6 discovered experiences
RESULT: Highly competitive application leveraging internal experience
示例 2:职业转型(不同领域)
USER: "I'm a TPM trying to transition to ecology PM role. JD: {paste}"
SKILL:
1. Library Build: Finds existing TPM resumes
2. Research: Ecology sector, sustainability focus, cross-domain transfers
3. Template: Reframes "Technical Program Manager" → "Program Manager,
Environmental Systems" emphasizing systems thinking
4. Discovery: Surfaces volunteer conservation work, graduate research in
environmental modeling
5. Assembly: 65% JD coverage - flags gaps in domain-specific knowledge
6. Generate: Resume + gap analysis with cover letter recommendations
RESULT: Bridges technical skills with environmental domain
示例 3:处理职业空档期
USER: "I have a 2-year gap while starting a company. JD: {paste}"
SKILL:
1. Library Build: Finds pre-gap resumes
2. Research: Standard analysis
3. Template: Includes startup as legitimate role
4. Discovery: Surfaces skills developed during startup (fundraising,
product development, team building)
5. Assembly: Frames gap as entrepreneurial experience
6. Generate: Resume presenting gap as valuable experience
RESULT: Gap becomes strength showing initiative and diverse skills
示例 4:多职位批处理(3 个相似职位)
USER: "I want to apply for these 3 TPM roles:
1. Microsoft 1ES Principal PM
2. Google Cloud Senior TPM
3. AWS Container Services Senior PM
Here are the JDs: {paste 3 JDs}"
SKILL:
1. Multi-job detection: Triggered (3 JDs detected)
2. Intake: Collects all 3 JDs, initializes batch
3. Library Build: Finds 29 resumes (once)
4. Gap Analysis: Identifies 14 gaps, 8 unique after deduplication
5. Shared Discovery: 30-minute session surfaces 5 new experiences
- Kubernetes CI/CD for nonprofits
- Azure migration for university lab
- Cross-functional team leadership examples
- Recent hackathon project
- Open source contributions
6. Per-Job Processing (×3):
- Job 1 (Microsoft): 85% coverage, emphasizes Azure/1ES alignment
- Job 2 (Google): 88% coverage, emphasizes technical depth
- Job 3 (AWS): 78% coverage, addresses AWS gap in cover letter recs
7. Batch Finalization: All 3 resumes reviewed, approved, added to library
RESULT: 3 high-quality resumes in 40 minutes vs 45 minutes sequential
5 new experiences captured, available for future applications
Average coverage: 84%, all critical gaps resolved
示例 5:增量添加批次
WEEK 1:
USER: "I want to apply for 3 jobs: {Microsoft, Google, AWS}"
SKILL: [Processes batch as above, completes in 40 min]
WEEK 2:
USER: "I found 2 more jobs: Stripe and Meta. Add them to my batch?"
SKILL:
1. Load existing batch (includes 5 previously discovered experiences)
2. Intake: Adds Job 4 (Stripe), Job 5 (Meta)
3. Incremental Gap Analysis: Only 3 new gaps (vs 14 original)
- Payment systems (Stripe-specific)
- Social networking (Meta-specific)
- React/frontend (both)
4. Incremental Discovery: 10-minute session for new gaps only
- Surfaces payment processing side project
- React work from bootcamp
- Large-scale system design course
5. Per-Job Processing (×2): Jobs 4, 5 processed independently
6. Updated Batch Summary: Now 5 jobs total, 8 experiences discovered
RESULT: 2 additional resumes in 20 minutes (vs 30 min if starting from scratch)
Time saved by not re-asking 8 previous gaps: ~20 minutes
测试指南
手动测试清单:
测试 1:理想路径
- Provide JD with clear requirements
- Library with 10+ resumes
- Run all phases without skipping
- Verify generated files
- Check library update
PASS CRITERIA:
- All files generated correctly
- JD coverage >70%
- No errors in any phase
测试 2:最小化简历库
- Provide only 2 resumes
- Run through workflow
- Verify gap handling
PASS CRITERIA:
- Graceful warning about limited library
- Still produces reasonable output
- Gaps clearly identified
测试 3:研究失败
- Use obscure company with minimal online presence
- Verify fallback to JD-only
PASS CRITERIA:
- Warning about limited research
- Proceeds with JD analysis
- Template still reasonable
测试 4:经历挖掘价值
- Run with deliberate gaps in library
- Conduct experience discovery
- Verify new experiences integrated
PASS CRITERIA:
- Discovers genuine undocumented experiences
- Integrates into final resume
- Improves JD coverage
测试 5:职位名称重新表述
- Test various role transitions
- Verify title reframing suggestions
PASS CRITERIA:
- Multiple options provided
- Truthfulness maintained
- Rationales clear
测试 6:多格式生成
- Generate MD, DOCX, PDF, Report
- Verify formatting consistency
PASS CRITERIA:
- All formats readable
- Formatting professional
- Content identical across formats
回归测试:
After any SKILL.md changes:
1. Re-run Test 1 (happy path)
2. Verify no functionality broken
3. Commit only if passes