Skip to content

ant_ai.skills.protocol

AgentSkill pydantic-model

Bases: BaseModel

Represents a parsed Agent Skill conforming to the agentskills.io specification.

See https://agentskills.io/specification for the full format spec.

Show JSON schema:
{
  "description": "Represents a parsed Agent Skill conforming to the agentskills.io specification.\n\nSee https://agentskills.io/specification for the full format spec.",
  "properties": {
    "name": {
      "description": "Skill identifier. Lowercase letters, numbers, and hyphens only. Must not start or end with a hyphen, and must not contain consecutive hyphens.",
      "maxLength": 64,
      "minLength": 1,
      "pattern": "^[a-z0-9](-?[a-z0-9]+)*$",
      "title": "Name",
      "type": "string"
    },
    "description": {
      "description": "One-line description of what the skill does and when to use it.",
      "maxLength": 1024,
      "minLength": 1,
      "title": "Description",
      "type": "string"
    },
    "instructions": {
      "description": "Full Markdown body of SKILL.md, injected into context on activation.",
      "title": "Instructions",
      "type": "string"
    },
    "skill_dir": {
      "description": "Resolved absolute path to the skill folder on disk.",
      "format": "path",
      "title": "Skill Dir",
      "type": "string"
    },
    "scripts": {
      "description": "Files found in scripts/. Informational only \u2014 not auto-registered as tools. SKILL.md instructions reference these by path for the agent to invoke.",
      "items": {
        "format": "path",
        "type": "string"
      },
      "title": "Scripts",
      "type": "array"
    },
    "license": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "License name or reference to a bundled license file.",
      "title": "License"
    },
    "compatibility": {
      "anyOf": [
        {
          "maxLength": 500,
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "description": "Environment requirements (intended product, system packages, etc.).",
      "title": "Compatibility"
    },
    "metadata": {
      "additionalProperties": {
        "type": "string"
      },
      "description": "Arbitrary key-value metadata from SKILL.md frontmatter.",
      "title": "Metadata",
      "type": "object"
    },
    "allowed_tools": {
      "description": "Pre-approved tools the skill may use (from the allowed-tools field).",
      "items": {
        "type": "string"
      },
      "title": "Allowed Tools",
      "type": "array"
    }
  },
  "required": [
    "name",
    "description",
    "instructions",
    "skill_dir"
  ],
  "title": "AgentSkill",
  "type": "object"
}

Fields:

Source code in src/ant_ai/skills/protocol.py
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
class AgentSkill(BaseModel):
    """
    Represents a parsed Agent Skill conforming to the agentskills.io specification.

    See https://agentskills.io/specification for the full format spec.
    """

    name: str = Field(
        min_length=1,
        max_length=64,
        pattern=r"^[a-z0-9](-?[a-z0-9]+)*$",
        description=(
            "Skill identifier. Lowercase letters, numbers, and hyphens only. "
            "Must not start or end with a hyphen, and must not contain consecutive hyphens."
        ),
    )
    description: str = Field(
        min_length=1,
        max_length=1024,
        description="One-line description of what the skill does and when to use it.",
    )
    instructions: str = Field(
        description="Full Markdown body of SKILL.md, injected into context on activation.",
    )
    skill_dir: Path = Field(
        description="Resolved absolute path to the skill folder on disk.",
    )
    scripts: list[Path] = Field(
        default_factory=list,
        description=(
            "Files found in scripts/. Informational only — not auto-registered as tools. "
            "SKILL.md instructions reference these by path for the agent to invoke."
        ),
    )
    license: str | None = Field(
        default=None,
        description="License name or reference to a bundled license file.",
    )
    compatibility: str | None = Field(
        default=None,
        max_length=500,
        description="Environment requirements (intended product, system packages, etc.).",
    )
    metadata: dict[str, str] = Field(
        default_factory=dict,
        description="Arbitrary key-value metadata from SKILL.md frontmatter.",
    )
    allowed_tools: list[str] = Field(
        default_factory=list,
        description="Pre-approved tools the skill may use (from the allowed-tools field).",
    )

name pydantic-field

name: str

Skill identifier. Lowercase letters, numbers, and hyphens only. Must not start or end with a hyphen, and must not contain consecutive hyphens.

description pydantic-field

description: str

One-line description of what the skill does and when to use it.

instructions pydantic-field

instructions: str

Full Markdown body of SKILL.md, injected into context on activation.

skill_dir pydantic-field

skill_dir: Path

Resolved absolute path to the skill folder on disk.

scripts pydantic-field

scripts: list[Path]

Files found in scripts/. Informational only — not auto-registered as tools. SKILL.md instructions reference these by path for the agent to invoke.

license pydantic-field

license: str | None = None

License name or reference to a bundled license file.

compatibility pydantic-field

compatibility: str | None = None

Environment requirements (intended product, system packages, etc.).

metadata pydantic-field

metadata: dict[str, str]

Arbitrary key-value metadata from SKILL.md frontmatter.

allowed_tools pydantic-field

allowed_tools: list[str]

Pre-approved tools the skill may use (from the allowed-tools field).