@shipstatic/ship 2.3.1-beta.2 → 2.3.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/SKILL.md CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  name: ship
3
3
  description: "Deploy static websites to ShipStatic. Use when the user wants to deploy a site, publish a website, upload to hosting, go live, set up a custom domain, manage deployments, or share a site URL. No account required — instant deployment. CLI (`ship`) and Node.js/browser SDK."
4
- compatibility: "Node.js >= 20. Run via npx (no install) or install globally: npm install -g @shipstatic/ship"
4
+ compatibility: "Node.js >= 20.19. Run via npx (no install) or install globally: npm install -g @shipstatic/ship"
5
5
  metadata:
6
6
  openclaw:
7
7
  requires:
@@ -203,6 +203,8 @@ ship domains set www.example.com <dep> --json
203
203
  }
204
204
  ```
205
205
 
206
+ Always show the user the records **from this response**, never values copied out of this document — they come from the platform and can change.
207
+
206
208
  ```bash
207
209
  ship domains records www.example.com --json
208
210
  ```
@@ -212,7 +214,7 @@ ship domains records www.example.com --json
212
214
  "domain": "www.example.com",
213
215
  "apex": "example.com",
214
216
  "records": [
215
- {"type": "A", "name": "@", "value": "76.76.21.21"},
217
+ {"type": "A", "name": "@", "value": "15.204.149.253"},
216
218
  {"type": "CNAME", "name": "www", "value": "cname.shipstatic.com"}
217
219
  ]
218
220
  }
@@ -311,16 +313,34 @@ ship tokens delete <token> # Delete (revokes immediately)
311
313
 
312
314
  ## Errors
313
315
 
314
- | Message | Cause | Fix |
315
- |---------|-------|-----|
316
- | `too many requests` | Rate limited | Wait, or set an API key |
317
- | `authentication failed` | Bad credentials | Check key/token |
318
- | `not found` | No such resource | Verify the ID/name |
319
- | `path does not exist` | Bad deploy path | Check file/directory |
320
- | `invalid domain name` | Not a subdomain | Use `www.example.com`, not `example.com` |
321
- | `--ttl sets an expiry, which needs a token` | `--ttl` without credentials | Set an API key, or drop `--ttl` |
322
- | `--ttl and --domain cannot be combined` | Both flags given | A domain cannot point at an expiring deployment — pick one |
323
- | `<resource> limit reached` | Plan caps hit (deployments, domains) | Suggest upgrading the plan; do not retry |
324
- | `Account has been deleted` / `Account terminated` | Account is gone | Stop; the account cannot deploy |
325
- | `DNS information is only available for external domains` | DNS op on internal domain | Only custom domains need DNS |
326
- | `DNS verification already requested recently` | Rate limited | Wait |
316
+ Exit code is non-zero on failure, and with `--json` the error goes to **stderr** as the platform's wire shape:
317
+
318
+ ```json
319
+ {
320
+ "error": "validation_failed",
321
+ "message": "File \"index.html\" too large. Maximum 20 MB allowed.",
322
+ "status": 400
323
+ }
324
+ ```
325
+
326
+ **Branch on `error` and `status`, never on `message`.** Messages are written for the human reading them and get reworded; the type tag and the status are the contract.
327
+
328
+ | `error` | `status` | Means | Do |
329
+ |---------|----------|-------|----|
330
+ | `validation_failed` | 400 | Bad input — path, domain name, label, password, ttl | Read `message`, fix the input, retry |
331
+ | `authentication_failed` | 401 | Missing or bad credential | Check `SHIP_TOKEN`; do not retry unchanged |
332
+ | `forbidden` | 403 | Plan cap reached, account terminated, or an action this credential may never take | **Do not retry.** Suggest upgrading if it is a cap |
333
+ | `not_found` | 404 | No such deployment or domain | Verify the identifier |
334
+ | `rate_limit_exceeded` | 429 | Too many requests | Wait — `details.expires` is when it clears. An API key raises the limit |
335
+ | `business_logic_error` | 400 or 422 | Valid request, refused by a state rule (e.g. unlinking a domain, suspended account) | Read `message`; the rule will not change on retry |
336
+ | `maintenance` | 503 | Platform closed on purpose | `message` says when it reopens. Wait; do not retry in a loop |
337
+
338
+ Common cases worth recognising before they happen:
339
+
340
+ | Situation | What you get |
341
+ |-----------|--------------|
342
+ | Deploying a project root (`package.json`, `node_modules`) | `validation_failed` — build first, deploy the output |
343
+ | `--ttl` or `--domain` with no credential | `validation_failed`, refused **before** anything uploads |
344
+ | `--ttl` together with `--domain` | `validation_failed` — a domain must not point at something expiring |
345
+ | DNS commands on an internal `*.shipstatic.com` domain | `validation_failed` — only custom domains have DNS |
346
+ | `domains verify` called again too soon | `rate_limit_exceeded` — verification is already queued |
@@ -5,7 +5,7 @@ Their copyright notices travel with that copy, and are reproduced here in
5
5
  full. This file is GENERATED from the build's own metafile — edit the
6
6
  bundle, not this list.
7
7
 
8
- ## @shipstatic/types 2.9.0-beta.2
8
+ ## @shipstatic/types 2.9.0
9
9
 
10
10
  License: MIT
11
11