diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index bc7e115..d69e856 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -10,7 +10,7 @@ { "name": "godaddy", "source": "./", - "description": "Build GoDaddy-powered experiences with Commerce storefront and payments skills.", + "description": "Build GoDaddy-powered experiences with Domains CLI, storefront, and payments skills.", "version": "0.1.0", "author": { "name": "GoDaddy" @@ -18,6 +18,9 @@ "homepage": "https://github.com/godaddy/commerce-agent-plugin", "keywords": [ "godaddy", + "domains", + "dns", + "cli", "commerce", "storefront", "payments", diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 66bebf9..35b814e 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "godaddy", - "description": "GoDaddy tools for Claude Code, starting with storefront and payments skills backed by production Commerce capabilities.", + "description": "GoDaddy tools for Claude Code, including the Domains CLI plus Commerce storefront and payments skills.", "version": "0.1.0", "author": { "name": "GoDaddy" @@ -9,6 +9,9 @@ "repository": "https://github.com/godaddy/commerce-agent-plugin", "keywords": [ "godaddy", + "domains", + "dns", + "cli", "commerce", "storefront", "payments", diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json index 8c31bfc..f4fcc5c 100644 --- a/.codex-plugin/plugin.json +++ b/.codex-plugin/plugin.json @@ -1,7 +1,7 @@ { "name": "godaddy", - "version": "0.1.0+codex.20260806225047", - "description": "Build with GoDaddy using Commerce skills and production MCP capabilities.", + "version": "0.1.0+codex.20260806231842", + "description": "Build with GoDaddy using Domains CLI, Commerce skills, and production MCP capabilities.", "author": { "name": "GoDaddy", "url": "https://www.godaddy.com/" @@ -10,6 +10,9 @@ "repository": "https://github.com/godaddy/commerce-agent-plugin", "keywords": [ "godaddy", + "domains", + "dns", + "cli", "commerce", "storefront", "payments", @@ -21,20 +24,20 @@ "interface": { "displayName": "GoDaddy", "shortDescription": "Build GoDaddy-powered digital experiences", - "longDescription": "Use GoDaddy skills and production MCP tools to build digital experiences. The initial Commerce skills cover dynamic storefronts, catalog integration, secure checkout handoffs, and payment flows.", + "longDescription": "Use GoDaddy skills, the gddy Domains CLI, and production MCP tools to find and manage domains, build dynamic storefronts, integrate catalogs, and implement secure checkout and payment flows.", "developerName": "GoDaddy", "category": "Developer Tools", "capabilities": [ "Read", "Write" ], - "websiteURL": "https://www.godaddy.com/commerce", + "websiteURL": "https://developer.godaddy.com/en", "privacyPolicyURL": "https://www.godaddy.com/legal/agreements/privacy-policy", "termsOfServiceURL": "https://www.godaddy.com/legal/agreements/universal-terms-of-service-agreement", "defaultPrompt": [ + "Find and safely register a domain with gddy.", "Build a storefront from my GoDaddy Commerce catalog.", - "Add a secure checkout and payment flow.", - "Audit this commerce UI for catalog and payment correctness." + "Add a secure checkout and payment flow." ], "brandColor": "#09757A" } diff --git a/.cursor-plugin/marketplace.json b/.cursor-plugin/marketplace.json index 49f75c5..8ff3b49 100644 --- a/.cursor-plugin/marketplace.json +++ b/.cursor-plugin/marketplace.json @@ -10,7 +10,7 @@ { "name": "godaddy", "source": "./", - "description": "Build GoDaddy-powered experiences with Commerce storefront and payments skills.", + "description": "Build GoDaddy-powered experiences with Domains CLI, storefront, and payments skills.", "version": "0.1.0", "author": { "name": "GoDaddy" @@ -18,6 +18,9 @@ "homepage": "https://github.com/godaddy/commerce-agent-plugin", "keywords": [ "godaddy", + "domains", + "dns", + "cli", "commerce", "storefront", "payments", diff --git a/.cursor-plugin/plugin.json b/.cursor-plugin/plugin.json index 9fb5455..3cf5f91 100644 --- a/.cursor-plugin/plugin.json +++ b/.cursor-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "godaddy", - "description": "GoDaddy tools for Cursor, starting with storefront and payments skills backed by production Commerce capabilities.", + "description": "GoDaddy tools for Cursor, including the Domains CLI plus Commerce storefront and payments skills.", "version": "0.1.0", "author": { "name": "GoDaddy" @@ -9,6 +9,9 @@ "repository": "https://github.com/godaddy/commerce-agent-plugin", "keywords": [ "godaddy", + "domains", + "dns", + "cli", "commerce", "storefront", "payments", diff --git a/README.md b/README.md index d3d1767..202c78a 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,11 @@ # GoDaddy AI Toolkit One installable `godaddy` agent plugin for building with GoDaddy. The toolkit -starts with two Commerce skills and the production GoDaddy Commerce MCP server: +starts with the GoDaddy Domains CLI skill, two Commerce skills, and the +production GoDaddy Commerce MCP server: ```text +skills/gddy domain search, registration, and DNS through the CLI skills/storefront catalog, product detail, cart, and checkout handoff skills/payments checkout, payment lifecycle, and transaction work examples/storefront runnable reference implementation @@ -58,7 +60,9 @@ codex plugin add godaddy@godaddy-ai-toolkit ``` Start a new thread after installation or an update. Codex will load the -`godaddy:storefront` and `godaddy:payments` skills and the Commerce MCP tools. +`godaddy:gddy`, `godaddy:storefront`, and `godaddy:payments` skills and the +Commerce MCP tools. The `gddy` skill checks the locally installed CLI and guides +its separate browser authentication only when a domain task needs it. ## Host entry points @@ -72,9 +76,9 @@ The root layout follows the same one-toolkit pattern across agent hosts: - `package.json#pi.skills` for Pi Install this repository root when a host supports installing a plugin from a -Git URL. The skills contain the workflow knowledge; the MCP connection exposes -account-specific Commerce capabilities. Hosts remain responsible for OAuth and -credential storage. +Git URL. The skills contain workflow knowledge; `gddy` provides account-aware +Domains operations and the MCP connection exposes account-specific Commerce +capabilities. Hosts remain responsible for OAuth and credential storage. ## Production boundary @@ -92,12 +96,13 @@ npm run validate ``` This checks the single root plugin, cross-host manifest agreement, marketplace -sources, Commerce skills, OAuth configuration, relative links, and the public +sources, required skills, OAuth configuration, relative links, and the public production boundary. The reference storefront has separate tests, typechecks, and a production build. See [the toolkit plan](docs/toolkit-plan.md) for the architecture and expansion -rules. +rules, and [the developer-platform skill map](docs/developer-platform-skill-map.md) +for the page-by-page documentation audit. > Status: pre-release. Public-release governance and cross-host compatibility > testing are still required. diff --git a/docs/developer-platform-skill-map.md b/docs/developer-platform-skill-map.md new file mode 100644 index 0000000..9081d5f --- /dev/null +++ b/docs/developer-platform-skill-map.md @@ -0,0 +1,178 @@ +# Developer Platform skill map + +Reviewed: 2026-08-06 + +## Method and result + +The audit followed the site's prescribed evaluator order: discovery index, +per-page content, complete corpus, and REST reference operations. The current +corpus contains 82 pages: 33 guides or concepts and 49 REST reference pages. + +The docs support Domains strongly, expose a coherent Node.js Hosting API, +provide only two read-only Commerce transaction operations, and contain no +dedicated GoDaddy platform-app documentation. The Node.js Hosting overview links to +`/docs/hosting/concepts` and `/docs/hosting/authentication`; both currently +return 404 and are release blockers for claiming a complete Hosting skill. + +## Recommended structure + +Use one root plugin and flat, independently triggerable skills: + +```text +skills/ +├── gddy/ production CLI operation +├── godaddy-api/ proposed shared REST integration workflow +├── domains/ proposed domain outcomes across MCP, CLI, and REST +├── hosting/ proposed Node.js hosting lifecycle +├── storefront/ existing Commerce shopper experience +├── payments/ existing Commerce payment boundary +└── platform-apps/ future GoDaddy platform extensibility lifecycle +``` + +Do not create a skill for every endpoint page. Skills should own user outcomes; +references should carry operation-level detail and link to the live OpenAPI +contract. Keep the four product areas as taxonomy, not directory nesting. + +## Page-by-page mapping + +### Guides and concepts + +| # | Page | Skill owner | +|---:|---|---| +| 1 | [Agent skill for gddy](https://developer.godaddy.com/en/docs/api-users/agent-skill) | `gddy` | +| 2 | [Building reliable integrations](https://developer.godaddy.com/en/docs/api-users/building-reliable-integrations) | `godaddy-api`; safety reference for `domains` | +| 3 | [Set up the CLI](https://developer.godaddy.com/en/docs/api-users/cli-setup) | `gddy` | +| 4 | [Domain management concepts](https://developer.godaddy.com/en/docs/api-users/domain-management-concepts) | `domains` | +| 5 | [Handle errors](https://developer.godaddy.com/en/docs/api-users/errors) | `godaddy-api` | +| 6 | [End-to-end workflow](https://developer.godaddy.com/en/docs/api-users/full-workflow) | `domains` | +| 7 | [Glossary](https://developer.godaddy.com/en/docs/api-users/glossary) | `domains` reference | +| 8 | [How GoDaddy APIs work](https://developer.godaddy.com/en/docs/api-users/how-godaddy-apis-work) | `godaddy-api` | +| 9 | [Introduction](https://developer.godaddy.com/en/docs/api-users) | `godaddy-api` routing | +| 10 | [GoDaddy MCP server](https://developer.godaddy.com/en/docs/api-users/mcp) | `domains` tool routing | +| 11 | [Paginate results](https://developer.godaddy.com/en/docs/api-users/pagination) | `godaddy-api` | +| 12 | [Set up a payment profile](https://developer.godaddy.com/en/docs/api-users/payment-profile) | `domains` registration prerequisite | +| 13 | [Make your first call](https://developer.godaddy.com/en/docs/api-users/quickstart) | `godaddy-api` | +| 14 | [Handle rate limits](https://developer.godaddy.com/en/docs/api-users/rate-limits) | `godaddy-api` | +| 15 | [Testing with LLMs](https://developer.godaddy.com/en/docs/api-users/testing-with-llms) | Toolkit authoring and evaluation | +| 16 | [Troubleshoot authentication](https://developer.godaddy.com/en/docs/api-users/troubleshoot-authentication) | `godaddy-api`; `gddy` fallback | +| 17 | [Troubleshoot the CLI](https://developer.godaddy.com/en/docs/api-users/troubleshoot-cli) | `gddy` | +| 18 | [Troubleshoot DNS](https://developer.godaddy.com/en/docs/api-users/troubleshoot-dns) | `domains` | +| 19 | [Troubleshoot domain registration](https://developer.godaddy.com/en/docs/api-users/troubleshoot-domain-registration) | `domains` | +| 20 | [Troubleshoot your first API call](https://developer.godaddy.com/en/docs/api-users/troubleshoot-first-call) | `godaddy-api` | +| 21 | [How to Authenticate](https://developer.godaddy.com/en/docs/api-users/auth/how-to) | `godaddy-api` | +| 22 | [About Authentication](https://developer.godaddy.com/en/docs/api-users/auth) | `godaddy-api` | +| 23 | [Manage DNS records](https://developer.godaddy.com/en/docs/api-users/manage-domains/dns) | `domains` | +| 24 | [Forward a domain](https://developer.godaddy.com/en/docs/api-users/manage-domains/forwarding) | `domains` | +| 25 | [Browse the Domains API](https://developer.godaddy.com/en/docs/api-users/manage-domains) | `domains` | +| 26 | [Registered domains](https://developer.godaddy.com/en/docs/api-users/manage-domains/list) | `domains` | +| 27 | [Lock a domain](https://developer.godaddy.com/en/docs/api-users/manage-domains/lock) | `domains` | +| 28 | [Manage renewals](https://developer.godaddy.com/en/docs/api-users/manage-domains/renewals) | `domains` | +| 29 | [Update contacts](https://developer.godaddy.com/en/docs/api-users/manage-domains/update-contacts) | `domains` | +| 30 | [Register a domain](https://developer.godaddy.com/en/docs/api-users/purchase-domains/register) | `domains` | +| 31 | [Search domain availability](https://developer.godaddy.com/en/docs/api-users/search-domains) | `domains` | +| 32 | [Build an API integration](https://developer.godaddy.com/en/docs/api-users/workflows/api-integration) | `godaddy-api` | +| 33 | [Register and configure a domain](https://developer.godaddy.com/en/docs/api-users/workflows/domain-lifecycle) | `domains` | + +### REST references + +| # | Page | Skill owner | +|---:|---|---| +| 34 | [REST API Reference](https://developer.godaddy.com/en/docs/references/rest) | `godaddy-api` routing index | +| 35 | [Abuse v1](https://developer.godaddy.com/en/docs/references/rest/abuse/v1-legacy) | Backlog: abuse workflow | +| 36 | [Abuse v2](https://developer.godaddy.com/en/docs/references/rest/abuse/v2) | Backlog: abuse workflow | +| 37 | [Aftermarket](https://developer.godaddy.com/en/docs/references/rest/aftermarket/aftermarket) | Backlog: domain aftermarket | +| 38 | [Agreements](https://developer.godaddy.com/en/docs/references/rest/agreements/agreements) | `domains` registration reference | +| 39 | [ANS agents](https://developer.godaddy.com/en/docs/references/rest/ans/agents) | Backlog: agent naming | +| 40 | [ANS certificate management](https://developer.godaddy.com/en/docs/references/rest/ans/certificate-management) | Backlog: agent naming | +| 41 | [ANS events](https://developer.godaddy.com/en/docs/references/rest/ans/events) | Backlog: agent naming | +| 42 | [ANS registration](https://developer.godaddy.com/en/docs/references/rest/ans/registration) | Backlog: agent naming | +| 43 | [ANS resolution](https://developer.godaddy.com/en/docs/references/rest/ans/resolution) | Backlog: agent naming | +| 44 | [ANS revocation](https://developer.godaddy.com/en/docs/references/rest/ans/revocation) | Backlog: agent naming | +| 45 | [ANS search](https://developer.godaddy.com/en/docs/references/rest/ans/search) | Backlog: agent naming | +| 46 | [ANS validation](https://developer.godaddy.com/en/docs/references/rest/ans/validation) | Backlog: agent naming | +| 47 | [Auctions](https://developer.godaddy.com/en/docs/references/rest/auctions/auctions) | Backlog: domain aftermarket | +| 48 | [Listings availability](https://developer.godaddy.com/en/docs/references/rest/auctions/listings-availability) | Backlog: domain aftermarket | +| 49 | [Certificates v1](https://developer.godaddy.com/en/docs/references/rest/certificates/v1) | Backlog: certificates | +| 50 | [Certificates v2](https://developer.godaddy.com/en/docs/references/rest/certificates/v2) | Backlog: certificates | +| 51 | [Countries](https://developer.godaddy.com/en/docs/references/rest/countries/countries) | Shared reference; primarily `domains` | +| 52 | [Domains REST reference](https://developer.godaddy.com/en/docs/references/rest/domains) | `domains` | +| 53 | [Node.js Hosting apps](https://developer.godaddy.com/en/docs/references/rest/nodejs-hosting/apps) | `hosting` | +| 54 | [Node.js Hosting deployments](https://developer.godaddy.com/en/docs/references/rest/nodejs-hosting/deployments) | `hosting` | +| 55 | [Node.js Hosting overview](https://developer.godaddy.com/en/docs/references/rest/nodejs-hosting) | `hosting` | +| 56 | [Node.js Hosting logs](https://developer.godaddy.com/en/docs/references/rest/nodejs-hosting/logs) | `hosting` | +| 57 | [Node.js Hosting secrets](https://developer.godaddy.com/en/docs/references/rest/nodejs-hosting/secrets) | `hosting` | +| 58 | [Node.js Hosting source](https://developer.godaddy.com/en/docs/references/rest/nodejs-hosting/source) | `hosting` | +| 59 | [Parking](https://developer.godaddy.com/en/docs/references/rest/parking/parking) | Backlog: domain monetization | +| 60 | [Shoppers](https://developer.godaddy.com/en/docs/references/rest/shoppers/shoppers) | Backlog: reseller/customer accounts | +| 61 | [Transactions](https://developer.godaddy.com/en/docs/references/rest/transactions/general-endpoints) | `payments`, read-only contract only | +| 62 | [Domain actions](https://developer.godaddy.com/en/docs/references/rest/domains/v2/domain-actions) | `domains` | +| 63 | [Domain notifications](https://developer.godaddy.com/en/docs/references/rest/domains/v2/domain-notifications) | `domains` | +| 64 | [Domains API usage](https://developer.godaddy.com/en/docs/references/rest/domains/v2/domains-api-usage) | `domains` operations reference | +| 65 | [Domains v2](https://developer.godaddy.com/en/docs/references/rest/domains/v2) | `domains` | +| 66 | [Domains v2 settings](https://developer.godaddy.com/en/docs/references/rest/domains/v2/manage-domain-settings) | `domains` | +| 67 | [Domains v2 registration](https://developer.godaddy.com/en/docs/references/rest/domains/v2/register-domains) | `domains` legacy/customer-scoped path | +| 68 | [Domains v2 transfers](https://developer.godaddy.com/en/docs/references/rest/domains/v2/transfer-domains) | `domains` | +| 69 | [Domains v3 discovery](https://developer.godaddy.com/en/docs/references/rest/domains/v3/discovery) | `domains` | +| 70 | [Domains v3 management](https://developer.godaddy.com/en/docs/references/rest/domains/v3/domain-management) | `domains` | +| 71 | [Domains v3 detail](https://developer.godaddy.com/en/docs/references/rest/domains/v3/domains) | `domains` | +| 72 | [Domains v3 overview](https://developer.godaddy.com/en/docs/references/rest/domains/v3) | `domains` | +| 73 | [Domains v3 operations](https://developer.godaddy.com/en/docs/references/rest/domains/v3/operations) | `domains` | +| 74 | [Domains v3 records](https://developer.godaddy.com/en/docs/references/rest/domains/v3/records) | `domains` | +| 75 | [Domains v3 quotes](https://developer.godaddy.com/en/docs/references/rest/domains/v3/registration-quotes) | `domains` | +| 76 | [Domains v3 registrations](https://developer.godaddy.com/en/docs/references/rest/domains/v3/registrations) | `domains` | +| 77 | [Domains v1 discovery](https://developer.godaddy.com/en/docs/references/rest/domains/v1/find-domains) | `domains` legacy/account-scoped path | +| 78 | [Domains v1](https://developer.godaddy.com/en/docs/references/rest/domains/v1) | `domains` | +| 79 | [Domains v1 DNS](https://developer.godaddy.com/en/docs/references/rest/domains/v1/manage-dns) | `domains` legacy/account-scoped path | +| 80 | [Domains v1 settings](https://developer.godaddy.com/en/docs/references/rest/domains/v1/manage-domain-settings) | `domains` | +| 81 | [Domains v1 register and renew](https://developer.godaddy.com/en/docs/references/rest/domains/v1/register-and-renew-domains) | `domains` legacy/account-scoped path | +| 82 | [Domains v1 transfers](https://developer.godaddy.com/en/docs/references/rest/domains/v1/transfer-domains) | `domains` | + +## Capability findings + +### Domains + +The public docs are sufficient for a production `domains` skill. Route public +search and availability to the unauthenticated Domains MCP, interactive account +work to `gddy`, and application integrations or CLI gaps to the current REST +contract. Keep registration confirmation, quote expiry, idempotency, DNS +replacement semantics, and asynchronous operation polling in the main skill. + +### Hosting + +The API forms one coherent lifecycle: create an app and poll its job, upload a +zip and poll processing, manage preview or publish secrets, deploy, inspect +status and logs, and roll back. It uses OAuth client credentials and operation- +specific scopes. Author the skill after public client provisioning, +authentication, and concepts guidance is available or explicitly document that +those setup steps remain unsupported. + +### Commerce + +These docs expose only transaction list and get operations. They do not cover +catalog, storefront runtime APIs, checkout-session creation, money-moving +operations, or provider webhooks. Preserve the current `storefront` and +`payments` separation, and revise their references as Commerce documentation is +published rather than treating the current generic API corpus as authoritative. + +### GoDaddy platform apps + +The current public corpus has no dedicated guides for building apps on the +GoDaddy platform. Plan one `platform-apps` skill around the complete app +lifecycle: registration, manifests and configuration, OAuth and scopes, +actions, webhooks and subscriptions, UI extensions, installation and enabling, +releases and deployment, testing and review, upgrades, disabling, and +uninstalling. Local GoDaddy CLI and application materials may inform future +work, but every instruction must be rewritten for the public production +contract before publication. Shopify apps and WordPress plugins are analogies +for the extensibility model, not separate integration targets. + +## Implementation order + +1. Import and correct `gddy` for production-only use. +2. Add the public Domains MCP and implement `domains` with progressive + references for discovery/registration, DNS, and lifecycle management. +3. Implement `godaddy-api` for direct REST integration and shared reliability. +4. Resolve the two broken Hosting guide links, then implement `hosting`. +5. Reconcile Commerce skills with forthcoming public documentation. +6. Obtain and publish the GoDaddy platform-app contract, then implement + `platform-apps` against that public production surface. diff --git a/docs/toolkit-plan.md b/docs/toolkit-plan.md index fa40be4..071280f 100644 --- a/docs/toolkit-plan.md +++ b/docs/toolkit-plan.md @@ -6,8 +6,8 @@ Status: implementation in progress Publish one installable plugin named `godaddy`. It gives agents reusable GoDaddy workflow knowledge through skills and account-specific capabilities -through production MCP servers. Commerce is the first supported domain, with -independent `storefront` and `payments` skills. +through production MCP servers and CLIs. The target capability areas are +Domains, Hosting, Commerce, and GoDaddy platform apps. The repository follows the root-plugin model used by mature AI toolkits: one Git URL, one plugin identity, host-specific entry points, one shared `skills/` @@ -36,6 +36,9 @@ and install product-specific plugins. storage. Generated applications must use their own runtime authentication. 7. **Treat examples as executable evidence.** Examples verify that skill guidance produces complete user journeys. They are not additional plugins. +8. **Keep skills flat.** Host discovery expects immediate children of + `skills/`. Use descriptions and documentation for capability-area grouping, + not nested `skills/domains/...` plugin structures. ## Repository layout @@ -55,6 +58,10 @@ and install product-specific plugins. ├── plugin.json ├── package.json ├── skills/ +│ ├── gddy/ +│ │ ├── SKILL.md +│ │ ├── agents/openai.yaml +│ │ └── references/ │ ├── storefront/ │ │ ├── SKILL.md │ │ ├── agents/openai.yaml @@ -67,6 +74,29 @@ and install product-specific plugins. └── scripts/validate.mjs ``` +## Skill architecture + +Keep tooling and transport skills separate from outcome skills: + +| Skill | Area | Status | Responsibility | +|---|---|---|---| +| `gddy` | Foundation | Implemented | Install, discover, authenticate, and safely operate the production Domains CLI. | +| `godaddy-api` | Foundation | Proposed | Build direct REST integrations with current contracts, auth, pagination, retries, and idempotency. | +| `domains` | Domains | Proposed | Search, register, configure DNS, and manage the domain lifecycle while selecting MCP, CLI, or REST appropriately. | +| `hosting` | Hosting | Proposed | Create Node.js apps, upload source, manage secrets, deploy, inspect logs, and roll back. | +| `storefront` | Commerce | Implemented | Build catalog, product, cart, checkout-handoff, and non-monetary order experiences. | +| `payments` | Commerce | Implemented | Implement checkout sessions, money movement, provider state, webhooks, and transaction reads. | +| `platform-apps` | Platform apps | Documentation gap | Build, register, authenticate, configure, release, install, operate, upgrade, and uninstall apps on the GoDaddy platform. | + +Start Domains as one skill with conditional references for discovery, +registration, DNS, and lifecycle management. Split it only if forward tests +show activation or context problems. Keep GoDaddy platform apps in one lifecycle +skill, with progressive references for OAuth and scopes, actions, webhooks and +subscriptions, UI extensions, releases, installation, and operation. + +See [the page-by-page documentation map](developer-platform-skill-map.md) for +the source audit and ownership of every current developer page. + ## Commerce capability model ### Storefront @@ -112,7 +142,7 @@ For each new capability: - Every manifest uses plugin name `godaddy` and the same base version. - The Codex marketplace installs the repository URL as the root plugin. -- `storefront` and `payments` validate independently. +- `gddy`, `storefront`, and `payments` validate independently. - No private, pre-release, configurable, or credential-bearing connection is present in tracked files. - MCP login, initialization, tool discovery, and representative read calls work @@ -124,10 +154,13 @@ For each new capability: ## Near-term work -1. Complete cross-host installation tests from the Git URL. -2. Run authenticated Commerce MCP smoke tests through the installed plugin. -3. Forward-test both skills on new storefront and checkout implementations. -4. Add scenario evaluations for routing, schema drift, missing scopes, retries, - duplicate submissions, asynchronous payment state, and narrow-screen UI. -5. Establish release ownership, versioning, changelog, license, and support - policy for the broader GoDaddy toolkit. +1. Add the public Domains MCP server and implement the `domains` routing skill. +2. Implement `godaddy-api` from the shared authentication and reliability docs. +3. Implement `hosting` after resolving its missing public concepts and + authentication guides. +4. Incorporate Commerce documentation as it is published and narrow any + guidance that the live contract supersedes. +5. Obtain and publish the GoDaddy platform-app contract before authoring + `platform-apps`; local application materials may inform that work, but the + skill must be rewritten against the public production contract. +6. Complete cross-host installation and forward tests from the Git URL. diff --git a/plugin.json b/plugin.json index 049cffe..e739f61 100644 --- a/plugin.json +++ b/plugin.json @@ -2,7 +2,7 @@ "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json", "name": "godaddy", "version": "0.1.0", - "description": "Build with GoDaddy using agent skills and production MCP capabilities.", + "description": "Build with GoDaddy using domain, Commerce, CLI, and production MCP capabilities.", "author": { "name": "GoDaddy" }, @@ -10,6 +10,9 @@ "repository": "https://github.com/godaddy/commerce-agent-plugin", "keywords": [ "godaddy", + "domains", + "dns", + "cli", "commerce", "storefront", "payments", diff --git a/scripts/validate.mjs b/scripts/validate.mjs index 4e2ff1b..193a79e 100644 --- a/scripts/validate.mjs +++ b/scripts/validate.mjs @@ -10,7 +10,7 @@ const repositoryUrl = "https://github.com/godaddy/commerce-agent-plugin"; const repositoryGitUrl = `${repositoryUrl}.git`; const commerceMcpUrl = "https://mcp.commerce.api.godaddy.com/mcp"; const oauthClientId = "39489dee-4103-4284-9aab-9f2452142bce"; -const requiredSkills = new Set(["payments", "storefront"]); +const requiredSkills = new Set(["gddy", "payments", "storefront"]); const expectedScopes = [ "openid", "profile", @@ -257,7 +257,7 @@ async function validateSkills() { await validateSkill(resolve(skillsRoot, entry.name), entry.name); } for (const required of requiredSkills) { - if (!names.has(required)) fail(`The root plugin must include the ${required} Commerce skill.`); + if (!names.has(required)) fail(`The root plugin must include the ${required} skill.`); } } @@ -319,6 +319,8 @@ async function validatePublicProductionBoundary() { "godaddy.com", "www.godaddy.com", "api.godaddy.com", + "developer.godaddy.com", + "oauth.api.godaddy.com", "checkout.commerce.api.godaddy.com", "mcp.commerce.api.godaddy.com", ]); diff --git a/skills/gddy/SKILL.md b/skills/gddy/SKILL.md new file mode 100644 index 0000000..a208c01 --- /dev/null +++ b/skills/gddy/SKILL.md @@ -0,0 +1,78 @@ +--- +name: gddy +description: Use GoDaddy's `gddy` CLI to search for domains, check availability and pricing, register domains, inspect an account's domains, and manage DNS records. Use when a user asks to run `gddy`, perform GoDaddy domain work from a terminal, parse CLI results, authenticate the CLI, or safely preview and apply DNS changes. Do not use for another registrar, for application source code that should call REST directly, or for GoDaddy Commerce storefront and payment work. +--- + +# GoDaddy CLI + +Operate the production GoDaddy Domains CLI from its current self-documentation. +Treat domain registration as a financial action and DNS replacement or deletion +as potentially destructive. + +## Workflow + +1. Check for an existing installation with `gddy --version`. Do not reinstall + or update a working CLI unless the user asks or the installed command is + incompatible with the requested operation. +2. If installation is needed and authorized, use the official release installer + from `godaddy/cli`, then verify with `gddy --version` and `gddy --help`. +3. Check account state with `gddy auth status`. Run `gddy auth login` only when + authentication is required. Never print, request, or persist an access token + in project files. +4. Discover the installed release before constructing a command. Use + `gddy --help`, `gddy --search `, `gddy tree`, and + `gddy guide [topic]`. Prefer those results over remembered flags. +5. Classify the operation as read-only, state-changing, destructive, or + financial. Read current state before a write when the command supports it. +6. Keep the CLI on its production default. Do not pass a service-origin or + environment override. +7. Execute the narrowest command, inspect its structured result and error code, + then verify changed state with a read command. + +Read [references/cli-routing.md](references/cli-routing.md) for installation, +command discovery, current capability boundaries, and MCP or REST fallback. + +## Domain registration + +Run `gddy guide domain-purchase` and the relevant command help before buying a +domain. Follow the quote-and-execute flow exposed by the installed release. + +Before the command that submits a purchase, show the user the exact domain, +term, total price, currency, required agreements, and registrant context. Obtain +explicit confirmation unless the user already authorized those exact details. +Do not reuse an expired quote or silently substitute another domain or term. + +Domain purchase charges the account and is not reversible. If the response is +ambiguous or the request times out, inspect current domain or operation state +before retrying. Read +[references/reliability.md](references/reliability.md). + +## DNS changes + +List the relevant records before changing them. Use `gddy dns add` to append a +record; use `gddy dns set` only when replacing every record with the matching +type and name is intended; use `gddy dns delete` only when removing every match +is intended. + +Run `set` and `delete` with `--dry-run` first and present the preview before +applying it unless the user already provided exact authorization. Never try to +modify GoDaddy-managed `NS` or `SOA` records. After a successful write, list the +affected type and name again. Do not treat resolver propagation as immediate. + +## Completion report + +State the CLI version, authenticated account context without exposing secrets, +commands or workflows used, state verified after writes, and any operation that +remains pending or requires the user's browser or billing action. + +## Rules + +- Do not confuse `gddy` with the older `godaddy` executable. +- Do not invent a command or flag when CLI discovery is available. +- Do not expose credentials in arguments, logs, generated code, or commits. +- Do not claim a domain purchase succeeded without verifying account or + operation state. +- Do not retry registration, DNS append, or another non-idempotent action + without checking state and preserving its idempotency mechanism. +- Do not send payment-card data through the CLI. `gddy payment-methods add` + only opens the account workflow in a browser. diff --git a/skills/gddy/agents/openai.yaml b/skills/gddy/agents/openai.yaml new file mode 100644 index 0000000..bd6c517 --- /dev/null +++ b/skills/gddy/agents/openai.yaml @@ -0,0 +1,4 @@ +interface: + display_name: "GoDaddy CLI" + short_description: "Operate GoDaddy domains safely with gddy" + default_prompt: "Use $gddy to manage my GoDaddy domains safely with the CLI." diff --git a/skills/gddy/references/cli-routing.md b/skills/gddy/references/cli-routing.md new file mode 100644 index 0000000..efee4d8 --- /dev/null +++ b/skills/gddy/references/cli-routing.md @@ -0,0 +1,73 @@ +# CLI routing + +Use this reference for setup, capability selection, and command discovery. + +## Install + +Use an official release installer only when installation or update is in scope. + +macOS, Linux, Git Bash, MSYS2, or Cygwin: + +```bash +curl -fsSL https://github.com/godaddy/cli/releases/latest/download/install.sh | bash +``` + +Windows PowerShell: + +```powershell +irm https://github.com/godaddy/cli/releases/latest/download/install.ps1 | iex +``` + +Verify with `gddy --version` and `gddy --help`. Authenticate through +`gddy auth login`; inspect state with `gddy auth status`. + +## Discover the current command + +The beta CLI evolves quickly. Use: + +```bash +gddy --help +gddy --search +gddy tree +gddy guide +gddy guide domain-purchase +``` + +Run group or command-specific `--help` before relying on an example below. + +## Documented capability families + +- Authentication: `gddy auth login`, `gddy auth status` +- Search: `gddy domain available`, `gddy domain suggest` +- Purchase preparation: `gddy domain quote`, `gddy domain agreements`, + `gddy domain contacts init` +- Purchase: `gddy domain purchase` +- Account inventory: `gddy domain list`, `gddy domain get` +- DNS: `gddy dns list`, `gddy dns add`, `gddy dns set`, `gddy dns delete` +- Billing readiness: `gddy payment-methods add` + +Forwarding, lock, renewal, transfer, and contact-update support can differ by +release. Discover before use; if absent, use the current public REST contract +rather than inventing a CLI form. + +## Choose the surface + +| Need | Preferred surface | +|---|---| +| Public domain suggestions or availability with no account | GoDaddy Domains MCP | +| Interactive account-aware domain or DNS work | `gddy` | +| Application code, CI, or an operation absent from `gddy` | Domains REST API | +| Storefront catalog, orders, or checkout readiness | Commerce MCP and the storefront skill | +| Charges, captures, refunds, or payment-provider state | Payments skill and an approved provider contract | + +The public Domains MCP server is read-only and uses +`https://api.godaddy.com/v1/domains/mcp`. It cannot purchase domains or modify +DNS. For REST integration, fetch the current contracts instead of copying +remembered schemas: + +- `https://developer.godaddy.com/openapi/domains-v3.json` for discovery, + quote-and-register, operations, records, and nameservers +- `https://developer.godaddy.com/openapi/domains-v1.json` for account-scoped + operations that are not available in v3 +- `https://developer.godaddy.com/openapi/domains-v2.json` for customer-scoped + actions, notifications, forwarding, and transfers diff --git a/skills/gddy/references/reliability.md b/skills/gddy/references/reliability.md new file mode 100644 index 0000000..b977d1a --- /dev/null +++ b/skills/gddy/references/reliability.md @@ -0,0 +1,48 @@ +# Reliability and recovery + +Use the current CLI output and API error `code` as the stable failure signal. +Do not branch on message text alone. Validation failures can include a `fields` +array identifying the rejected path. + +## Retry rules + +| Operation | Recovery | +|---|---| +| Read | Retry transient failures with bounded backoff. | +| Registration | Preserve the logical attempt and idempotency key; inspect domain or operation state before retrying an ambiguous result. | +| DNS add | Read matching records before retrying because append can create a duplicate. | +| DNS set | Re-read the complete matching record set, then repeat only if replacement is still required. | +| DNS delete | Re-read matching records; a missing record can already represent the intended result. | + +Treat `202 Accepted` and other pending results as asynchronous. Poll the +operation or resource identified by the current contract until it reaches a +documented terminal state, with a bounded interval and timeout. + +## Common status handling + +- `400`: fix request shape; do not retry unchanged. +- `401`: authenticate again; do not loop the request. +- `403`: inspect the error code for missing scope or account eligibility. +- `404`: verify the account, domain, and identifier. +- `409`: read current state and resolve the conflict. +- `422`: inspect the business-rule code and validation fields. +- `429`: honor `Retry-After` or rate-limit reset headers and add jitter. +- `5xx`: retry only operations known to be safe; inspect state first for writes. + +## Registration failures + +- If a domain is no longer available, re-run availability and offer alternatives. +- If a quote expired or no longer matches, obtain a new quote and ask the user + to confirm its price and terms. +- If agreements differ, use the exact agreement keys returned by the current + quote or agreement lookup. +- If billing is not ready, direct the user to `gddy payment-methods add`; never + request card details in the terminal or chat. +- If contact data is incomplete, help the user initialize and complete the + contact template without exposing personal data in logs or commits. + +## Rate limits + +Treat response headers as authoritative. Prefer bulk endpoints where supported, +paginate sequentially, cache slow-changing reads, and avoid parallel request +bursts. Never work around a service limit by rotating credentials.