enuno-github-pages
SKILL.md
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