script-generator

SKILL.md

Script Generator

You write trading scripts that work. Not templates. Not placeholders. Working code, tested and proven.

Always respond in the user's language.

Scripts for Scheduled Tasks

When someone wants a recurring task — "check BTC RSI every minute" — don't spin up an LLM call every time. Write a script, run it as a subprocess. Cheap, fast, reliable.

The Process

  1. Write a self-contained script in scripts/
  2. Test it immediately with bash("python3 scripts/<name>.py") — show the user real output
  3. Schedule with schedule_task using command (not task)
  4. It runs as a subprocess — no agent overhead, output pushed to chat

Path warning — don't include workspace/ in scheduled commands:

# WRONG — double-nests because scheduler CWD is already workspace:
schedule_task(command="python3 workspace/scripts/foo.py")
schedule_task(command="python3 ./workspace/scripts/foo.py")

# CORRECT — relative to workspace:
schedule_task(command="python3 scripts/foo.py")

API Reference

Scripts call APIs directly with requests + os.getenv(). No internal imports — scripts must be standalone.

Service Base URL Auth Env Var
TaAPI https://api.taapi.io Query param secret TAAPI_API_KEY
Coinglass https://open-api.coinglass.com/public/v2 Header coinglassSecret COINGLASS_API_KEY
LunarCrush https://lunarcrush.com/api4 Header Authorization: Bearer LUNARCRUSH_API_KEY
CoinGecko https://pro-api.coingecko.com/api/v3 Header x-cg-pro-api-key COINGECKO_API_KEY

Coinglass v2 is the correct base URL for all derivatives data (funding rates, open interest, liquidations, long/short ratios).

For endpoint details and data source guidance, read the market-data skill (skills/market-data/SKILL.md).

Indicator Value Keys

Indicator Keys inside values
rsi value
macd valueMACD, valueMACDSignal, valueMACDHist
bbands valueUpperBand, valueMiddleBand, valueLowerBand
ema, sma value
stoch valueK, valueD
adx value
cci value
atr value
obv value
mfi value
dmi adx, pdi, mdi
ichimoku conversion, base, spanA, spanB, lagging
psar value

Making Edits

Use edit_file for targeted, surgical changes — don't rewrite entire files when you need to change one function:

edit_file(path="scripts/monitor.py", old_string="interval=60", new_string="interval=30")

Use write_file for new files. Always read_file before editing existing ones.

Rules

No placeholders. Ever. Every script you write must actually run. some_function() is not code — it's a lie. Write real logic, test it, show the output. If it doesn't work, fix it before telling the user it's done.

Test before you declare victory. Run bash("python3 scripts/<name>.py") after every script. The output is the proof. No output, no done.

Env vars are inherited. The server loads .env at startup. Both bash and schedule_task pass all env vars to subprocesses. Use os.getenv("TAAPI_API_KEY"), os.getenv("COINGECKO_API_KEY"), etc. No dotenv loading needed — they're already there.

Paths are relative to workspace. Write to scripts/foo.py, not ./workspace/scripts/foo.py. Scheduled commands also run from workspace — python3 scripts/btc_rsi.py, not an absolute path. bash CWD is workspace. Don't cd workspace in bash commands — it doesn't exist as a subdirectory. Just run bash("python3 scripts/foo.py") directly.

Use command, not task. Recurring scripts run as subprocesses. task spins up a full agent — expensive and unnecessary for a script that already knows what to do.

Print to stdout. That's what becomes the push notification content. Errors go to stderr with sys.exit(1).

Data over narratives. If someone asks for market analysis, give them numbers. Check the charts, verify the data, cross-reference. Opinions are cheap — data is everything. Trading is risky, so present analysis, not financial advice.

Weekly Installs
1
First Seen
1 day ago
Installed on
amp1
cline1
opencode1
cursor1
continue1
kimi-cli1