# Formatting Resumes

> Converts resume YAML to professionally formatted PDF using Typst templates. Use when the user wants to generate a PDF, compile their resume, compare template layouts, or create print-ready documents.

- **Type:** Skill
- **Install:** `agentstack add skill-vibewith-brent-claude-resume-skills-resume-formatter`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [vibewith-brent](https://agentstack.voostack.com/s/vibewith-brent)
- **Installs:** 0
- **Category:** [Content & Media](https://agentstack.voostack.com/c/content-and-media)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [vibewith-brent](https://github.com/vibewith-brent)
- **Source:** https://github.com/vibewith-brent/claude-resume-skills/tree/main/resume-formatter

## Install

```sh
agentstack add skill-vibewith-brent-claude-resume-skills-resume-formatter
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Resume Formatter

## Overview

Transform resume YAML files into professionally formatted PDF documents using Typst templates. Choose from 5 templates optimized for different use cases.

## Quick Start

```bash
# Step 1: Convert YAML to Typst
uv run scripts/yaml_to_typst.py resume.yaml executive --output resume.typ

# Step 2: Compile to PDF
uv run scripts/compile_typst.py resume.typ

# Result: resume.pdf
```

## Available Templates

### Template Selection Guide

```
Need?
├─ Professional default → Executive
├─ Modern/creative → Tech Modern
├─ Maximum density → Modern Dense or Compact
└─ Clean/understated → Minimal
```

**Executive** (default)
- Best for: Most professional roles, senior positions
- Style: Clean hierarchy, navy/blue accents
- Font: Inter
- Features: Professional layout, good whitespace balance

**Tech Modern** (new)
- Best for: Modern tech/creative roles, distinctive aesthetic
- Style: Deep lavender palette, pill-style skills, modern typography
- Font: Carlito (Calibri alternative)
- Features: Single-page optimized, creative competency display, professional but contemporary

**Modern Dense** (new)
- Best for: Extensive experience requiring optimal space usage
- Style: Categorized inline skills, tight but readable spacing
- Font: Inter
- Features: Single-page target, 20-25 bullets + summary + skills, strategic density

**Compact**
- Best for: Extensive experience, dense content
- Style: Maximum density without sacrificing readability
- Font: Inter
- Features: Tight spacing, small section headers

**Minimal**
- Best for: Clean, understated presentation
- Style: Monochromatic with single blue accent
- Font: Inter
- Features: Generous whitespace, subtle hierarchy

## Workflow

### Convert YAML to Typst

```bash
uv run scripts/yaml_to_typst.py   --output 
```

**Templates:** `executive`, `tech-modern`, `modern-dense`, `compact`, `minimal`

**Options:**
- `--output` / `-o`: Output file path (default: stdout)
- `--skip-validation`: Skip schema validation for legacy YAML formats

**Examples:**
```bash
# Executive template (default)
uv run scripts/yaml_to_typst.py resume.yaml executive --output resume_executive.typ

# Tech Modern template (modern/creative)
uv run scripts/yaml_to_typst.py resume.yaml tech-modern --output resume_tech_modern.typ

# Modern Dense template (maximum density)
uv run scripts/yaml_to_typst.py resume.yaml modern-dense --output resume_modern_dense.typ

# Compact template (dense)
uv run scripts/yaml_to_typst.py resume.yaml compact --output resume_compact.typ

# Minimal template (clean)
uv run scripts/yaml_to_typst.py resume.yaml minimal --output resume_minimal.typ
```

### Compile Typst to PDF

```bash
uv run scripts/compile_typst.py  [--output ]
```

**Example:**
```bash
uv run scripts/compile_typst.py resume_executive.typ
# Creates: resume_executive.pdf

# Or specify custom output name:
uv run scripts/compile_typst.py resume_executive.typ --output brent_skoumal_resume.pdf
```

Typst compiles in a single pass with no auxiliary files to clean up.

### Schema Validation

The formatter validates YAML against the resume schema before rendering. This catches structural issues early:

```bash
# Validation runs by default
uv run scripts/yaml_to_typst.py resume.yaml executive --output resume.typ
# Output: Warning: Weak verb 'worked' in achievement: Worked with vendors...

# Skip validation for legacy YAML formats
uv run scripts/yaml_to_typst.py legacy_resume.yaml executive --skip-validation --output resume.typ
```

Validation checks:
- Required: `contact`. Recommended: `summary`, `experience`, `skills`, `education`
- Proper nesting: `contact.name`, `experience[].positions[].achievements`
- Content quality: Warns about weak action verbs

### Review PDF

After compilation:
1. **Visual review:** Check formatting, layout, spacing
2. **Content review:** Verify all sections rendered correctly
3. **ATS test:** Copy-paste text to ensure proper extraction
4. **Print test:** View in grayscale for B&W readability

### Iterate if Needed

1. Edit the YAML source (not Typst)
2. Regenerate Typst from updated YAML
3. Recompile to PDF
4. Review again

**Why edit YAML instead of Typst:**
- Easier to maintain and update
- Can regenerate with different templates
- Works with resume-optimizer skill

## Prerequisites

### Typst Installation

**macOS:**
```bash
brew install typst
```

**Linux:**
```bash
# Via cargo (requires Rust)
cargo install typst-cli

# Or via package manager (check availability)
```

**Windows:**
```bash
winget install --id Typst.Typst
```

**Verify:**
```bash
typst --version
```

## Quick Customization

### Change Colors

Edit the color definitions at the top of the template:
```typst
#let primary = rgb("#1e3a5f")    // Header and section color
#let accent = rgb("#0369a1")     // Links, dates
```

### Change Font

All templates, near the top:
```typst
#set text(font: "Inter", size: 9pt)  // Change font name
```

Common alternatives: "Helvetica", "Arial", "Source Sans Pro", "Roboto"

### Change Margins

```typst
#set page(margin: (top: 0.4in, bottom: 0.35in, left: 0.5in, right: 0.5in))
```

## Tips for Best Results

**Content preparation:**
1. Optimize YAML using `resume-optimizer` skill first
2. Keep resume to 1-2 pages
3. Use consistent date formatting
4. Ensure all required YAML fields present

**Template selection:**
1. Executive for most cases
2. Compact if you have 10+ years of detailed experience
3. Minimal for creative/design-adjacent roles

**PDF generation:**
1. Always review PDF before submitting
2. Test text extraction (copy-paste from PDF)
3. Check both screen and print appearance
4. Keep source YAML for easy updates

**File naming:**
```
Good: firstname_lastname_resume.pdf
Good: firstname_lastname_companyname.pdf
Avoid: resume.pdf, cv_final_v3.pdf
```

## Complete Example

```bash
# Starting from YAML resume:

# 1. Convert to Typst with executive template
uv run scripts/yaml_to_typst.py resume.yaml executive \
  --output resume_executive.typ

# 2. Compile to PDF
uv run scripts/compile_typst.py resume_executive.typ \
  --output final_resume.pdf

# 3. Review PDF
open final_resume.pdf  # macOS
# or
xdg-open final_resume.pdf  # Linux

# 4. (Optional) Generate alternative template for comparison
uv run scripts/yaml_to_typst.py resume.yaml compact \
  --output resume_compact.typ
uv run scripts/compile_typst.py resume_compact.typ \
  --output final_resume_compact.pdf
```

## Integration with Other Skills

**Complete resume workflow:**

1. **Extract:** Use `extracting-resumes` to convert PDF/DOCX to YAML
2. **Optimize:** Use `optimizing-resumes` to improve content and tailor for target role
3. **Format:** Use `formatting-resumes` (this skill) to generate final PDF
4. **Iterate:** Make updates in YAML and regenerate

This workflow keeps resume data in editable YAML format while producing professional PDF output.

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [vibewith-brent](https://github.com/vibewith-brent)
- **Source:** [vibewith-brent/claude-resume-skills](https://github.com/vibewith-brent/claude-resume-skills)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-vibewith-brent-claude-resume-skills-resume-formatter
- Seller: https://agentstack.voostack.com/s/vibewith-brent
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
