Skip to content
generate-resume logo

Resume Generator

generate-resume

Generate a print-optimized, ATS-friendly single-page resume PDF from portfolio content. Use when user wants to create or regenerate their resume. (project)

mattnigh/skills_collection0installs24stars

SKILL.md

Full skill instructions

Resume Generator

<purpose> Generate a single-page PDF resume using Puppeteer to render the `/​resume` React page. Optimized for ATS (Applicant Tracking Systems) and print. </​purpose>

<when_to_activate> Activate when the user:

  • Asks to generate, create, or update their resume
  • Says "create my resume", "make a resume", "export resume PDF"
  • Wants to refresh the resume after updating portfolio content
  • Asks about resume format or PDF generation

Trigger phrases: "resume", "generate resume", "PDF", "export resume", "make resume" </​when_to_activate>

Critical Files

FilePurpose
src/​pages/​ResumePage.tsxReact component for print-optimized layout
src/​pages/​ResumePage.cssPrint/​screen styles with theme isolation
scripts/​generate-resume.tsPuppeteer PDF generation script
content/​profile.yamlName, email, location, tagline, stats
content/​experience/​index.yamlJobs with highlights
content/​skills/​index.yamlCategorized skills
public/​resume.pdfDefault output file

Design Principles

1. Never Cut Experience

Critical: Include ALL jobs from content/​experience/​index.yaml. Missing experience (especially major companies) damages credibility more than a slightly longer resume.

  • If page is too long → reduce highlights per job, NOT number of jobs
  • Set MAX_JOBS to match total jobs in experience file
  • Every role adds signal; cutting roles removes career trajectory

2. Metrics Over Descriptions

Highlights should follow Action → Outcome format with quantified results:

❌ "Managed product development"
✅ "Shipped Advanced API from 0→1: 17 methods serving 1M+ daily requests"

3. ATS-First Design

  • Plain text (no images, icons, or complex layouts)
  • Standard fonts: Georgia, Times New Roman (serif) or Arial, Helvetica (sans)
  • Clear section headers: Header, Summary, Experience, Skills
  • All text must be selectable/​copyable

4. Single Page Target

One-page resumes get 2x more callbacks. Fit content by:

  1. Reducing highlights per job (2-3 is sufficient)
  2. Tightening typography (9-10pt base)
  3. Never by cutting jobs

Format Guidelines

Layout Constants (ResumePage.tsx)

const RESUME_CONFIG = {
  SUMMARY_SKILL_CATEGORIES: 2,   // Categories in impact summary
  SKILLS_PER_CATEGORY: 3,        // Skills per category in summary
  SUMMARY_COMPANIES: 4,          // Companies to list in summary
  MAX_JOBS: 6,                   // Include ALL jobs - adjust to match your experience
  MAX_HIGHLIGHTS_PER_JOB: 3,     // Bullets per job (action → outcome format)
};

Adjust MAX_JOBS to match the total number of jobs in your experience file.

Resume Structure

  1. Header: Name / Current Role + contact info (email, location)
  2. Impact Summary: One-liner tagline + top skills + notable companies + key stats
  3. Professional Experience: Each job with company, role, period, location, and bullets
  4. Skills: 2-column grid organized by category

Skills Section Layout

Skills are displayed in a 2-column grid with category names in bold:

Category A: skill1, skill2, skill3...    | Category B: skill1, skill2...
Category C: skill1, skill2, skill3...    | Category D: skill1, skill2...

Categories are pulled from content/​skills/​index.yaml. Common category structures:

For Engineers:

  • Languages & Frameworks, Infrastructure, Databases, Tools

For Product Managers:

  • Domain Expertise, Product Leadership, Technical Execution, Tools

For Designers:

  • Design Tools, Research Methods, Platforms, Collaboration

Typography (ResumePage.css)

  • Font: Georgia / Times New Roman (ATS-safe serif)
  • Base size: 9.5pt
  • Line height: 1.35
  • Page: Letter size (8.5in × 11in)
  • Margins: 0.4in top/​bottom, 0.5in left/​right

Known Issues & Fixes

1. Black Box at Bottom of PDF

