mcpbeat Sign in

PDF Generation Skill for Claude

Professional PDF generation from markdown using Pandoc with Eisvogel template and EB Garamond fonts. Use when converting markdown to PDF, creating white papers, research documents, marketing materials, or technical documentation. Supports both English and Russian documents with professional typography and color-coded themes. Mobile-optimized layout (6x9) by default for Telegram bot context, desktop/print layout (A4) for other contexts.

5k tokens
context cost
the whole folder, loaded on every use
7
files
ships runnable scripts
0
copies elsewhere
how many repositories repackaged it
337
stars on the repo
on the repository, not the skill itself

Install

one command, takes just this skill from the repository
npx skills add https://github.com/glebis/claude-skills --skill pdf-generation

What comes with it

14 481 bytes besides the instruction
.claude-plugin/plugin.json
README.md
references/frontmatter_templates.md
references/pandoc_reference.md
scripts/fix_markdown.py
scripts/generate_pdf.py

The instruction itself

18 sections, as written by the author

PDF Generation

Overview

Generate professional PDFs from markdown files using Pandoc with Eisvogel template styling. Supports English and Russian documents with customizable themes, table of contents, and professional typography including EB Garamond font for Russian text.

Quick Start

Basic commands:

# Desktop/Print PDF (A4 format)
pandoc doc.md -o doc.pdf --pdf-engine=xelatex --toc --toc-depth=2 -V geometry:margin=2.5cm -V fontsize=11pt -V documentclass=article

# Mobile-friendly PDF (6x9 phone screen optimized)
pandoc doc.md -o doc-mobile.pdf --pdf-engine=xelatex --toc --toc-depth=2 -V geometry:paperwidth=6in -V geometry:paperheight=9in -V geometry:margin=0.5in -V fontsize=10pt -V linestretch=1.2

# Russian PDF with EB Garamond
pandoc doc-ru.md -o doc.pdf --pdf-engine=xelatex --toc --toc-depth=2 -V geometry:margin=2.5cm -V fontsize=11pt -V documentclass=article -V mainfont="EB Garamond"

# Russian Mobile PDF
pandoc doc-ru.md -o doc-mobile.pdf --pdf-engine=xelatex --toc --toc-depth=2 -V geometry:paperwidth=6in -V geometry:paperheight=9in -V geometry:margin=0.5in -V fontsize=10pt -V linestretch=1.2 -V mainfont="EB Garamond"

Document Theme Colors

  • White Papers - Blue (1e3a8a)
  • Marketing - Green (059669)
  • Research - Purple (7c3aed)
  • Technical - Gray (374151)

YAML Frontmatter Example

---
title: "Document Title"
subtitle: "Subtitle"
author: "Author"
date: "2025-11-18"
titlepage: true
titlepage-color: "1e3a8a"
titlepage-text-color: "ffffff"
book: true
---

See references/frontmatter_templates.md for complete templates.

Markdown Formatting Best Practices

For optimal PDF rendering, ensure:

  • Blank lines before lists - Required for proper list rendering
  • Blank lines after headings - Improves spacing
  • Nested list indentation - Use 3 spaces for sub-items

Common Claude Code Pattern

Lists after colons need blank lines:

Your data spans 9 years with complete tracking:

- Item 1
- Item 2

Without blank line after colon, renders as inline text.

Automatic Fix

Use preprocessing script:

scripts/fix_markdown.py input.md output.md

Automatically detects and fixes:

  • Lists after colons (Claude Code format)
  • Lists after headings
  • Nested list spacing

Layout Options

Desktop/Print Layout (A4)

  • Paper: 210mm x 297mm (A4)
  • Margins: 2.5cm
  • Font size: 11pt
  • Best for: Printing, reading on large screens, archival

Mobile Layout (Phone-optimized)

  • Paper: 6in x 9in (phone aspect ratio)
  • Margins: 0.5in (minimal for screen space)
  • Font size: 10pt with 1.2 line spacing
  • Best for: Phone/tablet reading, Telegram/messaging apps

Default for Telegram Bot: Use mobile layout for all PDFs sent via Telegram unless user explicitly requests print/desktop version.

Generation Workflows

Workflow 1: Simple PDF

  • Check context (Telegram = mobile, otherwise desktop)
  • Check if Russian (use EB Garamond if yes)
  • Run appropriate pandoc command
  • Verify output

Workflow 2: Professional Title Page

  • Add YAML frontmatter with theme color
  • Include metadata (title, author, date)
  • Choose layout (mobile vs desktop)
  • Generate with xelatex

Workflow 3: Using Script

scripts/generate_pdf.py doc.md -t white-paper
scripts/generate_pdf.py doc.md -t marketing --russian
scripts/generate_pdf.py doc.md --mobile  # Mobile layout

Resources

  • scripts/generate_pdf.py - Automated generation
  • references/frontmatter_templates.md - YAML templates
  • references/pandoc_reference.md - Command reference

Troubleshooting

Install pandoc: brew install pandoc

