The vlmrun skills command manages skills on the VLM Run platform.
Upload
Zip and upload a local skill folder, then create the skill. The directory must contain a SKILL.md file — name and description are parsed from its YAML frontmatter automatically.
# Upload a skill folder
vlmrun skills upload ./my-skill
# Override name/description from frontmatter
vlmrun skills upload ./my-skill --name "invoice-extraction" --description "Extract invoice data"
| Argument/Option | Description |
|---|
DIRECTORY | Path to the skill folder (must contain SKILL.md) |
--name, -n | Skill name (overrides frontmatter) |
--description, -d | Skill description (overrides frontmatter) |
Archives are stored under ~/.vlmrun/skill_archives/.
Inline Skills via CLI
The vlmrun chat command uses inline skills by default when you pass a --skill directory. The CLI bundles the skill directory into a zip and sends it inline — no server upload required:
# Use an inline skill (default behavior)
vlmrun chat "Extract data from this invoice" -i invoice.pdf --skill ./my-skill/
# To persist a skill on the server for reuse, upload it separately
vlmrun skills upload ./my-skill/
Inline skills via the CLI are ideal for local development and testing. For production use, upload the skill with vlmrun skills upload and reference it by name.
Create
Create a skill from a prompt or pre-uploaded file:
# From a text prompt
vlmrun skills create --prompt "Extract invoice_id, date, and total_amount from invoices."
# From a prompt file
vlmrun skills create --prompt-file instructions.txt
# With a JSON schema
vlmrun skills create --prompt "Extract invoice data" --schema schema.json
# From a pre-uploaded file ID
vlmrun skills create --file-id <file-id> --name "invoice-extraction"
| Option | Short | Description |
|---|
--prompt | -p | Text prompt to auto-generate the skill |
--prompt-file | -f | Read prompt from a file |
--schema | | Path to a JSON schema file |
--file-id | | Pre-uploaded skill zip file ID |
--name | -n | Skill name (required for --file-id) |
--description | -d | Skill description |
--json | -j | Output raw JSON |
List
# List skills (latest 25)
vlmrun skills list
# Show only latest version per name
vlmrun skills list --grouped
# Custom sort and limit
vlmrun skills list --limit 50 --order-by name --asc
# Output raw JSON
vlmrun skills list --json
| Option | Short | Description |
|---|
--limit | -n | Max items to return (default: 25) |
--offset | | Items to skip (default: 0) |
--order-by | | Sort field: created_at, updated_at, or name (default: created_at) |
--desc / --asc | | Sort direction (default: --desc) |
--grouped | -g | Show only latest version per skill name |
--json | -j | Output raw JSON |
Get
# Get by name (latest version)
vlmrun skills get invoice-extraction
# Get a specific version
vlmrun skills get invoice-extraction --version 20260219-abc123
# Get by ID
vlmrun skills get <skill-id>
# Output raw JSON
vlmrun skills get invoice-extraction --json
| Argument/Option | Short | Description |
|---|
NAME_OR_ID | | Skill name or UUID (required) |
--version | -V | Pin a specific version |
--json | -j | Output raw JSON |
Download
Download a skill zip and extract it locally:
# Download to default location (~/.vlmrun/skills/)
vlmrun skills download invoice-extraction
# Download a specific version
vlmrun skills download invoice-extraction --version 20260219-abc123
# Download to a custom directory
vlmrun skills download invoice-extraction --output ./skills/
| Argument/Option | Short | Description |
|---|
NAME_OR_ID | | Skill name or UUID (required) |
--version | -V | Pin a specific version |
--output | -o | Extract directory (default: ~/.vlmrun/skills) |