🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

MiniMax PDF

by @yhlorra

Use this skill when visual quality and design identity matter for a PDF. CREATE (generate from scratch): "make a PDF", "generate a report", "write a proposal...

Versionv1.0.0
Downloads308
TERMINAL
clawhub install yh-minimax-pdf

πŸ“– About This Skill


name: minimax-pdf description: > Use this skill when visual quality and design identity matter for a PDF. CREATE (generate from scratch): "make a PDF", "generate a report", "write a proposal", "create a resume", "beautiful PDF", "professional document", "cover page", "polished PDF", "client-ready document". FILL (complete form fields): "fill in the form", "fill out this PDF", "complete the form fields", "write values into PDF", "what fields does this PDF have". REFORMAT (apply design to an existing doc): "reformat this document", "apply our style", "convert this Markdown/text to PDF", "make this doc look good", "re-style this PDF". This skill uses a token-based design system: color, typography, and spacing are derived from the document type and flow through every page. The output is print-ready. Prefer this skill when appearance matters, not just when any PDF output is needed. license: MIT metadata: version: "1.0" category: document-generation

minimax-pdf

Three tasks. One skill.

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


Route table

| User intent | Route | Scripts used | |---|---|---| | Generate a new PDF from scratch | CREATE | palette.py β†’ cover.py β†’ render_cover.js β†’ render_body.py β†’ merge.py | | Fill / complete form fields in an existing PDF | FILL | fill_inspect.py β†’ fill_write.py | | Reformat / re-style an existing document | REFORMAT | 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

| Type | Cover pattern | Visual 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.

    | Context | Suggested accent range | |---|---| | Legal / compliance / finance | Deep navy #1C3A5E, charcoal #2E3440, slate #3D4C5E | | Healthcare / medical | Teal-green #2A6B5A, cool green #3A7D6A | | Technology / engineering | Steel blue #2D5F8A, indigo #3D4F8A | | Environmental / sustainability | Forest #2E5E3A, olive #4A5E2A | | Creative / arts / culture | Burgundy #6B2A35, plum #5A2A6B, terracotta #8A3A2A | | Academic / research | Deep teal #2A5A6B, library blue #2A4A6B | | Corporate / neutral | Slate #3D4A5A, graphite #444C56 | | Luxury / premium | Warm 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:

    | Block | Usage | Key fields | |---|---|---| | h1 | Section heading + accent rule | text | | h2 | Subsection heading | text | | h3 | Sub-subsection (bold) | text | | body | Justified paragraph; supports 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 type | Value 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
    

    | Tool | Used by | Install | |---|---|---| | 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 |