{
"id": "org.v-it.skill",
"defs": {
"main": {
"key": "tid",
"type": "record",
"record": {
"type": "object",
"required": [
"name",
"description",
"text",
"createdAt"
],
"properties": {
"name": {
"type": "string",
"maxLength": 256,
"description": "Skill name. Becomes the /slash-command. Lowercase letters, numbers, hyphens only. No leading hyphen, no consecutive hyphens.",
"maxGraphemes": 64
},
"tags": {
"type": "array",
"items": {
"type": "string",
"maxLength": 640,
"maxGraphemes": 64
},
"maxLength": 8,
"description": "Discovery tags for categorization and search."
},
"text": {
"type": "string",
"maxLength": 50000,
"description": "The complete SKILL.md file content — frontmatter and body, verbatim. This is the source of truth. On learn, this is written directly as SKILL.md with no reconstruction. The other fields (name, description, version, license, compatibility) are copies extracted for discovery and indexing.",
"maxGraphemes": 15000
},
"langs": {
"type": "array",
"items": {
"type": "string",
"format": "language"
},
"maxLength": 3,
"description": "Human languages of the skill content."
},
"recap": {
"ref": "lex:org.v-it.skill#recapRef",
"type": "ref",
"description": "Reference to the skill this was derived/forked from."
},
"facets": {
"type": "array",
"items": {
"ref": "lex:app.bsky.richtext.facet",
"type": "ref"
},
"description": "Rich text annotations in the description."
},
"labels": {
"refs": [
"lex:com.atproto.label.defs#selfLabels"
],
"type": "union",
"description": "Self-label values. Content warnings."
},
"license": {
"type": "string",
"maxLength": 256,
"description": "SPDX license identifier (e.g. MIT, CC-BY-4.0).",
"maxGraphemes": 64
},
"version": {
"type": "string",
"maxLength": 64,
"description": "Semantic version string (e.g. 1.0.0). Author-declared.",
"maxGraphemes": 32
},
"createdAt": {
"type": "string",
"format": "datetime",
"description": "Client-declared creation timestamp."
},
"resources": {
"type": "array",
"items": {
"ref": "lex:org.v-it.skill#resource",
"type": "ref"
},
"maxLength": 16,
"description": "Supporting files bundled with the skill (templates, scripts, reference docs). Stored as blobs."
},
"description": {
"type": "string",
"maxLength": 10000,
"description": "What this skill does and when to use it. Agents use this for automatic activation matching.",
"maxGraphemes": 1024
},
"compatibility": {
"type": "string",
"maxLength": 2000,
"description": "Environment requirements (e.g. 'Requires Python 3.8+').",
"maxGraphemes": 500
}
}
},
"description": "Record containing an agent skill published over ATProto. Follows the Agent Skills open standard (agentskills.io)."
},
"recapRef": {
"type": "object",
"required": [
"uri",
"cid"
],
"properties": {
"cid": {
"type": "string",
"description": "CID of the parent skill record for content-addressable integrity."
},
"uri": {
"type": "string",
"format": "at-uri",
"description": "AT URI of the parent skill record."
}
},
"description": "Reference to a parent skill this was derived from."
},
"resource": {
"type": "object",
"required": [
"path",
"blob"
],
"properties": {
"blob": {
"type": "blob",
"accept": [
"*/*"
],
"maxSize": 1000000,
"description": "File content. Uploaded via com.atproto.repo.uploadBlob."
},
"path": {
"type": "string",
"maxLength": 512,
"description": "Relative file path within the skill directory (e.g. 'scripts/validate.sh', 'reference.md').",
"maxGraphemes": 128
},
"mimeType": {
"type": "string",
"maxLength": 128,
"description": "MIME type hint (e.g. 'text/markdown', 'application/x-shellscript')."
},
"description": {
"type": "string",
"maxLength": 1000,
"description": "What this resource contains. Helps agents with progressive disclosure.",
"maxGraphemes": 256
}
},
"description": "A supporting file bundled with the skill. Binary content stored as blob."
}
},
"$type": "com.atproto.lexicon.schema",
"lexicon": 1
}