Skip to main content
Skills are dynamically loaded instruction packages that enhance the Agent’s specialized capabilities. Zeus employs a Progressive Disclosure mechanism that loads only metadata at startup and loads full content on demand, maximizing Token savings.
Reference: Anthropic Skills · Agent Skills

Three-Phase Progressive Loading

Skills loading is divided into three phases, progressively disclosing content:
PhaseTimingLoaded ContentToken Cost
DiscoveryApplication startupYAML frontmatter (name, description)Very low
ActivationUser request match or explicit activationFull Markdown instruction contentMedium
ExecutionAgent needs resources during executionscripts/, references/, assets/On demand

Representation in System Prompt

  • No Skills explicitly specified: System Prompt only injects Discovery summaries (<available_skills> XML); Agent can load on demand via the load_skill tool
  • Skills explicitly specified: Full content is directly injected into System Prompt as <activated_skill> XML
<!-- Discovery mode: metadata only -->
<available_skills>
<skill name="skill-creator">Guide for creating effective skills...</skill>
<skill name="chrome-extension">Control user browser for automated tasks...</skill>
</available_skills>

<!-- Activation mode: full content injected -->
<activated_skill name="skill-creator">
...full Markdown instructions...
</activated_skill>

SKILL.md Format

Each Skill is a directory containing a SKILL.md file with a YAML frontmatter header followed by Markdown instruction content.
---
name: my-skill
description: Describes when to use this Skill
version: 1.0.0
author: Zeus Team
tags:
  - category1
  - category2
triggers:
  - keyword1
  - keyword2
priority: 0
enabled: true
---

# Skill Instruction Content

Detailed AI instructions, rules, and examples...

Metadata Fields

FieldRequiredTypeDescription
nameYesstringUnique Skill identifier
descriptionYesstringDescribes when to use this Skill (for Agent judgment)
versionNostringVersion number, defaults to 1.0.0
authorNostringAuthor
tagsNostring[]Tag list for categorization and filtering
triggersNostring[]Trigger keywords for automatic matching against user messages
priorityNointPriority; higher values take precedence (default 0)
enabledNoboolWhether enabled (default true)

Directory Structure

my-skill/
├── SKILL.md              # Main instruction file (required)
├── SKILL_ENABLED.md      # Enabled state instructions (Connector Skill specific)
├── scripts/              # Executable scripts (Phase 3, loaded on demand)
│   ├── init_skill.py
│   └── package_skill.py
├── references/           # Reference documents (Phase 3, loaded on demand)
│   ├── output-patterns.md
│   └── workflows.md
└── assets/               # Static resources

Skill Sources

Zeus supports multiple Skill sources:
SourceEnum ValueDescription
LocallocalLocal filesystem (repository/skills/)
BundledbundledPre-installed built-in
User UploaduploadUser-uploaded (via API or SKILL.md file)
HubhubSkills Hub (community shared)
RemoteremoteRemote URL

Storage

TypeStorage LocationDescription
Built-in Skillsrepository/skills/Deployed with code, discovered at startup
User SkillsSupabase Storage users/{user_id}/skills/User-level, synced to memory via sync API

Built-in Skills

chrome-extension

FieldValue
TypeConnector Skill
DescriptionControl user browser for automated tasks (open pages, click, fill forms, screenshot, etc.)
Triggersopen page, browser, search, click, screenshot, navigate…
Tagsbrowser, automation, web, connector
Browser Operator uses progressive disclosure:
  • Browser extension not connected: Loads SKILL.md (guides user to install/connect extension)
  • Browser extension connected: Loads SKILL_ENABLED.md (complete browser tool documentation)

desktop-operator

FieldValue
TypeConnector Skill
DescriptionExecute Shell commands on user’s local machine (including git, npm, file operations, etc.)
Triggersdesktop, terminal, shell, git, npm, command…
Tagsdesktop, shell, automation, connector
Desktop Operator also uses progressive disclosure, switching between SKILL.md / SKILL_ENABLED.md based on desktop application connection status.

skill-creator

FieldValue
TypeDevelopment Skill
DescriptionGuide creation of new Skills, providing best practices and templates
Triggerscreate skill, new skill…
Tagsskill, creator, development, agent
Resourcesscripts/init_skill.py, scripts/package_skill.py, references/output-patterns.md, references/workflows.md

Skill Tools (Agent-Side Tools)

The Agent can operate Skills on demand at runtime through the following tools:
ToolDescription
load_skill(skill_name)Load the full content of a specified Skill (Phase 2: Activation)
list_skills(tag?)List all available Skills, with optional tag filtering
load_skill_resource(skill_name, resource_type, resource_name)Load a Skill’s scripts/reference documents (Phase 3: Execution)
Typical Flow:

Skill Activation Configuration

The frontend can configure Skills activation via SkillActivation:
{
  "skills": {
    "skill_names": ["chrome-extension"],
    "auto_match": true,
    "max_skills": 3
  }
}
FieldTypeDescription
skill_namesstring[]List of explicitly activated Skill names
auto_matchboolWhether to automatically match based on user messages (default true)
max_skillsintMaximum number of activated Skills (default 3)
Matching Priority: Explicitly specified > Auto-matched (sorted by priority descending)

Skills Management API

Discovery Phase

MethodPathDescription
GET/api/skillsGet all Skill metadata (supports enabled_only, tags filtering)
GET/api/skills/statsGet statistics (discovered, activated, enabled)
GET/api/skills/userGet user’s Skills in Supabase Storage

Activation Phase

MethodPathDescription
GET/api/skills/{name}Get Skill details (loads full content)
POST/api/skills/{name}/activateExplicitly activate a Skill

Execution Phase

MethodPathDescription
GET/api/skills/{name}/resources/{type}/{file}Get Skill resource (script/reference/asset)

CRUD

MethodPathDescription
POST/api/skillsCreate Skill (JSON request body)
POST/api/skills/uploadUpload SKILL.md file to create Skill
PUT/api/skills/{name}Update Skill
DELETE/api/skills/{name}Delete Skill
POST/api/skills/{name}/toggleToggle enabled/disabled state
POST/api/skills/reloadReload from directory

Storage Sync

MethodPathDescription
POST/api/skills/syncSync a single Skill (Supabase → memory cache)
POST/api/skills/sync-allSync all user Skills

Connector Skills Progressive Disclosure

Browser Operator and Desktop Operator are special Connector Skills that dynamically switch prompt content based on node connection status: This mechanism ensures:
  • The Agent will not call browser/desktop tools when no nodes are available
  • The Agent knows how to guide users to connect missing nodes
  • When connected, the Agent receives complete tool usage documentation

Skills vs MCP Prompts

FeatureSkillsMCP Prompts
SourceLocal files / Supabase Storage / HubMCP Server
LoadingProgressive three-phase (Discovery → Activation → Execution)Loaded at startup
TriggeringKeyword auto-match or explicit activationExplicit invocation
ParameterizationNo dynamic parametersSupports arguments
ResourcesSupports scripts/, references/, assets/Not supported
ManagementFilesystem + REST API + Supabase StorageVia MCP protocol
PurposeEnhance Agent specialized capabilities and behavior patternsExternal system prompt templates
Both can be used simultaneously and complement each other. Skills focus on Agent behavioral instructions, while MCP Prompts focus on prompt templates for external system integration.