dns-record-manager

Operate dns-record-manager -- manage DNS records across Cloudflare and Route 53, review change history, and configure providers.

7 stars

Best use case

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

Operate dns-record-manager -- manage DNS records across Cloudflare and Route 53, review change history, and configure providers.

Teams using dns-record-manager 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-record-manager/SKILL.md --create-dirs "https://raw.githubusercontent.com/heldernoid/agentic-build-templates/main/projects/devops-infrastructure/dns-record-manager/skills/dns-record-manager/SKILL.md"

Manual Installation

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

How dns-record-manager Compares

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

Frequently Asked Questions

What does this skill do?

Operate dns-record-manager -- manage DNS records across Cloudflare and Route 53, review change history, and configure providers.

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

## When to use this skill

Use this skill when working with dns-record-manager: adding or editing DNS records, reviewing the change audit log, configuring provider credentials, or deploying the stack.

## Quick Start (development)

```bash
cd dns-record-manager
pnpm install
cp .env.example .env
# Edit .env: add CLOUDFLARE_API_TOKEN and/or AWS credentials

cd backend && pnpm dev
# In a separate terminal:
cd frontend && pnpm dev
# Dashboard: http://localhost:5173
```

## Quick Start (Docker)

```bash
cp .env.example .env
# Edit .env with your provider credentials
docker compose up -d
# Dashboard: http://localhost:8080
```

## Environment Variables

| Variable | Default | Description |
|----------|---------|-------------|
| `PORT` | `3000` | Express server port |
| `DB_PATH` | `./data/dns.db` | SQLite audit log path |
| `CLOUDFLARE_API_TOKEN` | `` | Cloudflare API token (Zone:Read + DNS:Edit) |
| `CLOUDFLARE_ZONE_IDS` | `` | Comma-separated zone IDs (empty = all zones) |
| `AWS_ACCESS_KEY_ID` | `` | AWS access key for Route 53 |
| `AWS_SECRET_ACCESS_KEY` | `` | AWS secret key |
| `AWS_REGION` | `us-east-1` | AWS region |
| `ROUTE53_HOSTED_ZONE_IDS` | `` | Comma-separated hosted zone IDs (empty = all) |
| `STATIC_ZONES_FILE` | `` | Path to static JSON file (dev fallback) |
| `CORS_ORIGIN` | `http://localhost:5173` | Dashboard CORS origin |
| `VITE_API_URL` | `http://localhost:3000` | API base URL for frontend |

## API Reference

| Method | Path | Description |
|--------|------|-------------|
| `GET` | `/api/health` | `{ ok: true }` |
| `GET` | `/api/zones` | All zones across all providers |
| `GET` | `/api/zones/:zoneId/records` | Records for a zone |
| `POST` | `/api/zones/:zoneId/records` | Create a record |
| `PUT` | `/api/zones/:zoneId/records/:recordId` | Update a record |
| `DELETE` | `/api/zones/:zoneId/records/:recordId` | Delete a record |
| `GET` | `/api/audit` | Last 200 change log entries |
| `GET` | `/api/settings` | Current settings |
| `POST` | `/api/settings` | Update settings |

## Record Types

| Type | Color | Typical Use |
|------|-------|-------------|
| A | Blue | IPv4 address |
| AAAA | Indigo | IPv6 address |
| CNAME | Violet | Alias to another hostname |
| MX | Amber | Mail server (with priority) |
| TXT | Emerald | SPF, DKIM, DMARC, site verification |
| NS | Gray | Nameserver delegation |
| SRV | Pink | Service location |
| CAA | Red | CA authorization |

## Record Request Body

```json
{
  "name": "app.example.com",
  "type": "A",
  "content": "198.51.100.42",
  "ttl": 300,
  "proxied": true,
  "comment": "Production app server"
}
```

For MX records, include `"priority": 10`. For CNAME, `content` is the target hostname.

## Audit Log

Every create, update, and delete writes a row to `change_log` before and after the provider API call. The `old_value` and `new_value` columns contain JSON snapshots of the record.

View recent changes:

```bash
curl http://localhost:3000/api/audit
```

## Cloudflare API Token

Required permissions:
- Zone: Read (to list zones)
- DNS: Edit (to create/update/delete records)

Scope: "All zones" or a specific zone list.

## Route 53 IAM Policy

Minimum required permissions:

```json
{
  "Version": "2012-10-17",
  "Statement": [{
    "Effect": "Allow",
    "Action": [
      "route53:ListHostedZones",
      "route53:ListResourceRecordSets",
      "route53:ChangeResourceRecordSets"
    ],
    "Resource": "*"
  }]
}
```

## Static JSON File Format (Development)

```json
[
  {
    "id": "zone-1",
    "name": "dev.local",
    "records": [
      {
        "id": "rec-1",
        "name": "app.dev.local",
        "type": "A",
        "content": "127.0.0.1",
        "ttl": 300
      }
    ]
  }
]
```

## Troubleshooting

**"No zones found"**
- Verify at least one provider is configured (check Settings page)
- For Cloudflare: test the token with `curl -H "Authorization: Bearer $TOKEN" https://api.cloudflare.com/client/v4/user/tokens/verify`
- For Route 53: check IAM permissions and AWS region setting

**"HTTP 403 -- Invalid API token" from Cloudflare**
- Token lacks Zone:Read or DNS:Edit permission
- Token may be zone-scoped and not include the target zone
- Token may have been revoked

**Records not updating after save**
- Check the audit log -- if `result = 'error'`, the provider rejected the request
- The `error_message` column shows the original provider error message

Related Skills

bookmark-manager

7
from heldernoid/agentic-build-templates

Save and organize URLs with tags, full-text search, and auto-generated screenshots. Use when you need to save a URL for later, organize links into collections, search saved bookmarks, or import browser bookmarks. Triggers include "save this link", "bookmark", "organize URLs", "find that article I saved", or any task involving managing a personal URL library.

health-records-vault

7
from heldernoid/agentic-build-templates

Encrypted personal health document storage system. Use when you need to upload, browse, download, or share encrypted health documents, generate share links, export a backup archive, or understand the AES-256-GCM security model. Triggers include "upload health record", "encrypt document", "share medical file", "vault backup", "download record", "health record storage", or any task involving personal medical documents.

Skill: clinic-queue-manager API

7
from heldernoid/agentic-build-templates

## When to use this skill

appointment-manager

7
from heldernoid/agentic-build-templates

Schedule and track healthcare appointments, manage provider contacts, build pre-appointment checklists, attach documents, receive reminders, and export appointment history. Use when a user needs to add, view, update, or export healthcare appointments.

env-manager

7
from heldernoid/agentic-build-templates

Manage encrypted .env file vaults across projects and environments using env-file-manager

proxy-record

7
from heldernoid/agentic-build-templates

Record HTTP/HTTPS traffic through the dev-proxy-recorder. Covers starting the proxy, session management, proxy.yaml routes, and HTTPS interception setup.

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".

health-records

7
from heldernoid/agentic-build-templates

Manage per-animal health event records, follow-up scheduling, and treatment cost tracking. Use when asked to add a vet visit note, record a treatment with cost, set a follow-up date, view all events for one animal, filter events by type across the herd, or export health history to CSV. Triggers include "vet visit", "treatment record", "follow-up date", "health event log", "export health history", "cost tracking", or any task focused on individual health event documentation rather than vaccination scheduling.

Skill: farm-task-manager

7
from heldernoid/agentic-build-templates

## Purpose

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