How this skill is triggered — by the user, by Claude, or both
Slash command
/host-html:hosthtml-publishThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
When the user runs `/host-html`, follow these steps:
When the user runs /host-html, follow these steps:
Look for HTML content to publish. Check in this order:
/host-html index.html), read that file.html file in the current project, use thatRead the full contents of the HTML file. The content must be:
Make a POST request to the host-html publish API. The endpoint requires the public Supabase anon JWT in both the Authorization and apikey headers — this key is designed to be embedded in client code and is safe to ship in this skill:
ANON_KEY="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6InN1aWZnc3Z0Y2JyYXd6ZGh5dWhrIiwicm9sZSI6ImFub24iLCJpYXQiOjE3Nzk0MjM2MTQsImV4cCI6MjA5NDk5OTYxNH0.wWploAOhZ0BjCbOoMWe8g11Qx-ZE3_Kj20h0kM8My1M"
curl -s -X POST "https://suifgsvtcbrawzdhyuhk.supabase.co/functions/v1/publish" \
-H "Authorization: Bearer $ANON_KEY" \
-H "apikey: $ANON_KEY" \
-H "Content-Type: application/json" \
-d "{\"html\": \"<FULL_HTML_CONTENT>\", \"title\": \"<OPTIONAL_TITLE>\"}"
Request body:
html (required): The full HTML content as a string. Escape any quotes/special chars for JSON.title (optional): A human-readable title for the page.slug (optional): A custom URL path matching ^[a-z0-9-]{2,64}$ (lowercase alphanumerics and hyphens; leading/trailing/consecutive hyphens are accepted by the API).The API silently drops unknown fields — don't pass options that aren't listed above and expect them to take effect.
Response (201 Created):
{
"url": "https://host-html.com/p/abc123",
"slug": "abc123",
"edit_token": "...",
"page_id": "...",
"expires_at": "2026-03-13T..."
}
The url field is the canonical public link — use it as-is. Don't rewrite or substitute the host.
Show the user:
url from the response — this is the public link to their page, use it verbatimexpires_at and present it human-readably. Don't hardcode a duration like "7 days" — the API decides when the page expires and that may change.edit_token — it's needed to update the page laterFormat the output clearly:
Published!
URL: https://host-html.com/p/abc123
Expires: March 13, 2026 (from expires_at)
Edit token: (saved locally)
html is non-empty and under 1MB, and that any slug matches ^[a-z0-9-]{2,64}$UNAUTHORIZED_NO_AUTH_HEADER or UNAUTHORIZED_INVALID_JWT_FORMAT): The Authorization: Bearer <ANON_KEY> and apikey: <ANON_KEY> headers are missing or malformed — re-send the request with both headers set to the anon JWT abovetitle, derive it from the HTML <title> tag if present, or the filenameProvides UI/UX resources: 50+ styles, color palettes, font pairings, guidelines, charts for web/mobile across React, Next.js, Vue, Svelte, Tailwind, React Native, Flutter. Aids planning, building, reviewing interfaces.
Fetches up-to-date documentation from Context7 for libraries and frameworks like React, Next.js, Prisma. Use for setup questions, API references, and code examples.
npx claudepluginhub phanosh/host-html --plugin host-html