From 1cc297c3537700734a8d2477ddc52177ebf429f5 Mon Sep 17 00:00:00 2001 From: David Koopman Date: Tue, 14 Jul 2026 14:10:41 -0700 Subject: [PATCH 01/11] Add Claude Code plugin marketplace and agent skills for godaddy/gddy CLIs Adds two independent skills (godaddy-cli, gddy) bundled into one plugin so AI coding agents can drive both the stable npm-installed godaddy CLI and the beta GitHub-Releases-installed gddy CLI without guessing at flags or output formats. Each skill cross-references the other, and both ship a README covering install via the Claude Code plugin marketplace or via `npx skills` for other agents. Root README now points AI-driven users at the skills as an installation option. Co-Authored-By: Claude Sonnet 5 --- .agents/skills/gddy/README.md | 30 +++++ .agents/skills/gddy/SKILL.md | 112 ++++++++++++++++++ .agents/skills/gddy/reference/api.md | 84 +++++++++++++ .../gddy/reference/errors-and-limits.md | 73 ++++++++++++ .agents/skills/godaddy-cli/README.md | 30 +++++ .agents/skills/godaddy-cli/SKILL.md | 6 +- .claude-plugin/marketplace.json | 18 +++ README.md | 6 + .../godaddy-cli/.claude-plugin/plugin.json | 8 ++ plugins/godaddy-cli/skills/gddy | 1 + plugins/godaddy-cli/skills/godaddy-cli | 1 + 11 files changed, 367 insertions(+), 2 deletions(-) create mode 100644 .agents/skills/gddy/README.md create mode 100644 .agents/skills/gddy/SKILL.md create mode 100644 .agents/skills/gddy/reference/api.md create mode 100644 .agents/skills/gddy/reference/errors-and-limits.md create mode 100644 .agents/skills/godaddy-cli/README.md create mode 100644 .claude-plugin/marketplace.json create mode 100644 plugins/godaddy-cli/.claude-plugin/plugin.json create mode 120000 plugins/godaddy-cli/skills/gddy create mode 120000 plugins/godaddy-cli/skills/godaddy-cli diff --git a/.agents/skills/gddy/README.md b/.agents/skills/gddy/README.md new file mode 100644 index 0000000..1371a06 --- /dev/null +++ b/.agents/skills/gddy/README.md @@ -0,0 +1,30 @@ +# `gddy` skill + +Teaches an AI coding agent how to drive `gddy`, GoDaddy's beta CLI for domain search, registration, and DNS management. It covers install/auth, the two-step quote-then-purchase flow for buying a domain, DNS record semantics (`add` vs `set` vs `delete`), and — since `gddy` moves faster than its own docs — how to fetch GoDaddy's developer docs correctly and when to trust `gddy --help` over a doc page. + +See [SKILL.md](./SKILL.md) for the full instructions given to the agent. + +## Installation + +### Claude Code + +```bash +claude plugin marketplace add godaddy/cli +claude plugin install godaddy-cli@godaddy +``` + +This installs the plugin that bundles both skills in this repo (`godaddy-cli` and `gddy`); Claude picks whichever one fits the task automatically. + +### Any other AI coding agent + +This repo is also compatible with [`skills`](https://github.com/vercel-labs/skills), a package-manager-style installer for agent skills that isn't tied to Claude Code — it supports Cursor, Codex, Windsurf, opencode, and 70+ other agents in addition to Claude Code: + +```bash +npx skills add godaddy/cli --skill gddy --agent claude-code +``` + +Swap `--agent claude-code` for whichever agent you use (`cursor`, `codex`, `windsurf`, `opencode`, ...). Run `npx skills add --help` for the full list of supported agents. + +## What it doesn't cover + +Applications, auth, environments, releases/deploys, extensions, and webhooks live in a separate, older tool, `godaddy`, with its own skill — see [`../godaddy-cli/README.md`](../godaddy-cli/README.md). diff --git a/.agents/skills/gddy/SKILL.md b/.agents/skills/gddy/SKILL.md new file mode 100644 index 0000000..74d05c2 --- /dev/null +++ b/.agents/skills/gddy/SKILL.md @@ -0,0 +1,112 @@ +--- +name: gddy +description: Use GoDaddy's beta CLI (`gddy`) to search, register, and manage domains and DNS records. Load this skill whenever a task involves running `gddy` commands, parsing their JSON output, finding or buying a domain, editing DNS records (A, CNAME, MX, TXT, etc.) for a domain hosted at GoDaddy, or reading a page under developer.godaddy.com/docs/api-users/**. Also trigger any time Claude is about to fetch a GoDaddy developer-docs page, even mid-task, since it changes how that fetch should be done. `gddy` is a separate tool from GoDaddy's older `godaddy` CLI (applications, deployments, webhooks) — do not use this skill for that tool, and don't trigger for other registrars or DNS providers (Cloudflare, Route 53, Namecheap, etc.) unless GoDaddy is explicitly involved. +--- + +# gddy — GoDaddy domains & DNS CLI + +`gddy` is GoDaddy's beta CLI for domain search, registration, and DNS management. It's a separate, independently-installed tool from GoDaddy's older `godaddy` CLI (applications, deployments, webhooks) — different binary, different install method, different auth and config. Installing or using one doesn't affect the other. For application, deployment, or webhook tasks, use the `godaddy-cli` skill instead of this one. + +Both tools exist side by side because `gddy` is the newer of the two and under active development, with more surface area on its roadmap than what's documented here — it already has early, not-yet-stable support for things like applications and webhooks alongside its domain/DNS focus. Stick to the domain/DNS commands documented in this skill unless you've confirmed a newer capability is ready via `gddy --help`. + +It's under active development, and moves faster than its own docs and README — see "When the CLI and the docs disagree" below. + +## Fetching GoDaddy developer docs: curl the llms.mdx mirror, don't WebFetch the HTML + +Read this before fetching anything under `developer.godaddy.com/docs/**`. + +WebFetch always pipes the page through a summarizing model, no matter what the prompt says. For documentation with exact command syntax, flag names, and code samples, that summarization silently drops or rewrites details — a flag gets dropped, a code sample gets paraphrased into something that no longer runs. GoDaddy publishes a full-text markdown mirror of every docs page specifically so agents can get the real content instead. Use it. + +To read any docs page, curl its markdown mirror instead of fetching the HTML: + +```bash +# HTML page: https://developer.godaddy.com/docs/api-users/cli-setup +# curl this: https://developer.godaddy.com/llms.mdx/api-users/cli-setup +curl -fsSL https://developer.godaddy.com/llms.mdx/api-users/cli-setup +``` + +The rule for deriving the URL: take the path after `/docs/` (or `/en/docs/`), and fetch `https://developer.godaddy.com/llms.mdx/`. This applies even if the user hands you the HTML URL directly — rewrite it yourself before fetching. If you only need the table of contents for a section, `https://developer.godaddy.com/llms.mdx/api-users` (no subpage) gives the full page tree for that section. + +Do this for every GoDaddy docs page you touch, not just ones the user explicitly names — if a task leads you to open another page on the same docs site partway through, curl its mirror too rather than falling back to WebFetch. + +## When the CLI and the docs disagree, trust the CLI + +`gddy`'s own `--help` output reflects the actual installed version; docs and the README can lag behind a release, since it's beta and moves fast. Before relying on a remembered or documented flag shape, especially for anything destructive or paid, run `gddy --help` and trust that over any doc page or README. This matters most for domain purchase, which is a two-step flow that some docs oversimplify (see below). + +## Setup + +Install: + +```bash +# macOS / Linux / Git Bash / MSYS2 / Cygwin +curl -fsSL https://github.com/godaddy/cli/releases/latest/download/install.sh | bash + +# PowerShell +irm https://github.com/godaddy/cli/releases/latest/download/install.ps1 | iex +``` + +Verify with `gddy --version`. This installs the `gddy` binary alongside any existing `godaddy` CLI — the two are separate tools. + +Authenticate with `gddy auth login` (opens a browser for OAuth). Check state with `gddy auth status`, sign out with `gddy auth logout`. For non-interactive use (CI, scripts), use a Personal Access Token instead — manage one with `gddy pat add/list/remove`, or set the `GDDY_PAT`/`GDDY_PAT_` env var directly (checked before OAuth). Note PATs can't do everything: domain purchase specifically requires a customer-scoped OAuth login (see below). + +Every command accepts `--env ` to pick environment (default `prod`) and `--debug` for verbose output. + +## Domain purchase: it's a two-step quote-then-purchase flow, not one command + +This is the highest-stakes command in the CLI — it charges money and can't be undone — so get the shape right. Some docs and even the README show it as a single `gddy domain purchase --agree --confirm` call; that's a simplification and doesn't match what the CLI actually does. The real flow locks in registration terms first, then executes against that locked quote: + +1. **Quote** — decide the registration period, privacy, and nameservers here; they get baked into the quote token: + ```bash + gddy domain quote example.com --period 1 --privacy + ``` + Returns a single-use `quoteToken` valid for roughly 10 minutes, cached locally alongside the contacts file. + +2. **Purchase** — spend the quote token: + ```bash + gddy domain purchase --quote-token --agree --confirm + ``` + `--agree` means "I consent to this quote's required legal agreements" — leave it off once first if you want to see what agreements apply before agreeing. `--confirm` is a separate, explicit acknowledgment that this charges the account. Both are required; there's no lower-friction path, by design. Purchase needs an OAuth login (`gddy auth login`) — a bare PAT is rejected here even though PATs work fine for read commands. + +3. Purchase is async. The command waits briefly and reports status; if it's still pending, check back with `gddy domain operation status `. A completed purchase shows up in `gddy domain list`. + +Before quoting, contact info needs to exist: `gddy domain contacts init` writes a starter `contacts.toml` template (registrant/admin/billing/tech, all commented out) to the OS config directory. Any role left commented out falls back to the account default; any role you fill in needs all of its required fields (name, email, phone, full address). + +Always confirm with the user before running `purchase` — it's real money, and the action is not reversible. + +## Domain search and lookup + +```bash +gddy domain suggest "coffee shop" --tlds com --tlds net --length-min 4 --length-max 15 +gddy domain available example.com --check-type fast # or: full (live registry check, slower) +gddy domain list --status ACTIVE +gddy domain get example.com +gddy domain agreements --tld com --privacy +``` + +Global `--limit ` caps result counts on list-like commands. + +## DNS management + +Valid record types: `A AAAA ALIAS CAA CNAME MX NS SOA SRV TXT`. `NS` and `SOA` are GoDaddy-managed and read-only — you can list them but not add/set/delete them. + +```bash +gddy dns list example.com --type A +gddy dns add example.com --type A --name www --data 192.0.2.1 --ttl 3600 +gddy dns set example.com --type TXT --name @ --data "v=spf1 -all" +gddy dns delete example.com --type A --name www +``` + +`add` appends a new record; `set` replaces every record matching that type+name; `delete` removes every record matching that type+name. Type-specific requirements: `MX`/`SRV` need `--priority`; `SRV` also needs `--port`, `--weight`, `--protocol`, `--service`; `CAA` requires `--tag` (`--flag` is optional). + +`set` and `delete` are destructive — support `--dry-run` to preview the change and `--reason ` for an audit trail. Run with `--dry-run` first and show the user what would change before applying it for real. + +## Payments + +`gddy payments add` opens the browser to the account's payment-methods page — no card data is ever handled by the CLI itself. Purchases fail (403/422) without a valid payment method or Good-as-Gold balance on the account; check the error's `code` field, not just the HTTP status, to tell that apart from other failures. + +## Reference material + +Read these only when the task needs the detail — they're not needed for common domain/DNS operations: + +- `reference/api.md` — raw GoDaddy Domains API endpoints (when `gddy` isn't installed/available, e.g. CI in a non-shell language): availability/suggestions, the registration-quote → registration flow with idempotency keys, pagination, and the MCP server. +- `reference/errors-and-limits.md` — error envelope shape, retry/idempotency rules per HTTP method, and rate-limit headers/handling. diff --git a/.agents/skills/gddy/reference/api.md b/.agents/skills/gddy/reference/api.md new file mode 100644 index 0000000..13f6d4a --- /dev/null +++ b/.agents/skills/gddy/reference/api.md @@ -0,0 +1,84 @@ +# GoDaddy Domains API (raw HTTP fallback) + +Use this when the `gddy` CLI isn't installed or isn't a good fit for the task (CI pipelines, non-shell languages, etc.). When `gddy` is available, prefer it — it handles auth, quote-token bookkeeping, and idempotency for you. + +Base URL: `https://api.godaddy.com` + +Auth header: `Authorization: Bearer $GODADDY_PAT` (PAT generated from the Personal Access Token page under `https://developer.godaddy.com/docs/api-users/auth`). Legacy `sso-key key:secret` credentials still work for v1/v2 endpoints but not v3, and are deprecated — prefer a PAT for anything new. + +## Search and availability + +```bash +curl -s "https://api.godaddy.com/v3/domains/check-availability?domain=example.com&optimizeFor=SPEED" \ + -H "Authorization: Bearer $GODADDY_PAT" +``` + +`optimizeFor` is `SPEED` (cached, fast) or `ACCURACY` (live registry check, slower). Prices are in cents — divide by 100. + +```bash +curl -s "https://api.godaddy.com/v3/domains/suggestions?query=coffee+shop&tlds=com,net&pageSize=25&lengthMin=4&lengthMax=15" \ + -H "Authorization: Bearer $GODADDY_PAT" +``` + +`sources` can further filter suggestion sources: `EXTENSION, KEYWORD_SPIN, CC_TLD, PREMIUM`. + +For checking many domains at once instead of one-by-one, `POST /v1/domains/available` accepts an array of names in one request — much cheaper against the rate limit than looping single checks. + +## Registration: quote, then execute + +Mirrors the CLI's `gddy domain quote` / `gddy domain purchase` split — registration is always two calls, never one. + +1. Lock a quote: + ```bash + curl -s -X POST "https://api.godaddy.com/v3/domains/registration-quotes" \ + -H "Authorization: Bearer $GODADDY_PAT" -H "Content-Type: application/json" \ + -d '{"domain": "example.com", "period": 1}' + ``` + Returns `{quoteToken, expiresAt, requiredAgreements}`. The token is single-use and short-lived. + +2. Execute the registration against that token: + ```bash + curl -s -X POST "https://api.godaddy.com/v3/domains/registrations" \ + -H "Authorization: Bearer $GODADDY_PAT" -H "Content-Type: application/json" \ + -H "Idempotency-Key: $(uuidgen)" \ + -d '{"quoteToken": "", "domain": "example.com", "period": 1, "consent": {"agreementTypes": [...], "agreedAt": ""}}' + ``` + The `Idempotency-Key` header is required, not optional — registration is not safely retryable without one. Retrying the same request with a *new* key can register (and charge for) the domain twice; always reuse the same key when retrying the same logical attempt. + +3. Poll for completion: + ```bash + curl -s "https://api.godaddy.com/v3/domains/registrations/" -H "Authorization: Bearer $GODADDY_PAT" + # or + curl -s "https://api.godaddy.com/v3/domains/operations/" -H "Authorization: Bearer $GODADDY_PAT" + ``` + +## Listing domains (pagination) + +`GET /v1/domains` uses cursor pagination via `limit` and `marker` — repeat with `marker` set to the last domain name from the previous page until a page comes back shorter than `limit`: + +```bash +curl -s "https://api.godaddy.com/v1/domains?limit=100" -H "Authorization: Bearer $GODADDY_PAT" +curl -s "https://api.godaddy.com/v1/domains?limit=100&marker=last-domain-from-previous-page.com" \ + -H "Authorization: Bearer $GODADDY_PAT" +``` + +v2 list endpoints (domain forwarding, actions, etc.) return the entire collection in one response and don't take `limit`/`marker` at all. A page walk is safe to interrupt and resume — retry the same `(limit, marker)` pair on failure. + +## MCP server (read-only, public data only) + +`https://api.godaddy.com/v1/domains/mcp` (streamable-http transport) exposes public domain search and availability tools with no authentication required: + +```json +{ + "mcpServers": { + "godaddy": { + "url": "https://api.godaddy.com/v1/domains/mcp", + "transport": "streamable-http" + } + } +} +``` + +It cannot register domains, touch DNS, or do anything account-specific — it's a convenience for pure discovery ("is this domain available?", "suggest names for X"). For anything authenticated (purchase, DNS, account domains), use the CLI or the endpoints above instead. + +Full docs: `https://developer.godaddy.com/docs/api-users/mcp` — curl the `llms.mdx` mirror per the guidance in SKILL.md rather than fetching that page directly. diff --git a/.agents/skills/gddy/reference/errors-and-limits.md b/.agents/skills/gddy/reference/errors-and-limits.md new file mode 100644 index 0000000..e623b5f --- /dev/null +++ b/.agents/skills/gddy/reference/errors-and-limits.md @@ -0,0 +1,73 @@ +# Errors, retries, and rate limits + +## Error shape + +Every error response is a stable JSON envelope: + +```json +{ + "code": "INVALID_DOMAIN", + "message": "example is not a valid domain name", + "fields": [ + { "path": "domain", "code": "INVALID_FORMAT", "message": "..." } + ] +} +``` + +Always branch on `code`, never on `message` — message text can change between releases and isn't a stable contract. `fields` is present on validation errors (422) and points at which field(s) failed and why. + +429 (rate limited) responses add a `retryAfterSec` field and otherwise carry little useful body — read the headers instead (below). + +## Retry semantics — depends on the HTTP method, not just "is it safe to retry" + +| Operation | Idempotent? | Notes | +|---|---|---| +| Any `GET` | Yes | Always safe to retry. | +| `POST /v1/domains/purchase` (and registration create) | **No** | Retrying without reusing an `Idempotency-Key` (v3) or otherwise confirming state first can double-purchase/double-charge. Check current state (e.g. does the domain already show up under the account) before retrying a failed purchase. | +| `PUT` (e.g. DNS record replace / `gddy dns set`) | Yes | Safe to retry — it fully replaces state each time. | +| `PATCH` (e.g. DNS record add / `gddy dns add`) | **No** | Appends; retrying a failed "add" can create duplicate records. Check current state before retrying. | +| `DELETE` (e.g. `gddy dns delete`) | Yes | Safe to retry — deleting something already gone is a no-op. | + +## Rate limits + +60 requests/minute per credential, applied regardless of endpoint. Every response — not just 429s — carries these headers, so you can self-throttle before hitting the limit rather than reacting after: + +| Header | Meaning | +|---|---| +| `RateLimit-Limit` | Limit that applies to this request | +| `RateLimit-Remaining` | Requests left in the current window | +| `RateLimit-Reset` | Seconds until the window resets | + +On a 429, back off for at least `RateLimit-Reset` seconds (or the `retryAfterSec` field), plus some jitter if retrying programmatically in a loop. + +To stay under the limit in the first place: +- Prefer bulk endpoints where they exist (e.g. `POST /v1/domains/available` for many domains at once, instead of looping single `check-availability` calls). +- Use cursor pagination (`limit`/`marker`) sequentially rather than fanning out parallel page requests. +- Don't share one credential across many independent callers and assume the limit is per-account — it's per-credential today, but that's an implementation detail, not a guarantee. + +If a legitimate use case needs a sustained rate above 60/min, that's a conversation with GoDaddy developer support, not something to work around client-side. + +## Common error codes (registration) + +These are the `code` values you'll actually see while quoting/registering a domain, with what each means: + +| `code` | Meaning | What to do | +|---|---|---| +| `DOMAIN_NOT_AVAILABLE` | Someone else registered the name first (race between check and purchase). | Re-check availability, suggest alternatives. | +| `BILLING_DECLINED` | Payment method on file was charged and declined. | Surface to the user — they need to fix their payment method. | +| `NO_PAYMENT_PROFILE` | No payment method on the account at all. | Direct the user to `gddy payments add` or the account's payment-methods page. | +| `QUOTE_MISMATCH` | The `period` (or other term) at execute time doesn't match what was quoted. | Reuse the exact period from the quote, or fetch a fresh quote. | +| `INVALID_AGREEMENT_KEYS` | `agreementTypes` sent don't match the TLD's `requiredAgreements` from the quote. | Use the exact keys the quote response returned, not guessed/remembered ones. | +| `MISSING_CONTACT` | No registrant contact configured on the account. | Set up contacts (`gddy domain contacts init`, then fill in the file) before quoting. | +| `MISSING_BILLING_PHONE` | Contact phone is missing or malformed. | Verify the contact has a complete, valid phone number. | + +## Common status codes and what to do + +- **400** — malformed request (bad JSON, missing required field shape). Fix the request; don't retry as-is. +- **401** — missing/invalid/expired credential. Re-authenticate (`gddy auth login` or refresh the PAT) rather than retry. +- **403** — authenticated but not authorized for this action (e.g. a PAT trying to purchase, which requires OAuth; or no payment method on file). Check `code` to distinguish "wrong credential type" from "account not payment-ready." +- **404** — resource doesn't exist (domain not in the account, unknown operation ID). Don't retry. +- **409** — conflict with current state (e.g. domain already has a pending operation). Check current state before retrying. +- **422** — validation failure; see `fields` for which field(s) and why. +- **429** — rate limited; see above. +- **5xx** — server-side; safe to retry idempotent operations with backoff, not safe to retry non-idempotent ones (see table above) without first checking state. diff --git a/.agents/skills/godaddy-cli/README.md b/.agents/skills/godaddy-cli/README.md new file mode 100644 index 0000000..5dea454 --- /dev/null +++ b/.agents/skills/godaddy-cli/README.md @@ -0,0 +1,30 @@ +# `godaddy-cli` skill + +Teaches an AI coding agent how to drive the `godaddy` CLI — applications, auth, environments, releases/deploys, extensions, and webhooks on the GoDaddy Developer Platform. It covers the JSON output contract, `next_actions` discovery, error codes, and the typical create/deploy/diagnose workflows, so the agent doesn't have to reverse-engineer any of that from `--help` output alone. + +See [SKILL.md](./SKILL.md) for the full instructions given to the agent. + +## Installation + +### Claude Code + +```bash +claude plugin marketplace add godaddy/cli +claude plugin install godaddy-cli@godaddy +``` + +This installs the plugin that bundles both skills in this repo (`godaddy-cli` and `gddy`); Claude picks whichever one fits the task automatically. + +### Any other AI coding agent + +This repo is also compatible with [`skills`](https://github.com/vercel-labs/skills), a package-manager-style installer for agent skills that isn't tied to Claude Code — it supports Cursor, Codex, Windsurf, opencode, and 70+ other agents in addition to Claude Code: + +```bash +npx skills add godaddy/cli --skill godaddy-cli --agent claude-code +``` + +Swap `--agent claude-code` for whichever agent you use (`cursor`, `codex`, `windsurf`, `opencode`, ...). Run `npx skills add --help` for the full list of supported agents. + +## What it doesn't cover + +Domain search, registration, and DNS management live in a separate tool, `gddy`, with its own skill — see [`../gddy/README.md`](../gddy/README.md). diff --git a/.agents/skills/godaddy-cli/SKILL.md b/.agents/skills/godaddy-cli/SKILL.md index 49baf6d..35c10fc 100644 --- a/.agents/skills/godaddy-cli/SKILL.md +++ b/.agents/skills/godaddy-cli/SKILL.md @@ -10,6 +10,8 @@ tags: [godaddy, cli, commerce, applications, deploy] The `godaddy` CLI is an agent-first tool. Every command returns a single JSON envelope to stdout. There is no plain text mode, no `--json` flag, and no table output. Parse stdout as JSON. +GoDaddy also publishes `gddy`, a separate and newer CLI — a beta tool, distributed via GitHub Releases rather than npm, for domain search, registration, and DNS management. It's a different binary with its own install method, auth, and config; installing or using one doesn't affect the other. If the task is about domains or DNS records rather than applications, auth, environments, deployments, extensions, or webhooks, use the `gddy` skill instead of this one. + ## Quick Start ```bash @@ -64,7 +66,7 @@ Every command writes exactly one JSON object to stdout followed by a newline. Pa Check `ok` first. On failure, read `error.code` for programmatic handling and `fix` for the suggested recovery step. -Error codes: `NOT_FOUND`, `AUTH_REQUIRED`, `VALIDATION_ERROR`, `NETWORK_ERROR`, `CONFIG_ERROR`, `SECURITY_BLOCKED`, `COMMAND_NOT_FOUND`, `UNSUPPORTED_OPTION`, `UNEXPECTED_ERROR`. +Error codes: `NOT_FOUND`, `AUTH_REQUIRED`, `VALIDATION_ERROR`, `NETWORK_ERROR`, `CONFIG_ERROR`, `SECURITY_BLOCKED`, `COMMAND_NOT_FOUND`, `UNSUPPORTED_OPTION`, `UNEXPECTED_ERROR`, `FORBIDDEN`, `CONFLICT`, `RATE_LIMIT_EXCEEDED`. ### next_actions (HATEOAS) @@ -370,7 +372,7 @@ godaddy application enable my-app --store-id # 8. Enable ```bash godaddy application info my-app # 1. Check current state godaddy application update my-app --description "New" # 2. Update -godaddy application validate my-app # 3. Validate +godaddy application validate my-app # 3. Validate godaddy application release my-app \ # 4. Bump version --release-version 1.1.0 godaddy application deploy my-app --follow # 5. Deploy diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json new file mode 100644 index 0000000..32bf6d1 --- /dev/null +++ b/.claude-plugin/marketplace.json @@ -0,0 +1,18 @@ +{ + "name": "godaddy", + "owner": { + "name": "GoDaddy", + "email": "opensource@godaddy.com" + }, + "description": "Skills for using GoDaddy's command-line tools with an AI coding agent.", + "plugins": [ + { + "name": "godaddy-cli", + "source": "./plugins/godaddy-cli", + "description": "Skill for using the GoDaddy CLI tools — the godaddy CLI (applications, auth, environments, deployments, extensions, webhooks) and the gddy CLI (domain search, registration, and DNS management).", + "author": { + "name": "GoDaddy" + } + } + ] +} diff --git a/README.md b/README.md index 3016404..eb7358e 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,12 @@ Agent-first CLI for interacting with GoDaddy Developer Platform. ## Installation +### Using an AI coding agent? + +Point your agent at this README and ask it to check for and install the relevant skill(s) — `godaddy-cli` for applications/auth/deploy/webhooks, `gddy` for domain search/registration/DNS. Once installed, the skill teaches the agent the CLI's JSON output contract and typical workflows, so it can drive the CLI correctly without guessing at flags. See [`.agents/skills/godaddy-cli/README.md`](./.agents/skills/godaddy-cli/README.md) and [`.agents/skills/gddy/README.md`](./.agents/skills/gddy/README.md) for one-line install commands (Claude Code and 70+ other agents). + +### Installing the CLI directly + ```bash npm install -g @godaddy/cli godaddy --help diff --git a/plugins/godaddy-cli/.claude-plugin/plugin.json b/plugins/godaddy-cli/.claude-plugin/plugin.json new file mode 100644 index 0000000..88ce0f7 --- /dev/null +++ b/plugins/godaddy-cli/.claude-plugin/plugin.json @@ -0,0 +1,8 @@ +{ + "name": "godaddy-cli", + "description": "Skill for using the GoDaddy CLI tools — the godaddy CLI (applications, auth, environments, deployments, extensions, webhooks) and the gddy CLI (domain search, registration, and DNS management).", + "version": "0.1.0", + "author": { + "name": "GoDaddy" + } +} diff --git a/plugins/godaddy-cli/skills/gddy b/plugins/godaddy-cli/skills/gddy new file mode 120000 index 0000000..c88e181 --- /dev/null +++ b/plugins/godaddy-cli/skills/gddy @@ -0,0 +1 @@ +../../../.agents/skills/gddy \ No newline at end of file diff --git a/plugins/godaddy-cli/skills/godaddy-cli b/plugins/godaddy-cli/skills/godaddy-cli new file mode 120000 index 0000000..43f17e2 --- /dev/null +++ b/plugins/godaddy-cli/skills/godaddy-cli @@ -0,0 +1 @@ +../../../.agents/skills/godaddy-cli \ No newline at end of file From 2df13b718803c547ea0c2d4f295fdcec30b5ef1a Mon Sep 17 00:00:00 2001 From: David Koopman Date: Tue, 14 Jul 2026 14:38:16 -0700 Subject: [PATCH 02/11] Fix markdown style: no inline code in headings or link text CONTRIBUTING.md's Markdown Documentation section prohibits inline code in headings and in link text; the new skill READMEs and the root README edit had both. Co-Authored-By: Claude Sonnet 5 --- .agents/skills/gddy/README.md | 6 +++--- .agents/skills/godaddy-cli/README.md | 6 +++--- README.md | 2 +- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.agents/skills/gddy/README.md b/.agents/skills/gddy/README.md index 1371a06..9245cb0 100644 --- a/.agents/skills/gddy/README.md +++ b/.agents/skills/gddy/README.md @@ -1,4 +1,4 @@ -# `gddy` skill +# gddy skill Teaches an AI coding agent how to drive `gddy`, GoDaddy's beta CLI for domain search, registration, and DNS management. It covers install/auth, the two-step quote-then-purchase flow for buying a domain, DNS record semantics (`add` vs `set` vs `delete`), and — since `gddy` moves faster than its own docs — how to fetch GoDaddy's developer docs correctly and when to trust `gddy --help` over a doc page. @@ -17,7 +17,7 @@ This installs the plugin that bundles both skills in this repo (`godaddy-cli` an ### Any other AI coding agent -This repo is also compatible with [`skills`](https://github.com/vercel-labs/skills), a package-manager-style installer for agent skills that isn't tied to Claude Code — it supports Cursor, Codex, Windsurf, opencode, and 70+ other agents in addition to Claude Code: +This repo is also compatible with [skills](https://github.com/vercel-labs/skills), a package-manager-style installer for agent skills that isn't tied to Claude Code — it supports Cursor, Codex, Windsurf, opencode, and 70+ other agents in addition to Claude Code: ```bash npx skills add godaddy/cli --skill gddy --agent claude-code @@ -27,4 +27,4 @@ Swap `--agent claude-code` for whichever agent you use (`cursor`, `codex`, `wind ## What it doesn't cover -Applications, auth, environments, releases/deploys, extensions, and webhooks live in a separate, older tool, `godaddy`, with its own skill — see [`../godaddy-cli/README.md`](../godaddy-cli/README.md). +Applications, auth, environments, releases/deploys, extensions, and webhooks live in a separate, older tool, `godaddy`, with its own skill — see [../godaddy-cli/README.md](../godaddy-cli/README.md). diff --git a/.agents/skills/godaddy-cli/README.md b/.agents/skills/godaddy-cli/README.md index 5dea454..0effe97 100644 --- a/.agents/skills/godaddy-cli/README.md +++ b/.agents/skills/godaddy-cli/README.md @@ -1,4 +1,4 @@ -# `godaddy-cli` skill +# godaddy-cli skill Teaches an AI coding agent how to drive the `godaddy` CLI — applications, auth, environments, releases/deploys, extensions, and webhooks on the GoDaddy Developer Platform. It covers the JSON output contract, `next_actions` discovery, error codes, and the typical create/deploy/diagnose workflows, so the agent doesn't have to reverse-engineer any of that from `--help` output alone. @@ -17,7 +17,7 @@ This installs the plugin that bundles both skills in this repo (`godaddy-cli` an ### Any other AI coding agent -This repo is also compatible with [`skills`](https://github.com/vercel-labs/skills), a package-manager-style installer for agent skills that isn't tied to Claude Code — it supports Cursor, Codex, Windsurf, opencode, and 70+ other agents in addition to Claude Code: +This repo is also compatible with [skills](https://github.com/vercel-labs/skills), a package-manager-style installer for agent skills that isn't tied to Claude Code — it supports Cursor, Codex, Windsurf, opencode, and 70+ other agents in addition to Claude Code: ```bash npx skills add godaddy/cli --skill godaddy-cli --agent claude-code @@ -27,4 +27,4 @@ Swap `--agent claude-code` for whichever agent you use (`cursor`, `codex`, `wind ## What it doesn't cover -Domain search, registration, and DNS management live in a separate tool, `gddy`, with its own skill — see [`../gddy/README.md`](../gddy/README.md). +Domain search, registration, and DNS management live in a separate tool, `gddy`, with its own skill — see [../gddy/README.md](../gddy/README.md). diff --git a/README.md b/README.md index eb7358e..022d1a6 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Agent-first CLI for interacting with GoDaddy Developer Platform. ### Using an AI coding agent? -Point your agent at this README and ask it to check for and install the relevant skill(s) — `godaddy-cli` for applications/auth/deploy/webhooks, `gddy` for domain search/registration/DNS. Once installed, the skill teaches the agent the CLI's JSON output contract and typical workflows, so it can drive the CLI correctly without guessing at flags. See [`.agents/skills/godaddy-cli/README.md`](./.agents/skills/godaddy-cli/README.md) and [`.agents/skills/gddy/README.md`](./.agents/skills/gddy/README.md) for one-line install commands (Claude Code and 70+ other agents). +Point your agent at this README and ask it to check for and install the relevant skill(s) — `godaddy-cli` for applications/auth/deploy/webhooks, `gddy` for domain search/registration/DNS. Once installed, the skill teaches the agent the CLI's JSON output contract and typical workflows, so it can drive the CLI correctly without guessing at flags. See [.agents/skills/godaddy-cli/README.md](./.agents/skills/godaddy-cli/README.md) and [.agents/skills/gddy/README.md](./.agents/skills/gddy/README.md) for one-line install commands (Claude Code and 70+ other agents). ### Installing the CLI directly From 009bc760be48dc6c0b16f06800c293991971224e Mon Sep 17 00:00:00 2001 From: Dave Koopman <82244348+dkoopman-godaddy@users.noreply.github.com> Date: Tue, 14 Jul 2026 14:57:39 -0700 Subject: [PATCH 03/11] Apply suggestion from @dkoopman-godaddy to remove extra space --- .agents/skills/godaddy-cli/SKILL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.agents/skills/godaddy-cli/SKILL.md b/.agents/skills/godaddy-cli/SKILL.md index 35c10fc..f5ef824 100644 --- a/.agents/skills/godaddy-cli/SKILL.md +++ b/.agents/skills/godaddy-cli/SKILL.md @@ -372,7 +372,7 @@ godaddy application enable my-app --store-id # 8. Enable ```bash godaddy application info my-app # 1. Check current state godaddy application update my-app --description "New" # 2. Update -godaddy application validate my-app # 3. Validate +godaddy application validate my-app # 3. Validate godaddy application release my-app \ # 4. Bump version --release-version 1.1.0 godaddy application deploy my-app --follow # 5. Deploy From ba57596c966e2c778f2c73416cfcec71ce6593fa Mon Sep 17 00:00:00 2001 From: David Koopman Date: Tue, 14 Jul 2026 15:46:38 -0700 Subject: [PATCH 04/11] Address PR review feedback: drop llms.mdx guidance, slim purchase flow, point to public OpenAPI specs - Fix SKILL.md alignment nit (dkoopman-godaddy suggestion) - Remove the llms.mdx-mirror section from gddy/SKILL.md: gddy --help is self-documenting, and the existing Setup section already covers install, so there's no docs-fetch needed for CLI usage (jpage-godaddy feedback). Move Setup earlier in the file per the same discussion. - Trim the domain purchase section to point at `gddy domain quote/purchase --help` instead of hardcoding flag examples, keeping only the "why two calls, not one" framing that --help won't state on its own. - Replace api.md's per-endpoint curl examples with pointers to GoDaddy's public OpenAPI specs (domains-v1.json, domains-v3.json), which cover every endpoint this file previously hardcoded and won't need updating as the API grows. Also add a pointer back to SKILL.md's Setup section for installing gddy itself. Co-Authored-By: Claude Sonnet 5 --- .agents/skills/gddy/SKILL.md | 42 +++------------ .agents/skills/gddy/reference/api.md | 81 +++------------------------- .agents/skills/godaddy-cli/SKILL.md | 2 +- 3 files changed, 17 insertions(+), 108 deletions(-) diff --git a/.agents/skills/gddy/SKILL.md b/.agents/skills/gddy/SKILL.md index 74d05c2..631855b 100644 --- a/.agents/skills/gddy/SKILL.md +++ b/.agents/skills/gddy/SKILL.md @@ -1,6 +1,6 @@ --- name: gddy -description: Use GoDaddy's beta CLI (`gddy`) to search, register, and manage domains and DNS records. Load this skill whenever a task involves running `gddy` commands, parsing their JSON output, finding or buying a domain, editing DNS records (A, CNAME, MX, TXT, etc.) for a domain hosted at GoDaddy, or reading a page under developer.godaddy.com/docs/api-users/**. Also trigger any time Claude is about to fetch a GoDaddy developer-docs page, even mid-task, since it changes how that fetch should be done. `gddy` is a separate tool from GoDaddy's older `godaddy` CLI (applications, deployments, webhooks) — do not use this skill for that tool, and don't trigger for other registrars or DNS providers (Cloudflare, Route 53, Namecheap, etc.) unless GoDaddy is explicitly involved. +description: Use GoDaddy's beta CLI (`gddy`) to search, register, and manage domains and DNS records. Load this skill whenever a task involves running `gddy` commands, parsing their JSON output, finding or buying a domain, or editing DNS records (A, CNAME, MX, TXT, etc.) for a domain hosted at GoDaddy. `gddy` is a separate tool from GoDaddy's older `godaddy` CLI (applications, deployments, webhooks) — do not use this skill for that tool, and don't trigger for other registrars or DNS providers (Cloudflare, Route 53, Namecheap, etc.) unless GoDaddy is explicitly involved. --- # gddy — GoDaddy domains & DNS CLI @@ -11,28 +11,6 @@ Both tools exist side by side because `gddy` is the newer of the two and under a It's under active development, and moves faster than its own docs and README — see "When the CLI and the docs disagree" below. -## Fetching GoDaddy developer docs: curl the llms.mdx mirror, don't WebFetch the HTML - -Read this before fetching anything under `developer.godaddy.com/docs/**`. - -WebFetch always pipes the page through a summarizing model, no matter what the prompt says. For documentation with exact command syntax, flag names, and code samples, that summarization silently drops or rewrites details — a flag gets dropped, a code sample gets paraphrased into something that no longer runs. GoDaddy publishes a full-text markdown mirror of every docs page specifically so agents can get the real content instead. Use it. - -To read any docs page, curl its markdown mirror instead of fetching the HTML: - -```bash -# HTML page: https://developer.godaddy.com/docs/api-users/cli-setup -# curl this: https://developer.godaddy.com/llms.mdx/api-users/cli-setup -curl -fsSL https://developer.godaddy.com/llms.mdx/api-users/cli-setup -``` - -The rule for deriving the URL: take the path after `/docs/` (or `/en/docs/`), and fetch `https://developer.godaddy.com/llms.mdx/`. This applies even if the user hands you the HTML URL directly — rewrite it yourself before fetching. If you only need the table of contents for a section, `https://developer.godaddy.com/llms.mdx/api-users` (no subpage) gives the full page tree for that section. - -Do this for every GoDaddy docs page you touch, not just ones the user explicitly names — if a task leads you to open another page on the same docs site partway through, curl its mirror too rather than falling back to WebFetch. - -## When the CLI and the docs disagree, trust the CLI - -`gddy`'s own `--help` output reflects the actual installed version; docs and the README can lag behind a release, since it's beta and moves fast. Before relying on a remembered or documented flag shape, especially for anything destructive or paid, run `gddy --help` and trust that over any doc page or README. This matters most for domain purchase, which is a two-step flow that some docs oversimplify (see below). - ## Setup Install: @@ -51,21 +29,17 @@ Authenticate with `gddy auth login` (opens a browser for OAuth). Check state wit Every command accepts `--env ` to pick environment (default `prod`) and `--debug` for verbose output. +## When the CLI and the docs disagree, trust the CLI + +`gddy`'s own `--help` output reflects the actual installed version; docs and the README can lag behind a release, since it's beta and moves fast. Before relying on a remembered or documented flag shape, especially for anything destructive or paid, run `gddy --help` and trust that over any doc page or README. This matters most for domain purchase, which is a two-step flow that some docs oversimplify (see below). + ## Domain purchase: it's a two-step quote-then-purchase flow, not one command This is the highest-stakes command in the CLI — it charges money and can't be undone — so get the shape right. Some docs and even the README show it as a single `gddy domain purchase --agree --confirm` call; that's a simplification and doesn't match what the CLI actually does. The real flow locks in registration terms first, then executes against that locked quote: -1. **Quote** — decide the registration period, privacy, and nameservers here; they get baked into the quote token: - ```bash - gddy domain quote example.com --period 1 --privacy - ``` - Returns a single-use `quoteToken` valid for roughly 10 minutes, cached locally alongside the contacts file. +1. **Quote** — run `gddy domain quote --help` for the full flag list (period, privacy, nameservers, etc. all get baked into the quote token). Returns a single-use `quoteToken` valid for roughly 10 minutes, cached locally alongside the contacts file. -2. **Purchase** — spend the quote token: - ```bash - gddy domain purchase --quote-token --agree --confirm - ``` - `--agree` means "I consent to this quote's required legal agreements" — leave it off once first if you want to see what agreements apply before agreeing. `--confirm` is a separate, explicit acknowledgment that this charges the account. Both are required; there's no lower-friction path, by design. Purchase needs an OAuth login (`gddy auth login`) — a bare PAT is rejected here even though PATs work fine for read commands. +2. **Purchase** — run `gddy domain purchase --help` for the full flag list. `--agree` means "I consent to this quote's required legal agreements" — leave it off once first if you want to see what agreements apply before agreeing. `--confirm` is a separate, explicit acknowledgment that this charges the account. Both are required; there's no lower-friction path, by design. Purchase needs an OAuth login (`gddy auth login`) — a bare PAT is rejected here even though PATs work fine for read commands. 3. Purchase is async. The command waits briefly and reports status; if it's still pending, check back with `gddy domain operation status `. A completed purchase shows up in `gddy domain list`. @@ -108,5 +82,5 @@ gddy dns delete example.com --type A --name www Read these only when the task needs the detail — they're not needed for common domain/DNS operations: -- `reference/api.md` — raw GoDaddy Domains API endpoints (when `gddy` isn't installed/available, e.g. CI in a non-shell language): availability/suggestions, the registration-quote → registration flow with idempotency keys, pagination, and the MCP server. +- `reference/api.md` — raw GoDaddy Domains API fallback (when `gddy` isn't installed/available, e.g. CI in a non-shell language): base URL/auth, the public OpenAPI specs to fetch and search directly, and the durable gotchas (idempotency keys on registration, the MCP server's read-only/no-auth scope). - `reference/errors-and-limits.md` — error envelope shape, retry/idempotency rules per HTTP method, and rate-limit headers/handling. diff --git a/.agents/skills/gddy/reference/api.md b/.agents/skills/gddy/reference/api.md index 13f6d4a..0508a3b 100644 --- a/.agents/skills/gddy/reference/api.md +++ b/.agents/skills/gddy/reference/api.md @@ -1,84 +1,19 @@ # GoDaddy Domains API (raw HTTP fallback) -Use this when the `gddy` CLI isn't installed or isn't a good fit for the task (CI pipelines, non-shell languages, etc.). When `gddy` is available, prefer it — it handles auth, quote-token bookkeeping, and idempotency for you. +Use this when the `gddy` CLI isn't installed or isn't a good fit for the task (CI pipelines, non-shell languages, etc.). When `gddy` is available, prefer it — it handles auth, quote-token bookkeeping, and idempotency for you. To install `gddy` itself, see the Setup section in SKILL.md. Base URL: `https://api.godaddy.com` Auth header: `Authorization: Bearer $GODADDY_PAT` (PAT generated from the Personal Access Token page under `https://developer.godaddy.com/docs/api-users/auth`). Legacy `sso-key key:secret` credentials still work for v1/v2 endpoints but not v3, and are deprecated — prefer a PAT for anything new. -## Search and availability +## Endpoint reference -```bash -curl -s "https://api.godaddy.com/v3/domains/check-availability?domain=example.com&optimizeFor=SPEED" \ - -H "Authorization: Bearer $GODADDY_PAT" -``` +GoDaddy publishes machine-readable OpenAPI specs — fetch and search these directly instead of relying on hardcoded examples here, so this file doesn't need updating as the API grows: -`optimizeFor` is `SPEED` (cached, fast) or `ACCURACY` (live registry check, slower). Prices are in cents — divide by 100. +- Search, availability, registration (quote → register), DNS records: `https://developer.godaddy.com/openapi/domains-v3.json` +- Domain listing, bulk availability, contacts, transfers, legacy purchase: `https://developer.godaddy.com/openapi/domains-v1.json` -```bash -curl -s "https://api.godaddy.com/v3/domains/suggestions?query=coffee+shop&tlds=com,net&pageSize=25&lengthMin=4&lengthMax=15" \ - -H "Authorization: Bearer $GODADDY_PAT" -``` +## Gotchas that won't change even as the API grows -`sources` can further filter suggestion sources: `EXTENSION, KEYWORD_SPIN, CC_TLD, PREMIUM`. - -For checking many domains at once instead of one-by-one, `POST /v1/domains/available` accepts an array of names in one request — much cheaper against the rate limit than looping single checks. - -## Registration: quote, then execute - -Mirrors the CLI's `gddy domain quote` / `gddy domain purchase` split — registration is always two calls, never one. - -1. Lock a quote: - ```bash - curl -s -X POST "https://api.godaddy.com/v3/domains/registration-quotes" \ - -H "Authorization: Bearer $GODADDY_PAT" -H "Content-Type: application/json" \ - -d '{"domain": "example.com", "period": 1}' - ``` - Returns `{quoteToken, expiresAt, requiredAgreements}`. The token is single-use and short-lived. - -2. Execute the registration against that token: - ```bash - curl -s -X POST "https://api.godaddy.com/v3/domains/registrations" \ - -H "Authorization: Bearer $GODADDY_PAT" -H "Content-Type: application/json" \ - -H "Idempotency-Key: $(uuidgen)" \ - -d '{"quoteToken": "", "domain": "example.com", "period": 1, "consent": {"agreementTypes": [...], "agreedAt": ""}}' - ``` - The `Idempotency-Key` header is required, not optional — registration is not safely retryable without one. Retrying the same request with a *new* key can register (and charge for) the domain twice; always reuse the same key when retrying the same logical attempt. - -3. Poll for completion: - ```bash - curl -s "https://api.godaddy.com/v3/domains/registrations/" -H "Authorization: Bearer $GODADDY_PAT" - # or - curl -s "https://api.godaddy.com/v3/domains/operations/" -H "Authorization: Bearer $GODADDY_PAT" - ``` - -## Listing domains (pagination) - -`GET /v1/domains` uses cursor pagination via `limit` and `marker` — repeat with `marker` set to the last domain name from the previous page until a page comes back shorter than `limit`: - -```bash -curl -s "https://api.godaddy.com/v1/domains?limit=100" -H "Authorization: Bearer $GODADDY_PAT" -curl -s "https://api.godaddy.com/v1/domains?limit=100&marker=last-domain-from-previous-page.com" \ - -H "Authorization: Bearer $GODADDY_PAT" -``` - -v2 list endpoints (domain forwarding, actions, etc.) return the entire collection in one response and don't take `limit`/`marker` at all. A page walk is safe to interrupt and resume — retry the same `(limit, marker)` pair on failure. - -## MCP server (read-only, public data only) - -`https://api.godaddy.com/v1/domains/mcp` (streamable-http transport) exposes public domain search and availability tools with no authentication required: - -```json -{ - "mcpServers": { - "godaddy": { - "url": "https://api.godaddy.com/v1/domains/mcp", - "transport": "streamable-http" - } - } -} -``` - -It cannot register domains, touch DNS, or do anything account-specific — it's a convenience for pure discovery ("is this domain available?", "suggest names for X"). For anything authenticated (purchase, DNS, account domains), use the CLI or the endpoints above instead. - -Full docs: `https://developer.godaddy.com/docs/api-users/mcp` — curl the `llms.mdx` mirror per the guidance in SKILL.md rather than fetching that page directly. +- **Registration is two calls, never one** — mirrors the CLI's `gddy domain quote` / `gddy domain purchase` split. Lock a quote first; it returns a single-use `quoteToken` valid for roughly 10 minutes. Execute the registration against that token with an `Idempotency-Key` header — required, not optional. Retrying with a *new* key can register (and charge for) the domain twice; always reuse the same key when retrying the same logical attempt. +- **MCP server** (`https://api.godaddy.com/v1/domains/mcp`, streamable-http) is read-only and needs no authentication — public domain search/availability only, never registration, DNS, or anything account-specific. Full docs: `https://developer.godaddy.com/docs/api-users/mcp`. diff --git a/.agents/skills/godaddy-cli/SKILL.md b/.agents/skills/godaddy-cli/SKILL.md index 35c10fc..f5ef824 100644 --- a/.agents/skills/godaddy-cli/SKILL.md +++ b/.agents/skills/godaddy-cli/SKILL.md @@ -372,7 +372,7 @@ godaddy application enable my-app --store-id # 8. Enable ```bash godaddy application info my-app # 1. Check current state godaddy application update my-app --description "New" # 2. Update -godaddy application validate my-app # 3. Validate +godaddy application validate my-app # 3. Validate godaddy application release my-app \ # 4. Bump version --release-version 1.1.0 godaddy application deploy my-app --follow # 5. Deploy From aa8c44d2e78d6e03f262c938e26503b2016958a0 Mon Sep 17 00:00:00 2001 From: David Koopman Date: Tue, 14 Jul 2026 17:18:31 -0700 Subject: [PATCH 05/11] docs(gddy): trim redundant explanations, defer to CLI's self-docs Address second round of PR review feedback: point to gddy guide domain-purchase / --search / tree / guide instead of duplicating CLI docs, drop the buggy --reason "required" claim (DEVEX-884), trim repeated godaddy/gddy disambiguation, and de-jargon "Good-as-Gold". --- .agents/skills/gddy/SKILL.md | 47 +++++++++------------------- .agents/skills/gddy/reference/api.md | 4 +-- 2 files changed, 16 insertions(+), 35 deletions(-) diff --git a/.agents/skills/gddy/SKILL.md b/.agents/skills/gddy/SKILL.md index 631855b..fc8c6b1 100644 --- a/.agents/skills/gddy/SKILL.md +++ b/.agents/skills/gddy/SKILL.md @@ -5,11 +5,9 @@ description: Use GoDaddy's beta CLI (`gddy`) to search, register, and manage dom # gddy — GoDaddy domains & DNS CLI -`gddy` is GoDaddy's beta CLI for domain search, registration, and DNS management. It's a separate, independently-installed tool from GoDaddy's older `godaddy` CLI (applications, deployments, webhooks) — different binary, different install method, different auth and config. Installing or using one doesn't affect the other. For application, deployment, or webhook tasks, use the `godaddy-cli` skill instead of this one. +`gddy` is GoDaddy's beta CLI for domain search, registration, and DNS management. It's separate from GoDaddy's older `godaddy` CLI. For application, deployment, or webhook tasks, use the `godaddy-cli` skill instead of this one. -Both tools exist side by side because `gddy` is the newer of the two and under active development, with more surface area on its roadmap than what's documented here — it already has early, not-yet-stable support for things like applications and webhooks alongside its domain/DNS focus. Stick to the domain/DNS commands documented in this skill unless you've confirmed a newer capability is ready via `gddy --help`. - -It's under active development, and moves faster than its own docs and README — see "When the CLI and the docs disagree" below. +Both tools exist side by side because `gddy` is the newer of the two, under active development, and ships new features frequently. Run `gddy --help` against your installed release for the authoritative, current command list. ## Setup @@ -23,41 +21,24 @@ curl -fsSL https://github.com/godaddy/cli/releases/latest/download/install.sh | irm https://github.com/godaddy/cli/releases/latest/download/install.ps1 | iex ``` -Verify with `gddy --version`. This installs the `gddy` binary alongside any existing `godaddy` CLI — the two are separate tools. +Verify that installation works by running `gddy --version`. -Authenticate with `gddy auth login` (opens a browser for OAuth). Check state with `gddy auth status`, sign out with `gddy auth logout`. For non-interactive use (CI, scripts), use a Personal Access Token instead — manage one with `gddy pat add/list/remove`, or set the `GDDY_PAT`/`GDDY_PAT_` env var directly (checked before OAuth). Note PATs can't do everything: domain purchase specifically requires a customer-scoped OAuth login (see below). +Authenticate with `gddy auth login` (opens a browser for OAuth). Check state with `gddy auth status`, sign out with `gddy auth logout`. For non-interactive use (CI, scripts), use a Personal Access Token instead — manage one with `gddy pat add/list/remove`, or set the `GDDY_PAT`/`GDDY_PAT_` env var directly (checked before OAuth). Note PATs can't do everything: domain purchase specifically requires a customer-scoped OAuth login (see `gddy guide domain-purchase`). Every command accepts `--env ` to pick environment (default `prod`) and `--debug` for verbose output. -## When the CLI and the docs disagree, trust the CLI - -`gddy`'s own `--help` output reflects the actual installed version; docs and the README can lag behind a release, since it's beta and moves fast. Before relying on a remembered or documented flag shape, especially for anything destructive or paid, run `gddy --help` and trust that over any doc page or README. This matters most for domain purchase, which is a two-step flow that some docs oversimplify (see below). - -## Domain purchase: it's a two-step quote-then-purchase flow, not one command - -This is the highest-stakes command in the CLI — it charges money and can't be undone — so get the shape right. Some docs and even the README show it as a single `gddy domain purchase --agree --confirm` call; that's a simplification and doesn't match what the CLI actually does. The real flow locks in registration terms first, then executes against that locked quote: - -1. **Quote** — run `gddy domain quote --help` for the full flag list (period, privacy, nameservers, etc. all get baked into the quote token). Returns a single-use `quoteToken` valid for roughly 10 minutes, cached locally alongside the contacts file. +## Documentation -2. **Purchase** — run `gddy domain purchase --help` for the full flag list. `--agree` means "I consent to this quote's required legal agreements" — leave it off once first if you want to see what agreements apply before agreeing. `--confirm` is a separate, explicit acknowledgment that this charges the account. Both are required; there's no lower-friction path, by design. Purchase needs an OAuth login (`gddy auth login`) — a bare PAT is rejected here even though PATs work fine for read commands. +The `gddy` CLI is self-documenting. Use the following to get more information about its capabilities: -3. Purchase is async. The command waits briefly and reports status; if it's still pending, check back with `gddy domain operation status `. A completed purchase shows up in `gddy domain list`. +- The `--help` flag will give you detailed documentation on any command. +- The `gddy --search ` will help you find a command. +- The `gddy tree` command will give you a full listing of all commands. +- The `gddy guide` command lets you view detailed documentation that explains concepts and outlines complex workflows. -Before quoting, contact info needs to exist: `gddy domain contacts init` writes a starter `contacts.toml` template (registrant/admin/billing/tech, all commented out) to the OS config directory. Any role left commented out falls back to the account default; any role you fill in needs all of its required fields (name, email, phone, full address). - -Always confirm with the user before running `purchase` — it's real money, and the action is not reversible. - -## Domain search and lookup - -```bash -gddy domain suggest "coffee shop" --tlds com --tlds net --length-min 4 --length-max 15 -gddy domain available example.com --check-type fast # or: full (live registry check, slower) -gddy domain list --status ACTIVE -gddy domain get example.com -gddy domain agreements --tld com --privacy -``` +## Domain purchase -Global `--limit ` caps result counts on list-like commands. +Domain purchases is a multi-step workflow. Run `gddy guide domain-purchase` for a detailed walkthrough. Always confirm with the user before finalizing a purchase — it's real money, and the action is not reversible. ## DNS management @@ -72,11 +53,11 @@ gddy dns delete example.com --type A --name www `add` appends a new record; `set` replaces every record matching that type+name; `delete` removes every record matching that type+name. Type-specific requirements: `MX`/`SRV` need `--priority`; `SRV` also needs `--port`, `--weight`, `--protocol`, `--service`; `CAA` requires `--tag` (`--flag` is optional). -`set` and `delete` are destructive — support `--dry-run` to preview the change and `--reason ` for an audit trail. Run with `--dry-run` first and show the user what would change before applying it for real. +`set` and `delete` are destructive. Run with `--dry-run` first and show the user what would change before applying it for real. ## Payments -`gddy payments add` opens the browser to the account's payment-methods page — no card data is ever handled by the CLI itself. Purchases fail (403/422) without a valid payment method or Good-as-Gold balance on the account; check the error's `code` field, not just the HTTP status, to tell that apart from other failures. +`gddy payments add` opens the browser to the account's payment-methods page — no card data is ever handled by the CLI itself. Purchases fail (403/422) without a valid payment method or sufficient account balance; check the error's `code` field, not just the HTTP status, to tell that apart from other failures. ## Reference material diff --git a/.agents/skills/gddy/reference/api.md b/.agents/skills/gddy/reference/api.md index 0508a3b..05bb2f0 100644 --- a/.agents/skills/gddy/reference/api.md +++ b/.agents/skills/gddy/reference/api.md @@ -1,6 +1,6 @@ # GoDaddy Domains API (raw HTTP fallback) -Use this when the `gddy` CLI isn't installed or isn't a good fit for the task (CI pipelines, non-shell languages, etc.). When `gddy` is available, prefer it — it handles auth, quote-token bookkeeping, and idempotency for you. To install `gddy` itself, see the Setup section in SKILL.md. +Use this when the `gddy` CLI cannot be installed or isn't a good fit for the task (CI pipelines, non-shell languages, etc.). When `gddy` is available, prefer it — it handles auth, quote-token bookkeeping, and idempotency for you. To install `gddy` itself, see the Setup section in SKILL.md. Base URL: `https://api.godaddy.com` @@ -15,5 +15,5 @@ GoDaddy publishes machine-readable OpenAPI specs — fetch and search these dire ## Gotchas that won't change even as the API grows -- **Registration is two calls, never one** — mirrors the CLI's `gddy domain quote` / `gddy domain purchase` split. Lock a quote first; it returns a single-use `quoteToken` valid for roughly 10 minutes. Execute the registration against that token with an `Idempotency-Key` header — required, not optional. Retrying with a *new* key can register (and charge for) the domain twice; always reuse the same key when retrying the same logical attempt. +- **Domain registration is two calls, never one** — mirrors the CLI's `gddy domain quote` / `gddy domain purchase` split (run `gddy guide domain-purchase` for the full walkthrough). Lock a quote first — valid ~10 minutes — then register against it with an `Idempotency-Key` header (required, not optional). Reuse the same key when retrying the same logical attempt; a new key on retry can register and charge for the domain twice. - **MCP server** (`https://api.godaddy.com/v1/domains/mcp`, streamable-http) is read-only and needs no authentication — public domain search/availability only, never registration, DNS, or anything account-specific. Full docs: `https://developer.godaddy.com/docs/api-users/mcp`. From dba8818a159df2906141fe743f4a4e9850fafa45 Mon Sep 17 00:00:00 2001 From: David Koopman Date: Tue, 14 Jul 2026 17:45:53 -0700 Subject: [PATCH 06/11] Drop godaddy-cli skill from the published plugin The godaddy CLI has no external customers and none once it merges with gddy, so publishing an agent skill for it now just means retracting it later. Per jpage-godaddy's review, ship only the gddy skill: rename the plugin to gddy, drop the godaddy-cli skill and its symlink, and revert .agents/skills/godaddy-cli/SKILL.md to unchanged. --- .agents/skills/gddy/README.md | 10 ++----- .agents/skills/gddy/SKILL.md | 2 +- .agents/skills/godaddy-cli/README.md | 30 ------------------- .agents/skills/godaddy-cli/SKILL.md | 4 +-- .claude-plugin/marketplace.json | 6 ++-- README.md | 2 +- plugins/gddy/.claude-plugin/plugin.json | 8 +++++ plugins/{godaddy-cli => gddy}/skills/gddy | 0 .../godaddy-cli/.claude-plugin/plugin.json | 8 ----- plugins/godaddy-cli/skills/godaddy-cli | 1 - 10 files changed, 16 insertions(+), 55 deletions(-) delete mode 100644 .agents/skills/godaddy-cli/README.md create mode 100644 plugins/gddy/.claude-plugin/plugin.json rename plugins/{godaddy-cli => gddy}/skills/gddy (100%) delete mode 100644 plugins/godaddy-cli/.claude-plugin/plugin.json delete mode 120000 plugins/godaddy-cli/skills/godaddy-cli diff --git a/.agents/skills/gddy/README.md b/.agents/skills/gddy/README.md index 9245cb0..81e4950 100644 --- a/.agents/skills/gddy/README.md +++ b/.agents/skills/gddy/README.md @@ -1,6 +1,6 @@ # gddy skill -Teaches an AI coding agent how to drive `gddy`, GoDaddy's beta CLI for domain search, registration, and DNS management. It covers install/auth, the two-step quote-then-purchase flow for buying a domain, DNS record semantics (`add` vs `set` vs `delete`), and — since `gddy` moves faster than its own docs — how to fetch GoDaddy's developer docs correctly and when to trust `gddy --help` over a doc page. +Teaches an AI coding agent how to drive `gddy`, GoDaddy's beta CLI for domain search, registration, and DNS management. It covers install/auth, the two-step quote-then-purchase flow for buying a domain, DNS record semantics (`add` vs `set` vs `delete`), and how to use the CLI's own self-documentation (`--help`, `--search`, `tree`, `guide`) to stay current as `gddy` evolves. See [SKILL.md](./SKILL.md) for the full instructions given to the agent. @@ -10,11 +10,9 @@ See [SKILL.md](./SKILL.md) for the full instructions given to the agent. ```bash claude plugin marketplace add godaddy/cli -claude plugin install godaddy-cli@godaddy +claude plugin install gddy@godaddy ``` -This installs the plugin that bundles both skills in this repo (`godaddy-cli` and `gddy`); Claude picks whichever one fits the task automatically. - ### Any other AI coding agent This repo is also compatible with [skills](https://github.com/vercel-labs/skills), a package-manager-style installer for agent skills that isn't tied to Claude Code — it supports Cursor, Codex, Windsurf, opencode, and 70+ other agents in addition to Claude Code: @@ -24,7 +22,3 @@ npx skills add godaddy/cli --skill gddy --agent claude-code ``` Swap `--agent claude-code` for whichever agent you use (`cursor`, `codex`, `windsurf`, `opencode`, ...). Run `npx skills add --help` for the full list of supported agents. - -## What it doesn't cover - -Applications, auth, environments, releases/deploys, extensions, and webhooks live in a separate, older tool, `godaddy`, with its own skill — see [../godaddy-cli/README.md](../godaddy-cli/README.md). diff --git a/.agents/skills/gddy/SKILL.md b/.agents/skills/gddy/SKILL.md index fc8c6b1..2d08622 100644 --- a/.agents/skills/gddy/SKILL.md +++ b/.agents/skills/gddy/SKILL.md @@ -5,7 +5,7 @@ description: Use GoDaddy's beta CLI (`gddy`) to search, register, and manage dom # gddy — GoDaddy domains & DNS CLI -`gddy` is GoDaddy's beta CLI for domain search, registration, and DNS management. It's separate from GoDaddy's older `godaddy` CLI. For application, deployment, or webhook tasks, use the `godaddy-cli` skill instead of this one. +`gddy` is GoDaddy's beta CLI for domain search, registration, and DNS management. It's separate from GoDaddy's older `godaddy` CLI, which covers applications, deployments, and webhooks. Both tools exist side by side because `gddy` is the newer of the two, under active development, and ships new features frequently. Run `gddy --help` against your installed release for the authoritative, current command list. diff --git a/.agents/skills/godaddy-cli/README.md b/.agents/skills/godaddy-cli/README.md deleted file mode 100644 index 0effe97..0000000 --- a/.agents/skills/godaddy-cli/README.md +++ /dev/null @@ -1,30 +0,0 @@ -# godaddy-cli skill - -Teaches an AI coding agent how to drive the `godaddy` CLI — applications, auth, environments, releases/deploys, extensions, and webhooks on the GoDaddy Developer Platform. It covers the JSON output contract, `next_actions` discovery, error codes, and the typical create/deploy/diagnose workflows, so the agent doesn't have to reverse-engineer any of that from `--help` output alone. - -See [SKILL.md](./SKILL.md) for the full instructions given to the agent. - -## Installation - -### Claude Code - -```bash -claude plugin marketplace add godaddy/cli -claude plugin install godaddy-cli@godaddy -``` - -This installs the plugin that bundles both skills in this repo (`godaddy-cli` and `gddy`); Claude picks whichever one fits the task automatically. - -### Any other AI coding agent - -This repo is also compatible with [skills](https://github.com/vercel-labs/skills), a package-manager-style installer for agent skills that isn't tied to Claude Code — it supports Cursor, Codex, Windsurf, opencode, and 70+ other agents in addition to Claude Code: - -```bash -npx skills add godaddy/cli --skill godaddy-cli --agent claude-code -``` - -Swap `--agent claude-code` for whichever agent you use (`cursor`, `codex`, `windsurf`, `opencode`, ...). Run `npx skills add --help` for the full list of supported agents. - -## What it doesn't cover - -Domain search, registration, and DNS management live in a separate tool, `gddy`, with its own skill — see [../gddy/README.md](../gddy/README.md). diff --git a/.agents/skills/godaddy-cli/SKILL.md b/.agents/skills/godaddy-cli/SKILL.md index f5ef824..49baf6d 100644 --- a/.agents/skills/godaddy-cli/SKILL.md +++ b/.agents/skills/godaddy-cli/SKILL.md @@ -10,8 +10,6 @@ tags: [godaddy, cli, commerce, applications, deploy] The `godaddy` CLI is an agent-first tool. Every command returns a single JSON envelope to stdout. There is no plain text mode, no `--json` flag, and no table output. Parse stdout as JSON. -GoDaddy also publishes `gddy`, a separate and newer CLI — a beta tool, distributed via GitHub Releases rather than npm, for domain search, registration, and DNS management. It's a different binary with its own install method, auth, and config; installing or using one doesn't affect the other. If the task is about domains or DNS records rather than applications, auth, environments, deployments, extensions, or webhooks, use the `gddy` skill instead of this one. - ## Quick Start ```bash @@ -66,7 +64,7 @@ Every command writes exactly one JSON object to stdout followed by a newline. Pa Check `ok` first. On failure, read `error.code` for programmatic handling and `fix` for the suggested recovery step. -Error codes: `NOT_FOUND`, `AUTH_REQUIRED`, `VALIDATION_ERROR`, `NETWORK_ERROR`, `CONFIG_ERROR`, `SECURITY_BLOCKED`, `COMMAND_NOT_FOUND`, `UNSUPPORTED_OPTION`, `UNEXPECTED_ERROR`, `FORBIDDEN`, `CONFLICT`, `RATE_LIMIT_EXCEEDED`. +Error codes: `NOT_FOUND`, `AUTH_REQUIRED`, `VALIDATION_ERROR`, `NETWORK_ERROR`, `CONFIG_ERROR`, `SECURITY_BLOCKED`, `COMMAND_NOT_FOUND`, `UNSUPPORTED_OPTION`, `UNEXPECTED_ERROR`. ### next_actions (HATEOAS) diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 32bf6d1..14df82f 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -7,9 +7,9 @@ "description": "Skills for using GoDaddy's command-line tools with an AI coding agent.", "plugins": [ { - "name": "godaddy-cli", - "source": "./plugins/godaddy-cli", - "description": "Skill for using the GoDaddy CLI tools — the godaddy CLI (applications, auth, environments, deployments, extensions, webhooks) and the gddy CLI (domain search, registration, and DNS management).", + "name": "gddy", + "source": "./plugins/gddy", + "description": "Skill for using GoDaddy's gddy CLI — domain search, registration, and DNS management.", "author": { "name": "GoDaddy" } diff --git a/README.md b/README.md index 022d1a6..9386e74 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ Agent-first CLI for interacting with GoDaddy Developer Platform. ### Using an AI coding agent? -Point your agent at this README and ask it to check for and install the relevant skill(s) — `godaddy-cli` for applications/auth/deploy/webhooks, `gddy` for domain search/registration/DNS. Once installed, the skill teaches the agent the CLI's JSON output contract and typical workflows, so it can drive the CLI correctly without guessing at flags. See [.agents/skills/godaddy-cli/README.md](./.agents/skills/godaddy-cli/README.md) and [.agents/skills/gddy/README.md](./.agents/skills/gddy/README.md) for one-line install commands (Claude Code and 70+ other agents). +Point your agent at this README and ask it to install the `gddy` skill for domain search/registration/DNS. Once installed, the skill teaches the agent the CLI's JSON output contract and typical workflows, so it can drive the CLI correctly without guessing at flags. See [.agents/skills/gddy/README.md](./.agents/skills/gddy/README.md) for one-line install commands (Claude Code and 70+ other agents). ### Installing the CLI directly diff --git a/plugins/gddy/.claude-plugin/plugin.json b/plugins/gddy/.claude-plugin/plugin.json new file mode 100644 index 0000000..2f20735 --- /dev/null +++ b/plugins/gddy/.claude-plugin/plugin.json @@ -0,0 +1,8 @@ +{ + "name": "gddy", + "description": "Skill for using GoDaddy's gddy CLI — domain search, registration, and DNS management.", + "version": "0.1.0", + "author": { + "name": "GoDaddy" + } +} diff --git a/plugins/godaddy-cli/skills/gddy b/plugins/gddy/skills/gddy similarity index 100% rename from plugins/godaddy-cli/skills/gddy rename to plugins/gddy/skills/gddy diff --git a/plugins/godaddy-cli/.claude-plugin/plugin.json b/plugins/godaddy-cli/.claude-plugin/plugin.json deleted file mode 100644 index 88ce0f7..0000000 --- a/plugins/godaddy-cli/.claude-plugin/plugin.json +++ /dev/null @@ -1,8 +0,0 @@ -{ - "name": "godaddy-cli", - "description": "Skill for using the GoDaddy CLI tools — the godaddy CLI (applications, auth, environments, deployments, extensions, webhooks) and the gddy CLI (domain search, registration, and DNS management).", - "version": "0.1.0", - "author": { - "name": "GoDaddy" - } -} diff --git a/plugins/godaddy-cli/skills/godaddy-cli b/plugins/godaddy-cli/skills/godaddy-cli deleted file mode 120000 index 43f17e2..0000000 --- a/plugins/godaddy-cli/skills/godaddy-cli +++ /dev/null @@ -1 +0,0 @@ -../../../.agents/skills/godaddy-cli \ No newline at end of file From 0575dbecbaf4f3878d0c881d3b8f619355c44162 Mon Sep 17 00:00:00 2001 From: David Koopman Date: Tue, 14 Jul 2026 17:52:49 -0700 Subject: [PATCH 07/11] Fix marketplace owner email to match repo's actual OSS contact opensource@godaddy.com didn't correspond to any real address in the repo. SECURITY.md and CODE_OF_CONDUCT.md both use oss@godaddy.com as the actual GoDaddy OSPO contact. --- .claude-plugin/marketplace.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index 14df82f..885cfc5 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -2,7 +2,7 @@ "name": "godaddy", "owner": { "name": "GoDaddy", - "email": "opensource@godaddy.com" + "email": "oss@godaddy.com" }, "description": "Skills for using GoDaddy's command-line tools with an AI coding agent.", "plugins": [ From eb385ab7270940e5e6562bc6c4abeda0ac001554 Mon Sep 17 00:00:00 2001 From: Jacob Page <85361835+jpage-godaddy@users.noreply.github.com> Date: Tue, 14 Jul 2026 17:56:42 -0700 Subject: [PATCH 08/11] Potential fix for pull request finding Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> --- .agents/skills/gddy/SKILL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.agents/skills/gddy/SKILL.md b/.agents/skills/gddy/SKILL.md index 2d08622..a48d58a 100644 --- a/.agents/skills/gddy/SKILL.md +++ b/.agents/skills/gddy/SKILL.md @@ -38,7 +38,7 @@ The `gddy` CLI is self-documenting. Use the following to get more information ab ## Domain purchase -Domain purchases is a multi-step workflow. Run `gddy guide domain-purchase` for a detailed walkthrough. Always confirm with the user before finalizing a purchase — it's real money, and the action is not reversible. +Domain purchase is a multi-step workflow. Run `gddy guide domain-purchase` for a detailed walkthrough. Always confirm with the user before finalizing a purchase — it's real money, and the action is not reversible. ## DNS management From a8557c347d7ecba89cf1cb26edbabc93e3fb217e Mon Sep 17 00:00:00 2001 From: David Koopman Date: Tue, 14 Jul 2026 18:19:55 -0700 Subject: [PATCH 09/11] Fix grammar and env var inconsistencies flagged by Copilot review - SKILL.md: drop stray "The" before inline command, fix subject-verb agreement in "Domain purchase is a multi-step workflow" - api.md: correct $GODADDY_PAT to $GDDY_PAT to match SKILL.md and the gddy CLI's actual env var (verified via `gddy --help`/`gddy pat --help`) - README.md: replace --agent claude-code example with an placeholder so the "any other agent" section isn't self-contradictory --- .agents/skills/gddy/README.md | 4 ++-- .agents/skills/gddy/SKILL.md | 2 +- .agents/skills/gddy/reference/api.md | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.agents/skills/gddy/README.md b/.agents/skills/gddy/README.md index 81e4950..3f75046 100644 --- a/.agents/skills/gddy/README.md +++ b/.agents/skills/gddy/README.md @@ -18,7 +18,7 @@ claude plugin install gddy@godaddy This repo is also compatible with [skills](https://github.com/vercel-labs/skills), a package-manager-style installer for agent skills that isn't tied to Claude Code — it supports Cursor, Codex, Windsurf, opencode, and 70+ other agents in addition to Claude Code: ```bash -npx skills add godaddy/cli --skill gddy --agent claude-code +npx skills add godaddy/cli --skill gddy --agent ``` -Swap `--agent claude-code` for whichever agent you use (`cursor`, `codex`, `windsurf`, `opencode`, ...). Run `npx skills add --help` for the full list of supported agents. +Swap `` for whichever agent you use (`cursor`, `codex`, `windsurf`, `opencode`, ...). Run `npx skills add --help` for the full list of supported agents. diff --git a/.agents/skills/gddy/SKILL.md b/.agents/skills/gddy/SKILL.md index a48d58a..7fec736 100644 --- a/.agents/skills/gddy/SKILL.md +++ b/.agents/skills/gddy/SKILL.md @@ -32,7 +32,7 @@ Every command accepts `--env ` to pick environment (default `prod`) an The `gddy` CLI is self-documenting. Use the following to get more information about its capabilities: - The `--help` flag will give you detailed documentation on any command. -- The `gddy --search ` will help you find a command. +- `gddy --search ` will help you find a command. - The `gddy tree` command will give you a full listing of all commands. - The `gddy guide` command lets you view detailed documentation that explains concepts and outlines complex workflows. diff --git a/.agents/skills/gddy/reference/api.md b/.agents/skills/gddy/reference/api.md index 05bb2f0..f0f1090 100644 --- a/.agents/skills/gddy/reference/api.md +++ b/.agents/skills/gddy/reference/api.md @@ -4,7 +4,7 @@ Use this when the `gddy` CLI cannot be installed or isn't a good fit for the tas Base URL: `https://api.godaddy.com` -Auth header: `Authorization: Bearer $GODADDY_PAT` (PAT generated from the Personal Access Token page under `https://developer.godaddy.com/docs/api-users/auth`). Legacy `sso-key key:secret` credentials still work for v1/v2 endpoints but not v3, and are deprecated — prefer a PAT for anything new. +Auth header: `Authorization: Bearer $GDDY_PAT` (PAT generated from the Personal Access Token page under `https://developer.godaddy.com/docs/api-users/auth`). Legacy `sso-key key:secret` credentials still work for v1/v2 endpoints but not v3, and are deprecated — prefer a PAT for anything new. ## Endpoint reference From cc672ba05ea0a4f3b889beab9e9c32df422eaee2 Mon Sep 17 00:00:00 2001 From: David Koopman Date: Tue, 14 Jul 2026 18:21:18 -0700 Subject: [PATCH 10/11] docs(gddy): include claude-code in the agent list example It's a valid --agent value, just not the one shown in the command itself. --- .agents/skills/gddy/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.agents/skills/gddy/README.md b/.agents/skills/gddy/README.md index 3f75046..e09b720 100644 --- a/.agents/skills/gddy/README.md +++ b/.agents/skills/gddy/README.md @@ -21,4 +21,4 @@ This repo is also compatible with [skills](https://github.com/vercel-labs/skills npx skills add godaddy/cli --skill gddy --agent ``` -Swap `` for whichever agent you use (`cursor`, `codex`, `windsurf`, `opencode`, ...). Run `npx skills add --help` for the full list of supported agents. +Swap `` for whichever agent you use (`claude-code`, `cursor`, `codex`, `windsurf`, `opencode`, ...). Run `npx skills add --help` for the full list of supported agents. From c9148e52dae1a2c4ec482ff87c05b941a058f669 Mon Sep 17 00:00:00 2001 From: David Koopman Date: Tue, 14 Jul 2026 18:24:10 -0700 Subject: [PATCH 11/11] docs(gddy): add version/author/tags to SKILL.md frontmatter Matches the metadata fields present on the repo's other skills (godaddy-cli, cli-design). --- .agents/skills/gddy/SKILL.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.agents/skills/gddy/SKILL.md b/.agents/skills/gddy/SKILL.md index 7fec736..5d9cb97 100644 --- a/.agents/skills/gddy/SKILL.md +++ b/.agents/skills/gddy/SKILL.md @@ -1,6 +1,9 @@ --- name: gddy description: Use GoDaddy's beta CLI (`gddy`) to search, register, and manage domains and DNS records. Load this skill whenever a task involves running `gddy` commands, parsing their JSON output, finding or buying a domain, or editing DNS records (A, CNAME, MX, TXT, etc.) for a domain hosted at GoDaddy. `gddy` is a separate tool from GoDaddy's older `godaddy` CLI (applications, deployments, webhooks) — do not use this skill for that tool, and don't trigger for other registrars or DNS providers (Cloudflare, Route 53, Namecheap, etc.) unless GoDaddy is explicitly involved. +version: 0.1.0 +author: GoDaddy +tags: [godaddy, gddy, cli, domains, dns] --- # gddy — GoDaddy domains & DNS CLI