Claim this agent
agentCLAWHUBUnverified

simmer-skill-builder

Generate complete, installable OpenClaw trading skills from natural language strategy descriptions. Use when your human wants to create a new trading strategy, build a bot, generate a skill, automate a trade idea, turn a tweet into a strategy, or asks "build me a skill that...". Produces a full skill folder (SKILL.md + Python script + config) ready to install and run. Skill: simmer-skill-builder Owner: simmer Summary: Generate complete, installable OpenClaw trading skills from natural language strategy descriptions. Use when your human wants to create a new trading strategy, build a bot, generate a skill, automate a trade idea, turn a tweet into a strategy, or asks "build me a skill that...". Produces a full skill folder (SKILL.md + Python script + config) ready to install and run

OpenClaw

Rank

62

Safety

84

Downloads

2.7k

Updated

Oct 9, 2026

Version

1.3.14

Source

CLAWHUB

About

What it does, and when to use it.

Capability contract not published. No trust telemetry is available yet. 2.7K downloads reported by the source. Last updated 10/9/2026.

Avoid when

  • Contract metadata is missing or unavailable for deterministic execution.

Risk flags: missing_or_unavailable_contract, trust_data_unavailable, schema_references_missing

Public facts

Every fact links back to the source it came from.

Vendor
Clawhubvendor · observed Oct 9, 2026
Protocol compatibility
OpenClawcompatibility · observed Oct 9, 2026
Adoption signal
2.7K downloadsadoption · observed Oct 9, 2026
Latest release
1.3.14release · observed Sep 30, 2026
Handshake status
UNKNOWNsecurity

Install and run

Setup complexity: low.

clawhub skill install s17eez0vajry6hjb97y9mbtv2s85wekv:simmer-skill-builder
  1. Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.
  2. Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data.

Contract: missing

curl -s "https://www.xpersona.co/api/v1/agents/clawhub-simmer-simmer-skill-builder/snapshot"

Documentation

CLAWHUB

153,899 characters of source documentation, loaded on request.

Extracted files

5 files captured from the source.

SKILL.md

---
name: simmer-skill-builder
description: Generate complete, installable OpenClaw trading skills from natural language strategy descriptions. Use when your human wants to create a new trading strategy, build a bot, generate a skill, automate a trade idea, turn a tweet into a strategy, or asks "build me a skill that...". Produces a full skill folder (SKILL.md + Python script + config) ready to install and run.
metadata:
  author: Simmer (@simmer_markets)
  version: "1.3.14"
  displayName: Simmer Skill Builder
  difficulty: beginner
---
# Simmer Skill Builder

Generate complete, runnable Simmer trading skills from a strategy description.

> You are building an OpenClaw skill that trades prediction markets through the Simmer SDK. The skill you generate will be installed into your skill library and run by you — it must be a complete, self-contained folder that works out of the box.

Use this skill when a human has a rough trading idea, a bounty brief, or a strategy thread and wants a deterministic skill they can validate, publish, and run. The best output is not just a clever prompt: it is a folder with bounded trading logic, explicit config, dry-run defaults, and enough docs for another builder to remix.

## Workflow

### Step 1: Intake and Triage

#### 1a. Detect input type

Your human's input falls into one of two modes:

- **Conversational** (short description, thesis statement, "build me a bot that...") → go to 1b
- **Pasted post / campaign brief** (long text >500 chars, contains code blocks, threshold numbers, or reads like an X thread, blog post, bounty, or World Cup strategy idea) → go to 1c

#### 1b. Conversational intake

Ask your human to clarify until you understand these five parameters:

1. **Signal** — What data drives the decision? (external API, market price, on-chain data, LLM probability estimate, timing, etc.)
2. **Entry logic** — When to buy? (price threshold, signal divergence, edge %, timing window, etc.)
3. **Exit logic** — When to sell? (take profit, time-based, signal reversal, or rely on auto-risk monitors — if unclear, default to auto-risk monitors but confirm with human)
4. **Market selection** — Which markets? (by tag, keyword, category, venue, volume filter, resolution window, or discovery logic)
5. **Position sizing** — Fixed amount or smart sizing? What Kelly fraction? What bankroll-% cap? What order type (market or limit)?

#### 1c. From-post extraction

When the human pastes a strategy post or campaign brief, extract — don't ask first. The post often contains the strategy shape already. Ask follow-ups only after you have separated what is explicit from what is missing.

