From openai-office-skills
Create and edit .pptx slide decks with PptxGenJS, layout helpers, and Python render/validation tools. For new decks, recreating from screenshots/PDFs, editing content, adding charts, or fixing overflows.
npx claudepluginhub fcakyon/claude-codex-settings --plugin openai-office-skillsThis skill uses the workspace's default tool permissions.
Use PptxGenJS for slide authoring. Do not use `python-pptx` for deck generation unless the task is inspection-only; keep editable output in JavaScript and deliver both the `.pptx` and the source `.js`.
LICENSE.txtassets/pptxgenjs_helpers/code.jsassets/pptxgenjs_helpers/image.jsassets/pptxgenjs_helpers/index.jsassets/pptxgenjs_helpers/latex.jsassets/pptxgenjs_helpers/layout.jsassets/pptxgenjs_helpers/layout_builders.jsassets/pptxgenjs_helpers/svg.jsassets/pptxgenjs_helpers/text.jsassets/pptxgenjs_helpers/util.jsreferences/pptxgenjs-helpers.mdscripts/create_montage.pyscripts/detect_font.pyscripts/ensure_raster_image.pyscripts/render_slides.pyscripts/slides_test.pyReads, extracts text from, edits, and generates .pptx presentations using Python scripts and pptxgenjs. Handles templates, thumbnails, XML unpacking.
Handles .pptx presentations: extracts text/images, edits via Python unpack/repack, creates with pptxgenjs JS library. Includes design palettes and motifs.
Processes .pptx files: extracts text with markitdown, thumbnails, XML unpack; edits presentations; creates decks with pptxgenjs.
Share bugs, ideas, or general feedback.
Use PptxGenJS for slide authoring. Do not use python-pptx for deck generation unless the task is inspection-only; keep editable output in JavaScript and deliver both the .pptx and the source .js.
Keep work in a task-local directory. Only copy final artifacts to the requested destination after rendering and validation pass.
assets/pptxgenjs_helpers/: Copy this folder into the deck workspace and import it locally instead of reimplementing helper logic.scripts/render_slides.py: Rasterize a .pptx or .pdf to per-slide PNGs.scripts/slides_test.py: Detect content that overflows the slide canvas.scripts/create_montage.py: Build a contact-sheet style montage of rendered slides.scripts/detect_font.py: Report missing or substituted fonts as LibreOffice resolves them.scripts/ensure_raster_image.py: Convert SVG/EMF/HEIC/PDF-like assets into PNGs for quick inspection.references/pptxgenjs-helpers.md: Load only when you need API details or dependency notes.LAYOUT_WIDE) unless the source material clearly uses another aspect ratio.assets/pptxgenjs_helpers/ into the working directory and import the helpers from there.render_slides.py, review the PNGs, and fix layout issues before delivery.slides_test.py for overflow checks when slide edges are tight or the deck is dense..pptx, the authoring .js, and any generated assets that are required to rebuild the deck.autoFontSize, calcTextBox, and related helpers to size text boxes; do not use PptxGenJS fit or autoFit.• characters.imageSizingCrop or imageSizingContain instead of PptxGenJS built-in image sizing.latexToSvgDataUri() for equations and codeToRuns() for syntax-highlighted code blocks.warnIfSlideHasOverlaps(slide, pptx) and warnIfSlideElementsOutOfBounds(slide, pptx) in the submitted JavaScript whenever you generate or substantially edit slides.ensure_raster_image.py to generate debug PNGs from vector or odd image formats before placing them.Examples below assume you copied the needed scripts into the working directory. If not, invoke the same script paths relative to this skill folder.
# Render slides to PNGs for review
python3 scripts/render_slides.py deck.pptx --output_dir rendered
# Build a montage for quick scanning
python3 scripts/create_montage.py --input_dir rendered --output_file montage.png
# Check for overflow beyond the original slide canvas
python3 scripts/slides_test.py deck.pptx
# Detect missing or substituted fonts
python3 scripts/detect_font.py deck.pptx --json
Load references/pptxgenjs-helpers.md if you need the helper API summary or dependency details.