Skip to content
Agentmart
Submit a tool

make-pdf

Turn a markdown file into a publication-quality PDF — cover page, clickable table of contents with page numbers, running headers, page numbers, curly quotes…

Skill by sejas

IndexedMIT★ 2
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/sejas-make-pdf

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Turn a markdown file into a publication-quality PDF — cover page, clickable table of contents with page numbers, running headers, page numbers, curly quotes, syntax-highlighted code, optional DRAFT watermark. Use when asked to "make a PDF", "export to PDF", "turn this markdown into a PDF", or "generate a document".

Use cases: documents

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found
Runs as
Python package

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/make-pdf

Tools it pre-approves 3

From allowed-tools in SKILL.md: the agent may use these without asking you each time.

  • Bash,
  • Read,
  • AskUserQuestion

What's inside

Skill name
make-pdf
Description
Turn a markdown file into a publication-quality PDF — cover page, clickable table of contents with page numbers, running headers, page numbers, curly quotes, syntax-highlighted code, optional DRAFT watermark. Use when asked to "make a PDF", "export to PDF", "turn this markdown into a PDF", or "generate a document".
License
MIT
Allowed tools
Bash,, Read,, AskUserQuestion
Instructions
47 lines in SKILL.md · view on GitHub

Before installing

  • Ships executable scripts
  • Pre-approves some shell commands

Files (2)

  • SKILL.md
  • md2pdf.py

SKILL.md (first lines)

# make-pdf

```bash
uv run --quiet --with weasyprint --with markdown --with pygments \
  ~/.claude/skills/make-pdf/md2pdf.py INPUT.md
```

Writes `INPUT.pdf` next to the input and prints the path. Then `open` it, or read it
back with the Read tool to check the result before handing it over.

## Options

| Flag | Effect |
|---|---|
| `-o OUT.pdf` | Output path (default: input path with `.pdf`) |
| `--title` / `--subtitle` / `--author` | Override the cover; otherwise taken from YAML front matter, then the first `# H1`, then the filename |
| `--draft` | Diagonal DRAFT watermark on every page |
| `--no-cover` | Skip the cover page |
| `--no-toc` | Skip the table of contents |

Front matter (`title`, `subtitle`/`description`, `author`, `date`) is consumed for the
cover and stripped from the body. A leading `# H1` that repeats the title is dropped so
the cover doesn't say it twice.

## Gotchas

- **Needs `uv` and Homebrew `pango`.** WeasyPrint links against pango at runtime; without
  it the import fails with a `libgobject`/`libpango` load error — fix with `brew install pango`.
  `uv run --with` builds a cached ephemeral env, so nothing is installed globally and the
  first run takes ~10s, later ones ~2s.
- **WeasyPrint, not headless Chrome, on purpose.** Running headers, `counter(page)`, and
  the TOC's page numbers are `@page` margin boxes and `target-counter()`. Chrome ignores
  both, so a Chrome-based pipeline silently drops exactly the features that make the
  output look printed.
- **Relative image paths resolve against the markdown file's directory.** Images from
  elsewhere need absolute paths.
- **Mermaid and other JS-rendered diagrams don't render** — there is no JS engine in the
  pipeline. Convert them to SVG/PNG first and reference the image.
- Everything visual lives in one `STYLESHEET` string at the top of `md2pdf.py`. For a
  different look, edit it there — there is no theme system and no config file.

## Vault note

For a note out of the Obsidian vault, wikilinks (`[[slug]]`) pass through as literal text —
strip or expand them first if the PDF is going to someone outside the vault.

From sejas/ai-code-skills, MIT.

More from sejas/ai-code-skills

Signals

Stars
2
Forks
1
Open issues
0
Last commit (this folder)
Jul 25, 2026 (3 months ago)

From GitHub (fetched Oct 24, 2026).

Details

License
MIT
First seen
Oct 24, 2026
Last checked
Oct 24, 2026

More from sejas

Cite this page

make-pdf skill. Agent Mart. https://agentmart.dev/skills/sejas-make-pdf (last updated 2026-10-24)