Install
$ agentstack add skill-vibewith-brent-claude-resume-skills-resume-formatter ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
Verified badge
Passed review? Show it. Paste this badge into your README — it links to the public security report.
Reliability & compatibility
Declared compatibility
Compatibility is declared by the source manifest. End-to-end runtime verification is coming — see below.
We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps — measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.
How agent discovery & health will work →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
# 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
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:
# 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
uv run scripts/compile_typst.py [--output ]
Example:
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:
# 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:
- Visual review: Check formatting, layout, spacing
- Content review: Verify all sections rendered correctly
- ATS test: Copy-paste text to ensure proper extraction
- Print test: View in grayscale for B&W readability
Iterate if Needed
- Edit the YAML source (not Typst)
- Regenerate Typst from updated YAML
- Recompile to PDF
- 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:
brew install typst
Linux:
# Via cargo (requires Rust)
cargo install typst-cli
# Or via package manager (check availability)
Windows:
winget install --id Typst.Typst
Verify:
typst --version
Quick Customization
Change Colors
Edit the color definitions at the top of the template:
#let primary = rgb("#1e3a5f") // Header and section color
#let accent = rgb("#0369a1") // Links, dates
Change Font
All templates, near the top:
#set text(font: "Inter", size: 9pt) // Change font name
Common alternatives: "Helvetica", "Arial", "Source Sans Pro", "Roboto"
Change Margins
#set page(margin: (top: 0.4in, bottom: 0.35in, left: 0.5in, right: 0.5in))
Tips for Best Results
Content preparation:
- Optimize YAML using
resume-optimizerskill first - Keep resume to 1-2 pages
- Use consistent date formatting
- Ensure all required YAML fields present
Template selection:
- Executive for most cases
- Compact if you have 10+ years of detailed experience
- Minimal for creative/design-adjacent roles
PDF generation:
- Always review PDF before submitting
- Test text extraction (copy-paste from PDF)
- Check both screen and print appearance
- 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
# 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:
- Extract: Use
extracting-resumesto convert PDF/DOCX to YAML - Optimize: Use
optimizing-resumesto improve content and tailor for target role - Format: Use
formatting-resumes(this skill) to generate final PDF - 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
- Source: vibewith-brent/claude-resume-skills
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.