dns — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited dns (Agent Skill) and scored it 96/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 1 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 1 flagged
The text {match} tells the agent to skip the normal "ask the user first" gate. Used adversarially it removes the human-in-the-loop check before destructive or sensitive actions, turning a normally-gated agent into a fire-and-forget executor.
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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:
example.com or app.example.comroute53, 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============================================================ 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_setApplication config:
vercel.json, netlify.toml, wrangler.tomlDOMAIN, BASE_URL, APP_URL in environment variablesnext.config.js — assetPrefix, images.domainsCNAME file (GitHub Pages)Infrastructure references:
SSL/TLS certificates:
aws_acm_certificate)certbot, Caddy auto-TLS)Compile a list of:
============================================================ 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}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:
Project, Environment, ManagedBy)Cloudflare specifics:
proxied = true for A/CNAME records behind Cloudflare proxyttl = 1 (auto) for proxied recordsGCP Cloud DNS specifics:
state = "on"dns_name============================================================ PHASE 3 — SSL/TLS CERTIFICATE SETUP ============================================================
Configure SSL certificates for all domains:
AWS ACM:
*.{domain} and root domainus-east-1 — use a separate provider aliascreate_before_destroy = true lifecycle for zero-downtime renewalCloudflare:
Let's Encrypt (self-hosted):
0 0 1 * * certbot renew --quiet============================================================ 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"include: based on detected email provider (Google Workspace, Microsoft 365, AWS SES, SendGrid, Postmark)~all (soft fail) or -all (hard fail)DKIM (DomainKeys Identified Mail):
DMARC (Domain-based Message Authentication):
TXT _dmarc.example.com "v=DMARC1; p=quarantine; rua=mailto:[email protected]; ruf=mailto:[email protected]; pct=100"p=none to monitor, then move to p=quarantine, then p=rejectrua for aggregate reports, ruf for forensic reportsMX records (mail routing):
aspmx.l.google.com priority 10 + alternates{tenant}.mail.protection.outlook.commail.example.comAdditional email records:
autodiscover CNAME for Outlook auto-configuration_imaps._tcp SRV 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:
/health endpoint, 30s interval, 3 failure thresholdCloudflare load balancing:
Latency-based routing (multi-region):
latency_routing_policy============================================================ PHASE 6 — VALIDATION ============================================================
After generating configuration, verify:
============================================================ SELF-HEALING VALIDATION (max 2 iterations) ============================================================
After completing deployment/infrastructure changes, validate:
IF STILL FAILING after 2 iterations:
============================================================ 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 ============================================================
dig +short example.com A and dig +short example.com MXcurl -vI https://example.com 2>&1 | grep 'SSL certificate'p=none, monitor reports for 2 weeks then tighten to p=quarantine============================================================ SELF-EVOLUTION TELEMETRY ============================================================
After producing output, record execution metadata for the /evolve pipeline.
Check if a project memory directory exists:
~/.claude/projects/skill-telemetry.md in that memory directoryEntry 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 ============================================================
p=reject DMARC policy without first monitoring with p=none~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.