skills/make-website/SKILL.md
Generates a complete professional website by collecting 7 business inputs (vibe, name, industry, description, audience, CTA, references), making a single Claude API call to produce a self-contained index.html, and publishing directly to GitHub Pages. Use when the user says "make website", "build website", "generate website", "create website", "BraveBrand", or "make-website".
npx skillsauth add asets-gobizit/claude-skills make-websiteInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Builds a complete business website from a 7-field brief → one Claude API call → GitHub Pages deployment.
make_website.py — Interactive CLI that collects inputs, calls Claude API once, writes index.html, and publishes to GitHub Pages
python "C:\Users\dansk\.claude\skills\make-website\make_website.py"
This skill folder contains brand-specific files for GoBizIT AI. These are NOT loaded automatically.
brand_context.md — GoBizIT brand voice, tone, messaging guidelines, language do's/don'ts, CTA style, and visual notes.examples/gobizit-style.md — Reference output showing the target page structure, headline style, service descriptions, and visual design based on gobizit.ai.When to use these files:
When triggered: Read both files before the Claude API call and use them to shape all generated copy and design decisions.
python "C:\Users\dansk\.claude\skills\make-website\make_website.py"
The script walks through all inputs interactively. No arguments needed.
| Field | Type | Values |
|-------|------|--------|
| vibe | Enum (choose 1) | High-Performance, Warm & Organic, Bold & Brutalist, Clean & Technical, Editorial & Luxury, Conversion-Focused |
| business_name | Free text | Any business name |
| industry | Enum (choose 1) | Fitness, Health & Wellness, Business Coaching, Marketing Agency, SaaS/Tech, E-commerce, Real Estate, Financial Services, Education/Courses, Creative Services, Healthcare, Legal Services, Other |
| description | Free text | One sentence describing the business |
| audience | AI-proposed + confirm | Script proposes based on industry + description |
| cta | Enum (choose 1) | Book a free consultation, Start a free trial, Download a free guide, Join the waitlist, Get a quote |
| reference_sites | Optional URLs | Design inspiration (comma-separated, or press Enter to skip) |
Phase A Collect 7 inputs via CLI ← zero Claude tokens
Phase B Assemble structured prompt ← zero Claude tokens
Phase C ONE Claude API call (claude-sonnet-4-6, max_tokens=16000)
Phase D Strip fences, validate HTML, write index.html
Phase D2 Download Unsplash images → images/ folder, rewrite HTML to local paths
Phase E git init -b main, commit, gh repo create, enable Pages
Phase F Optional custom domain (CNAME + DNS instructions printed)
Phase G Wait for SSL cert (poll every 30s, up to 30min) +
auto-flip https_enforced=true when cert is ready ← v1.6
Phase H Print live URL + clear timing-expectation guide ← v1.4
C:\Users\dansk\Claude\Websites\{business_name}\
├── index.html ← self-contained (CSS embedded in <style> tags)
├── robots.txt ← auto-generated, points to sitemap
├── sitemap.xml ← auto-generated with correct domain + build date
├── images/ ← downloaded stock photos (self-hosted, no external dependencies)
│ ├── img-abc123.jpg
│ └── ...
└── CNAME ← only if custom domain entered
GitHub Pages URL (default): https://asets-gobizit.github.io/{business_name}/
GitHub Pages URL (custom): https://{custom_domain}
Every site gets a favicon.svg automatically — wired into the HTML with <link rel="icon"> and <link rel="apple-touch-icon">. The default is an abstract placeholder (rounded brand-colored square + single white dot) that the user is expected to replace with their real brand mark.
Hard rule: NEVER put text, letters, initials, or wordmarks inside a favicon. Browsers render favicons at 16×16 in tabs — text is illegible noise at that size. Use shapes, icons, or a single bold glyph (paw print, leaf, geometric mark, etc.) — never a word or letters.
When the user provides their own brand icon (paw, logo, monogram glyph, etc.), the skill should swap the SVG contents while keeping the file at favicon.svg so the link tags continue to work.
The skill now handles SSL end-to-end without requiring the user to touch GitHub settings:
gh api ... --field https_enforced=true call after the CNAME is registeredResult: the user gets a working https://yourdomain.com with zero clicks in the GitHub UI, assuming DNS records are correctly configured at their registrar.
When the script finishes, it prints a clear, plain-English timeline so the user knows what's working now vs what to wait for:
| Stage | Typical duration | What it unlocks |
|-------|------------------|-----------------|
| GitHub Pages first build | 1-3 min | The *.github.io URL goes live |
| DNS propagation (custom domain) | 5-60 min (worst case 24h) | https://customdomain resolves |
| SSL cert provisioning (Let's Encrypt) | 10-30 min after DNS resolves | Browser shows green padlock, no warnings |
| Total worst case end-to-end | ~1 hour | Fully working https://customdomain |
The script also prints diagnostic links (DNS checker, GitHub Pages settings) so users can self-debug if something stalls past the typical window.
<title>, <meta description>, Open Graph tags, Twitter Card tags<header>, <main>, <section>, <footer>, <nav> usage<h1> with proper heading hierarchy (<h2> for sections)<head> and HTML structurerobots.txt — auto-generated with sitemap URL, allows all crawlerssitemap.xml — auto-generated with correct domain (custom or GitHub Pages), dated with build dateimages.unsplash.com URLs in the HTMLimages/ foldersrc attributes to use local paths (images/img-xxx.jpg)index.html and deployed via GitHub Pagesurllib.request) — no extra packages neededpip install anthropic
Also requires: gh CLI (already installed), git
Set before running:
$env:ANTHROPIC_API_KEY = "sk-ant-..."
index.html created and starts with <!DOCTYPE html>github.com/asets-gobizit/{business_name}| Domain format | DNS record needed |
|--------------|-------------------|
| www.domain.com | CNAME → asets-gobizit.github.io |
| domain.com (apex) | 4× A records: 185.199.108.153, 185.199.109.153, 185.199.110.153, 185.199.111.153 |
Cloudflare proxy: always DNS only (grey cloud). [Proxied/orange-cloud option intentionally removed from this skill — static GitHub Pages sites don't need WAF/CDN (GitHub already serves via Fastly). Can be re-enabled later if a real backend is added; requires Cloudflare SSL mode = "Full (strict)".]
data-ai
Automated backup skill for PKA + Obsidian + Claude memory. Snapshots pka.db (via SQLite .backup so WAL is handled safely), the Obsidian vault, Claude memory files, agent profiles, and the help-content Excel into a single timestamped zip in Zoho WorkDrive. Daily/weekly/monthly retention rotation built in. USE WHEN Danny says "backup", "run backup", "snapshot pka", or to recover from a snapshot.
testing
Run any question, idea, or decision through a council of 5 AI advisors who independently analyze it, peer-review each other anonymously, and synthesize a final verdict. Based on Karpathy's LLM Council methodology, packaged as the stress-test skill. MANDATORY TRIGGERS: 'stress-test this', 'stress test this', 'pressure-test this', 'pressure test this', 'war room this', 'council this', 'run the council', 'debate this'. STRONG TRIGGERS (use when combined with a real decision or tradeoff): 'should I X or Y', 'which option', 'what would you do', 'is this the right move', 'validate this', 'get multiple perspectives', 'I can't decide', 'I'm torn between'. Do NOT trigger on simple yes/no questions, factual lookups, or casual 'should I' without a meaningful tradeoff (e.g. 'should I use markdown' is not a stress-test question). DO trigger when the user presents a genuine decision with stakes, multiple options, and context that suggests they want it pressure-tested from multiple angles.
content-media
Weekly scan of Obsidian vault for empty/low-content notes. Moves them to zToBeDeleted/ for user review. Use when the user says "tidy obsidian", "clean obsidian", "obsidian cleanup", or on scheduled weekly run.
development
Design-first website builder. Accepts a Claude Design export (HTML or screenshot) as a visual blueprint, collects business inputs, calls Claude API to generate a design-matched index.html, and publishes to GitHub Pages. Falls back to vibe-based generation if no design is provided. Use when the user says "make-website-design", "design website", "build from design", or provides a Claude Design export for website generation.