Docs / Skills

Skills

Overview

Skills are modular capabilities that extend what a Vellum Assistant can do. Each skill bundles instructions, tools, and configuration into a self-contained unit that the assistant can load on demand. Skills let you teach an assistant new behaviors without modifying its core configuration.

Skill Structure

A skill is a directory containing at minimum a SKILL.md file, and optionally a TOOLS.json manifest and supporting tool implementations.

my-skill/
├── SKILL.md        # Skill definition and instructions
├── TOOLS.json      # Tool manifest (optional)
└── tools/          # Tool implementations (optional)
    └── my-tool.ts

SKILL.md

The SKILL.md file defines the skill's identity and provides instructions to the assistant. It uses YAML frontmatter for metadata followed by Markdown content:

---
name: "Browser"
description: "Navigate and interact with web pages"
user-invocable: true
disable-model-invocation: false
metadata: {"vellum": {"emoji": "🌐"}}
---

Use this skill to browse the web. After loading
this skill, the following tools become available:

- `browser_navigate` — Navigate to a URL
- `browser_screenshot` — Take a screenshot
...
name
Human-readable name for the skill.
description
Brief summary of what the skill does. Used by the model to decide when to load it.
user-invocable
Whether the user can explicitly request this skill. When false, the skill is only loaded automatically by the model.
disable-model-invocation
When true, prevents the model from automatically loading this skill. It can only be loaded through an explicit user request.
metadata
Optional metadata including an emoji icon for display in the UI.

The Markdown body after the frontmatter contains instructions that are injected into the assistant's context when the skill is loaded. Write these as direct instructions to the assistant.

TOOLS.json

The optional TOOLS.json file declares the tools that the skill provides. Each tool definition includes its name, description, input schema, and execution configuration:

[
  {
    "name": "browser_navigate",
    "description": "Navigate to a URL",
    "category": "browser",
    "risk": "low",
    "input_schema": {
      "type": "object",
      "properties": {
        "url": { "type": "string" }
      },
      "required": ["url"]
    }
  }
]

Skill Sources

Skills can come from several sources, each with different management and update characteristics:

Bundled Skills

First-party skills that ship with the Vellum Assistant runtime. These are maintained by Vellum and include core capabilities like browser automation, computer use, phone calls, scheduling, reminders, and more. Bundled skills are always available and updated with each assistant release.

🌐Browser
🖥️Computer Use
📞Phone Calls
Reminders
📅Schedule
📧Email Setup
💬Messaging
📄Document
🎵Media Processing
🌤️Weather
👁️Watcher
🤖Subagent

Workspace Skills

Custom skills that live in your assistant's workspace directory. These are skills you create and maintain yourself. Place them in the skills/ directory of your workspace and they will be automatically discovered. Workspace skills are version-controlled alongside your assistant's configuration.

Managed Skills

Skills installed from the Vellum skill catalog. These are community or first-party skills that can be added to your assistant through the skill management system. Managed skills are installed into your workspace and can be customized after installation.

Tool Manifest

Each tool declared in a skill's TOOLS.json includes the following properties:

name
Unique identifier for the tool. This is how the assistant references it in conversation.
description
What the tool does. The model uses this to decide when to call the tool.
category
Logical grouping for the tool (e.g., “browser”, “filesystem”, “network”).
risk
Risk level of the tool (“low”, “medium”, or “high”). Higher risk tools may require guardian approval before execution.
input_schema
JSON Schema defining the parameters the tool accepts.

Invocation

Skills can be invoked in two ways:

User-invoked
The user explicitly requests the skill (e.g., “use the browser skill to check my email”). Only skills with user-invocable: true appear as available actions.
Model-invoked
The assistant automatically loads the skill when it determines the skill's tools are needed. Skills with disable-model-invocation: true are excluded from automatic loading.

When a skill is loaded, its instructions from SKILL.md are injected into the assistant's context and its tools become available for use.