Skills minimax-pdf
git clone https://github.com/MiniMax-AI/skills
T=$(mktemp -d) && git clone --depth=1 https://github.com/MiniMax-AI/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/minimax-pdf" ~/.claude/skills/minimax-ai-skills-minimax-pdf && rm -rf "$T"
skills/minimax-pdf/SKILL.mdminimax-pdf
Three tasks. One skill.
Read design/design.md
before any CREATE or REFORMAT work.
design/design.mdRoute table
| User intent | Route | Scripts used |
|---|---|---|
| Generate a new PDF from scratch | CREATE | → → → → |
| Fill / complete form fields in an existing PDF | FILL | → |
| Reformat / re-style an existing document | REFORMAT | → then full CREATE pipeline |
Rule: when in doubt between CREATE and REFORMAT, ask whether the user has an existing document to start from. If yes → REFORMAT. If no → CREATE.
Route A: CREATE
Full pipeline — content → design tokens → cover → body → merged PDF.
bash scripts/make.sh run \ --title "Q3 Strategy Review" --type proposal \ --author "Strategy Team" --date "October 2025" \ --accent "#2D5F8A" \ --content content.json --out report.pdf
Doc types:
report · proposal · resume · portfolio · academic · general · minimal · stripe · diagonal · frame · editorial · magazine · darkroom · terminal · poster
| Type | Cover pattern | Visual identity |
|---|---|---|
| | Dark bg, dot grid, Playfair Display |
| | Left panel + right geometric, Syne |
| | Oversized first-word, DM Serif Display |
| | Near-black, radial glow, Fraunces |
| | Light bg, classical serif, EB Garamond |
| | Dark slate, Outfit |
| | White + single 8px accent bar, Cormorant Garamond |
| | 3 bold horizontal color bands, Barlow Condensed |
| | SVG angled cut, dark/light halves, Montserrat |
| | Inset border, corner ornaments, Cormorant |
| | Ghost letter, all-caps title, Bebas Neue |
| | Warm cream bg, centered stack, hero image, Playfair Display |
| | Navy bg, centered stack, grayscale image, Playfair Display |
| | Near-black, grid lines, monospace, neon green |
| | White bg, thick sidebar, oversized title, Barlow Condensed |
Cover extras (inject into tokens via
--abstract, --cover-image):
— abstract text block on the cover (magazine/darkroom)--abstract "text"
— hero image URL/path (magazine, darkroom, poster)--cover-image "url"
Color overrides — always choose these based on document content:
— override the accent color;--accent "#HEX"
is auto-derived by lightening toward whiteaccent_lt
— override the cover background color--cover-bg "#HEX"
Accent color selection guidance:
You have creative authority over the accent color. Pick it from the document's semantic context — title, industry, purpose, audience — not from generic "safe" choices. The accent appears on section rules, callout bars, table headers, and the cover: it carries the document's visual identity.
| Context | Suggested accent range |
|---|---|
| Legal / compliance / finance | Deep navy , charcoal , slate |
| Healthcare / medical | Teal-green , cool green |
| Technology / engineering | Steel blue , indigo |
| Environmental / sustainability | Forest , olive |
| Creative / arts / culture | Burgundy , plum , terracotta |
| Academic / research | Deep teal , library blue |
| Corporate / neutral | Slate , graphite |
| Luxury / premium | Warm black , deep bronze |
Rule: choose a color that a thoughtful designer would select for this specific document — not the type's default. Muted, desaturated tones work best; avoid vivid primaries. When in doubt, go darker and more neutral.
content.json block types:
| Block | Usage | Key fields |
|---|---|---|
| Section heading + accent rule | |
| Subsection heading | |
| Sub-subsection (bold) | |
| Justified paragraph; supports markup | |
| Unordered list item (• prefix) | |
| Ordered list item — counter auto-resets on non-numbered blocks | |
| Highlighted insight box with accent left bar | |
| Data table — accent header, alternating row tints | , , ?, ? |
| Embedded image scaled to column width | /, ? |
| Image with auto-numbered "Figure N:" caption | /, ? |
| Monospace code block with accent left border | , ? |
| Display math — LaTeX syntax via matplotlib mathtext | , ?, ? |
| Bar / line / pie chart rendered with matplotlib | , , , ?, ?, ?, ?, ? |
| Process diagram with nodes + edges via matplotlib | , , ?, ? |
| Numbered reference list with hanging indent | [{id, text}], ? |
| Accent-colored full-width rule | — |
| Small muted label | |
| Force a new page | — |
| Vertical whitespace | (default 12) |
chart / flowchart schemas:
{"type":"chart","chart_type":"bar","labels":["Q1","Q2","Q3","Q4"], "datasets":[{"label":"Revenue","values":[120,145,132,178]}],"caption":"Q results"} {"type":"flowchart", "nodes":[{"id":"s","label":"Start","shape":"oval"}, {"id":"p","label":"Process","shape":"rect"}, {"id":"d","label":"Valid?","shape":"diamond"}, {"id":"e","label":"End","shape":"oval"}], "edges":[{"from":"s","to":"p"},{"from":"p","to":"d"}, {"from":"d","to":"e","label":"Yes"},{"from":"d","to":"p","label":"No"}]} {"type":"bibliography","items":[ {"id":"1","text":"Author (Year). Title. Publisher."}]}
Route B: FILL
Fill form fields in an existing PDF without altering layout or design.
# Step 1: inspect python3 scripts/fill_inspect.py --input form.pdf # Step 2: fill python3 scripts/fill_write.py --input form.pdf --out filled.pdf \ --values '{"FirstName": "Jane", "Agree": "true", "Country": "US"}'
| Field type | Value format |
|---|---|
| Any string |
| or |
| Must match a choice value from inspect output |
| Must match a radio value (often starts with ) |
Always run
fill_inspect.py first to get exact field names.
Route C: REFORMAT
Parse an existing document → content.json → CREATE pipeline.
bash scripts/make.sh reformat \ --input source.md --title "My Report" --type report --out output.pdf
Supported input formats:
.md .txt .pdf .json
Environment
bash scripts/make.sh check # verify all deps bash scripts/make.sh fix # auto-install missing deps bash scripts/make.sh demo # build a sample PDF
| Tool | Used by | Install |
|---|---|---|
| Python 3.9+ | all scripts | system |
| | |
| fill, merge, reformat | |
| Node.js 18+ | | system |
+ Chromium | | |