resumx

Compare original and translation side by side

🇺🇸

Original

English
🇨🇳

Translation

Chinese

Resumx

Resumx

Resumx renders resumes from Markdown to PDF, HTML, PNG, and DOCX. It auto-fits content to a target page count, supports tags and views for tailored output from a single source file, and uses style options for styling.
Resumx可将简历从Markdown格式渲染为PDF、HTML、PNG和DOCX格式。它能自动调整内容适配目标页数,支持标签和视图功能,可基于单个源文件生成定制化输出,同时提供多种样式选项用于排版设计。

Resources

资源

This skill includes reference documents for specific workflows. Read them when applicable:
ResourceWhen to use
json-resume-to-markdown.mdConverting between Resumx Markdown and JSON Resume format (either direction)
writing-resume.mdInteractive resume creation, guiding users step-by-step to collect info and generate a resume
tagging-resume.mdSystematically tagging a resume for tailored output, including hierarchical tag taxonomy
本技能包含针对特定工作流的参考文档,可按需阅读:
资源使用场景
json-resume-to-markdown.md在Resumx Markdown格式和JSON Resume格式之间互相转换时使用
writing-resume.md交互式创建简历时使用,可逐步引导用户收集信息并生成简历
tagging-resume.md为简历系统性添加标签以生成定制化输出时使用,包括层级标签分类体系

Markdown Syntax

Markdown语法

Standard Markdown with extensions for inline columns, bracketed spans, and fenced divs.
基于标准Markdown,扩展支持行内列、带括号span和围栏div语法。

Structure

结构

ElementSyntax
Name
# Full Name
Contact
email@example.com | github.com/user | linkedin…
Section
## Section Name
Entry
### Title || Date
Subtitle
_Role or Degree_ || Location
Bullets
- Achievement with \
tech` tags`
SkillsDefinition list (
Term
+
: values
)
元素语法
姓名
# 全名
联系方式
email@example.com | github.com/user | linkedin…
章节
## 章节名称
条目
### 标题 || 日期
副标题
_职位或学历_ || 地点
列表项
- 成就描述,包含 \
技术` 标签`
技能定义列表 (
术语
+
: 取值
)

Inline Columns

行内列

||
splits a line into columns, pushing them to opposite sides. Simplest way to right-align a date or location:
markdown
undefined
||
可将一行内容拆分为多列,内容会向两端对齐,是右对齐日期或地点的最简单方式:
markdown
undefined

Google || Jan 2020 - Present

谷歌 || 2020年1月 - 至今

Senior Software Engineer || San Francisco, CA

More than two columns: `A || B || C`. Escape with `\||`.
高级软件工程师 || 加利福尼亚州旧金山

支持超过两列:`A || B || C`。如需转义使用 `\||`。

Inline Formatting

行内格式

SyntaxResult
**Bold**
Bold
_Italic_
Italic
`Code`
Tech tag/badge
==Highlight==
Highlighted text
H~2~O
Subscript
E = mc^2^
Superscript
--
/
---
En-dash / Em-dash
"text"
Smart quotes
语法效果
**粗体**
粗体
_斜体_
斜体
`代码`
技术标签/徽章
==高亮==
高亮文本
H~2~O
下标
E = mc^2^
上标
--
/
---
短破折号 / 长破折号
"text"
智能引号

Definition Lists

定义列表

markdown
Languages
: JavaScript, TypeScript, Python

Frameworks
: React, Node.js, Express
Also used as inline metadata below entries:
markdown
undefined
markdown
编程语言
: JavaScript, TypeScript, Python

框架
: React, Node.js, Express
也可用作条目下方的行内元数据:
markdown
undefined

Google || June 2022 - Present

谷歌 || 2022年6月 - 至今

Senior Software Engineer : Infrastructure Platform Team : San Francisco, CA
undefined
高级软件工程师 : 基础设施平台团队 : 加利福尼亚州旧金山
undefined

Tables

表格

markdown
| Category  |           Technologies |
| :-------- | ---------------------: |
| Languages | Python, TypeScript, Go |
markdown
| 类别  |           技术栈 |
| :-------- | ---------------------: |
| 编程语言 | Python, TypeScript, Go |

Horizontal Rule

分隔线

---
renders as a standard thematic break or section divider.
---
会渲染为标准的内容分隔线或章节分割符。

Comments

注释

HTML comments (
<!-- -->
) are stripped from output.
HTML注释 (
<!-- -->
) 会从输出结果中移除。

Classes, IDs & Fenced Divs

类、ID与围栏Div

Bracketed Spans

带括号的Span

[text]{.class}
wraps text in a
<span>
with classes/IDs/attributes:
markdown
undefined
[文本]{.class}
会将文本包裹在带有类/ID/属性的
<span>
标签中:
markdown
undefined

