feat: add cover letter generation command

Add /write-cover-letter slash command that generates tailored cover
letters based on application strategy (application.md) and applicant
profile (profile.md). Features:

- Auto-validates application before generation (stops if incomplete)
- Protects existing cover-letter.md (requires --force to overwrite)
- Generates 300-400 word cover letter with standard structure
- Applies tone from application.md (Formal/Balanced/Casual)
- Infers language from context (German/English)
- Uses match strategy to emphasize relevant experiences
- Incorporates company research and key messages
- Supports flags: --skip-validation, --force, --help

This is the first document generation command in the workflow.

OpenSpec: add-cover-letter-generation

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-02 21:42:47 +01:00
co-authored by Claude
parent 2b13cc4e69
commit f529dea015
5 changed files with 1656 additions and 15 deletions
+705
View File
@@ -0,0 +1,705 @@
Generate a tailored cover letter based on application strategy and profile information.
# Instructions
You are generating a professional cover letter for a job application. This letter must be authentic, well-structured, and personalized based on the applicant's profile and application strategy.
## Step 1: Parse Command Arguments
Check for optional flags and parameters:
**Flags:**
- `--skip-validation`: Skip automatic validation check
- `--force` or `--overwrite`: Overwrite existing cover-letter.md if it exists
- `--help`: Show usage information and exit
**Parameter:**
- Application folder name (optional): e.g., `2025-11-02-TechCorp-Developer`
If `--help` flag is present, show usage and exit:
```
Usage: /write-cover-letter [application-name] [flags]
Generates a tailored cover letter for a job application.
Options:
[application-name] Optional. Name of application folder.
If omitted, uses current directory.
--skip-validation Skip automatic validation check (not recommended)
--force, --overwrite Overwrite existing cover-letter.md
--help Show this help message
Examples:
/write-cover-letter
/write-cover-letter 2025-11-02-TechCorp-Developer
/write-cover-letter --force
/write-cover-letter --skip-validation --force
The command will:
1. Validate the application (unless --skip-validation)
2. Check if cover letter already exists (unless --force)
3. Read profile.md and application.md
4. Generate a tailored 300-400 word cover letter
5. Save to cover-letter.md in the application folder
```
## Step 2: Location Detection
### Determine Target Application
**If NO parameter provided:**
1. Check current working directory
2. Verify if inside an application folder:
- Path pattern: ends with `applications/pending/[folder-name]/`
- File existence: `application.md` exists in current directory
3. If yes → use this application
4. If no → show error with available applications
**If parameter PROVIDED:**
1. Resolve to application folder: `applications/pending/[folder-name]/`
2. Check if `application.md` exists in that location
3. If yes → use that application
4. If no → show error with available applications
### Error: Location Unclear
```
❌ Not in an application folder
Please either:
1. Navigate to an application folder:
cd applications/pending/[application-folder]/
/write-cover-letter
2. Or provide the application folder name:
/write-cover-letter [application-folder-name]
Available applications:
[List output of: ls applications/pending/]
Example:
/write-cover-letter 2025-11-02-TechCorp-Developer
```
### Error: Application Not Found
```
❌ Application not found: [provided-name]
Available applications:
[List output of: ls applications/pending/]
```
## Step 3: Automatic Validation Check
**Unless `--skip-validation` flag is present**, run validation before generating.
### Run Validation
1. Show progress: `🔍 Validating application...`
2. Execute `/validate-application` for the target application
3. Capture result (pass/fail)
### Handle Validation Result
**If validation PASSES:**
```
✅ Application validation passed
```
Proceed to Step 4.
**If validation FAILS:**
```
❌ Application validation failed
Your application has incomplete sections. Please fix these issues first:
[Show validation error details]
Options:
1. Fix the issues in application.md and try again
2. Run /validate-application for full details
3. Use --skip-validation to proceed anyway (not recommended)
Example:
/write-cover-letter --skip-validation
```
STOP. Do not generate cover letter.
### Skip Validation Warning
**If `--skip-validation` flag is present:**
```
⚠️ Skipping validation check (not recommended)
Proceeding with cover letter generation. The application may have incomplete sections.
```
Proceed to Step 4.
## Step 4: Check for Existing Cover Letter
Check if `cover-letter.md` exists in the application folder.
### If File Exists (and --force NOT present)
```
❌ Cover letter already exists
File: [path-to-cover-letter.md]
To regenerate, use:
/write-cover-letter --force
⚠️ Warning: This will overwrite your existing cover letter.
If you've made manual edits, they will be lost.
```
STOP. Do not overwrite.
### If File Exists (and --force IS present)
```
⚠️ Overwriting existing cover letter
File: [path-to-cover-letter.md]
Your previous cover letter will be replaced.
```
Proceed to Step 5.
### If File Does Not Exist
Proceed to Step 5 (no message needed).
## Step 5: Read Data Sources
Show progress: `📝 Generating cover letter...`
### Read profile.md
1. Check if `profile.md` exists in framework root
2. Read entire file
3. Parse and extract:
- **Personal Information**: Full name, email, phone, location, address
- **Professional Summary**: For potential reference
- **Work Experience**: All entries (job titles, companies, dates, responsibilities, achievements)
- **Skills**: Technical and soft skills
- **Projects**: Notable projects
- **Education**: Degrees and certifications
**If profile.md is missing or unreadable:**
```
❌ Profile not found
Could not read profile.md. Please create and validate your profile first.
Steps:
1. Fill out profile.md with your information
2. Run /validate-profile to check completeness
3. Try /write-cover-letter again
```
STOP.
Show progress: `✓ Read profile.md (applicant background)`
### Read application.md
1. Check if `application.md` exists in application folder
2. Read entire file
3. Parse and extract:
- **Metadata**: Application status, deadlines
- **Organization Information**: Company name, industry, location, website, contact person name
- **Job Information**: Job title, level, department, employment type, remote status
- **Job Description Summary**: Responsibilities, required skills, preferred skills, keywords
- **Research Notes**: Company culture, values, recent news, competitive landscape
- **Match Strategy**: Experiences to emphasize, skills to highlight, projects to mention, gaps and how to address
- **Key Messages**: Main points to convey (usually 3-5 bullet points)
- **Tone of Voice**: Tone assessment (Formal/Balanced/Casual) and reasoning
**If application.md is missing or unreadable:**
```
❌ Application not found
Could not read application.md in [path].
This doesn't appear to be a valid application folder.
Did you create this application with /new-application?
```
STOP.
Show progress: `✓ Read application.md (job strategy)`
### Cross-Reference Match Strategy
1. Identify which specific experiences from profile.md are mentioned in Match Strategy section
2. Extract those full experience entries from profile.md
3. Identify which skills to emphasize
4. Identify which projects to mention
5. Note any gaps mentioned and how to address them
Show progress: `✓ Analyzed match strategy ([N] key experiences identified)`
## Step 6: Determine Language and Tone
### Detect Language
Check these indicators in order:
1. **Job posting language** (if job description in input/ was in German)
2. **Company location** (if Germany/Austria/Switzerland → likely German)
3. **Application.md language** (if written in German → use German)
4. **Default**: English if unclear
### Extract Tone
From application.md "Tone of Voice" section:
- Look for: "Formal", "Balanced", or "Casual"
- Default to "Balanced" if not specified
Show progress: `✓ Applied tone: [Formal/Balanced/Casual]`
Show progress: `✓ Language: [German/English]`
## Step 7: Generate Cover Letter Content
Generate a professional cover letter with the following structure. Target: **300-400 words total**.
### Structure Overview
1. Contact Header (applicant + company addresses, date)
2. Salutation
3. Opening Paragraph (50-70 words)
4. Why This Role Paragraph (70-90 words)
5. What You Bring (120-150 words, split into 1-2 paragraphs)
6. Cultural Fit Paragraph (50-70 words)
7. Closing Paragraph (40-50 words)
8. Sign-off
---
### Contact Header
**Format for German:**
```
[Applicant Full Name]
[Applicant Street Address]
[Applicant ZIP] [Applicant City]
[Applicant Email] | [Applicant Phone]
[Current Date in DD.MM.YYYY format]
[Company Name]
[Contact Person Name if available, otherwise "Personalabteilung"]
[Company Street Address if available]
[Company ZIP] [Company City]
```
**Format for English:**
```
[Applicant Full Name]
[Applicant Street Address]
[Applicant City], [State/Country] [ZIP]
[Applicant Email] | [Applicant Phone]
[Current Date in Month DD, YYYY format]
[Hiring Manager Name if available]
[Company Name]
[Company Street Address if available]
[Company City], [State/Country] [ZIP]
```
Use information from profile.md and application.md. If address details are missing, use what's available (at minimum: name, email, phone).
---
### Salutation
**If contact person name is available in application.md:**
- German: `Sehr geehrte/r [Herr/Frau] [Last Name],` or `Liebe/r [First Name],` (Casual tone only)
- English: `Dear [Mr./Ms./Dr.] [Last Name],` or `Dear [First Name],` (Casual tone only)
**If no contact person:**
- German: `Sehr geehrte Damen und Herren,`
- English: `Dear Hiring Manager,`
---
### Opening Paragraph (50-70 words)
**Purpose**: Hook the reader, state the position, show genuine interest.
**Elements to include:**
1. Reference to the specific job title
2. Reference to company name
3. Brief statement of interest
4. One compelling hook from:
- Key messages (why you're excited about this role)
- Research notes (something specific about the company)
- Relevant achievement that positions you well
**Tone guidance:**
- **Formal**: Professional, respectful, traditional
- **Balanced**: Professional but warm, approachable
- **Casual**: Conversational, enthusiastic, personal
**Example (Balanced, English):**
> I am writing to express my strong interest in the Senior Software Engineer position at TechCorp. With over eight years of experience in scalable backend development and a passion for building robust distributed systems, I am excited about the opportunity to contribute to your team's mission of revolutionizing cloud infrastructure for enterprise clients.
**Example (Formal, German):**
> Mit großem Interesse habe ich Ihre Stellenausschreibung für die Position als Senior Software Engineer bei TechCorp gelesen. Mit über acht Jahren Erfahrung in der Entwicklung skalierbarer Backend-Systeme und einer ausgeprägten Begeisterung für robuste verteilte Architekturen möchte ich mich bei Ihnen bewerben und zum Erfolg Ihres Teams beitragen.
---
### Why This Role Paragraph (70-90 words)
**Purpose**: Show you've researched the company and explain why this specific role/company appeals to you.
**Elements to include:**
1. Reference to company research (values, mission, recent news, products)
2. Connection between your interests/values and the company's
3. Specific reasons you're drawn to this role (not just any job)
4. Demonstrate understanding of the company's work and challenges
**Sources:**
- Research Notes section from application.md
- Key Messages section
- Company culture insights
**Example (Balanced, English):**
> What particularly draws me to TechCorp is your commitment to open-source contributions and your recent launch of the CloudScale platform. I've followed your engineering blog for over a year and am impressed by your team's innovative approaches to solving complex distributed systems challenges. The opportunity to work on infrastructure that directly impacts thousands of enterprise customers aligns perfectly with my career goals and passion for meaningful, large-scale technical work.
---
### What You Bring Paragraphs (120-150 words total, 1-2 paragraphs)
**Purpose**: Demonstrate you're qualified by highlighting relevant experiences, skills, and achievements.
**Elements to include:**
1. 2-3 specific experiences from Match Strategy
2. Concrete achievements with quantifiable results (from profile.md)
3. Relevant skills that match job requirements
4. Natural incorporation of keywords from job description
5. Connection between your experience and their needs
6. Mention of 1-2 relevant projects if applicable
**Structure:**
- If 2 experiences: One paragraph covering both
- If 3 experiences: Split into 2 paragraphs (2 experiences in first, 1 in second)
**Sources:**
- Match Strategy section (which experiences to emphasize)
- Profile.md work experience and projects
- Job Description Summary (requirements to address)
**Important:**
- Use ONLY real experiences and achievements from profile.md
- Include specific metrics when available (e.g., "reduced latency by 40%", "managed team of 5")
- Don't list skills demonstrate them through experiences
- Make clear connections to job requirements
**Example (Balanced, English, 2 experiences):**
> In my current role as Lead Backend Engineer at DataFlow Systems, I architected and led the development of a microservices platform handling over 10 million requests per day, reducing system latency by 45% while improving reliability to 99.95% uptime. I've extensive experience with the technologies mentioned in your job posting, including Kubernetes, Go, and PostgreSQL, having used them to build production systems serving enterprise clients across multiple regions.
> Previously at CloudNet Solutions, I designed and implemented a distributed caching layer that decreased API response times by 60% and reduced infrastructure costs by $50,000 annually. I also mentored a team of three junior engineers, fostering a culture of code quality and continuous learning. These experiences have prepared me well for the technical challenges and leadership opportunities inherent in this role at TechCorp.
---
### Cultural Fit Paragraph (50-70 words)
**Purpose**: Show you'd be a good culture match and would thrive in their environment.
**Elements to include:**
1. Reference to company culture insights from Research Notes
2. Alignment of personal values with company values
3. Relevant soft skills that match company culture indicators
4. Enthusiasm for the work environment, team, or company approach
5. Mention of collaboration style if company emphasizes teamwork
**Sources:**
- Research Notes (company culture observations)
- Company values mentioned in job description
- Your soft skills from profile.md
**Example (Balanced, English):**
> I'm particularly excited about TechCorp's emphasis on collaborative problem-solving and continuous learning. Your company's commitment to innovation, combined with a supportive team environment where engineers are encouraged to experiment and share knowledge, resonates strongly with my own values. I thrive in environments that balance technical excellence with strong team dynamics, and I look forward to contributing not just code, but also ideas and mentorship to your engineering culture.
---
### Closing Paragraph (40-50 words)
**Purpose**: Strong finish with call to action and expression of enthusiasm.
**Elements to include:**
1. Reiterate strong interest in the position
2. State availability for interview/discussion
3. Thank the hiring manager
4. Professional call to action
**Tone guidance:**
- **Formal**: Respectful, measured enthusiasm
- **Balanced**: Warm confidence
- **Casual**: Eager but professional
**Example (Balanced, English):**
> I would welcome the opportunity to discuss how my experience in scalable backend systems and distributed architectures can contribute to TechCorp's continued success. I am available for an interview at your convenience and look forward to learning more about this exciting opportunity. Thank you for considering my application.
**Example (Formal, German):**
> Über die Möglichkeit eines persönlichen Gesprächs würde ich mich sehr freuen. Gerne stehe ich Ihnen für ein Interview zur Verfügung und freue mich darauf, mehr über diese spannende Position zu erfahren. Für Ihre Aufmerksamkeit und Ihr Interesse an meiner Bewerbung danke ich Ihnen herzlich.
---
### Sign-off
**German:**
- Formal: `Mit freundlichen Grüßen,`
- Balanced: `Mit freundlichen Grüßen,`
- Casual: `Herzliche Grüße,` or `Viele Grüße,`
**English:**
- Formal: `Sincerely,` or `Respectfully,`
- Balanced: `Sincerely,` or `Best regards,`
- Casual: `Best regards,` or `Warm regards,`
Follow with applicant's full name from profile.md.
---
## Step 8: Quality Checks
Before writing the file, verify:
### Word Count Check
- Count total words in body (excluding header and sign-off)
- Target: 300-400 words
- If < 280 words: Too short, add more detail to experiences or cultural fit
- If > 420 words: Too long, tighten prose and remove redundancy
Show progress: `✓ Generated [N] words (target: 300-400)`
### Factual Accuracy Check
- Every experience mentioned must exist in profile.md
- Every achievement must be from profile.md (no hallucinations)
- Company information must match application.md
- Job title and company name must be correct
### Tone Consistency Check
- Language level matches tone (Formal = elevated, Balanced = professional, Casual = conversational)
- Sentence structure matches tone (Formal = complex, Balanced = varied, Casual = simpler)
- Vocabulary matches tone
### Personalization Check
- At least 2 company-specific references (research, values, products, news)
- Keywords from job description incorporated naturally
- Connection to match strategy is clear
### Authenticity Check
- Sounds human, not AI-generated
- Natural flow between paragraphs
- Specific rather than generic
- Shows genuine enthusiasm
## Step 9: Format and Write File
### Format as Markdown
```markdown
<!--
Cover Letter
Generated: [YYYY-MM-DD HH:MM]
Sources: profile.md, application.md
Word count: [N] words
Tone: [Formal/Balanced/Casual]
Language: [German/English]
-->
[Applicant Full Name]
[Applicant Address Block]
[Applicant Email] | [Applicant Phone]
[Date]
[Company Name]
[Contact Person / Hiring Manager]
[Company Address if available]
[Salutation]
[Opening Paragraph]
[Why This Role Paragraph]
[What You Bring Paragraph 1]
[What You Bring Paragraph 2 if applicable]
[Cultural Fit Paragraph]
[Closing Paragraph]
[Sign-off]
[Applicant Full Name]
```
### Write to File
1. Write content to `cover-letter.md` in the application folder
2. Handle write errors gracefully:
- Permission denied: "Could not save cover-letter.md. Check write permissions."
- Disk full: "Could not save cover-letter.md. Check available disk space."
- Other errors: "Could not save cover-letter.md: [error details]"
## Step 10: Success Output
Display success message:
```
✅ Cover letter saved: cover-letter.md
## Generation Summary:
📊 Statistics:
- Word count: [N] words
- Tone: [Formal/Balanced/Casual]
- Language: [German/English]
- Experiences highlighted: [N]
- Key messages incorporated: [N]
📍 Location:
[full or relative path to cover-letter.md]
## Content Included:
✓ Personalized opening with company-specific hook
✓ Research-backed explanation of interest in role
✓ [List 2-3 key experiences emphasized, e.g.:]
- Lead Backend Engineer role at DataFlow Systems
- Distributed caching project at CloudNet Solutions
✓ Cultural fit based on company values
✓ Professional closing with call to action
## Next Steps:
1. **Review cover-letter.md**:
Open and read the generated letter carefully. Check for:
- Factual accuracy (names, dates, achievements)
- Natural tone and flow
- Authentic representation of your interest
2. **Personalize further** (recommended):
Add any additional personal connections:
- Specific conversations with employees
- Personal anecdotes relevant to the role
- Unique insights about the company
3. **Generate CV** (coming soon):
/write-cv
4. **Proofread before sending**:
- Check for typos or grammar issues
- Ensure company name and job title are correct
- Verify contact information is up to date
---
**Tip**: This cover letter was generated based on your application strategy.
The more detailed your application.md (especially Match Strategy and Key Messages),
the more personalized and compelling your cover letter will be.
```
## Error Handling Reference
### Missing profile.md
```
❌ Profile not found
Could not read profile.md. Please create and validate your profile first.
Steps:
1. Fill out profile.md with your information
2. Run /validate-profile to check completeness
3. Try /write-cover-letter again
```
### Missing application.md
```
❌ Application not found
Could not read application.md in [path].
This doesn't appear to be a valid application folder.
Did you create this application with /new-application?
```
### Validation Failed (no --skip-validation)
```
❌ Application validation failed
[Validation error details]
Options:
1. Fix issues in application.md
2. Run /validate-application for full details
3. Use --skip-validation to proceed (not recommended)
```
### Cover Letter Exists (no --force)
```
❌ Cover letter already exists
File: [path]
Use --force to overwrite:
/write-cover-letter --force
⚠️ This will replace your existing cover letter.
```
### File Write Error
```
❌ Could not save cover letter
Error: [specific error message]
Possible causes:
- Insufficient write permissions
- Disk space full
- Path too long
Please check the issue and try again.
```
## Important Notes
### Authenticity is Critical
- Use ONLY information from profile.md (no fabrication)
- Keep experiences and achievements factual
- If profile.md lacks information for a job requirement, acknowledge the gap or focus on related transferable skills
- Better to be honest about limitations than to invent experience
### Personalization Matters
- Generic cover letters are obvious and ineffective
- Leverage research notes from application.md to make company-specific references
- Connect applicant's genuine interests (from key messages) to the role
- Show real understanding of the company and position
### Tone Appropriateness
- Formal: Traditional companies, conservative industries, senior positions, German Mittelstand
- Balanced: Most tech companies, modern corporations, professional services
- Casual: Startups, creative agencies, developer-focused roles, flat hierarchies
- When in doubt, err on the side of "Balanced"
### Quality Over Speed
- Take time to craft well-structured paragraphs
- Ensure smooth transitions between sections
- Avoid repetition and clichés
- Make every sentence count toward the 300-400 word target
### The Cover Letter's Role
- Complements the CV by adding personality and narrative
- Explains the "why" behind the "what" on the CV
- Demonstrates written communication skills
- Shows genuine interest and research effort
- Provides context for career transitions or gaps
---
**Remember**: This cover letter represents the applicant in their first impression.
Quality, authenticity, and personalization are paramount.
+75 -15
View File
@@ -194,14 +194,34 @@ When helping with job applications, follow this comprehensive workflow:
- Get warnings if input/ folder is empty or application seems unpopulated
- **Must pass before document generation**
### 6. Content Generation (FUTURE)
- Generate CV/cover letter/email based on `application.md` strategy
- Emphasize relevant experience from `profile.md`
- Incorporate keywords from the job description naturally
- Maintain factual accuracy - use only verified information from `profile.md`
- **Note**: Document generation will be implemented in a future update
### 6. Generate Cover Letter
- Run `/write-cover-letter` to generate a tailored cover letter
- System automatically validates application first (stops if incomplete)
- Checks if cover-letter.md already exists (prevents overwriting)
- Generates 300-400 word cover letter using:
- Profile.md for applicant background and achievements
- Application.md for job strategy, key messages, and tone
- Standard structure: Opening → Why this role → What you bring → Cultural fit → Closing
- Applies appropriate tone (Formal/Balanced/Casual) from application.md
- Saves to `cover-letter.md` in application folder
- Flags available: `--skip-validation`, `--force` (overwrite existing)
### 7. Quality Assurance
### 7. Review and Refine Cover Letter
- Read generated cover-letter.md carefully
- Verify factual accuracy (names, dates, achievements)
- Add personal touches or additional insights
- Ensure authentic voice and genuine enthusiasm
- Proofread for typos and flow
### 8. Generate CV (FUTURE)
- Generate tailored CV based on application.md strategy (coming soon)
- Emphasize relevant experience from profile.md
- Incorporate keywords naturally
### 9. Generate Application Email (FUTURE)
- Create professional application email (coming soon)
### 10. Quality Assurance
- Verify all company names, dates, and facts are correct
- Ensure consistency between all documents (CV ↔ cover letter ↔ email)
- Check that tone matches the target company culture
@@ -216,12 +236,22 @@ When helping with job applications, follow this comprehensive workflow:
- Keep formatting simple and ATS-friendly
- Use quantifiable achievements when available
### Cover Letter
- Structure: Opening → Why this role → What you bring → Cultural fit → Closing
- Length: Aim for 1 page (3-4 paragraphs)
- Tone: Match company culture (formal/balanced/casual)
- Personalize: Reference specific aspects of the job/company
- Connect: Link applicant's experience to job requirements
### Cover Letter (Generated by `/write-cover-letter`)
- **Structure**: Opening → Why this role → What you bring → Cultural fit → Closing
- **Length**: 300-400 words (approximately 1 page)
- **Tone**: Applied from application.md tone assessment (Formal/Balanced/Casual)
- **Language**: Inferred from job posting context (German/English)
- **Content**:
- Use ONLY authentic information from profile.md (no fabrication)
- Incorporate 2-3 key experiences from match strategy
- Reference company research and culture insights from application.md
- Natural incorporation of keywords from job description
- Company-specific personalization (values, news, projects)
- **Quality checks**:
- Automatic validation before generation
- Protection against overwriting existing work
- Word count target enforcement (300-400 words)
- Factual accuracy verification
### Application Email
- Keep it short (3-4 sentences maximum)
@@ -263,6 +293,7 @@ Adjust recommendations based on the target market if the user specifies a differ
- `/new-application "Company - Job Title"` - Create a new application workspace with organized folder structure
- `/populate-application` - Analyze input documents and populate application.md with job info, research, and strategy
- `/validate-application [optional-app-name]` - Validate that application.md is complete before document generation
- `/write-cover-letter [optional-app-name] [--skip-validation] [--force]` - Generate a tailored cover letter based on application strategy
## Example Usage
@@ -277,8 +308,9 @@ Adjust recommendations based on the target market if the user specifies a differ
4. When user has added documents: "Navigate to the application folder and run `/populate-application`"
5. After population completes: "Review `application.md` to see the analysis and strategy"
6. Validation step: "Run `/validate-application` to ensure the application is complete"
7. If validation passes: Ready for document generation
8. Future: Generate tailored CV, cover letter, and email based on `application.md`
7. If validation passes: "Generate cover letter with `/write-cover-letter`"
8. After generation: "Review cover-letter.md and personalize as needed"
9. Future: Generate tailored CV and application email
### Example 2: Quick Document Request (Legacy Flow)
@@ -304,6 +336,34 @@ Adjust recommendations based on the target market if the user specifies a differ
4. If validation fails (❌): Show specific issues like "Organization Name: Contains placeholder '[To be filled]'" and suggest "Please update application.md or run `/populate-application` if you have documents in input/"
5. Provide clear next steps based on validation result
### Example 4: Generating a Cover Letter
**User**: "Generate cover letter for my TechCorp application"
**Claude Code should**:
1. If user is in application folder: Run `/write-cover-letter` (auto-detects location)
2. If user is elsewhere: Run `/write-cover-letter 2025-11-02-TechCorp-Software-Engineer`
3. System automatically validates application first:
- If validation fails: Stop and show errors, suggest fixing or using `--skip-validation`
- If validation passes: Proceed to generation
4. Check for existing cover-letter.md:
- If exists: Stop and suggest using `--force` flag to overwrite
- If doesn't exist: Proceed to generation
5. Generate cover letter:
- Read profile.md for applicant background
- Read application.md for job strategy and tone
- Generate 300-400 word tailored cover letter
- Save to cover-letter.md
6. Show success: "✅ Cover letter saved: cover-letter.md. Generated 376 words. Next: Review and personalize."
**User**: "Regenerate the cover letter with different approach"
**Claude Code should**:
1. Run `/write-cover-letter --force` to overwrite existing file
2. System warns: "⚠️ Overwriting existing cover letter"
3. Proceeds with generation
4. Suggests: "Review the new version and keep whichever you prefer"
## Updating the Profile
If you notice missing or outdated information during application preparation: