Synthèse automatique
Importe un CV existant (PDF, markdown ou texte collé) dans les fichiers de données structurées du dépôt, via une fusion additive qui préserve le contenu déjà présent.
Points forts
- La fusion additive n'efface ni n'écrase le contenu édité par l'utilisateur : les imports successifs s'accumulent sans perte.
- Accepte plusieurs formats d'entrée (PDF lu nativement, .md, .txt, texte collé) et cherche aussi le fichier dans files/.
- Détecte la langue du CV à partir des titres de sections (anglais, allemand, français, néerlandais, espagnol) pour la suite du traitement.
- Laisse des marqueurs TODO explicites pour les champs rarement présents sur un CV, comme la rémunération ou la disponibilité.
Limites
- Suppose une arborescence data/ déjà définie (profile.md, skills.md, projects/*.md) : peu réutilisable en dehors de ce type de dépôt.
- L'extraction repose sur l'analyse du texte brut par le modèle, sans parsing ni validation déterministe décrits.
- Les droits d'écriture sont restreints à data/** : le skill ne peut pas corriger ni créer de fichiers ailleurs.
À utiliser lorsque vous tenez un dépôt de données de carrière structurées et souhaitez intégrer un CV ancien ou récent sans perdre les éditions précédentes.
À éviter pour reformater un CV de façon ponctuelle, générer un CV from scratch ou travailler dans un dépôt qui n'a pas l'arborescence data/ attendue.
Analyse de sécurité
SûrThe skill only reads user-provided CV files and writes/edits files under data/**. It does not use shell, network, or destructive commands, and has no exfiltration paths. The main theoretical risk is prompt injection from CV text, but the allowed toolset limits impact to local data edits.
Aucun point d'attention détecté
Comment cette analyse est faiteExemples
/import-cv files/cv-2024.pdf — merge it into the data files, don't delete anything that's already there./import-cv paste — I'll paste my CV text next, please extract and merge it into data/./import-cv ~/docs/cv-2018.md and merge it on top of the current data/ files, keeping my existing edits.name: import-cv description: Import an existing CV into structured data files — additive merge with existing data, can be run repeatedly argument-hint: <path-to-cv-or-paste> user-invocable: true allowed-tools: Read(), Glob(), Grep(*), Write(data/), Edit(data/)
Import CV — Extract and Merge CV Data into Structured Files
Import professional experience from an existing CV (PDF, markdown, or pasted text) into the repository's structured data files. Designed to be run multiple times — each import merges with existing data rather than overwriting it.
Core Principle: Additive Merge
This skill never destroys data. When run against a repository that already has data files:
- New data gets added — new projects, skills, certifications get created
- Existing data gets enriched — missing fields filled in, thin descriptions expanded
- Nothing gets deleted — a project from a previous import that isn't on the new CV stays untouched
- User-edited content is preserved — if a TODO marker was replaced with real content, don't overwrite it with a new TODO
This means a user can safely import an old 2018 CV first, then a newer 2024 CV, and the data accumulates correctly.
Arguments
$ARGUMENTS(optional): Path to a CV file (PDF,.md, or.txt). If omitted or "paste", ask the user to paste their CV text into the conversation.
Instructions
Step 1: Parse Input
-
If
$ARGUMENTSis a file path:- Check if the file exists. If not, also check under
files/(the convention for dropped input files). - Read the file. For PDFs, use the Read tool (it handles PDFs natively). For large PDFs (>10 pages), read in page chunks.
- Store the content as
CV_TEXT.
- Check if the file exists. If not, also check under
-
If
$ARGUMENTSis empty or "paste":- Ask the user to paste their CV text.
- Wait for the response and store as
CV_TEXT.
-
Detect language: Scan section headers and body text. Common header patterns — English: "Summary", "Experience", "Projects", "Skills", "Education"; German: "Kurzprofil", "Berufserfahrung", "Projekterfahrung", "Fachkenntnisse", "Ausbildung"; French: "Compétences", "Expérience", "Formation"; Dutch: "Vaardigheden", "Werkervaring", "Opleiding"; Spanish: "Habilidades", "Experiencia", "Formación"; other languages: infer from content. Note the language for later use but don't block on it.
Step 2: Load Existing Data
Read all current data files to establish the merge baseline. Read these in parallel:
data/profile.mddata/skills.mddata/certifications.mddata/education.mddata/companies.mddata/project-index.md- All files in
data/projects/*.md
If files don't exist (first run on a clean repo), that's fine — start from empty for those sections.
Step 3: Extract and Merge
Parse CV_TEXT and merge with existing data for each file type below. For every field, apply the merge rule: new data fills gaps, enriches thin content, and never overwrites user-edited content.
3a: Profile (data/profile.md)
Extract and merge into this structure:
# Profile
- **Name:** [full name including academic titles]
- **Born:** [date/location if available]
- **Title:** [professional title/headline]
- **Company:** [own company, if applicable]
- **Address:** [if available]
- **Mobile:** [if available, or <!-- TODO: Add phone number -->]
- **E-Mail:** [if available, or <!-- TODO: Add email -->]
<!-- If the CV indicates freelance/self-employed status, add: -->
<!-- - **Independent since:** [year] -->
## Compensation
<!-- TODO: Add your compensation structure. Rarely on CVs — fill this in manually.
Use whichever section applies:
### Freelance / Contract
- **Daily:** [currency]XXX
- **Hourly:** [currency]XXX
### Employment
- **Salary expectation:** [currency]XXX,XXX/year
-->
## Languages
- **[Language]:** [Proficiency level]
## Availability
<!-- TODO: Describe your availability and work model preference -->
Merge rules:
- If profile.md already exists with real content in a field, keep it
- If profile.md has a TODO and the CV provides the data, replace the TODO
- If profile.md doesn't exist, create it with what the CV provides + TODOs for the rest
- Compensation and availability are almost never on CVs — create TODO sections unless they're already filled in
3b: Skills (data/skills.md)
Extract skills and group by category using this table format:
# Skills
## [Category Name]
| Skill | Experience | Self-Rating |
|---|---|---|
| [Skill] | [X+ years] | [Expert/Advanced/Intermediate] |
Categories (adjust to match the candidate's actual skill domains — these are suggestions):
- Cloud & Infrastructure
- Development — Backend
- Development — Frontend
- Data
- DevOps & Tooling
- Soft Skills & Methods
- [Domain-specific, e.g., "Healthcare", "Finance & Banking", "Design & UX"]
Merge rules:
- Add new skills not already in the file
- If a skill already exists with a higher experience level, keep the higher one
- If the CV shows more years than the existing entry, update the years
- If Self-Rating is
—(unrated) and the CV doesn't provide a rating, leave it as— - Never remove a skill that exists in the file but isn't on the new CV
Experience estimation: If the CV doesn't list years per skill but does list project dates, estimate experience from the span of projects using that skill. Mark estimates: 3+ years <!-- estimated from project dates -->.
3c: Certifications (data/certifications.md)
Extract into the table format grouped by vendor:
# Certifications
## [Vendor Name]
| Certification | Exam Code | Earned | Expires | Status |
|---|---|---|---|---|
| [Name] | [Code] | [Date] | [Date] | [Status] |
Merge rules:
- Add new certifications not already listed
- If a cert already exists, update fields that are missing (e.g., add an expiry date)
- Never remove an existing certification
- If dates are missing from the CV, use
<!-- TODO: Add date --> - If no certifications are found and the file doesn't exist, create it with a placeholder:
# Certifications
<!-- No certifications found in the imported CV. Add yours here:
## Vendor Name
| Certification | Exam Code | Earned | Expires | Status |
|---|---|---|---|---|
| Cert Name | CODE | DD Mon YYYY | DD Mon YYYY | Active |
-->
3d: Education (data/education.md)
Extract into the structured format:
## [Degree Name]
- **Institution:** [name]
- **Period:** [MM/YYYY – MM/YYYY]
- **Final grade:** [if available]
- **Majors:** [if available]
- **Thesis:** [if available]
For non-English degrees, add English equivalents in parentheses. Research the degree system of the candidate's country to provide accurate equivalencies — e.g. German "Diplom [Subject] (Master's equiv.)", French "Licence (Bachelor's equiv.)", Dutch "Doctoraal (Master's equiv.)", Japanese "学士 Gakushi (Bachelor's equiv.)".
Merge rules:
- Add new education entries not already listed (match by institution + degree)
- Enrich existing entries with missing fields
- Never remove existing entries
3e: Companies (data/companies.md)
Only relevant if the CV indicates freelance/self-employed status, own business entities, or founding/co-founding a company.
## [Company Name]
- **Type:** [LLC / Inc. / Ltd / GmbH / BV / Pty Ltd / S.A. / Sole Trader / etc.]
- **Period:** [Founded YYYY – active/liquidated]
- **Location:** [Country/city]
- **Purpose:** [one sentence]
Merge rules:
- Add new companies not already listed
- Enrich existing entries
- If self-employed status is clear but no company details on CV, create a TODO entry
3f: Projects (data/projects/*.md)
This is the most important extraction. For each engagement/project on the CV, create or enrich a project file.
File naming: Slug from client name or project name — lowercase, hyphens for spaces, no special characters. Examples: acme-corp.md, flagship-project.md, summer-internship.md.
Target structure per file:
# [Project Title]
- **Period:** [MM/YYYY – MM/YYYY or "ongoing"]
- **Role:** [role title(s)]
- **Client:** [client name]
- **Industry:** [industry category]
- **Location:** [Country (CODE)]
- **Type:** [flagship | consulting | contract | co-founded | internship | employment | side-project]
## Description
[1-3 paragraphs]
## Responsibilities
- [bullet points]
## Key Achievements
- [bullet points, or TODO if not extractable]
## Technologies
[comma-separated list]
## Tags
[lowercase, hyphenated tags]
Type classification:
- External consultant/advisor →
consulting - Specific contract/project work →
contract - Permanent or full-time employment →
employment - Co-founded or CEO/founder →
co-founded - Explicitly an internship →
internship - Personal/hobby/side venture →
side-project
Note:
flagshipis also a valid type (the candidate's single most significant role — typically multi-year, high-impact, central to professional identity), but never auto-assign it during import. Only the candidate can decide which project (if any) deserves this label. Mention it in Next Steps instead.
Merge rules — the key logic:
- Match existing projects by client name + overlapping period. If a project file already exists for the same client and the periods overlap, this is the same project — enrich it.
- Enriching means: add missing responsibilities, fill in blank descriptions, add technologies the CV mentions that the file doesn't have, update tags. Never remove content that's already there.
- New projects (no matching file) get a new file created.
- Projects in existing files but not on this CV are left completely untouched — they came from a previous import or were added manually.
- Key Achievements are rarely on CVs in detail. If the file already has achievements, keep them. If not, add a TODO:
## Key Achievements
<!-- TODO: Add 2-3 key achievements. Think about:
- What measurable impact did you have?
- What problems did you solve?
- What would have happened without you?
-->
3g: Project Index (data/project-index.md)
Regenerate entirely from all project files (both existing and newly created). Read every file in data/projects/ and compile the index in reverse-chronological order.
# Project Index
> Overview of all projects. For full details, see individual files in `data/projects/`.
## [filename].md
- **Period:** [from project file]
- **Role:** [from project file]
- **Client:** [from project file]
- **Industry:** [from project file]
- **Location:** [from project file]
- **Type:** [from project file]
- **Technologies:** [from project file]
- **Tags:** [from project file]
This is the one file that gets fully rewritten (not merged) because it's derived entirely from the project files.
Step 4: Write Files
Write all merged files. Go through them in this order:
data/profile.mddata/skills.mddata/certifications.mddata/education.mddata/companies.md(if applicable)- Each
data/projects/<slug>.md(new or enriched) data/project-index.md(regenerated)
For files that already exist and are being enriched, use Edit where surgical changes suffice, or Write for larger rewrites. For new files, use Write.
Step 5: Report
After all files are written, present a summary:
## Import Complete
**Source:** [filename or "pasted text"] ([language detected])
### Changes
- **Profile:** [created | updated N fields | unchanged]
- **Skills:** [N new skills added, M updated | file created with N skills]
- **Certifications:** [N new certs added | file created with N certs | no certs found]
- **Education:** [N entries added | unchanged]
- **Companies:** [N entries added | skipped (not freelancer) | unchanged]
- **Projects:** [N new projects created, M existing projects enriched]
- **Project index:** Regenerated ([total] projects)
### TODO Items
[count] items need manual attention:
- `data/profile.md` — compensation, availability
- `data/projects/[name].md` — key achievements (×N projects)
- [etc.]
### Next Steps
- Fill in TODO items (highest impact: compensation and key achievements)
- Review your projects — if one stands out as your anchor (multi-year, high-impact, central to your identity), mark its type as `flagship`
- Import another CV to enrich further: `/import-cv path/to/another-cv.pdf`
- Discover your professional identity: `/extract-identity`
- Generate your first CV: paste a job ad and ask for a targeted resume
Du fichier au premier essai
Le téléchargement contient exactement le contenu affiché sur cette fiche. Cette copie peut différer de la dernière version du dépôt source.
Consulter la source et ses fichiers annexesCe téléchargement contient uniquement SKILL.md. Les scripts, références, modèles et dépendances éventuels ne sont pas inclus. Récupérez les fichiers nécessaires depuis la source en conservant leur arborescence avant de poursuivre.
1. Télécharger le fichier
Télécharger SKILL.mdDepuis la racine d’un projet de test, enregistrez le fichier sous .skill-downloads/import-cv-merge-cv-data-mrwakcnb/SKILL.md, ou utilisez la commande suivante. Ce dossier sert à examiner la skill avant son installation.
Commande pour macOS/Linux ou WSL : un shell POSIX et curl sont nécessaires. Sous Windows sans WSL, utilisez le bouton de téléchargement et créez le dossier manuellement.
mkdir -p '.skill-downloads/import-cv-merge-cv-data-mrwakcnb' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/import-cv-merge-cv-data-mrwakcnb/download' --output '.skill-downloads/import-cv-merge-cv-data-mrwakcnb/SKILL.md.part' && mv '.skill-downloads/import-cv-merge-cv-data-mrwakcnb/SKILL.md.part' '.skill-downloads/import-cv-merge-cv-data-mrwakcnb/SKILL.md'2. Vérifier les prérequis
Lisez SKILL.md avant de l’utiliser. Si le fichier cite des scripts ou services externes, examinez-les et préparez les accès nécessaires dans votre environnement de test.
Outils déclarés par l’auteur (à vérifier dans votre agent) : Read(*), Glob(*), Grep(*), Write(data/**), Edit(data/**)
Aucune section de prérequis reconnue dans ce fichier. Cela ne signifie pas qu’il est autonome : les bibliothèques, outils et accès peuvent être cités ailleurs dans le contenu ou dans le dépôt source.
Les plateformes de la fiche sont des indications du catalogue. Les chemins ci-dessous suivent la documentation des outils ; ils ne prouvent pas que cette skill y a été exécutée. Aucune version minimale de ces outils n’est attestée pour cette fiche.
3. Charger la skill
Après vérification, copiez le dossier complet dans le projet avec l’une des commandes ci-dessous, puis ouvrez une nouvelle session de l’outil. La commande s’arrête si un dossier du même nom existe déjà : comparez les fichiers avant de le remplacer.
Claude Code
test -f '.skill-downloads/import-cv-merge-cv-data-mrwakcnb/SKILL.md' && test -s '.skill-downloads/import-cv-merge-cv-data-mrwakcnb/SKILL.md' && mkdir -p '.claude/skills' && test ! -e '.claude/skills/import-cv' && cp -R '.skill-downloads/import-cv-merge-cv-data-mrwakcnb' '.claude/skills/import-cv'OpenSkills
OpenSkills doit déjà être installé. La procédure locale install/read est contrôlée avec OpenSkills 1.5.0, qui exige Node.js ≥ 20.6.0. Aucun slug du catalogue n’est résolu automatiquement.
Installation officielle d’OpenSkillsopenskills install './.skill-downloads/import-cv-merge-cv-data-mrwakcnb'openskills read 'import-cv-merge-cv-data-mrwakcnb'La lecture doit afficher le contenu du fichier installé et son dossier de base. Elle ne lance ni la skill ni ses dépendances.
Pour un agent qui lit AGENTS.md, synchronisez ensuite l’index. Cette commande modifie AGENTS.md : relisez le diff avant de l’utiliser.
openskills syncMode manuel ou autre outil : joignez SKILL.md à une conversation, ou ouvrez-le dans un agent capable de lire les fichiers. Ajoutez les ressources annexes nécessaires. Il n’existe pas de dossier universel reconnu par tous les outils.
4. Faire un premier essai
Utilisez une entrée courte et fictive : un endpoint d’API, un petit document ou un brief d’interface. Dans une nouvelle conversation, joignez le fichier ou donnez son chemin à l’agent, puis adaptez cette demande :
Lis .skill-downloads/import-cv-merge-cv-data-mrwakcnb/SKILL.md et applique ses instructions à cet exemple : [décrire une entrée de test]. Indique les fichiers, dépendances ou accès qui manquent. Produis le résultat demandé par la skill sans inventer de données ni exécuter de script non examiné.Résultat attendu : une sortie correspondant aux instructions de la skill, ou une liste précise des prérequis manquants. Une simple confirmation de lecture ne valide pas le premier usage. Si une ressource externe est indisponible, ce parcours reste à tester.
Lecteur PDF
Productivite
Lit et extrait le texte de fichiers PDF (rapports, contrats, tableurs). Gère les fichiers locaux, les URL et les pièces jointes WhatsApp. Utilisez-le dès qu'un contenu PDF est nécessaire, même sans demande explicite.
Workflows de messagerie Discord
Productivite
Utilisez l'outil message pour envoyer, modifier et modérer des messages Discord avec des composants interactifs.
Aperçu interactif des verdicts
Productivite
Générer un aperçu HTML interactif des verdicts (garder/supprimer) pour la revue par le mainteneur, puis traiter le JSON de retour.