Cause: ThemeProvider applies dark background (#08080a) to body/#root, which bleeds into the PDF outside the .resume-page container.

Fix: CSS must override parent elements in @media print:

@media print {
  html,
  body,
  #root {
    background: white !important;
    min-height: auto !important;
    padding: 0 !important;
    margin: 0 !important;
  }
}

2. PDF Exceeds One Page

Fix: Reduce MAX_HIGHLIGHTS_PER_JOB in ResumePage.tsx. Do NOT reduce MAX_JOBS - missing experience is worse than a slightly longer resume.

3. Missing Experience/​Jobs

Cause: MAX_JOBS was set too low, cutting off important companies.

Fix: Always set MAX_JOBS to the total number of jobs in content/​experience/​index.yaml. Count your jobs and update the config.

4. Yellow/​Colored Underline on Role Title

Fix: Ensure .resume-role-highlight has no border-bottom or background-color.

5. Theme Colors Bleeding Through

Fix: Reset all children with:

.resume-page * {
  background: transparent;
  color: inherit;
}

6. Fonts Not Loading in PDF

Fix: The script waits for document.fonts.ready + 500ms buffer. If fonts still don't load, increase POST_FONT_BUFFER_MS in generate-resume.ts.


Generation Workflow

Prerequisites

  1. Dev server running: npm run dev
  2. Content files populated:
    • content/​profile.yaml (name, email, location, tagline, stats)
    • content/​experience/​index.yaml (jobs with highlights)
    • content/​skills/​index.yaml (categorized skills)

Steps

  1. Validate content: npm run validate
  2. Preview at http://localhost:5173/resume
  3. Verify single-page fit (no vertical scrollbar)
  4. Check all experience is included
  5. Generate:
npm run generate:resume
  1. Verify output at public/​resume.pdf

Custom Filename

npm run generate:resume -- --name "Jane Smith"
# Output: public/​jane-smith.pdf

Custom URL

npm run generate:resume -- --url http://localhost:3000
# Uses different dev server port

Troubleshooting

IssueSolution
"net::ERR_CONNECTION_REFUSED"Start dev server: npm run dev
PDF is blankCheck browser console at /​resume for React errors
Wrong content displayedVerify YAML files, run npm run validate
Fonts look wrongIncrease POST_FONT_BUFFER_MS in script
Two pages instead of oneReduce MAX_HIGHLIGHTS_PER_JOB, NOT MAX_JOBS
Dark background in PDFVerify print CSS overrides html/​body/#root
Jobs missingIncrease MAX_JOBS to match total in experience file
Skills look crampedReduce number of skills per category or categories

After Generation

Update hero CTA in content/​profile.yaml to link to the resume:

hero:
  cta:
    secondary:
      label: "Download Resume"
      href: "/​resume.pdf"

Technical Details

Puppeteer Configuration (generate-resume.ts)

const PAGE_DIMENSIONS = {
  LETTER: {
    WIDTH_PX: 816,   // 8.5" at 96dpi
    HEIGHT_PX: 1056, // 11" at 96dpi
  },
};

const TIMING = {
  POST_FONT_BUFFER_MS: 500,    // Wait after fonts.ready
  PAGE_LOAD_TIMEOUT_MS: 30000, // Navigation timeout
};

PDF Export Settings

await page.pdf({
  path: output,
  format: 'letter',
  printBackground: true,
  margin: {
    top: '0.4in',
    right: '0.5in',
    bottom: '0.4in',
    left: '0.5in',
  },
  preferCSSPageSize: true,
});

Content Sources

The resume pulls data from these content files:

DataSourceField
Nameprofile.yamlname
Emailprofile.yamlemail
Locationprofile.yamllocation
Taglineprofile.yamlabout.tagline
Statsprofile.yamlabout.stats[]
Jobsexperience/​index.yamljobs[]
Skillsskills/​index.yamlcategories[].skills[]

Quality Checklist

Before Generating

  • Content YAML files pass validation (npm run validate)
  • Preview at /​resume shows correct info
  • ALL jobs are included (count them!)
  • Resume fits on single page (no scrollbar)
  • All highlights follow "Action → Outcome" format
  • Metrics are quantified (%, $, numbers)

After Generating

  • Open PDF and verify visual appearance
  • Check all text is selectable (ATS-friendly)
  • Verify no dark backgrounds or visual artifacts
  • Confirm all companies/​roles are present
  • Test PDF in an ATS simulator if available

