Skip to content
Back to skills

Jobhunt Profile

ASecurity

Turn a CV into profile.yaml, the single source of truth every other jobhunt skill reads, and report what is missing from it. Use when someone wants their CV read into a structured profile, or asks what is wrong with their profile.

  • 11 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 29, 2026
ai-agentspythonbashawsgitapi

Works with

  • api

Security analysis

A100/100

Pro scans all 2 files and shows the line behind each finding

Scanned September 29, 2026

npx -y skills add mohamedaminehamdi/job-hunter --skill jobhunt-profile --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Jobhunt Profile?

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

Security grade badge for Jobhunt Profile
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/mohamedaminehamdi-jobhunt-profile/badge)](https://www.skillsdirectory.com/skills/mohamedaminehamdi-jobhunt-profile)

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: jobhunt-profile
description: >
  Turn a CV into profile.yaml, the single source of truth every other jobhunt
  skill reads, and report what is missing from it. Use when someone wants their
  CV read into a structured profile, or asks what is wrong with their profile.
allowed-tools: Bash, Read, Write, Glob
---

# Build the profile

`profile.yaml` is the source of truth. Every other jobhunt skill reads it and
nothing may claim anything it does not contain. It is worth getting right once.

The script is next to this file - `${CLAUDE_PLUGIN_ROOT}/skills/jobhunt-profile/profile.py`
under a plugin install. No API key, no install, any Python 3.9+.

## Check what is there

```bash
python3 profile.py
```

Prints the profile's state as JSON and its problems on stderr. Exit 1 means
there is no profile, or something blocking is missing.

## Build one from a CV

1. Find the CV. `ls jobhunt/cv/` - if there is more than one, ask which.
2. Get the words out:

   ```bash
   python3 profile.py --cv jobhunt/cv/their-cv.pdf
   ```

   A `.docx`, `.md` or `.txt` is read for you. A **PDF is handed back** - open
   it with Read and work from what you see. You can read a PDF; the script
   cannot, and a bad PDF text extractor silently mangles a career.

3. Write `jobhunt/profile.yaml` from what you read. The shape:

   ```yaml
   personal:
     name: Ada
     surname: Lovelace
     headline: Data Engineer          # the one line under the name
     email: ada@example.com
     phone: "+49 170 0000000"         # quote it, or YAML reads it as a number
     city: Munich
     country: Germany
     github: https://github.com/ada   # full URLs, with the scheme
     linkedin: https://linkedin.com/in/ada
     website: ""
   summary: One or two sentences in their own voice.
   skills: [Python, dbt, Airflow]
   experience:
     - position: Data Engineer
       company: Acme
       start: "2021"                  # quote every date
       end: Present
       location: Munich, Germany
       industry: Logistics
       bullets:
         - Cut ETL runtime 35% by rewriting the dbt models.
       skills: [dbt, Airflow]
   education:
     - level: MSc
       institution: TU Munich
       field_of_study: Computer Science
       start: "2017"
       end: "2019"
       grade: "1.3"
       courses: [Distributed Systems]
   projects:
     - name: pipe
       description: A tiny scheduler.
       link: https://github.com/ada/pipe
       tech: [Python]
   certifications:
     - name: dbt Analytics Engineer
       issuer: dbt Labs
       year: "2023"
   languages:
     - name: English
       level: fluent
   ```

   Block style throughout, as above. `{name: X, level: Y}` on one line is
   valid YAML and this tool will not read it — it keeps a deliberately small
   subset so it can ship with nothing installed. It says so rather than
   guessing, but the error is avoidable.

4. Normalise and check:

   ```bash
   python3 profile.py --normalise
   ```

## The rules

- **Copy, do not improve.** Their bullets in their words. This is the material
  every later step draws on, and a bullet you invented here becomes a lie on a
  CV three steps later.
- **Bullets carry the weight.** They are the only thing the tailorer can use -
  it selects, reorders and rewords them, and cannot write new ones. A role with
  no bullets contributes nothing.
- **Skills are what fit is measured against.** List what the CV lists.
- **Quote every date and grade.** `end: 2026` reads back as an integer;
  `end: "2026"` is a date.
- **Leave it out rather than guess.** An empty field is honest. A guessed one
  is a claim they did not make.

## Then stop

When you have built a profile from a CV for the first time, **show them the
report and stop**. A model just read their career. They check it before
anything is built on it. Say that plainly.

Files in this skill

  • SKILL.md3.8 KB
  • profile.py2.2 KB

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.