**Capture the author handle.** If the post is the strategy author's own (an X thread, a quant write-up), note their handle and source URL — you'll set `metadata.simmer.credit` so the published skill is attributed "via @them" (see the frontmatter section). Confirm the handle with the human before crediting; a pasted thread isn't always the author's 

_meta.json

{
  "ownerId": "kn7axnp7bzqsf5fkx0z8px7han7zyq1x",
  "slug": "simmer-skill-builder",
  "version": "1.3.14",
  "publishedAt": 1790752680784
}

references/example-llm-oracle.md

# Example: LLM Probability Oracle

Agent-as-oracle pattern. The agent provides probability estimates using its own LLM capability; the Python script handles deterministic math (bias correction, Kelly sizing, trade execution). No LLM SDK dependency needed — the agent IS the LLM.

This pattern is common in KOL strategy posts where the strategy uses Claude/GPT as a "probability engine" to estimate true probabilities for prediction markets.

## How it works

1. **SKILL.md body** instructs the agent on the calibration approach (reference-class framing, structured output, confidence gates)
2. **Agent evaluates** each candidate market using its own reasoning, producing a probability estimate + confidence level
3. **Python script receives** the estimate and applies deterministic gates: bias correction → Kelly sizing → position cap → limit order execution

The agent provides the intelligence. The script provides the math. Different agent runtimes (GPT-5.5, Claude, Qwen) each apply the calibration with their own strengths.

## SKILL.md body (agent instructions section)

The generated SKILL.md should include a section like this in its body, after the setup instructions:

```markdown
## How to evaluate markets

For each candidate market that passes the scan filters, evaluate it using
reference-class forecasting. Produce a structured assessment:

### Calibration approach

1. Identify the **reference class**: what category of event is this? (election,
   crypto price, sports, weather, geopolitical). What is the historical base rate
   for this class of outcome?
2. Apply **base-rate anchoring**: start from the base rate, then adjust based on
   the specific circumstances of this market. Weight base rates over narrative.
3. Estimate **true probability** as a float between 0.03 and 0.97. Never output
   probabilities outside this range — extreme confidence is almost always wrong
   in prediction markets.
4. Assess **confidence**: "high" (strong base-rate data, well-understood domain),
   "medium" (decent data but some uncertainty), "low" (speculative, limited data).
5. Identify the **edge direction**: compare your probability to the market price.
   If your estimate is higher → edge is YES. Lower → edge is NO.
   If within 5pp of market price → no actionable edge.

### Structured output

After evaluating each market, pass these values to the trading script:

- `true_probability` (float, 0.03-0.97)
- `confidence` ("high", "medium", "low")
- `edge_direction` ("YES", "NO", "NONE")
- `reasoning` (1-2 sentences explaining the key factors)

Skip markets where confidence is "low" or edge_direction is "NONE".

### Cost bounding

Evaluate at most 15 candidate markets per run. Each evaluation costs one LLM
reasoning step — unbounded scanning wastes agent compute. Apply scan filters
(volume, resolution window, price range) before evaluation, not after.
```

## Longshot bias correction table

Include this in the SKILL.md body so the agent understands the correction, and also

references/example-mert-sniper.md

# Example: Mert Sniper

Pattern: **Simmer API only — filter markets by criteria, trade the edge.**

No external data source. Scans Simmer markets for near-expiry opportunities with heavily skewed odds, backs the favorite.

## SKILL.md Frontmatter

```yaml
---
name: polymarket-mert-sniper
displayName: Mert Sniper
description: Near-expiry conviction trading on Polymarket. Snipe markets about to resolve when odds are heavily skewed.
metadata: {"clawdbot":{"emoji":"<target>","requires":{"env":["SIMMER_API_KEY"],"pip":["simmer-sdk"]},"cron":null,"autostart":false,"automaton":{"managed":true,"entrypoint":"mert_sniper.py"}}}
version: "1.0.7"
published: true
---
```

## Config Schema

```python
CONFIG_SCHEMA = {
    "market_filter": {"env": "SIMMER_MERT_FILTER", "default": "", "type": str},
    "max_bet_usd": {"env": "SIMMER_MERT_MAX_BET", "default": 10.00, "type": float},
    "expiry_window_mins": {"env": "SIMMER_MERT_EXPIRY_MINS", "default": 2, "type": int},
    "min_split": {"env": "SIMMER_MERT_MIN_SPLIT", "default": 0.60, "type": float},
    "max_trades_per_run": {"env": "SIMMER_MERT_MAX_TRADES", "default": 5, "type": int},
    "sizing_pct": {"env": "SIMMER_MERT_SIZING_PCT", "default": 0.05, "type": float},
}
```

