Skill: Create Site
Create a new website from HTML, CSS, and JavaScript content — uploads files to Supabase storage, registers the site, and returns a public URL.
The Create Site skill builds a new website from raw HTML, CSS, and JavaScript provided by the agent. It uploads all files to Supabase storage, registers the site in the Horizon database, and returns a publicly accessible URL the user can visit immediately.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
html | string | Yes | The HTML content for the site’s index.html file. Must be a complete HTML document including <!DOCTYPE html> and a root <html> element. |
css | string | No | CSS content for the site’s styles.css file. If omitted, the site will have no external stylesheet. Inline <style> tags in the HTML are still permitted. |
js | string | No | JavaScript content for the site’s script.js file. If omitted, the site will have no external script file. Inline <script> tags in the HTML are still permitted. |
site_name | string | Yes | A human-readable name for the site. Used in the Horizon dashboard and in the site’s metadata. Must be unique per user. |
Agents typically generate the HTML with <link> and <script> tags already referencing styles.css and script.js. When CSS or JS parameters are provided, the uploaded files will be co-located with index.html in storage, so relative paths work out of the box.
Example usage
A user might trigger this skill by saying:
“Build me a landing page for my coffee shop called Bean & Brew. It should have a hero section, a menu section, and a contact form. Use a warm color palette.”
The agent would generate the HTML, CSS, and JS, then invoke this skill with:
site_name:Bean & Brew Landing Pagehtml: (complete HTML document with hero, menu, and contact sections)css: (stylesheet with warm color palette, typography, and layout rules)js: (form validation and any interactive behavior)
The skill returns the public URL, which the agent shares with the user as a clickable link.
Response structure
The skill returns a JSON object containing:
site_id— a unique identifier for the site, used for subsequent updates and management.url— the public URL where the site is hosted and immediately accessible.name— the site name as registered in the database.created_at— ISO 8601 timestamp of when the site was created.
{
"site_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"url": "https://sites.horizon.app/a1b2c3d4/index.html",
"name": "Bean & Brew Landing Page",
"created_at": "2026-03-18T14:30:00Z"
}Behavior notes
- File size limits — each file (HTML, CSS, JS) is limited to 1 MB. Sites exceeding this limit will return a validation error.
- Name uniqueness —
site_namemust be unique for the calling user. Attempting to create a site with a duplicate name returns an error. Use Update Site to modify an existing site instead. - No server-side execution — sites are statically hosted. JavaScript runs in the visitor’s browser but there is no server-side processing.
- Automatic asset linking — the skill places
index.html,styles.css, andscript.jsin the same storage directory, so relative paths between them work without configuration.
The html parameter must contain a valid, complete HTML document. Fragments or partial HTML (e.g., just a <div>) will be rejected by the validation step.
Related skills: Update Site | List Sites | Retrieve Site