---
name: schaffa-html
description: Use when the user asks to communicate through an HTML document, or if they mention "HTML" with no additional context.
---

# Schaffa HTML

Use this skill for a readable plan, spec, write-up, findings, summary, report, comparison, or set of UI mocks. Do not use it for HTML that ships as part of a product.

Create one complete, self-contained HTML file capped at 512 KB.

- Write it like a spec, not a landing page: dense, scannable, and without hero copy or decorative chrome.
- Make it mobile-readable with a responsive viewport and no fixed-width layout.
- Use semantic HTML, inline CSS, inline SVG, and data-URL images.
- For UI mocks, render real styled variants, label them A, B, C, and so on, and arrange them for direct comparison.
- Do not include scripts, forms, frames, event handlers, JavaScript URLs, meta refresh, external stylesheets, or external assets.
- Never include secrets, private URLs, or local filesystem paths.

Publish the finished file directly to Schaffa:

```sh
curl --fail-with-body --silent --show-error \
  -F "html=@<html-file>;type=text/html" \
  "https://schaffa.dev/api/pages"
```

Add `-H "Authorization: Bearer $SCHAFFA_TOKEN"` for a permanent page. Without it, the page expires after one hour. Keep one local file across revisions; for a permanent page, upload later versions with `PUT /api/pages/<slug>` so its public URL stays stable.

Read `publicUrl` from the JSON response and return it with the local path. Never claim the document is hosted before the upload succeeds, and do not verify it in a browser unless the user asks.
