PluginBench
Skill
Official
Fail
Audit score 45

publish-to-pages

github/awesome-copilot

Publish presentations and web content to GitHub Pages with automatic format conversion.

What is publish-to-pages?

Converts PPTX, PDF, HTML, or Google Slides to a live GitHub Pages URL in one command. Handles repository creation, file conversion, and Pages enablement automatically. Use this when you need to share or deploy a presentation or web content publicly.

  • Converts PPTX, PDF, HTML, and Google Slides to GitHub Pages-hosted content
  • Automatically detects input format and handles large files with external assets mode
  • Creates public or private GitHub repositories and enables Pages
  • Returns live GitHub Pages URL (https://USERNAME.github.io/REPO_NAME/)
  • Handles file conversion with python-pptx for PPTX and pdftoppm for PDF
  • Manages assets directory for presentations with multiple images or pages

How to install publish-to-pages

npx skills add https://github.com/github/awesome-copilot --skill publish-to-pages
Prerequisites
  • GitHub CLI (gh) installed and authenticated
  • Python 3 (for PPTX and PDF conversion)
  • poppler-utils optional (for PDF conversion; install via apt or brew)
  • python-pptx package (installed via pip if missing)
Claude Code
Cursor
Windsurf
Cline

How to use publish-to-pages

  1. 1.Prepare your input file (PPTX, PDF, HTML) or Google Slides URL
  2. 2.Run the skill and provide the file path or URL when prompted
  3. 3.Optionally specify a custom repository name (defaults to filename)
  4. 4.Choose public or private visibility (public by default)
  5. 5.Wait 1-2 minutes for GitHub Pages to go live
  6. 6.Share the returned live URL (https://USERNAME.github.io/REPO_NAME/)

Use cases

Good for
  • Share a PowerPoint presentation as a live web URL without manual conversion
  • Deploy a PDF document as an interactive HTML slideshow
  • Publish an HTML file to GitHub Pages with one command
  • Convert Google Slides to a standalone GitHub Pages site
  • Host large presentations by automatically splitting assets into separate files
Who it's for
  • Presenters sharing slides with teams or audiences
  • Content creators publishing web-based presentations
  • Developers deploying documentation or HTML content
  • Anyone needing a quick public URL for presentations

publish-to-pages FAQ

What file formats are supported?

PPTX, PDF, HTML, and Google Slides URLs. HTML files are used directly; others are converted to HTML automatically.

How are large files handled?

Files over 20MB or with many images/pages automatically use external assets mode, storing images or page PNGs in an assets/ directory to stay under GitHub's 100MB limit.

Can I make the repository private?

Yes, specify private visibility, but note that GitHub Pages on private repos requires a Pro, Team, or Enterprise plan.

How long does it take for the site to go live?

GitHub Pages typically takes 1-2 minutes to deploy after the repository is created and enabled.

What if the repository name already exists?

The skill will suggest appending a number (e.g., my-slides-2) or a date (e.g., my-slides-2026) to create a unique name.

Full instructions (SKILL.md)

Source of truth, from github/awesome-copilot.


name: publish-to-pages description: '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.'

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.

Related skills

More from github/awesome-copilot and the wider catalog.

PYpytest-coverage logo

pytest-coverage

Official
github/awesome-copilot

Run pytest with coverage analysis and incrementally increase test coverage to 100%.

11k installs
PYpython-mcp-server-generator logo

python-mcp-server-generator

Official
github/awesome-copilot

Generate a complete, production-ready MCP server in Python with tools, resources, and proper configuration.

9.8k installs
PYpython-pypi-package-builder logo

python-pypi-package-builder

Official
github/awesome-copilot

End-to-end skill for building, testing, linting, versioning, and publishing a production-grade Python library to PyPI. Covers all four build backends (setuptools+setuptools_scm, hatchling, flit, poetry), PEP 440 versioning, semantic versioning, dynamic git-tag versioning, OOP/SOLID design, type hints (PEP 484/526/544/561), Trusted Publishing (OIDC), and the full PyPA packaging flow. Use for: creating Python packages, pip-installable SDKs, CLI tools, framework plugins, pyproject.toml setup, py.typed, setuptools_scm, semver, mypy, pre-commit, GitHub Actions CI/CD, or PyPI publishing.

762 installs
QUquality-playbook logo

quality-playbook

Official
github/awesome-copilot

Complete quality engineering audit: derives requirements, generates tests, runs multi-pass code review, executes spec audit, produces bug report with patches.

1.3k installs
QUquasi-coder logo

quasi-coder

Official
github/awesome-copilot

Turns shorthand, pseudo-code, and rough natural-language descriptions into production-quality code.

8.7k installs
REreact-audit-grep-patterns logo

react-audit-grep-patterns

Official
github/awesome-copilot

Provides the complete, verified grep scan command library for auditing React codebases before a React 18.3.1 or React 19 upgrade. Use this skill whenever running a migration audit - for both the react18-auditor and react19-auditor agents. Contains every grep pattern needed to find deprecated APIs, removed APIs, unsafe lifecycle methods, batching vulnerabilities, test file issues, dependency conflicts, and React 19 specific removals. Always use this skill when writing audit scan commands - do not rely on memory for grep syntax, especially for the multi-line async setState patterns which require context flags.

733 installsAudited