GitHub Pages Deploy
Deploy static content to GitHub Pages using a dedicated Pages branch in a GitHub repository.
This skill is similar in spirit to zero-config preview deploy skills, but GitHub Pages has different constraints:
- Authentication is required. Use
GITHUB_TOKENorGH_TOKEN. - The deployment is tied to a GitHub repository you control.
- Publish latency is usually slower than Vercel. Expect build time.
- The skill manages a dedicated branch,
gh-pagesby default.
Use when
- The user wants a durable static URL under
github.io - The content is plain HTML, CSS, JS, or a prebuilt static directory
- The user wants repository-backed hosting instead of a claimable preview deployment
Requirements
pwshgitGITHUB_TOKENorGH_TOKEN
Token requirements:
- Classic PAT:
repo - Fine-grained PAT: repository
Contents: write,Administration: write,Pages: write
Usage
pwsh {{skill_dir}}/scripts/deploy.ps1 -Path ./site -Repo owner/repo
pwsh {{skill_dir}}/scripts/deploy.ps1 -Path ./diagram.html -Repo my-diagram
Arguments
-PathRequired. A static site directory or a single.htmlfile.-RepoRequired. Eitherowner/repoor justrepo. If onlyrepois provided, the authenticated user becomes the owner.-OwnerOptional override when-Repois only a repository name.-BranchOptional. Defaults togh-pages.-CNameOptional custom domain. The script also writes aCNAMEfile.-NoWaitOptional. Return immediately after push and Pages configuration.
Behavior
- Resolves GitHub auth from
GITHUB_TOKENorGH_TOKEN - Stages the input into a temp directory
- If the input is a single HTML file, renames it to
index.html - Ensures
.nojekyllexists so GitHub Pages serves assets literally - Creates the target repository if it does not exist
- Updates the dedicated Pages branch without touching the caller's working tree
- Configures GitHub Pages to serve from that branch root
- Waits for the latest Pages build unless
-NoWaitis set - Prints a human-readable summary and one JSON object on stdout
Output
The script prints progress to stderr and emits a JSON object to stdout:
{"siteUrl":"https://owner.github.io/repo/","repoUrl":"https://github.com/owner/repo","owner":"owner","repo":"repo","branch":"gh-pages","createdRepo":true,"pagesStatus":"built","buildStatus":"built","commitSha":"abc123..."}
Operational Notes
- This skill is not anonymous. There is no claimable deploy model.
- The target branch is deployment-managed content. Do not point it at a branch you edit manually unless that is intentional.
- Existing Pages configuration on the same repository will be updated to the selected branch and root path.
- A repository named
owner.github.iopublishes at the user or org root domain. Other repositories publish under/repo/.
Failure Modes
- Missing token: export
GITHUB_TOKENorGH_TOKEN - Missing permissions: ensure the token can create repos and manage Pages
- Private Pages limitations: use a public repository unless your plan supports private Pages
- Build delay: use
-NoWaitif you only need the target URL and will verify later