{"id":"b7c3c303-d030-4e1a-a70b-5c19b056d7b1","shortId":"D9uawJ","kind":"skill","title":"publish-to-pages","tagline":"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","description":"# publish-to-pages\n\nPublish any presentation or web content to GitHub Pages in one shot.\n\n## 1. Prerequisites Check\n\nRun these silently. Only surface errors:\n\n```bash\ncommand -v gh >/dev/null || echo \"MISSING: gh CLI — install from https://cli.github.com\"\ngh auth status &>/dev/null || echo \"MISSING: gh not authenticated — run 'gh auth login'\"\ncommand -v python3 >/dev/null || echo \"MISSING: python3 (needed for PPTX conversion)\"\n```\n\n`poppler-utils` is optional (PDF conversion via `pdftoppm`). Don't block on it.\n\n## 2. Input Detection\n\nDetermine input type from what the user provides:\n\n| Input | Detection |\n|-------|-----------|\n| HTML file | Extension `.html` or `.htm` |\n| PPTX file | Extension `.pptx` |\n| PDF file | Extension `.pdf` |\n| Google Slides URL | URL contains `docs.google.com/presentation` |\n\nAsk the user for a **repo name** if not provided. Default: filename without extension.\n\n## 3. Conversion\n\n### Large File Handling\n\nBoth conversion scripts automatically detect large files and switch to **external assets mode**:\n- **PPTX:** Files >20MB or with >50 images → images saved as separate files in `assets/`\n- **PDF:** Files >20MB or with >50 pages → page PNGs saved in `assets/`\n- Files >150MB print a warning (PPTX suggests PDF path instead)\n\nThis keeps individual files well under GitHub's 100MB limit. Small files still produce a single self-contained HTML.\n\nYou can force the behavior with `--external-assets` or `--no-external-assets`.\n\n### HTML\nNo conversion needed. Use the file directly as `index.html`.\n\n### PPTX\nRun the conversion script:\n```bash\npython3 SKILL_DIR/scripts/convert-pptx.py INPUT_FILE /tmp/output.html\n# For large files, force external assets:\npython3 SKILL_DIR/scripts/convert-pptx.py INPUT_FILE /tmp/output.html --external-assets\n```\nIf `python-pptx` is missing, tell the user: `pip install python-pptx`\n\n### PDF\nConvert with the included script (requires `poppler-utils` for `pdftoppm`):\n```bash\npython3 SKILL_DIR/scripts/convert-pdf.py INPUT_FILE /tmp/output.html\n# For large files, force external assets:\npython3 SKILL_DIR/scripts/convert-pdf.py INPUT_FILE /tmp/output.html --external-assets\n```\nEach page is rendered as a PNG and embedded into HTML with slide navigation.\nIf `pdftoppm` is missing, tell the user: `apt install poppler-utils` (or `brew install poppler` on macOS).\n\n### Google Slides\n1. Extract the presentation ID from the URL (the long string between `/d/` and `/`)\n2. Download as PPTX:\n```bash\ncurl -L \"https://docs.google.com/presentation/d/PRESENTATION_ID/export/pptx\" -o /tmp/slides.pptx\n```\n3. Then convert the PPTX using the convert script above.\n\n## 4. Publishing\n\n### Visibility\nRepos 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.\n\n### Publish\n```bash\nbash SKILL_DIR/scripts/publish.sh /path/to/index.html REPO_NAME public \"Description\"\n```\n\nPass `private` instead of `public` if the user requests it.\n\nThe script creates the repo, pushes `index.html` (plus `assets/` if present), and enables GitHub Pages.\n\n**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.\n\n## 5. Output\n\nTell the user:\n- **Repository:** `https://github.com/USERNAME/REPO_NAME`\n- **Live URL:** `https://USERNAME.github.io/REPO_NAME/`\n- **Note:** Pages takes 1-2 minutes to go live.\n\n## Error Handling\n\n- **Repo already exists:** Suggest appending a number (`my-slides-2`) or a date (`my-slides-2026`).\n- **Pages enablement fails:** Still return the repo URL. User can enable Pages manually in repo Settings.\n- **PPTX conversion fails:** Tell user to run `pip install python-pptx`.\n- **PDF conversion fails:** Suggest installing `poppler-utils` (`apt install poppler-utils` or `brew install poppler`).\n- **Google Slides download fails:** The presentation may not be publicly accessible. Ask user to make it viewable or download the PPTX manually.","tags":["publish","pages","awesome","copilot","github","agent-skills","agents","custom-agents","github-copilot","hacktoberfest","prompt-engineering"],"capabilities":["skill","source-github","skill-publish-to-pages","topic-agent-skills","topic-agents","topic-awesome","topic-custom-agents","topic-github-copilot","topic-hacktoberfest","topic-prompt-engineering"],"categories":["awesome-copilot"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/github/awesome-copilot/publish-to-pages","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add github/awesome-copilot","source_repo":"https://github.com/github/awesome-copilot","install_from":"skills.sh"}},"qualityScore":"0.700","qualityRationale":"deterministic score 0.70 from registry signals: · indexed on github topic:agent-skills · 33270 github stars · SKILL.md body (4,173 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T18:52:21.328Z","embedding":null,"createdAt":"2026-04-18T20:31:00.600Z","updatedAt":"2026-05-18T18:52:21.328Z","lastSeenAt":"2026-05-18T18:52:21.328Z","tsv":"'-2':550 '/d':394 '/dev/null':80,91,104 '/path/to/index.html':459 '/presentation':160 '/presentation/d/presentation_id/export/pptx':405 '/repo_name/':545 '/tmp/output.html':284,296,332,344 '/tmp/slides.pptx':407 '/username/repo_name':540 '1':67,382,549 '100mb':237 '150mb':220 '2':126,396,567 '2026':574 '20mb':195,209 '3':175,408 '4':418 '5':532 '50':198,212 'access':630 'alongsid':513 'alreadi':558 'append':561 'apt':369,611 'ask':161,631 'asset':191,206,218,257,262,290,299,338,347,482,492,502,511,524 'auth':89,99 'authent':96 'automat':183,506 'bash':76,278,326,400,455,456 'behavior':253 'block':123 'brew':375,617 'check':69 'cli':84 'cli.github.com':87 'command':77,101 'contain':157,247 'content':9,60 'convers':30,111,118,176,181,265,276,592,604 'convert':13,315,410,415 'copi':509 'creat':423,476 'creation':28 'curl':401 'date':570 'default':171,426 'deploy':45 'descript':463 'detect':128,138,184,507 'determin':129 'dir/scripts/convert-pdf.py':329,341 'dir/scripts/convert-pptx.py':281,293 'dir/scripts/publish.sh':458 'direct':270 'directori':512,525,531 'docs.google.com':159,404 'docs.google.com/presentation':158 'docs.google.com/presentation/d/presentation_id/export/pptx':403 'download':397,622,638 'echo':81,92,105 'embed':356 'enabl':32,486,576,585 'enterpris':452 'error':75,555 'exist':559 'extens':141,147,151,174 'extern':190,256,261,289,298,337,346,491 'external-asset':255,297,345 'extract':383 'fail':577,593,605,623 'file':29,140,146,150,178,186,194,204,208,219,232,240,269,283,287,295,331,335,343,500,516,521 'filenam':172 'forc':251,288,336 'gh':79,83,88,94,98 'github':11,23,62,235,442,487 'github.com':539 'github.com/username/repo_name':538 'go':553 'googl':18,153,380,620 'handl':26,179,556 'htm':144 'html':16,139,142,248,263,358,498,515,520 'id':386 'imag':199,200 'includ':318 'index.html':272,480 'individu':231 'input':127,130,137,282,294,330,342 'instal':85,310,370,376,599,607,612,618 'instead':228,466 'keep':230 'l':402 'larg':177,185,286,334 'limit':238 'live':22,36,541,554 'login':100 'long':391 'maco':379 'make':517,634 'manual':587,641 'may':626 'minut':551 'miss':82,93,106,305,365 'mode':192,493 'my-slid':564,571 'name':167,461 'navig':361 'need':108,266 'no-external-asset':259 'note':440,489,546 'number':563 'o':406 'one':65 'option':116 'output':497,533 'page':4,12,24,31,54,63,213,214,349,443,488,547,575,586 'parent':530 'pass':464 'path':227 'pdf':15,117,149,152,207,226,314,603 'pdftoppm':120,325,363 'pip':309,598 'plan':453 'plus':481 'png':354 'pngs':215 'poppler':113,322,372,377,609,614,619 'poppler-util':112,321,371,608,613 'pptx':14,110,145,148,193,224,273,303,313,399,412,591,602,640 'prerequisit':68 'present':6,49,57,385,484,625 'print':221 'privat':431,435,438,445,465 'pro':449 'produc':242 'provid':136,170 'public':424,462,468,629 'publish':2,5,44,52,55,419,454,504 'publish-to-pag':1,51 'push':479 'python':302,312,601 'python-pptx':301,311,600 'python3':103,107,279,291,327,339 'refer':499 'render':351 'repo':27,166,421,436,446,460,478,557,581,589 'repositori':537 'request':472 'requir':320,447 'return':34,579 'run':70,97,274,597 'save':201,216 'script':182,277,319,416,475,505 'self':246 'self-contain':245 'separ':203 'set':590 'share':47 'shot':66 'silent':72 'singl':244 'skill':280,292,328,340,457 'skill-publish-to-pages' 'slide':19,154,360,381,566,573,621 'small':239 'source-github' 'specifi':430 'status':90 'still':241,578 'string':392 'suggest':225,560,606 'sure':518 'surfac':74 'switch':188 'take':548 'team':450 'tell':306,366,534,594 'topic-agent-skills' 'topic-agents' 'topic-awesome' 'topic-custom-agents' 'topic-github-copilot' 'topic-hacktoberfest' 'topic-prompt-engineering' 'type':131 'url':25,37,155,156,389,542,582 'use':38,267,413,437,495 'user':41,135,163,308,368,429,471,536,583,595,632 'username.github.io':544 'username.github.io/repo_name/':543 'util':114,323,373,610,615 'v':78,102 'via':119 'viewabl':636 'visibl':420 'want':42,433 'warn':223 'web':8,59 'well':233 'without':173","prices":[{"id":"80e3d85d-a164-4163-95a2-fc0a6ede8f03","listingId":"b7c3c303-d030-4e1a-a70b-5c19b056d7b1","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"github","category":"awesome-copilot","install_from":"skills.sh"},"createdAt":"2026-04-18T20:31:00.600Z"}],"sources":[{"listingId":"b7c3c303-d030-4e1a-a70b-5c19b056d7b1","source":"github","sourceId":"github/awesome-copilot/publish-to-pages","sourceUrl":"https://github.com/github/awesome-copilot/tree/main/skills/publish-to-pages","isPrimary":false,"firstSeenAt":"2026-04-18T21:50:42.530Z","lastSeenAt":"2026-05-18T18:52:21.328Z"},{"listingId":"b7c3c303-d030-4e1a-a70b-5c19b056d7b1","source":"skills_sh","sourceId":"github/awesome-copilot/publish-to-pages","sourceUrl":"https://skills.sh/github/awesome-copilot/publish-to-pages","isPrimary":true,"firstSeenAt":"2026-04-18T20:31:00.600Z","lastSeenAt":"2026-05-07T22:40:31.546Z"}],"details":{"listingId":"b7c3c303-d030-4e1a-a70b-5c19b056d7b1","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"github","slug":"publish-to-pages","github":{"repo":"github/awesome-copilot","stars":33270,"topics":["agent-skills","agents","ai","awesome","custom-agents","github-copilot","hacktoberfest","prompt-engineering"],"license":"mit","html_url":"https://github.com/github/awesome-copilot","pushed_at":"2026-05-18T01:26:59Z","description":"Community-contributed instructions, agents, skills, and configurations to help you make the most of GitHub Copilot.","skill_md_sha":"5f279d0528d989dbb59d6fa5d81ce8e8a445ef00","skill_md_path":"skills/publish-to-pages/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/github/awesome-copilot/tree/main/skills/publish-to-pages"},"layout":"multi","source":"github","category":"awesome-copilot","frontmatter":{"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."},"skills_sh_url":"https://skills.sh/github/awesome-copilot/publish-to-pages"},"updatedAt":"2026-05-18T18:52:21.328Z"}}