{
  "checked_on": "2026-10-27",
  "purpose": "Choose the actual publishing host before preparing DNS. These are record shapes and official setup routes, not live account-specific records.",
  "dns_writes": false,
  "final_records_source": "The owner's current publishing-host settings; preserve unrelated DNS and email records.",
  "complete_workflow_url": "https://www.adddomain.net/SKILL.md",
  "complete_workflow_html_url": "https://www.adddomain.net/skills/frontend-business-websites",
  "hosts": [
    {
      "id": "lovable",
      "name": "Lovable",
      "settings": "Project → Settings → Domains → Connect existing domain",
      "subdomain": "Use the A and TXT records from the project's manual setup, or its distinct advanced CDN/proxy CNAME route.",
      "apex": "Use the root record set provided by Lovable; configure www separately if requested.",
      "caution": "Publish the project first. Standard A/TXT setup and the advanced reverse-proxy CNAME flow are distinct; do not mix them or invent the ownership token.",
      "source": "https://docs.lovable.dev/features/custom-domain",
      "connect_url": "https://www.adddomain.net/connect?hosting=lovable"
    },
    {
      "id": "bolt",
      "name": "Bolt Hosting",
      "settings": "All project settings → Domains & Hosting → Connect a domain you own",
      "subdomain": "Use Bolt's CNAME and any ownership TXT shown for the chosen hostname.",
      "apex": "Use the ALIAS, ANAME or flattened CNAME record from the Bolt project's DNS instructions.",
      "caution": "Confirm the project is on Bolt Hosting. A Netlify-hosted export uses Netlify settings instead. Only a published project can connect a domain; keep record values supplied by its actual host.",
      "source": "https://support.bolt.new/bolt-cloud/domains/connect",
      "connect_url": "https://www.adddomain.net/connect?hosting=bolt"
    },
    {
      "id": "vercel",
      "name": "Vercel",
      "settings": "Project → Settings → Domains",
      "subdomain": "CNAME from the chosen host (for example www) to the project's unique Vercel target.",
      "apex": "A record with the value shown in this project's domain settings.",
      "caution": "Add the domain to the Vercel project first. Use its current suggested records, not a generic IP or another project's CNAME.",
      "source": "https://vercel.com/docs/domains/working-with-domains/add-a-domain",
      "connect_url": "https://www.adddomain.net/connect?hosting=vercel"
    },
    {
      "id": "netlify",
      "name": "Netlify",
      "settings": "Domain management → Production domains → Pending DNS verification",
      "subdomain": "CNAME from the chosen label to the site's Netlify subdomain, or the dedicated target shown for High-Performance Edge.",
      "apex": "Use the recommended ALIAS, ANAME or flattened CNAME route when supported, or Netlify's documented A-record fallback.",
      "caution": "Adding an apex domain or www also adds the other hostname in Netlify. Configure the records for both and confirm the primary domain.",
      "source": "https://docs.netlify.com/manage/domains/configure-domains/configure-external-dns/",
      "connect_url": "https://www.adddomain.net/connect?hosting=netlify"
    },
    {
      "id": "cloudflare-pages",
      "name": "Cloudflare Pages",
      "settings": "Workers & Pages → project → Custom domains → Set up a domain",
      "subdomain": "After associating the hostname in Pages, use the CNAME to this project's pages.dev hostname. External DNS can serve a subdomain.",
      "apex": "The apex domain must be a Cloudflare zone in the Pages account, with Cloudflare nameservers. Pages creates its record during setup.",
      "caution": "A CNAME alone does not bind the domain to Pages. Do not apply a blanket DNS-only or nameserver change to an existing site.",
      "source": "https://developers.cloudflare.com/pages/configuration/custom-domains/",
      "connect_url": "https://www.adddomain.net/connect?hosting=cloudflare-pages"
    },
    {
      "id": "github-pages",
      "name": "GitHub Pages",
      "settings": "Repository → Settings → Pages → Custom domain",
      "subdomain": "CNAME to the site's default <owner>.github.io hostname, without a repository path.",
      "apex": "Use GitHub's documented ALIAS, ANAME or A records; IPv6 uses the listed AAAA records.",
      "caution": "Verify ownership and add the hostname in Pages before changing DNS. Use current GitHub documentation for the IP addresses; then enable and test HTTPS.",
      "source": "https://docs.github.com/en/pages/configuring-a-custom-domain-for-your-github-pages-site/managing-a-custom-domain-for-your-github-pages-site",
      "connect_url": "https://www.adddomain.net/connect?hosting=github-pages"
    },
    {
      "id": "cloud-run",
      "name": "Cloud Run / Google AI Studio",
      "settings": "Choose a Cloud Run custom-domain route in the owner's Google Cloud project",
      "subdomain": "Use the chosen load balancer, Firebase Hosting or eligible domain-mapping route and the A, AAAA or CNAME records it returns.",
      "apex": "Supported through the chosen route. Copy the console's exact apex record set rather than adapting a www CNAME.",
      "caution": "Google recommends a global external Application Load Balancer. Direct domain mapping is a limited-region preview, not recommended for production. Starter Tier and permission restrictions need a publishing-route change, not more DNS retries.",
      "source": "https://docs.cloud.google.com/run/docs/mapping-custom-domains",
      "connect_url": "https://www.adddomain.net/connect?hosting=cloud-run"
    },
    {
      "id": "chatgpt-sites",
      "name": "ChatGPT Sites",
      "settings": "Site settings → Add domain",
      "subdomain": "Enter the hostname, then copy the DNS records and verification values the Site provides. The example helper can format owner-reported CNAME and TXT shapes.",
      "apex": "OpenAI supports entering an apex domain or subdomain where custom domains are available. The owner's Site settings determine the required records.",
      "caution": "The helper's ALIAS example is not a universal requirement. If the Site gives different records, use those. DNS visibility, Site binding and HTTPS are separate checks.",
      "source": "https://help.openai.com/en/articles/20001339-creating-and-managing-chatgpt-sites",
      "connect_url": "https://www.adddomain.net/connect?hosting=chatgpt-sites"
    }
  ]
}