> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vlm.run/llms.txt
> Use this file to discover all available pages before exploring further.

# Orion Skills

> Modular, reusable capabilities for visual extraction and agent workflows

Skills are modular, reusable capabilities that provide VLM Run's visual models and agents with procedural knowledge for extraction tasks. Instead of selecting a pre-defined [domain](/hub), you reference a skill by name (and optionally pin a version) and the platform automatically applies the skill's prompt and JSON schema to your request.

## Why use Skills?

Skills let you decouple *what* you want the model to do from *how* it's configured:

* **Reusable**: Create a skill once, reference it from any endpoint (image, document, video, audio, agent)
* **Versionable**: Pin a specific skill version for reproducible results, or use `"latest"` to always get the newest revision
* **Composable**: Pass multiple skills in a single request
* **Auto-generated**: Create skills from a prompt, a chat session, or a pre-built skill zip
* **Flexible**: Use skills as an alternative to domains, or combine them with custom schemas
* **Inline**: Send skill bundles directly in the request as base64-encoded zips — no pre-upload required

## Skill Identifiers

Each skill can be referenced by name and version, or by its unique ID:

| Field           | Description                             | Example                |
| --------------- | --------------------------------------- | ---------------------- |
| `skill_id`      | Unique identifier (UUID or name string) | `"abc-123-def"`        |
| `skill_name`    | Human-readable name for lookup          | `"invoice-extraction"` |
| `skill_version` | Skill version to use                    | `"latest"`             |

You must provide at least one of `skill_name` or `skill_id`. When using `skill_name`, you can also specify a `skill_version`, otherwise the `latest` version is used.

## Skills vs Domains

Skills are the preferred way to extract structured data from images, documents, videos, and audio.

<Warning>
  We will be deprecating domains in the near future. Whenever possible, use skills instead of domains.
</Warning>

<Note>
  When `skills` are provided and `domain` is omitted, the platform creates a dynamic application from the skill's prompt and JSON schema. You can still pass `domain` alongside `skills` if needed.
</Note>

|                    | Domains                                  | Skills                                                    |
| ------------------ | ---------------------------------------- | --------------------------------------------------------- |
| **Lookup**         | Fixed string (e.g. `"document.invoice"`) | Name + version (e.g. `"invoice-extraction"` @ `"latest"`) |
| **Custom prompts** | Via `config.prompt`                      | Bundled with the skill                                    |
| **JSON schema**    | Pre-defined per domain                   | Bundled with the skill                                    |
| **Versioning**     | N/A                                      | Explicit version pinning                                  |
| **Usage**          | `domain` parameter                       | `config.skills` parameter                                 |

## Where Skills Work

Skills work across all of the following VLM Run products:

| Type                 | Skills Parameter |
| -------------------- | ---------------- |
| **Model Requests**   | `config.skills`  |
| **Agent Executions** | `config.skills`  |
| **Chat Completions** | `skills`         |

<CardGroup cols={2}>
  <Card title="Quickstart" icon="rocket" href="/skills/quickstart">
    Get started with skills in under 2 minutes
  </Card>

  <Card title="Skill Spec" icon="file-code" href="/skills/spec/overview">
    Learn how skills are structured
  </Card>
</CardGroup>
