hetzner-dns
Skill159 starsChanged 6 months agoMITView on GitHub
Read and manage Hetzner DNS zones and records through gateway-proxied DNS API requests with guarded A, AAAA, CNAME, and TXT changes.
We split this skill into the rules it gives an agent
11 rules. About 0 are common, 3 are distinctive, and 8 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈3
Distinctive · estimate
This author's own choices. Worth a look.
8
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- could be automatic: a setting could enforce it
- Distinctive: line 51
Use this skill for Hetzner DNS zone discovery and A, AAAA, CNAME, TXT, and other record management through the Hetzner DNS API.
- Distinctive: line 56
Read first: list zones, then list records for the target zone id.
- Very specific: line 59
Use plan before mutations so the operator can see the tier and required grant.
- Very specific: line 61
Treat hetzner_dns.cjs as the API wrapper.
- Very specific: line 69
If a live http_request call returns 401 or 403, stop after that first failure.
- Very specific: line 74
Never paste, print, or inspect HETZNER_DNS_API_TOKEN.
- Very specific: line 119
Use update-rrset only with an exact --record-id from a prior read.
- Very specific: line 120
Use remove-record, delete-record, or delete-rrset only with an exact --record-id.
- Distinctive: line 122
Do not modify generated SOA records or default NS records.
- Very specific: line 123
Use @ for apex records when the API requires a record name.
- Very specific: line 124
Stop before red actions (delete-record, delete-rrset, delete-zone) unless the operator grants the exact record id or zone id target.
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Hetzner DNS
Use this skill for Hetzner DNS zone discovery and A, AAAA, CNAME, TXT, and other record management through the Hetzner DNS API.
Default Workflow
- Read first: list zones, then list records for the target zone id.
- The DNS API is record-id based. Use
list-rrsetsto discover existing record ids before update or delete requests. - Use
planbefore mutations so the operator can see the tier and required grant. - Treat
hetzner_dns.cjsas the API wrapper. Do not handcraft Hetzner DNS API URLs, JSON bodies, tiers, or secret refs from memory. - For prompt/user testing, stop after
planor after helperhttp-requestpayload generation. Do not call the built-inhttp_requesttool. - For real user requests that need live Hetzner DNS reads, pass the
helper-emitted
httpRequestobject unchanged tohttp_request. ThesecretHeadersentry forAuth-API-Tokenis the secret reference; do not preflight it, inspect it, or ask the model for the token. - If a live
http_requestcall returns 401 or 403, stop after that first failure. Do not retry, do not fan out to more endpoints, and ask the operator to set or verifyHETZNER_DNS_API_TOKEN. - Require explicit operator grant before creating, updating, adding, removing,
or deleting records. Pass
--operator-grantonly after that grant. - Never paste, print, or inspect
HETZNER_DNS_API_TOKEN; the gateway injects it server-side asAuth-API-Token.
See references/operator-setup.md for DNS token setup, scope, autonomy defaults, and record-id handling.
Command Contract
node skills/hetzner-dns/hetzner_dns.cjs --helpPlan a DNS request without contacting Hetzner:
node skills/hetzner-dns/hetzner_dns.cjs --format json plan "Point demo-acme.example.com at the demo VPS"Build read requests:
node skills/hetzner-dns/hetzner_dns.cjs --format json http-request list-zones
node skills/hetzner-dns/hetzner_dns.cjs --format json http-request list-rrsets --zone-id zone123 --name demo --type A
node skills/hetzner-dns/hetzner_dns.cjs --format json http-request get-rrset --record-id record123Build guarded write requests:
node skills/hetzner-dns/hetzner_dns.cjs --format json http-request create-rrset \
--zone-id zone123 --name demo --type A --ttl 300 --record 203.0.113.10 \
--operator-grant
node skills/hetzner-dns/hetzner_dns.cjs --format json http-request update-rrset \
--record-id record123 --zone-id zone123 --name demo --type A --ttl 300 --record 203.0.113.11 \
--operator-grant
node skills/hetzner-dns/hetzner_dns.cjs --format json http-request delete-record \
--record-id record123 --operator-grantWorking Rules
create-rrsetandadd-recordemit one DNS API record create request. For multiple values, build one request per value.- Use
update-rrsetonly with an exact--record-idfrom a prior read. - Use
remove-record,delete-record, ordelete-rrsetonly with an exact--record-id. - Do not modify generated SOA records or default NS records.
- Use
@for apex records when the API requires a record name. - Stop before red actions (
delete-record,delete-rrset,delete-zone) unless the operator grants the exact record id or zone id target. - Cost per assistant run is recorded by HybridClaw
UsageTotals; helper output includescostMeasurement.system = "UsageTotals"for eval verification.
Eval Suite
node skills/hetzner-dns/hetzner_dns.cjs --format json eval-scenariosThe fixture at evals/scenarios.json contains 10 DNS scenarios covering zone
reads, record reads, A/AAAA/CNAME/TXT changes, and guarded deletes.
Validation
python3 skills/skill-creator/scripts/quick_validate.py skills/hetzner-dns
node skills/hetzner-dns/hetzner_dns.cjs --help
node skills/hetzner-dns/hetzner_dns.cjs --format json eval-scenariosIn this repository91 other files it gives its agents.
- AGENTS.mdAGENTS.md
- skills/llm-wiki/templates/AGENTS.mdAGENTS.md
- templates/AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- 1passwordSkill
- agentic-tpmSkill
- airtableSkill
- alexaSkill
- apple-calendarSkill
- apple-musicSkill
- apple-passwordsSkill
- bahnSkill
- blinkSkill
- bookingSkill
- brand-voiceSkill
- byd-batterySkill
- channel-catchupSkill
- code-reviewSkill
- code-simplificationSkill
- current-timeSkill
- diagramSkill
- discordSkill
- distil-pii-redactorSkill
- docxSkill
- download-platform-invoicesSkill
- excalidrawSkill
- fastbillSkill
- fax-sendSkill
- feature-planningSkill
- firecrawlSkill
- froniusSkill
- ga4Skill
- gh-issuesSkill
- github-pr-workflowSkill
- gogSkill
- google-adsSkill
- google-workspaceSkill
- gwsSkill
- handoff-linksSkill
- hermes3000-writingSkill
- hetzner-cloudSkill
- hetzner-storage-boxSkill
- heygenSkill
- homematicSkill
- hubspotSkill
- hueSkill
- human-distillSkill
- hybridclaw-helpSkill
- image-generationSkill
- inbox-cleanupSkill
- iss-positionSkill
- langfuseSkill
- lexware-officeSkill
- llm-wikiSkill
- mailchimpSkill
- manim-videoSkill
- microsoft-365Skill
- miroSkill
- mittwaldSkill
- money-savingSkill
- The first 60 shown.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
Reviews can't be read right now.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

