Claude Code Plugins

Community-maintained marketplace

Feedback

Use when creating tailored resumes for job applications - researches company/role, creates optimized templates, conducts branching experience discovery to surface undocumented skills, and generates professional multi-format resumes from user's resume library while maintaining factual integrity

Install Skill

1Download skill
2Enable skills in Claude

Open claude.ai/settings/capabilities and find the "Skills" section

3Upload to Claude

Click "Upload skill" and select the downloaded ZIP file

Note: Please verify skill by going through its instructions before using it.

SKILL.md

name resume-tailoring
description Use when creating tailored resumes for job applications - researches company/role, creates optimized templates, conducts branching experience discovery to surface undocumented skills, and generates professional multi-format resumes from user's resume library while maintaining factual integrity

Resume Tailoring Skill

Overview

Generates high-quality, tailored resumes optimized for specific job descriptions while maintaining factual integrity. Builds resumes around the holistic person by surfacing undocumented experiences through conversational discovery.

Core Principle: Truth-preserving optimization - maximize fit while maintaining factual integrity. Never fabricate experience, but intelligently reframe and emphasize relevant aspects.

Mission: A person's ability to get a job should be based on their experiences and capabilities, not on their resume writing skills.

When to Use

Use this skill when:

  • User provides a job description and wants a tailored resume
  • User has multiple existing resumes in markdown format
  • User wants to optimize their application for a specific role/company
  • User needs help surfacing and articulating undocumented experiences

DO NOT use for:

  • Generic resume writing from scratch (user needs existing resume library)
  • Cover letters (different skill)
  • LinkedIn profile optimization (different skill)

Quick Start

Required from user:

  1. Job description (text or URL)
  2. Resume library location (defaults to resumes/ in current directory)

Workflow:

  1. Build library from existing resumes
  2. Research company/role
  3. Create template (with user checkpoint)
  4. Optional: Branching experience discovery
  5. Match content with confidence scoring
  6. Generate MD + DOCX + PDF + Report
  7. User review → Optional library update

Implementation

See supporting files:

  • research-prompts.md - Structured prompts for company/role research
  • matching-strategies.md - Content matching algorithms and scoring
  • branching-questions.md - Experience discovery conversation patterns

Workflow Details

Phase 0: Library Initialization

Always runs first - builds fresh resume database

