skills/hyperliquid-trading-bot/SKILL.md
Configurable grid trading bot for Hyperliquid DEX with TypeScript/Node.js primary implementation, supporting perpetuals and spot markets with risk management features.
npx skillsauth add aradotso/trending-skills hyperliquid-trading-botInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Skill by ara.so — Daily 2026 Skills collection.
A configurable grid strategy runner for Hyperliquid DEX. Places layered buy/sell orders around a price range and enforces risk rules (stop loss, take profit, drawdown limits, rebalancing). Primary stack is TypeScript on Node.js 20.19+; a legacy Python tree exists for reference and learning examples.
git clone https://github.com/PolyPulse-Analytics/hyperliquid-trading-bot.git
cd hyperliquid-trading-bot
npm install
gitOptional for Python examples: uv
cp .env.example .env
Edit .env — minimum required keys:
# Testnet (recommended to start)
HYPERLIQUID_TESTNET_PRIVATE_KEY=0xYOUR_TESTNET_PRIVATE_KEY_HERE
HYPERLIQUID_TESTNET=true
# Mainnet (real funds — set carefully)
# HYPERLIQUID_MAINNET_PRIVATE_KEY=0xYOUR_MAINNET_PRIVATE_KEY_HERE
# HYPERLIQUID_TESTNET=false
Never commit .env or share your private key.
| Command | Purpose |
|---|---|
| npm start | Run bot using first active: true config in bots/ |
| npm run validate | Validate YAML config structure (no private key needed) |
| npm test | Run automated tests (grid math, etc.) |
| npx tsc --noEmit | TypeScript type check |
| npx tsx ts/src/runBot.ts path/to/config.yaml | Run with explicit config file |
npx tsx ts/src/runBot.ts bots/btc_conservative.yaml
Press Ctrl+C — the engine attempts to cancel all open orders before exiting. Always review logs to confirm cancellation.
Config files live in bots/*.yaml. Only one file should have active: true when using auto-discovery via npm start.
name: "btc_grid_testnet"
active: true
exchange:
type: "hyperliquid"
testnet: true # Set false for mainnet — also set HYPERLIQUID_TESTNET=false in .env
account:
max_allocation_pct: 10.0 # Max % of account balance to allocate to this grid
grid:
symbol: "BTC" # Hyperliquid market symbol
levels: 10 # Number of buy/sell levels on each side
price_range:
mode: "auto" # "auto" or "manual"
auto:
range_pct: 5.0 # Spread ±5% from current price
# manual:
# lower: 90000
# upper: 100000
risk_management:
stop_loss_enabled: false
stop_loss_pct: 8.0 # Trigger if price drops X% from entry
take_profit_enabled: false
take_profit_pct: 15.0 # Trigger if price rises X% from entry
max_drawdown_pct: 15.0 # Max allowed drawdown before halting
max_position_size_pct: 40.0 # Max position as % of allocated capital
rebalance:
price_move_threshold_pct: 12.0 # Rebalance grid if price moves outside this %
monitoring:
log_level: "INFO" # DEBUG, INFO, WARN, ERROR
grid:
symbol: "ETH"
levels: 8
price_range:
mode: "manual"
manual:
lower: 3000
upper: 3600
Do not use active: true — call each explicitly:
# Terminal 1
npx tsx ts/src/runBot.ts bots/btc_conservative.yaml
# Terminal 2
npx tsx ts/src/runBot.ts bots/eth_aggressive.yaml
npm run validate && npm start
HYPERLIQUID_TESTNET=true in .envexchange.testnet: true in your YAMLnpm run validate then npm startfalse for mainnet# Install Python deps
uv sync
# Validate Python bot config
uv run src/run_bot.py --validate
# Run Python bot (legacy)
uv run src/run_bot.py
# Educational scripts
uv run learning_examples/01_websockets/realtime_prices.py
uv run learning_examples/02_market_data/get_all_prices.py
uv run learning_examples/04_trading/place_limit_order.py
# learning_examples/01_websockets/realtime_prices.py pattern
import asyncio
from hyperliquid.websocket_manager import WebsocketManager
async def on_message(msg):
print(msg)
async def main():
ws = WebsocketManager(base_url="https://api.hyperliquid-testnet.xyz")
await ws.subscribe({"type": "allMids"}, on_message)
await asyncio.sleep(30)
asyncio.run(main())
# learning_examples/04_trading/place_limit_order.py pattern
import os
from hyperliquid.exchange import Exchange
from hyperliquid.utils import constants
import eth_account
private_key = os.environ["HYPERLIQUID_TESTNET_PRIVATE_KEY"]
account = eth_account.Account.from_key(private_key)
exchange = Exchange(account, constants.TESTNET_API_URL)
# Place a limit buy for 0.001 BTC at $90,000
result = exchange.order(
"BTC",
is_buy=True,
sz=0.001,
limit_px=90000,
order_type={"limit": {"tif": "Gtc"}},
)
print(result)
npm run validate first — check for YAML syntax errorsactive: true is set (or pass config path explicitly)HYPERLIQUID_TESTNET in .env matches exchange.testnet in YAMLmax_allocation_pct may be too low for minimum order sizes on the symbolnpx tsc --noEmit
Check Node.js version — must be 20.19+:
node --version
uv not foundpip install uv
# or
curl -LsSf https://astral.sh/uv/install.sh | sh
.env matches the funded testnet wallet0x prefixCheck risk_management.rebalance.price_move_threshold_pct — default is 12.0. Lower it if you want more frequent rebalancing (increases gas/fees).
hyperliquid-trading-bot/
├── bots/ # YAML strategy configs
│ └── btc_conservative.yaml
├── ts/src/
│ └── runBot.ts # Main TypeScript entrypoint
├── src/
│ └── run_bot.py # Legacy Python entrypoint
├── learning_examples/ # Educational Python scripts
│ ├── 01_websockets/
│ ├── 02_market_data/
│ └── 04_trading/
├── .env.example # Environment variable template
├── package.json
└── pyproject.toml
max_allocation_pct to limit exposuremax_drawdown_pct as a safety net before enabling stop loss/take profitdevelopment
```markdown --- name: compose-performance-skills description: Install and use the skydoves/compose-performance-skills agent skill library to diagnose and fix Jetpack Compose performance issues including stability, recomposition, lazy layouts, modifiers, side effects, and build configuration. triggers: - "my composable recomposes too often" - "LazyColumn drops frames during scroll" - "diagnose Compose stability issues" - "fix unnecessary recomposition in Jetpack Compose" - "optimize Com
development
Headless iOS Simulator manager with host-side HID input injection, 60fps streaming, and device farm web UI for iOS 26
development
```markdown --- name: claude-code-game-studios description: Turn Claude Code into a full 49-agent game dev studio with 72 workflow skills, automated hooks, and a real studio hierarchy for Godot, Unity, and Unreal projects. triggers: - "set up claude code game studios" - "use ai agents for game development" - "set up game dev studio with claude" - "add game studio agents to my project" - "how do I use claude code for game dev" - "set up godot unity unreal ai workflow" - "49 agents g
development
```markdown --- name: xq-py-quantum-vm description: Python implementation of the Quip Network's quantum virtual machine (xqvm) triggers: - quantum virtual machine python - xqvm quip network - quantum circuit simulation python - xq-py quantum vm - quip network quantum python - simulate quantum gates python - quantum vm xqvm - xqvm-py quantum circuit --- # xq-py Quantum Virtual Machine > Skill by [ara.so](https://ara.so) — Daily 2026 Skills collection. `xqvm-py` is a Python impl