Dns
Open registry of community-contributed AI coding skills (SKILL.md files) — daily-synced to skills-hub.ai. Install across Claude Code, Cursor, Codex CLI, Windsurf, Copilot, and any MCP-compatible tool with one command.
npx -y skills add tinh2/skills-hub-registry --skill dnsAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 8 stars8 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Set up DNS records, SSL/TLS certificates, subdomains, SPF/DKIM/DMARC email authentication, and health-check failover routing for Route53, Cloudflare, or GCP Cloud DNS — with optional Terraform output
SKILL.md
11.4 KB, ~2.6k tokens by cl100k_base, as published. Nobody here has run it
You are in AUTONOMOUS MODE. Do NOT ask questions. Do NOT pause for confirmation. Execute every phase below in sequence, making decisions based on what you find.
============================================================ PHASE 0 — INPUT
$ARGUMENTS may contain:
- A domain:
example.comorapp.example.com - A DNS provider:
route53,cloudflare,gcp-dns,namecheap,godaddy --terraform— generate all DNS config as Terraform resources--email— include email DNS records (SPF, DKIM, DMARC)--subdomains— configure standard subdomains (api, app, cdn, staging, docs)--health-check— set up DNS health check routing (failover or latency-based)--import— generate Terraform import blocks for existing DNS records- If no domain specified, detect from: existing Terraform, Cloudflare config, package.json homepage, environment variables
============================================================ PHASE 1 — CURRENT STATE ANALYSIS
Scan the project for existing DNS configuration:
Terraform DNS resources:
aws_route53_zone,aws_route53_recordcloudflare_zone,cloudflare_recordgoogle_dns_managed_zone,google_dns_record_set
Application config:
- Domain references in:
vercel.json,netlify.toml,wrangler.toml DOMAIN,BASE_URL,APP_URLin environment variablesnext.config.js—assetPrefix,images.domainsCNAMEfile (GitHub Pages)
Infrastructure references:
- CloudFront distribution domain names
- Load balancer DNS names (ALB, NLB)
- S3 website endpoints
- Cloud Run service URLs
- Kubernetes ingress hosts
SSL/TLS certificates:
- ACM certificates in Terraform (
aws_acm_certificate) - Let's Encrypt references (
certbot, Caddy auto-TLS) - Cloudflare SSL settings
- Self-signed certificates (flag for replacement)
Compile a list of:
- Current domain and all subdomains in use
- Where each domain/subdomain points (target/origin)
- Current SSL/TLS status per domain
============================================================ PHASE 2 — DNS RECORD GENERATION
Generate DNS records for all required domains. Organize by record type:
Root domain (example.com):
A example.com -> {load balancer IP or CDN}
AAAA example.com -> {IPv6 address if available}
- For AWS: use ALIAS record to CloudFront or ALB
- For Cloudflare: use proxied A/CNAME record (orange cloud)
- For bare domain with CNAME target: use ALIAS/ANAME (provider-specific)
Standard subdomains (if --subdomains):
| Subdomain | Record | Target | Purpose |
|---|---|---|---|
www | CNAME | example.com | www redirect |
api | CNAME | ALB/Cloud Run/API Gateway | API endpoint |
app | CNAME | CDN/Vercel/Netlify | Frontend app |
cdn | CNAME | CloudFront/Cloudflare | Static assets |
staging | CNAME | Staging environment | Pre-production |
docs | CNAME | GitHub Pages/Gitbook | Documentation |
status | CNAME | Status page provider | Uptime monitoring |
mail | MX/CNAME | Email provider | Mail routing |
Terraform format (if --terraform):
Generate Route53, Cloudflare, or GCP Cloud DNS resources based on detected provider. Include:
- Zone resource with proper tagging (
Project,Environment,ManagedBy) - A/ALIAS record for root domain pointing to CDN or load balancer
- CNAME records for each subdomain
- Variable references for all environment-specific values (no hardcoded IPs)
Cloudflare specifics:
- Set
proxied = truefor A/CNAME records behind Cloudflare proxy - Set
ttl = 1(auto) for proxied records
GCP Cloud DNS specifics:
- Enable DNSSEC with
state = "on" - Append trailing dot to
dns_name
============================================================ PHASE 3 — SSL/TLS CERTIFICATE SETUP
Configure SSL certificates for all domains:
AWS ACM:
- Wildcard certificate covering
*.{domain}and root domain - DNS validation with Route53 records (auto-validated via Terraform)
- CloudFront certificates MUST be in
us-east-1— use a separate provider alias create_before_destroy = truelifecycle for zero-downtime renewal
Cloudflare:
- SSL mode: Full (strict) — origin must have valid certificate
- Enable Universal SSL (automatic, covers root + www)
- For origin certificates: generate Cloudflare Origin CA cert (15-year validity)
Let's Encrypt (self-hosted):
- Generate Certbot command for certificate acquisition
- Set up auto-renewal cron:
0 0 1 * * certbot renew --quiet - Or use Caddy/Traefik for automatic TLS
============================================================ PHASE 4 — EMAIL DNS (if --email)
Configure email authentication records to prevent spoofing:
SPF (Sender Policy Framework):
TXT example.com "v=spf1 include:_spf.google.com include:amazonses.com ~all"
- Adjust
include:based on detected email provider (Google Workspace, Microsoft 365, AWS SES, SendGrid, Postmark) - Always end with
~all(soft fail) or-all(hard fail)
DKIM (DomainKeys Identified Mail):
- Provider-specific DKIM CNAME records
- Multiple DKIM records for multiple senders (transactional + marketing)
DMARC (Domain-based Message Authentication):
TXT _dmarc.example.com "v=DMARC1; p=quarantine; rua=mailto:[email protected]; ruf=mailto:[email protected]; pct=100"
- Start with
p=noneto monitor, then move top=quarantine, thenp=reject ruafor aggregate reports,ruffor forensic reports
MX records (mail routing):
- Google Workspace:
aspmx.l.google.compriority 10 + alternates - Microsoft 365:
{tenant}.mail.protection.outlook.com - Self-hosted:
mail.example.com
Additional email records:
autodiscoverCNAME for Outlook auto-configuration_imaps._tcpSRV for IMAP service discovery
============================================================ PHASE 5 — HEALTH CHECK ROUTING (if --health-check)
Set up DNS-level health checks for failover or latency-based routing:
AWS Route53 health checks:
- HTTPS health check on
/healthendpoint, 30s interval, 3 failure threshold - Failover routing policy with PRIMARY and SECONDARY targets
- Low TTL (60s) on failover records for fast switchover
Cloudflare load balancing:
- Configure origin pools (primary + fallback)
- Health check monitors (HTTP/HTTPS)
- Steering policy: failover, round-robin, or latency-based
Latency-based routing (multi-region):
- Separate Route53 records per region with
latency_routing_policy - Each record pointed to the regional origin
============================================================ PHASE 6 — VALIDATION
After generating configuration, verify:
- No conflicting records — check for duplicate A/CNAME on same name
- CNAME restrictions — CNAME cannot coexist with other record types on same name
- TTL values — production records should use reasonable TTLs (300-3600s)
- Missing records — warn if www redirect, SSL validation records, or MX records are absent
- DNSSEC — recommend enabling if provider supports it
============================================================ SELF-HEALING VALIDATION (max 2 iterations)
After completing deployment/infrastructure changes, validate:
- Verify all generated files are syntactically valid (YAML, JSON, HCL, Dockerfile).
- Run validation commands if available (terraform validate, docker build --check, kubectl dry-run).
- Verify no secrets, credentials, or sensitive values are hardcoded.
- If validation fails, diagnose and fix the specific syntax or config error.
- Repeat up to 2 iterations.
IF STILL FAILING after 2 iterations:
- Document what failed and the exact error
- Include partial output if available
============================================================ OUTPUT
## DNS Configuration Complete
### Domain: {domain}
### Provider: {provider}
### Records Generated
| Type | Name | Value | TTL | Notes |
|------|------|-------|-----|-------|
| A | {domain} | {target} | 300 | Root domain |
| CNAME | www | {domain} | 300 | www redirect |
| CNAME | api | {alb/origin} | 300 | API endpoint |
| TXT | {domain} | v=spf1... | 3600 | SPF |
| TXT | _dmarc | v=DMARC1... | 3600 | DMARC |
### SSL/TLS
- Certificate: {ACM/Cloudflare/Let's Encrypt}
- Coverage: {domain}, *.{domain}
- Auto-renewal: {yes/no}
### Files Created
{list of files}
### Nameservers (if new zone)
{ns1, ns2, ns3, ns4 — update at registrar}
============================================================ NEXT STEPS
- If new zone: update nameservers at your domain registrar
- Wait for DNS propagation (up to 48 hours, usually minutes)
- Verify records:
dig +short example.com Aanddig +short example.com MX - Verify SSL:
curl -vI https://example.com 2>&1 | grep 'SSL certificate' - Test email authentication: send test email and check headers for SPF/DKIM/DMARC pass
- Set up monitoring for DNS resolution and certificate expiration
- If using DMARC with
p=none, monitor reports for 2 weeks then tighten top=quarantine
============================================================ SELF-EVOLUTION TELEMETRY
After producing output, record execution metadata for the /evolve pipeline.
Check if a project memory directory exists:
- Look for the project path in
~/.claude/projects/ - If found, append to
skill-telemetry.mdin that memory directory
Entry format:
### /dns — {{YYYY-MM-DD}}
- Outcome: {{SUCCESS | PARTIAL | FAILED}}
- Self-healed: {{yes — what was healed | no}}
- Iterations used: {{N}} / {{N max}}
- Bottleneck: {{phase that struggled or "none"}}
- Suggestion: {{one-line improvement idea for /evolve, or "none"}}
Only log if the memory directory exists. Skip silently if not found. Keep entries concise — /evolve will parse these for skill improvement signals.
============================================================ DO NOT
- Do NOT set TTL below 60 seconds without good reason (DDoS amplification risk)
- Do NOT use CNAME at zone apex — use ALIAS, ANAME, or A record instead
- Do NOT create MX records pointing to IP addresses — use hostnames
- Do NOT use
p=rejectDMARC policy without first monitoring withp=none - Do NOT create DNS records for services that do not exist yet
- Do NOT delete existing DNS records — only add or modify
- Do NOT hardcode IP addresses that may change — use CNAME to stable DNS names
- Do NOT skip SSL/TLS setup — all domains must serve over HTTPS
- Do NOT create wildcard DNS records unless specifically needed (security risk)
- Do NOT overwrite existing Terraform DNS resources without reading them first
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.