# Resume Sensei

> Comprehensive resume builder, ATS optimizer, and career version assistant. Use this skill whenever the user asks to: - Write, review, format, or optimize a resume, CV, or professional profile. - Tailor a resume to a specific job description or target role. - Check ATS compatibility, calculate keyword match scores, or find missing skills. - Quantify achievements, rewrite experience bullets, or apply Google's X-Y-Z formula. - Parse or extract text from an uploaded resume (e.g., PDF, DOCX, TXT formats). - Generate, edit, or output Typst markup code for a resume. - Initialize the resume hub workspace ("initialize resume workspace", "start resume setup"). - Track job applications and manage different tailored resume versions. Use this skill even if the user does not explicitly name 'resume-sensei', as long as they provide a resume file, job description, or request updates to their work history.

- Skill: `kshanxs/resume-sensei` (Agent Skill, multi-file: 25 files)
- Install (CLI): `npx skillmds@latest add kshanxs/resume-sensei`
- Raw SKILL.md: https://api.skillmd.com/api/skills/kshanxs/resume-sensei/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Docs & Writing
- Author: kshanxs (https://skillmd.com/u/kshanxs)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/kshanxs/resume-sensei

---


# Resume Sensei

## Context Efficiency Rule (Lazy Loading)

**CRITICAL — Read this before loading reference files.**
This skill contains specialized guides to avoid context window bloat. Do NOT pre-load all references. Use **lazy loading** — only read a reference file using `view_file` when performing its specific workflow:

| Load this file... | When... |
| :--- | :--- |
| `references/ats_optimization.md` | Conducting ATS scoring, keyword matches, or auditing layout flags. |
| `references/bullet_writing.md` | Quantifying results, applying Google's X-Y-Z/STAR formulas, or drafting active verbs. |
| `references/formatting_and_sections.md` | Designing layout hierarchies, setting margins, or organizing page budgets. |
| `references/tailoring_and_versioning.md` | Customizing a resume to a target job description or setting up application trackers. |

Never load more than 1--2 reference files at a time.

---

## Core Workflows

### 1. Workspace Setup & Initialization
When the user requests to start a new resume project or "initialize the resume workspace," perform the following steps:
1.  Copy the entire `assets/resume-hub/` directory into the root of the user's active project directory.
2.  Maintain the folder structure:
    *   `/Master/Master_Resume.md` (The source of truth containing all experience history).
    *   `/Tailored/` (Folder where tailored versions for specific applications will reside).
    *   `/Applications/tracker.md` (The markdown file tracking sent resumes and statuses).
    *   `/Templates/template.typ` (Reusable Typst layout template defining styles and functions).
    *   `/Templates/resume.typ` (Typst resume entry point with actual experience and skills data).
    *   `/Templates/fonts/` (Mulish font files required for local compilation).
3.  Instruct the user to paste their existing resume into `Master/Master_Resume.md`, or assist them in compiling their information manually.

### 2. Ingestion & Reading Uploaded Resumes
If the user uploads an existing resume file:
*   **PDF files**: Use the native `view_file` tool to read the text. Note that standard text extraction can scramble multi-column resume layouts by merging columns horizontally. Verify the extracted content in `Master_Resume.md` matches the source structure. If it is garbled, prompt the user to copy-paste the text directly or provide a `.docx` or `.md` copy.
*   **DOCX files**: Run the custom python script:
    `python3 scripts/parse_resume.py <path_to_docx>`
    to extract structured text without external dependencies.
*   **TXT/MD/TEX files**: Read them directly using `view_file`.
*   *Action*: Convert the extracted data into clean markdown format and save it in `Master/Master_Resume.md` to establish the source of truth.

### 3. ATS Screening & Optimization
When the user provides a job description (JD) and wants to check their resume's match:
1.  Read `references/ats_optimization.md`.
2.  Extract required hard skills, soft skills, and domain terms from the JD.
3.  Cross-reference with the user's resume and calculate the keyword match score.
4.  Generate the **ATS Compatibility & Keyword Report** using the template defined in the reference.

### 4. Improving Bullets & Quantification
When the user wants to polish their bullets or add metrics:
1.  Read `references/bullet_writing.md`.
2.  Identify weak bullet points (e.g., passive language, missing results).
3.  Prompt the user with targeted metric-discovery questions if metrics are missing.
4.  Rewrite the bullets using Google's X-Y-Z or STAR formulas.
5.  Output a structured comparison showing the "Original," "Improved," and "Key Changes" for each bullet.

### 5. Tailoring and Version Control
When the user is applying for a specific job:
1.  Read `references/tailoring_and_versioning.md`.
2.  Analyze the target company's priorities and align the resume summary, skill ordering, and experience bullet hierarchy.
3.  Write the tailored resume source to `Tailored/[Role]/[LastName]_Resume_[Company]_[YYYY-MM].typ` (or markdown).
4.  Update `Applications/tracker.md` by appending a new row with the target details, matching file name, and setting status to `Applied`.

### 6. Typst Code Generation & Design Rules
When generating Typst resume source code:
1.  **Layout Style Selection**: Before exporting the `.typ` file, check if the user has a preference, or offer these choices:
    *   `style: "classic"` (Default): Solid colored header banner blocks with white text (vibrant, modern look).
    *   `style: "modern"`: Left-aligned minimalist headers with a thin colored bottom underline (clean, high-density traditional corporate/academic look).
2.  **Theme Color Selection**: Default to **Slate Grey** (`#4A5568`) or **Blue** (`#0F83C0`). Offer these recommended color choices (or let the user provide a custom brand hex color):
    *   Slate Grey: `#4A5568`
    *   Blue: `#0F83C0`
    *   Green: `#2EA043`
    *   Purple: `#8957e5`
3.  **Strict Typst Syntax Safety**: Follow Typst markup rules:
    *   **No LaTeX Escaping Needed**: Do NOT escape special characters like `&` or `%` or `$` unless they are layout directives.
    *   **Escape Underscores in Body Text**: Underscores `_` signify italics in Typst markup. To output a literal underscore in text (like `node_js` or variable names), escape it as `\_` (e.g., `node\_js`).
    *   **Imports**: Always use `#import "../Templates/template.typ": *` (if generating in a subfolder like `Tailored/SWE/`) or `#import "template.typ": *` (if generating in the Templates directory).
    *   **Section Formatting**: Invoke `section(title: "Section Title", content: (...subSections...))` and `subSection(...)` as defined in `template.typ`.
    *   **Trailing Commas on Arrays**: In Typst, single-element tuples must end with a trailing comma to be parsed as arrays, e.g. `content: (subSection(...),)`. Ensure you preserve trailing commas on all single-element arrays to prevent compiler crashes.
    *   **Lists**: Bullet points in a subSection's `content` block can use Typst bullet lists: `#list([bullet 1], [bullet 2])` or standard markdown bullet lists `* bullet` within content bracket blocks `[...]`.
4.  Ensure the generated Typst code contains no syntax errors, utilizes only standard functions defined in the template, and aligns exactly with margins and page constraints (maximum 2 pages).
5.  **Local Verification & Compilation**: Run `python3 scripts/compile_resume.py <path_to_typ>` to verify that the generated Typst compiles cleanly to a PDF. If no local Typst compiler is detected, provide clear fallback instructions to the user to compile online via the Typst App (https://typst.app).

