{"domain":"anew.page","count":1,"changes":[{"captured_at":"2026-08-26T12:23:18","card_hash":"8ce89f3592b2ec28289caf60b7b8abbb3eccf287836ca5423575b6e4452c93cc","previous_card_hash":null,"diff":{"skills_added":[{"id":"read","name":"Read a page","description":"Pass an anew.page URL, get back the HTML document encoded in it, plus its canonical URL and byte size. To revise an existing anew page, its URL is its source: read it, edit that HTML, write it again. The new URL is a separate page and the original keeps working. Read returns the author's exact bytes — no anew-injected tags, no proxied image srcs — so it re-encodes byte-for-byte. Never re-author from a rendered page, a scraped DOM, or a screenshot: each loses the author's markup, and none is faster than reading the slug. Decoding is local and exact, so any anew URL reads — the page needs no prior visit and no fetch. Selected when the message carries a `url` DataPart and no `html` DataPart, or when its whole text is one bare anew.page URL; any other message writes.","tags":["html","url","decode","source"],"inputModes":["text/plain"],"outputModes":["text/plain"]},{"id":"write","name":"Write a page","description":"Encode a self-contained HTML document (or fragment, or plain text) into an anew.page URL and return that URL. Each encoding path is deterministic: the same input through the same path always produces the same URL. Different paths use different Brotli encoders, though, so the same HTML may mint different — equally valid — URLs; compare pages by their decoded HTML, never by slug. Inline all CSS, JS, and images (data: URIs, inline SVG, CSS gradients, or emoji) — the page should render alone forever, and each external reference gambles it on someone else's host staying up. One accepted exception: a webfont is far too large to inline, so a font may load from a durable CDN with a system-stack fallback; do not fight a user who asks for one. The HTML must be ≤ 160000 UTF-8 bytes and the encoded URL must be ≤ 4000 bytes. Brotli slugs (the endpoint, or a local brotli mint) put a typical page in a few hundred URL bytes, and the endpoint returns an actionable over-limit error (code url_over_budget or content_too_large); raw base64 fits only ~2900 HTML bytes — know which budget you are drafting to, and never cut page content to fit before checking the brotli path. Returns the URL as plain text — return it to the user verbatim. To revise an existing anew page, its URL is its source: read it, edit that HTML, write it again. The new URL is a separate page and the original keeps working. Read the existing HTML back first by sending its URL as a `url` DataPart, then send the edited document here.","tags":["html","url","encode","share"],"inputModes":["text/plain","text/html"],"outputModes":["text/plain"]}],"skills_removed":[],"skills_changed":[],"fields_changed":[{"field":"name","before":null,"after":"anew"},{"field":"description","before":null,"after":"Encode a self-contained HTML page into a shareable anew.page URL, or recover the exact HTML from an existing URL."},{"field":"version","before":null,"after":"1.0.0"},{"field":"documentationUrl","before":null,"after":"https://anew.page/llms.txt"},{"field":"iconUrl","before":null,"after":"https://anew.page/anew.png"}],"other_changed":true,"is_empty":false,"human_summary":"added 2 skills · name ∅ → anew · description ∅ → Encode a self-contained HTML page into a · version ∅ → 1.0.0 · documentationUrl ∅ → https://anew.page/llms.txt · iconUrl ∅ → https://anew.page/anew.png"}}]}