resuml 1.18.0 → 1.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/README.md +43 -350
  2. package/package.json +1 -1
package/README.md CHANGED
@@ -1,5 +1,5 @@
1
- <h1 align="center">✨ Resuml</h1>
2
- <p align="center"><strong>Write your resume in YAML. Render it beautifully.</strong></p>
1
+ <h1 align="center">✨ resuml</h1>
2
+ <p align="center"><strong>Resume as code. YAML in, beautiful resume out.</strong></p>
3
3
 
4
4
  <p align="center">
5
5
  <a href="https://www.npmjs.com/package/resuml"><img src="https://img.shields.io/npm/v/resuml.svg" alt="npm version"></a>
@@ -9,305 +9,22 @@
9
9
  </p>
10
10
 
11
11
  <p align="center">
12
- <a href="https://www.buymeacoffee.com/leekbeds55j">
13
- <img src="https://cdn.buymeacoffee.com/buttons/v2/default-yellow.png" width="150" />
14
- </a>
12
+ <a href="https://resuml.app"><strong>👉 Try it in your browser at resuml.app</strong></a>
15
13
  </p>
16
14
 
17
15
  ---
18
16
 
19
- ### YAML in Beautiful resume out
17
+ ## Two ways to use it
20
18
 
21
- ```yaml
22
- # resume.yaml
23
- basics:
24
- name: Jane Smith
25
- label: Senior Software Engineer
26
- email: jane@example.com
27
- summary: >-
28
- Passionate engineer with 8+ years
29
- building scalable distributed systems.
30
- work:
31
- - name: Acme Corp
32
- position: Lead Engineer
33
- startDate: 2020-01-15
34
- highlights:
35
- - Reduced deploy time by 60%
36
- - Led team of 12 engineers
37
- ```
38
-
39
- ```bash
40
- resuml render --resume resume.yaml --theme stackoverflow --output resume.html
41
- ```
42
-
43
- Your YAML becomes a polished, professional resume — ready to share, print, or export to PDF.
44
-
45
- ---
46
-
47
- ## Why YAML?
48
-
49
- | | YAML | JSON |
50
- |---|---|---|
51
- | **Comments** | ✅ `# explain your choices` | ❌ Not supported |
52
- | **Multi-line strings** | ✅ `summary: >-` block syntax | ❌ Escape everything |
53
- | **Readability** | ✅ Clean, minimal syntax | ⚠️ Brackets & quotes everywhere |
54
- | **Diffing** | ✅ Clean git diffs | ⚠️ Noisy diffs |
55
- | **Compatibility** | ✅ Valid JSON Resume schema | ✅ Native |
56
-
57
- YAML is a superset of JSON — your resume stays fully compatible with the [JSON Resume](https://jsonresume.org/) ecosystem while being far more pleasant to write and maintain.
58
-
59
- ## Prerequisites
60
-
61
- - Node.js >= 20.0.0
62
- - npm >= 10.0.0
63
-
64
- ## Installation
65
-
66
- ```bash
67
- npm install -g resuml
68
- ```
69
-
70
- ## Quick Start
71
-
72
- 1. Create a YAML file for your resume (e.g., `resume.yaml`)
73
- 2. Validate your resume data:
74
- ```bash
75
- resuml validate --resume resume.yaml
76
- ```
77
- 3. Convert to JSON:
78
- ```bash
79
- resuml tojson --resume resume.yaml --output resume.json
80
- ```
81
- 4. Render with a theme:
82
- ```bash
83
- resuml render --resume resume.yaml --theme stackoverflow --output resume.html
84
- ```
85
-
86
- ## Commands
19
+ ### 🌐 [resuml.app](https://resuml.app) — the web app
87
20
 
88
- | Command | Description |
89
- |---------|-------------|
90
- | `validate` | Validate resume data against the JSON Resume schema |
91
- | `validate --ats` | Run ATS (Applicant Tracking System) compatibility analysis |
92
- | `tojson` | Convert YAML resume data to JSON format |
93
- | `render` | Render the resume using a specified theme |
94
- | `dev` | Start a development server with hot-reload |
21
+ Free, open source, no signup. Your resume data stays in your browser — we don't store or track anything. Write in YAML or use the form editor, pick from 300+ themes, check your ATS match against a job description, and export to PDF.
95
22
 
96
- ## Options
23
+ ### 🤖 With Claude Code / AI agents (MCP)
97
24
 
98
- | Option | Alias | Description |
99
- |--------|-------|-------------|
100
- | `--resume` | `-r` | Input YAML file(s) or directory |
101
- | `--output` | `-o` | Output file path |
102
- | `--theme` | `-t` | Theme to use for rendering |
103
- | `--port` | `-p` | Port for dev server (default: 3000) |
104
- | `--language` | | Language code for localization (default: `en`) |
105
- | `--debug` | | Enable debug mode for detailed errors |
106
- | `--ats` | | Run ATS compatibility analysis (with `validate`) |
107
- | `--jd` | | Path to job description file for keyword matching (with `--ats`) |
108
- | `--ats-threshold` | | Minimum ATS score (0-100); exits with code 1 if below |
25
+ resuml ships with a built-in [MCP server](https://modelcontextprotocol.io/) so Claude Code can read your resume, tailor it to a job description, check the ATS score, and render it — all from a chat.
109
26
 
110
- ## ATS Analysis
111
-
112
- Resumls built-in ATS (Applicant Tracking System) analysis helps ensure your resume passes automated screening. Fully offline and deterministic — no API keys or LLMs required.
113
-
114
- ### Quick Start
115
-
116
- ```bash
117
- # Basic ATS score
118
- resuml validate --resume resume.yaml --ats
119
-
120
- # Match against a specific job description
121
- resuml validate --resume resume.yaml --ats --jd job-description.txt
122
-
123
- # CI/CD gate: fail if score is below threshold
124
- resuml validate --resume resume.yaml --ats --ats-threshold 75
125
-
126
- # Machine-readable JSON output
127
- resuml validate --resume resume.yaml --ats --format json
128
- ```
129
-
130
- ### What It Checks
131
-
132
- The ATS engine runs 11 deterministic checks across 3 categories:
133
-
134
- **Contact Information**
135
- - Complete contact details (name, email, phone, city)
136
- - LinkedIn profile present
137
-
138
- **Content Quality**
139
- - Professional summary (length and presence)
140
- - Work highlights (minimum 2 per entry)
141
- - Action verbs (highlights start with strong verbs)
142
- - Quantified impact (numbers, percentages, metrics in highlights)
143
- - No first-person pronouns
144
-
145
- **Resume Structure**
146
- - Date consistency (no unexplained gaps > 6 months)
147
- - Skills populated (≥ 3 categories with keywords)
148
- - Education completeness
149
- - Essential sections present (basics, work, education, skills)
150
-
151
- ### Job Description Matching
152
-
153
- Provide a job description file to get keyword matching:
154
-
155
- ```bash
156
- resuml validate --resume resume.yaml --ats --jd job.txt
157
- ```
158
-
159
- The engine extracts keywords from the job description using TF-based ranking with stem matching, then compares them against your resume. You get:
160
- - **Match percentage** — how many JD keywords appear in your resume
161
- - **Matched keywords** — what you already cover
162
- - **Missing keywords** — what to consider adding
163
-
164
- ### Scoring
165
-
166
- | Score | Rating | Meaning |
167
- |-------|--------|-------------|
168
- | 90-100 | Excellent | Resume is well-optimized for ATS |
169
- | 75-89 | Good | Minor improvements possible |
170
- | 60-74 | Needs Work | Several issues to address |
171
- | 0-59 | Poor | Significant improvements needed |
172
-
173
- When a job description is provided, the final score is 60% generic checks + 40% keyword match.
174
-
175
- ### Multi-Language Support
176
-
177
- ATS checks support English and German, with language-specific action verb lists and pronoun detection. Use the `--language` flag:
178
-
179
- ```bash
180
- resuml validate --resume lebenslauf.yaml --ats --language de
181
- ```
182
-
183
- ## Compatible Themes
184
-
185
- Resuml supports themes from the JSON Resume ecosystem. Install a theme, then pass its name to `--theme`:
186
-
187
- ```bash
188
- npm install jsonresume-theme-stackoverflow
189
- resuml render --resume resume.yaml --theme stackoverflow
190
- ```
191
-
192
- | Theme | Install | Style |
193
- |-------|---------|-------|
194
- | [stackoverflow](https://github.com/francoislaberge/jsonresume-theme-stackoverflow) | `npm i jsonresume-theme-stackoverflow` | Clean, professional |
195
- | [elegant](https://github.com/mudassir0909/jsonresume-theme-elegant) | `npm i jsonresume-theme-elegant` | Modern, elegant |
196
- | [kendall](https://github.com/LinuxBozo/jsonresume-theme-kendall) | `npm i jsonresume-theme-kendall` | Minimal, classic |
197
- | [flat](https://github.com/erming/jsonresume-theme-flat) | `npm i jsonresume-theme-flat` | Flat design |
198
- | [onepage](https://github.com/aonemd/jsonresume-theme-onepage) | `npm i jsonresume-theme-onepage` | Single page |
199
-
200
- > Browse all themes at [jsonresume.org/themes](https://jsonresume.org/themes/) — any `jsonresume-theme-*` package works with resuml.
201
-
202
- ## Examples
203
-
204
- For detailed examples and usage instructions, see the [examples/README.md](examples/README.md) file.
205
-
206
- ## Example YAML Structure
207
-
208
- ```yaml
209
- basics:
210
- name: John Doe
211
- label: Software Engineer
212
- email: john@example.com
213
- summary: Experienced software engineer...
214
- location:
215
- city: San Francisco
216
- countryCode: US
217
- profiles:
218
- - network: GitHub
219
- url: https://github.com/johndoe
220
-
221
- work:
222
- - company: Tech Corp
223
- position: Senior Engineer
224
- startDate: 2020-01
225
- endDate: Present
226
- summary: Led development of...
227
- ```
228
-
229
- ## CI/CD: Auto-build on Push
230
-
231
- Use GitHub Actions to automatically rebuild your resume when you push changes:
232
-
233
- ```yaml
234
- # .github/workflows/resume.yml
235
- name: Build Resume
236
-
237
- on:
238
- push:
239
- paths: ['resume.yaml', 'resume/*.yaml']
240
-
241
- jobs:
242
- build:
243
- runs-on: ubuntu-latest
244
- steps:
245
- - uses: actions/checkout@v4
246
-
247
- - uses: actions/setup-node@v4
248
- with:
249
- node-version: 20
250
-
251
- - run: npm install -g resuml
252
- - run: npm install jsonresume-theme-stackoverflow
253
-
254
- # Validate and check ATS score (fails if below 75)
255
- - run: resuml validate --resume resume.yaml --ats --ats-threshold 75
256
-
257
- - run: resuml render --resume resume.yaml --theme stackoverflow --output resume.html
258
- - run: resuml tojson --resume resume.yaml --output resume.json
259
-
260
- - uses: actions/upload-artifact@v4
261
- with:
262
- name: resume
263
- path: |
264
- resume.html
265
- resume.json
266
- ```
267
-
268
- ## Node.js API Usage
269
-
270
- You can use resuml programmatically from Node.js:
271
-
272
- ```js
273
- import {
274
- processResumeData,
275
- loadResumeFiles,
276
- loadTheme,
277
- themeRender,
278
- analyzeAts
279
- } from 'resuml';
280
-
281
- // Load YAML files
282
- const { yamlContents } = await loadResumeFiles('resume.yaml');
283
- // Validate and merge
284
- const resume = await processResumeData(yamlContents);
285
- // Load a theme
286
- const theme = await loadTheme('stackoverflow');
287
- // Render HTML
288
- const html = await theme.render(resume, { locale: 'en' });
289
-
290
- // ATS analysis
291
- const atsResult = analyzeAts(resume, { language: 'en' });
292
- console.log(`ATS Score: ${atsResult.score}/100`);
293
-
294
- // With job description matching
295
- const jdResult = analyzeAts(resume, {
296
- language: 'en',
297
- jobDescription: 'Looking for a senior TypeScript developer...'
298
- });
299
- console.log(`Matched keywords: ${jdResult.keywords?.matched.join(', ')}`);
300
- ```
301
-
302
- See the CLI and API for more details.
303
-
304
- ## AI Agent Integration (MCP)
305
-
306
- Resuml includes a built-in [Model Context Protocol](https://modelcontextprotocol.io/) (MCP) server, making it the first resume tool with native AI agent support. Use it with Claude, GitHub Copilot, Cursor, or any MCP-compatible client.
307
-
308
- ### Setup
309
-
310
- Add to your Claude Desktop or MCP client config:
27
+ Add to your Claude Code config (`.claude.json` or via `claude mcp add`):
311
28
 
312
29
  ```json
313
30
  {
@@ -320,79 +37,55 @@ Add to your Claude Desktop or MCP client config:
320
37
  }
321
38
  ```
322
39
 
323
- Or run directly:
324
-
325
- ```bash
326
- resuml mcp
327
- ```
328
-
329
- ### Available Tools
40
+ Then ask Claude things like:
330
41
 
331
- | Tool | Purpose |
332
- |------|---------|
333
- | `resuml_init_resume` | Generate a starter YAML template |
334
- | `resuml_validate` | Validate resume YAML against JSON Resume schema |
335
- | `resuml_ats_check` | ATS analysis + job description keyword matching |
336
- | `resuml_render` | Render resume to HTML using a theme |
337
- | `resuml_list_themes` | List available themes and install status |
338
- | `resuml_export_pdf` | Export resume as PDF (requires Playwright) |
42
+ > "Tailor my resume at `resume.yaml` to this job description, hit ATS score ≥ 80, and render it with the stackoverflow theme."
339
43
 
340
- ### Resources
44
+ Claude will generate the YAML, validate it, iterate until the score clears, and render the final HTML. See **[DOCS.md](DOCS.md#ai-agent-integration-mcp)** for all tools, resources, and prompts.
341
45
 
342
- The MCP server exposes structured data agents can read:
343
-
344
- | Resource | URI | Description |
345
- |----------|-----|-------------|
346
- | JSON Resume Schema | `resuml://schema/json-resume` | Full schema reference with all sections and field types |
347
- | ATS Scoring Rubric | `resuml://docs/ats-scoring` | Scoring system, checks performed, and optimization tips |
348
- | Theme Catalog | `resuml://themes/catalog` | Available themes with descriptions and install status |
349
-
350
- ### Prompts
351
-
352
- Pre-built workflows for common tasks:
353
-
354
- | Prompt | Description |
355
- |--------|-------------|
356
- | `tailor-resume-to-jd` | Generate a tailored resume optimized for a specific job description |
357
- | `optimize-ats-score` | Analyze and improve an existing resume to maximize ATS score |
358
- | `review-resume` | Comprehensive review with ATS analysis and improvement suggestions |
46
+ ---
359
47
 
360
- ### Example Workflow
48
+ ## Or use the CLI
361
49
 
362
- Ask your AI assistant:
50
+ ```bash
51
+ npm install -g resuml
363
52
 
364
- > "Use the tailor-resume-to-jd prompt to create a resume for this job posting: [paste JD]. My name is Jane Smith, jane@example.com. I have 5 years of experience in TypeScript and React."
53
+ resuml validate --resume resume.yaml --ats --jd job.txt
54
+ resuml render --resume resume.yaml --theme stackoverflow --output resume.html
55
+ resuml pdf --resume resume.yaml --theme stackoverflow --output resume.pdf
56
+ ```
365
57
 
366
- The agent will:
367
- 1. Generate tailored resume YAML matching the job description keywords
368
- 2. Validate it against the JSON Resume schema
369
- 3. Run ATS analysis targeting score ≥ 75
370
- 4. Iterate until the score meets the target
371
- 5. Render the final result with a professional theme
58
+ **Minimal `resume.yaml`:**
372
59
 
373
- ## Troubleshooting
60
+ ```yaml
61
+ basics:
62
+ name: Jane Smith
63
+ label: Senior Software Engineer
64
+ email: jane@example.com
65
+ summary: >-
66
+ Engineer with 8+ years building scalable distributed systems.
67
+ work:
68
+ - name: Acme Corp
69
+ position: Lead Engineer
70
+ startDate: 2020-01-15
71
+ highlights:
72
+ - Reduced deploy time by 60%
73
+ - Led team of 12 engineers
74
+ ```
374
75
 
375
- ### Common Issues
76
+ Full CLI reference, Node.js API, ATS rubric, CI/CD setup, and every MCP tool live in **[DOCS.md](DOCS.md)**.
376
77
 
377
- 1. **Validation Errors**
378
- - Ensure your YAML follows the JSON Resume schema
379
- - Check for proper indentation in your YAML file
380
- - Verify all required fields are present
78
+ ---
381
79
 
382
- 2. **Theme Rendering Issues**
383
- - Make sure the theme is properly installed
384
- - Check if all required theme dependencies are installed
385
- - Try running with `--debug` flag for more information
80
+ ## Requirements
386
81
 
387
- 3. **Development Server Issues**
388
- - Ensure the specified port is available
389
- - Check if you have proper permissions to access the port
390
- - Try a different port if the default is blocked
82
+ - Node.js 20, npm ≥ 10
83
+ - Nothing else validation, ATS, rendering, and PDF all run locally
391
84
 
392
85
  ## Contributing
393
86
 
394
- Contributions are welcome! Please feel free to submit a Pull Request.
87
+ PRs welcome. See [DOCS.md](DOCS.md) for architecture and dev setup.
395
88
 
396
89
  ## License
397
90
 
398
- ISC
91
+ ISC. Support the project: <a href="https://www.buymeacoffee.com/leekbeds55j">☕ Buy me a coffee</a>.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "resuml",
3
- "version": "1.18.0",
3
+ "version": "1.19.0",
4
4
  "description": "Generate JSON resumes from YAML with theme support",
5
5
  "type": "module",
6
6
  "main": "./dist/api.js",