From hypervibe
Changes a Porkbun-registered domain's nameservers to point to Cloudflare using the Porkbun REST API v3. Triggered automatically when adding a domain with Porkbun as registrar.
How this skill is triggered — by the user, by Claude, or both
Slash command
/hypervibe:_dns-porkbunThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
- Detect the user's language from their messages and ALWAYS reply in that language (default: English). This applies to every user-facing message: questions, progress, confirmations, summaries, errors.
You receive as input: <domain>, <ns1_cloudflare>, <ns2_cloudflare>. Your job: change the domain's nameservers at Porkbun so they point to <ns1_cloudflare> and <ns2_cloudflare>. You then return to /add-domain.
No CLI install needed - the Porkbun API v3 is a simple REST/JSON API that we call with curl. Auth is done via two keys (API key + Secret) passed in the body of each request (not in the headers).
Porkbun requires 2 values, stored in the vault (item PORKBUN, fields api_key / secret_key):
PORKBUN_API_KEY (the public key, format pk1_...)PORKBUN_SECRET_KEY (the secret key, format sk1_...)Make sure the vault is unlocked (follow _ensure-vault), load the keys and test with their /ping endpoint:
VAULT="${CLAUDE_SKILL_DIR}/../../scripts/vault/vault.mjs"
export PORKBUN_API_KEY=$(node "$VAULT" get PORKBUN api_key 2>/dev/null)
export PORKBUN_SECRET_KEY=$(node "$VAULT" get PORKBUN secret_key 2>/dev/null)
if [ -n "$PORKBUN_API_KEY" ] && [ -n "$PORKBUN_SECRET_KEY" ]; then
RESP=$(curl -s -X POST "https://api.porkbun.com/api/json/v3/ping" \
-H "Content-Type: application/json" \
-d "{\"apikey\":\"$PORKBUN_API_KEY\",\"secretapikey\":\"$PORKBUN_SECRET_KEY\"}")
echo "$RESP" | grep -q '"status":"SUCCESS"' && echo "VALID" || echo "INVALID"
fi
VALID -> go to Step 3.Guide the user:
I need a Porkbun API key pair (key + secret) to change your domain's nameservers. It takes about 1 min to create:
- Log in at https://porkbun.com
- Top right, Account -> API Access (or directly: https://porkbun.com/account/api)
- Enter a name (e.g.
Claude Code)- Click Create API Key
- A box shows the API Key + Secret API Key - copy both immediately, the secret will not be shown again afterwards
Give me the 2 values (API Key + Secret).
Store them in the vault once received (masked-input window - the values do not pass through the chat):
node "${CLAUDE_SKILL_DIR}/../../scripts/vault/launch.mjs" add --name PORKBUN --service Porkbun --fields "api_key:secret,secret_key:secret"
Then load them into the current session:
export PORKBUN_API_KEY=$(node "$VAULT" get PORKBUN api_key)
export PORKBUN_SECRET_KEY=$(node "$VAULT" get PORKBUN secret_key)
Validate by replaying the test from Step 1.
Porkbun-specific gotcha: having the API keys is not enough. Each domain you want to manage via the API must have an "API Access" toggle enabled separately. Without it, all API calls on that domain will return an error.
Ask the user to do it before calling the NS endpoint:
A small Porkbun quirk: each domain has an "API Access" toggle that must be enabled manually so we can manage it via the API. You only need to do this once:
- Go to https://porkbun.com/account/domainsSpeedy (your domain list)
- Find
<domain>-> click Details on the right- Find the API Access option -> switch it to ON
- Save
Let me know when it's done.
Wait for explicit confirmation before continuing.
Official endpoint (verified 2026-05-28 via the Porkbun OpenAPI spec):
POST https://api.porkbun.com/api/json/v3/domain/updateNs/<domain>
Content-Type: application/json
{
"apikey": "<api_key>",
"secretapikey": "<secret_key>",
"ns": ["<ns1_cloudflare>", "<ns2_cloudflare>"]
}
Command:
RESP=$(curl -s -X POST "https://api.porkbun.com/api/json/v3/domain/updateNs/<domain>" \
-H "Content-Type: application/json" \
-d "{
\"apikey\":\"$PORKBUN_API_KEY\",
\"secretapikey\":\"$PORKBUN_SECRET_KEY\",
\"ns\":[\"<ns1_cloudflare>\",\"<ns2_cloudflare>\"]
}")
echo "$RESP"
Possible responses:
{"status":"SUCCESS"} -> ✅ NS changed{"status":"ERROR","message":"API access not enabled..."} -> the user forgot Step 3 (per-domain toggle), go back to Step 3{"status":"ERROR","message":"Invalid API key..."} -> broken credentials, go back to Step 2Verification:
curl -s -X POST "https://api.porkbun.com/api/json/v3/domain/getNs/<domain>" \
-H "Content-Type: application/json" \
-d "{\"apikey\":\"$PORKBUN_API_KEY\",\"secretapikey\":\"$PORKBUN_SECRET_KEY\"}"
Must return {"status":"SUCCESS","ns":["<ns1>","<ns2>"]}.
Go to https://porkbun.com/account/domainsSpeedy -> click Details next to
<domain>-> find the Authoritative Nameservers section -> enter:
<ns1_cloudflare><ns2_cloudflare>Save. Let me know when it's done.
✅ Nameservers for the domain
<domain>are now pointed to Cloudflare. Propagation: 5-30 min.
npx claudepluginhub flavien-ia/hypervibe-harness --plugin hypervibeChanges a Namecheap-registered domain's nameservers to point to Cloudflare using the Namecheap REST API via curl. Triggered by /add-domain when the registrar is Namecheap.
Manages DNS records (A, AAAA, CNAME, MX, TXT) for Namecheap domains via their API. Lists domains, views/edits host entries, and guides API credential setup.
Manages domain/DNS operations across Cloudflare, DNSimple, and Namecheap. Onboards zones to Cloudflare, flips nameservers, sets redirects (Page Rules/Rulesets/Workers), and verifies DNS/HTTP.