Process:

  1. Locate resume directory:

    User provides path OR default to ./resumes/
    Validate directory exists
    
  2. Scan for markdown files:

    Use Glob tool: pattern="*.md" path={resume_directory}
    Count files found
    Announce: "Building resume library... found {N} resumes"
    
  3. Parse each resume: For each resume file:

    • Use Read tool to load content
    • Extract sections: roles, bullets, skills, education
    • Identify patterns: bullet structure, length, formatting
  4. Build experience database structure:

    {
      "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. Tag content automatically:

    • Themes: Scan for keywords (leadership, technical, analytics, etc.)
    • Metrics: Extract numbers, percentages, dollar amounts
    • Keywords: Frequent technical terms, action verbs

Output: In-memory database ready for matching

Code 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

Phase 1: Research Phase

Goal: Build comprehensive "success profile" beyond just the job description

Inputs:

  • Job description (text or URL from user)
  • Optional: Company name if not in JD

Process:

1.1 Job Description Parsing:

Use research-prompts.md JD parsing template
Extract: requirements, keywords, implicit preferences, red flags, role archetype

1.2 Company Research:

WebSearch queries:
- "{company} mission values culture"
- "{company} engineering blog"
- "{company} recent news"

Synthesize: mission, values, business model, stage

1.3 Role Benchmarking:

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 Success Profile Synthesis:

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

Checkpoint:

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.

Output: Validated success profile document

Phase 2: Template Generation

Goal: Create resume structure optimized for this specific role

Inputs:

  • Success profile (from Phase 1)
  • User's resume library (from Phase 0)

Process:

2.1 Analyze User's Resume Library:

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 Role Consolidation Decision:

When to consolidate:

  • Same company, similar responsibilities
  • Target role values continuity over granular progression
  • Combined narrative stronger than separate
  • Page space constrained

When to keep separate:

  • Different companies (ALWAYS separate)
  • Dramatically different responsibilities that both matter
  • Target role values specific progression story
  • One position has significantly more relevant experience

Decision template:

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 Title Reframing Principles:

Core rule: Stay truthful to what you did, emphasize aspect most relevant to target

Strategies:

  1. Emphasize different aspects:

    • "Graduate Researcher" → "Research Software Engineer" (if coding-heavy)
    • "Data Science Lead" → "Technical Program Manager" (if leadership)
  2. Use industry-standard terminology:

    • "Scientist III" → "Senior Research Scientist" (clearer seniority)
    • "Program Coordinator" → "Project Manager" (standard term)
  3. Add specialization when truthful:

    • "Engineer" → "ML Engineer" (if ML work substantial)
    • "Researcher" → "Computational Ecologist" (if computational methods)
  4. Adjust seniority indicators:

    • "Lead" vs "Senior" vs "Staff" based on scope

Constraints:

  • NEVER claim work you didn't do
  • NEVER inflate seniority beyond defensible
  • Company name and dates MUST be exact
  • Core responsibilities MUST be accurate

2.4 Generate Template Structure:

## 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}]

Checkpoint:

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.

Output: Approved template skeleton with guidance for each section

Phase 2.5: Experience Discovery (OPTIONAL)

Goal: Surface undocumented experiences through conversational discovery

When to trigger:

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 Interview Process:

Approach: Conversational with follow-up questions based on answers

For each gap, conduct branching dialogue (see branching-questions.md):

  1. Start with open probe:

    • Technical gap: "Have you worked with {skill}?"
    • Soft skill gap: "Tell me about times you've {demonstrated_skill}"
    • Recent work: "What have you worked on recently?"
  2. Branch based on answer:

    • YES/Strong → Deep dive (scale, challenges, metrics)
    • INDIRECT → Explore role and transferability
    • ADJACENT → Explore related experience
    • PERSONAL → Assess recency and substance
    • NO → Try broader category or move on
  3. Follow-up systematically:

    • Ask "what," "how," "why" to get details
    • Quantify: "Any metrics?"
    • Contextualize: "Was this production?"
    • Validate: "Does this address the gap?"
  4. Capture immediately:

    • Document experience as shared
    • Ask clarifying questions (dates, scope, impact)
    • Help articulate as resume bullet
    • Tag which gap(s) it addresses

Capture Structure:

## 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: ...

Integration Options:

After discovery session:

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

Important Notes:

  • Keep truthfulness bar high - help articulate, NEVER fabricate
  • Focus on gaps and weak matches, not strong areas
  • Time-box if needed (10-15 minutes typical)
  • User can skip entirely if confident in library
  • Recognize when to move on - don't exhaust user

Output: New experiences integrated into library, ready for matching

Phase 3: Assembly Phase

Goal: Fill approved template with best-matching content, with transparent scoring

Inputs:

  • Approved template (from Phase 2)
  • Resume library + discovered experiences (from Phase 0 + 2.5)
  • Success profile (from Phase 1)

Process:

3.1 For Each Template Slot:

  1. Extract all candidate bullets from library

    • All bullets from library database
    • All newly discovered experiences
    • Include source resume for each
  2. Score each candidate (see matching-strategies.md)

    • Direct match (40%): Keywords, domain, technology, outcome
    • Transferable (30%): Same capability, different context
    • Adjacent (20%): Related tools, methods, problem space
    • Impact (10%): Achievement type alignment

    Overall = (Direct × 0.4) + (Transfer × 0.3) + (Adjacent × 0.2) + (Impact × 0.1)

  3. Rank candidates by score

    • Sort high to low
    • Group by confidence band:
      • 90-100%: DIRECT
      • 75-89%: TRANSFERABLE
      • 60-74%: ADJACENT
      • <60%: WEAK/GAP
  4. Present top 3 matches with analysis:

    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. Handle gaps (confidence <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 Content Reframing:

When good match (>60%) but terminology misaligned:

Apply strategies from matching-strategies.md:

  • Keyword alignment (preserve meaning, adjust terms)
  • Emphasis shift (same facts, different focus)
  • Abstraction level (adjust technical specificity)
  • Scale emphasis (highlight relevant aspects)

Show before/after for transparency:

REFRAMING APPLIED:
Bullet: {template_slot}

Original: "{original_bullet}"
Source: {resume_name}

Reframed: "{reframed_bullet}"
Changes: {what changed and why}
Truthfulness: {why this is accurate}

Checkpoint:

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

Output: Complete bullet-by-bullet mapping with confidence scores and reframings

Phase 4: Generation Phase

Goal: Create professional multi-format outputs

Inputs:

  • Approved content mapping (from Phase 3)
  • User's formatting preferences (from library analysis)
  • Target role information (from Phase 1)

Process:

4.1 Markdown Generation:

Compile mapped content into clean 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})