Google [2022 - Present]{.right}

谷歌 [2022 - 至今]{.right}

Senior Software Engineer [San Francisco, CA]{.right}
undefined
高级软件工程师 [加利福尼亚州旧金山]{.right}
undefined

Element Attributes

元素属性

{...}
at end of a block element applies to the whole element:
markdown
- Built interactive dashboards {.@frontend}
在块级元素末尾添加
{...}
可将属性应用到整个元素:
markdown
- 搭建了交互式看板 {.@frontend}

Fenced Divs

围栏Div

:::
applies attributes to block content. Single child: attributes go directly on it (no wrapper div). Multiple children: auto-wraps in a
<div>
.
markdown
::: {.grid .grid-cols-3}

- JavaScript
- TypeScript
- Python
  :::
Prefix a tag name for a specific HTML element:
::: footer {.text-center}
.
:::
可将属性应用到块级内容。如果只有一个子元素:属性会直接应用到该元素(无外层div包裹)。如果有多个子元素:会自动用
<div>
包裹所有内容。
markdown
::: {.grid .grid-cols-3}

- JavaScript
- TypeScript
- Python
  :::
可指定HTML标签前缀:
::: footer {.text-center}

Frontmatter

前置元数据

YAML (
---
) or TOML (
+++
). CLI flags always override frontmatter.
支持YAML (
---
) 或TOML (
+++
) 格式。CLI参数优先级始终高于前置元数据。

Render Fields

渲染字段

FieldTypeDefaultDescription
css
string | string[]
NonePath(s) to custom CSS file(s)
output
string
Input filename stemOutput path (name, directory with
/
, or template with
{view}
/
{lang}
)
pages
positive integer
No clampingTarget page count
sections
{ hide?: string[], pin?: string[] }
All in source orderSection visibility and ordering
bullet-order
none | tag
none
Bullet ordering strategy
style
Record<string, string>
No overridesStyle option overrides
tags
Record<string, string[] | TagConfig>
No composed tagsTag composition and tag view configuration
vars
Record<string, string>
No variablesTemplate variables for
{{ }}
placeholders
icons
Record<string, string>
No custom iconsCustom icon definitions (SVG, URL, or base64)
extra
Record<string, unknown>
No custom dataArbitrary user-defined data
字段类型默认值说明
css
string | string[]
自定义CSS文件路径
output
string
输入文件名前缀输出路径(文件名、带
/
的目录,或包含
{view}
/
{lang}
的模板)
pages
正整数
不限制页数目标页数
sections
{ hide?: string[], pin?: string[] }
按源文件顺序展示所有章节章节可见性与排序
bullet-order
none | tag
none
列表项排序策略
style
Record<string, string>
无覆盖样式选项覆盖
tags
Record<string, string[] | TagConfig>
无组合标签标签组合与标签视图配置
vars
Record<string, string>
无变量用于
{{ }}
占位符的模板变量
icons
Record<string, string>
无自定义图标自定义图标定义(SVG、URL或base64)
extra
Record<string, unknown>
无自定义数据任意用户自定义数据

Validate Fields

校验字段

Under a
validate
key:
FieldTypeDefault
validate.extends
string
recommended
validate.rules
Record<string, Severity | 'off'>
Per-preset defaults
Presets:
recommended
,
minimal
,
strict
,
none
.
Available rules:
missing-name
,
missing-contact
,
no-sections
,
no-entries
,
empty-bullet
,
long-bullet
,
single-bullet-section
,
unknown-fenced-div-tag
,
non-pt-font-size
.
validate
键下配置:
字段类型默认值
validate.extends
string
recommended
validate.rules
Record<string, Severity | 'off'>
按预设默认值
预设选项:
recommended
minimal
strict
none
可用规则:
missing-name
(缺失姓名)、
missing-contact
(缺失联系方式)、
no-sections
(无章节)、
no-entries
(无条目)、
empty-bullet
(空列表项)、
long-bullet
(列表项过长)、
single-bullet-section
(章节仅含单个列表项)、
unknown-fenced-div-tag
(未知围栏Div标签)、
non-pt-font-size
(字体单位非pt)。

Unknown Fields

未知字段

Unknown top-level keys error. Use
extra
for custom data.
未知的顶级键会触发报错,自定义数据请使用
extra
字段。

Full Example

完整示例

yaml
---
pages: 1
output: ./out/Jane_Smith-{view}
bullet-order: tag
style:
  accent-color: '#0ea5e9'
tags:
  fullstack: [frontend, backend]
  leadership: false
vars:
  tagline: 'Full-stack engineer with 8 years of experience'
validate:
  extends: recommended
  rules:
    long-bullet: warning
    single-bullet-section: off
extra:
  name: Jane Smith
  target-role: Senior SWE
