Skills minimax-pdf

install
source · Clone the upstream repo
git clone https://github.com/MiniMax-AI/skills
Claude Code · Install into ~/.claude/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"
manifest: skills/minimax-pdf/SKILL.md
source content

minimax-pdf

Three tasks. One skill.

Read
design/design.md
before any CREATE or REFORMAT work.


Route table

User intentRouteScripts used
Generate a new PDF from scratchCREATE
palette.py
cover.py
render_cover.js
render_body.py
merge.py
Fill / complete form fields in an existing PDFFILL
fill_inspect.py
fill_write.py
Reformat / re-style an existing documentREFORMAT
reformat_parse.py
→ 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

TypeCover patternVisual identity
report
fullbleed
Dark bg, dot grid, Playfair Display
proposal
split
Left panel + right geometric, Syne
resume
typographic
Oversized first-word, DM Serif Display
portfolio
atmospheric
Near-black, radial glow, Fraunces
academic
typographic
Light bg, classical serif, EB Garamond
general
fullbleed
Dark slate, Outfit
minimal
minimal
White + single 8px accent bar, Cormorant Garamond
stripe
stripe
3 bold horizontal color bands, Barlow Condensed
diagonal
diagonal
SVG angled cut, dark/light halves, Montserrat
frame
frame
Inset border, corner ornaments, Cormorant
editorial
editorial
Ghost letter, all-caps title, Bebas Neue
magazine
magazine
Warm cream bg, centered stack, hero image, Playfair Display
darkroom
darkroom
Navy bg, centered stack, grayscale image, Playfair Display
terminal
terminal
Near-black, grid lines, monospace, neon green
poster
poster
White bg, thick sidebar, oversized title, Barlow Condensed

Cover extras (inject into tokens via

--abstract
,
--cover-image
):

  • --abstract "text"
    — abstract text block on the cover (magazine/darkroom)
  • --cover-image "url"
    — hero image URL/path (magazine, darkroom, poster)

Color overrides — always choose these based on document content:

  • --accent "#HEX"
    — override the accent color;
    accent_lt
    is auto-derived by lightening toward white
  • --cover-bg "#HEX"
    — override the cover background color

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.

ContextSuggested accent range
Legal / compliance / financeDeep navy
#1C3A5E
, charcoal
#2E3440
, slate
#3D4C5E
Healthcare / medicalTeal-green
#2A6B5A
, cool green
#3A7D6A
Technology / engineeringSteel blue
#2D5F8A
, indigo
#3D4F8A
Environmental / sustainabilityForest
#2E5E3A
, olive
#4A5E2A
Creative / arts / cultureBurgundy
#6B2A35
, plum
#5A2A6B
, terracotta
#8A3A2A
Academic / researchDeep teal
#2A5A6B
, library blue
#2A4A6B
Corporate / neutralSlate
#3D4A5A
, graphite
#444C56
Luxury / premiumWarm black
#1A1208
, deep bronze
#4A3820

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:

BlockUsageKey fields
h1
Section heading + accent rule
text
h2
Subsection heading
text
h3
Sub-subsection (bold)
text
body
Justified paragraph; supports
<b>
<i>
markup
text
bullet
Unordered list item (• prefix)
text
numbered
Ordered list item — counter auto-resets on non-numbered blocks
text
callout
Highlighted insight box with accent left bar
text
table
Data table — accent header, alternating row tints
headers
,
rows
,
col_widths
?,
caption
?
image
Embedded image scaled to column width
path
/
src
,
caption
?
figure
Image with auto-numbered "Figure N:" caption
path
/
src
,
caption
?
code
Monospace code block with accent left border
text
,
language
?
math
Display math — LaTeX syntax via matplotlib mathtext
text
,
label
?,
caption
?
chart
Bar / line / pie chart rendered with matplotlib
chart_type
,
labels
,
datasets
,
title
?,
x_label
?,
y_label
?,
caption
?,
figure
?
flowchart
Process diagram with nodes + edges via matplotlib
nodes
,
edges
,
caption
?,
figure
?
bibliography
Numbered reference list with hanging indent
items
[{id, text}],
title
?
divider
Accent-colored full-width rule
caption
Small muted label
text
pagebreak
Force a new page
spacer
Vertical whitespace
pt
(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 typeValue format
text
Any string
checkbox
"true"
or
"false"
dropdown
Must match a choice value from inspect output
radio
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
ToolUsed byInstall
Python 3.9+all
.py
scripts
system
reportlab
render_body.py
pip install reportlab
pypdf
fill, merge, reformat
pip install pypdf
Node.js 18+
render_cover.js
system
playwright
+ Chromium
render_cover.js
npm install -g playwright && npx playwright install chromium