Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,20 @@ name: resume-content-generation
description: Use when resume strategy is set and you need to write or revise the resume's actual content — the format-agnostic resume_content.md (YAML + Markdown) that both the PDF and web renderers consume. Covers the summary, experience bullets, skills, highlights, and ATS keyword integration. Not for strategy/positioning decisions (resume-strategy) or for rendering to PDF/web (resume-render-*).
---

> **Bundled reference files.** Paths in this skill beginning with `docs/` or
> `resumes/templates/` are bundled with the plugin. When the plugin is installed, read
> them under `${CLAUDE_PLUGIN_ROOT}/` (e.g. `${CLAUDE_PLUGIN_ROOT}/docs/knowledge/…`) — the
> variable expands to the plugin's install directory automatically. When working from the
> source repository the variable is unset, so read the same paths relative to the repo root
> (exactly as written). Files under `resumes/customized/`, `resumes/compiled/`, and
> `docs/PERSONAL_PROFILE.md` are working files in the **current project**, not bundled.
> **Bundled reference files.** Paths beginning with `docs/` or `resumes/templates/` are
> bundled with this skill package and resolve relative to the **package (repository) root** —
> read them exactly as written when working inside the repo. If your agent installs the package
> outside the working directory and exposes its install root via a variable (e.g. Claude Code's
> `${CLAUDE_PLUGIN_ROOT}/`), prepend that. Files under `resumes/customized/`,
> `resumes/compiled/`, and `docs/PERSONAL_PROFILE.md` are working files in the **current
> project**, not bundled.

You are an expert resume content generator specializing in transforming comprehensive personal profiles into targeted, compelling resume content.

**Core Responsibility:** Generate `resume_content.md` files (YAML frontmatter + Markdown) from `docs/PERSONAL_PROFILE.md` data and strategic guidance. The generated file is format-agnostic and consumed by both the PDF renderer (`resume-render-pdf` skill) and the web renderer (`resume-render-web` skill). Your job is to create excellent content with strategic emphasis; renderers handle format-specific presentation.

**Reference documents:**
- Personal profile schema: `.claude/skills/swiss-tech-resume-builder/references/personal_profile_schema.md`
- Personal profile schema: `.agents/skills/swiss-tech-resume-builder/references/personal_profile_schema.md`
- ATS optimization guidelines: `docs/knowledge/ats_optimization.md`
- Experience bullet budget & selection (shared with the reviewer): `docs/knowledge/experience_bullet_standards.md`
- Tone & register — Swiss understatement, evidence over adjectives (shared with the reviewer): `docs/knowledge/tone_and_register.md`
Expand All @@ -28,7 +28,7 @@ You are an expert resume content generator specializing in transforming comprehe