---
yaml
---
pages: 1
output: ./out/简·史密斯-{view}
bullet-order: tag
style:
  accent-color: '#0ea5e9'
tags:
  fullstack: [frontend, backend]
  leadership: false
vars:
  tagline: '拥有8年经验的全栈工程师'
validate:
  extends: recommended
  rules:
    long-bullet: warning
    single-bullet-section: off
extra:
  name: 简·史密斯
  target-role: 高级软件工程师
---

CLI

CLI

bash
resumx <file>              # Render (defaults to resume.md, PDF)
resumx init [filename]     # Create template resume
bash
resumx <文件路径>              # 渲染(默认读取resume.md,输出PDF)
resumx init [文件名]     # 创建简历模板

Sandbox Requirement

沙箱要求

Resumx uses Playwright with Chromium for PDF rendering. Chromium cannot launch inside Cursor's default sandbox because the sandbox blocks syscalls Chromium needs to initialize. Always run resumx commands with
required_permissions: ["all"]
to disable the sandbox. Without this, rendering will fail with "Chromium not found" even though Chromium is installed.
Resumx使用Playwright搭配Chromium进行PDF渲染。Chromium无法在Cursor默认沙箱中启动,因为沙箱会拦截Chromium初始化所需的系统调用。运行resumx命令时请始终添加
required_permissions: ["all"]
以禁用沙箱,否则即使已经安装Chromium,渲染也会失败并提示「未找到Chromium」。

Render Options

渲染选项

FlagDescription
--css <path>
Path to custom CSS file, repeatable, comma-separated
-o, --output <value>
Output path (name, directory, or template)
-f, --format <name>
pdf
,
html
,
docx
,
png
, repeatable, comma-separated
-s, --style <name=value>
Override style property, repeatable
--for <name-or-glob>
Tag view name, custom view name, glob pattern, or
default
for the default view
-v, --var <key=value>
Override a template variable, repeatable
--hide <list>
Hide sections (comma-separated
data-section
values)
--pin <list>
Pin sections to top in order (comma-separated
data-section
values)
--bullet-order <value>
Bullet ordering:
none
(default) or
tag
-l, --lang <tag>
Language filter (BCP 47), repeatable, comma-separated
-p, --pages <number>
Target page count
-w, --watch
Auto-rebuild on changes
--check
Validate only, no render
--no-check
Skip validation
--strict
Fail on any validation error
--min-severity <level>
Filter validation output
参数说明
--css <路径>
自定义CSS文件路径,可重复使用,支持逗号分隔
-o, --output <值>
输出路径(文件名、目录或模板)
-f, --format <名称>
输出格式:
pdf
html
docx
png
,可重复使用,支持逗号分隔
-s, --style <名称=值>
覆盖样式属性,可重复使用
--for <名称或通配符>
标签视图名称、自定义视图名称、通配符模式,或使用
default
指定默认视图
-v, --var <键=值>
覆盖模板变量,可重复使用
--hide <列表>
隐藏指定章节(逗号分隔的
data-section
值)
--pin <列表>
将指定章节置顶,按参数顺序排列(逗号分隔的
data-section
值)
--bullet-order <值>
列表项排序:
none
(默认)或
tag
-l, --lang <标签>
语言过滤(BCP 47标准),可重复使用,支持逗号分隔
-p, --pages <数字>
目标页数
-w, --watch
文件变更时自动重新构建
--check
仅执行校验,不渲染
--no-check
跳过校验
--strict
任意校验错误都会导致执行失败
--min-severity <级别>
过滤校验输出结果

Stdin

标准输入

bash
cat resume.md | resumx
git show HEAD~3:resume.md | resumx -o old
bash
cat resume.md | resumx
git show HEAD~3:resume.md | resumx -o old

Output Naming

输出命名

ScenarioOutput
No view, no langs
resume.pdf
With tag/view
resume-frontend.pdf
With langs
resume-en.pdf
Tag/view + langs
frontend/resume-en.pdf
Template variables:
{view}
,
{lang}
.
场景输出文件名
无视图、无语言配置
resume.pdf
配置了标签/视图
resume-frontend.pdf
配置了多语言
resume-en.pdf
同时配置标签/视图+多语言
frontend/resume-en.pdf
模板变量:
{view}
{lang}

Style Options

样式选项