## Market Fetching with Tag + Text Fallback

```python
def fetch_markets(market_filter=""):
    params = {"status": "active", "limit": 200}
    if market_filter:
        params["tags"] = market_filter

    result = get_client()._request("GET", "/api/sdk/markets", params=params)
    markets = result.get("markets", [])

    # If tag returned nothing, try text search
    if not markets and market_filter:
        params.pop("tags", None)
        params["q"] = market_filter
        result = get_client()._request("GET", "/api/sdk/markets", params=params)
        markets = result.get("markets", [])

    return markets
```

## Strategy Core

```python
# 1. Fetch all active markets (optionally filtered by tag/keyword)
markets = fetch_markets(market_filter)

# 2. Filter to markets resolving within N minutes
now = datetime.now(timezone.utc)
for market in markets:
    resolves_at = parse_resolves_at(market.get("resolves_at"))
    minutes_remaining = (resolves_at - now).total_seconds() / 60
    if 0 < minutes_remaining <= EXPIRY_WINDOW_MINS:
        expiring_markets.append(market)

# 3. Check split — only trade when one side >= min_split (e.g. 60%)
price = market.get("current_probability", 0.5)
if price < MIN_SPLIT and price > (1 - MIN_SPLIT):
    continue  # Split too narrow

# 4. Back the favorite
if price >= MIN_SPLIT:
    side = "yes"
else:
    side = "no"

# 5. Safeguards, then execute
context = get_market_context(market_id)
should_trade, reasons = check_context_safeguards(context)
if should_trade:
    reasoning = f"Near-expiry snipe: {side.upper()} at {price:.0%} with {mins_left}m to resolution"
    result = execute_trade(market_id, side, position_size, reasoning=reasoning)
```

## Key Patterns Demonstrated

1. **No external API** — Uses only Simm

references/example-weather-trader.md

# Example: Weather Trader

Pattern: **External API signal + Simmer SDK trading.**

Fetches NOAA temperature forecasts, compares to Polymarket weather market prices, buys underpriced buckets.

## SKILL.md Frontmatter

```yaml
---
name: polymarket-weather-trader
displayName: Polymarket Weather Trader
description: Trade Polymarket weather markets using NOAA forecasts via Simmer API.
metadata: {"clawdbot":{"emoji":"<thermometer>","requires":{"env":["SIMMER_API_KEY"],"pip":["simmer-sdk"]},"cron":null,"autostart":false,"automaton":{"managed":true,"entrypoint":"weather_trader.py"}}}
version: "1.10.1"
published: true
---
```

## Config Schema

```python
CONFIG_SCHEMA = {
    "entry_threshold": {"env": "SIMMER_WEATHER_ENTRY", "default": 0.15, "type": float},
    "exit_threshold": {"env": "SIMMER_WEATHER_EXIT", "default": 0.45, "type": float},
    "max_position_usd": {"env": "SIMMER_WEATHER_MAX_POSITION", "default": 2.00, "type": float},
    "sizing_pct": {"env": "SIMMER_WEATHER_SIZING_PCT", "default": 0.05, "type": float},
    "max_trades_per_run": {"env": "SIMMER_WEATHER_MAX_TRADES", "default": 5, "type": int},
    "locations": {"env": "SIMMER_WEATHER_LOCATIONS", "default": "NYC", "type": str},
}
```

## Signal: External API (NOAA)

```python
NOAA_API_BASE = "https://api.weather.gov"

def get_noaa_forecast(location):
    """Get NOAA forecast. Returns {date: {high: temp, low: temp}}."""
    loc = LOCATIONS[location]
    headers = {"User-Agent": "SimmerWeatherSkill/1.0", "Accept": "application/geo+json"}

    # Step 1: Get grid coordinates
    points_data = fetch_json(f"{NOAA_API_BASE}/points/{loc['lat']},{loc['lon']}", headers)
    forecast_url = points_data["properties"]["forecast"]

    # Step 2: Get forecast
    forecast_data = fetch_json(forecast_url, headers)
    periods = forecast_data["properties"]["periods"]

    # Step 3: Parse into {date: {high, low}}
    forecasts = {}
    for period in periods:
        date_str = period["startTime"][:10]
        temp = period["temperature"]
        if period["isDaytime"]:
            forecasts.setdefault(date_str, {})["high"] = temp
        else:
            forecasts.setdefault(date_str, {})["low"] = temp
    return forecasts
```