Every **metric, named technology, scope figure, job title, date, and outcome** you put in `resume_content.md` MUST be traceable to a specific statement in `docs/PERSONAL_PROFILE.md`. Never invent, inflate, or approximate a number; never introduce a technology, employer, team size, or responsibility the profile does not support. When the profile lacks a number that would strengthen a bullet, **surface the gap** — tell the user and append it to `docs/MISSING_INFORMATION.md` (the durable profile-gap ledger the `resume-profile-coach` skill owns; check it first so you don't duplicate an item) rather than filling it. A missing metric is acceptable, an invented one is not.

This is the same rule the reviewer (`resume-content-review` / `swiss-tech-resume-reviewer`) verifies, and a confirmed ungrounded claim is an automatic review **fail**. The full standard — definitions, examples, and gate consequences — lives in `docs/knowledge/grounding_and_truthfulness.md` and is the single source of truth; read it before generating, and do not restate or soften it here. Reframing, emphasis, ATS-aligned wording, and responsibility→achievement transformation of **true** facts remain encouraged.
This is the same rule the reviewer (`resume-content-review`) verifies, and a confirmed ungrounded claim is an automatic review **fail**. The full standard — definitions, examples, and gate consequences — lives in `docs/knowledge/grounding_and_truthfulness.md` and is the single source of truth; read it before generating, and do not restate or soften it here. Reframing, emphasis, ATS-aligned wording, and responsibility→achievement transformation of **true** facts remain encouraged.

---

Expand Down Expand Up @@ -309,7 +309,7 @@ When targeting Swiss positions, ensure:

## Revision Mode

When given reviewer feedback alongside an existing `resume_content.md` path (e.g., from the swiss-tech-resume-reviewer), **revise that file in place** rather than regenerating from scratch. Steps:
When given reviewer feedback alongside an existing `resume_content.md` path (e.g., from `resume-content-review`), **revise that file in place** rather than regenerating from scratch. Steps:

1. Read the existing `resume_content.md` carefully.
2. Read the reviewer feedback (content gaps, missing keywords, bullet improvements, reordering suggestions, quantification opportunities).
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,35 @@
---
name: resume-content-review
description: Review resume content (resume_content.md, or a rendered PDF's extracted text) for the Swiss tech market — ATS keyword match, content quality, and Swiss conventions — returning a structured verdict with a numeric rating. Use to gate resume content before or after rendering.
context: fork
metadata:
preferred-model: opus
---

> **Bundled reference files.** Paths in this skill beginning with `docs/` are bundled with
> the plugin. When the plugin is installed, read them under `${CLAUDE_PLUGIN_ROOT}/` (e.g.
> `${CLAUDE_PLUGIN_ROOT}/docs/knowledge/…`) — the variable expands to the plugin's install
> directory automatically. When working from the source repository the variable is unset,
> so read the same paths relative to the repo root (exactly as written).
> `docs/PERSONAL_PROFILE.md` is a working file in the **current project**, not bundled.
> **Bundled reference files.** Paths beginning with `docs/` are bundled with this skill
> package and resolve relative to the **package (repository) root** — read them exactly as
> written when working inside the repo. If your agent installs the package outside the working
> directory and exposes its install root via a variable (e.g. Claude Code's
> `${CLAUDE_PLUGIN_ROOT}/`), prepend that. `docs/PERSONAL_PROFILE.md` is a working file in the
> **current project**, not bundled.

## Reviewer stance (run isolated / `context: fork`)

You are reviewing with **fresh eyes** content you did not write — run this skill in an isolated
or forked context (a subagent, a `context: fork` turn, or a clean `/skill:` invocation) so prior
generation reasoning does not bias the verdict. Prefer the strongest available model (Opus on
Claude Code); content review is a high-judgment gate.

Be deliberate about the **grounding pass** (criterion 8), because you are often handed only a
rendered PDF's extracted text: if `docs/PERSONAL_PROFILE.md` is readable, verify every quantified
claim and named technology/scope against it and apply the grounding override (a confirmed
ungrounded claim is an automatic `pass: false`, `rating ≤ 4.0`); if the profile is not available,
flag any implausibly precise or unverifiable claim as a High-priority weakness and recommend
confirming it against the profile.

**Output discipline:** return ONLY the structured verdict defined below — `rating`, `ats_match`,
`pass`, and a `feedback` list of specific, actionable items — and nothing else. Do **not** edit
any files; you are a reviewer.

## Role

Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,24 @@
---
name: resume-design-review
description: Review the visual design of a rendered resume (PDF or web) against the style guide, returning a structured verdict with a numeric rating. Use after rendering when layout, fonts, colors, or visual structure changed.
context: fork
metadata:
preferred-model: sonnet
---

> **Bundled reference files.** Paths in this skill beginning with `docs/` are bundled with
> the plugin. When the plugin is installed, read them under `${CLAUDE_PLUGIN_ROOT}/` (e.g.
> `${CLAUDE_PLUGIN_ROOT}/docs/style-guide/…`) — the variable expands to the plugin's install
> directory automatically. When working from the source repository the variable is unset,
> so read the same paths relative to the repo root (exactly as written).
> **Bundled reference files.** Paths beginning with `docs/` are bundled with this skill
> package and resolve relative to the **package (repository) root** — read them exactly as
> written when working inside the repo. If your agent installs the package outside the working
> directory and exposes its install root via a variable (e.g. Claude Code's
> `${CLAUDE_PLUGIN_ROOT}/`), prepend that.

## Reviewer stance (run isolated / `context: fork`)

You are reviewing the visual design of a rendered resume (PDF and/or web) with **fresh eyes** —
run this skill in an isolated or forked context (a subagent, a `context: fork` turn, or a clean
`/skill:` invocation). **Output discipline:** return ONLY the structured verdict defined below —
`rating`, `pass`, and a `feedback` list of specific, actionable design items — and nothing else.
Do **not** edit any files; you are a reviewer.

## Role

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@ name: resume-market-analysis
description: Research the Swiss tech job market for a target role — salary benchmarks, in-demand skills, ATS keywords, and competitive positioning. Use when analyzing a job posting or planning resume positioning for a Swiss tech position.
---

> **Bundled reference files.** Paths in this skill beginning with `docs/` are bundled with
> the plugin. When the plugin is installed, read them under `${CLAUDE_PLUGIN_ROOT}/` (e.g.
> `${CLAUDE_PLUGIN_ROOT}/docs/knowledge/…`) — the variable expands to the plugin's install
> directory automatically. When working from the source repository the variable is unset,
> so read the same paths relative to the repo root (exactly as written).
> **Bundled reference files.** Paths beginning with `docs/` are bundled with this skill
> package and resolve relative to the **package (repository) root** — read them exactly as
> written when working inside the repo. If your agent installs the package outside the working
> directory and exposes its install root via a variable (e.g. Claude Code's
> `${CLAUDE_PLUGIN_ROOT}/`), prepend that. `docs/PERSONAL_PROFILE.md` is a working file in the
> **current project**, not bundled.

# Resume Market Analysis

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,15 @@ name: resume-profile-coach
description: Build out, strengthen, and audit the user's PERSONAL_PROFILE.md through conversation. Use when a user wants to create, build, improve, or review their personal profile; when they hand over source material (performance reviews, employment references / Arbeitszeugnisse, a LinkedIn profile, past CVs) to capture their experience; or to spot gaps between their career goals and what their profile actually supports. Invoked during first-run setup and any time profile work is needed. This is the coaching/intake step that feeds the rest of the resume pipeline.
---

> **Bundled reference files.** Paths beginning with `docs/` are bundled with the plugin: read
> them under `${CLAUDE_PLUGIN_ROOT}/` when installed (auto-substituted), or relative to the repo
> root from source. The profile schema lives in a sibling skill — read it at
> `../swiss-tech-resume-builder/references/personal_profile_schema.md` relative to this skill's
> directory (it resolves inside the plugin in both modes). `docs/PERSONAL_PROFILE.md` and
> `docs/MISSING_INFORMATION.md` are working files in the **user's current project**, not bundled.
> **Bundled reference files.** Paths beginning with `docs/` are bundled with this skill
> package and resolve relative to the **package (repository) root** — read them exactly as
> written when working inside the repo. If your agent installs the package outside the working
> directory and exposes its install root via a variable (e.g. Claude Code's
> `${CLAUDE_PLUGIN_ROOT}/`), prepend that. The profile schema lives in a sibling skill — read it
> at `../swiss-tech-resume-builder/references/personal_profile_schema.md` relative to this
> skill's directory (it resolves inside the package in both modes). `docs/PERSONAL_PROFILE.md`
> and `docs/MISSING_INFORMATION.md` are working files in the **user's current project**, not
> bundled.

# Resume Profile Coach

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,12 @@ name: resume-render-pdf
description: Render an approved resume_content.md to a LaTeX moderncv PDF and compile it with XeLaTeX. Use when producing or fixing the PDF resume, or debugging moderncv compilation errors.
---

> **Bundled reference files.** Paths in this skill beginning with `docs/` or
> `resumes/templates/` are bundled with the plugin. When the plugin is installed, read them
> under `${CLAUDE_PLUGIN_ROOT}/` (e.g. `${CLAUDE_PLUGIN_ROOT}/resumes/templates/CV_template.tex`) —
> the variable expands to the plugin's install directory automatically. When working from
> the source repository the variable is unset, so read the same paths relative to the repo
> root (exactly as written). Files under `resumes/customized/` and `resumes/compiled/` are
> outputs written to the **current project**, not bundled.
> **Bundled reference files.** Paths beginning with `docs/` or `resumes/templates/` are
> bundled with this skill package and resolve relative to the **package (repository) root** —
> read them exactly as written when working inside the repo. If your agent installs the package
> outside the working directory and exposes its install root via a variable (e.g. Claude Code's
> `${CLAUDE_PLUGIN_ROOT}/`), prepend that. Files under `resumes/customized/` and
> `resumes/compiled/` are outputs written to the **current project**, not bundled.

## Role

Expand All @@ -33,7 +32,7 @@ These rules are MANDATORY — never deviate from them:

| Document | Purpose |
|---|---|
| `.claude/skills/resume-render-pdf/references/moderncv_technical_guide.md` | Technical reference for all moderncv commands, troubleshooting, and package compatibility — **consult first for any LaTeX question** |
| `.agents/skills/resume-render-pdf/references/moderncv_technical_guide.md` | Technical reference for all moderncv commands, troubleshooting, and package compatibility — **consult first for any LaTeX question** |
| `docs/style-guide/pdf/CV_STYLE_GUIDE.md` | Full design specification: typography, colors, layout, margins |
| `docs/style-guide/pdf/VISUAL_DESIGN_REFERENCE.md` | One-page quick-reference checklist for compliance checks |
| `docs/style-guide/pdf/LATEX_CODE_SNIPPETS.md` | Copy-paste boilerplate, section templates, experience entry templates |
Expand Down Expand Up @@ -78,7 +77,7 @@ Incorrect (do NOT do this):
Run the validation script from the repo root:

```bash
python3 .claude/skills/resume-render-pdf/scripts/validate_latex.py resumes/customized/{id}/{id}.tex
python3 .agents/skills/resume-render-pdf/scripts/validate_latex.py resumes/customized/{id}/{id}.tex
```

Fix all errors reported before proceeding. Common issues caught by validation:
Expand All @@ -92,7 +91,7 @@ Fix all errors reported before proceeding. Common issues caught by validation:
Run the compile script from the repo root:

```bash
bash .claude/skills/resume-render-pdf/scripts/compile_resume.sh resumes/customized/{id}/{id}.tex
bash .agents/skills/resume-render-pdf/scripts/compile_resume.sh resumes/customized/{id}/{id}.tex
```

The script runs XeLaTeX (two passes for cross-references) and reports errors. If compilation fails, diagnose the error message and fix the `.tex` file, then re-validate and re-compile.
Expand Down Expand Up @@ -132,7 +131,7 @@ rm -f resumes/customized/{id}/*.aux \
| Blank gap after section header | Blank line between `\section{}` and first entry | Remove blank line — no paragraph break after section headers |
| Missing `fontawesome` icons | Package not installed | Use `tlmgr install fontawesome` or omit icon |

For detailed troubleshooting, see `.claude/skills/resume-render-pdf/references/moderncv_technical_guide.md`.
For detailed troubleshooting, see `.agents/skills/resume-render-pdf/references/moderncv_technical_guide.md`.

---

Expand All @@ -152,7 +151,7 @@ Style guide compliance checks:
- Use `docs/style-guide/pdf/LATEX_CODE_SNIPPETS.md` for implementation templates.
- Use `docs/style-guide/pdf/VISUAL_DESIGN_REFERENCE.md` as a quick compliance checklist.

After rendering is complete and content-approved, design quality assurance is handled via the `resume-design-review` skill / `design-reviewer` agent.
After rendering is complete and content-approved, design quality assurance is handled via the `resume-design-review` skill (run isolated / forked).

**Iteration limits**: Up to 3 rounds of revisions per reviewer. If an issue cannot be resolved after 3 attempts, report to the user with: issue summary, attempts made, technical constraints, and recommendation.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,10 +3,10 @@
# Compile LaTeX resume using XeLaTeX and clean up build artifacts.
#
# Usage (run from the repository root):
# bash .claude/skills/swiss-tech-resume-builder/scripts/compile_resume.sh <path-to-tex-file>
# bash .agents/skills/swiss-tech-resume-builder/scripts/compile_resume.sh <path-to-tex-file>
#
# Example:
# bash .claude/skills/swiss-tech-resume-builder/scripts/compile_resume.sh \
# bash .agents/skills/swiss-tech-resume-builder/scripts/compile_resume.sh \
# resumes/customized/2025_11_10_company_role.tex
#
# Requirements:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,12 @@ name: resume-strategy
description: Plan resume content strategy for a Swiss tech role — positioning, section emphasis, and ATS keyword selection from market analysis plus the personal profile. Use after market analysis and before generating resume content.
---

> **Bundled reference files.** Paths in this skill beginning with `docs/` are bundled with
> the plugin. When the plugin is installed, read them under `${CLAUDE_PLUGIN_ROOT}/` (e.g.
> `${CLAUDE_PLUGIN_ROOT}/docs/knowledge/…`) — the variable expands to the plugin's install
> directory automatically. When working from the source repository the variable is unset,
> so read the same paths relative to the repo root (exactly as written).
> **Bundled reference files.** Paths beginning with `docs/` are bundled with this skill
> package and resolve relative to the **package (repository) root** — read them exactly as
> written when working inside the repo. If your agent installs the package outside the working
> directory and exposes its install root via a variable (e.g. Claude Code's
> `${CLAUDE_PLUGIN_ROOT}/`), prepend that. `docs/PERSONAL_PROFILE.md` is a working file in the
> **current project**, not bundled.

# Resume Strategy

Expand Down
Loading
Loading