Skip to content

Add image-based workflow for PPTX skill with CI#135

Open
robtaylor wants to merge 3 commits into
anthropics:mainfrom
robtaylor:main
Open

Add image-based workflow for PPTX skill with CI#135
robtaylor wants to merge 3 commits into
anthropics:mainfrom
robtaylor:main

Conversation

@robtaylor
Copy link
Copy Markdown

Summary

This PR adds an image-based workflow for the PPTX skill that handles complex HTML slides (SVG diagrams, CSS gradients, intricate layouts) that the existing html2pptx converter struggles with.

Key additions:

  • Puppeteer-based HTML→PNG rendering (render-slides.js)
  • PPTX creation from PNG images with diagram overlay support (create-from-images.js)
  • Proper dependency management with package.json + npm and pyproject.toml + uv
  • Lock files for reproducible builds
  • Comprehensive test suite with Claude-style test slides
  • CI workflow with GitHub Actions (3 jobs: Node.js, Python deps, Integration)

Test Slides

The test suite includes slides that simulate what Claude would generate for professional presentations:

Slide Description
architecture-slide.html System architecture with SVG diagrams, gradients, arrows
metrics-slide.html Dashboard with KPI cards, line chart, donut chart
diagram-overlay.html Standalone data flow diagram for overlay testing
test-slide.html Basic slide with SVG and CSS gradients

Test Plan

  • CI passes (Node.js workflow: 24s, Python deps: 10s, Integration: 28s)
  • Tests render 4 complex HTML slides to PNG
  • Tests create PPTX with diagram overlays
  • Tests verify PPTX structure (ZIP signature)

Files Changed (15 files, +4122/-10)

Category Files
Scripts render-slides.js, create-from-images.js
Dependencies package.json, package-lock.json, pyproject.toml, uv.lock
Documentation SKILL.md (updated)
Tests test-workflow.js, 4 test slide HTML files
CI .github/workflows/test-pptx-skill.yml
Config .gitignore (updated)

🤖 Generated with Claude Code

robtaylor and others added 3 commits December 9, 2025 10:34
This adds a Puppeteer-based rendering workflow for complex HTML slides that
don't convert well using the html2pptx approach.

New Scripts:
- scripts/render-slides.js: Render HTML slides to PNG at 2x scale
- scripts/create-from-images.js: Create PPTX from rendered images with
  support for diagram overlays via JSON config

New Configuration:
- package.json: Node.js dependencies (pptxgenjs, puppeteer)
- pyproject.toml: Python dependencies via uv (markitdown, defusedxml,
  python-pptx)

CI/CD:
- .github/workflows/test-pptx-skill.yml: GitHub Actions workflow with:
  - Node.js workflow tests (render slides, create PPTX)
  - Python dependency tests
  - Integration test with markitdown PPTX extraction

Tests:
- test/test-workflow.js: Automated tests for render and create scripts
- test/slides/test-slide.html: Test fixture with gradient, SVG, flexbox

Documentation:
- SKILL.md: Added "Image-Based Workflow" section with setup instructions,
  workflow guide, and diagram overlay examples

The image-based workflow addresses issues with html2pptx not handling:
- Complex SVG diagrams
- CSS gradients and advanced styling
- Intricate flexbox/grid layouts

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- Add package-lock.json for Node.js dependencies
- Add uv.lock for Python dependencies

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
- architecture-slide.html: System architecture with SVG diagrams
- metrics-slide.html: Dashboard with KPIs and charts
- diagram-overlay.html: Standalone diagram for overlay testing
- Enhanced test-workflow.js with 6 comprehensive tests
- Updated .gitignore to exclude node_modules and .venv

Test slides represent the kind of complex HTML that Claude would
generate when asked to create professional presentations.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Ashutosh0x pushed a commit to Ashutosh0x/skills that referenced this pull request Feb 5, 2026
…hropics#135)

The --all flag was incorrectly setting options.global = true, causing
installations to go to the global directory (~/.agents/skills/) even
when the user didn't specify the -g flag.

This fix removes the line that sets options.global = true when --all
is used. The --all flag now only:
- Sets options.yes = true (skip prompts)
- Selects all skills automatically
- Selects all agents automatically

Installation location is now correctly determined only by the -g flag
or user prompt, as intended.

Fixes: vercel-labs/skills#133

Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant