dns-config

Manage the local-dns-override hosts.yaml configuration file. Use when you need to view the current DNS config, validate a hosts.yaml file before applying it, understand the config file format, or check which records are currently loaded. Triggers include "show DNS config", "validate hosts.yaml", "check loaded records", "DNS config file", "list local DNS entries", or any task involving viewing or validating the DNS record configuration.

7 stars

Best use case

dns-config is best used when you need a repeatable AI agent workflow instead of a one-off prompt.

Manage the local-dns-override hosts.yaml configuration file. Use when you need to view the current DNS config, validate a hosts.yaml file before applying it, understand the config file format, or check which records are currently loaded. Triggers include "show DNS config", "validate hosts.yaml", "check loaded records", "DNS config file", "list local DNS entries", or any task involving viewing or validating the DNS record configuration.

Teams using dns-config should expect a more consistent output, faster repeated execution, less prompt rewriting.

When to use this skill

  • You want a reusable workflow that can be run more than once with consistent structure.

When not to use this skill

  • You only need a quick one-off answer and do not need a reusable workflow.
  • You cannot install or maintain the underlying files, dependencies, or repository context.

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/dns-config/SKILL.md --create-dirs "https://raw.githubusercontent.com/heldernoid/agentic-build-templates/main/projects/developer-tools/local-dns-override/skills/dns-config/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/dns-config/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How dns-config Compares

Feature / Agentdns-configStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Manage the local-dns-override hosts.yaml configuration file. Use when you need to view the current DNS config, validate a hosts.yaml file before applying it, understand the config file format, or check which records are currently loaded. Triggers include "show DNS config", "validate hosts.yaml", "check loaded records", "DNS config file", "list local DNS entries", or any task involving viewing or validating the DNS record configuration.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

# dns-config

View and validate the local-dns-override hosts.yaml configuration.

## When to use

- Checking what records are currently loaded
- Validating a new hosts.yaml before saving it
- Understanding the full config file format
- Debugging why a hostname is not resolving as expected

## hosts.yaml full format reference

```yaml
# Optional: override the upstream DNS resolver
# Format: host:port
# Default: 8.8.8.8:53
upstream: 8.8.8.8:53

records:
  - hostname: api.local        # required: non-empty string
    type: A                    # required: A | AAAA | CNAME
    value: 127.0.0.1           # required: IPv4 / IPv6 / hostname
    ttl: 60                    # optional: seconds, default 60

  - hostname: "*.dev.local"    # wildcard: quote the string in YAML
    type: A
    value: 127.0.0.1

  - hostname: www.api.local
    type: CNAME
    value: api.local           # CNAME value must be a valid hostname
```

## Show current loaded config via CLI

```bash
node dist/dns-server.js config
node dist/dns-server.js config --config /path/to/hosts.yaml
```

## Show config via API

```bash
# Full config object
curl -s http://127.0.0.1:5380/api/config | jq .

# Just the records array
curl -s http://127.0.0.1:5380/api/config | jq '.records'

# Count of records
curl -s http://127.0.0.1:5380/api/config | jq '.records | length'

# Find all wildcard records
curl -s http://127.0.0.1:5380/api/config | jq '[.records[] | select(.hostname | startswith("*"))]'
```

## Validate before applying

```bash
# Dry-run validation (exit 0 = valid, exit 1 = errors printed)
node dist/dns-server.js config --validate-only --config ./hosts.yaml
```

## Config API response shape

```json
{
  "upstream": "8.8.8.8:53",
  "configPath": "./hosts.yaml",
  "loadedAt": "2026-03-20T15:53:10Z",
  "records": [
    {
      "hostname": "api.local",
      "type": "A",
      "value": "127.0.0.1",
      "ttl": 60,
      "wildcard": false
    },
    {
      "hostname": "*.dev.local",
      "type": "A",
      "value": "127.0.0.1",
      "ttl": 60,
      "wildcard": true
    }
  ]
}
```

## Environment variables that affect config loading

| Variable       | Effect                                  |
|----------------|-----------------------------------------|
| `DNS_CONFIG`   | Path to hosts.yaml (default: ./hosts.yaml) |
| `UPSTREAM_DNS` | Override upstream field in YAML         |

## Common validation errors

| Error message | Fix |
|---|---|
| `record[N].value: not a valid IPv4` | Check IPv4 format - must be 4 octets 0-255 |
| `record[N].hostname: empty` | hostname field is required and non-empty |
| `record[N].type: unknown` | type must be exactly A, AAAA, or CNAME |
| `upstream: invalid format` | upstream must be host:port format |
| `path traversal detected` | config path must not escape the project root |

Related Skills

Skill: pi-config

7
from heldernoid/agentic-build-templates

Patterns for Raspberry Pi boot partition configuration injection.

nginx-config-generator

7
from heldernoid/agentic-build-templates

Generate production-ready nginx configuration files for reverse proxy, SSL, rate limiting, and caching setups. Use when you need an nginx config for a web application, API, static site, or reverse proxy. Triggers include "nginx config", "nginx configuration", "nginx setup", "reverse proxy config", "SSL nginx", "nginx rate limiting", or any request involving nginx web server configuration.

validate-config

7
from heldernoid/agentic-build-templates

Validate a config file (JSON, YAML, TOML, or .env) against a JSON Schema using config-validator. Use when you need to check that a config file is valid before deploying, catch missing required fields or wrong types, or run validation in a CI pipeline. Triggers include "validate config", "check config file", "schema validation", "validate yaml", "validate json config", "config has errors", or any task involving checking whether a config file matches its expected schema.

ssh-config-manager

7
from heldernoid/agentic-build-templates

Manage SSH host configurations in ~/.ssh/config from the terminal. Use when adding, editing, or searching SSH hosts, cloning host configs, testing connections, or importing configs. Triggers include "ssh config", "ssh host", "sshm", "add ssh host", "edit ssh config", "test ssh connection".

Skill: Uptime Monitoring

7
from heldernoid/agentic-build-templates

## Overview

Skill: Status Page

7
from heldernoid/agentic-build-templates

## Overview

Skill: unit-conversion

7
from heldernoid/agentic-build-templates

## Overview

Skill: recipe-scaler

7
from heldernoid/agentic-build-templates

## Overview

reading-list

7
from heldernoid/agentic-build-templates

Operate the reading-list API to save, manage, tag, search, and export articles.

email-digest

7
from heldernoid/agentic-build-templates

Configure, test, and troubleshoot the reading-list daily email digest delivered via nodemailer.

websocket-realtime

7
from heldernoid/agentic-build-templates

Use the WebSocket connection in poll-builder to receive live vote updates. Use when you need to stream real-time poll results, monitor a poll for new votes, or build a live dashboard. Triggers include "live results", "real-time updates", "stream votes", "watch poll", or "WebSocket".

poll-builder

7
from heldernoid/agentic-build-templates

Self-hosted poll creation tool with real-time results. Use when you need to create a poll, check vote counts, close a poll, export results, or get the shareable link for a poll. Triggers include "create poll", "vote", "poll results", "survey", "collect votes", "share poll", or any task involving polling or voting.