Skip to main content

Overview

Skills are modular knowledge bundles that give the ouroborai agent context about specific protocols, strategies, and capabilities. Each skill is a SKILL.md markdown file containing structured information the agent uses to understand how to interact with a DeFi protocol or execute a trading strategy. Skills are not code. They are documentation that gets injected into the agent’s system prompt at runtime, guiding how it selects tools, formats parameters, and explains results to the user.

Built-in skills

ouroborai ships with built-in skills covering the core Arbitrum DeFi ecosystem:

arb-trade

Spot trading on Uniswap V3 and Camelot. Covers quoting, slippage, fee tiers, and token resolution.

gmx

GMX V2 perpetual futures. Markets (ETH, BTC, ARB, LINK), leverage up to 100x, position management.

aave

Aave V3 lending and borrowing. Supply/withdraw, borrow/repay, health factor monitoring.

camelot

Camelot DEX, Arbitrum’s native AMM. Volatile and stable pools, custom fee structures.

pendle

Pendle Finance fixed and variable yield trading. PT/YT tokens, yield markets.

kyan

Kyan options protocol. Multi-leg strategies, portfolio margin, Greeks.

timeboost-bid

TimeBoost express lane bidding. Priority sequencing, MEV estimation, round timing.

rwa-stocks

Robinhood tokenized stocks on Arbitrum Orbit. Contract scanning, symbol lookup.
External knowledge bases are also available for broader EVM context:
SkillSourceDescription
evm-l2sethskills.comLayer 2 network comparison and bridging
evm-money-legosethskills.comComposable DeFi building blocks
evm-securityethskills.comSmart contract security patterns
evm-walletsethskills.comWallet types, key management, account abstraction
evm-standardsethskills.comERC standards (ERC-20, ERC-721, ERC-4337, etc.)

How skill detection works

When a user submits a prompt, the agent runner matches keywords in the prompt text against a keyword-to-skill mapping. Matched skills are loaded and their content is injected into the system prompt before Claude processes the request.
User prompt: "Open a 10x long on ETH/USDC"
                      |
              Keyword matching
         ("long" → gmx, "10x" → gmx)
                      |
            Load gmx SKILL.md content
                      |
         Inject into system prompt
                      |
       Claude selects arb_perp_open tool
The keyword map covers common terms for each protocol:
KeywordsSkill loaded
swap, trade, buy, sell, uniswaparb-trade
camelotcamelot
perp, perpetual, leverage, long, short, gmxgmx
lend, borrow, supply, aaveaave
yield, pendlependle
options, kyankyan
timeboost, express lanetimeboost-bid
stock, robinhood, rwarwa-stocks
alchemix, self-repaying, aleth, alusdalchemix
nft, transfer nftnft
prediction, polymarket, forecastpolymarket
bridge, cross-chain, bungeebridge
launch, create token, deploy tokentoken-launch
The arb-trade skill is always loaded as a baseline, even if no keywords match.
Multiple skills can be loaded simultaneously. A prompt like “swap ETH for USDC and supply to Aave” would load both arb-trade and aave skills.

Skill anatomy

Each skill is a markdown file named SKILL.md with a defined structure. The loader parses metadata from the heading and frontmatter-style fields:
# Uniswap V3 Trading

Trade tokens on Arbitrum using Uniswap V3 concentrated liquidity pools.

version: 1.2.0
author: ouroborai-labs

## Supported Tokens

- USDC (0xaf88d065e77c8cc2239327c5edb3a432268e5831)
- WETH (0x82aF49447D8a07e3bd95BD0d56f35241523fBab1)
- ARB (0x912CE59144191C1204E64559FE8253a0e49E6548)
- WBTC (0x2f2a2543B76A4166549F7aaB2e75Bef0aefC5B0f)

## Fee Tiers

| Tier | Fee | Best for |
|------|-----|----------|
| 100  | 0.01% | Stablecoin pairs |
| 500  | 0.05% | Correlated pairs |
| 3000 | 0.30% | Standard pairs |
| 10000| 1.00% | Exotic pairs |

## Constraints

- Always show a quote before executing a swap
- Default slippage tolerance: 50 bps (0.5%)
- Warn if price impact exceeds 100 bps (1%)

## Example Prompts

- "Swap 100 USDC for ETH"
- "Get a quote for 1 WBTC to USDC on 3000 fee tier"
- "Buy 500 ARB with USDC"
The loader extracts these fields:
FieldSourceDescription
nameFirst # headingDisplay name of the skill
descriptionFirst paragraph after headingShort description
versionversion: fieldSemantic version
authorauthor: fieldSkill author (optional)
contentFull file contentInjected into the agent system prompt

Loading and caching

Skills are fetched over HTTP and cached in memory for 1 hour. Built-in skills are served from the project’s GitHub repository. External skills can be loaded from any URL. The loader resolves skill references in this order:
  1. Check if the input is a URL (starts with http) — fetch directly
  2. Check built-in skills map by name
  3. Check external skills map by name
  4. Throw an error if not found
GitHub tree URLs are automatically normalized to raw content URLs:
https://github.com/org/repo/tree/main/skills/gmx
  → https://raw.githubusercontent.com/org/repo/main/skills/gmx/SKILL.md

Installing external skills

You can install skills from any GitHub repository at runtime using the agent’s natural-language interface or the MCP arb_install_skill tool:
Install the gmx skill from https://github.com/ouroborai-labs/arbitrum-agent/tree/main/skills/gmx

Creating a custom skill

To add a new skill to the platform:
1

Write the SKILL.md file

Create a markdown file following the anatomy described above. Include supported tokens, constraints, example prompts, and any protocol-specific details the agent needs to know.
2

Host it at a URL

Push the file to a GitHub repository or host it on any HTTP-accessible server. The loader fetches skills over plain HTTP.
3

Register in the built-in map (optional)

To make the skill discoverable by name without a URL, add an entry to the BUILTIN_SKILLS or EXTERNAL_SKILLS map in packages/skills/src/loader.ts.
4

Add keyword mappings (optional)

To enable automatic detection from user prompts, add keyword entries to the keywords map in apps/api/src/agent/runner.ts.
5

Add a protocol adapter (optional)

If the skill requires new on-chain interactions, implement an adapter in packages/adapters/src/ and wire it into the agent runner’s tool definitions.
Skills that only provide knowledge (no new tools) can be created and installed without any code changes. The agent will use the skill content to better formulate requests to existing tools.

Listing available skills

The GET /agent/skills endpoint returns all registered skills:
curl -H "X-PAYMENT: <payment>" https://api.ouroborai.com/agent/skills
{
  "skills": [
    { "name": "arb-trade", "url": "https://raw.githubusercontent.com/...", "external": false },
    { "name": "gmx", "url": "https://raw.githubusercontent.com/...", "external": false },
    { "name": "aave", "url": "https://raw.githubusercontent.com/...", "external": false },
    { "name": "evm-l2s", "url": "https://ethskills.com/l2s/SKILL.md", "external": true }
  ]
}
Skills with "external": true are sourced from third-party providers and are loaded on demand when triggered by prompt keywords or explicit installation.