mcpField
R
resume-tailoring

resume-tailoring

github.com/varunr89生产力827233 次安装35 周前更新
代码仓库

关于 resume-tailoring

resume-tailoring 是面向求职者的简历定制 Skill,根据目标职位描述匹配并调整现有简历内容。它通过对话发掘未记录的经历,并以事实准确为边界。

主要功能

  1. 01解析职位描述并研究公司与职位
  2. 02扫描 Markdown 简历并建立经历库
  3. 03对内容匹配进行置信度评分
  4. 04通过分支式提问发掘经历
  5. 05生成 Markdown、DOCX、PDF 和报告
  6. 06支持多个职位的批量流程

适用场景

  1. 01针对特定职位调整已有简历
  2. 02从多份 Markdown 简历中筛选经历
  3. 03通过访谈补充简历中未记录的经验
  4. 04为多个职位批量准备定制简历

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/varunr89/resume-tailoring-skill --skill resume-tailoring

安装后在 Claude Code 中输入/resume-tailoring确认已加载。

详细介绍

简历定制技能

概述

生成高质量、针对特定职位描述优化的定制简历,同时确保事实准确。通过对话式探索,发掘未记录的经历,以全面展现个人。

核心原则: 在保留事实的前提下优化——最大限度地提高匹配度,同时确保事实准确。绝不捏造经历,而是巧妙地重新表述并突出相关方面。

使命: 求职者能否获得工作,应取决于他们的经历和能力,而不是简历写作技巧。

适用场景

以下情况使用此技能:

  • 用户提供职位描述并希望定制简历
  • 用户有多份 Markdown 格式的现有简历
  • 用户希望针对特定职位或公司优化申请材料
  • 用户需要帮助发掘并阐述未记录的经历

不要用于:

  • 从零开始撰写通用简历(用户需要先有现成的简历库)
  • 求职信(使用其他技能)
  • 优化 LinkedIn 个人资料(使用其他技能)

快速开始

用户需提供:

  1. 职位描述(文本或 URL)
  2. 简历库位置(默认为当前目录下的 resumes/)

工作流:

  1. 根据现有简历建立简历库
  2. 调研公司和职位
  3. 创建模板(需用户确认)
  4. 可选:通过分支提问探索经历
  5. 对内容进行匹配并评估可信度
  6. 生成 MD、DOCX、PDF 和报告
  7. 用户审核 → 可选更新简历库

实现

参见支持文件:

  • 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:初始化简历库

始终首先运行——建立最新的简历数据库

流程:

  1. 定位简历目录:

    User provides path OR default to ./resumes/
    Validate directory exists
    
  2. 扫描 Markdown 文件:

    Use Glob tool: pattern="*.md" path={resume_directory}
    Count files found
    Announce: "Building resume library... found {N} resumes"
    
  3. 解析每份简历: 对于每个简历文件:

    • 使用 Read 工具加载内容
    • 提取各部分:职位、要点、技能、教育经历
    • 识别模式:要点结构、长度、格式
  4. 建立经历数据库结构:

    {
      "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"
      }
    }
    
  5. 自动标记内容:

    • 主题:扫描关键词(领导力、技术、分析等)
    • 指标:提取数字、百分比和金额
    • 关键词:高频技术术语、行动动词

输出: 可供匹配的内存数据库

代码模式:

# 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 职称重新表述原则:

核心规则: 如实反映实际工作,突出与目标职位最相关的方面

策略:

  1. 突出不同方面:

    • “研究生研究员” → “研究软件工程师”(如果工作以编码为主)
    • “数据科学负责人” → “技术项目经理”(如果主要负责领导工作)
  2. 使用行业标准术语:

    • “Scientist III” → “高级研究科学家”(更清楚地体现资历)
    • “项目协调员” → “项目经理”(标准术语)
  3. 如实注明专业方向:

    • “工程师” → “ML 工程师”(如果 ML 工作占比较大)
    • “研究员” → “计算生态学家”(如果使用了计算方法)
  4. 调整资历级别标识:

    • 根据职责范围选择“负责人”“高级”或“资深”

限制:

  • 绝不声称做过未实际从事的工作
  • 绝不夸大到无法合理证明的资历级别
  • 公司名称和日期必须准确无误
  • 核心职责必须准确

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):

  1. 从开放式问题开始:

    • 技术差距:“你使用过 {skill} 吗?”
    • 软技能差距:“请讲讲你展示过 {demonstrated_skill} 的经历。”
    • 近期工作:“你最近做了哪些工作?”
  2. 根据回答选择分支:

    • 是/经验扎实 → 深入了解(规模、挑战、指标)
    • 间接相关 → 了解职责及经验的可迁移性
    • 有相邻经验 → 了解相关经历
    • 个人项目 → 评估其近期程度和实质内容
    • 没有 → 尝试更宽泛的类别,或继续下一项
  3. 系统性地追问:

    • 通过询问“做了什么”“如何做”“为什么”来获取细节
    • 量化:“有具体指标吗?”
    • 补充背景:“这是生产环境中的工作吗?”
    • 验证:“这能弥补这个差距吗?”
  4. 立即记录:

    • 记录用户分享的经验
    • 提出澄清问题(日期、范围、影响)
    • 帮助将其表述为简历要点
    • 标注其对应的差距

记录结构:

## 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 对每个模板槽位:

  1. 从库中提取所有候选要点

    • 库数据库中的所有要点
    • 所有新发现的经历
    • 为每项内容注明来源简历
  2. 为每项候选内容评分(参见 matching-strategies.md)

    • 直接匹配(40%):关键词、领域、技术、成果
    • 可迁移(30%):能力相同,情境不同
    • 相邻匹配(20%):相关工具、方法、问题领域
    • 影响力(10%):成就类型的匹配程度

    总分 =(直接匹配 × 0.4)+(可迁移 × 0.3)+(相邻匹配 × 0.2)+(影响力 × 0.1)

  3. 按分数排列候选内容

    • 按分数从高到低排序
    • 按置信度分组:
      • 90-100%:直接匹配
      • 75-89%:可迁移
      • 60-74%:相邻匹配
      • <60%:较弱/缺口
  4. 展示排名前 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
    
  5. 处理缺口(置信度 <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(是——保存到库中):

流程:

  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
    
  2. 重建库数据库:

    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}
    
  3. 保留生成元数据:

    {
      "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}"
        }
      ]
    }
    
  4. 宣布完成:

    "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

评论

支持 Markdown