publish-to-pages
Publish presentations and web content to GitHub Pages. Converts PPTX, PDF, HTML, or Google Slides to a live GitHub Pages URL. Handles repo creation, file conversion, Pages enablement, and returns the live URL. Use when the user wants to publish, deploy, or share a presentation or HTML file via GitHub Pages.
Security Assessment
About publish-to-pages
The publish-to-pages skill publishes presentations and web content to GitHub Pages in a single flow. It converts PPTX, PDF, HTML, or Google Slides into a live GitHub Pages URL, handling repository creation, file conversion, Pages enablement, and returning the final live URL. It is intended for when a user wants to publish, deploy, or share a presentation or HTML file via GitHub Pages without performing each step manually.
The skill first runs a silent prerequisites check for the gh CLI (and its authentication via gh auth status) and python3, treating poppler-utils as optional for PDF conversion. It detects input type by extension or URL: .html/.htm files are used directly as index.html, .pptx files are converted with scripts/convert-pptx.py, .pdf files with scripts/convert-pdf.py (requiring poppler-utils' pdftoppm), and Google Slides URLs are downloaded as PPTX via a curl export call before conversion. Both conversion scripts automatically switch to an external assets mode for large inputs (PPTX over 20MB or with more than 50 images, PDF over 20MB or with more than 50 pages), saving images or page PNGs into an assets/ directory to stay under GitHub's 100MB file limit, and this can be forced with --external-assets or --no-external-assets. Publishing is done with scripts/publish.sh, which creates the repo, pushes index.html plus any assets/, and enables GitHub Pages. Repos are public by default; --private is available but Pages on private repos requires a Pro, Team, or Enterprise plan.
The skill outputs the repository URL and the live https://USERNAME.github.io/REPO_NAME/ URL, noting Pages takes 1-2 minutes to go live. It includes error handling for existing repo names (suggesting a numeric or date suffix), Pages enablement failures (still returning the repo URL), failed PPTX conversion (pip install python-pptx), failed PDF conversion (installing poppler-utils via apt or brew), and inaccessible Google Slides. It targets developers and content creators who want to quickly share slides or HTML online. Requirements include an authenticated gh CLI and python3, with python-pptx and poppler-utils needed for the respective conversions.
FAQ
What input formats can it publish?
It handles HTML files (.html/.htm), PPTX files (.pptx), PDF files (.pdf), and Google Slides URLs (URLs containing docs.google.com/presentation). Input type is detected from the extension or URL.
What are the prerequisites?
The gh CLI (installed and authenticated via gh auth login) and python3 are required. poppler-utils (for pdftoppm) is optional and only needed for PDF conversion, and python-pptx is needed for PPTX conversion (pip install python-pptx).
How does it handle large presentations and GitHub's file size limit?
Both conversion scripts automatically switch to external assets mode for large files, PPTX over 20MB or with more than 50 images and PDF over 20MB or with more than 50 pages, saving images or page PNGs into an assets/ directory to keep files under GitHub's 100MB limit. You can force this with --external-assets or --no-external-assets. Files over 150MB print a warning.
Can I publish to a private repository?
Yes. Repos are created public by default, but you can pass --private (or 'private' to publish.sh). Note that GitHub Pages on private repos requires a Pro, Team, or Enterprise plan.
What happens if the repository name already exists or Pages fails to enable?
If the repo already exists, the skill suggests appending a number (my-slides-2) or a date (my-slides-2026). If Pages enablement fails, it still returns the repo URL so you can enable Pages manually in the repo Settings.
Install publish-to-pages
Quick Setup:
- Copy the skill folder to
.claude/skills/ - Claude will automatically detect and use the skill
Repository
github/awesome-copilot