YAMLResume

CLI

YAMLResume provides a CLI tool to help you manage your resume. You can follow the installation guide to install it.

YAMLResume CLI in docker

Please note that we have a docker image for you, which has yamlresume CLI installed with all the necessary dependencies.

For each sub-command in this guide, you can run it in docker by appending the sub-command after yamlresume/yamlresume.

For example, to create a new resume in yamlresume CLI:

yamlresume new my-resume.yml

You can also run it in docker by:

docker run --rm -v $(pwd):/home/yamlresume yamlresume/yamlresume new my-resume.yml

Help

Show CLI help and all available commands:

$ yamlresume help
Usage: yamlresume [options] [command]

YAMLResume — Resume as Code in YAML

 __   __ _    __  __ _     ____
 \ \ / // \  |  \/  | |   |  _ \ ___  ___ _   _ ___  ___   ___
  \ V // _ \ | |\/| | |   | |_) / _ \/ __| | | / _ \/ _ \ / _ \
   | |/ ___ \| |  | | |___|  _ <  __/\__ \ |_| | | | | | |  __/
   |_/_/   \_\_|  |_|_____|_| \_\___||___/\____|_| |_| |_|\___|


Options:
  -V, --version                  output the version number
  -v, --verbose                  verbose output
  -h, --help                     display help for command

Commands:
  ai                             AI-powered resume commands
  build [options] <resume-path>  build a resume to Docx, HTML, Markdown or
                                 LaTeX/PDF
  dev [options] <resume-path>    build a resume on file changes (watch mode)
  doctor                         check environment for YAMLResume dependencies
  languages                      i18n and l10n support
  new [options] [filename]       create a new resume
  samples                        manage sample resumes
  templates                      manage resume templates
  validate <resume-path>         validate a resume against the YAMLResume schema
  help [command]                 display help for command

Show YAMLResume CLI version:

$ yamlresume -V
0.16.0

AI

Generate a new resume or translate an existing one with an LLM:

$ yamlresume ai --help
Usage: yamlresume ai [options] [command]

AI-powered resume commands

Options:
  -h, --help                            display help for command

Commands:
  generate [options] <filename>         generate a new resume with AI
  translate [options] <input> <output>  translate a resume from one locale
                                        language to another with AI
  help [command]                        display help for command

See the AI overview, generation guide, and translation guide for provider setup and command options.

New

Create a new resume. The default resume filename is resume.yml, but you can specify a custom filename:

$ yamlresume new --help
Usage: yamlresume new [options] [filename]

create a new resume

Arguments:
  filename               output filename (default: "resume.yml")

Options:
  --sample <id>          create from a curated sample resume
  --language <language>  locale language for the sample (default: "en")
  -h, --help             display help for command

$ yamlresume new my-resume.yml
✔ Created my-resume.yml successfully.

Since v0.15.0, yamlresume new creates your resume from a curated sample resume (the default is the software-engineer sample in English). The generated file comes with helpful YAML comments for editor/IDE schema validation and a set of default layouts, so you can build it right away.

--sample

If you want to start from a specific curated sample resume, use the --sample option. Run yamlresume samples list to see all available samples:

$ yamlresume new ux-designer.yml --sample ux-designer
✔ Created ux-designer.yml from sample "ux-designer" successfully.

If an unknown sample id is given, the CLI prints all available samples to help you choose:

$ yamlresume new my-resume.yml --sample no-such-sample

 ERROR  Sample resume not found: no-such-sample

ℹ Available samples:
  - data-analyst: Data Analyst
  - data-scientist: Data Scientist
  - product-manager: Product Manager
  - software-engineer: Software Engineer
  - ux-designer: UX Designer

--language

All sample resumes are translated in 12 locale languages. You can use the --language option to create a resume from a localized sample, which is quite handy for writing non-English resumes:

$ yamlresume new my-resume.yml --sample software-engineer --language zh-hans
✔ Created my-resume.yml successfully.

Samples

YAMLResume ships with a set of curated sample resumes for common positions, translated in 12 locale languages (de, en, es, fr, id, ja, nl, no, pt-br, zh-hans, zh-hant-hk, zh-hant-tw). List them all with the samples list subcommand:

