Docs

Docs

Everything you need to add Skate to your app. Early access: some parts are still coming, and this page says which.

Install

Sign up, add your site, and copy your line from the dashboard (Settings › Sites). Paste it before </head> in the layout every page uses, then deploy:

index.html
<script
  src="https://cdn.useskate.com/skate.js"
  data-site="s_…" async></script>

It never blocks your page and runs once, even if the line is there twice. If your site sends a Content-Security-Policy, add script-src https://cdn.useskate.com and connect-src https://api.useskate.com.

Full install guide: Next.js, Nuxt, React, Rails, Tag Manager, WordPress and other stacks, how to check it, and what each [Skate] console line means. To try Skate before you install anything, use the extension.

For your own tools: the MCP guide connects Claude, Cursor or ChatGPT to Skate, and the API guide covers /v1/ask and /v1/items.

From your app’s own code: identify your users, listen to Skate’s events, give Skate your own actions, and let AI agents use your walkthroughs.

Identify your users

Optional. Call Skate.identify() after your own sign-in, and the dashboard shows who asked. Off until you turn it on in the dashboard.

Skate.identify({
  id: user.id,          // required, your own user id
  email: user.email,    // optional
  name: user.name,      // optional
  roles: ['admin'],     // optional
  traits: { plan: 'pro' } // optional
});
Skate.identify(null);   // on sign-out
  • Email and name are kept only as a hash by default, with a different key per site.
  • Identity is never sent to the AI model. It is for your dashboard only.
  • Turn on “Require a signed id” to have your server sign the id (HMAC-SHA256), so a visitor cannot claim to be someone else.
  • If your code runs before the widget loads, push to window.SkateQueue: SkateQueue.push(['identify', { id }]).

What it can do

  • Do a task in your app: click, fill, navigate, save.
  • Answer a question from what the app shows.
  • Act as the signed-in user, with that user’s permissions.
  • Say done only when the page shows the result.
  • The user can take over at any moment.

Not yet: online stores and payments. Payment details are never asked for in chat. See the use cases for what passes today.

Approvals

Skate asks before it deletes, sends, publishes, or changes who has access. The card says what will happen, from what is on the page.

An approval covers that one action only. Typed confirmations, like “type DELETE”, are left to the person.

What data Skate keeps

  • Sent: the request, the visible controls and text of the screen, and path and status of same-origin requests.
  • Never sent: password, card and one-time-code fields, cookies, request headers and bodies.
  • Mark any element data-private to keep it out.
  • Visitor requests and session logs are deleted after 90 days.

Dashboard

  • Every request in the user’s own words, and how it ended: done, partial, not confirmed, or could not do.
  • An inbox of what users needed and did not get, with whether the app or Skate was the cause.
  • A weekly report, and a session log for each conversation.
  • Spend caps per site and per visitor.

Security

The script holds no secrets; model keys stay on our server, and only origins you register can call the service. Full detail on the security page and in what the script can see, send and keep.

API and MCP

Coming, not live yet: an MCP server so you can ask Claude, Cursor or ChatGPT about your site’s usage and inbox, with API keys per account; and a REST API. This page will show the setup when they ship. Until then, everything is in the dashboard.

Turn it off

Remove the script tag. Skate is gone on the next page load.

Or switch the site off in the dashboard. The service then refuses every call from it.