More skills from mattnigh

spring-framework-patterns logo
mattnigh/skills_collection

spring-framework-patterns

Comprehensive Spring Framework and Spring Boot best practices including dependency injection patterns, bean lifecycle and scopes, REST API development, Spring Data JPA, service layer design, Spring Security, testing strategies, caching, AOP, async processing, error handling, and common anti-patte...

24 0
View

TypeScript厳格モードによる型安全性設計を専門とするスキル。 📖 参照書籍: - 『Effective TypeScript』(Dan Vanderkam): 型設計 📚 リソース参照: - `resources/Level1_basics.md`: レベル1の基礎ガイド - `resources/Level2_intermediate.md`: レベル2の実務ガイド - `resources/Level3_advanced.md`: レベル3の応用ガイド - `resources/Level4_expert.md`: レベル4の専門ガイド - `resources/di...

24 0
View
deploying-cloud-k8s logo
mattnigh/skills_collection

deploying-cloud-k8s

Deploys applications to cloud Kubernetes (AKS/GKE/DOKS) with CI/CD pipelines. Use when deploying to production, setting up GitHub Actions, troubleshooting deployments. Covers build-time vs runtime vars, architecture matching, and battle-tested debugging.

24 0
View
moai-alfred-agent-guide logo
mattnigh/skills_collection

moai-alfred-agent-guide

19-agent team structure, decision trees for agent selection, Haiku vs Sonnet model selection, and agent collaboration principles. Use when deciding which sub-agent to invoke, understanding team responsibilities, or learning multi-agent orchestration.

24 0
View
mermaid-diagram-generator logo
mattnigh/skills_collection

mermaid-diagram-generator

Converts architecture descriptions, module specs, or workflow docs into Mermaid diagrams. Use when visualizing brick module relationships, workflows (DDD, investigation), or system architecture. Supports: flowcharts, sequence diagrams, class diagrams, state machines, entity relationship diagrams,...

24 0
View
pre-flight-check logo
mattnigh/skills_collection

pre-flight-check

INVOKE FIRST before any code work. Validates git workflow (branch, issue, worklog) and checks approach. Use at START of every task and END before completing. Prevents skipped steps.

24 0
View
browser-dev-tools logo
mattnigh/skills_collection

browser-dev-tools

This skill should be used when working with browser-rendered artifacts (i.e. Bun, React/React Native) to proactively validate that development work on localhost is being built appropriately and to support debugging browser-rendered content. Use this skill after making frontend changes to verify t...

24 0
View
lead-dev logo
mattnigh/skills_collection

lead-dev

Lead Développeur - Coordination technique opérationnelle, code review, mentoring et livraison. Pair de web-dev-process au niveau OPÉRATIONS.

24 0
View
worker-monitor logo
mattnigh/skills_collection

worker-monitor

Monitor Docker workers, RQ queue health, and auto-scale workers (max 4). Use when: checking job progress, monitoring queue depth, scaling workers up/down, diagnosing slow processing, or waiting for jobs to complete. Referenced by data-quality skill during reprocessing.

24 0
View
quality-advisor logo
mattnigh/skills_collection

quality-advisor

Proactive quality guidance system that monitors artifact creation and provides real-time feedback on documentation quality

24 0
View
bump-version logo
mattnigh/skills_collection

bump-version

This skill should be used when the user wants to bump the version number in the workspace. It updates versions across all pyproject.toml files (root, tde, and tda packages) and the CHANGELOG.md to keep them synchronized.

24 0
View

Popular AI tools

Kaiber logo
Video

Kaiber

Generate, edit, and beat-sync AI video with leading models in one workspace.

Paid
View
Vimcal logo
Productivity

Vimcal

The world's fastest calendar for remote work

Free
View

Transform Your Design with AI Designer by ImgCreator.ai

Freemium
View
Akool AI logo
Content & writing

Akool AI

Revolutionizing Video Production with AI-Powered Creativity

Paid
View

Extend an image past the frame and let AI fill the new aspect ratio.

Freemium
View
StarByFace logo
Security

StarByFace

Discover your celebrity doppelgänger with StarByFace!

Free
View
C

ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.

Freemium
View
Opus Clip logo
Coding & apps

Opus Clip

Opus.ai: Revolutionize Your Web Experience

Free
View