md-to-pdf

SkillFiles & storage

Convert any markdown file to a clean PDF. Use when asked to make a PDF from a .md file, export a document, or convert markdown to PDF.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the md-to-pdf skill

What this skill tells your AI

The instructions your AI receives, as published by hamzafarooq/multi-agent-course in .claude/skills/md-to-pdf/SKILL.md and read by ahel’s review.

When the user asks to convert a markdown file to PDF, follow these steps exactly:

Step 1 — Confirm the input file

Ask the user for the path to the .md file if not already provided. Confirm the output PDF path (default: same folder, same name, .pdf extension).

Step 2 — Convert markdown to styled HTML

Run this command (replace INPUT and OUTPUT paths):

pandoc "INPUT.md" \
  -o "OUTPUT.html" \
  --standalone \
  --metadata title="Document" \
  --css=/dev/stdin <<'EOF'
body { font-family: "Helvetica Neue", Arial, sans-serif; max-width: 800px; margin: 40px auto; padding: 0 40px; font-size: 13px; line-height: 1.7; color: #1a1a1a; }
h1 { font-size: 26px; font-weight: 700; margin-bottom: 4px; }
h2 { font-size: 16px; font-weight: 700; margin-top: 32px; border-bottom: 1px solid #e0e0e0; padding-bottom: 6px; }
strong { font-weight: 600; }
table { width: 100%; border-collapse: collapse; margin: 16px 0; font-size: 12px; }
th { background: #f5f5f5; padding: 8px; text-align: left; border: 1px solid #ddd; }
td { padding: 8px; border: 1px solid #ddd; }
hr { border: none; border-top: 1px solid #e0e0e0; margin: 24px 0; }
ul, ol { padding-left: 20px; }
li { margin-bottom: 6px; }
EOF

Step 3 — Print HTML to PDF using Chrome

"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \
  --headless \
  --disable-gpu \
  --no-sandbox \
  --print-to-pdf="OUTPUT.pdf" \
  --print-to-pdf-no-header \
  --no-pdf-header-footer \
  "file://OUTPUT.html"

Note: encode spaces in the file path as %20 in the file:// URL.

Step 4 — Clean up and confirm

Delete the intermediate HTML file:

rm "OUTPUT.html"

Tell the user the PDF is ready and give them the full path.

Requirements

  • pandoc must be installed (which pandoc to check)
  • Google Chrome must be at /Applications/Google Chrome.app/ (standard Mac install)
  • Works on macOS only in this configuration

Error handling

  • If pandoc is not found: tell the user to run brew install pandoc
  • If Chrome is not at the expected path: check with ls /Applications/ | grep -i chrome and adjust the path
  • If the PDF is 0 bytes: the file:// URL likely has unencoded spaces — encode them as %20

Signals

GitHub stars
84
Forks
70
Last commit
Sep 2026

ahel recommends instead

Advanced
Catalog kind
skill
Gateway key
md-to-pdf-hamzafarooq
Source
github.com/hamzafarooq/multi-agent-course