Skip to main content

Skills Reference

Skills are the atomic capabilities of the WASP agent. The LLM calls skills using XML-like syntax: <skill>skill_name(param="value")</skill>.

Capability Levels

Every skill is assigned a capability level that controls auditing, risk assessment, and rate limiting:

LevelExamplesAuditRisk CheckRate Limit
SAFEcalculate, datetimeNoNoUnlimited
MONITOREDweb_search, fetch_url, browserNoNoUnlimited
CONTROLLEDreminders, gmail, task_managerYesNoUnlimited
RESTRICTEDshell, python_exec, http_request, file_opsYesYesUnlimited
PRIVILEGEDbroker (Docker commands)YesYes20/hour

Built-in Skills

Web & Research

SkillCapabilityDescription
web_searchMONITOREDDuckDuckGo search, returns 5-10 results with snippets
fetch_urlMONITOREDHTTP GET with CSS selector support, 12k output cap
scrapeMONITOREDExtract structured data from web pages
browserMONITOREDFull Chromium browser (click, type, screenshot, login, JS)

Browser skill actions: navigate, click, type, screenshot, capture, get_text, scroll, get_links, execute_js

Named browser sessions for persistent state:

browser(action="navigate", url="https://...", session="my_session")

Code & System

SkillCapabilityDescription
python_execRESTRICTEDExecute Python code in subprocess, 60s timeout, 8k output
shellRESTRICTEDExecute shell commands, 60s default / 120s max timeout
calculateSAFEMathematical calculations

File Operations

SkillCapabilityDescription
read_fileRESTRICTEDRead any file in the container
write_fileRESTRICTEDWrite any file in the container

Files accessible under /data/ (persistent volume mounts).

Communication & Calendar

SkillCapabilityDescription
gmailCONTROLLEDRead inbox, send email, search, reply
create_reminderCONTROLLEDCreate time-based reminders (fires via scheduler)
task_managerCONTROLLEDCreate/list/update/delete recurring tasks

Data & APIs

SkillCapabilityDescription
http_requestRESTRICTEDHTTP GET/POST/PUT/DELETE/PATCH with custom headers
subscribeCONTROLLEDRSS feed and price alert subscriptions

Memory & Knowledge

SkillCapabilityDescription
memoryCONTROLLEDSearch and store in episodic/semantic memory
knowledge_graphCONTROLLEDQuery entities and relationships

Agent Management

SkillCapabilityDescription
agent_managerCONTROLLEDCreate, list, pause, resume, archive sub-agents

Actions: create, list, get, pause, resume, archive

Self-Improvement

SkillCapabilityDescription
self_improvePRIVILEGEDRead, propose, apply, patch, install on own source code
skill_managerPRIVILEGEDCreate, edit, toggle, delete skills at runtime

self_improve actions: read, propose, list, apply, reject, patch, install

skill_manager actions: create, list, edit, toggle, delete

Integrations

SkillCapabilityDescription
integrationCONTROLLEDInvoke any registered integration connector

Parallel Execution

Skills can run in parallel by using <parallel> blocks:

<parallel>
<skill>web_search(query="BTC price")</skill>
<skill>web_search(query="ETH price")</skill>
<skill>fetch_url(url="https://api.coinbase.com/v2/prices/BTC-USD/spot")</skill>
</parallel>

All skills in a parallel block execute concurrently via asyncio.gather().

Custom Python Skills

Create custom skills via skill_manager:

skill_manager(
action="create",
name="my_skill",
description="Does something custom",
params="input_text,max_length",
code="
class MySkillSkill(SkillBase):
def definition(self):
return SkillDefinition(
name='my_skill',
description='Does something custom',
parameters=[
SkillParameter(name='input_text', type='string', required=True),
SkillParameter(name='max_length', type='integer', required=False),
]
)

async def execute(self, input_text: str, max_length: int = 500) -> SkillResult:
result = input_text[:max_length]
return SkillResult(output=result)
"
)

Custom skills are stored in /data/skills/<slug>/skill.py and survive container restarts.

Skill Registration

Skills are registered at startup in src/skills/builtin/__init__.py:

registry.register(WebSearchSkill())
registry.register(BrowserSkill())
registry.register(PythonExecSkill())
# ... etc

Each skill must implement SkillBase:

  • definition() → SkillDefinition — metadata, parameters, examples
  • async execute(**params) → SkillResult — execution logic

Anticipatory Simulation

Before executing RESTRICTED or PRIVILEGED skills, the agent runs an anticipatory simulation:

  • The LLM predicts the consequences of the action
  • Result is appended to skill output as [ANTICIPATORY SIMULATION]:
  • Helps the agent course-correct before irreversible actions

Skill Output Format

SkillResult(
output="...", # Human-readable output (max 8k chars)
error=None, # Error message if failed
metadata={}, # Optional structured data
)