resumx について
resumxは、Markdownで履歴書を管理し、用途に合わせて調整する人向けのレンダラーです。単一のソースからPDF、HTML、PNG、DOCXを生成でき、ページ数の調整やタグ、ビューに対応しています。
主な機能
- 01MarkdownをPDF、HTML、PNG、DOCXに変換
- 02指定ページ数に合わせて調整
- 03タグとビューによる内容の絞り込み
- 04履歴書の構成と内容の検証
- 05スタイルとCSSによるレイアウト調整
活用シーン
- 011つのMarkdownファイルから用途別の履歴書を作成
- 02履歴書を複数形式で出力
- 03履歴書を指定ページ数に調整
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ resumx/ skills --skill resumxインストール後、Claude Code で/resumxを入力して読み込まれたか確認します。
同梱ファイルresources/tagging-resume.mdresources/writing-resume.md
詳細
Resumx
Markdown → PDF/HTML/PNG/DOCX の履歴書レンダラー。目標ページ数に自動調整し、タグ + ビューで 1 つのソースファイルからカスタマイズした出力を生成します。
別のレンダラーやビルダーから移行する場合 変換とクイックスタートを 1 ステップで行えます: resumx.dev/#import。PDF、DOCX、LaTeX、JSON Resume、または RenderCV YAML をドロップすると、Resumx で編集・レンダリングできる Markdown が得られます。
リソース
| リソース | 用途 |
|---|---|
| writing-resume.md | 対話形式のステップバイステップの履歴書作成 |
| tagging-resume.md | カスタマイズした出力のための体系的なタグ付け、階層的なタグ分類 |
Markdown 構文
標準の Markdown + インラインカラム、角括弧スパン、フェンス付き div。
構造: # Name → email | github | linkedin (連絡先) → ## Section → ### Title || Date → _Subtitle_ || Location → - Bullets → スキル用の定義リスト (Term + : values)。
インラインカラム: || で左右のカラムに分割します。### Google || Jan 2020 - Present、_Senior SWE_ || San Francisco, CA。3 カラム以上: A || B || C。エスケープ: \||。
書式: **Bold**、_Italic_、H~2~O (下付き)、E = mc^2^ (上付き)、--/--- (en/em ダッシュ)。
テーブル: 標準の Markdown テーブル。
クラス、ID、フェンス付き div
角括弧スパン: [text]{.class} → <span>。例: ### Google [2022 - Present]{.right}。
要素属性: ブロックの末尾の {...} は要素全体に適用されます: - Built dashboards {.@frontend}。
フェンス付き div: ::: はブロック内容をラップします。子が 1 つの場合はラッパー div なし、複数の場合は自動で <div>。タグ名のプレフィックス: ::: footer {.text-center}。
::: {.grid .grid-cols-3}
- JavaScript
- TypeScript
:::
Frontmatter
YAML (---) または TOML (+++)。CLI フラグは常に優先されます。
| フィールド | 型 | デフォルト | 説明 |
|---|---|---|---|
css | string | string[] | なし | CSS パスまたはインライン (.css 接尾辞 = ファイル、それ以外はインライン) |
output | string | 入力ファイル名 | 出力パス/テンプレート ({view}、{lang}、{format}) |
pages | positive integer | クランプなし | 目標ページ数 |
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 キー): extends (デフォルト recommended、プリセット: recommended、minimal、strict、none)。ルール: missing-name、missing-contact、no-sections、no-entries、empty-bullet、long-bullet、single-bullet-section、unknown-fenced-div-tag、non-pt-font-size。
---
pages: 1
output: ./out/Jane_Smith-{view}
bullet-order: tag
style:
link-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
---
CLI
resumx <file> # Render (defaults to resume.md, PDF)
resumx init [filename] # Create template
⚠ 必ず required_permissions: ["all"] を指定して実行してください。 Playwright/Chromium は Cursor のサンドボックスによってブロックされるシステムコールを必要とします。これがない場合、レンダリングは「Chromium not found」で失敗します。
フラグ: --css <path> (繰り返し可能、カンマ区切り)、-o/--output <value>、-f/--format <pdf|html|docx|png> (繰り返し可能、カンマ区切り)、-s/--style <k=v> (繰り返し可能)、--for <name-or-glob> (タグ/カスタムビュー名、glob、または default)、-v/--var <k=v> (繰り返し可能)、--hide <list>、--pin <list>、--bullet-order <none|tag>、-l/--lang <bcp47> (繰り返し可能、カンマ区切り)、-p/--pages <n>、-w/--watch、--check (検証のみ)、--no-check、--strict、--min-severity <level>。
標準入力: cat resume.md | resumx または git show HEAD~3:resume.md | resumx -o old。
出力ファイル名: ビュー/言語なし → resume.pdf、ビューあり → resume-frontend.pdf、言語あり → resume-en.pdf、両方 → frontend/resume-en.pdf。テンプレート変数: {view}、{lang}、{format}。
スタイルオプション
style: または --style で上書きします。
- タイポグラフィ:
font-family、title-font-family、content-font-family、font-size(11pt)、line-height(1.4) - 色:
text-color、link-color、background-color - 見出し:
name-size、name-caps(small-caps/all-small-caps/petite-caps/unicase/normal)、name-weight、name-italic、name-color、section-title-size、section-title-caps、section-title-weight、section-title-italic、section-title-color、section-title-border、header-align、section-title-align、entry-title-size、entry-title-weight、entry-title-italic - リンク:
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) - 機能:
auto-icons(inline/none)
カスタム CSS
デフォルトの上にカスケードされます。参照: css: my-styles.css または --css。インライン: css: | h2 { letter-spacing: 0.05em; }。配列で混在:
css:
- base.css
- |
h2::after { content: ''; flex: 1; border-bottom: var(--section-title-border); }
バンドルされた @import モジュール: common/base.css (リセット、タイポグラフィ、レイアウト)、common/icons.css、common/utilities.css (.small-caps、.sr-only、.max-N)。
ページに収める
pages: N で自動フィットします。縮小順序 (目立たないものから): 1) 間隔 2) 行の高さ 3) フォントサイズ 4) マージン (最後の手段)。pages: 1 の場合、間隔は拡張して埋めます。
最小値: font-size 9pt、line-height 1.15、section-gap 4px、entry-gap 1px、page-margin-y 0.3in、page-margin-x 0.35in。pages: を設定すると、style: の値は縮小される可能性のある開始点となります。pages: がない場合は、そのまま適用されます。
アイコン
:icon-name: (組み込み)、:set/name: (Iconify、20万以上)、絵文字ショートコードをフォールバックとして使用。解決順序: Frontmatter > 組み込み > Iconify > 絵文字。
リンクの自動アイコン: 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: { auto-icons: none }。
カスタムアイコン: icons: { mycompany: '<svg>...</svg>', partner: 'https://example.com/logo.svg' }。
Tailwind CSS
Tailwind v4 がオンザフライでコンパイルされます。{.class} で適用: [React]{.bg-blue-100 .text-blue-800 .px-2 .rounded}。スパン、要素属性、フェンス付き div で動作します。任意の値: .text-[#ff6600]。組み込み: .small-caps、.sr-only、.max-1–.max-16。
タグ
{.@name} はコンテンツを対象読者向けにフィルタリングします。タグなしは常に通過します。タグ付きは一致するタグの場合にのみ表示されます。複数指定: {.@backend .@frontend}。レンダリング: --for frontend。
階層: / によるネスト({.@backend/node})。あるビューは祖先 + 自身 + 子孫 + タグなしを含み、兄弟は除外されます。--for backend/node → @backend + @backend/node + タグなし(@backend/jvm は含まない)。--for backend → すべての子孫 + タグなし。深さは無制限です。
コンポジション は frontmatter で指定します: fullstack: [frontend, backend]。階層は構成要素として機能し、系統は構成要素ごとに展開されます。再帰的な展開(startup-cto は fullstack を介して frontend/backend を含む)も可能です。タイプミスは候補を提示するエラーになります。
tags:
fullstack: [frontend, backend]
node-fullstack: [frontend, backend/node]
tech-lead: [backend, leadership]
startup-cto: [fullstack, leadership, architecture]
ビュー
タグ = 何を表示するか。ビュー = どのように表示するか。すべてのレンダリングはビューを使用します。
| 種類 | 場所 | 性質 |
|---|---|---|
| デフォルト | Frontmatter のレンダリングフィールド | 基本設定 |
| タグビュー | tags: の展開形式 | タグごとのオーバーライド、暗黙的 |
| カスタム | .view.yaml ファイル | アプリケーションごと |
| 一時的 | CLI フラグ | 一回限り |
タグビュー: すべてのタグが自動的にビューを生成します。展開形式ではレンダリングのオーバーライドを追加します。省略形 fullstack: [frontend, backend] = fullstack: { extends: [frontend, backend] }。
tags:
frontend:
sections: { hide: [publications], pin: [skills, projects] }
pages: 1
fullstack:
extends: [frontend, backend]
sections: { pin: [work, skills] }
pages: 2
カスタムビュー: .view.yaml ファイルで、再帰的に自動検出されます。フィールド: selects(含めるタグ)、sections、pages、bullet-order、vars、style、css、format、output。selects がない場合はすべてのコンテンツ、selects: [] はタグなしのみを表します。レンダリング: --for stripe-swe。バッチ: --for '*'/--for 'stripe-*'。--for default はデフォルトビュー(フィルタリングなし)を表します。組み合わせ: --for default,frontend。ビューに default という名前を付けないでください。
# 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'
一時的: CLI フラグをインラインで指定: resumx resume.md --for backend -v tagline="Stream Processing, Go" --pin skills,work -o stripe.pdf。
カスケード: 組み込みのデフォルト → デフォルトビュー → タグ/カスタムビュー → 一時的(CLI)。
テンプレート変数
{{ name }} プレースホルダー。vars:、カスタムビュー、または -v で定義します。未定義または空の場合、行は削除されます。値にはマークダウンを含めることができます。一致するプレースホルダーがない変数はエラーになります。
# Jane Doe
[email protected] | github.com/jane
{{ tagline }}
セクション
sections: { hide: [publications, volunteer], pin: [skills, work] }。hide は削除し、pin は指定順に先頭へ移動し、残りはソース順に続きます。値: work、education、skills、projects、awards、certificates、publications、volunteer、languages、interests、references、basics。CLI: --hide publications --pin skills,work。
多言語
{lang=xx}(BCP 47)。タグなしはすべてに表示されます。タグと組み合わせ: {lang=en .@backend}。フィルタ: --lang en または --lang en,fr。次元は掛け算になります: 2 言語 × 2 タグ = 4 つの PDF。
## [Experience]{lang=en} [Expérience]{lang=fr}
### Google
- [Reduced API latency by 60%]{lang=en}
[Réduction de la latence API de 60%]{lang=fr}
セマンティックセレクター
自動生成される HTML 属性: ヘッダー: [data-field='name|email|phone|profiles|location|url']、[data-network='github']。セクション: section[data-section='work|education|skills|projects|awards|certificates|publications|volunteer|languages|interests|references|basics'](あいまいなキーワード一致)。エントリ: .entries(コンテナ)、.entry(<article>)。日付: <time datetime="ISO8601">、.date-range。
Git 連携
エイリアスの設定(一度だけ):
git config alias.resumx '!f() { spec="$1"; shift; case "$spec" in *:*) ;; *) spec="$spec:resume.md";; esac; tag="${spec%%:*}"; header=$(git tag -l --format="%(refname:short)" "$tag" 2>/dev/null); subject=$(git tag -l --format="%(contents:subject)" "$tag" 2>/dev/null); [ -n "$header" ] && printf "\033[2m%s\033[0m\n\033[1m%s\033[0m\n\n" "$header" "$subject"; git show "$spec" | resumx "$@"; }; f'
アプリケーションにタグを付ける: git tag -a sent/stripe-2026-02 -m "Tailored for L5 infra, emphasized Kafka + distributed systems"。注釈付きタグはレンダリング前に名前と注記を出力します。
git resumx sent/stripe-2026-02:resume.md # 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
レジュメテンプレート
---
pages: 1
---
# Full Name
[email protected] | [linkedin.com/in/user](https://linkedin.com/in/user) | [github.com/user](https://github.com/user)
{{ tagline }}
## Education
### University Name || Sept 2019 - June 2024
_Degree Name_
- 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