Skip to content
Back to skills

Jobhunt Pdf

ASecurity

Render a tailored CV or cover letter to a PDF and a markdown file - through LaTeX where a TeX engine is installed, through the browser otherwise. Use after a CV or letter has been built and someone needs the file to attach.

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

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-pdf --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Jobhunt Pdf?

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

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

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-pdf
description: >
  Render a tailored CV or cover letter to a PDF and a markdown file - through
  LaTeX where a TeX engine is installed, through the browser otherwise. Use
  after a CV or letter has been built and someone needs the file to attach.
allowed-tools: Bash, Read
---

# Render it

```bash
python3 pdf.py <run>/cv.yaml
python3 pdf.py <run>/letter.yaml --theme "#7b2ff7"   # the company's colour
python3 pdf.py <run>/cv.yaml --template plain        # a named LaTeX template
python3 pdf.py <run>/cv.yaml --template mine.tex     # your own
python3 pdf.py <run>/cv.yaml --browser               # force the browser
```

`--theme` takes `neutral`, `classic` (serif), or a hex colour. A posting's own
colour is read off its page and stored in `job.yaml` as `brand_color`.

## Which renderer runs

**LaTeX, if a TeX engine is installed.** That is the default and needs no
flag. It is what most people expect a CV to be set in, and a warm compile is
about a quarter of a second - several times faster than the browser.

**The browser, if there is no engine.** Not a failure and not silent: the
result says `"rendered": "browser"`, and you should pass that on. A machine
with Python and a browser remains enough to use this, which is the point of
the project - nothing here installs a toolchain for anybody.

Engines are looked for in this order: `tectonic`, `xelatex`, `lualatex`,
`pdflatex`, then MacTeX's and TeX Live's usual folders. `JOBHUNT_TEX` points
at one somewhere unusual. `JOBHUNT_BROWSER` does the same for the browser.

**`--template` is an instruction, not a preference.** Naming one that is not
installed fails rather than quietly falling back to the browser, because a
browser PDF is not what was asked for. A path must end in `.tex`; a built-in
name is one of `plain`, `plain-letter`.

## Two things worth knowing about LaTeX here

**The first tectonic run is slow** - it downloads its package bundle, which
took 104 seconds on the machine this was written on. Every run after is under
a second. If someone reports the first CV hanging, that is what it is; say so
rather than letting them kill it.

**The templates are deliberately plain.** `geometry`, `enumitem`, `xcolor`,
`hyperref`, `textcomp` - packages that ship with every TeX installation, so
the same template compiles under tectonic, xelatex, lualatex and pdflatex. A
template needing `fontawesome` or a bespoke class is a template that fails on
somebody else's machine. If you write one, keep to that.

## Two things worth knowing

## Two things worth knowing generally

**The markdown is written first, always.** If the PDF step fails - no browser,
or a browser that will not start - the markdown is still there and still
sendable. Say that rather than treating it as a failure, and **do not write the
markdown yourself as a workaround**: it is rendered from `cv.yaml`, and writing
it by hand hands the employers, titles and dates back to you.

**A document with no name does not become a file.** It exits 2 and says so.

Files in this skill

  • SKILL.md3 KB
  • pdf.py3.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.