Mitigate AI Platform

Skills

Package procedural knowledge as Agent Skills that the chatbot can discover and load on demand.

Skills are folders of instructions, scripts, and resources that the chatbot can load on demand to perform specialized tasks. They follow the open Agent Skills format — the same one used by Claude Code, Cursor, Goose, and other compatible agents.

Each skill ships as a .zip archive containing a SKILL.md file (metadata + instructions) and optional supporting files (scripts/, references/, assets/). You upload it once, assign it to one or more workspaces, and the model learns about it via the system prompt. When a user asks something that matches the skill's description, the model reads SKILL.md through a built-in view tool and follows the instructions.

Progressive Disclosure

The chatbot uses a three-tier loading strategy so the base context stays small no matter how many skills are installed:

TierWhat's loadedWhenTypical cost
Catalogname and description of each enabled skillEvery chat turn, via the system prompt~100 tokens per skill
InstructionsFull SKILL.md bodyWhen the model decides the skill is relevantUnder 5,000 tokens (by convention)
ResourcesScripts, references, assetsOnly when SKILL.md references themVaries

This means an organization with 20 installed skills does not pay the context cost of 20 full instruction sets upfront — only the ones actually used in a given conversation.

Skill Format

A skill is a directory containing a required SKILL.md plus optional subdirectories:

skill-name/
├── SKILL.md          # Required: YAML frontmatter + markdown instructions
├── scripts/          # Optional: executable code
├── references/       # Optional: long-form documentation loaded on demand
├── assets/           # Optional: templates, images, data files
└── ...

SKILL.md starts with YAML frontmatter between --- delimiters:

---
name: web-design-guidelines
description: Review UI code for Web Interface Guidelines compliance. Use when asked to "review my UI", "check accessibility", "audit design", or "check my site against best practices".
---

# Web Interface Guidelines

Review files for compliance with Web Interface Guidelines.

## How It Works

1. ...

Frontmatter fields

FieldRequiredConstraints
nameYes1–64 characters, lowercase a-z, digits, and hyphens. Must match the skill's identity, cannot be changed after upload.
descriptionYes1–1024 characters. Describes what the skill does and when to use it. Good descriptions include both positive triggers ("Use this skill when...") and negative triggers ("Do NOT use for...").
licenseNoLicense name or reference to a bundled license file.
compatibilityNoEnvironment requirements (e.g. "Requires Python 3.14+"). Max 500 characters.
metadataNoFree-form key-value map stored verbatim.

See the full specification for all the details.

Writing good descriptions

The description is the only hook the model sees until it activates the skill. Make it specific and keyword-rich. A skill that just says "Helps with PDFs" will rarely trigger; one that says "Extract text and tables from PDFs, fill forms, merge documents. Use when the user mentions .pdf files or asks to produce one." triggers reliably.

Uploading a Skill

Prepare the archive

Zip the skill's directory. Either a flat layout (SKILL.md at the root of the zip) or a single wrapper folder (skill-name/SKILL.md at the root) both work — the uploader strips the wrapper automatically.

Open the admin page

Go to AdminSkills and click Add Skill.

Upload the archive

Select the .zip file, optionally tick Enabled, and pick which workspaces should see the skill. Click Create skill.

The uploader extracts every entry, validates SKILL.md, and stores each file as a separate attachment keyed to the skill's path. name and description are read directly from the frontmatter; you do not fill them in manually.

Size and safety limits

LimitValue
Max total uncompressed size25 MB
Max number of files in archive2,000
Max entry path length512 characters
Rejected entry typesAbsolute paths, .. segments, symlinks

Assigning to Workspaces

Skills are organization-scoped by default and only become visible in a chat when they are (a) enabled and (b) assigned to the chat's workspace. There are two ways to manage the assignment:

  • From the skill side: open the skill and edit its Workspaces list.
  • From the workspace side: open the workspace's Edit form and pick skills from the Skills multi-select.

Both views stay in sync — they edit the same underlying assignment.

How Activation Works

Skills plug into two existing pieces of the chatbot runtime:

  1. System-prompt catalog. At the start of each chat turn, the platform appends an <available_skills> block to the system prompt listing every enabled + assigned skill. The model sees the name, description, and the file location inside the sandbox mount.

  2. The view tool. When the model decides a skill is relevant, it calls the built-in view tool with the skill's SKILL.md path (e.g. /mnt/skills/web-design-guidelines/SKILL.md). The tool returns the file contents as numbered lines. Subsequent view calls can inspect other files in the skill directory. Directory paths return a 2-level listing.

The first time a chat reads a SKILL.md, the platform records the activation so the UI can surface which skills the assistant has already consulted in the conversation.

Sandbox vs. Pure-Prose Skills

Skills work in two modes:

  • Pure-prose skills (e.g. review checklists, writing guidelines, domain knowledge) need no infrastructure. The view tool reads SKILL.md directly from storage and the model follows the instructions inline. These skills work even in workspaces without sandbox execution enabled.

  • Script-backed skills (e.g. a PDF processor that runs Python) require a sandbox. When the workspace's organization has a sandbox image configured and the workspace has sandbox enabled, every assigned skill is additionally mounted read-only at /mnt/skills/<name>/ inside the sandbox. The model can then invoke the skill's scripts via the bash tool alongside view.

The path layout is identical in both modes, so the same SKILL.md can target either environment without modification.

Downloading a Skill

Every skill has a Download button on its show page. It streams a fresh .zip with the current contents wrapped under a top-level skill-name/ directory — identical in shape to what the uploader expects. This makes it easy to pull a skill down, edit it locally, and re-upload.

Round-tripping

On upload the name field of a skill is locked; you can replace the archive contents freely but the name in the new SKILL.md must match the existing skill. This keeps mount paths and workspace assignments stable across edits.

Example Skills

The vercel-labs/agent-skills repository hosts ready-to-use .zip fixtures. A good starting point for testing is web-design-guidelines.zip — a pure-prose skill that reviews UI code against a set of web design guidelines.

For more examples and skill authoring conventions, see the Agent Skills specification.

On this page