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

# Skills

> Repeatable work, packaged so the agent can reuse it

A skill is a package of instructions, resources and executable code that the agent loads when it needs them. Rather than cramming every process into the Instructions, you split the repeatable parts into skills the agent can reach for at the right moment.

<img src="https://mintcdn.com/fpt-62e894b4/OEIa1zuMs6GjYr6X/images/en_agent_skills.jpg?fit=max&auto=format&n=OEIa1zuMs6GjYr6X&q=85&s=0621ebe7167b49c989669deeaddf4a18" alt="Agent skills" width="1562" height="784" data-path="images/en_agent_skills.jpg" />

## Two kinds of skill

| Kind | What it means |
| - | - |
| **Agent-owned skill** | Used only by this agent, usually created by the assistant while it builds |
| **Workspace skill** | Shared across several agents, attached with **Connect workspace skill** |

Every skill carries a version number and an on/off state, along with how many agents are using it.

## Adding a skill to an agent

* **Create skill** - write a new skill for this agent alone.
* **Connect workspace skill** - pull in one that already exists in the workspace.
* **Ask the assistant** - describe the work that keeps repeating, and it proposes a matching skill for you to approve.

## Editing, deleting and switching skills off

<Steps>
  <Step title="Edit a skill">
    Click a skill card in the list to reopen the form - change the Name, Description, Skill type or Icon, or review the SKILL.md file tree and everything shipped with it. If other agents are using the skill, Console warns you first: "This skill is used by N agents - changes will affect all of them."

    <img src="https://mintcdn.com/fpt-62e894b4/OEIa1zuMs6GjYr6X/images/en_skill_edit_modal.jpg?fit=max&auto=format&n=OEIa1zuMs6GjYr6X&q=85&s=7b696da322946fa35ea89eac9f12ed36" alt="Skill edit modal" width="1562" height="784" data-path="images/en_skill_edit_modal.jpg" />
  </Step>

  <Step title="Remove a skill from the agent">
    Click the bin icon next to the skill name. For an agent-owned skill, removing it deletes it outright. For a workspace skill, removing it here only unlinks it from this agent - the original stays in the workspace and other agents carry on using it.

    <img src="https://mintcdn.com/fpt-62e894b4/OEIa1zuMs6GjYr6X/images/en_skill_delete_menu.jpg?fit=max&auto=format&n=OEIa1zuMs6GjYr6X&q=85&s=f16299820999bac23cba04161bf2af61" alt="Skill delete menu" width="1562" height="784" data-path="images/en_skill_delete_menu.jpg" />
  </Step>

  <Step title="Switch a skill on or off">
    Workspace skills only. Go to Resources > Skills, find the skill and flip the Enabled switch off. Switching it off makes it unavailable to EVERY agent that has it attached, not just the one you are looking at - use it when you want to pause a skill without throwing away its configuration.

    <img src="https://mintcdn.com/fpt-62e894b4/OEIa1zuMs6GjYr6X/images/en_skill_workspace.jpg?fit=max&auto=format&n=OEIa1zuMs6GjYr6X&q=85&s=0d40ca8dc5740146242594deec3a2c7d" alt="Skill toggle on" width="1562" height="784" data-path="images/en_skill_workspace.jpg" />
  </Step>
</Steps>

<Note>
  Agent-owned skills - the ones created inline while building an agent - have no on/off switch. They can only be edited or deleted outright.
</Note>

## Uploading a skill from a file

Instead of writing one out in the form, you can upload a skill prepared elsewhere - handy when it was authored outside Console, shared between teams or kept in git. Console accepts three formats: **.md**, **.zip** and **.skill** (a `.skill` file is really just a zip with a different extension).

### .md - instructions only

Use this when the skill is plain text guidance with nothing attached. The file has to open with a YAML block between two `---` lines:

```yaml SKILL.md theme={null}
---
name: email-triage
description: Use when the user asks to process the inbox - classify, label, summarize emails and propose actions. Trigger words: classify email, process inbox, triage inbox.
version: 1.0.0
---

# Email triage and summary

The repeatable process for working through the inbox: classify, label, summarise...
```

