Skills
How agents gain specialized abilities through structured knowledge and scripts
Skills are self-contained packages of instructions, references, and scripts that give agents deep expertise in specific tasks. Unlike tools (MCP), which connect agents to external services, skills teach agents how to do something -- with domain knowledge, step-by-step procedures, and optional executable scripts.
How Skills Work
sequenceDiagram
participant U as User
participant O as Overlord
participant A as Agent
participant S as Skill
participant R as RCE
U->>O: "Generate a sales report PDF"
O->>A: Route to agent with report skill
A->>S: Activate "report-generation" skill
S-->>A: Full instructions + script info
A->>R: Execute generate.py via RCE
R-->>A: Generated PDF
A->>U: Here's your report
- User sends a request that matches a skill's domain
- Overlord routes to an agent that has the skill
- Agent activates the skill (loads full instructions)
- Agent executes a script via RCE if the skill includes one
- Results return to the user
Skills vs Tools (MCP)
| Category | Skills | Tools (MCP) |
|---|---|---|
| Purpose | Teach agents how to do things | Connect agents to external services |
| Content | Instructions, references, scripts | API endpoints, commands |
| Protocol | SKILL.md (Agent Skills spec) | Model Context Protocol |
| Execution | Optional scripts via RCE | Always remote service calls |
| Example | "How to generate financial reports" | "Call the Stripe API" |
Use skills when the agent needs knowledge and procedures. Use tools when the agent needs to call an external service.
Progressive Disclosure
Skills use a two-tier loading strategy to keep context usage low:
| Tier | What loads | When | Token cost |
|---|---|---|---|
| Metadata | Name, description | Formation startup | ~100 tokens per skill |
| Full content | Instructions, references, scripts | First activation | Varies by skill |
At startup, agents only see a lightweight catalog of available skills. The full SKILL.md body and resource list are loaded into context only when the agent decides to activate a skill -- keeping the baseline token footprint minimal.
Skill Discovery
Agents receive a skill catalog in their system prompt:
Available Skills:
- report-generation: Generate PDF/Excel reports from data
- data-analysis: Analyze datasets and produce visualizations
- file-generation: Generate files (PDFs, images, spreadsheets)
The agent decides when to activate a skill based on the user's request. No explicit trigger required -- the model reads the catalog and activates what it needs.
Skill Activation
When an agent activates a skill:
- Full SKILL.md content loads into context (instructions, constraints, examples)
- Resource list becomes available (scripts, references, assets)
- If the skill has scripts, the
run_skilltool becomes available - Activation is tracked per session -- repeated activations are deduplicated
User: "Create a chart showing Q4 revenue"
Agent: [Sees "data-analysis" in skill catalog]
Agent: [Activates skill → full instructions load]
Agent: [Runs generate.py via RCE with parameters]
Agent: [Returns chart to user]
Skill Isolation
Skills follow a three-layer isolation model:
- Catalog filtering -- Each agent only sees skills assigned to it (public skills are visible to all agents)
- Tool restriction -- Skills declare which tools they need via
allowed-tools; the agent can only use those tools during skill execution - Planning scoping -- When the Overlord decomposes complex tasks, only authorized skills appear in each agent's planning context
Skill Types
Knowledge-only skills
Contain instructions and references but no executable scripts. The agent uses the knowledge to guide its responses.
skills/
└── writing-style/
├── SKILL.md # Brand voice guidelines
└── references/
└── style-guide.md # Detailed examples
Script-bearing skills
Include executable scripts that run in a sandboxed RCE container. The agent calls run_skill to execute them.
skills/
└── report-generation/
├── SKILL.md # Instructions for the agent
└── scripts/
└── generate.py # Executed via RCE
Built-in skills
Ship with the runtime. Currently includes file-generation for producing PDFs, images, spreadsheets, and other artifacts.
Formation Directory Structure
my-formation/
├── formation.afs
├── agents/
│ └── assistant.afs
├── skills/ # Formation-level skills (public)
│ ├── report-generation/
│ │ ├── SKILL.md
│ │ └── scripts/
│ │ └── generate.py
│ └── data-analysis/
│ ├── SKILL.md
│ └── references/
│ └── methods.md
└── agents/
└── analyst/
└── skills/ # Agent-specific skills
└── forecasting/
└── SKILL.md
- Formation-level skills (
skills/) are public -- all agents see them - Agent-level skills (
agents/{id}/skills/) are private to that agent
RCE (Remote Code Execution)
Script-bearing skills execute in a sandboxed container via the Skills RCE service. The runtime:
- Zips the skill directory and uploads it to the RCE service at startup
- Uses content hashing to skip re-uploads when nothing changed
- Executes scripts on demand via the
run_skilltool
To use a custom RCE instance, configure it in your formation:
rce:
url: "http://my-rce-server:7891"
token: "${{ secrets.RCE_TOKEN }}"
Server-managed formations get RCE automatically. The MUXI Server includes a built-in Skills RCE instance -- formations use it with no configuration. The RCE service bundles Python, Node.js, Bun, Go, Bash, and common packages (numpy, pandas, matplotlib, reportlab, etc.).
RCE is optional. Skills without scripts work purely through knowledge injection -- no RCE service required.
See Skills RCE for deployment options, available runtimes, and the full API.
Why This Matters
| Without Skills | With Skills |
|---|---|
| Long system prompts with everything | Progressive disclosure, load on demand |
| Agents need all knowledge upfront | Activate only what's needed per request |
| Scripts hardcoded in tools | Portable skill packages with versioned scripts |
| Same capabilities for all agents | Agent-specific skill assignments |
The result: agents that learn on demand, keeping context lean and capabilities precise.
Quick Setup
Create skills/my-skill/SKILL.md:
---
name: my-skill
description: Does something useful
---
# Instructions
Here's how to do the thing...
All agents in the formation automatically see it. Done.
Learn More
- Configure skills - SKILL.md syntax and formation config
- Add Skills Guide - Step-by-step tutorial
- Agent Skills specification - The open standard