Presentation toolkit (.pptx). Create/edit slides, layouts, content, speaker notes, comments, for programmatic presentation creation and modification.
npx claudepluginhub flight505/claude-project-planner --plugin claude-project-plannerThis skill is limited to using the following tools:
A .pptx file is a ZIP archive containing XML files and resources. Create, edit, or analyze PowerPoint presentations using text extraction, raw XML access, or html2pptx workflows. Apply this skill for programmatic presentation creation and modification.
Generates design tokens/docs from CSS/Tailwind/styled-components codebases, audits visual consistency across 10 dimensions, detects AI slop in UI.
Records polished WebM UI demo videos of web apps using Playwright with cursor overlay, natural pacing, and three-phase scripting. Activates for demo, walkthrough, screen recording, or tutorial requests.
Delivers idiomatic Kotlin patterns for null safety, immutability, sealed classes, coroutines, Flows, extensions, DSL builders, and Gradle DSL. Use when writing, reviewing, refactoring, or designing Kotlin code.
A .pptx file is a ZIP archive containing XML files and resources. Create, edit, or analyze PowerPoint presentations using text extraction, raw XML access, or html2pptx workflows. Apply this skill for programmatic presentation creation and modification.
When creating documents with this skill, always consider adding diagrams to enhance visual communication.
If your document does not already contain diagrams:
python .claude/skills/project-diagrams/scripts/generate_schematic.py "your diagram description" -o figures/output.png
When to add schematics: Presentation workflow diagrams, slide design process flowcharts, content organization diagrams, system architecture illustrations, process flow visualizations.
python -m markitdown path-to-file.pptx
Raw XML access is required for: comments, speaker notes, slide layouts, animations, design elements, and complex formatting. Unpack a presentation and read its raw XML contents.
python ooxml/scripts/unpack.py <office_file> <output_dir>
Note: The unpack.py script is located at skills/pptx/ooxml/scripts/unpack.py relative to the project root. If the script doesn't exist at this path, use find . -name "unpack.py" to locate it.
ppt/presentation.xml - Main presentation metadata and slide referencesppt/slides/slide{N}.xml - Individual slide contentsppt/notesSlides/notesSlide{N}.xml - Speaker notes for each slideppt/comments/modernComment_*.xml - Comments for specific slidesppt/slideLayouts/ - Layout templatesppt/slideMasters/ - Master slide templatesppt/theme/ - Theme and styling informationppt/media/ - Images and other media filesWhen given an example design to emulate: Always analyze the presentation's typography and colors first:
ppt/theme/theme1.xml for colors (<a:clrScheme>) and fonts (<a:fontScheme>)ppt/slides/slide1.xml for actual font usage (<a:rPr>) and colors<a:solidFill>, <a:srgbClr>) and font references across all XML filesUse the html2pptx workflow to convert HTML slides to PowerPoint with accurate positioning.
CRITICAL: Before creating any presentation, analyze the content and choose appropriate design elements:
Requirements:
For color palette options (18 curated palettes), visual detail options (geometric patterns, border treatments, typography treatments, chart styling, layout innovations, background treatments), see references/design_reference.md.
For slides with charts or tables:
html2pptx.md completely from start to finish. NEVER set any range limits when reading this file.<p>, <h1>-<h6>, <ul>, <ol> for all text contentclass="placeholder" for chart/table areashtml2pptx.js to convert HTML slides to PowerPointpython .claude/skills/document-skills/pptx/scripts/thumbnail.py output.pptx workspace/thumbnails --cols 4Work with the raw Office Open XML (OOXML) format: unpack, edit XML, repack.
ooxml.md (~500 lines) completely from start to finish. NEVER set any range limits when reading this file.python ooxml/scripts/unpack.py <office_file> <output_dir>ppt/slides/slide{N}.xml)python ooxml/scripts/validate.py <dir> --original <file>python ooxml/scripts/pack.py <input_directory> <office_file>Duplicate and re-arrange template slides before replacing placeholder content.
Extract template text AND create visual thumbnail grid:
python -m markitdown template.pptx > template-content.mdtemplate-content.md completelypython .claude/skills/document-skills/pptx/scripts/thumbnail.py template.pptxAnalyze template and save inventory:
template-inventory.md with slide index, layout code, and description for every slideCreate presentation outline:
outline.md with template mappingRearrange slides: python scripts/rearrange.py template.pptx working.pptx 0,34,34,50,52
Extract text inventory: python scripts/inventory.py working.pptx text-inventory.json
Generate replacement text and save to replacement-text.json:
bullet: true, do NOT include bullet symbols in textbullet: true, do NOT set alignment (auto left-aligned)"paragraphs": [
{"text": "Title text", "alignment": "CENTER", "bold": true},
{"text": "Bullet point", "bullet": true, "level": 0},
{"text": "Regular text"}
]
Apply replacements: python scripts/replace.py working.pptx replacement-text.json output.pptx
python .claude/skills/document-skills/pptx/scripts/thumbnail.py template.pptx [output_prefix]
--cols 4 (range: 3-6)# Convert PPTX to PDF, then PDF pages to JPEG
soffice --headless --convert-to pdf template.pptx
pdftoppm -jpeg -r 150 template.pdf slide
# Specific range: pdftoppm -jpeg -r 150 -f 2 -l 5 template.pdf slide
IMPORTANT: Write concise code. Avoid verbose variable names, redundant operations, and unnecessary print statements.
pip install "markitdown[pptx]" (text extraction)npm install -g pptxgenjs (creating presentations)npm install -g playwright (HTML rendering)npm install -g react-icons react react-dom (icons)npm install -g sharp (SVG rasterization)sudo apt-get install libreoffice (PDF conversion)sudo apt-get install poppler-utils (pdftoppm)pip install defusedxml (secure XML parsing)