Use user's preferences:

  • Formatting style from library analysis
  • Bullet structure pattern
  • Section ordering
  • Typical length (1-page vs 2-page)

Output: {Name}_{Company}_{Role}_Resume.md

4.2 DOCX Generation:

Use 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

Output: {Name}_{Company}_{Role}_Resume.docx

4.3 PDF Generation (Optional):

If user requests PDF:

OPTIONAL SUB-SKILL: Use document-skills:pdf

Convert DOCX to PDF OR generate directly
Ensure formatting preservation
Professional appearance for direct submission

Output: {Name}_{Company}_{Role}_Resume.pdf

4.4 Generation Summary Report:

Create metadata file:

# 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

Output: {Name}_{Company}_{Role}_Resume_Report.md

Present to user:

"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"

Phase 5: Library Update (CONDITIONAL)

Goal: Optionally add successful resume to library for future use

When: After user reviews and approves generated resume

Checkpoint Question:

"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?"

If Option 1 (YES - Save to library):

Process:

  1. Move resume to library:

    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. Rebuild library database:

    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. Preserve generation metadata:

    {
      "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. Announce completion:

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

If Option 2 (NO - Need revisions):

"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]

If Option 3 (SAVE BUT DON'T ADD TO LIBRARY):

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

Benefits of Library Update:

  • Grows library with each successful resume
  • New bullet variations become available
  • Reframings that work can be reused
  • Discovered experiences permanently captured
  • Future sessions start with richer library
  • Self-improving system over time

Output: Updated library database + metadata preservation (if Option 1)

Error Handling & Edge Cases

Edge Case 1: Insufficient Resume Library

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

Edge Case 2: No Good Matches (confidence <60% for critical requirement)

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]

Edge Case 3: Research Phase Failures

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]

Edge Case 4: Job Description Quality Issues

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]

Edge Case 5: Ambiguous Role Consolidation

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]

Edge Case 6: Resume Length Constraints

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]

Error Recovery:

  • All checkpoints allow going back to previous phase
  • User can request adjustments at any checkpoint
  • Generation failures (DOCX/PDF) fall back to markdown-only
  • Progress saved between phases (can resume if interrupted)

Graceful Degradation:

  • Research limited → Fall back to JD-only analysis
  • Library small → Work with available + emphasize discovery
  • Matches weak → Transparent gap identification
  • Generation fails → Provide markdown + error details

Usage Examples

Example 1: Internal Role (Same Company)

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

Example 2: Career Transition (Different Domain)

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

Example 3: Career Gap Handling

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

Testing Guidelines

Manual Testing Checklist:

Test 1: Happy Path

- 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

Test 2: Minimal Library

- Provide only 2 resumes
- Run through workflow
- Verify gap handling
PASS CRITERIA:
- Graceful warning about limited library
- Still produces reasonable output
- Gaps clearly identified

Test 3: Research Failures

- 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

Test 4: Experience Discovery Value

- 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

Test 5: Title Reframing

- Test various role transitions
- Verify title reframing suggestions
PASS CRITERIA:
- Multiple options provided
- Truthfulness maintained
- Rationales clear

Test 6: Multi-format Generation

- Generate MD, DOCX, PDF, Report
- Verify formatting consistency
PASS CRITERIA:
- All formats readable
- Formatting professional
- Content identical across formats

Regression Testing:

After any SKILL.md changes:
1. Re-run Test 1 (happy path)
2. Verify no functionality broken
3. Commit only if passes