| Field | Required | How to write it |
| - | - | - |
| `name` | Yes | Lowercase, hyphen-separated. Best kept the same as the file name or the package root folder |
| `description` | Yes | One sentence answering "when should this skill be used". The model reads exactly this line to decide whether to call the skill, so include the trigger words |
| `version` | Recommended | In the form `1.0.0`. Console shows it on the skill card |

Everything below the YAML block is the Markdown guidance itself - what the agent reads and follows once the skill fires.

### .zip / .skill - a skill with resources

When a skill needs reference material, runnable code or template files, package it all into a zip. The only rule the system enforces: **there must be a** `SKILL.md `**at the root of the package**. How you arrange the rest is up to you, though the convention below helps the agent find its way:

```text theme={null}
debt-reconciliation/
├── SKILL.md                  # required - YAML plus the main instructions
├── references/               # reference material, opened only when needed
│   ├── matching-rules.md
│   └── error-codes.md
├── scripts/                  # executable code
│   ├── reconcile.py
│   └── export_excel.py
└── assets/                   # templates and output shells
    ├── report-template.html
    └── company-logo.png
```

Once uploaded, opening the skill shows the file list in the package next to `SKILL.md`, with buttons to view the contents and download the package.

### A package keeps every file type

When you upload a .zip or .skill package, nothing inside is filtered out by format. The agent can read binary files that travel with the package, so a skill can carry an Excel template, a PDF, an illustration or a sample data file and use them while it runs.

<img src="https://mintcdn.com/fpt-62e894b4/91oWXyIxHSR9EXmO/images/en_skill_upload.jpg?fit=max&auto=format&n=91oWXyIxHSR9EXmO&q=85&s=d2470a1f23265ba8fe057e08b0d5d2a7" alt="Uploading a skill package" width="1568" height="727" data-path="images/en_skill_upload.jpg" />

File requirements on upload:

| Format | Condition |
| - | - |
| .md | Must carry a name and a description in YAML |
| .zip or .skill | Must include a SKILL.md file |

<Note>
  .skill is just a zip with a different extension, so both formats are packaged exactly the same way.
</Note>

<Tip>
  Put resources in subfolders by purpose, then point to them from SKILL.md. The agent opens a file only when it needs it, so a tidy package runs faster and goes wrong less often.
</Tip>

### Why split it up instead of putting everything in SKILL.md

The agent does not load the whole package into context on every run. It reads in three tiers:

<Steps>
  <Step title="Read the description">
    The description line is always in context. The agent uses it to decide whether the current request needs this skill at all.
  </Step>

  <Step title="Load SKILL.md">
    Once the skill fires, the full set of instructions in SKILL.md is loaded.
  </Step>

  <Step title="Open attached files on demand">
    Files under references/, scripts/ and assets/ are only read or run when SKILL.md points at them.
  </Step>
</Steps>

That is how a skill carrying a few hundred pages of regulation still costs nothing in context until the agent actually needs it. The rule of thumb: keep `SKILL.md` short - the procedure, the stopping conditions and the paths to the detail - and push the long material into `references/`.

### Example: a debt reconciliation package

At the end of every month, accounting has to reconcile bank statements against the debt tracker on SharePoint and produce a report for the department head. The process is fixed, but it runs to many steps and leans on a long table of matching rules. Packaged up:

| File in the package | What it holds |
| - | - |
| `SKILL.md` | The six steps of the process, where to stop and ask the user, and paths to the three files below |
| `references/matching-rules.md` | The matching rule table and the variance thresholds that can be ignored |
| `scripts/reconcile.py` | Reads both sources, matches them and returns the list of discrepancies |
| `assets/report-template.html` | The report shell for the agent to fill in |

When an accountant types "reconcile August debt", the agent recognises it from the `description`, loads `SKILL.md`, runs `reconcile.py`, opens `matching-rules.md` only when it hits a mismatch, then builds the report from `report-template.html`.

<Note>
  Keep skill names lowercase and hyphen-separated - `email-triage`, `debt-reconciliation` - and matching the root folder inside the zip. Names with spaces or accented characters tend to break when the agent calls the skill.
</Note>

<Note>
  A skill is worth splitting out when it has a clear procedure and gets used repeatedly - summarising a recurring report, say, or triaging incoming email. Something you do once is tidier left in the Instructions.
</Note>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.