porkbun/SKILL.md
Porkbun DNS management via API. Create, edit, delete, list DNS records. Use for domain setup, Railway/Vercel/Coolify custom domains, CNAME/TXT/A record management.
npx skillsauth add snqb/my-skills porkbunInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Stored in pass:
api/porbkun/apikey — API key
api/porbkun/secretapikey — Secret API key
Generate keys at: https://porkbun.com/account/api Then enable API access per domain in Domain Management → Details → API Access.
Every Porkbun API call is POST with JSON body containing both keys:
PB_API=$(pass show api/porbkun/apikey)
PB_SECRET=$(pass show api/porbkun/secretapikey)
pb() {
curl -s -X POST "https://api.porkbun.com/api/json/v3/$1" \
-H "Content-Type: application/json" \
-d "$(echo "$2" | jq --arg ak "$PB_API" --arg sk "$PB_SECRET" '. + {apikey: $ak, secretapikey: $sk}')"
}
pb "ping" '{}' | jq .
# → {"status":"SUCCESS","yourIp":"..."}
pb "dns/retrieve/DOMAIN" '{}' | jq '.records[] | {id, name, type, content, ttl}'
Example:
pb "dns/retrieve/esen.works" '{}'
pb "dns/create/DOMAIN" '{"name":"SUBDOMAIN","type":"TYPE","content":"VALUE","ttl":"600"}'
Types: A, AAAA, CNAME, TXT, MX, NS, ALIAS, SRV, TLSA, CAA, HTTPS, SVCB, SSHFP
pb "dns/create/esen.works" '{"name":"transport","type":"CNAME","content":"djdd1474.up.railway.app"}'
pb "dns/create/esen.works" '{"name":"_railway-verify.transport","type":"TXT","content":"railway-verify=abc123..."}'
pb "dns/create/esen.works" '{"name":"","type":"A","content":"1.2.3.4"}'
pb "dns/create/esen.works" '{"name":"*","type":"A","content":"1.2.3.4"}'
pb "dns/edit/DOMAIN/RECORD_ID" '{"name":"www","type":"A","content":"1.1.1.2"}'
pb "dns/editByNameType/DOMAIN/TYPE/SUBDOMAIN" '{"content":"NEW_VALUE"}'
Example — update CNAME:
pb "dns/editByNameType/esen.works/CNAME/transport" '{"content":"new-target.up.railway.app"}'
pb "dns/delete/DOMAIN/RECORD_ID" '{}'
pb "dns/deleteByNameType/DOMAIN/TYPE/SUBDOMAIN" '{}'
DOMAIN="esen.works"
SUB="myapp"
CNAME_TARGET="xxxx.up.railway.app"
TXT_VALUE="railway-verify=abcdef..."
pb "dns/create/$DOMAIN" "{\"name\":\"$SUB\",\"type\":\"CNAME\",\"content\":\"$CNAME_TARGET\"}"
pb "dns/create/$DOMAIN" "{\"name\":\"_railway-verify.$SUB\",\"type\":\"TXT\",\"content\":\"$TXT_VALUE\"}"
pb "dns/create/example.com" '{"name":"","type":"A","content":"76.76.21.21"}'
pb "dns/create/example.com" '{"name":"www","type":"CNAME","content":"cname.vercel-dns.com"}'
pb "dns/create/example.com" '{"name":"app","type":"A","content":"SERVER_IP"}'
pb "domain/listAll" '{}' | jq '.domains[] | {domain, status, expireDate}'
name field is subdomain only — don't include the domain. "name":"www" not "name":"www.example.com"."name":"" (empty string)."name":"*" — creates *.domain.com.documentation
Enrich Markdown articles with inline Wikipedia links. First mention of each notable entity gets a hyperlink. Use when asked to add wiki links, enrich, or add references to .md files.
development
Structured visual QA: screenshot → batch issues → fix all → verify. Replaces the 300-cycle screenshot→edit death spiral. Optional bishkek review as exit gate. Use when building/polishing UI with browser testing, or when user asks for N iterations/reviews.
development
Find complex code, analyze intent, recommend battle-tested library replacements. Uses radon/eslint for detection, GitHub quality search for alternatives.
research
Research real-world UI patterns from curated galleries (Collect UI, Component Gallery, Mobbin). Use when exploring what exists: dropdowns, accordions, inputs, navigation, cards, modals, etc.