Archive all completed changes and create final specifications: Archived changes (2025-11-03): - add-application-email (8 requirements) - add-application-management (9 requirements) - add-application-validation (9 requirements) - add-cover-letter-generation (13 requirements) - add-cover-letter-pdf-conversion (7 requirements) - add-profile-template (4 requirements) - add-profile-validation (3 requirements) Created specifications: - applicant-profile: User profile management with validation - application-email: Email generation for job applications - application-management: Application workflow and folder structure - application-validation: Application completeness checking - cover-letter-generation: Tailored cover letter creation - cover-letter-pdf-conversion: PDF export with Swiss formatting All features are now fully documented in openspec/specs/ and ready for use. 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
12 KiB
cover-letter-generation Specification
Purpose
TBD - created by archiving change add-cover-letter-generation. Update Purpose after archive.
Requirements
Requirement: Cover Letter Generation Command
The system SHALL provide a /write-cover-letter slash command that generates tailored cover letters based on application strategy and profile information.
Scenario: Generate from current directory
- WHEN user runs
/write-cover-letterfrom inside an application folder - THEN system generates cover letter for the application in current directory
Scenario: Generate with explicit application name
- WHEN user runs
/write-cover-letter 2025-11-02-TechCorp-Developer - THEN system generates cover letter for that specific application
Scenario: Handle unclear location
- WHEN user runs
/write-cover-letterfrom a directory that is not an application folder and no parameter is provided - THEN system lists all applications in
applications/pending/and asks user to specify which one
Scenario: Handle non-existent application
- WHEN user provides application name that doesn't exist
- THEN system shows error and lists available applications
Requirement: Automatic Validation Check
The system SHALL automatically validate the application before generating a cover letter.
Scenario: Validation passes automatically
- WHEN user runs
/write-cover-letterand application validation passes - THEN system proceeds with cover letter generation
Scenario: Validation fails automatically
- WHEN user runs
/write-cover-letterand application validation fails - THEN system shows validation errors and stops generation (does not create cover-letter.md)
Scenario: Skip validation with flag
- WHEN user runs
/write-cover-letter --skip-validationand application has incomplete sections - THEN system shows warning but proceeds with generation anyway
Scenario: Show validation progress
- WHEN validation is running
- THEN system shows progress: "🔍 Validating application..." followed by result
Requirement: Existing File Protection
The system SHALL check if cover-letter.md already exists and prevent overwriting without explicit permission.
Scenario: Cover letter already exists
- WHEN user runs
/write-cover-letterandcover-letter.mdalready exists in application folder - THEN system stops and shows error: "Cover letter already exists. Use --force to overwrite."
Scenario: Force overwrite with flag
- WHEN user runs
/write-cover-letter --forceand cover-letter.md exists - THEN system shows warning and overwrites the file
Scenario: No existing file
- WHEN user runs
/write-cover-letterand no cover-letter.md exists - THEN system proceeds with generation without prompting
Requirement: Multi-Source Data Reading
The system SHALL read both profile.md and application.md to gather information for the cover letter.
Scenario: Read profile for applicant background
- WHEN generating cover letter
- THEN system reads
profile.mdto extract:- Personal information (name, contact)
- Professional summary
- Relevant work experiences (as identified in match strategy)
- Key skills and achievements
- Projects to highlight
Scenario: Read application for job strategy
- WHEN generating cover letter
- THEN system reads
application.mdto extract:- Organization name and job title
- Match strategy (which experiences to emphasize)
- Key messages to convey
- Tone assessment (Formal/Balanced/Casual)
- Company research and culture insights
- Job requirements and keywords
Scenario: Handle missing profile.md
- WHEN profile.md doesn't exist or is unreadable
- THEN system shows error: "profile.md not found. Please create your profile first." and stops
Scenario: Cross-reference match strategy
- WHEN application.md has match strategy section with specific experiences to emphasize
- THEN system prioritizes those experiences from profile.md in the cover letter content
Requirement: Standard Structure Generation
The system SHALL generate cover letters with a standard 1-page structure.
Scenario: Opening paragraph with hook
- WHEN generating cover letter
- THEN opening paragraph includes:
- Specific job title and company name
- Brief statement of interest
- One compelling reason for applying (from key messages or research)
Scenario: Why this role paragraph
- WHEN generating cover letter
- THEN "why this role" section includes:
- Connection to company mission/values
- Reference to company research insights
- Genuine interest in the position
Scenario: What you bring paragraphs
- WHEN generating cover letter
- THEN "what you bring" sections include:
- 2-3 most relevant experiences from match strategy
- Specific achievements from profile.md
- Connection to job requirements
- Natural incorporation of keywords
Scenario: Cultural fit paragraph
- WHEN generating cover letter
- THEN cultural fit section includes:
- Alignment of personal values with company culture
- Reference to soft skills that match company culture indicators
- Enthusiasm for work environment
Scenario: Closing paragraph
- WHEN generating cover letter
- THEN closing includes:
- Strong statement of interest
- Availability for interview
- Professional thank you
- Call to action
Requirement: Length and Formatting
The system SHALL generate cover letters with appropriate length and formatting.
Scenario: Target word count
- WHEN generating cover letter
- THEN system aims for 300-400 words total (approximately 1 page)
Scenario: Paragraph structure
- WHEN generating cover letter
- THEN system creates 4-5 distinct paragraphs (Opening, Why role, What you bring 1-2 paragraphs, Cultural fit, Closing)
Scenario: Professional formatting
- WHEN cover letter is generated
- THEN format includes:
- Applicant contact information header (from profile.md)
- Date
- Company/recruiter address (from application.md)
- Professional salutation
- Body paragraphs
- Professional sign-off
Requirement: Tone and Language
The system SHALL apply appropriate tone and language based on application.md guidance.
Scenario: Apply tone from application.md
- WHEN application.md has tone assessment of "Formal"
- THEN cover letter uses formal language, professional vocabulary, traditional business letter tone
Scenario: Apply balanced tone
- WHEN application.md has tone assessment of "Balanced"
- THEN cover letter uses professional but approachable language, moderate formality
Scenario: Apply casual tone
- WHEN application.md has tone assessment of "Casual"
- THEN cover letter uses conversational yet professional language, more personal voice
Scenario: Infer language from context
- WHEN job posting, company information, or application.md content suggests German language
- THEN cover letter is generated in German
Scenario: Default to English
- WHEN language cannot be clearly determined from context
- THEN cover letter is generated in English
Requirement: Content Quality and Authenticity
The system SHALL ensure generated content is authentic, factual, and high-quality.
Scenario: Use only real information
- WHEN generating cover letter content
- THEN system uses ONLY experiences, skills, and achievements documented in profile.md (no hallucination)
Scenario: Natural keyword incorporation
- WHEN job description has specific keywords or required skills
- THEN system incorporates them naturally in context (not as a list)
Scenario: Company-specific personalization
- WHEN application.md has research notes about company
- THEN cover letter references specific company initiatives, values, or news
Scenario: Authentic voice
- WHEN generating prose
- THEN system creates natural, human-sounding text (not obviously AI-generated)
Requirement: Success and Progress Reporting
The system SHALL provide clear feedback during the generation process.
Scenario: Show generation steps
- WHEN cover letter is being generated
- THEN system shows progress:
- "🔍 Validating application..."
- "📝 Generating cover letter..."
- "✓ Read profile.md"
- "✓ Read application.md"
- "✓ Analyzed match strategy"
- "✓ Generated [N] words"
Scenario: Success message
- WHEN cover letter generation completes successfully
- THEN system shows:
- ✅ emoji and "Cover letter saved: cover-letter.md"
- Summary (word count, tone, language, key experiences used)
- Next steps (review, personalize, generate CV)
Scenario: Include file location
- WHEN showing success message
- THEN system includes full or relative path to cover-letter.md file
Requirement: Error Handling
The system SHALL handle errors gracefully with helpful messages.
Scenario: Missing application.md
- WHEN application folder has no application.md file
- THEN system shows error: "No application.md found. Please create application first with /new-application"
Scenario: Validation failure stops generation
- WHEN /validate-application fails with incomplete sections
- THEN system shows specific validation errors and suggests: "Fix issues or use --skip-validation to proceed anyway"
Scenario: Existing cover letter blocks generation
- WHEN cover-letter.md already exists
- THEN system shows: "Cover letter already exists. Use --force to overwrite. Warning: This will replace your existing cover letter."
Scenario: File write errors
- WHEN cover-letter.md cannot be written (permissions, disk full, etc.)
- THEN system shows clear error: "Could not save cover-letter.md: [reason]"
Requirement: Flags and Options
The system SHALL support command flags for advanced usage.
Scenario: Skip validation flag
- WHEN user provides
--skip-validationflag - THEN system skips /validate-application check and generates anyway
Scenario: Force overwrite flag
- WHEN user provides
--forceor--overwriteflag - THEN system overwrites existing cover-letter.md without prompting
Scenario: Combined flags
- WHEN user provides multiple flags:
/write-cover-letter --skip-validation --force - THEN system applies both: skips validation AND overwrites existing file
Scenario: Help flag
- WHEN user runs
/write-cover-letter --help - THEN system shows usage information, available flags, and examples
Requirement: Post-Generation Guidance
The system SHALL provide clear next steps after generation.
Scenario: Review guidance
- WHEN cover letter is generated
- THEN system suggests: "Review cover-letter.md for accuracy and authenticity"
Scenario: Personalization guidance
- WHEN cover letter is generated
- THEN system suggests: "Add any additional personal insights or connections to the role"
Scenario: Next command suggestion
- WHEN cover letter is generated
- THEN system suggests next step: "Generate CV: /write-cv (coming soon)"
Requirement: Integration with Workflow
The system SHALL integrate seamlessly with existing application workflow.
Scenario: Workflow step documentation
- WHEN user checks workflow in CLAUDE.md
- THEN cover letter generation appears as Step 6 after validation
Scenario: Command availability
- WHEN user lists available commands
- THEN
/write-cover-letteris documented with description and usage examples
Scenario: Consistent patterns
- WHEN using
/write-cover-letter - THEN location detection, error handling, and output format match patterns from other commands (/validate-application, /populate-application)