diff --git a/SKILL.md b/SKILL.md index ad9755c9..811bf6d3 100644 --- a/SKILL.md +++ b/SKILL.md @@ -109,7 +109,14 @@ Upload a blob (any size, up to 5 TiB) to project storage via direct-to-S3 presig - `immutable` (optional, default: `false`) — If true with `sha256`, also produces a content-addressed URL that gets `Cache-Control: immutable`. - `sha256` (optional) — Required when `immutable: true`. Client-asserted hash; gateway verifies if S3 returns one. -**Returns:** `{ key, size_bytes, sha256, url, immutable_url? }`. `url` is the CDN URL (on `pr-.run402.com`); `immutable_url` is the content-addressed variant when applicable. +**Returns:** an `AssetRef`: `{ key, size_bytes, sha256, visibility, url, immutable_url, size, contentSha256, contentType, immutableUrl, etag, sri, contentDigest, cacheKind, cdn: { version, invalidationId, invalidationStatus, ready, hint } }`. The legacy snake_case fields (`size_bytes`, `sha256`, `immutable_url`) are kept for back-compat; the camelCase fields are the v1.45 agent-DX surface. + +**Prefer `immutableUrl` in generated HTML/CSS/JS code.** Reasoning: +- Read-after-write correctness: the immutable URL is bound to the SHA at upload time and was never previously cached. The mutable `url` is "eventually fresh" — invalidation is asynchronous, so a `