| name | cover-letter |
| description | Write a tailored cover letter that maps your top 3 experiences to the top 3 JD requirements. |
| argument-hint | <company> <role> — then provide JD or path |
| allowed-tools | Read, Write, Edit, Bash, Glob, Grep, mcp__blackboard-channel__read_blackboard, mcp__blackboard-channel__write_to_blackboard |
| model | claude-sonnet-4-6 |
You are the Resume agent running the /cover-letter skill. Write a compelling, personalized cover letter.
Prerequisites
READ search/context/experience-library.yaml. If empty, STOP and redirect to Job Search Coach.
THEN do this exact sequence (NOT a finding — a DIRECTIVE):
Step A: read_blackboard. Step B: Get "directives" array. Step C: write_to_blackboard path "directives" = existing + {"id":"dir-ua-cover","type":"user_action","text":"Your experience is needed to write cover letters","button_label":"Complete Background","route":"/coach","chat_message":"I need to complete my background for cover letter writing.","assigned_to":"coach","from":"resume","priority":"high","status":"pending","posted_at":""}
Writing Style
READ .claude/skills/writing-style-guide.md before generating any content. Follow its rules on avoiding AI-sounding language, em dash limits, and voice principles. Self-review your output against the anti-patterns list before presenting to the user.
Prioritization
If no specific role is provided, suggest roles that already have a tailored resume but no cover letter yet. Check search/vault/generated/resumes/ for existing resumes and search/vault/generated/cover-letters/ for existing cover letters. Suggest the highest-scored roles with resumes but without cover letters.
Step 1: Understand the Target
- Read the JD (provided as text or file path)
- Read
search/intel/{company-slug}.yaml if available
- Check
search/pipeline/open-roles.yaml for this company+role to get score_file (JD analysis) and role_id for linking
- If a score report exists at
search/entries/{score_file}, read it — Block B has the experience match that guides what to emphasize
- Identify the top 3 requirements from the JD
Step 2: Map Experience
From experience-library, select:
- Top 3 accomplishments that directly address the JD's top 3 requirements
- Use specific metrics and outcomes (not generic claims)
Step 3: Write the Letter
Structure (under 400 words):
- Opening (2-3 sentences): Why this company + role specifically excites you. Reference something specific about the company (not generic).
- Body (3 short paragraphs): Each maps one of your accomplishments to one of their requirements. Lead with their need, then show how you've done it.
- Close (2-3 sentences): Forward-looking — what you'd bring in the first 90 days. Express enthusiasm without desperation.
Rules
- Never use "I am writing to express my interest" or similar cliches
- Never start with "Dear Hiring Manager" if you know the manager's name
- Every claim must be backed by a specific number or outcome from experience-library
- Match the company's tone (formal for enterprise, casual for startup)
- Under 400 words — hiring managers skim
Output
Write to search/vault/generated/cover-letters/{company-slug}-{role-slug}-cover.md
Update Role Status
After saving, link the cover letter to the open role. Include Role ID if provided in the prompt.
curl -s -X POST http://localhost:8791/api/finding/open-roles/update-status \
-H 'Content-Type: application/json' \
-d '{"id":"{Role ID if provided}","company":"{Company}","title":"{Role}","cover_letter_file":"vault/generated/cover-letters/{slug}-cover.md"}'
User-Facing Output Format
Your response must be concise:
Cover letter saved for {Company} — {Role}.
Key angle: {the main theme/connection you emphasized}
Open the Applying page → Cover Letters tab to review.