Markdown Resume Manager
A VS Code extension for managing markdown-based resumes and cover letters with automated build support using Pandoc.
Features
- ✨ Create Resumes & Cover Letters - Interactive prompts guide you through document creation
 
- 📋 Clipboard Support - Paste content directly from Claude/ChatGPT/Opus
 
- 🏗️ One-Click Building - Build to DOCX and PDF with keyboard shortcuts
 
- 📁 Smart File Organization - Automatically organizes files by company name
 
- 🚀 Quick Access - Open build folders directly from VS Code
 
- ⌨️ Keyboard Shortcuts - Efficient workflow with customizable keybindings
 

Requirements
- Pandoc - Required for markdown-to-DOCX/PDF conversion
- Windows: Download the installer from pandoc.org
 
- macOS: 
brew install pandoc 
- Linux: 
sudo apt install pandoc or equivalent 
 
- Optional: WeasyPrint - For better PDF generation (
pip install weasyprint) 
Getting Started
1. Install the Extension
From VS Code Marketplace:
- Open VS Code
 
- Go to Extensions (Ctrl+Shift+X)
 
- Search for "Markdown Resume Manager"
 
- Click Install
 
Or install manually:
code --install-extension markdown-resume-manager-1.0.0.vsix
2. Install Pandoc
Make sure Pandoc is installed on your system:
3. Initialize Your Project
- Open a folder in VS Code (or create a new one)
 
- Open Command Palette (Ctrl+Shift+P)
 
- Run: Resume Manager: Initialize Project Structure
 
This creates:
your-resume-project/
├── resumes/
│   └── tailored/          # Company-specific resumes
├── cover-letters/
│   └── tailored/          # Company-specific cover letters
├── templates/             # Base templates
└── build/                 # Generated DOCX/PDF files (auto-created)
Usage
Creating a New Resume
Method 1: Keyboard Shortcut
- Press 
Ctrl+Shift+Alt+N (Windows/Linux) or Cmd+Shift+Alt+N (Mac) 
Method 2: Command Palette
- Press 
Ctrl+Shift+P (or Cmd+Shift+P on Mac) 
- Type "Resume Manager: Create New Resume"
 
Then:
- Enter company name (e.g., "google")
 
- Enter position (e.g., "senior-engineer") - optional
 
- Choose content source:
- Paste from clipboard - If you have markdown content copied
 
- Open empty file in editor - Start from scratch
 
- Create empty file - Just create the file
 
 
- Optionally build immediately
 
Creating a Cover Letter
Same as above, but use:
- Keyboard: 
Ctrl+Shift+Alt+C (or Cmd+Shift+Alt+C) 
- Command: "Resume Manager: Create New Cover Letter"
 
Building Documents
While editing a markdown resume or cover letter:
Build to DOCX:
- Press 
Ctrl+Shift+B (or Cmd+Shift+B) 
- Or use Command Palette: "Resume Manager: Build Current Document (DOCX)"
 
Build to DOCX + PDF:
- Press 
Ctrl+Shift+Alt+B (or Cmd+Shift+Alt+B) 
- Or use Command Palette: "Resume Manager: Build Current Document (DOCX + PDF)"
 
Opening Build Folders
- Use Command Palette: "Resume Manager: Open Build Folder"
 
- Or click "Open Build Folder" after a successful build
 
