agentleFS
reescalderreescalder/claude-skills/ship-website/SKILL.md

ship-website

Skill0 starsChanged 4 months agoMITView on GitHub

Deploy a complete website from scratch to a live custom domain. Handles the full pipeline: GitHub repo creation, Next.js scaffolding, Vercel project setup, domain purchase, DNS configuration, and SSL. Use when asked to build a new website, launch a new project, ship a landing page, or put something live on a custom domain. Also use when buying domains or connecting domains to Vercel projects.

  • Sends data out
  • Commits and pushes

The file

We split this skill into the rules it gives an agent

3 rules. About 0 are common, 0 are distinctive, and 3 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈0

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 3

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Very specific:

    Use Next.js App Router (our standard stack):

    line 19
  2. Very specific:

    Wait for status: "completed".

    line 76
  3. Very specific:

    Update cost sheet: Domains tab in 1zC0_Is_H2NmI0H56ATbewXoVMOHWmmtPaUYJt6fTJuI

    line 107

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Ship Website

End-to-end pipeline: idea → live website on a custom domain. ~5 minutes, zero human input needed.

Pipeline

1. Create GitHub repo

gh repo create LevityLeads/<repo-name> --private --clone
cd <repo-name>

2. Scaffold project

Use Next.js App Router (our standard stack):

npx create-next-app@latest . --typescript --tailwind --eslint --app --src-dir --import-alias "@/*" --use-npm

Or copy from an existing template if the project is similar to something we've built.

3. Initial commit + push

git config user.email "rees.calder@levityleads.com"
git config user.name "Rees Calder"
git add -A && git commit -m "Initial scaffold" && git push -u origin main

4. Create Vercel project

curl -X POST "https://api.vercel.com/v10/projects" \
  -H "Authorization: Bearer $VERCEL_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"<project-name>","framework":"nextjs","gitRepository":{"type":"github","repo":"LevityLeads/<repo-name>"}}'

Vercel auto-deploys on push once linked.

5. Buy domain (Vercel Registrar API)

Check availability:

GET https://api.vercel.com/v1/registrar/domains/<domain>/availability

Check price:

GET https://api.vercel.com/v1/registrar/domains/<domain>/price

Returns {purchasePrice, renewalPrice} in USD.

Purchase:

curl -X POST "https://api.vercel.com/v1/registrar/domains/buy" \
  -H "Authorization: Bearer $VERCEL_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "domains": [{"domainName":"<domain>","autoRenew":true,"years":1,"expectedPrice":<price>}],
    "contactInformation": {
      "firstName":"Rees","lastName":"Calder",
      "email":"rees.calder@levityleads.com",
      "phone":"+27218001234",
      "address1":"Cape Town","city":"Cape Town",
      "state":"Western Cape","zip":"8001","country":"ZA",
      "organization":"Levity Leads"
    }
  }'

Check order status:

GET https://api.vercel.com/v1/registrar/orders/<orderId>

Wait for status: "completed". If refunded, check payment method on Vercel billing.

⚠️ Use real contact info (not placeholders). Fake phone numbers cause refunds.

6. Attach domain to project

# Apex domain
curl -X POST "https://api.vercel.com/v10/projects/<project>/domains" \
  -H "Authorization: Bearer $VERCEL_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"<domain>"}'

# www redirect
curl -X POST "https://api.vercel.com/v10/projects/<project>/domains" \
  -H "Authorization: Bearer $VERCEL_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"www.<domain>","redirect":"<domain>","redirectStatusCode":308}'

DNS records (ALIAS + CAA) configure automatically. SSL provisions via Let's Encrypt.

7. DNS propagation

New domains take 15-30 minutes to propagate. Check via:

curl -s "https://dns.google/resolve?name=<domain>&type=A"

Status 0 = resolved. Status 3 = NXDOMAIN (still propagating).

The .vercel.app subdomain works immediately while DNS propagates.

Post-deploy

  • Update cost sheet: Domains tab in 1zC0_Is_H2NmI0H56ATbewXoVMOHWmmtPaUYJt6fTJuI
  • Log in daily memory

Credentials

  • Vercel token: In TOOLS.md
  • GitHub: gh CLI, LevityLeads org
  • Git author: Rees Calder <rees.calder@levityleads.com> (MUST match or Vercel rejects deploys)

Domain pricing notes

Vercel is ~$5-15 more per year than discount registrars (Porkbun, Cloudflare) but the API integration and auto-DNS make it worth it. No CAPTCHAs, no browser automation, no extra accounts.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.