namecheap
Skill0 starsChanged 5 months agoMITView on GitHub
Namecheap domain management via the Namecheap XML API. Check domain availability, register/transfer/renew domains, manage DNS records (A, AAAA, CNAME, MX, TXT, etc.), list domains, set custom nameservers, manage email forwarding, and check pricing. Use when the user says "namecheap", "check domain", "register domain", "DNS records", "nameservers", "domain transfer", "renew domain", or "domain pricing".
- Reads credentials
- Sends data out
2 other projects use a version of this.
Adopted by
Most recently taken up by
- github/awesome-copilottheir own version, first seen Oct 25, 2026
- ArgentAIOS/agent-skillstheir own version, first seen Mar 30, 2026
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 2
- github/awesome-copilot★ 41ksame name
- ArgentAIOS/agent-skills★ 4same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository17 other files it gives its agents.
- battleSkill
- briefSkill
- codex-writeSkill
- councilSkill
- crawlSkill
- deslopSkill
- evaluate-planSkill
- gmail-attachmentSkill
- keyword-researchSkill
- model-scanSkill
- modeSkill
- pair-sessionSkill
- planSkill
- salesforce-reportsSkill
- second-opinionSkill
- update-machineSkill
- week-aheadSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
21 rules. About 0 are common, 10 are distinctive, and 11 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈10
Distinctive · estimate
This author's own choices. Worth a look.
11
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 25
Required environment variables: Put them in a .env file, your shell rc, or ~/.config/claude-skills/namecheap.env.
- Very specific: line 36
First-time setup: run scripts/nc_api.sh --setup to be prompted for each value and have a ~/.config/claude-skills/namecheap.env file written …
- Distinctive: line 82
If any are available, ask if the user wants to register one
- Distinctive: line 88
Search for available domains across multiple TLDs.
- Very specific: line 105
Check pricing: scripts/nc_api.sh pricing "com" "REGISTER" (use appropriate TLD)
- Distinctive: line 107
Ask the user for contact information OR check if they have a default address configured
- Very specific: line 108
If user wants to use an existing address: scripts/nc_api.sh get-address-list
- Very specific: line 113
If AddFreeWhoisguard=yes and WGEnabled=yes were included, confirm privacy is active
- Very specific: line 127
Call scripts/nc_api.sh list "[filter]" where filter can be: all (default), expiring, expired
- Distinctive: line 186
Ask user for new record details if not provided:
- Distinctive: line 221
Ask which record to remove (by number)
- Very specific: line 222
Remove from list, send remaining records via dns-set
- Distinctive: line 245
Ask for nameserver hostname and IP
- Very specific: line 256
Check renewal pricing: scripts/nc_api.sh pricing "<tld>" "RENEW"
- Very specific: line 269
Check transfer pricing: scripts/nc_api.sh pricing "<tld>" "TRANSFER"
- Distinctive: line 270
Ask for the EPP/authorization code from the current registrar
- Distinctive: line 280
Check pricing for a TLD.
- Very specific: line 303
Ask for mailbox name (e.g., info) and forward-to address
- Very specific: line 352
If API returns Status="ERROR", extract Error@Number and Error text
- Distinctive: line 376
Always check availability and price *before* registering.
- Distinctive: line 379
Use the sandbox endpoint for the first run of any new DNS script.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 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
Namecheap Domain Manager
Manage domains via the Namecheap XML API. All commands require credentials configured in environment variables.
Setup & Authentication
Required environment variables. Put them in a .env file, your shell rc, or
~/.config/claude-skills/namecheap.env. The bundled script will pick them up.
| Variable | Description |
NAMECHEAP_API_USER | Your Namecheap username |
NAMECHEAP_API_KEY | API key from Profile → Tools → API Access |
NAMECHEAP_USERNAME | Usually same as NAMECHEAP_API_USER |
NAMECHEAP_CLIENT_IP | Your whitelisted IPv4 address |
NAMECHEAP_USE_SANDBOX | Set to true for sandbox mode (default: false) |
First-time setup: run scripts/nc_api.sh --setup to be prompted for each value and
have a ~/.config/claude-skills/namecheap.env file written for you.
Get an API key: sign in at namecheap.com, go to Profile → Tools → API Access, enable API access, then create a key. The key is shown only once — copy it.
IP Whitelisting: Namecheap requires the calling IP to be whitelisted. Only IPv4 is supported. The user must whitelist their IP at Profile > Tools > API Access > Whitelisted IPs.
Production API requirements (at least one must be met):
- 20+ domains in the account
- $50+ account balance
- $50+ in purchases within the last 2 years
Sandbox has no requirements — create a free account at https://www.sandbox.namecheap.com/.
API Base URLs
| Environment | URL |
| Production | https://api.namecheap.com/xml.response |
| Sandbox | https://api.sandbox.namecheap.com/xml.response |
Rate Limits
- 20 requests/minute, 700/hour, 8,000/day
- Batch domain checks using comma-separated lists to conserve quota
Subcommands
/namecheap check <domain1> [domain2] [...]
Check domain availability.
Steps:
- Validate credentials are set (run
scripts/nc_api.sh check-env) - Accept one or more domain names as arguments (comma or space separated)
- Call
scripts/nc_api.sh check "domain1.com,domain2.com" - Parse XML response — display results as a table:
| Domain | Available | Premium | Price | ICANN Fee |
| example.com | No | - | - | - |
| example.net | Yes | No | - | $0.18 |
- If any are available, ask if the user wants to register one
/namecheap search <keyword> [tlds]
Search for available domains across multiple TLDs.
Steps:
- Take a keyword and optional TLD list (default:
com,net,org,io,co,dev,app,ai) - Generate domain combinations:
keyword.com,keyword.net, etc. - Call
scripts/nc_api.sh check "<comma-separated-list>" - Display availability table sorted by: available first, then by TLD preference
- Offer to check pricing for available domains
/namecheap register <domain> [years]
Register/purchase a new domain.
Steps:
- Confirm domain is available first (call check if not already confirmed)
- Check pricing:
scripts/nc_api.sh pricing "com" "REGISTER"(use appropriate TLD) - Display price and ask for confirmation: "Register example.com for N year(s) at $X.XX?"
- Ask the user for contact information OR check if they have a default address configured
- If user wants to use an existing address:
scripts/nc_api.sh get-address-list - Let user pick an address or enter new contact details
- If user wants to use an existing address:
- CRITICAL: Always ask for explicit confirmation before purchasing. Display the total cost.
- Call
scripts/nc_api.sh register "<domain>" "<years>" "<contact_params>" - Parse response — display: Domain, Order ID, Transaction ID, Charged Amount, WhoisGuard status
- If
AddFreeWhoisguard=yesandWGEnabled=yeswere included, confirm privacy is active
Contact fields required (for Registrant, Tech, Admin, AuxBilling — all four):
FirstName, LastName, Address1, City, StateProvince, PostalCode, Country, Phone (+1.2125551234 format), EmailAddress
Optional: OrganizationName, Address2
/namecheap list [filter]
List domains in the account.
Steps:
- Call
scripts/nc_api.sh list "[filter]"where filter can be:all(default),expiring,expired - Optional search term can be passed to filter by keyword
- Parse XML — display as table:
| Domain | Created | Expires | Auto-Renew | Locked | WhoisGuard | DNS |
| example.com | 2024-01-15 | 2025-01-15 | Yes | Yes | Enabled | Namecheap |
- Show paging info if more than one page of results
/namecheap info <domain>
Get detailed information about a domain.
Steps:
- Call
scripts/nc_api.sh info "<domain>" - Parse and display:
- Domain status, ID, owner
- Created/Expires dates, years registered
- WhoisGuard status and expiration
- DNS provider, nameservers list
- Host record count
- Modification rights
/namecheap dns <domain>
Show current DNS records for a domain.
Steps:
- Split domain into SLD and TLD
- Call
scripts/nc_api.sh dns-get "<sld>" "<tld>" - Display records as table:
| # | Name | Type | Address | MX Pref | TTL | Active |
| 1 | @ | A | 1.2.3.4 | - | 1800 | Yes |
| 2 | www | CNAME | example.com | - | 1800 | Yes |
| 3 | @ | MX | mail.example.com | 10 | 1800 | Yes |
/namecheap dns-set <domain> <action> [records...]
Manage DNS records for a domain.
Actions:
add— Add a record (merges with existing)remove— Remove a record by index or matchreplace— Replace all records with the provided setreset— Reset to Namecheap default DNS
Steps for add:
- Export env vars from
~/.claude/settings.local.json(see Critical DNS Gotchas §4) - Get existing records:
scripts/nc_api.sh dns-get "<sld>" "<tld>" - Parse existing records into a list
- Ask user for new record details if not provided:
- Type (A, AAAA, CNAME, MX, TXT, URL, URL301, FRAME)
- Host (@ for root, www, subdomain name, * for wildcard)
- Value (IP address, target domain, TXT content, etc.)
- TTL (default: 1800)
- MX Priority (only for MX records, default: 10)
- Merge new record into existing list
- CRITICAL:
setHostsis destructive — it replaces ALL records. Always send the complete desired record set including all existing records. - If any record contains special characters (+, /, =, spaces) in its value — especially TXT records (DKIM, SPF, DMARC) — use
curl --data-urlencodedirectly instead of thenc_api.shscript. See safe pattern below. - If any MX records are present, include
EmailType=MXin the POST body (see Critical DNS Gotchas §2). - Confirm success and display updated record table
Safe curl pattern for DNS with special characters:
curl -s -X POST "https://api.namecheap.com/xml.response" \
--data-urlencode "ApiUser=${NAMECHEAP_API_USER}" \
--data-urlencode "ApiKey=${NAMECHEAP_API_KEY}" \
--data-urlencode "UserName=${NAMECHEAP_USERNAME}" \
--data-urlencode "ClientIp=${NAMECHEAP_CLIENT_IP}" \
--data-urlencode "Command=namecheap.domains.dns.setHosts" \
--data-urlencode "SLD=example" \
--data-urlencode "TLD=com" \
--data-urlencode "EmailType=MX" \
--data-urlencode "HostName1=@" \
--data-urlencode "RecordType1=A" \
--data-urlencode "Address1=1.2.3.4" \
--data-urlencode "TTL1=1800" \
--data-urlencode "HostName2=resend._domainkey" \
--data-urlencode "RecordType2=TXT" \
--data-urlencode "Address2=p=MIGfMA0GCSqGSIb3DQEB..." \
--data-urlencode "TTL2=1800"Steps for remove:
- Get and display existing records (numbered)
- Ask which record to remove (by number)
- Remove from list, send remaining records via
dns-set
Steps for reset:
- Confirm with user
- Call
scripts/nc_api.sh dns-default "<sld>" "<tld>"
/namecheap ns <domain> <action> [nameservers]
Manage nameservers.
Actions:
get— Show current nameserversset— Set custom nameservers (comma-separated)reset— Reset to Namecheap default nameserverscreate— Create a personal/child nameserver (e.g., ns1.example.com -> IP)
Steps for set:
- Call
scripts/nc_api.sh ns-set "<sld>" "<tld>" "ns1.example.com,ns2.example.com" - Warn: Custom nameservers disable URL forwarding, email forwarding, and dynamic DNS
Steps for create:
- Ask for nameserver hostname and IP
- Call
scripts/nc_api.sh ns-create "<sld>" "<tld>" "<nameserver>" "<ip>"
/namecheap renew <domain> [years]
Renew a domain registration.
Steps:
- Get domain info to check current expiry
- Check renewal pricing:
scripts/nc_api.sh pricing "<tld>" "RENEW" - Display: "Renew example.com for N year(s) at $X.XX? Current expiry: YYYY-MM-DD"
- Ask for explicit confirmation before charging.
- Call
scripts/nc_api.sh renew "<domain>" "<years>" - Display: new expiry, order ID, charged amount
/namecheap transfer <domain>
Transfer a domain to Namecheap.
Steps:
- Check transfer pricing:
scripts/nc_api.sh pricing "<tld>" "TRANSFER" - Ask for the EPP/authorization code from the current registrar
- Display cost and confirm
- Call
scripts/nc_api.sh transfer "<domain>" "<years>" "<epp_code>" - Display transfer ID and status
- Note: Transfer typically takes 5-7 days
/namecheap pricing <tld> [action]
Check pricing for a TLD.
Steps:
- Action defaults to
REGISTER. Options:REGISTER,RENEW,TRANSFER,REACTIVATE - Call
scripts/nc_api.sh pricing "<tld>" "<action>" - Display pricing table:
| Duration | Regular Price | Your Price | Currency |
| 1 year | $10.98 | $8.88 | USD |
| 2 years | $21.96 | $17.76 | USD |
/namecheap email <domain> [action]
Manage email forwarding.
Actions:
get— Show current email forwarding rulesset— Set email forwarding (mailbox -> forward-to pairs)
Steps for set:
- Ask for mailbox name (e.g.,
info) and forward-to address - Can set multiple rules at once
- Call
scripts/nc_api.sh email-set "<domain>" "<mailbox1>=<forward1>,<mailbox2>=<forward2>"
/namecheap balance
Check account balance.
Steps:
- Call
scripts/nc_api.sh balance - Display: Available Balance, Account Balance, Earned Amount, Withdrawable Amount
Critical DNS Gotchas
These are hard-won lessons. Read before touching DNS records.
1. setHosts is DESTRUCTIVE
The setHosts API replaces ALL records on the domain. If you send 2 records, every other record is deleted. Always read existing records first (dns-get), then include them in the dns-set call alongside new records.
2. MX records silently dropped in EmailType=FWD mode
By default, Namecheap domains use EmailType=FWD (email forwarding). In this mode, MX records are silently dropped — the API returns IsSuccess="true" but the MX record is simply not created. To fix: include EmailType=MX in the setHosts POST body when any MX record is present. This disables Namecheap's email forwarding feature.
3. Special characters in TXT values break curl -d
DKIM keys, SPF records, and other TXT values often contain +, /, =, spaces, and ~. These are special in URL-encoded form data (+ becomes space, = delimits params). The nc_api.sh script uses plain curl -d which does NOT encode values.
For DNS operations with TXT/DKIM/SPF values, use curl --data-urlencode directly instead of going through the script. See the dns-set section for the safe pattern.
4. Env vars must be exported to the script's process
Some users put credentials in a Claude settings file or a vault. Those files don't
automatically export to a shell. Either source them into the shell before invoking
nc_api.sh, or rely on the ~/.config/claude-skills/namecheap.env file the --setup
flow creates.
Anti-patterns
- Registering or renewing a domain without explicit user confirmation and a price display.
- Calling
dns-setwithout first reading existing records. It is destructive — all records not included in the call get deleted. - Storing API keys in skill files or scripts. They belong in environment variables.
- Hammering the API. Batch domain checks. Add delays for bulk operations.
- Testing against production. Always sandbox-first.
- Guessing contact information. Ask the user or use a saved address.
Error handling
- If API returns
Status="ERROR", extractError@NumberandErrortext - Common errors:
2011150— Missing required parameter2030280— Domain not available2011170— Invalid domain name2016166— Domain locked / cannot modify4022288— API access disabled5050900— Too many requests (rate limited)
- On rate limit: wait 60 seconds, then retry once
- On auth error: prompt user to verify credentials and IP whitelist
Known gotchas
setHostsis destructive — replaces ALL DNS records on the domain. Read existing records first, then send the complete desired set.- MX records silently dropped in
EmailType=FWDmode. API returns success but the record is never created. IncludeEmailType=MXin the call when any MX is present. - Special characters in TXT values break
curl -d. DKIM, SPF, and DMARC values contain+,/,=, spaces. Usecurl --data-urlencodefor DNS writes. - Production API requirements: 20+ domains, $50+ balance, or $50+ in 2-year purchases. Sandbox is unrestricted.
Validated patterns
- Always check availability and price before registering. Display the total cost and ask for explicit confirmation. The 30-second pause between check and register has saved registrations more than once.
- Use the sandbox endpoint for the first run of any new DNS script. The XML API errors in production are not always clear; the sandbox surfaces them faster.
Self-improvement
This skill ships with a lightweight feedback loop. Adopt or ignore — the skill works without it.
Trigger a review when:
- The user explicitly disagrees with a DNS change (strongest signal — log immediately; 2–3 corrections on the same theme → promote to body).
- A new Namecheap API behavior surfaces (silent dropped records, new auth error code).
learnings.mdcrosses ~100 bullets (consolidation time).- The skill mis-triggers or fails to trigger.
- Namecheap publishes a breaking API change.
Consolidation pass (5–10 min, weekly or threshold-driven):
- Each entry gets one fate: apply, capture, or dismiss.
- Apply = merge into Known gotchas / Anti-patterns / Validated patterns.
- Capture = leave in
learnings.mdfor now. - Dismiss = delete.
- Bump
last-consolidated:in frontmatter.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
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.

