> ## 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.

# Skill Structure

> How a skill directory is organized

A skill is a self-contained directory that packages instructions, a JSON schema, execution configuration, and optional resources.

## Directory Layout

<div style={{ display: 'grid', gridTemplateColumns: '1fr 2fr', gap: '24px', alignItems: 'start' }}>
  <div>
    <Tree>
      <Tree.Folder name="<skill-name>" defaultOpen>
        <Tree.File name="SKILL.md" />

        <Tree.File name="schema.json" />

        <Tree.File name="vlmrun.yaml" />

        <Tree.Folder name="resources">
          <Tree.File name="..." />
        </Tree.Folder>
      </Tree.Folder>
    </Tree>
  </div>

  <div>
    **[`SKILL.md`](/skills/spec/skill-md)** — Skill metadata (YAML frontmatter) and instructions (Markdown body)

    **[`vlmrun.yaml`](/skills/spec/vlmrun-yaml)** — Execution configuration: model, toolsets, and state machine graph

    **[`schema.json`](/skills/spec/schema-json)** — JSON Schema that validates the skill's structured output

    **`resources/`** — Optional supporting files: code snippets, templates, images, or reference data
  </div>
</div>

<Info>
  When you upload a skill as a zip file via the [Create Skill](/skills/manage/create) endpoint, the platform extracts and stores these files. When a skill is referenced in a request, the platform loads the SKILL.md instructions and schema.json automatically.
</Info>

## Inline Skill Bundles

Instead of uploading a skill to the server, you can send a skill bundle directly in an API request as a base64-encoded zip. The zip must follow the same directory layout above. The minimum required file is `SKILL.md`:

| File          | Required | Description                                                                                  |
| ------------- | -------- | -------------------------------------------------------------------------------------------- |
| `SKILL.md`    | Yes      | YAML frontmatter (`name`, `description`, etc.) followed by a markdown body with instructions |
| `vlmrun.yaml` | No       | Skill configuration (metadata, settings, and dependencies)                                   |
| `schema.json` | No       | JSON Schema for structured output                                                            |
| `*.py`        | No       | Python scripts the skill can reference                                                       |

<Tip>
  Inline bundles are ideal for rapid prototyping and CI/CD pipelines. For production use, consider [uploading the skill](/skills/manage/create) for reuse across requests.
</Tip>