Override via frontmatter
style:
or CLI
--style
.
Typography:
font-family
,
title-font-family
,
content-font-family
,
font-size
(default
11pt
),
line-height
(default
1.35
).
Colors:
text-color
,
muted-color
,
accent-color
,
link-color
,
background-color
.
Headings:
name-size
,
name-caps
(
normal
,
small-caps
,
all-small-caps
),
name-weight
,
name-italic
,
section-title-size
,
section-title-caps
,
section-title-weight
,
section-title-color
,
section-title-border
,
header-align
,
section-title-align
,
entry-title-size
,
entry-title-weight
.
Links:
link-underline
(
underline
,
none
).
Spacing:
gap
(unitless scale factor for all vertical gaps),
page-margin-x
,
page-margin-y
,
section-gap
,
entry-gap
,
row-gap
,
col-gap
,
list-indent
.
Lists:
bullet-style
(
disc
,
circle
,
square
,
none
).
Features:
icons
(
inline
,
none
).
可通过前置元数据的
style:
字段或CLI的
--style
参数覆盖。
排版:
font-family
title-font-family
content-font-family
font-size
(默认
11pt
)、
line-height
(默认
1.35
)。
颜色:
text-color
muted-color
accent-color
link-color
background-color
标题:
name-size
name-caps
normal
small-caps
all-small-caps
)、
name-weight
name-italic
section-title-size
section-title-caps
section-title-weight
section-title-color
section-title-border
header-align
section-title-align
entry-title-size
entry-title-weight
链接:
link-underline
underline
none
)。
间距:
gap
(所有垂直间距的无单位缩放系数)、
page-margin-x
page-margin-y
section-gap
entry-gap
row-gap
col-gap
list-indent
列表:
bullet-style
disc
circle
square
none
)。
功能:
icons
inline
none
)。

Custom CSS

自定义CSS

Your CSS cascades on top of the default stylesheet, so you only write overrides:
css
:root {
	--font-family: 'Inter', sans-serif;
	--accent-color: #2563eb;
}

h2 {
	letter-spacing: 0.05em;
}
Reference by path:
css: my-styles.css
or
--css my-styles.css
.
For building a stylesheet from scratch,
@import
bundled modules:
common/base.css
(reset, typography, layout),
common/icons.css
(icon sizing),
common/utilities.css
(
.small-caps
,
.sr-only
,
.max-N
).
你的CSS会在默认样式表基础上层叠生效,因此只需编写需要覆盖的样式即可:
css
:root {
	--font-family: 'Inter', sans-serif;
	--accent-color: #2563eb;
}

h2 {
	letter-spacing: 0.05em;
}
通过路径引用:
css: my-styles.css
--css my-styles.css
如果需要从零构建样式表,可
@import
内置模块:
common/base.css
(重置样式、排版、布局)、
common/icons.css
(图标尺寸)、
common/utilities.css
.small-caps
.sr-only
.max-N
)。

Fit to Page

页面适配

Set
pages: N
to auto-fit. Shrinks in order of visual impact (least noticeable first):
  1. Gaps (row-gap, entry-gap, section-gap)
  2. Line height
  3. Font size
  4. Margins (page-margin-x, page-margin-y, last resort)
For
pages: 1
, gaps also expand to fill remaining space.
Minimums: font-size 9pt, line-height 1.15, section-gap 4px, entry-gap 1px, page-margin-y 0.3in, page-margin-x 0.35in.
When
pages:
is set,
style:
values are starting points that may be reduced. Without
pages:
, they apply as-is.
设置
pages: N
可开启自动适配。会按照视觉影响从低到高的顺序缩小参数:
  1. 间距(row-gap、entry-gap、section-gap)
  2. 行高
  3. 字体大小
  4. 边距(page-margin-x、page-margin-y,最后调整项)
pages: 1
时,间距也会自动扩展以填充剩余空间。
最小值限制: 字体大小9pt、行高1.15、章节间距4px、条目间距1px、页面上下边距0.3英寸、页面左右边距0.35英寸。
设置
pages:
时,
style:
中的值为起始基准,可能会被缩小。未设置
pages:
时,样式值会严格按配置生效。

Icons

图标

Syntax

语法

:icon-name:
for built-in icons,
:set/name:
for Iconify (200k+ icons), standard emoji shortcodes as fallback.
内置图标使用
:icon-name:
格式,Iconify图标(超过20万个)使用
:set/name:
格式,兜底支持标准emoji短代码。

Auto-Icons

自动图标

Links to recognized domains get icons automatically:
mailto:
(Email),
tel:
(Phone),
linkedin.com
,
github.com
,
gitlab.com
,
bitbucket.org
,
stackoverflow.com
,
x.com
/
twitter.com
,
youtube.com
/
youtu.be
,
dribbble.com
,
behance.net
,
medium.com
,
dev.to
,
codepen.io
,
marketplace.visualstudio.com
.
Disable with
style: { icons: none }
.
指向可识别域名的链接会自动添加图标:
mailto:
(邮箱)、
tel:
(电话)、
linkedin.com
github.com
gitlab.com
bitbucket.org
stackoverflow.com
x.com
/
twitter.com
youtube.com
/
youtu.be
dribbble.com
behance.net
medium.com
dev.to
codepen.io
marketplace.visualstudio.com
可通过
style: { icons: none }
禁用。

