Agent Skill
Agent skills are versioned zip archives containing structured instructions that teach AI agents how to perform tasks — not executables. Each skill is published as a regular event carrying a content hash, optional download URL, and metadata; newer events supersede older ones by timestamp, making created_at the version identifier.
Agent Skill (kind:5216)
A regular event representing one version of a skill. The zip archive MUST contain a SKILL.md at its root following the [Agent Skills specification](https://agentskills.io/specification).
Newer events supersede older ones by timestamp, making created_at the version identifier.
Required Tags
| Tag | Description |
|-----|-------------|
| i | Canonical skill identifier. Lowercase hyphenated slug, unique per publisher (e.g. pdf-processing). Clients SHOULD treat non-slug legacy IDs as legacy and prefer slugs for new publishes. |
| x | SHA-256 hex hash of the zip archive. MUST be verified after download. |
Optional Tags
| Tag | Description |
|-----|-------------|
| name | Human-readable skill name from SKILL.md frontmatter or provided by the publisher. When absent, clients SHOULD fall back to displaying i. |
| url | Download URL for the zip archive. A "Blossom" endpoint is recommended. When absent, clients SHOULD resolve via x on a Blossom server. |
| r | Source repository: git-cloneable URL or addressable git repo reference. Optional second element for subdirectory path. Repeat for multiple sources. MAY be omitted if the skill has no public source. |
| price | Amount and currency (e.g. ["price", "1000", "sat"]). Default currency is sat. When absent or "0", the skill is free. |
| license | SPDX license identifier. When absent, the skill is public domain. |
| compatibility | Environment requirements (e.g. "Requires git, docker"). |
| allowed-tools | Space-delimited list of pre-approved tools the skill may invoke. |
| t | Category tag. Repeat for each. |
Content
A description of what the skill does. MUST be non-empty.
Event Structure
Single-repo skill, free:
{
"kind": 5216,
"content": "Extracts text and tables from PDF files, fills PDF forms, and merges multiple PDFs.",
"tags": [
["i", "pdf-processing"],
["name", "PDF Processing"],
["x", "a1b2c3d4e5f6..."],
["url", "https://blossom.example.com/a1b2c3d4e5f6..."],
["r", "https://github.com/user/pdf-processing.git"],
["license", "MIT"],
["t", "pdf"],
["t", "documents"]
]
}
Monorepo subdirectory, paid:
{
"kind": 5216,
"content": "Search and book flights using natural language.",
"tags": [
["i", "flight-search"],
["name", "Flight Search"],
["x", "b2c3d4e5f6a1..."],
["url", "https://blossom.example.com/b2c3d4e5f6a1..."],
["r", "https://github.com/user/skills.git", "skills/flight-search"],
["price", "1000", "sat"],
["compatibility", "Requires chromium"],
["t", "travel"]
]
}
Discovery
Query relays for kind:5216, optionally filtering by t, i, or pubkey. To list all versions of a skill, filter by pubkey and #i tag. The current version is the event with the highest created_at.
Publishing
Publishers SHOULD:
- derive i by slugifying the name extracted from SKILL.md frontmatter (lowercase, hyphenated)
- set name to the original extracted or provided name
- set content to match the skill’s description in SKILL.md
Payments
When price is present with a non-zero value, payment is handled by hosting infrastructure. The recommended approach is a "Blossom" server accepting [Cashu](https://cashu.space) ecash; Lightning and wallet connect are equally valid alternatives.