3.2 KiB
3.2 KiB
| name | description |
|---|---|
| mm-pdf | Generate beautifully styled Machine.Machine branded PDFs and slide decks from Markdown. Dark navy aesthetic, cyan accents, professional A4 layout. Uses a headless-Chrome render container (any container with Node + Chrome, e.g. a "*-m2o" agent-desktop image) or a local WeasyPrint fallback. Produces PDF + HTML output. |
mm-pdf
Generate MM-branded documents from Markdown content.
Design system
| Token | Value | Use |
|---|---|---|
| Cover background | #0a0e1a |
Dark navy |
| Primary accent | #4bb8d4 |
Cyan — headings, kickers, borders |
| Section banners | #3d4550 |
Slate grey |
| Purple sidebar | #6b46c1 |
Alt cover variant |
| Body text | #e2e8f0 |
Light grey on dark bg |
| Body background | #111827 |
Dark page bg |
| Code/data blocks | #1e2533 |
Slightly lighter navy |
Usage
# Generate PDF from markdown
mm-pdf generate input.md [--out output.pdf] [--style dark|purple|light]
# Generate slide deck (Marp)
mm-pdf slides input.md [--out output.pdf]
# With explicit container (auto-discovery picks the first "*m2o*" container if omitted)
mm-pdf generate input.md --container <your-render-container-name>
Pipeline
- MD → HTML — a small Node script (via
marked) renders Markdown into full MM-styled HTML. Extracts YAML frontmatter (title,subtitle,date,client) for the cover page. Strips the first# H1to use as title if no frontmatter is present. - HTML → PDF — Chrome headless renders the HTML to PDF (
--print-to-pdf).
Both outputs are saved alongside the input file.
Output
<name>.html— standalone styled HTML (preview, shareable)<name>.pdf— print-ready PDF
Styles
| Style | Cover | Use case |
|---|---|---|
dark |
Navy #0a0e1a + cyan accent |
Technical specs, deployment docs |
purple |
Purple sidebar #6b46c1 |
Partner decks |
light |
White + navy header | Client-facing docs |
dark.css and purple.css ship in templates/. light is documented for forward
compatibility but has no template in this bundle yet — add templates/light.css locally
if you need it (it will be picked up automatically; generate.sh falls back to dark.css
for any missing style file).
Components (in Markdown)
<!-- KPI card row -->
<div class="kpi-row">
<div class="kpi">**€5K** setup</div>
<div class="kpi">**€2K**/mo</div>
<div class="kpi">**8 weeks** pilot</div>
</div>
<!-- Section kicker -->
<span class="kicker">DEPLOYMENT ARCHITECTURE</span>
<!-- Warning/callout -->
<div class="callout">⚠️ Open item: integration path TBD</div>
Requirements
- Docker, with a running container that has Node.js + Google Chrome (headless) installed
and reachable via
docker exec/docker cpfrom the host running this skill. Any container name is fine —scripts/generate.shauto-discovers the first container whose name matchesnasr-m2o|m2o, or accepts--container <name>to target any other container that meets the Node+Chrome requirement. dockerCLI available on the host invokingmm-pdf.
No absolute host paths, hostnames, or client-identifying data are baked into this skill —
--container and the input Markdown path are the only machine-specific inputs at run time.