Custom Icons (Frontmatter)

自定义图标(前置元数据配置)

yaml
icons:
  mycompany: '<svg>...</svg>'
  partner: 'https://example.com/logo.svg'
Resolver order: Frontmatter > Built-in > Iconify > Emoji.
yaml
icons:
  mycompany: '<svg>...</svg>'
  partner: 'https://example.com/logo.svg'
解析优先级:前置元数据 > 内置图标 > Iconify > Emoji。

Tailwind CSS

Tailwind CSS

Resumx compiles Tailwind CSS v4 on-the-fly. Apply via
{.class}
syntax:
markdown
[React]{.bg-blue-100 .text-blue-800 .px-2 .rounded}
Works with bracketed spans, element attributes, and fenced divs. Supports arbitrary values:
.text-[#ff6600]
.
Built-in utilities:
.small-caps
,
.sr-only
,
.max-1
.max-16
(hide children beyond the Nth).
Resumx会实时编译Tailwind CSS v4,可通过
{.class}
语法应用样式:
markdown
[React]{.bg-blue-100 .text-blue-800 .px-2 .rounded}
支持在带括号的Span、元素属性、围栏Div中使用,同时支持任意值:
.text-[#ff6600]
内置工具类:
.small-caps
.sr-only
.max-1
.max-16
(隐藏第N个之后的子元素)。

Tags

标签

Tags filter content. Add
{.@name}
to any element to mark it for a specific audience. Untagged content always passes through. Tagged content only appears when rendering for a matching tag.
markdown
- Shared bullet
- Frontend-only bullet {.@frontend}
- Backend-only bullet {.@backend}
Multiple tags:
{.@backend .@frontend}
.
Render with
--for frontend
or
--for backend
.
标签用于过滤内容。在任意元素上添加
{.@名称}
即可标记为面向特定受众展示。未加标签的内容始终会展示,带标签的内容仅在渲染匹配对应标签时才会展示。
markdown
- 通用列表项
- 仅前端展示的列表项 {.@frontend}
- 仅后端展示的列表项 {.@backend}
多标签配置:
{.@backend .@frontend}
渲染时使用
--for frontend
--for backend
参数。

Hierarchical Tags

层级标签

Use
/
to nest tags when a domain spans multiple ecosystems:
markdown
- Designed REST APIs with OpenAPI documentation {.@backend}
- Built microservices with `Express` {.@backend/node}
- Migrated `Spring Boot` monolith {.@backend/jvm}
Inheritance: a view includes its entire lineage (ancestors + self + descendants) and untagged content. Siblings are excluded.
  • --for backend/node
    @backend
    (ancestor) +
    @backend/node
    (self) + untagged. Excludes
    @backend/jvm
    .
  • --for backend
    @backend
    (self) +
    @backend/node
    +
    @backend/jvm
    (descendants) + untagged.
Depth is unlimited:
{.@data/ml/nlp}
nests three levels.
当领域覆盖多个生态时,可使用
/
嵌套标签:
markdown
- 设计了带OpenAPI文档的REST API {.@backend}
- 使用`Express`搭建微服务 {.@backend/node}
- 迁移`Spring Boot`单体应用 {.@backend/jvm}
继承规则:视图会包含完整的标签谱系(祖先+自身+后代)和未标记内容,同级标签内容会被排除。
  • --for backend/node
    → 展示
    @backend
    (祖先)+
    @backend/node
    (自身)+ 未标记内容,排除
    @backend/jvm
  • --for backend
    → 展示
    @backend
    (自身)+
    @backend/node
    +
    @backend/jvm
    (后代)+ 未标记内容。
层级深度无限制:
{.@data/ml/nlp}
可嵌套三层。

Tag Composition

标签组合

Define composed tags in frontmatter as unions of constituents:
yaml
tags:
  fullstack: [frontend, backend]
  node-fullstack: [frontend, backend/node]
  tech-lead: [backend, leadership]
  startup-cto: [fullstack, leadership, architecture]
Hierarchical tags work as constituents. Lineage expands per constituent:
node-fullstack
includes
@frontend
(+ descendants),
@backend
(ancestor of
backend/node
),
@backend/node
, and untagged. Sibling
@backend/jvm
is excluded.
Compositions expand recursively (
startup-cto
includes
frontend
and
backend
via
fullstack
). Every constituent must exist as a content tag or another composed tag; typos produce an error with a suggestion.
可在前置元数据中将组合标签定义为多个子标签的并集:
yaml
tags:
  fullstack: [frontend, backend]
  node-fullstack: [frontend, backend/node]
  tech-lead: [backend, leadership]
  startup-cto: [fullstack, leadership, architecture]
层级标签可作为子标签使用,谱系会按子标签扩展:
node-fullstack
包含
@frontend
(+后代)、
@backend
backend/node
的祖先)、
@backend/node
和未标记内容,同级的
@backend/jvm
会被排除。
组合会递归展开(
startup-cto
会通过
fullstack
包含
frontend
backend
)。所有子标签必须是已存在的内容标签或其他组合标签,拼写错误会触发报错并给出修正建议。

Views

视图

Tags filter content (what to show). Views configure rendering (how to show it). Every render uses a view.
标签用于过滤内容(展示什么),视图用于配置渲染规则(如何展示),每次渲染都会使用一个视图。

Four Kinds of View

四种视图类型

KindWhereNature
Default viewFrontmatter render fieldsBase config for all renders
Tag viewFrontmatter
tags:
expanded form
Per-tag overrides, implicit for every tag
Custom view
.view.yaml
files
Per-application config
Ephemeral viewCLI flagsOne-off, not persisted
类型定义位置性质
默认视图前置元数据的渲染字段所有渲染的基础配置
标签视图前置元数据
tags:
的扩展格式
每个标签的专属覆盖配置,所有标签默认都会生成
自定义视图
.view.yaml
文件
针对特定应用的配置
临时视图CLI参数一次性配置,不会持久化

Tag Views

标签视图

Every tag implicitly generates a tag view. Configure with the expanded form:
yaml
tags:
  frontend:
    sections:
      hide: [publications]
      pin: [skills, projects]
    pages: 1

  fullstack:
    extends: [frontend, backend]
    sections:
      pin: [work, skills]
    pages: 2
The shorthand
fullstack: [frontend, backend]
is sugar for
fullstack: { extends: [frontend, backend] }
.
每个标签都会隐式生成一个标签视图,可通过扩展格式配置:
yaml
tags:
  frontend:
    sections:
      hide: [publications]
      pin: [skills, projects]
    pages: 1

  fullstack:
    extends: [frontend, backend]
    sections:
      pin: [work, skills]
    pages: 2
简写形式
fullstack: [frontend, backend]
fullstack: { extends: [frontend, backend] }
的语法糖。

Custom Views

自定义视图

Custom views live in
.view.yaml
files, auto-discovered recursively relative to the resume:
yaml
undefined
自定义视图保存在
.view.yaml
文件中,会在简历文件所在目录下递归自动发现:
yaml
undefined

stripe.view.yaml

stripe.view.yaml

stripe-swe: selects: [backend, distributed-systems, leadership] sections: hide: [publications] pin: [skills, work] vars: tagline: 'Stream Processing, Event-Driven Architecture, Go, Kafka'

Render with `--for stripe-swe`. Batch with `--for '*'` or `--for 'stripe-*'`. Use `--for default` to target the default view (no tag filtering); combine with named views, e.g. `--for default,frontend`, to render both. Do not name a view `default` (reserved).

Custom view fields: `selects` (content tags to include), `sections`, `pages`, `bullet-order`, `vars`, `style`, `format`, `output`.

A view without `selects` applies no content filter (all content renders). An explicit `selects: []` means only untagged content.
stripe-swe: selects: [backend, distributed-systems, leadership] sections: hide: [publications] pin: [skills, work] vars: tagline: '流处理、事件驱动架构、Go、Kafka'

渲染时使用`--for stripe-swe`参数。批量渲染使用`--for '*'` 或 `--for 'stripe-*'`。使用`--for default`指定默认视图(无标签过滤);可和命名视图组合使用,例如`--for default,frontend`可同时渲染两个版本。请勿将视图命名为`default`(保留关键字)。

自定义视图字段:`selects`(需要包含的内容标签)、`sections`、`pages`、`bullet-order`、`vars`、`style`、`format`、`output`。

未配置`selects`的视图不会过滤内容(展示所有内容)。显式配置`selects: []`表示仅展示未标记标签的内容。

Ephemeral Views

临时视图

CLI flags create an ephemeral view inline without persisting:
bash
resumx resume.md --for backend -v tagline="Stream Processing, Go" --pin skills,work -o stripe.pdf
CLI参数可直接创建临时视图,无需持久化保存:
bash
resumx resume.md --for backend -v tagline="流处理、Go" --pin skills,work -o stripe.pdf

Cascade Order

层叠优先级

Built-in defaults
  → Default view (frontmatter render fields)
    → Tag view OR Custom view (whichever --for resolves)
      → Ephemeral view (CLI flags)
内置默认值
  → 默认视图(前置元数据渲染字段)
    → 标签视图 或 自定义视图(按--for参数解析结果)
      → 临时视图(CLI参数)

Template Variables

模板变量

Inject per-application text via
{{ name }}
placeholders:
markdown
undefined
通过
{{ 变量名 }}
占位符可注入针对特定申请的文本内容:
markdown
undefined

Jane Doe

简·多伊

jane@example.com | github.com/jane
{{ tagline }}

Define in frontmatter `vars:`, in a custom view, or via CLI `-v`:

```yaml
vars:
  tagline: 'Full-stack engineer with 8 years of experience'
When undefined or empty, the placeholder produces nothing (line removed). Variable values can contain markdown formatting. Defining a variable with no matching placeholder is an error.
jane@example.com | github.com/jane
{{ tagline }}

可在前置元数据的`vars:`字段、自定义视图中定义,或通过CLI的`-v`参数传入:

```yaml
vars:
  tagline: '拥有8年经验的全栈工程师'
当变量未定义或为空时,占位符不会生成任何内容(对应行也会被移除)。变量值可包含Markdown格式。定义了不存在对应占位符的变量会触发报错。

Sections

章节

Control which sections appear and their order:
yaml
sections:
  hide: [publications, volunteer]
  pin: [skills, work]
hide
removes sections.
pin
moves them to the top in the specified order. Non-pinned sections follow in source order. Values are
data-section
types:
work
,
education
,
skills
,
projects
,
awards
,
certificates
,
publications
,
volunteer
,
languages
,
interests
,
references
,
basics
.
CLI:
--hide publications --pin skills,work
.
可控制展示的章节和排序:
yaml
sections:
  hide: [publications, volunteer]
  pin: [skills, work]
hide
用于移除指定章节,
pin
用于将指定章节按参数顺序置顶,未置顶的章节按源文件顺序排列。取值为
data-section
类型:
work
(工作经验)、
education
(教育背景)、
skills
(技能)、
projects
(项目)、
awards
(奖项)、
certificates
(证书)、
publications
(出版物)、
volunteer
(志愿经历)、
languages
(语言)、
interests
(兴趣)、
references
(推荐信)、
basics
(基础信息)。
CLI参数:
--hide publications --pin skills,work

Multi-Language Output

多语言输出

Tag content with
{lang=xx}
(BCP 47). Untagged content appears in all languages.
markdown
undefined
使用
{lang=xx}
(BCP 47标准)标记内容语言,未标记的内容会在所有语言版本中展示。
markdown
undefined

[Experience]{lang=en} [Expérience]{lang=fr}

[工作经验]{lang=en} [Expérience]{lang=fr}

Google

谷歌

  • [Reduced API latency by 60%]{lang=en} [Réduction de la latence API de 60%]{lang=fr}

Combines with tags: `{lang=en .@backend}`. Filter with `--lang en` or `--lang en,fr`.

Dimensions multiply: 2 langs × 2 tags = 4 PDFs.
  • [API延迟降低60%]{lang=en} [Réduction de la latence API de 60%]{lang=fr}

可和标签组合使用:`{lang=en .@backend}`。通过`--lang en` 或 `--lang en,fr`参数过滤。

维度可叠加:2种语言 × 2个标签 = 4个PDF文件。

Semantic Selectors

语义选择器

Resumx auto-generates semantic HTML attributes for CSS targeting:
Header:
[data-field='name']
,
[data-field='email']
,
[data-field='phone']
,
[data-field='profiles']
,
[data-network='github']
,
[data-field='location']
,
[data-field='url']
.
Sections:
section[data-section='work']
,
section[data-section='education']
,
section[data-section='skills']
,
section[data-section='projects']
,
section[data-section='awards']
,
section[data-section='certificates']
,
section[data-section='publications']
,
section[data-section='volunteer']
,
section[data-section='languages']
,
section[data-section='interests']
,
section[data-section='references']
,
section[data-section='basics']
.
Headings are classified by fuzzy keyword matching.
Entries:
.entries
(container),
.entry
(individual
<article>
).
Dates:
<time>
with ISO 8601
datetime
.
.date-range
wraps start/end
<time>
tags.
Resumx会自动生成语义化HTML属性,用于CSS定位:
头部:
[data-field='name']
[data-field='email']
[data-field='phone']
[data-field='profiles']
[data-network='github']
[data-field='location']
[data-field='url']
章节:
section[data-section='work']
section[data-section='education']
section[data-section='skills']
section[data-section='projects']
section[data-section='awards']
section[data-section='certificates']
section[data-section='publications']
section[data-section='volunteer']
section[data-section='languages']
section[data-section='interests']
section[data-section='references']
section[data-section='basics']
标题会通过模糊关键词匹配分类。
条目:
.entries
(容器)、
.entry
(单个
<article>
元素)。
日期: 带ISO 8601格式
datetime
属性的
<time>
元素,
.date-range
包裹起止
<time>
标签。

Git Integration

Git集成

If the user hasn't set up the
git resumx
alias yet, run this first:
bash
git config alias.resumx '!f() { spec="$1"; shift; case "$spec" in *:*) ;; *) spec="$spec:resume.md";; esac; git show "$spec" | resumx "$@"; }; f'
Then render from git history:
bash
git resumx sent/stripe-2026-02:resume.md              # render from tag
git resumx HEAD~3:resume.md --css my-styles.css -o stripe  # past commit
git show :resume.md | resumx -o staged      # staged changes
Pre-commit hook:
resumx --check
for validation. Post-commit hook: auto-render on every commit.
如果用户还未配置
git resumx
别名,先执行以下命令:
bash
git config alias.resumx '!f() { spec="$1"; shift; case "$spec" in *:*) ;; *) spec="$spec:resume.md";; esac; git show "$spec" | resumx "$@"; }; f'
之后可从Git历史中渲染简历:
bash
git resumx sent/stripe-2026-02:resume.md              # 从标签渲染
git resumx HEAD~3:resume.md --css my-styles.css -o stripe  # 从历史提交渲染
git show :resume.md | resumx -o staged      # 渲染暂存区变更
Pre-commit钩子:使用
resumx --check
进行校验。 Post-commit钩子:每次提交后自动渲染。

Using AI

AI使用

Install agent skills:
npx skills add resumx/resumx
.
安装Agent技能:
npx skills add resumx/resumx

Tailoring to Job Postings

针对职位描述定制简历

  1. Give the agent
    resume.md
    and the job posting URL
  2. Agent reads the JD, maps each requirement to existing bullets (covered, weak, missing)
  3. Agent decides what's durable vs ephemeral: will this change make the next 10 applications better, or just this one?
  4. Durable improvements (better phrasing, new bullets, new tags) → edit
    resume.md
  5. Ephemeral adjustments (keywords, section order, tagline) → create a view or use CLI vars
  6. Render:
    resumx resume.md --for stripe-swe -o out/stripe.pdf
With
pages: 1
, layout auto-adjusts after every edit.
  1. 给Agent提供
    resume.md
    和职位招聘链接
  2. Agent读取职位描述,将每个要求和现有列表项匹配(覆盖、薄弱、缺失)
  3. Agent判断变更的持久性:该变更是否对接下来的10次申请都有用,还是仅针对本次申请?
  4. 持久性优化(更优的表述、新列表项、新标签)→ 直接编辑
    resume.md
  5. 临时性调整(关键词、章节顺序、个人简介)→ 创建视图或使用CLI变量
  6. 渲染:
    resumx resume.md --for stripe-swe -o out/stripe.pdf
设置
pages: 1
时,每次编辑后布局会自动调整。

Zero-File-Modification Rendering

零文件修改渲染

For maximum speed and zero git diff, render entirely from CLI flags:
bash
resumx resume.md --for backend -v tagline="Stream Processing, Go, Kafka" --pin skills,work -o stripe.pdf
为了实现最快速度且无Git变更,可完全通过CLI参数实现渲染:
bash
resumx resume.md --for backend -v tagline="流处理、Go、Kafka" --pin skills,work -o stripe.pdf

Resume Template

简历模板

markdown
---
pages: 1
---
markdown
---
pages: 1
---

Full Name

全名

{{ tagline }}
{{ tagline }}

Education

教育背景

University Name || Sept 2019 - June 2024

大学名称 || 2019年9月 - 2024年6月

Degree Name
  • GPA: 3.85
学位名称
  • GPA: 3.85

Work Experience

工作经验

Company Name || Start - End

公司名称 || 开始时间 - 结束时间

Job Title
  • Achievement with quantified impact using
    Technology
职位名称
  • 使用
    技术栈
    取得的可量化成就

Projects

项目经历

Project Name (Individual/Group)

项目名称 (个人/团队)

  • Description of what was built
  • 项目描述

Technical Skills

技术技能

Languages : Java, Python, TypeScript
Frameworks : React, Node.js, FastAPI
undefined
编程语言 : Java, Python, TypeScript
框架 : React, Node.js, FastAPI
undefined

Writing Best Practices

写作最佳实践

  • Start bullets with strong action verbs (Led, Developed, Engineered, Increased)
  • Quantify results (20% improvement, 500+ users)
  • Wrap technologies in backticks
  • Use consistent date formats (
    Jan 2020 - Present
    )
  • Use
    \[Date\]
    for literal brackets in dates:
    [\[Jun 2024\]]{.right}
  • 列表项以强动作动词开头(主导、开发、设计、提升)
  • 量化成果(提升20%、500+用户)
  • 技术名词用反引号包裹
  • 使用统一的日期格式(
    2020年1月 - 至今
  • 日期中需要字面方括号时使用
    \[日期\]
    [\[2024年6月\]]{.right}