feat: add proposal for cover letter PDF conversion

Add OpenSpec proposal for converting markdown cover letters to PDF format using Swiss business letter standards.

The proposal includes:
- Swiss letter formatting with scrlttr2 and Swiss Norm configuration
- Environment validation for Pandoc and LaTeX
- Comprehensive error handling and user guidance
- Support for Swiss German formatting and address window positioning

This addresses step 7 "Generate PDFs" in the project workflow.

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

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-03 20:14:24 +01:00
co-authored by Claude
parent 8e1fd25fe1
commit 4d1fc47f1b
5 changed files with 845 additions and 0 deletions
@@ -0,0 +1,58 @@
# Implementation Tasks
## 1. Template Creation
- [ ] 1.1 Create Swiss letter LaTeX template at `src/.claude/templates/swiss-letter.tex`
- [ ] 1.2 Configure scrlttr2 with Swiss Norm (SN) settings
- [ ] 1.3 Add proper encoding (UTF-8, T1 font encoding) for German characters
- [ ] 1.4 Implement hyperlinks for email addresses
- [ ] 1.5 Add Pandoc variable placeholders for all frontmatter fields
- [ ] 1.6 Add inline comments explaining customizable sections
- [ ] 1.7 Test template with sample data to ensure proper formatting
## 2. Slash Command Implementation
- [ ] 2.1 Create command file at `src/.claude/commands/convert-cover-letter.md`
- [ ] 2.2 Implement cover letter file detection logic
- [ ] 2.3 Implement environment validation checks (Pandoc, LaTeX)
- [ ] 2.4 Add platform-specific installation instructions
- [ ] 2.5 Implement frontmatter parsing and validation
- [ ] 2.6 Build Pandoc command with correct arguments
- [ ] 2.7 Execute conversion and capture output
- [ ] 2.8 Implement error handling for common failure scenarios
- [ ] 2.9 Add success message with file path output
## 3. Error Handling & Messaging
- [ ] 3.1 Create clear error message for missing cover letter
- [ ] 3.2 Create error message for missing required frontmatter fields
- [ ] 3.3 Create installation guide for Pandoc (apt, brew, winget)
- [ ] 3.4 Create installation guide for LaTeX packages
- [ ] 3.5 Add error handling for YAML parsing failures
- [ ] 3.6 Add error handling for LaTeX compilation failures
- [ ] 3.7 Add error handling for file permission issues
- [ ] 3.8 Add timeout handling for long-running conversions
## 4. Testing
- [ ] 4.1 Test with complete frontmatter and body content
- [ ] 4.2 Test with minimal required frontmatter only
- [ ] 4.3 Test with optional enclosures list
- [ ] 4.4 Test with missing cover-letter.md file
- [ ] 4.5 Test with invalid YAML frontmatter
- [ ] 4.6 Test with missing required frontmatter fields
- [ ] 4.7 Test with special characters (ä, ö, ü, ß) in German text
- [ ] 4.8 Test environment validation when Pandoc is missing
- [ ] 4.9 Test environment validation when LaTeX is missing
- [ ] 4.10 Test error handling for file permission issues
- [ ] 4.11 Verify Swiss address window positioning with printed output
- [ ] 4.12 Verify date formatting follows Swiss convention
## 5. Documentation
- [ ] 5.1 Document required frontmatter structure
- [ ] 5.2 Document system requirements (Pandoc, LaTeX)
- [ ] 5.3 Add example cover-letter.md with complete frontmatter
- [ ] 5.4 Document troubleshooting steps for common errors
- [ ] 5.5 Add template customization guide
## 6. Integration
- [ ] 6.1 Update test directory with new command
- [ ] 6.2 Update test directory with new template
- [ ] 6.3 Ensure compatibility with existing cover letter generation
- [ ] 6.4 Verify workflow integration (step 7 in project.md)