artwist-polyakov/github-pages-publisher
Publish static page artifacts from the publisher workspace to a GitHub Pages repository using a fine-grained token, with advisory image optimization and an original-image path. Use when a React/static page artifact is already prepared and needs to be copied into the Pages repo under a strict year/year-month/page-slug directory layout, then committed and pushed, with a final public artifact URL returned.
npx skills add https://github.com/artwist-polyakov/polyakov-claude-skills --skill github-pages-publisher
Publish already-built static artifacts to a GitHub Pages repository.
This skill is the deployment/output layer for page artifacts created by other skills.
Every published artifact must go into this path shape inside the target repo:
<year>/<year>-<month>/<page-slug>/
Example:
2026/2026-03/my-landing-page/Never publish flat at repo root.
Never skip the year or year-month nesting.
Input should already exist as one of these:
This skill should not do major frontend design work. It should package and publish what already exists.
index.html as entrypoint inside the target page directoryAlways return the final public URL of the artifact.
Assume GitHub Pages serves from the repo's configured Pages base URL.
The final URL should be:
<pages-base-url>/<year>/<year>-<month>/<page-slug>/
or, if needed explicitly:
.../<page-slug>/index.html
Prefer the clean directory URL when it resolves correctly.
YYYYYYYY-MM<year>/<year-month>/<page-slug>/index.html normally)python3 scripts/publish_static.py --source <dir-or-html> --slug <name> [--date YYYY-MM-DD] [--image-max-kb 500]
The script copies the artifact into YYYY/YYYY-MM/slug/, optimizes oversized .jpg, .jpeg, .png, and .webp images, commits, pushes, and prints the final public URL.
Image optimization is a recommendation, not a hard requirement. By default, the publishing script tries to keep each raster image under 500KB by stripping metadata, recompressing, and resizing long edges when needed.
Use --image-max-kb <kb> for a different target.
Use --keep-large-images or --image-max-kb 0 when the user explicitly needs original-size images (for example, a full-resolution infographic, map, or downloadable media asset).
The original --source artifact is not changed. Optimization happens only after files are copied into the publish repo target directory. If Pillow/uv is unavailable or optimization fails, continue publishing originals and mention the warning.
Manual console run for a prepared artifact:
uv run --with pillow python3 scripts/optimize_images.py <artifact-dir> --max-kb 500
Before pushing, the agent must verify:
index.html entrypointRead config/README.md for required environment variables and URL derivation.
Read if needed:
references/publish-checklist.md — operational checklist before pushingTake artwist-polyakov/github-pages-publisher from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.