# minimax-pdf

> A Claude Code skill from MiniMax-AI's skills repo that generates, fills, or reformats PDFs through a token-based design system — 15 cover styles, content-aware accent-color selection, and per-document-type typography. Three routes (CREATE / FILL / REFORMAT) gated on whether the user already has a source document.

**Use case**: Generate a print-ready PDF where the cover, accent color, and typography match the document's actual context — not the LLM's default 'Times New Roman + black' fallback

**Canonical URL**: https://agentcookbooks.com/skills/minimax-pdf/

**Topics**: claude-code, skills, documentation

**Trigger phrases**: "make a polished PDF", "generate a proposal PDF", "reformat this Markdown to PDF"

**Source**: [MiniMax-AI](https://github.com/MiniMax-AI/skills/tree/main/skills/minimax-pdf)

**License**: MIT

---

## What it does

`minimax-pdf` is the PDF-generation skill in [MiniMax-AI's skills repo](https://github.com/MiniMax-AI/skills) — and the wedge is the token-based design system that flows from document type through every page. Pick `report` and the cover is dark-background fullbleed with a dot grid and Playfair Display, accent rules under section heads, and an editorial body type. Pick `magazine` and the cover is warm cream with a centered stack, hero image, and Playfair Display. Pick `terminal` and you get near-black background, grid lines, monospace, neon-green accent. Fifteen cover patterns total, each with its own typeface pairing, and the same tokens (color, typography, spacing, accent) cascade through the body.

A route table picks the pipeline based on intent. **CREATE** runs the full `palette.py` → `cover.py` → `render_cover.js` → `render_body.py` → `merge.py` chain when the user wants a new PDF from scratch. **FILL** runs `fill_inspect.py` then `fill_write.py` against an existing PDF with form fields. **REFORMAT** runs `reformat_parse.py` to extract content from an existing document, then hands off to the full CREATE pipeline. The decision rule: if the user has an existing document to start from, it's REFORMAT; if not, it's CREATE.

Content-aware accent-color selection is a separate move the skill makes. The skill has explicit guidance for picking the accent based on document semantics — legal/compliance/finance gets deep navy or charcoal, healthcare gets teal-green, technology/engineering gets steel blue, environmental gets forest, creative/arts gets burgundy or terracotta, academic gets deep teal, corporate gets slate, luxury gets warm black or deep bronze. The rule: pick what a thoughtful designer would pick for *this specific* document, not the doc-type's default.

The body content is structured as JSON blocks: `h1`/`h2`/`h3`, `body`, `bullet`, `numbered`, `callout`, `table` (with accent header and alternating row tints), `image`, `figure` (auto-numbered captions), `code` (monospace with accent left border), `math` (LaTeX via matplotlib mathtext), `chart` (bar/line/pie via matplotlib), `flowchart` (nodes + edges), `bibliography` (numbered references with hanging indent), `divider`, `caption`, `pagebreak`, `spacer`. Print-ready output.

## When to use it

- Generating client-facing or external-facing PDFs where design identity matters — proposals, resumes, portfolios, reports, magazines, academic papers, posters
- Reformatting an existing document (Markdown, DOCX, plain text, or another PDF) into a polished output where the source content stays intact but the visual identity changes
- Filling form fields in an existing fillable PDF where the field map is known
- Generating reports or whitepapers with charts, math, code blocks, and bibliographies — the JSON block schema covers all of those natively
- Producing posters or magazine-style layouts where the cover patterns (`magazine`, `darkroom`, `poster`, `editorial`) actually carry visual weight

When *not* to reach for it:

- Receipts, invoices, simple data tables — the design system overhead doesn't pay off when "any PDF works"
- Forms with dynamic field generation — the skill's FILL route assumes a known field map, not field synthesis
- Documents with tightly-controlled corporate brand requirements where the 15 cover patterns aren't a fit and you need a custom template path
- Print-shop output requiring CMYK color profiles, exact bleed/trim specs, or PDF/X-1a — the skill is RGB and design-forward, not pre-press-grade

## Install

From [MiniMax-AI/skills](https://github.com/MiniMax-AI/skills) at `skills/minimax-pdf/`. Drop into `~/.claude/skills/minimax-pdf/`. Plugin marketplace install: `claude plugin marketplace add https://github.com/MiniMax-AI/skills` then `claude plugin install minimax-skills`.

The skill ships scripts under `scripts/` (Python for `palette.py`, `render_body.py`, `merge.py`, `fill_inspect.py`, `fill_write.py`, `reformat_parse.py`; Node for `render_cover.js`). A `bash scripts/make.sh run` wrapper drives the full CREATE pipeline end-to-end. Python 3.10+ and Node 20+ are the toolchain expectations. Read `design/design.md` first before any CREATE or REFORMAT work — that's a hard rule from the skill itself.

## What a session looks like

1. **Route decision.** "Do you have an existing document?" If yes → REFORMAT. If no → CREATE. If the user wants form values written into a PDF → FILL.
2. **Doc-type pick (CREATE / REFORMAT).** Skill picks one of 15 doc types — `report`, `proposal`, `resume`, `portfolio`, `academic`, `general`, `minimal`, `stripe`, `diagonal`, `frame`, `editorial`, `magazine`, `darkroom`, `terminal`, `poster`. Each has a baked-in cover pattern and typography stack.
3. **Accent color pick.** Skill consults the content-context table and picks an accent — deep navy for legal, teal-green for healthcare, steel blue for tech, forest for environmental, burgundy for creative, slate for corporate, warm black for luxury. Override with `--accent "#HEX"` if the operator has a brand color.
4. **Content blocks.** Operator provides `content.json` — `h1` / `h2` / `body` / `bullet` / `callout` / `table` / `image` / `figure` / `code` / `math` / `chart` / `flowchart` / `bibliography` / `divider` / `caption` / `pagebreak` / `spacer`.
5. **Pipeline run.** `bash scripts/make.sh run --title "..." --type proposal --author "..." --date "..." --accent "#2D5F8A" --content content.json --out report.pdf` — kicks off `palette.py` → `cover.py` → `render_cover.js` → `render_body.py` → `merge.py`.
6. **Verify.** Open the resulting PDF. Cover matches the chosen pattern, accent flows through section rules / callout bars / table headers, typography matches the doc-type stack.

The discipline that makes it work: the design tokens flow from doc-type pick + accent pick through every page automatically. There's no per-section design decision to drift on — the cover and the body share one palette, one type stack, one accent. That's what produces output that looks like *one document*, not a Frankenstein.

## Receipts

_TODO — to be filled in from a real run. Once the skill has been used to generate a real PDF (likely a proposal, report, or resume with content the operator actually owns), this section will capture: which doc-type and accent the skill picked vs. what the content actually called for, whether the cover-pattern → body-token cascade held up across all pages, and how the chart / math / table blocks rendered (most common failure mode: chart geometry off when the dataset is unbalanced; math block falls back to system fonts when the LaTeX expression has unusual symbols)._

## Source and attribution

From [MiniMax-AI's skills repository](https://github.com/MiniMax-AI/skills/tree/main/skills/minimax-pdf), an MIT-licensed skill collection.

License: MIT.

The wedge over a generic "PDF generator" agent: token-based design with content-aware accent picking. Most LLM-driven PDF generation produces *plausible* documents — fine typography, correct content, no design identity. This skill ships 15 distinct visual identities and forces a deliberate pick before generation. The "choose what a thoughtful designer would pick for this specific document" rule for the accent color is the part that separates output that looks designed from output that looks defaulted.