mcpField
R
resume-tailoring

resume-tailoring

github.com/varunr89生産性827233 回インストール35 週間前に更新
リポジトリ

resume-tailoring について

resume-tailoring は、既存の履歴書を求人内容に合わせて調整するスキルです。対話を通じて未記載の経験を掘り起こし、事実に基づく内容を保ちます。

主な機能

  1. 01求人内容の解析と職種・企業の調査
  2. 02Markdown 履歴書から経験ライブラリを作成
  3. 03内容の適合度を信頼度付きで評価
  4. 04分岐質問による経験の掘り起こし
  5. 05Markdown、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. 異なる側面を強調する:

    • 「Graduate Researcher」→「Research Software Engineer」(コーディング中心の場合)
    • 「Data Science Lead」→「Technical Program Manager」(リーダーシップが中心の場合)
  2. 業界標準の用語を使う:

    • 「Scientist III」→「Senior Research Scientist」(シニアレベルが明確になる)
    • 「Program Coordinator」→「Project Manager」(標準的な用語)
  3. 事実に沿って専門分野を加える:

    • 「Engineer」→「ML Engineer」(ML 業務が相当量ある場合)
    • 「Researcher」→「Computational Ecologist」(計算手法を用いている場合)
  4. シニアレベルを示す表現を調整する:

    • 担当範囲に基づいて「Lead」「Senior」「Staff」を選ぶ

制約:

  • 実際に行っていない業務を絶対に記載しない
  • 根拠を示せる範囲を超えて、シニアレベルを絶対に誇張しない
  • 会社名と在籍期間は必ず正確に記載する
  • 主な担当業務は正確でなければならない

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

コメント