Skip to content
Back to skills

Cv

BSecurity

Generate, adapt, and update CVs from structured data stored in cv_data.json. Triggers: "cv" | "generate cv" | "generate my cv" | "adapt cv" | "update cv" | "tailor cv" | "make my resume" | "update my resume" | "write my cv" | "adapt my resume for" | "tailor my cv for".

  • 9 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added September 23, 2026
developmentpythongobash

Security analysis

B85/100
  • highPerforms destructive filesystem operations
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro shows the line behind each finding and how to fix it

Scanned September 23, 2026

npx -y skills add Roxabi/roxabi-plugins --skill cv --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Cv?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Cv
[![Security: B — Skills Directory](https://www.skillsdirectory.com/api/skills/roxabi-roxabi-plugins/badge)](https://www.skillsdirectory.com/skills/roxabi-roxabi-plugins)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: cv
description: 'Generate, adapt, and update CVs from structured data stored in cv_data.json. Triggers: "cv" | "generate cv" | "generate my cv" | "adapt cv" | "update cv" | "tailor cv" | "make my resume" | "update my resume" | "write my cv" | "adapt my resume for" | "tailor my cv for".'
version: 0.1.0
allowed-tools: Read, Edit, Write, Bash, Glob, Grep
---

# 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 → present choice **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 `experiences` key with `title`/`dates`/`sections` fields, or user requests it.
3. Run:
```bash
python3 <plugin>/scripts/generate_cv.py --data ~/.roxabi-vault/cv/cv_data.json --lang <lang> --format <format> [--template cv_template_rich]
```
`--lang all` → one file per language (`cv_fr.md`, `cv_en.md`); `--lang fr` → `cv.md` (no suffix). `--format all` → md + html. Both `experience`/`experiences` keys accepted (aliased). Report output path(s).

## Phase 3 — Adapt

1. Read D. Gather job posting from $ARGUMENTS (URL or text); → ask userif missing: "Provide the job posting URL or paste the job description."
2. Analyze posting: extract requirements, skills, keywords.
3. Adapt CV: reorder experience → relevant roles; emphasize matching skills; adjust summary → target role. ¬fabricate experience.
4. Write adapted data + generate (tempfile per `${CLAUDE_PLUGIN_ROOT}/../shared/references/tempfile-convention.md`):
```bash
COMPANY_SAFE=$(echo "$COMPANY" | tr -c '[:alnum:]-' '-' | head -c 40)
TMPDIR=$(mktemp -d -t "cv-adapt-${COMPANY_SAFE}-XXXXXX")
trap 'rm -rf "$TMPDIR"' EXIT
ADAPTED="$TMPDIR/adapted.json"
# write adapted JSON → "$ADAPTED"
python3 <plugin>/scripts/generate_cv.py --data "$ADAPTED" --output ~/.roxabi-vault/cv/adapted/cv_<company>_<date>.<format> --format <format>
```
5. Report changes + output path.

## Phase 4 — Update

Read D → present structure → present choice **Experience** | **Skills** | **Education** | **Personal info** → apply changes → validate JSON.

## Vault Integration (Optional)

```bash
test -f ~/.roxabi-vault/vault.db && echo "VAULT_AVAILABLE" || echo "NO_VAULT"
```
VAULT_AVAILABLE → after generate/adapt: index output file with `category=cv` + type tag.

$ARGUMENTS

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.