## Market Matching

```python
def parse_temperature_bucket(outcome_name):
    """Parse '32-36' or '40 or above' into (low, high) tuple."""
    # "32 or below" -> (-999, 32)
    # "50 or higher" -> (50, 999)
    # "37-41" -> (37, 41)
    ...

# Match NOAA forecast to correct bucket
for market in event_markets:
    bucket = parse_temperature_bucket(market["outcome_name"])
    if bucket and bucket[0] <= forecast_temp <= bucket[1]:
        matching_market = market
        break
```

## Strategy Core

```python
# For each weather event:
# 1. Get NOAA forecast temperature
# 2. Find the market bucket that contains the forecast temp
# 3. If that bucket's price < entry_threshold (15c), BUY
# 4. If holding and price > exit_threshold (45c), SELL

if price < ENTRY_THRESHOLD:
    result = execut
Github ReposUpdated 6mo agoRank 70

activepieces

AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents

OPENCLAW
Github ReposUpdated 6mo agoRank 70

cherry-studio

AI productivity studio with smart chat, autonomous agents, and 300+ assistants.

MCPOPENCLAW
Github ReposUpdated 6mo agoRank 70

AionUi

Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!

MCPOPENCLAW
Github ReposUpdated 7mo agoRank 70

CopilotKit

The Frontend for Agents & Generative UI. React + Angular

OPENCLAW

Machine-readable data

The same record, as JSON, for agents and crawlers.

{
  "facts": [
    {
      "factKey": "vendor",
      "category": "vendor",
      "label": "Vendor",
      "value": "Clawhub",
      "href": "https://clawhub.ai/simmer/skills/simmer-skill-builder",
      "sourceUrl": "https://clawhub.ai/simmer/skills/simmer-skill-builder",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-09T12:21:10.245Z",
      "isPublic": true
    },
    {
      "factKey": "protocols",
      "category": "compatibility",
      "label": "Protocol compatibility",
      "value": "OpenClaw",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-simmer-simmer-skill-builder/contract",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-simmer-simmer-skill-builder/contract",
      "sourceType": "contract",
      "confidence": "medium",
      "observedAt": "2026-10-09T12:21:10.245Z",
      "isPublic": true
    },
    {
      "factKey": "traction",
      "category": "adoption",
      "label": "Adoption signal",
      "value": "2.7K downloads",
      "href": "https://clawhub.ai/simmer/simmer-skill-builder",
      "sourceUrl": "https://clawhub.ai/simmer/simmer-skill-builder",
      "sourceType": "profile",
      "confidence": "medium",
      "observedAt": "2026-10-09T12:21:10.245Z",
      "isPublic": true
    },
    {
      "factKey": "latest_release",
      "category": "release",
      "label": "Latest release",
      "value": "1.3.14",
      "href": "https://clawhub.ai/simmer/simmer-skill-builder",
      "sourceUrl": "https://clawhub.ai/simmer/simmer-skill-builder",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-09-30T07:18:00.784Z",
      "isPublic": true
    },
    {
      "factKey": "handshake_status",
      "category": "security",
      "label": "Handshake status",
      "value": "UNKNOWN",
      "href": "https://www.xpersona.co/api/v1/agents/clawhub-simmer-simmer-skill-builder/trust",
      "sourceUrl": "https://www.xpersona.co/api/v1/agents/clawhub-simmer-simmer-skill-builder/trust",
      "sourceType": "trust",
      "confidence": "medium",
      "observedAt": null,
      "isPublic": true
    }
  ],
  "events": [
    {
      "eventType": "release",
      "title": "Release 1.3.14",
      "description": "- Added a publish confirmation script: scripts/confirm_publish.py - Updated SKILL.md to version 1.3.14 with no content changes shown beyond metadata version bump - Removed redundant file: skill-card.md",
      "href": "https://clawhub.ai/simmer/simmer-skill-builder",
      "sourceUrl": "https://clawhub.ai/simmer/simmer-skill-builder",
      "sourceType": "release",
      "confidence": "medium",
      "observedAt": "2026-09-30T07:18:00.784Z",
      "isPublic": true
    }
  ]
}

Record generated Oct 9, 2026.

Sponsored

Ads related to simmer-skill-builder and adjacent AI workflows.