name: github-pages description: GitHub Pages static site hosting - setup, configuration, custom domains, Jekyll, and deployment
GitHub Pages Skill
Use when working with GitHub Pages static site hosting, generated from official GitHub documentation.
When to Use This Skill
This skill should be triggered when:
- Creating or configuring a GitHub Pages site
- Setting up custom domains for GitHub Pages
- Configuring publishing sources (branch, folder, or GitHub Actions)
- Working with Jekyll themes and plugins
- Troubleshooting GitHub Pages deployment issues
- Setting up HTTPS for GitHub Pages sites
- Understanding GitHub Pages limitations and features
Quick Reference
Site Types
| Type | Repository Name | URL |
|---|---|---|
| User site | <username>.github.io | https://<username>.github.io |
| Organization site | <org>.github.io | https://<org>.github.io |
| Project site | Any name | https://<username>.github.io/<repo> |
Publishing Sources
- Branch publishing - Deploy from a specific branch (e.g.,
main,gh-pages) - Folder publishing - Deploy from
/(root) or/docsfolder - GitHub Actions - Custom workflow for building and deploying
Common Patterns
Create a GitHub Pages site
# Create repository named <username>.github.io for user site
# Or any name for project site
# Add index.html or index.md
echo "# Hello World" > index.md
git add index.md
git commit -m "Initial GitHub Pages site"
git push
Configure publishing source
- Go to repository Settings > Pages
- Under "Build and deployment", select source:
- "Deploy from a branch" for static files
- "GitHub Actions" for custom builds
- Select branch and folder if using branch deployment
Set up custom domain
# Add CNAME file to repository root
echo "example.com" > CNAME
git add CNAME && git commit -m "Add custom domain" && git push
DNS Configuration:
- Apex domain (example.com): Add A records pointing to GitHub IPs
- Subdomain (www.example.com): Add CNAME record pointing to
<username>.github.io
GitHub IP addresses for A records:
185.199.108.153
185.199.109.153
185.199.110.153
185.199.111.153
Jekyll configuration
# _config.yml
title: My Site
description: A GitHub Pages site
theme: minima
plugins:
- jekyll-feed
- jekyll-seo-tag
Custom GitHub Actions workflow
# .github/workflows/pages.yml
name: Deploy to GitHub Pages
on:
push:
branches: ["main"]
permissions:
contents: read
pages: write
id-token: write
jobs:
build:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Build
run: |
# Your build commands here
npm run build
- uses: actions/upload-pages-artifact@v3
with:
path: ./dist
deploy:
needs: build
runs-on: ubuntu-latest
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
steps:
- uses: actions/deploy-pages@v4
id: deployment
Disable Jekyll processing
# Add .nojekyll file for non-Jekyll static sites
touch .nojekyll
git add .nojekyll && git commit -m "Disable Jekyll" && git push
Supported Static Site Generators
GitHub provides workflow templates for:
- Jekyll (default)
- Next.js
- Nuxt.js
- Gatsby
- Hugo
- Astro
- Eleventy (11ty)
- And more...
Limitations
- No server-side languages (PHP, Ruby, Python)
- Repository size limits apply
- Bandwidth and build time limits for free tier
- Private repos require GitHub Pro/Team/Enterprise
Reference Files
This skill includes comprehensive documentation in references/:
- getting_started.md - Site creation, publishing sources, workflows, HTTPS (5 articles)
- custom_domains.md - Domain setup, DNS configuration (2 articles)
- jekyll.md - Jekyll integration, themes, plugins (2 articles)
- troubleshooting.md - 404 errors and common issues (1 article)
Use view to read specific reference files when detailed information is needed.
Working with This Skill
For Beginners
Start with references/getting_started.md for foundational concepts on creating your first GitHub Pages site.
For Custom Domains
See references/custom_domains.md for DNS configuration and HTTPS setup.
For Jekyll Users
Check references/jekyll.md for theme customization and Jekyll-specific features.
For Debugging
Review references/troubleshooting.md for common issues like 404 errors.
Common Issues
404 Error
- Check repository visibility (must be public for free accounts)
- Verify publishing source is configured correctly
- Ensure index.html or index.md exists
- Wait up to 10 minutes for changes to propagate
Build Failures
- Check Jekyll syntax in _config.yml
- Verify Gemfile dependencies are compatible
- Review GitHub Actions logs for errors
Custom Domain Not Working
- Verify DNS records are correct
- Check CNAME file is in repository root
- Ensure HTTPS is enforced in repository settings
- DNS propagation can take up to 24 hours
Notes
- This skill was generated from official GitHub documentation
- Reference files preserve the structure and examples from source docs
- Content fetched via GitHub's Article API for accuracy
- Last updated: January 2026
Updating
To refresh this skill with updated documentation:
- Re-run the scraper using GitHub's Article API
- The skill will be rebuilt with the latest information