cvlisted
Install: claude install-skill Roxabi/roxabi-plugins
# CV
Generate professional CVs from structured data. Adapt them for specific job postings. Update the master data file.
Let:
V := ~/.roxabi-vault/cv/ — plugin data root
D := V/cv_data.json — master CV data
G := V/generated/ — generated CVs
A := V/adapted/ — job-adapted CVs
T := <plugin>/templates/ — Jinja2 templates
S := <plugin>/scripts/generate_cv.py — generation script
C := ~/.roxabi-vault/config/cv.json — plugin config
## Self-Check
1. Verify D:
```bash
test -f ~/.roxabi-vault/cv/cv_data.json && echo "OK" || echo "MISSING"
```
¬D → "No cv_data.json found. Run /cv-init to set up the CV plugin." Halt.
2. Verify Jinja2:
```bash
python3 -c "import jinja2" 2>/dev/null && echo "OK" || echo "MISSING"
```
¬jinja2 → "Jinja2 is required. Install with: pip install jinja2". Halt.
## Phase 1 — Determine Intent
Parse $ARGUMENTS:
| Intent | Signal | Action |
|--------|--------|--------|
| **Generate** | "generate", "create", "build", no args | Generate CV from D |
| **Adapt** | "adapt", "tailor", "for [job]", URL or job description | Adapt CV for role |
| **Update** | "update", "add", "change", "edit" | Modify D |
Ambiguous → → DP(A) **Generate** | **Adapt** | **Update**
## Phase 2 — Generate
1. Read D. Determine format (md/html/all) and language (fr/en/all) from args or C. Default: C values.
2. Template: default `cv_template`; use `cv_template_rich` if D has `experie