$ yamlresume samples --help
Usage: yamlresume samples [options] [command]

manage sample resumes

Options:
  -h, --help      display help for command

Commands:
  list            list all sample resumes
  help [command]  display help for command

$ yamlresume samples list

| ID                | Position          | Title             | Category       |
| ----------------- | ----------------- | ----------------- | -------------- |
| data-analyst      | data analyst      | Data Analyst      | Data Analytics |
| data-scientist    | data scientist    | Data Scientist    | Data Science   |
| product-manager   | product manager   | Product Manager   | Product        |
| software-engineer | software engineer | Software Engineer | Engineering    |
| ux-designer       | ux designer       | UX Designer       | Design         |

Use yamlresume new --sample <id> to create a new resume file from a sample.

Build

Build every layout configured in a YAML resume. A single command can generate DOCX, HTML, Markdown, and LaTeX/PDF outputs. LaTeX layouts also produce the .tex source and may leave intermediate files such as .aux and .log when using XeTeX.

$ yamlresume build --help
Usage: yamlresume build [options] <resume-path>

build a resume to Docx, HTML, Markdown or LaTeX/PDF

Arguments:
  resume-path              the resume file path

Options:
  --no-pdf                 only generate TeX file without PDF (for LaTeX layouts)
  --no-validate            skip resume schema validation
  -o, --output <dir>       output directory for generated files
  -t, --timeout <seconds>  timeout for LaTeX compilation in seconds (default: 30, 0 to disable)
  -h, --help               display help for command

$ yamlresume build my-resume.yml
◐ Generating resume PDF file with command: xelatex -halt-on-error my-resume.tex...
✔ Generated resume PDF file successfully.

--no-pdf

If you only want to generate the LaTeX file without PDF, you can use --no-pdf option.

$ yamlresume build --no-pdf my-resume.yml

--no-validate

If you want to skip the resume schema validation, you can use --no-validate option.

$ yamlresume build --no-validate my-resume.yml

--output

If you want to specify a custom output directory for the generated files, you can use the -o, --output option.

$ yamlresume build -o ./output my-resume.yml

--timeout

If you want to customize the timeout for LaTeX compilation, you can use the --timeout option. The default timeout is 30 seconds. You can disable the timeout by setting it to 0.

$ yamlresume build --timeout 60 my-resume.yml

Dev

Watch a YAML resume and rebuild all configured layouts whenever the file changes. This is convenient for previewing edits in real time. dev supports the PDF, validation, and output-directory options from build.

$ yamlresume dev --help
Usage: yamlresume dev [options] <resume-path>

build a resume on file changes (watch mode)

Arguments:
  resume-path         the resume file path

Options:
  --no-pdf            only generate TeX file without PDF
  --no-validate       skip resume schema validation
  -o, --output <dir>  output directory for generated files
  -h, --help          display help for command

Validate

Validate a resume against the YAMLResume schema.

$ yamlresume validate --help
Usage: yamlresume validate [options] <resume-path>

validate a resume against the YAMLResume schema

Arguments:
  resume-path  the resume file path

Options:
  -h, --help   display help for command

For example, for the following resume:

# yaml-language-server: $schema=https://yamlresume.dev/schema.json

---
content:
  basics:
    name: Andy Dufresne
    headline: Headed for the Pacific
    phone: "(213) 555-9876"
    email: hi@pp
    url: https://ppresume.com/gallery
    summary: |
      - Computer Science major with strong foundation in data structures, algorithms, and software development
      - Pixel perfect full stack web developer, specialised in creating high-quality, visually appealing websites
      - Experiened in databases (SQL, NoSQL), familiar with server-side technologies (Node.js, Express, etc.)
      - Team player, with detail-oriented mindset and a keen eye for design and user experiences
  location:
    address: 123 Main Street
    region: California
    city: S
    country: United States
    postalCode: "95814"
  education:
    - institution: University of Southern California
      url: https://www.cs.usc.edu/
      degree: Bachelor
      area: Computer Engineering and Computer Science
      score: "3.8"
      startDate: Sep 1, 2016
      endDate:
      courses:
        - D
        - Programming Language Concepts
      summary: |
        - Developed proficiency in programming languages such as Java, C++, and Python
        - Gained hands-on experience in software development through various projects and assignments
        - Strong communication and teamwork skills acquired through group projects and presentations

