New to Claude Skills? Learn how to install them →

github on GitHub

Publish to Pages

OfficialFree

Easily publish presentations to GitHub Pages.

by github37.7k stars on github/awesome-copilot
2 views
Updated Aug 10, 2026
Get this skill

Free · Opens the source repo

What Publish to Pages does

Publish to Pages is a skill designed for developers and designers who need to quickly deploy presentations or web content to GitHub Pages. This skill streamlines the process of converting various file types, including PPTX, PDF, and HTML, into a live web format that can be shared easily. It automates the creation of a GitHub repository, handles file conversions, and enables GitHub Pages, all while providing the user with a live URL for immediate access to their content.

The skill supports multiple input formats and intelligently detects the type of file provided. For presentations in PPTX format, it utilizes a Python script to convert the slides into HTML, ensuring that images and content are properly formatted for web display. For PDF files, it employs another script that converts pages into PNG images, which are then embedded within an HTML file. This approach not only maintains the integrity of the original content but also ensures compatibility with web standards. Users can also directly use HTML files without any conversion, making it versatile for different types of web content.

When it comes to publishing, the skill creates a public repository by default, although users can specify a private option if they have the appropriate GitHub plan. The publish script takes care of pushing the converted files to the repository and enabling GitHub Pages, providing users with a straightforward way to share their work. With error handling for common issues, such as missing dependencies or existing repositories, Publish to Pages aims to minimize friction in the deployment process.

This skill is particularly useful for educators, presenters, and anyone who frequently shares visual content online. By automating the technical aspects of publishing, it allows users to focus on their presentations rather than the underlying processes.

When to use it

Use this skill when you need to quickly publish a presentation or web content to GitHub Pages without manual setup.

When not to use it

This skill is not suitable for users who require custom configurations for their GitHub repositories or need to publish content beyond the supported file types.

What you can build with it

Publishing a Class Presentation

A teacher can convert their PPTX presentation into a live GitHub Pages site to share with students.

Sharing Project Documentation

A developer can publish HTML documentation directly to GitHub Pages for easy access by team members.

Converting and Sharing PDFs

A user can convert a PDF report into a web format and publish it for stakeholders to view online.

How to install Publish to Pages

View source

1. Install with the skills CLI

npx skills add github/awesome-copilot/publish-to-pages --agent claude-code

2. Or install it manually

Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.

Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs

Inside SKILL.md

Written by github

publish-to-pages

Publish any presentation or web content to GitHub Pages in one shot.

1. Prerequisites Check

Run these silently. Only surface errors:

command -v gh >/dev/null || echo "MISSING: gh CLI — install from https://cli.github.com"
gh auth status &>/dev/null || echo "MISSING: gh not authenticated — run 'gh auth login'"
command -v python3 >/dev/null || echo "MISSING: python3 (needed for PPTX conversion)"

poppler-utils is optional (PDF conversion via pdftoppm). Don't block on it.

2. Input Detection

Determine input type from what the user provides:

InputDetection
HTML fileExtension .html or .htm
PPTX fileExtension .pptx
PDF fileExtension .pdf
Google Slides URLURL contains docs.google.com/presentation

Ask the user for a repo name if not provided. Default: filename without extension.

3. Conversion

Large File Handling

Both conversion scripts automatically detect large files and switch to external assets mode:

  • PPTX: Files >20MB or with >50 images → images saved as separate files in assets/
  • PDF: Files >20MB or with >50 pages → page PNGs saved in assets/
  • Files >150MB print a warning (PPTX suggests PDF path instead)

This keeps individual files well under GitHub's 100MB limit. Small files still produce a single self-contained HTML.

You can force the behavior with --external-assets or --no-external-assets.

HTML

No conversion needed. Use the file directly as index.html.

PPTX

Run the conversion script:

python3 SKILL_DIR/scripts/convert-pptx.py INPUT_FILE /tmp/output.html
# For large files, force external assets:
python3 SKILL_DIR/scripts/convert-pptx.py INPUT_FILE /tmp/output.html --external-assets

If python-pptx is missing, tell the user: pip install python-pptx

PDF

Convert with the included script (requires poppler-utils for pdftoppm):

python3 SKILL_DIR/scripts/convert-pdf.py INPUT_FILE /tmp/output.html
# For large files, force external assets:
python3 SKILL_DIR/scripts/convert-pdf.py INPUT_FILE /tmp/output.html --external-assets

Each page is rendered as a PNG and embedded into HTML with slide navigation. If pdftoppm is missing, tell the user: apt install poppler-utils (or brew install poppler on macOS).

Google Slides

  1. Extract the presentation ID from the URL (the long string between /d/ and /)
  2. Download as PPTX:
curl -L "https://docs.google.com/presentation/d/PRESENTATION_ID/export/pptx" -o /tmp/slides.pptx
  1. Then convert the PPTX using the convert script above.

4. Publishing

Visibility

Repos are created public by default. If the user specifies private (or wants a private repo), use --private — but note that GitHub Pages on private repos requires a Pro, Team, or Enterprise plan.

Publish

bash SKILL_DIR/scripts/publish.sh /path/to/index.html REPO_NAME public "Description"

Pass private instead of public if the user requests it.

The script creates the repo, pushes index.html (plus assets/ if present), and enables GitHub Pages.

Note: When external assets mode is used, the output HTML references files in assets/. The publish script automatically detects and copies the assets/ directory alongside the HTML file. Make sure the HTML file and its assets/ directory are in the same parent directory.

5. Output

Tell the user:

  • Repository: https://github.com/USERNAME/REPO_NAME
  • Live URL: https://USERNAME.github.io/REPO_NAME/
  • Note: Pages takes 1-2 minutes to go live.

Error Handling

  • Repo already exists: Suggest appending a number (my-slides-2) or a date (my-slides-2026).
  • Pages enablement fails: Still return the repo URL. User can enable Pages manually in repo Settings.
  • PPTX conversion fails: Tell user to run pip install python-pptx.
  • PDF conversion fails: Suggest installing poppler-utils (apt install poppler-utils or brew install poppler).
  • Google Slides download fails: The presentation may not be publicly accessible. Ask user to make it viewable or download the PPTX manually.

Frequently asked questions about Publish to Pages

Similar skills