sales-deck-production

Builds print-ready HTML proposals and exports them to verified PDF via headless browser.

3|3|Updated Apr 23, 2026
One-click install
npx skills add https://github.com/joaoguirunas/team-os --skill sales-deck-production-joaoguirunas
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: sales-deck-production
Source: https://github.com/joaoguirunas/team-os/tree/main/.claude/skills/sales-deck-production
Command: npx skills add https://github.com/joaoguirunas/team-os --skill sales-deck-production-joaoguirunas

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill requires playwright, puppeteer, pypdf, poppler, and includes scripts (resource) components.

What problem does it solve? Producing sales proposals and decks as PDFs often breaks at the last mile: fonts fall back to generic ones, content overflows into phantom pages, and page counts drift from the approved plan. This Skill standardizes the HTML-to-PDF pipeline so the final artifact opens, fits, and prints correctly. ## Core Features & Use Cases - Print-optimized HTML structure: One <section class="page"> per planned page, with page components (cover, TOC, openers, investment table, joint commitment, back cover) and a print CSS enforcing A4 or 16:9 page geometry, page breaks, and embedded local fonts. - Headless export: scripts/html-to-pdf.mjs uses Playwright or Puppeteer to render the local HTML, waits for fonts and images, and aborts if any font or image fails to load. - Mandatory PDF verification: scripts/check-pdf.sh reports page count vs. expectation, file weight, embedded fonts, sample page renders, and extracted text for editorial checks. - Use Case: After a proposal's copy is approved, assemble the HTML from the skeleton template, export to PDF headlessly, and run the checker to confirm 12 pages, embedded brand fonts, and under 15 MB before sending to the client. ## Quick Start Use the sales-deck-production skill to build the proposal HTML from the approved copy, export it to PDF, and run the PDF check before delivery.

Frequently Asked Questions about sales-deck-production

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I convert HTML to PDF with a headless browser?▼

Use the html-to-pdf.mjs script, which loads the local HTML in Playwright or Puppeteer, waits for document.fonts.ready and all images, then prints with printBackground and preferCSSPageSize. It exits with an error if any font or image fails to load.

How do I check a PDF page count and embedded fonts?▼

Run check-pdf.sh with the PDF path and optionally --expect-pages N. It uses pdfinfo or pypdf for page counts, pdffonts to list embedded fonts and flag generic fallbacks like Helvetica or Arial, and warns when the file exceeds the size limit.

Playwright vs Puppeteer for HTML to PDF export?▼

The export script supports both and picks whichever is installed, trying Playwright first. Both produce equivalent output here since the script uses the same print options: printBackground, preferCSSPageSize, zero margins, and print media emulation.

Why does my printed HTML create extra blank pages?▼

Blank pages usually come from setting a background on html or body instead of on the .page element, or from content overflowing the fixed page height. Put backgrounds on .page, use overflow: hidden, and let the checker detect overflow rather than hiding it.

Can I use CDN fonts when exporting HTML to PDF?▼

No. The skill requires @font-face with local files or embedded data URIs, never CDN links, because headless export must not depend on network access. The script waits for document.fonts.ready and aborts if any declared font fails to load.

What should I do when proposal text overflows its page?▼

Overflow is a copy problem, not a design problem. Measure the excess in lines or characters, return the page and passage to the copywriter for trimming, then re-export. Designers may only adjust grid and spacing within the design system's minimum legible sizes.