ITU

KnowledgebaseFor providersAuthor a skill

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

FieldRequiredRules
nameYesThe skill’s slug and identity: lowercase letters, digits, and hyphens, 3-64 characters. Unique across the marketplace.
descriptionYesOne or two sentences; shown in the catalog and read by agents.
licenseYesAn SPDX identifier such as Apache-2.0.
metadata.providerYesYour organisation’s name.
versionRecommendedYour own version label; the marketplace also pins every submission to a commit.
targets, depends_onOptionalPaths 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 (.yaml or .json). Each file must parse and declare openapi: 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.