# Cover Letter

> Write a tailored cover letter for a specific job posting

- Skill: `infrasity-labs/cover-letter` (Agent Skill, multi-file: 6 files)
- Install (CLI): `npx skillmds@latest add infrasity-labs/cover-letter`
- Raw SKILL.md: https://api.skillmd.com/api/skills/infrasity-labs/cover-letter/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: infrasity-labs (https://skillmd.com/u/infrasity-labs)
- Updated: 2026-09-10
- Page: https://skillmd.com/skills/infrasity-labs/cover-letter

---


# Cover Letter Skill

> **Priority hierarchy**: See `references/priority-hierarchy.md` for conflict resolution.

Write natural, persuasive cover letters that sound like a real professional wrote them.

## File Structure

```
scripts/
  write-cover-letter.md       # Cover letter writing agent prompt
```

## Data Directory

Resolve the data directory using `references/data-directory.md`.

---

## Workflow

### Step 0: Check Prerequisites

Resolve the data directory, then check prerequisites per `references/prerequisites.md`. Resume is required; profile is recommended but not blocking.

### Step 1: Get Job Details

**If `$ARGUMENTS` is "last" or empty:**
- Check `DATA_DIR/jobs/` for the most recently modified folder
- If found, read `posting.md` and `resume.md` from that folder
- Confirm with the user which job this is for
- If no job folders exist, ask the user for a job URL

**If `$ARGUMENTS` is a URL:**
- Check if a job folder already exists for this company in `DATA_DIR/jobs/`
- If yes, read the existing `posting.md` and `resume.md`
- If no, use Claude in Chrome MCP tools to fetch the job posting per `references/browser-setup.md`
- Save the posting to `DATA_DIR/jobs/[company-slug]-[date]/posting.md` if not already saved

If the page can't be loaded, ask the user to paste the job description directly.

### Step 2: Gather Materials

For the target job folder, check what exists:
- `posting.md` - the job description (required)
- `resume.md` - a tailored resume (optional, improves quality significantly)

If no tailored resume exists, use the original resume and work history profile directly.

### Step 3: Write the Cover Letter

Follow the framework in `scripts/write-cover-letter.md`. Use:
- The work history profile (or original resume if no profile)
- The tailored resume for this role (if available)
- The job posting

The cover letter must:
- Be 250-350 words
- Start with "Dear Hiring Manager,"
- End with "Regards, [Name]"
- Use ONLY hyphens, never em dashes
- Sound like a real human wrote it
- Never fabricate or exaggerate any detail
- Connect 2-3 specific, measurable achievements to the employer's needs

### Step 4: Present and Save

Save to `DATA_DIR/jobs/[company-slug]-[date]/cover-letter.md`

Present the cover letter to the user with:
- The full text
- A brief note on which achievements were highlighted and why
- The file path where it's saved

### Step 5: Iterate

Ask if the user wants to adjust:
- Tone (more formal, more casual, more technical)
- Which achievements to highlight
- Specific phrasing
- Length

Apply changes and re-save.

---

## Response Format

Structure user-facing output with these sections:

1. **Cover Letter** — the full cover letter text
2. **Writing Notes** — which achievements were highlighted and why, any tradeoffs made
3. **What's Next** — suggest iterating on tone/emphasis, or using other skills


