Author a skill
One skill is one directory with a SKILL.md at its root. The file opens with a YAML manifest and continues with the instructions your skill gives an AI coding agent.
The SKILL.md
---
name: acme-education-issuer
description: Issue education credentials with the ACME wallet over OpenID4VCI.
version: 1.0.0
license: Apache-2.0
metadata:
provider: ACME Wallets
protocols: OpenID4VCI
targets:
openapi: openapi/issuer.yaml
depends_on:
schemas:
- schemas/learner-credential.json
---
# ACME education issuer
Use this skill when the user wants to issue education credentials
with the ACME wallet. Read openapi/issuer.yaml for the API surface,
follow rulebooks/issuance.md for the policy rules, and validate
credential payloads against schemas/learner-credential.json.
Manifest fields
| Field | Required | Rules |
|---|---|---|
name | Yes | The skill’s slug and identity: lowercase letters, digits, and hyphens, 3-64 characters. Unique across the marketplace. |
description | Yes | One or two sentences; shown in the catalog and read by agents. |
license | Yes | An SPDX identifier such as Apache-2.0. |
metadata.provider | Yes | Your organisation’s name. |
version | Recommended | Your own version label; the marketplace also pins every submission to a commit. |
targets, depends_on | Optional | Paths to the OpenAPI spec, schemas, and rulebooks the skill relies on. Every path must resolve inside the skill directory. |
The instruction body
Everything after the closing --- is what the agent reads. Write it for the agent: when to use the skill, which files to read, which endpoints to call, what to validate. The automated checks require at least 80 characters of instructions - real skills carry far more.
Reference files
openapi/- OpenAPI 3.x documents (.yamlor.json). Each file must parse and declareopenapi: 3.x.schemas/- JSON schema files; each must be valid JSON.rulebooks/- policy rules in markdown, separable from code.references/- anything else the agent should be able to consult.
Keep a skill self-contained: every path in depends_on and targets must exist inside the skill’s own directory, because each skill is checked, reviewed, and installed as one unit.