From meta-skills
Generates GitHub Pages repo with CI/CD workflow for deploying static HTML affiliate pages, bio links, or blogs. Includes custom domain and SSL setup instructions.
npx claudepluginhub affitor/affiliate-skills --plugin meta-skillsThis skill uses the workspace's default tool permissions.
Generate a complete, ready-to-deploy GitHub Pages setup for affiliate landing pages, bio link hubs, and blog posts. Outputs the full repo file structure, a GitHub Actions CI/CD workflow for automatic deploys, and step-by-step instructions for custom domain configuration with SSL. Free hosting, no credit card required.
Creates and deploys single-page static websites to GitHub Pages via autonomous workflow: project init with HTML/CSS/JS, git setup, GitHub repo creation, and Actions deployment. For portfolios, CVs, landing pages.
Deploys static or interactive HTML/CSS/JS frontend content to GitHub Pages using gh CLI. Automates repo creation, Pages enabling from main branch, homepage setup, and status checks.
Generates customized Docusaurus documentation websites from project content. Analyzes structure, iteratively builds and validates, creates git branch and commits.
Share bugs, ideas, or general feedback.
Generate a complete, ready-to-deploy GitHub Pages setup for affiliate landing pages, bio link hubs, and blog posts. Outputs the full repo file structure, a GitHub Actions CI/CD workflow for automatic deploys, and step-by-step instructions for custom domain configuration with SSL. Free hosting, no credit card required.
S5: Distribution — GitHub Pages is the most underused free hosting platform in affiliate marketing. 100GB bandwidth/month, free SSL, custom domains, and automatic deploys from Git. This skill takes any HTML output from S4 (landing page) or S5 (bio-link) and gets it live on the internet in under 10 minutes.
site:
type: string # REQUIRED — "landing-page" | "bio-link" | "blog" | "resource-page"
html_content: string # REQUIRED — the HTML content to deploy (full file or description)
# If S4 or bio-link-deployer was run, use that output automatically
title: string # REQUIRED — site title (used in repo name and meta)
description: string # OPTIONAL — meta description for SEO
repo:
name: string # OPTIONAL — GitHub repo name (auto-generated from title if omitted)
# e.g., "heygen-review" or "alex-bio-links"
username: string # OPTIONAL — GitHub username. Used in generated URLs.
# If not provided, use "[your-username]" as placeholder.
visibility: string # OPTIONAL — "public" | "private". Default: "public"
# Note: private repos require GitHub Pro for Pages
domain:
custom: string # OPTIONAL — custom domain (e.g., "links.yourdomain.com")
subdomain: string # OPTIONAL — subdomain type: "apex" | "subdomain"
# Apex = yourdomain.com, Subdomain = www.yourdomain.com
deploy:
method: string # OPTIONAL — "github-actions" | "manual". Default: "github-actions"
branch: string # OPTIONAL — source branch. Default: "main"
Chaining context: If S4 (landing-page-creator) or S5 (bio-link-deployer) was run earlier in the conversation, automatically use that HTML output as site.html_content. Do not ask the user to paste it again.
Check if an HTML page was generated earlier in the conversation (S4 landing page or bio-link page). If yes, confirm: "I'll deploy the [page type] we built earlier. What's your GitHub username?"
If no prior HTML exists:
Create the complete file and folder structure for the GitHub Pages repo.
Standard structure for a single-page site:
[repo-name]/
├── index.html # Main page (the affiliate landing page or bio link)
├── assets/
│ ├── css/
│ │ └── style.css # External CSS if extracted from HTML (optional)
│ └── images/
│ └── .gitkeep # Placeholder — add images here
├── CNAME # Only if custom domain is set
├── .github/
│ └── workflows/
│ └── deploy.yml # GitHub Actions workflow
├── .gitignore
└── README.md
For multi-page blog/resource site, add:
├── blog/
│ ├── index.html # Blog listing page
│ └── [post-slug]/
│ └── index.html # Individual post pages
├── about/
│ └── index.html
└── sitemap.xml
Write the deploy.yml file that automatically deploys to GitHub Pages on every push to main.
# .github/workflows/deploy.yml
name: Deploy to GitHub Pages
on:
push:
branches: [ main ]
workflow_dispatch: # Allow manual trigger from GitHub UI
permissions:
contents: read
pages: write
id-token: write
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v4
- name: Setup Pages
uses: actions/configure-pages@v5
- name: Upload artifact
uses: actions/upload-pages-artifact@v3
with:
path: '.' # Deploy from repo root
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
This workflow uses the official GitHub Pages Actions (no third-party dependencies, no tokens needed).
If domain.custom is provided, create a CNAME file with just the domain:
links.yourdomain.com
For apex domains (yourdomain.com), the CNAME file contains the bare domain. GitHub Pages handles the redirect from www to apex automatically when configured correctly.
Provide exact DNS records to add in the user's domain registrar (Cloudflare, Namecheap, GoDaddy, etc.).
For subdomain (e.g., links.yourdomain.com):
Type: CNAME
Name: links
Value: [username].github.io
TTL: Auto or 3600
For apex domain (yourdomain.com):
Type: A Name: @ Value: 185.199.108.153
Type: A Name: @ Value: 185.199.109.153
Type: A Name: @ Value: 185.199.110.153
Type: A Name: @ Value: 185.199.111.153
Type: AAAA Name: @ Value: 2606:50c0:8000::153
Type: AAAA Name: @ Value: 2606:50c0:8001::153
Type: AAAA Name: @ Value: 2606:50c0:8002::153
Type: AAAA Name: @ Value: 2606:50c0:8003::153
Note: GitHub's IP addresses above are current as of 2026. Always verify at https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site/managing-a-custom-domain-for-your-github-pages-site
Write a clean README for the repo:
# [Site Title]
Affiliate landing page hosted on GitHub Pages.
## Live Site
[Live URL]
## Deploy
Automatic via GitHub Actions — push to `main` triggers a deploy.
## Powered By
[Affitor](https://affitor.com)
Present all outputs in numbered sections with clear file labels.
Before presenting output, verify:
If any check fails, fix the output before delivering. Do not flag the checklist to the user — just ensure the output passes.
output_schema_version: "1.0.0" # Semver — bump major on breaking changes
repo:
name: string # e.g., "heygen-review-2026"
url: string # e.g., "https://github.com/[username]/[repo-name]"
pages_url: string # e.g., "https://[username].github.io/[repo-name]"
custom_domain_url: string | null
files:
- path: string # e.g., "index.html"
content: string # full file content
- path: ".github/workflows/deploy.yml"
content: string
- path: "CNAME" # null if no custom domain
content: string | null
- path: ".gitignore"
content: string
- path: "README.md"
content: string
setup_steps:
- step: number
action: string # e.g., "Create GitHub repo"
command: string | null # CLI command if applicable
dns_records: object | null # DNS config if custom domain provided
estimated_time: string # e.g., "8-10 minutes"
Present in five clearly labeled sections:
Section 1: Summary
Section 2: Files to Create Each file in its own fenced code block with the file path as the label. User can copy-paste each file's content directly.
Section 3: GitHub Setup Steps Numbered instructions:
Section 4: DNS Setup (only if custom domain) Exact records to add, formatted as a table. Provider-specific notes for Cloudflare users (Proxy OFF for GitHub Pages).
Section 5: Verification How to confirm the deploy worked and SSL is active (usually 5-15 minutes for DNS propagation).
https:// prefix; DNS record value is [username].github.io (with no trailing slash). Enable Cloudflare proxy OFF (grey cloud) for GitHub Pages to work."main not master), or pages: write permission missing on older repos. Provide troubleshooting checklist.heygen-review-2026) or niche (heygen-review-for-creators).Example 1: Deploy landing page from S4
Context: S4 generated a HeyGen landing page HTML.
User: "Deploy this to GitHub Pages. My username is alexmarketer."
Action: Auto-use S4 HTML. Repo name: heygen-landing. Pages URL: https://alexmarketer.github.io/heygen-landing. Generate all files + deploy instructions.
Example 2: Deploy bio link with custom domain
Context: Bio-link-deployer generated a bio page.
User: "Put this on GitHub Pages at links.mysite.com."
Action: Repo + CNAME file with links.mysite.com. DNS: CNAME record pointing to [username].github.io. Cloudflare note: proxy must be disabled (grey cloud icon).
Example 3: Multi-page resource site User: "I want to host an affiliate resource site on GitHub Pages with a homepage, about page, and 3 blog posts." Action: Generate multi-page structure. Scaffold all index.html files with placeholder content. Deploy workflow. Note: for a blog with 10+ posts, suggest Jekyll or Eleventy for templating.
shared/references/ftc-compliance.md — FTC affiliate disclosure. Ensure the deployed HTML includes disclosure language.shared/references/affitor-branding.md — Affitor footer. Include in HTML before deploy.shared/references/flywheel-connections.md — master flywheel connection mapconversion-tracker immediately after deployinghttps://[username].github.io/[repo] so Google indexes it fasterAfter deploying: set up conversion-tracker to monitor clicks and conversions. After 30 days, run seo-audit to optimize for search rankings. A page that ranks #1 for a buyer-intent keyword can earn $500-2,000/month passively.
Next step — copy-paste this prompt: "Set up conversion tracking for my deployed page at [URL]" → runs
conversion-tracker
conversion-tracker (S6) — deployed site URL to trackseo-audit (S6) — deployed site to auditlanding-page-creator (S4) — HTML file to deploybio-link-deployer (S5) — bio link HTML to deploysqueeze-page-builder (S4) — squeeze page HTML to deployseo-audit (S6) checks deployed site health → identify deployment issues affecting SEOBefore delivering output, verify:
Any NO → rewrite before delivering.
chain_metadata:
skill_slug: "github-pages-deployer"
stage: "distribution"
timestamp: string
suggested_next:
- "conversion-tracker"
- "seo-audit"