Skills are folders of instructions, scripts, and resources that agents load dynamically to improve performance on specialized tasks. The agent first sees only a skill’s name and short description. When the task matches, it loads the full SKILL.md and can execute commands the skill references.
The SKILL.md file contains YAML frontmatter and markdown content:
Copy
Ask AI
---name: Slack GIF Creatordescription: Create GIFs for Slack from video files---# Slack GIF CreatorThis skill helps create optimized GIFs for Slack.## Usage1. Accept a video file path or URL2. Use ffmpeg to convert to GIF3. Optimize for Slack's size limits (< 1MB)## Commands```bashffmpeg -i input.mp4 -vf "scale=480:-1" -r 10 output.gif
Pass skill paths to the agent constructor (src/agentor/core/agent.py:182):
Copy
Ask AI
from agentor import Agentorfrom agentor.tools import ShellToolagent = Agentor( name="Assistant", model="gemini/gemini-3-flash-preview", instructions="Your job is to create GIFs. Use available skills.", skills=[".skills/slack-gif-creator"], tools=[ShellTool()],)result = await agent.chat("produce a cat gif")
Skills are serialized to XML (src/agentor/skills.py:34):
Copy
Ask AI
<available_skills> <skill> <name>Slack GIF Creator</name> <description>Create GIFs for Slack from video files</description> <location>.skills/slack-gif-creator/SKILL.md</location> </skill></available_skills>
The agent sees this in its system prompt and can load the full skill content when needed.
from agentor.tools import ShellToolfrom agentor import Agentoragent = Agentor( name="GIF Assistant", model="gemini/gemini-3-flash-preview", instructions="Create GIFs using available tools and skills.", skills=[".skills/slack-gif-creator"], tools=[ShellTool()],)async for chunk in await agent.chat("produce a cat gif", stream=True): print(chunk)
The agent:
Sees the skill name and description in its prompt
Recognizes the task matches the skill
Loads full instructions from .skills/slack-gif-creator/SKILL.md
Uses ShellTool to execute ffmpeg commands from the skill
---name: My Custom Skilldescription: Brief description of what this skill does---# My Custom SkillDetailed instructions for the agent.## When to UseUse this skill when:- Condition 1- Condition 2## Steps1. First step2. Second step## Example Commands```bash# Helpful commands the agent can runls -la
## Example: Deploy Web App```bash# Build and deploydocker build -t myapp:v1.0 .docker push registry.io/myapp:v1.0kubectl set image deployment/myapp app=registry.io/myapp:v1.0
Copy
Ask AI
### Safety WarningsInclude warnings for destructive operations:```markdown## Important⚠️ Always backup the database before running migrations.⚠️ Never run `DROP DATABASE` in production.
The loader validates skill structure (src/agentor/skills.py:14):
Copy
Ask AI
# Raises FileNotFoundError if path doesn't existskill = Skills.load_from_path("invalid/path")# Raises ValueError if not a markdown fileskill = Skills.load_from_path("file.txt")