Skip to content
Skylark Skills
Submit a skill

Publish for your own site

You do not need us. Serve two files from your own domain and every agent that speaks the standard — Skylark included — can read them directly. We mirror what you publish so people can find it, and verify your domain automatically because only you can serve from it.

Why bother? The alternative is an agent guessing its way through your UI from a screenshot. A skill is you telling it how your site actually works — which of your flows are safe to automate, where it must stop and ask, and what your buttons are called this week.

1. The discovery index

Serve this at /.well-known/agent-skills/index.json. It is fetched before your page renders, so an agent knows what you offer without executing anything.

{
  "$schema": "https://schemas.agentskills.io/discovery/0.2.0/schema.json",
  "skills": [
    {
      "name": "cancel-subscription",
      "type": "skill-md",
      "description": "Cancels a recurring subscription. Drives the cancel flow and stops at the final confirm.",
      "url": "/.well-known/agent-skills/cancel-subscription/SKILL.md",
      "digest": "sha256:d13d4ad61efcb1fc37bedc9d675a62caa0ea5046757146e9157ef8ce3a31a974",

      "runtime": "browser",
      "permissions": ["page:read", "page:act", "navigate"],
      "scope": ["https://billing.acme.example/account/subscriptions/*"],
      "triggers": [
        { "kind": "url_pattern", "pattern": "https://billing.acme.example/account/subscriptions/*" },
        { "kind": "intent", "description": "cancel my subscription" }
      ]
    }
  ]
}

The four fields after the blank line are Skylark extensions. The standard requires clients to ignore fields they do not recognise, so they are safe to include — andruntime is the important one: it defaults to repo, meaning a coding agent, so a browser will ignore your skill unless you saybrowser.

2. The skill itself

Markdown with YAML frontmatter, in the open Agent Skills format. Plain procedural English — the same thing you would write for a new colleague.

---
name: cancel-subscription
description: >-
  Cancels a recurring subscription on Acme Billing. Drives the cancel
  flow and stops at the final confirm, handing the consequential last
  click back to the user.
runtime: browser
permissions:
  - page:read
  - page:act
  - navigate
scope:
  - https://billing.acme.example/account/subscriptions/*
version: 1.0.0
---

# Cancel subscription

## Before you start

1. Call `read_page` and confirm you are on a subscriptions page.

## Drive the cancel flow

2. Click the subscription's **Manage** control. Use the interactive-element
   `ref` from the snapshot — never a hand-written CSS selector.

## Confirm with the user

3. Summarise what will be cancelled and the effective date, then wait for an
   explicit yes before the final click.

3. Write instructions, not selectors

The agent reads your page as an accessibility tree and addresses controls by a stable reference, not a CSS selector. So describe the control — “the Manage button on the subscription row” — rather than .sub-row > .btn-2. Your class names change; your labels mostly do not.

Say where to stop. If a step is consequential — a payment, a cancellation, a deletion — write that the agent must summarise and wait for the user. Skylark enforces a confirmation there anyway, but a skill that expects it produces a much better handover.

4. Ask for the least you need

A skill that only explains a page should declare no permissions at all. Skills published by a site are capped at reading the page, acting on it, and navigating — the things your site can already do to itself. Reading raw network traffic or running JavaScript in the page is not available to site-published skills, by design.

5. Digests

The digest is the SHA-256 of your SKILL.md bytes. Clients verify it before use and skip re-downloading when it has not changed, so update it whenever you edit the file.

shasum -a 256 SKILL.md

Then tell us

Submit the URL and we will fetch it, confirm it is served from your domain, and list it here with a verified badge. The copy on your domain stays authoritative — this is a mirror for discovery.