{"id":"52cb801b-b5b3-4572-945a-b269afe15312","shortId":"Abztav","kind":"skill","title":"domain-strategy","tagline":"Plan, manage, and optimize a domain portfolio. Use this skill for DNS architecture decisions, redirect strategies, registrar choice, parking unused domains, multi-site setups, and domain consolidation or split planning. Triggers on DNS, domain, registrar, redirect, parking, subdo","description":"# Domain Strategy\n\nDecide how domains, subdomains, and DNS work across a portfolio. Stack-agnostic. Works for one site or one hundred.\n\n---\n\n## When to use\n\n- Setting up DNS for a new site (apex vs www, primary vs aliases)\n- Choosing or switching registrars\n- Planning redirects across multiple domains (parked, retired, consolidated)\n- Deciding subdomain vs subfolder vs separate domain for a new product line\n- Consolidating multiple sites into one\n- Splitting one site into multiple\n- Setting up DNS for email, security records, third-party services\n\n## When NOT to use\n\n- Migrating content between platforms with URL changes (use `content-migration`)\n- Email authentication setup specifically (use `email-deliverability`)\n- Security headers or HTTPS config (use `security-baseline`)\n- Internationalization domain choices (use `internationalization`)\n\n---\n\n## Required inputs\n\n- Current domain inventory (every domain you own or operate)\n- Status of each (live, parked, redirected, retired)\n- Strategic role of each (primary brand, sub-brand, defensive registration, campaign)\n- Current DNS provider and registrar for each\n- Email and third-party service dependencies\n\n---\n\n## The framework: 5 decisions\n\nEvery domain decision falls into one of these buckets. Address them in order.\n\n### Decision 1: Apex vs www as canonical\n\nPick one. Redirect the other to it. Pick before launch. Changing later is painful.\n\n- **Apex (example.com):** cleaner, more memorable, the modern default.\n- **www (www.example.com):** historically standard, easier to add CDN-level CNAME records (apex CNAME is technically forbidden but most providers offer ALIAS or ANAME).\n\nWhichever you pick, the other must 301 to it. Both serving content is duplicate content and a soft signal of poor setup.\n\n### Decision 2: Subdomain vs subfolder vs separate domain\n\nFor a new product, blog, or content section:\n\n| Pattern | Use when |\n|---|---|\n| Subfolder (`example.com/blog`) | Same brand, want SEO equity to flow, default choice |\n| Subdomain (`blog.example.com`) | Different stack or platform, organizationally separate but related |\n| Separate domain (`exampleblog.com`) | Different brand, different audience, intentional separation |\n\nDefault to subfolder. The case for subdomain or separate domain has to be made.\n\n### Decision 3: Registrar strategy\n\nThe registrar is where the domain is registered. The DNS provider is where DNS records live. They can be the same or different.\n\nDecisions:\n- **Single registrar vs multiple:** single is simpler. Multiple makes sense for redundancy at scale.\n- **Lock and 2FA:** non-negotiable. Domain hijacking is real and costly.\n- **Auto-renew:** on for everything you care about. Off only for intentional drops.\n- **WHOIS privacy:** on by default. Free at most modern registrars.\n- **Transfer lock:** on except during planned transfers.\n\n### Decision 4: DNS provider\n\nThe DNS provider controls how domains resolve. Critical for performance, reliability, and security.\n\nPick a provider that gives you:\n- Fast global resolution (anycast network)\n- DNSSEC support\n- API access for automation\n- Reasonable record limits\n- Good audit logs\n\nDefault DNS records every domain needs:\n- A or AAAA records (or CNAME) for the apex and www\n- MX records (even just nullified if no email)\n- TXT for domain verification, SPF\n- CAA records (locks down which certificate authorities can issue certs for the domain)\n\n### Decision 5: Parked domain strategy\n\nDomains you own but aren't actively using. Three valid strategies:\n\n1. **Redirect to a primary site.** Best for defensively registered domains close to your main brand. 301 every path to the primary's homepage or matching path.\n2. **Hold blank.** A simple page or DNS NXDOMAIN. Acceptable for domains you may use later.\n3. **Park with a landing page.** Generic \"coming soon\" page. Lowest value. Avoid registrar default parking pages (often serve ads against your brand).\n\nAnti-pattern: letting parked domains serve duplicate or near-duplicate content from your main site. This is an SEO liability.\n\n---\n\n## Workflow\n\n### Step 1: Inventory\n\nPull every domain you own from every registrar. Build a single sheet:\n\n| Domain | Registrar | DNS provider | Status | Role | Renewal date | Notes |\n|---|---|---|---|---|---|---|\n\nIf you can't account for every domain, the strategy can't be accurate.\n\n### Step 2: Classify by role\n\nEach domain gets one role:\n- **Primary** (the main site for a brand)\n- **Alias** (redirects to a primary)\n- **Defensive** (registered to prevent others from getting it; usually parked)\n- **Campaign** (short-term, specific use)\n- **Retired** (no longer active; either drop at expiry or redirect permanently)\n\nThe classification drives the configuration.\n\n### Step 3: Audit current configuration\n\nFor each domain check:\n- Is the canonical (apex vs www) consistent with the strategy?\n- Are redirects 301 (permanent) where intended?\n- Is HTTPS enforced on every variant?\n- Are DNS records minimal and intentional?\n- Is the registrar locked?\n- Is auto-renew on?\n- Is 2FA on the registrar account?\n\nDocument gaps. Each gap is a ticket.\n\n### Step 4: Set the canonical pattern\n\nFor new domains and any that need fixing:\n\n- Pick apex or www as canonical\n- Configure 301 redirect for the non-canonical\n- Force HTTPS for both\n- Verify with curl: `curl -I http://example.com`, `curl -I http://www.example.com`, `curl -I https://www.example.com`. All should chain to a single 200 on the canonical.\n\n### Step 5: Document the redirect map\n\nAcross the portfolio, document every redirect:\n\n| Source | Destination | Type | Reason | Date set |\n|---|---|---|---|---|\n\nThis is invaluable when something breaks or when planning consolidations.\n\n### Step 6: Set up monitoring\n\nMonitor:\n- DNS resolution (alert on NXDOMAIN or wrong IP)\n- HTTPS certificate expiration (alert at 30, 14, 7 days out)\n- Redirect chains (alert if a 301 starts returning 200 or 404)\n- Renewal dates (alert at 90, 30, 7 days out)\n\nThis is the bridge between domain strategy and `monitoring-and-alerting`.\n\n### Step 7: Document and revisit\n\nDomain strategy is a quarterly review topic. Renewals, consolidations, and new launches change the picture. Without scheduled review, the portfolio drifts.\n\n---\n\n## Failure patterns\n\n**Both apex and www serve content.** Duplicate content. Pick one, redirect the other.\n\n**302 redirects where 301 was intended.** 302 is temporary. 301 is permanent. SEO equity passes through 301, not (reliably) through 302.\n\n**HTTPS not enforced.** HTTP variant serving content alongside HTTPS. Force HTTPS at the edge or the load balancer.\n\n**Registrar default parking pages.** Parked domains serving registrar ads. Free for the registrar, bad for you. Replace with a redirect or your own page.\n\n**Domains in multiple registrars by accident.** Migrations that didn't fully complete. Consolidate.\n\n**No CAA records.** Anyone with a misconfigured ACME client can issue a cert for your domain. CAA limits which CAs can issue. Add it.\n\n**Auto-renew off \"to save money.\"** Domain accidentally drops, gets snapped up, costs ten times more (or is unrecoverable). Auto-renew is cheap insurance.\n\n**Subdomains used where subfolders would have been better.** SEO equity gets fragmented across hostnames. The case for a subdomain has to be made; the default is subfolder.\n\n**Parked domains with thin content \"for SEO.\"** Search engines don't reward this. They penalize doorway pages. Either redirect or leave blank.\n\n---\n\n## Output format\n\nA domain strategy document includes:\n\n- **Inventory:** the spreadsheet of every domain\n- **Classification:** the role of each\n- **Canonical decisions:** apex vs www, locked\n- **Redirect map:** every redirect in the portfolio\n- **DNS standards:** the default record set\n- **Registrar standards:** locked, 2FA, auto-renew\n- **Monitoring:** what's watched, where alerts go\n- **Renewal calendar:** the next 12 months\n- **Review cadence:** when this gets revisited\n\n---\n\n## Reference files\n\n- [`references/dns-record-reference.md`](references/dns-record-reference.md): Common DNS records explained, with the syntax for the most useful ones (A, AAAA, CNAME, MX, TXT, CAA, SRV, etc.) and when each is needed.","tags":["domain","strategy","claude","skills","rampstackco","agent-skills","anthropic","awesome-claude-code","awesome-claude-prompts","awesome-claude-skills","claude-code","claude-skills"],"capabilities":["skill","source-rampstackco","skill-domain-strategy","topic-agent-skills","topic-anthropic","topic-awesome-claude-code","topic-awesome-claude-prompts","topic-awesome-claude-skills","topic-claude","topic-claude-code","topic-claude-skills","topic-good-first-issue","topic-mcp","topic-product-management","topic-seo"],"categories":["claude-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/rampstackco/claude-skills/domain-strategy","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add rampstackco/claude-skills","source_repo":"https://github.com/rampstackco/claude-skills","install_from":"skills.sh"}},"qualityScore":"0.540","qualityRationale":"deterministic score 0.54 from registry signals: · indexed on github topic:agent-skills · 181 github stars · SKILL.md body (8,178 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T18:55:15.479Z","embedding":null,"createdAt":"2026-04-30T01:01:28.296Z","updatedAt":"2026-05-18T18:55:15.479Z","lastSeenAt":"2026-05-18T18:55:15.479Z","tsv":"'/blog':321 '1':225,548,638 '12':1197 '14':890 '2':300,575,676 '200':838,902 '2fa':408,776,1182 '3':365,591,730 '30':889,910 '301':283,564,750,809,899,970,976,983 '302':967,973,987 '4':450,789 '404':904 '5':209,533,843 '6':871 '7':891,911,927 '90':909 'aaaa':497,1222 'accept':584 'access':480 'accid':1035 'accident':1075 'account':665,780 'accur':674 'acm':1050 'across':52,87,848,1105 'activ':543,716 'ad':610,1014 'add':259,1065 'address':220 'agnost':57 'alert':878,887,896,907,925,1191 'alia':274,692 'alias':80 'alongsid':995 'anam':276 'anti':615 'anti-pattern':614 'anycast':475 'anyon':1046 'apex':75,226,245,265,503,741,803,955,1162 'api':479 'architectur':16 'aren':541 'audienc':347 'audit':487,731 'authent':142 'author':525 'auto':419,772,1068,1088,1184 'auto-renew':418,771,1067,1087,1183 'autom':482 'avoid':603 'bad':1019 'balanc':1005 'baselin':157 'best':554 'better':1100 'blank':577,1141 'blog':311 'blog.example.com':332 'brand':186,189,323,345,563,613,691 'break':865 'bridg':917 'bucket':219 'build':648 'caa':519,1044,1059,1226 'cadenc':1200 'calendar':1194 'campaign':192,707 'canon':230,740,792,807,815,841,1160 'care':425 'cas':1062 'case':354,1108 'cdn':261 'cdn-level':260 'cert':528,1055 'certif':524,885 'chain':834,895 'chang':136,241,943 'cheap':1091 'check':737 'choic':21,160,330 'choos':81 'classif':725,1155 'classifi':677 'cleaner':247 'client':1051 'close':559 'cname':263,266,500,1223 'come':598 'common':1209 'complet':1041 'config':153 'configur':728,733,808 'consist':744 'consolid':31,92,105,869,939,1042 'content':131,139,288,291,313,626,959,961,994,1124 'content-migr':138 'control':456 'cost':417,1080 'critic':460 'curl':822,823,826,829 'current':165,193,732 'date':659,858,906 'day':892,912 'decid':45,93 'decis':17,210,213,224,299,364,391,449,532,1161 'default':252,329,350,436,489,605,1007,1117,1176 'defens':190,556,697 'deliver':148 'depend':206 'destin':855 'didn':1038 'differ':333,344,346,390 'dns':15,37,50,70,117,194,377,381,451,454,490,582,654,761,876,1173,1210 'dnssec':477 'document':781,844,851,928,1147 'domain':2,9,24,30,38,43,47,89,99,159,166,169,212,306,342,359,373,412,458,493,516,531,535,537,558,586,619,642,652,668,681,736,796,919,931,1011,1030,1058,1074,1121,1145,1154 'domain-strategi':1 'doorway':1135 'drift':951 'drive':726 'drop':431,718,1076 'duplic':290,621,625,960 'easier':257 'edg':1001 'either':717,1137 'email':119,141,147,200,513 'email-deliver':146 'enforc':756,990 'engin':1128 'equiti':326,980,1102 'etc':1228 'even':508 'everi':168,211,492,565,641,646,667,758,852,1153,1168 'everyth':423 'example.com':246,320,825 'example.com/blog':319 'exampleblog.com':343 'except':445 'expir':886 'expiri':720 'explain':1212 'failur':952 'fall':214 'fast':472 'file':1206 'fix':801 'flow':328 'forbidden':269 'forc':816,997 'format':1143 'fragment':1104 'framework':208 'free':437,1015 'fulli':1040 'gap':782,784 'generic':597 'get':682,703,1077,1103,1203 'give':470 'global':473 'go':1192 'good':486 'header':150 'hijack':413 'histor':255 'hold':576 'homepag':571 'hostnam':1106 'http':991 'https':152,755,817,884,988,996,998 'hundr':64 'includ':1148 'input':164 'insur':1092 'intend':753,972 'intent':348,430,765 'internation':158,162 'invalu':862 'inventori':167,639,1149 'ip':883 'issu':527,1053,1064 'land':595 'later':242,590 'launch':240,942 'leav':1140 'let':617 'level':262 'liabil':635 'limit':485,1060 'line':104 'live':177,383 'load':1004 'lock':406,443,521,769,1165,1181 'log':488 'longer':715 'lowest':601 'made':363,1115 'main':562,629,687 'make':400 'manag':5 'map':847,1167 'match':573 'may':588 'memor':249 'migrat':130,140,1036 'minim':763 'misconfigur':1049 'modern':251,440 'money':1073 'monitor':874,875,923,1186 'monitoring-and-alert':922 'month':1198 'multi':26 'multi-sit':25 'multipl':88,106,114,395,399,1032 'must':282 'mx':506,1224 'near':624 'near-dupl':623 'need':494,800,1233 'negoti':411 'network':476 'new':73,102,309,795,941 'next':1196 'non':410,814 'non-canon':813 'non-negoti':409 'note':660 'nullifi':510 'nxdomain':583,880 'offer':273 'often':608 'one':60,63,109,111,216,232,683,963,1220 'oper':173 'optim':7 'order':223 'organiz':337 'other':701 'output':1142 'page':580,596,600,607,1009,1029,1136 'pain':244 'park':22,41,90,178,534,592,606,618,706,1008,1010,1120 'parti':124,204 'pass':981 'path':566,574 'pattern':315,616,793,953 'penal':1134 'perform':462 'perman':723,751,978 'pick':231,238,279,466,802,962 'pictur':945 'plan':4,34,85,447,868 'platform':133,336 'poor':297 'portfolio':10,54,850,950,1172 'prevent':700 'primari':78,185,552,569,685,696 'privaci':433 'product':103,310 'provid':195,272,378,452,455,468,655 'pull':640 'quarter':935 'real':415 'reason':483,857 'record':121,264,382,484,491,498,507,520,762,1045,1177,1211 'redirect':18,40,86,179,233,549,693,722,749,810,846,853,894,964,968,1025,1138,1166,1169 'redund':403 'refer':1205 'references/dns-record-reference.md':1207,1208 'regist':375,557,698 'registr':191 'registrar':20,39,84,197,366,369,393,441,604,647,653,768,779,1006,1013,1018,1033,1179 'relat':340 'reliabl':463,985 'renew':420,658,773,905,938,1069,1089,1185,1193 'replac':1022 'requir':163 'resolut':474,877 'resolv':459 'retir':91,180,713 'return':901 'review':936,948,1199 'revisit':930,1204 'reward':1131 'role':182,657,679,684,1157 'save':1072 'scale':405 'schedul':947 'search':1127 'section':314 'secur':120,149,156,465 'security-baselin':155 'sens':401 'seo':325,634,979,1101,1126 'separ':98,305,338,341,349,358 'serv':287,609,620,958,993,1012 'servic':125,205 'set':68,115,790,859,872,1178 'setup':28,143,298 'sheet':651 'short':709 'short-term':708 'signal':295 'simpl':579 'simpler':398 'singl':392,396,650,837 'site':27,61,74,107,112,553,630,688 'skill':13 'skill-domain-strategy' 'snap':1078 'soft':294 'someth':864 'soon':599 'sourc':854 'source-rampstackco' 'specif':144,711 'spf':518 'split':33,110 'spreadsheet':1151 'srv':1227 'stack':56,334 'stack-agnost':55 'standard':256,1174,1180 'start':900 'status':174,656 'step':637,675,729,788,842,870,926 'strateg':181 'strategi':3,19,44,367,536,547,670,747,920,932,1146 'sub':188 'sub-brand':187 'subdo':42 'subdomain':48,94,301,331,356,1093,1111 'subfold':96,303,318,352,1096,1119 'support':478 'switch':83 'syntax':1215 'technic':268 'temporari':975 'ten':1081 'term':710 'thin':1123 'third':123,203 'third-parti':122,202 'three':545 'ticket':787 'time':1082 'topic':937 'topic-agent-skills' 'topic-anthropic' 'topic-awesome-claude-code' 'topic-awesome-claude-prompts' 'topic-awesome-claude-skills' 'topic-claude' 'topic-claude-code' 'topic-claude-skills' 'topic-good-first-issue' 'topic-mcp' 'topic-product-management' 'topic-seo' 'transfer':442,448 'trigger':35 'txt':514,1225 'type':856 'unrecover':1086 'unus':23 'url':135 'use':11,67,129,137,145,154,161,316,544,589,712,1094,1219 'usual':705 'valid':546 'valu':602 'variant':759,992 'verif':517 'verifi':820 'vs':76,79,95,97,227,302,304,394,742,1163 'want':324 'watch':1189 'whichev':277 'whoi':432 'without':946 'work':51,58 'workflow':636 'would':1097 'wrong':882 'www':77,228,253,505,743,805,957,1164 'www.example.com':254,828,831","prices":[{"id":"58437498-bded-4761-b8bd-dba53ef94d73","listingId":"52cb801b-b5b3-4572-945a-b269afe15312","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"rampstackco","category":"claude-skills","install_from":"skills.sh"},"createdAt":"2026-04-30T01:01:28.296Z"}],"sources":[{"listingId":"52cb801b-b5b3-4572-945a-b269afe15312","source":"github","sourceId":"rampstackco/claude-skills/domain-strategy","sourceUrl":"https://github.com/rampstackco/claude-skills/tree/main/skills/domain-strategy","isPrimary":false,"firstSeenAt":"2026-04-30T01:01:28.296Z","lastSeenAt":"2026-05-18T18:55:15.479Z"}],"details":{"listingId":"52cb801b-b5b3-4572-945a-b269afe15312","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"rampstackco","slug":"domain-strategy","github":{"repo":"rampstackco/claude-skills","stars":181,"topics":["agent-skills","anthropic","awesome-claude-code","awesome-claude-prompts","awesome-claude-skills","claude","claude-code","claude-skills","good-first-issue","mcp","product-management","seo","show-hn","showcase","showdev","web-design","web-development"],"license":"mit","html_url":"https://github.com/rampstackco/claude-skills","pushed_at":"2026-05-10T22:40:22Z","description":"Stack-agnostic Claude Skills covering the full website lifecycle: brand, design, content, SEO, dev, ops, growth, and research. Build, ship, audit, optimize.","skill_md_sha":"568e44d57ee09b8154788e96e5d42d618cce41a9","skill_md_path":"skills/domain-strategy/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/rampstackco/claude-skills/tree/main/skills/domain-strategy"},"layout":"multi","source":"github","category":"claude-skills","frontmatter":{"name":"domain-strategy","description":"Plan, manage, and optimize a domain portfolio. Use this skill for DNS architecture decisions, redirect strategies, registrar choice, parking unused domains, multi-site setups, and domain consolidation or split planning. Triggers on DNS, domain, registrar, redirect, parking, subdomain, apex, www vs non-www, multi-site, portfolio, hreflang setup, domain migration. Also triggers when planning a new site that needs domain decisions made before launch."},"skills_sh_url":"https://skills.sh/rampstackco/claude-skills/domain-strategy"},"updatedAt":"2026-05-18T18:55:15.479Z"}}