Commands
All commands are available via the Command Palette (Ctrl+Shift+P):
Resume Manager: Initialize Project Structure - Set up the required folder structure 
Resume Manager: Create New Resume - Create a new tailored resume 
Resume Manager: Create New Cover Letter - Create a new cover letter 
Resume Manager: Build Current Document (DOCX) - Build to DOCX 
Resume Manager: Build Current Document (DOCX + PDF) - Build both formats 
Resume Manager: Open Build Folder - Open the build folder 
Keyboard Shortcuts
| Action | 
Windows/Linux | 
Mac | 
| New Resume | 
Ctrl+Shift+Alt+N | 
Cmd+Shift+Alt+N | 
| New Cover Letter | 
Ctrl+Shift+Alt+C | 
Cmd+Shift+Alt+C | 
| Build (DOCX) | 
Ctrl+Shift+B* | 
Cmd+Shift+B* | 
| Build (DOCX+PDF) | 
Ctrl+Shift+Alt+B | 
Cmd+Shift+Alt+B | 
*Only works when editing markdown files in resumes/ or cover-letters/ folders
Configuration
Configure the extension in VS Code settings:
{
  "markdownResumeManager.resumeOutputName": "Your_Name_Resume",
  "markdownResumeManager.coverLetterOutputName": "Your_Name_Cover_Letter"
}
Settings
markdownResumeManager.resumeOutputName - Output filename for resumes without extension (default: Your_Name_Resume) 
markdownResumeManager.coverLetterOutputName - Output filename for cover letters without extension (default: Your_Name_Cover_Letter) 
Ask Claude/ChatGPT/Opus to generate a tailored resume
- "Create a resume tailored for a Senior Software Engineer position at Google"
 
 
Copy the markdown output to clipboard
 
In VS Code, press Ctrl+Shift+Alt+N
 
Enter company: google
 
Enter position: senior-engineer
 
Choose "Paste from clipboard"
 
File created at: resumes/tailored/google-senior-engineer.md
 
Make any edits needed
 
Press Ctrl+Shift+B to build
 
Click "Open Build Folder"
 
Your files are ready: build/google/Your_Name_Resume.docx
 
File Naming Conventions
Input files:
- Resumes: 
{company}-{position}.md (e.g., google-senior.md) 
- Cover Letters: 
{company}-cover.md (e.g., google-cover.md) 
Output files:
- All resumes: Configured name (default: 
Your_Name_Resume.docx) 
- All cover letters: Configured name (default: 
Your_Name_Cover_Letter.docx) 
- Organized in: 
build/{company}/ 
Troubleshooting
"Pandoc is not installed"
- Install Pandoc from pandoc.org/installing.html
 
- Windows: Download and run the .msi installer
 
- macOS: 
brew install pandoc 
- Linux: 
sudo apt install pandoc (or your distro's package manager) 
- Verify installation: 
pandoc --version 
- Restart VS Code after installing Pandoc
 
"Build folder doesn't exist"
- You need to build the document first before opening the build folder
 
- The folder is created automatically during the first build
 
PDF generation failed
- PDF generation requires additional dependencies
 
- Install WeasyPrint: 
pip install weasyprint 
- Or use DOCX-only builds with 
Ctrl+Shift+B 
Keyboard shortcuts not working
- Make sure you're editing a markdown file in 
resumes/ or cover-letters/ 
- Check for conflicting keybindings in VS Code settings
 
Extension not activating
- Make sure you have a workspace folder open
 
- Extension activates when markdown files are present in the workspace
 
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
MIT License - see LICENSE file for details
Author
Eric McKenna - GitHub
Publishing & Development
For Developers
Testing:
npm test                    # Run extension tests
Packaging:
npm run package             # Create .vsix file for distribution
Publishing to VS Code Marketplace:
Create a Personal Access Token:
- Go to https://dev.azure.com/
 
- User Settings → Personal Access Tokens
 
- Create token with Marketplace > Manage scope
 
 
Store the token in .env file (already git-ignored):
VSCE_PAT=your-token-here
 
Publish with npm scripts:
npm run publish         # Publish current version
npm run publish:patch   # Bump patch version (1.0.0 → 1.0.1) and publish
npm run publish:minor   # Bump minor version (1.0.0 → 1.1.0) and publish
npm run publish:major   # Bump major version (1.0.0 → 2.0.0) and publish
 
Note: The .env file is excluded from git and packaging via .gitignore and .vscodeignore for security.
Changelog
1.0.0 (2025-11-03)
- ✨ Initial release
 
- 📝 Create resumes and cover letters with interactive prompts
 
- 🏗️ Build to DOCX and PDF using Pandoc (no shell scripts required!)
 
- 📋 Clipboard paste support for quick content insertion
 
- ⚙️ Configurable output names
 
- 🌍 Full cross-platform support (Windows, macOS, Linux)
 
- 🚀 One-command project initialization
 
- ⌨️ Keyboard shortcuts for all major operations
 
- ✅ Automated testing with 14 test suites
 
- 📦 Native build system - no external scripts needed