layouts:
  - engine: latex
    typography:
      fontSize: 13pt

yamlresume validate will give you a list of potential errors, with clear positional information

$ yamlresume validate invalid-resume.yml
invalid-resume.yml:9:12: warning: email is invalid.
    email: hi@pp
           ^
invalid-resume.yml:19:11: warning: city should be 2 characters or more.
    city: S
          ^
invalid-resume.yml:31:11: warning: courses should be 2 characters or more.
        - D
          ^
invalid-resume.yml:41:17: warning: font size option is invalid, it must be one of the following: ["10pt", "11pt", "12pt"]
    fontSize: 13pt
              ^
✖ Resume validation failed.

Doctor

Check your environment for YAMLResume dependencies. This command helps diagnose setup issues by verifying that all required tools and fonts are properly installed.

$ yamlresume doctor

  System:
    OS: macOS 14.6.1
    CPU: (10) arm64 Apple M1 Max
  Binaries:
    Node: 25.6.0 - /opt/homebrew/bin/node
    Yarn: 1.22.22 - /Users/hanyu/Library/pnpm/yarn
    npm: 11.8.0 - /opt/homebrew/bin/npm
    pnpm: 10.6.3 - /opt/homebrew/bin/pnpm

ℹ Checking XeTeX...
  XeTeX: XeTeX 3.141592653-2.6-0.999994 (TeX Live 2022)

ℹ Checking Tectonic...
  Tectonic: tectonic 0.15.0

ℹ Checking Fonts...
  Linux Libertine O: Not Installed
  Linux Libertine: Installed
  Noto Serif CJK SC: Installed
  Noto Sans CJK SC: Installed

The doctor command checks:

  • System information: OS, CPU architecture
  • Binaries: Node.js, npm, pnpm, Yarn, Bun
  • LaTeX engines: XeTeX and Tectonic availability
  • Fonts: Required fonts for optimal resume rendering (Linux Libertine for Latin text, Noto CJK for Chinese/Japanese/Korean)

This is particularly helpful when setting up YAMLResume on a new machine or troubleshooting resume build issues.

Languages

List all available languages. The language code follows the spec in ISO 639 specification. You can specify the language code in locale.language in order to change the language of your resume. Changing the language of your resume will automatically translate all fixed terms. You can check more details in our content -> multi languages section.

$ yamlresume languages list

| locale.language | Language Name                   |
| --------------- | ------------------------------- |
| en              | English                         |
| zh-hans         | Simplified Chinese              |
| zh-hant-hk      | Traditional Chinese (Hong Kong) |
| zh-hant-tw      | Traditional Chinese (Taiwan)    |
| es              | Spanish                         |
| fr              | French                          |
| no              | Norwegian                       |
| nl              | Dutch                           |
| ja              | Japanese                        |
| de              | German                          |
| id              | Indonesian                      |
| pt-br           | Brazilian Portuguese            |

Templates

List all available templates. You can change the resume template by setting layouts.[].template in your YAML resume. PPResume Templates for more details.

$ yamlresume templates list

| layouts.[].template | Engine | Template Name    | Description                                                         |
| ------------------- | ------ | ---------------- | ------------------------------------------------------------------- |
| jake                | latex  | Jake's Resume    | A simple, straight-forward resume template based on Jake's Resume   |
| moderncv-banking    | latex  | ModernCV Banking | ModernCV template with banking style                                |
| moderncv-casual     | latex  | ModernCV Casual  | ModernCV template with casual style                                 |
| moderncv-classic    | latex  | ModernCV Classic | ModernCV template with classic style                                |
| calm                | html   | Calm             | Clean and minimalist design suitable for all professionals.         |
| vscode              | html   | VS Code          | Dark theme inspired by Visual Studio Code, tailored for developers. |
| calm                | docx   | Calm             | Clean and minimalist design suitable for all professionals.         |
Edit on GitHub

Last updated on

On this page