Publish for your own site
You do not need us for this. Serve two files from your own domain and any agent that speaks the standard, Skylark included, can read them directly. We mirror what you publish so people can find it, and we verify your domain automatically, because only you can serve from it.
Why bother? The alternative is an agent guessing its way through your interface from a screenshot. A skill is you telling it how the site actually works: which flows are safe to automate, where it has to stop and ask, and what your buttons happen to be 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 or a cancellation or a deletion, write that the agent must summarise and wait for the user. Skylark enforces a confirmation there anyway, but a skill that expects the pause hands over much more gracefully than one the guardrail interrupts.
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, which are 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.mdWhat we publish
We do this ourselves, at the same path, in the same format. These are live now at/.well-known/agent-skills/index.json, digests and all. It is a correctness check as much as a demonstration: a directory that tells you to publish skills and does not publish its own cannot notice when its advice stops working.
Between them they use every permission in the vocabulary, so the list doubles as a worked example of what each one is for. Start with ping if you are testing a client.
ping
Read the sourceConfirms an agent can reach the Skylark skills directory and read what it publishes. Use it as a first check when web skills are not loading, or to verify a new browser build discovers and activates a site skill at all.
- Read the page
explain-a-skill
Read the sourceReads a skill page in the Skylark directory and explains in plain language what the skill does, what it is allowed to do, and how far the verified badge actually goes. Knowledge only: it reads and explains, it never acts.
- Knowledge only
find-skills-for-site
Read the sourceLooks up which agent skills exist for a given website using the Skylark directory. Use it when the user asks what can be automated on a site, or when you are about to work on an unfamiliar site and want to know whether someone has already written down how it works.
- Read the page
- Navigate
search-the-directory
Read the sourceSearches the Skylark directory by describing a task rather than a hostname, and reports what each result is allowed to do. Use it when the user knows what they want done but not which site or skill does it.
- Read the page
- Act on the page
submit-a-skill
Read the sourceFills the Skylark skill submission form from a SKILL.md the user already has, and stops before submitting so they can check it. Use it when the user wants to contribute a skill they have written.
- Read the page
- Act on the page
- Navigate
compare-skills
Read the sourceOpens two or more skills from the Skylark directory side by side and compares what each is allowed to do, where it may act, and who stands behind it. Use it when several skills cover the same job and the user has to pick one.
- Read the page
- Navigate
- See your tabs
check-your-published-index
Read the sourceChecks a site's own /.well-known/agent-skills/index.json against the Agent Skills Discovery format and reports what would stop a browser using it. Use it when someone has published skills on their own domain and wants to know whether agents can actually see them.
- Read the page
- Navigate
- Read network traffic
verify-artifact-digest
Read the sourceIndependently checks that the bytes the directory serves for a skill match the SHA-256 digest it advertises. Use it when integrity matters, when a browser has refused a skill, or when you want to confirm the directory has not quietly changed a published artifact.
- Read the page
- Read network traffic
- Run JavaScript
simulate-discovery-failure
Read the sourceBlocks this directory's own discovery request so a browser or agent developer can watch what happens when a site's skills cannot be fetched. Use it when building a client and you need to test the failure path deliberately rather than waiting for it.
- Read the page
- Intercept network traffic
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, and this is a mirror for discovery.