Install LaTeX: brew install --cask mactex

Mobile-Friendly PDFs

For phone and tablet reading, use the mobile layout option:

# Using script (recommended)
scripts/generate_pdf.py doc.md --mobile

# Direct pandoc command
pandoc doc.md -o doc-mobile.pdf \
  --pdf-engine=xelatex \
  --toc --toc-depth=2 \
  -V geometry:paperwidth=6in \
  -V geometry:paperheight=9in \
  -V geometry:margin=0.5in \
  -V fontsize=10pt \
  -V linestretch=1.2 \
  -V colorlinks=true \
  -V linkcolor=blue \
  -V urlcolor=blue

Mobile layout features:

  • 6x9 inch page size (optimal for mobile screens)
  • 10pt font (readable on smaller screens)
  • 0.5in margins (maximizes content area)
  • 1.2 line spacing (improved readability)
  • Auto-generated -mobile.pdf filename suffix

When to use mobile layout:

  • Sharing research via Telegram/messaging apps
  • Reading on phones or tablets
  • Creating portable reference documents
  • Quick consumption on the go

Default context: Mobile layout is used by default when generating PDFs through the Telegram bot for optimal mobile reading experience.

Other skills for the same job

different authors, same section of the catalogue
Matplotlib
by christophacham
×3

Low-level plotting library for full customization. Use when you need fine-grained control over every plot element, creating novel plot types, or integrating with specific scientific workflows. Export to PNG/PDF/SVG for publication. For quick statistical plots use seaborn; for interactive plots use plotly; for publication-ready multi-panel figures with journal styling, use scientific-visualization.

22k tokens scripts
Frontend Slides
by alexdcd
×2

Create stunning, animation-rich HTML presentations from scratch or by converting PowerPoint files. Use when the user wants to build a presentation, convert a PPT/PPTX to web, or create slides for a talk/pitch. Helps non-designers discover their aesthetic through visual exploration rather than abstract choices.

4k tokens
Discover Brand
by anthropics
vendor ×1

> This skill orchestrates autonomous discovery of brand materials across enterprise platforms (Notion, Confluence, Google Drive, Box, SharePoint, Figma, Gong, Granola, Slack). It should be used when the user asks to "discover brand materials", "find brand documents", "search for brand guidelines", "audit brand content", "what brand materials do we have", "find our style guide", "where are our brand docs", "do we have a style guide", "discover brand voice", "brand content audit", or "find brand assets".

6k tokens
Matplotlib Scientific Plotting
by BioTender-max
×1

Low-level Python plotting for scientific figures: publication-quality line, scatter, bar, heatmap, contour, 3D; multi-panel layouts; fine control of every element. PNG/PDF/SVG export. Use seaborn for quick stats, plotly for interactive.

4k tokens
Baoyu Format Markdown
by ComeOnOliver
×1

Formats plain text or markdown files with frontmatter, titles, summaries, headings, bold, lists, and code blocks. Use when user asks to "format markdown", "beautify article", "add formatting", or improve article layout. Outputs to {filename}-formatted.md.

19k tokens scripts
PPTX Generation
by ComeOnOliver
×1

Enterprise-grade PowerPoint deck generation system using evidence-based prompting techniques, workflow enforcement, and constraint-based design. Use when creating professional presentations (board decks, reports, analyses) requiring consistent visual quality, accessibility compliance, and integration of complex data from multiple sources. Implements html2pptx workflow with spatial layout optimization, validation gates, and multi-chat architecture for 30+ slide decks.

27k tokens
Frontend Slides
by ComeOnOliver
×1

Create stunning, animation-rich HTML presentations from scratch or by converting PowerPoint files. Use when the user wants to build a presentation, convert a PPT/PPTX to web, or create slides for a talk/pitch. Helps non-designers discover their aesthetic through visual exploration rather than abstract choices.

7k tokens
PPTX HTML Fidelity Audit
by nexu-io

Audit a python-pptx export against its source HTML deck, identify layout/content drift (footer overflow, cropped content, missing italic/em, lost styling, off-rhythm spacing), and re-export with strict footer-rail + cursor-flow layout discipline. Use this skill whenever the user has a .pptx that was generated from an HTML slide deck and asks to compare/audit/verify/fix the export — including phrases like "compare ppt with html", "fidelity audit", "fix the pptx", "ppt is cut off", "footer overlap", "italic missing in pptx", "re-export the deck", "pptx-html-fidelity-audit", or any case where a python-pptx → HTML round-trip needs verification or repair. Also trigger when the user shows you a deck.html and a deck.pptx side by side and is debugging visual differences.

15k tokens scripts

How to use it

Copy the folder

Take glebis/pdf-generation from the repository into ~/.claude/skills for personal use, or into .claude/skills inside a project.

Check the name does not clash

The agent identifies a skill by the name field in its header. Two skills with the same name cannot sit side by side — one of them will be ignored.

Install what it needs

The instructions reference brew. Without those the skill loads but fails at the first command.