Skip to main content

AgentSkill Object

The AgentSkill object supports two modes: referenced (server-stored) and inline (sent per-request). Common fields:
FieldTypeDefaultDescription
typestring"skill_reference""skill_reference" for server-stored skills, "inline" for inline bundles
Referenced skill fields (when type = "skill_reference"):
FieldTypeDefaultDescription
skill_namestringnullHuman-readable skill name for lookup
skill_idstringnullUnique identifier (UUID or name string)
skill_versionstring"latest"Skill version to use
At least one of skill_name or skill_id must be provided. If both are given, skill_id takes precedence for resolution.

Inline Skill Fields

When type = "inline", the following fields are used instead of skill_name/skill_id:
FieldTypeDefaultDescription
namestringnullHuman-readable name for the inline skill
descriptionstringnullShort description of what the skill does
sourceobjectnullSource payload containing the base64-encoded zip bundle (see below)
InlineSkillSource object:
FieldTypeDefaultDescription
typestring"base64"Encoding type (currently only "base64")
media_typestring"application/zip"MIME type of the bundle
datastringrequiredBase64-encoded zip containing SKILL.md and optional files
For inline skills, source (with data) is required, and skill_id/skill_name must not be set.

Referenced vs Inline

Referenced SkillsInline Skills
How to useskill_id or skill_namesource with base64 zip
PersistenceStored on the serverSent per-request, not persisted
Version pinningSupported (version field)N/A (bundle is the version)
Best forProduction, shared skillsPrototyping, ephemeral use, CI/CD
type field"skill_reference""inline"

Identifier Resolution

The platform resolves skill references in this order:
  1. If skill_id is provided, use it directly
  2. If skill_name is provided, look up by name
  3. If skill_version is "latest" (default), resolve to the most recent revision
  4. If skill_version is a specific string (e.g., "20260219-abc123"), resolve to that exact version

Available Toolsets

Toolsets define what capabilities are available to the agent when executing a skill:
ToolsetDescription
coreBasic operations (file I/O, text processing)
documentDocument extraction and layout understanding
imageImage analysis and understanding
image-genImage generation and editing
videoVideo analysis and understanding
vizVisualization and annotation
webWeb search and retrieval
world-genWorld generation and editing

Skill File Spec

FileRequiredFormatPurpose
SKILL.mdYesYAML frontmatter + MarkdownMetadata and instructions
vlmrun.yamlYesYAMLExecution configuration
schema.jsonRecommendedJSON Schema draft-07Output validation
resources/NoAnySupporting files

Python SDK Helpers

The Python SDK provides two convenience functions for working with local skill directories:
FunctionImportReturnsDescription
create_from_directoryclient.skills.create_from_directory(...)AgentSkill (type="skill_reference")Zips a local directory, uploads via the Files API, and creates a server-side skill in one call
AgentSkill.from_directoryfrom vlmrun.client.types import AgentSkillAgentSkill (type="inline")Classmethod that zips and base64-encodes a local directory into an inline skill bundle (no server upload)
Both functions require the directory to contain a SKILL.md file. Skill name and description are read from the YAML frontmatter automatically.
from pathlib import Path
from vlmrun.client import VLMRun
from vlmrun.client.types import AgentSkill

client = VLMRun(api_key="<VLMRUN_API_KEY>")

# Server-side: upload and create a reusable skill
skill_ref = client.skills.create_from_directory(Path("./my-skill"))

# Inline: build a self-contained skill bundle (no upload)
skill_inline = AgentSkill.from_directory(Path("./my-skill"))

API Endpoints

OperationMethodEndpoint
List skillsGET/v1/skills
Get skill by IDGET/v1/skills/{skill_id}
Create skillPOST/v1/skills/create
Update skillPOST/v1/skills/{skill_id}/update
Lookup skillPOST/v1/skills/lookup
Download skillGET/v1/skills/{skill_id}/download